diff --git a/.gitignore b/.gitignore index ac79b40..5a5e7df 100644 --- a/.gitignore +++ b/.gitignore @@ -28,5 +28,12 @@ appsettings.Development.json ## User-specific files *.user *.suo -*.userosscache -*.sln.docstates +## Flutter & Dart +**/.dart_tool/ +**/build/ +*.log + +## Temporary data & scratch +Yahoo finance data/ +*.tmp +FinlyticApp/lib/tickers_grep.json diff --git a/FinlyticAnalyzer/Controllers/ManualAnalysisController.cs b/FinlyticAnalyzer/Controllers/ManualAnalysisController.cs index e09e9ff..90ffc5f 100644 --- a/FinlyticAnalyzer/Controllers/ManualAnalysisController.cs +++ b/FinlyticAnalyzer/Controllers/ManualAnalysisController.cs @@ -105,10 +105,10 @@ public class ManualAnalysisController : ControllerBase }, TradeFeedback = new TradeFeedbackInfo { - TotalAssetTrades = 12, + TotalAssetTrades = 0, AssetWinRate = winRate, - AvgReturnPercent = 3.4, - LastTradeResult = "WIN" + AvgReturnPercent = 0.0, + LastTradeResult = "UNKNOWN" } }; @@ -120,6 +120,7 @@ public class ManualAnalysisController : ControllerBase { proposal = new TradeProposalDto { + TradeId = "PROP-" + Guid.NewGuid().ToString("N"), AnalysisId = analysisId, EventId = analysisId, Sector = request.Sector, diff --git a/FinlyticAnalyzer/Program.cs b/FinlyticAnalyzer/Program.cs index c6b5e36..a8b0a28 100644 --- a/FinlyticAnalyzer/Program.cs +++ b/FinlyticAnalyzer/Program.cs @@ -2,11 +2,8 @@ using System; using FinlyticAnalyzer.Database; using FinlyticAnalyzer.Services; using FinlyticAnalyzer.Util; +using FinlyticCore.Services.Yahoo; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; var builder = Host.CreateApplicationBuilder(args); @@ -14,16 +11,15 @@ var builder = Host.CreateApplicationBuilder(args); builder.Services.AddDbContext(options => options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection"))); -// Register HTTP Clients for external scrapers/webhooks -builder.Services.AddHttpClient(); +// Register HTTP Clients for external webhooks (HttpClientFactory manages pool) builder.Services.AddHttpClient(); // Register Domain Services builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); -builder.Services.AddSingleton(); builder.Services.AddScoped(); +builder.Services.AddScoped(); // Unified MQTT Client (Handles both Events and RPC) builder.Services.AddSingleton(); @@ -60,4 +56,4 @@ using (var scope = host.Services.CreateScope()) await vixService.PollVixAsync(); } -await host.RunAsync(); +await host.RunAsync(); \ No newline at end of file diff --git a/FinlyticAnalyzer/Services/ActiveTradeMonitorWorker.cs b/FinlyticAnalyzer/Services/ActiveTradeMonitorWorker.cs index 99b825c..bbc62e2 100644 --- a/FinlyticAnalyzer/Services/ActiveTradeMonitorWorker.cs +++ b/FinlyticAnalyzer/Services/ActiveTradeMonitorWorker.cs @@ -103,6 +103,7 @@ public class ActiveTradeMonitorWorker : BackgroundService using var scope = _scopeFactory.CreateScope(); var n8nService = scope.ServiceProvider.GetRequiredService(); + var vixService = scope.ServiceProvider.GetRequiredService(); foreach (var trade in trades) { @@ -110,7 +111,7 @@ public class ActiveTradeMonitorWorker : BackgroundService try { - await ProcessTradeAsync(trade, n8nService, cancellationToken); + await ProcessTradeAsync(trade, n8nService, vixService, cancellationToken); } catch (Exception ex) { @@ -121,7 +122,7 @@ public class ActiveTradeMonitorWorker : BackgroundService } private async Task ProcessTradeAsync(TradeProposalDto trade, IN8nEvaluationService n8nService, - CancellationToken cancellationToken) + IVixTrackerService vixService, CancellationToken cancellationToken) { // 1. Get Live Price var livePriceReq = new IsinRequest(trade.Isin); @@ -210,8 +211,8 @@ public class ActiveTradeMonitorWorker : BackgroundService }, MarketContext = new MarketContextInfo { - Vix = trade.VixValue, - MarketRegime = trade.VixRegime.ToString() + Vix = (double)vixService.CurrentVix, + MarketRegime = vixService.CurrentRegime.ToString() }, UserPreferences = new UserPreferencesInfo { diff --git a/FinlyticAnalyzer/Services/SettingsDbService.cs b/FinlyticAnalyzer/Services/SettingsDbService.cs index b453945..faf932f 100644 --- a/FinlyticAnalyzer/Services/SettingsDbService.cs +++ b/FinlyticAnalyzer/Services/SettingsDbService.cs @@ -39,11 +39,15 @@ public class SettingsDbService : ISettingsDbService var settings = await _context.Settings.AsNoTracking().FirstOrDefaultAsync(); if (settings == null) { - settings = new AnalyzerSettingsEntity { Id = Guid.NewGuid() }; + settings = new AnalyzerSettingsEntity { Id = Guid.NewGuid(), UpdatedAt = DateTime.UtcNow }; _context.Settings.Add(settings); await _context.SaveChangesAsync(); _context.ChangeTracker.Clear(); } + + // Synchronize in-memory static filter values on get + SyncLogFilters(settings); + return settings; } @@ -52,10 +56,13 @@ public class SettingsDbService : ISettingsDbService /// public async Task SaveSettingsAsync(AnalyzerSettingsEntity settings) { - var existing = await _context.Settings.FirstOrDefaultAsync(); + var existing = await _context.Settings.FirstOrDefaultAsync(s => s.Id == settings.Id) + ?? await _context.Settings.FirstOrDefaultAsync(); + if (existing == null) { if (settings.Id == Guid.Empty) settings.Id = Guid.NewGuid(); + settings.UpdatedAt = DateTime.UtcNow; _context.Settings.Add(settings); } else @@ -67,19 +74,23 @@ public class SettingsDbService : ISettingsDbService existing.EnableLogAnalyzerAuto = settings.EnableLogAnalyzerAuto; existing.EnableLogAnalyzerManual = settings.EnableLogAnalyzerManual; existing.EnableLogDatabaseOps = settings.EnableLogDatabaseOps; - existing.UpdatedAt = settings.UpdatedAt; - _context.Settings.Update(existing); + existing.UpdatedAt = DateTime.UtcNow; } + await _context.SaveChangesAsync(); - // Synchronize in-memory static filter values + SyncLogFilters(settings); + + return settings; + } + + private static void SyncLogFilters(AnalyzerSettingsEntity settings) + { LogCategoryFilter.EnableLogMqttHealthPing = settings.EnableLogMqttHealthPing; LogCategoryFilter.EnableLogMqttGeneral = settings.EnableLogMqttGeneral; LogCategoryFilter.EnableLogAnalyzerAuto = settings.EnableLogAnalyzerAuto; LogCategoryFilter.EnableLogAnalyzerManual = settings.EnableLogAnalyzerManual; LogCategoryFilter.EnableLogDatabaseOps = settings.EnableLogDatabaseOps; - - return settings; } /// diff --git a/FinlyticAnalyzer/Services/ThreeLayerFilterEngine.cs b/FinlyticAnalyzer/Services/ThreeLayerFilterEngine.cs index 5467b49..8d88f66 100644 --- a/FinlyticAnalyzer/Services/ThreeLayerFilterEngine.cs +++ b/FinlyticAnalyzer/Services/ThreeLayerFilterEngine.cs @@ -10,6 +10,7 @@ public class ThreeLayerFilterEngine : IThreeLayerFilterEngine { private readonly ILogger _logger; private readonly ConcurrentDictionary _seenEvents = new(); + private readonly object _cleanupLock = new(); private DateTime _lastCleanupTime = DateTime.UtcNow; public ThreeLayerFilterEngine(ILogger logger) @@ -37,10 +38,16 @@ public class ThreeLayerFilterEngine : IThreeLayerFilterEngine string eventId = newsEvent.Id.ToString(); var now = DateTime.UtcNow; - // Safely clean up dictionary every 30 minutes + // Safely clean up dictionary every 30 minutes (thread-safe lock) if ((now - _lastCleanupTime).TotalMinutes > 30 || _seenEvents.Count > 10000) { - CleanupSeenEvents(now); + lock (_cleanupLock) + { + if ((now - _lastCleanupTime).TotalMinutes > 30 || _seenEvents.Count > 10000) + { + CleanupSeenEvents(now); + } + } } // Deduplication check (keep history for 12 hours) diff --git a/FinlyticAnalyzer/Services/WinRateCalculator.cs b/FinlyticAnalyzer/Services/WinRateCalculator.cs index 20d1c84..173002a 100644 --- a/FinlyticAnalyzer/Services/WinRateCalculator.cs +++ b/FinlyticAnalyzer/Services/WinRateCalculator.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.Json; @@ -12,6 +13,11 @@ public class WinRateCalculator : IWinRateCalculator { private readonly ILogger _logger; private readonly string _feedbackDir; + + private readonly object _cacheLock = new(); + private List? _cachedRecords; + private DateTime _lastCacheTime = DateTime.MinValue; + private static readonly TimeSpan CacheTtl = TimeSpan.FromMinutes(3); public WinRateCalculator(ILogger logger) { @@ -25,41 +31,25 @@ public class WinRateCalculator : IWinRateCalculator /// /// Calculates the win rate for a given sector and symbol under the specified market regime. + /// Uses cached feedback records (3-minute TTL) to prevent disk I/O bottlenecks. /// public double CalculateWinRate(string sector, string symbol, VixMarketRegime regime) { try { - if (!Directory.Exists(_feedbackDir)) return 65.0; + var records = GetCachedOrLoadRecords(); + if (records.Count == 0) return 65.0; - var jsonFiles = Directory.GetFiles(_feedbackDir, "*.json", SearchOption.AllDirectories); - if (jsonFiles.Length == 0) return 65.0; + var matching = records.Where(r => + string.Equals(r.Sector, sector, StringComparison.OrdinalIgnoreCase) && + r.VixRegime == regime).ToList(); - int totalTrades = 0; - int winningTrades = 0; - - foreach (var file in jsonFiles) + if (matching.Count > 0) { - var content = File.ReadAllText(file); - var records = JsonSerializer.Deserialize(content); - if (records == null || records.Length == 0) continue; - - var matching = records.Where(r => - string.Equals(r.Sector, sector, StringComparison.OrdinalIgnoreCase) && - r.VixRegime == regime).ToList(); - - foreach (var rec in matching) - { - totalTrades++; - if (rec.IsWin) winningTrades++; - } - } - - if (totalTrades > 0) - { - double calculatedWinRate = (double)winningTrades / totalTrades * 100.0; + int winningTrades = matching.Count(r => r.IsWin); + double calculatedWinRate = (double)winningTrades / matching.Count * 100.0; _logger.LogInformation("[{Channel}] Calculated win-rate for Sector '{Sector}' in Regime '{Regime}': {WinRate:F1}% ({Wins}/{Total})", - "AnalyzerChannel", sector, regime, calculatedWinRate, winningTrades, totalTrades); + "AnalyzerChannel", sector, regime, calculatedWinRate, winningTrades, matching.Count); return Math.Round(calculatedWinRate, 1); } } @@ -70,4 +60,42 @@ public class WinRateCalculator : IWinRateCalculator return 65.0; // Default baseline win-rate } + + private List GetCachedOrLoadRecords() + { + lock (_cacheLock) + { + if (_cachedRecords != null && (DateTime.UtcNow - _lastCacheTime) < CacheTtl) + { + return _cachedRecords; + } + + var loadedList = new List(); + + if (Directory.Exists(_feedbackDir)) + { + var jsonFiles = Directory.GetFiles(_feedbackDir, "*.json", SearchOption.AllDirectories); + foreach (var file in jsonFiles) + { + try + { + var content = File.ReadAllText(file); + var records = JsonSerializer.Deserialize(content); + if (records != null && records.Length > 0) + { + loadedList.AddRange(records); + } + } + catch (Exception ex) + { + _logger.LogWarning(ex, "[{Channel}] Failed to read or parse feedback file '{File}'", "AnalyzerChannel", file); + } + } + } + + _cachedRecords = loadedList; + _lastCacheTime = DateTime.UtcNow; + return _cachedRecords; + } + } } diff --git a/FinlyticAnalyzer/Util/AnalyzerMqttClient.cs b/FinlyticAnalyzer/Util/AnalyzerMqttClient.cs index 92c1d61..962c973 100644 --- a/FinlyticAnalyzer/Util/AnalyzerMqttClient.cs +++ b/FinlyticAnalyzer/Util/AnalyzerMqttClient.cs @@ -79,7 +79,6 @@ public class AnalyzerMqttClient : ManagedMqttClient, IHostedService _logger.LogInformation("[{Channel}] Analyzer MQTT Client connected. Subscribing to topics and RPC response channels...", "AnalyzerChannel"); // Incoming Event Topics - await SubscribeAsync("services/news/completed"); await SubscribeAsync("services/news/#"); await SubscribeAsync("finlytic/news/raw/#"); await SubscribeAsync("finlytic/market/ticks/#"); @@ -420,7 +419,21 @@ public class AnalyzerMqttClient : ManagedMqttClient, IHostedService } catch (Exception ex) { - _logger.LogError(ex, "[{Channel}] Failed to handle manual trigger.", "AnalyzerChannel"); + _logger.LogError(ex, "[{Channel}] Failed to handle manual trigger for correlation {CorrelationId}.", "AnalyzerChannel", correlationId); + try + { + var errorResponse = new ManualAnalysisResponseDto + { + Status = "ERROR", + Message = $"Analysis failed: {ex.Message}" + }; + await PublishAsync($"services/response/analyzer_TriggerManual/{correlationId}", + JsonSerializer.Serialize(errorResponse, FinlyticJsonSerializerContext.Default.ManualAnalysisResponseDto)); + } + catch (Exception pubEx) + { + _logger.LogError(pubEx, "[{Channel}] Failed to publish error response for correlation {CorrelationId}.", "AnalyzerChannel", correlationId); + } } } @@ -522,11 +535,23 @@ public class AnalyzerMqttClient : ManagedMqttClient, IHostedService { var isinReq = new IsinRequest(filterResult.Isin); - livePriceResp = await SendRpcRequestAsync( - "tr_GetLivePrice", isinReq, TimeSpan.FromSeconds(3)); - - taResp = await SendRpcRequestAsync( - "ta_GetAnalysis", isinReq, TimeSpan.FromSeconds(3)); + // Parallel RPC calls (was sequential — up to 12s latency reduced to ~3s) + var livePriceTask = SendRpcRequestAsync( + "tr_GetLivePrice", isinReq, TimeSpan.FromSeconds(5)); + var taTask = SendRpcRequestAsync( + "ta_GetAnalysis", isinReq, TimeSpan.FromSeconds(5)); + var fundTask = SendRpcRequestAsync( + "fundamentals_Get", isinReq, TimeSpan.FromSeconds(5)); + var sentTask = SendRpcRequestAsync( + "sentiment_GetIsin", isinReq, TimeSpan.FromSeconds(5)); + + await Task.WhenAll(livePriceTask, taTask, fundTask, sentTask); + + livePriceResp = livePriceTask.Result; + taResp = taTask.Result; + fundResp = fundTask.Result; + var sentResp = sentTask.Result; + if (taResp?.Indicators != null) { var latestIndicator = taResp.Indicators.LastOrDefault(); @@ -547,8 +572,6 @@ public class AnalyzerMqttClient : ManagedMqttClient, IHostedService }; } - fundResp = await SendRpcRequestAsync( - "fundamentals_Get", isinReq, TimeSpan.FromSeconds(3)); if (fundResp != null) { resolvedSymbol = !string.IsNullOrWhiteSpace(fundResp.Ticker) ? fundResp.Ticker : resolvedSymbol; @@ -571,8 +594,6 @@ public class AnalyzerMqttClient : ManagedMqttClient, IHostedService }; } - var sentResp = await SendRpcRequestAsync( - "sentiment_GetIsin", isinReq, TimeSpan.FromSeconds(3)); if (sentResp != null) { sentInfo = new SentimentContextInfo diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Affiliation Database b/FinlyticApp/.dart_tool/chrome-device/Default/Affiliation Database index f4296fe..8c40bd3 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Affiliation Database and b/FinlyticApp/.dart_tool/chrome-device/Default/Affiliation Database differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Bookmarks b/FinlyticApp/.dart_tool/chrome-device/Default/Bookmarks index 97de32e..2aeba5e 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Bookmarks +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Bookmarks @@ -307,6 +307,6 @@ "type": "folder" } }, - "sync_metadata": "CkEKHgiIgQISCCwDZNOfAQAAKg4QABgBIAAoBTAAOABAABIAKhhqUXdZeW92NHBOYUVzNmo4cEpRZlpRPT1IA6AGDBKOAQgCEokBChxZY1NUb252RVNQd3FDczRMMmNyVmh2NjhMOTg9EiQ5Y2EzNDVmNi1jNGE4LTU0ZmEtOGQ4NS1lY2Y5ODAwMTM4NTkYACAAKAAwhdT1wf4tOJru1f7sL0Ca7tX+7C9KHG9QVmtod0JSYlY2NUtDV1IyK0lPTkhXb091OD1aAGUAAAAAwj4CYAASrQEIGhKoAQocVGlxakVVMnFJRy9kRkRVR2Jidk5WOHg3cUFFPRIkN2EzOWVjN2MtMTJiNC00YTJiLTk2NzAtOTUyMTdkZWExYzA1GAAgACgAMIfJ8eazMzjI2PHmszNAyNjx5rMzShxFVlFvUno2TTVZVnJtN04xNzZ1L25uSXFWbFE9Wh8iHdMzVi9OQWtIMTVqeVJwdkNydS9tTlNBaWhTT2M9ZfX+++fCPgJgBRKtAQgZEqgBChxJLy9XWkQ4cmZsUVA4bThkamVtSjgzTjJBN1k9EiRhYzUzMzEwNy04ZDEyLTQ1MGMtYTNhZS03NDc2OTg5ZWEzNWEYACAAKAAw8uDxwdUzONGbxov9MkDRm8aL/TJKHDBEMlZZQVdxNWhKb2hkT0ZmQThabGxFc1psMD1aHyIdpy9FQ2FaQ3NGRHVKc21JMVFCb1M2aUhGVWVYVT1lhWftD8I+AmAFEq0BCAcSqAEKHEtiUGpHOVZXMC9ycjNkS0pZVDNHYVk1ekI0az0SJDFkZjc5YTdkLTBhODctNGE3YS1iMzczLTRhZjZjNjdhZWYxMBgAIAAoADD/xYbzwDI4sdyF88AyQLHchfPAMkocYU9OQ1lyUFBvS2VwTlNtOGRpMmtGRy9qMnZZPVofIh0iTGFvNHpzRThkYjBKR3JnRFpVLzlJMUpCQXdnPWUAAAAAwj4CYAASrgEIFhKpAQoceEdBbDVlNGp0Mk55aGNvT01NenVSalFDOWg0PRIkYTJjOWJjZWYtOTI2My00ZjIxLWJlODgtYTBlYmNlOGJjZDAxGAAgACgAMNOixov9MjiXme+kvTJAl5nvpL0yShxNT2IrOHNVVEszb3J1Q2Yrc2dvVXF2QzVMTkU9WiAiHv/7Vjdma2NPUjljNkppZG1ucXBPVVc4T2RsdE5FPWUieK8kwj4CYAUSrAEICBKnAQocTWNIVHFyOGFFbVd6dmJpd1AvZVAvbktWQ1N3PRIkNDQyM2Q0MDItNWUwNy00YTdjLWJiYjgtNTk5ZWQyOWY4ODUwGAAgACgAMO/ZhfPAMjj/zoTzwDJA/86E88AyShxUVmd5N0hiK2tjN05OMXBoVXZMeWRENmVqbGs9Wh4iHDRsbGxBL1R4K1VQMWREbEMzTWxaYytuek4vRT1lQ+/sFMI+AmAFEq4BCBUSqQEKHHYwaFpzT2cxeEZNY1l5dFZ5d0hWMUFkbjBIaz0SJGEyYmJjZmRkLWQ0MjEtNDYyZi1iMzQzLTVmNmU3M2Y2ZTNlYRgAIAAoADDUosaL/TI44JfvpL0yQOCX76S9MkoceFBJZlhHcDBCSHhralJ5Zkh2cE1DMjhCcENVPVogIh7/7HdvY04vQy9VazZIVVA2eFRPcHpTemplZllaST1lInivJMI+AmAFEq0BCBMSqAEKHFAwVlV5STJTRVgwVW41UUR4RTRJNU5GektmMD0SJDFkYWVkMGJiLTAwZmYtNDM3NS1hMWEzLTBlOGE0OGJhNjJiMBgAIAAoADDSosaL/TI4qJjvpL0yQKiY76S9MkocaFUrYmpsVTZLbVdZRGZtUVRZdThxSGpBWCtBPVofIh3/RDV5eVdpbmdnWDhmbS9GSDg1bEhmOGNleWNvPWUieK8kwj4CYAUSrQEIERKoAQocRCt0MTBEN2ZJN3FTcGwzWktJVzN5TEJJbC8wPRIkYWRmN2VjMzktNmYxZC00MmRhLWJjNjUtNjBmMmNmNjVhM2U2GAAgACgAMNGixov9Mjikmu+kvTJApJrvpL0yShwveTUrdDJBY0pLS0d1TjExTWxFc1lWTmU4UWs9Wh8iHdNTRUdnVktIdHJkY29lQkwzWGk5SXovb1JscUE9ZSJ4ryTCPgJgBRKtAQgQEqgBChxMaWVLV1RIUytzejhwSFFzbnRGT1RNdzIrSUk9EiRmMzRiNmE3Ni1lNGU5LTRiYWEtYTE4OS1iYTBmNmU5Zjk1YTMYACAAKAAw1aLGi/0yOICY76S9MkCAmO+kvTJKHGs5S016bGpRVGhmYWhFSnNJY1J6R1huM09QYz1aHyIdpjNFYnhSQlZoemVoVDA1TlAxemxpbThNd1ppVT1lInivJMI+AmAFEq0BCBQSqAEKHHVaOFdGVU82dlZYb1ozbjZBdFlyQzdxT1ExST0SJGE5ZjY3NmVjLTY0OWUtNGUwZC1iMmRjLWMyYzhlNDAwOGVlNxgAIAAoADCKqt2n7jI4/pbvpL0yQP6W76S9MkocckVYcFFvRzZqVzFucmNWQXIrZFBXSmo4NUtFPVofIh3/YXorbkdGQ2V5ZkYvZTdRVzBiTjNZeG5BbWRVPWUieK8kwj4CYAUSrAEICxKnAQocSFc0T3Q0MzBlRlFNOE9ydnU2ak1QbGlKSnBvPRIkNTAxMDE3N2QtNjNlZS00MmM4LThhZDEtYmRlN2E3NmEwYjFkGAAgACgAMKLE9+q5MjjBjvfquTJAwY736rkyShwxYjdGVkp5M0cvSzRld3NoOXozK1h3UXIvbFk9Wh4iHGpZNUdHV3IxSW0zeHE3UGhKc3UzT3RJbjF1az1liYm6PsI+AmAFEqwBCA8SpwEKHDNKU3JyUGszRUZiSnJWQzhIdXgrUFgvZCt6ST0SJDQ2MjkwNzg4LTRmNDAtNDE3ZS04MGQwLTA0YTU5OTdiMzM1NhgAIAAoADD6qOOjvTI49ITjo70yQPSE46O9MkocYmZubjFselYwUUU1alE4RmJEYzBPS2t0ejBjPVoeIhxKajZmMUQ1eWpTVy9RWjg4elNQdXI3S2drVmM9ZQAAAADCPgJgABKsAQgYEqcBChxvN2dLaFFxWFdvT3Y2RUNuVFNqbTljOXdiUVE9EiRjZDAxODRmMC04NDFjLTQ2YTEtOWMxZi1hMTA1YjJmMGE2MDAYACAAKAAwksT+qOEyOMzI/qjhMkDMyP6o4TJKHHBZWWNRN1RDVHJ2bHMrSU1DY2MwRWM3QzlvYz1aHiIcTkZ1TTZUOEloOS9VU3Q2TFY2QllrS2lOVFJNPWX9LGfzwj4CYAUSrQEIDRKoAQocamd1WmhQUUF0SHl5SU1zNWprWGJ2TExlelIwPRIkM2FjM2I0NTgtNGJiZS00MjVlLTk3MWEtMTk2Yjc3NzI1ZjBjGAAgACgAMIX++eq5Mjily/nquTJApcv56rkyShxTZG5XcnFzZnVUR3d6b3R5eitESWJOVXg1QlU9Wh8iHbY1a2ZkRFlXeUxyQTF6TXBnOXNvZEpWL1hXWVU9ZZY2P1rCPgJgBRKtAQgKEqgBChxneHBjOGw2czBycTN4MHYyZXc4VEo0dUU3eTQ9EiQyNDcxNmQzYy00NmZjLTQxMGYtYjdmMS03MGU4ZjNkYWM4MDEYACAAKAAw47yupLwyOIu/rqS8MkCLv66kvDJKHDk1em5tVjhVeG9wdDNacDhBemJ5blducHRUND1aHyIdNW0vVm4vbUhZSmwvaWZES3NhbFppNmdDVXFKND1lAAAAAMI+AmAFEqwBCAwSpwEKHHpYbEV6cFFBd3JwODNZRU0wak9RMUgvQk9lUT0SJDlhOTZmOTRhLWVjOWEtNDYyZS05NmFhLTg1NTE3NTE4ZGM1YRgAIAAoADDrufbquTI4/NLz6rkyQPzS8+q5MkoceGlqZWpzclhGQzJhbTA5eVhJbDVDUDZBWWQ0PVoeIhxtT3NIcnZPWVViOE1DU1JTdU5mS3R5MDdvVUE9Zdvv9KTCPgJgBRKuAQgXEqkBChxRMFhKaUNoNEpVUEJ4emt4MzMwQW4welc1NzQ9EiQzNWZiNDViZC1jMGM1LTRkM2EtYmY3NC01ZjcyYTM3NTQ5YTMYACAAKAAw0KLGi/0yOIab76S9MkCGm++kvTJKHGVBUDU5SDFDMGRvNDVENXVna1NhMklpTTNsQT1aICIe//1CcTdPOXp4ZUlQOEF1Slh0eWpRZWlCZ1g4VTg9ZSJ4ryTCPgJgBRKtAQgOEqgBChx0U0xMY2ZTQ3JpZ0w1Sk1GTFhSazRiVWlSbjg9EiQyYjkxNWIyNy05ZDEyLTQyNzgtYTE4NS01NmYxODA5MTVlNjEYACAAKAAw07bb8rkyONG42/K5MkDRuNvyuTJKHG9HVDhscVQ4SElaNDd4YmVycTJ4UHVZTDg3WT1aHyId21A4UHpwMFZPZzZIRUNXU0VjWmx6Wis0d0tVaz1lnnXLsMI+AmAFEo4BCAUSiQEKHHdSQnJaTCs2UEE5YXZLZ2pOUDdKWERMY2Z2cz0SJGU1MmMwNTE1LWVkNTItNTUyNC1iY2M2LTcwMmJkNWJmZGEwYxgAIAAoADDI3fDmszM4muDw5rMzQJrg8OazM0ocbm14NjVzUUR2eEk4VGdFZXYrQStudHRvU240PVoAZQAAAADCPgJgABKsAQgJEqcBChxqSWt1ZUFhU3BKbnI5VGtHR09jWlNGZmgzZjA9EiQ2MTNkNWJhNy1hYTIxLTQ0OTYtYTVlYS03ODgzOTkxNTJjNTIYACAAKAAw7pTz6rkyOJy48eq5MkCcuPHquTJKHCt0TjhZU1V1Smo1cEtQYk9IMklyN1RlUmZNTT1aHiIcREI2WmpKbDk0STdXendWTWFNZUo3ZHRrQ0JFPWUAAAAAwj4CYAASrQEIGxKoAQocOWVrby85eUJSc1BsZVFUSjJURktDSjdQbEJvPRIkMGRjODBiYTYtNWU5Yi00MDUzLWJjNjMtM2RjNjRkYTdjNDhlGAAgACgAMKnFoL20MzjQyaC9tDNA0MmgvbQzShxkQmZBZUdJeWpXZ25uK0RFYlNJZFNkNElWZ009Wh8iHelzMElmM2dhcGYxQVBNUzRxdjVwQWlmWmlDZGs9ZapkCPHCPgJgBRKtAQgSEqgBChxJUW83cTlQSWdQaU9QSHljTmQxNU10SHQ2WFE9EiQ2ZGY1ZGQwMC1hYzVlLTQzODItODBkYS1mZGM2YWE0OTk1NWIYACAAKAAw1qLGi/0yOLWW76S9MkC1lu+kvTJKHGRsT0QvczhSRklRb2pJd1ZUTWgwMWRkbkxPRT1aHyId/WxmdjNOemRTS2RXS0pZUXRWUGJLa3FLUk53az1lInivJMI+AmAFEo4BCAESiQEKHHl4Si82ZnZrZWNyN2twNUVRekI0dFdMcGRiRT0SJDQyZTlmZGVmLTE4OGUtNTA2NS1iMDlkLWQzZjZjOTlmZWVlNxgAIAAoADCE1PXB/i04iu7V/uwvQIru1f7sL0ocYVJDV0xnaEY5YjVJbnFLSUR2dUovanZRa0ZjPVoAZQAAAADCPgJgABKOAQgDEokBChxuamdEdTg4ZUNydlhwODZwRDdmSEdjcUZwODg9EiQ4NTVlYjM2NC1lZWFjLTU0YmQtYTQ2Ny1iMDFhOTg5Yzg0M2QYACAAKAAwidT1wf4tOPju1f7sL0D47tX+7C9KHHl6TkIwMWNuNTRBN2NSVTB1VCsvUGdtVHRVbz1aAGUAAAAAwj4CYAAwADgA", + "sync_metadata": "CkEKHgiIgQISCI4/Ze2fAQAAKg4QABgBIAAoBTAAOABAABIAKhhqUXdZeW92NHBOYUVzNmo4cEpRZlpRPT1IA6AGDBKOAQgCEokBChxZY1NUb252RVNQd3FDczRMMmNyVmh2NjhMOTg9EiQ5Y2EzNDVmNi1jNGE4LTU0ZmEtOGQ4NS1lY2Y5ODAwMTM4NTkYACAAKAAwhdT1wf4tOJru1f7sL0Ca7tX+7C9KHG9QVmtod0JSYlY2NUtDV1IyK0lPTkhXb091OD1aAGUAAAAAwj4CYAASrQEIGxKoAQocOWVrby85eUJSc1BsZVFUSjJURktDSjdQbEJvPRIkMGRjODBiYTYtNWU5Yi00MDUzLWJjNjMtM2RjNjRkYTdjNDhlGAAgACgAMKnFoL20MzjQyaC9tDNA0MmgvbQzShxkQmZBZUdJeWpXZ25uK0RFYlNJZFNkNElWZ009Wh8iHelzMElmM2dhcGYxQVBNUzRxdjVwQWlmWmlDZGs9ZapkCPHCPgJgBRKtAQgaEqgBChxUaXFqRVUycUlHL2RGRFVHYmJ2TlY4eDdxQUU9EiQ3YTM5ZWM3Yy0xMmI0LTRhMmItOTY3MC05NTIxN2RlYTFjMDUYACAAKAAwh8nx5rMzOMjY8eazM0DI2PHmszNKHEVWUW9SejZNNVlWcm03TjE3NnUvbm5JcVZsUT1aHyId0zNWL05Ba0gxNWp5UnB2Q3J1L21OU0FpaFNPYz1l9f7758I+AmAFEq0BCBkSqAEKHEkvL1daRDhyZmxRUDhtOGRqZW1KODNOMkE3WT0SJGFjNTMzMTA3LThkMTItNDUwYy1hM2FlLTc0NzY5ODllYTM1YRgAIAAoADDy4PHB1TM40ZvGi/0yQNGbxov9MkocMEQyVllBV3E1aEpvaGRPRmZBOFpsbEVzWmwwPVofIh2nL0VDYVpDc0ZEdUpzbUkxUUJvUzZpSEZVZVhVPWWFZ+0Pwj4CYAUSrQEIBxKoAQocS2JQakc5VlcwL3JyM2RLSllUM0dhWTV6QjRrPRIkMWRmNzlhN2QtMGE4Ny00YTdhLWIzNzMtNGFmNmM2N2FlZjEwGAAgACgAMP/FhvPAMjix3IXzwDJAsdyF88AyShxhT05DWXJQUG9LZXBOU204ZGkya0ZHL2oydlk9Wh8iHSJMYW80enNFOGRiMEpHcmdEWlUvOUkxSkJBd2c9ZQAAAADCPgJgABKuAQgWEqkBChx4R0FsNWU0anQyTnloY29PTU16dVJqUUM5aDQ9EiRhMmM5YmNlZi05MjYzLTRmMjEtYmU4OC1hMGViY2U4YmNkMDEYACAAKAAw06LGi/0yOJeZ76S9MkCXme+kvTJKHE1PYis4c1VUSzNvcnVDZitzZ29VcXZDNUxORT1aICIe//tWN2ZrY09SOWM2SmlkbW5xcE9VVzhPZGx0TkU9ZSJ4ryTCPgJgBRKsAQgIEqcBChxNY0hUcXI4YUVtV3p2Yml3UC9lUC9uS1ZDU3c9EiQ0NDIzZDQwMi01ZTA3LTRhN2MtYmJiOC01OTllZDI5Zjg4NTAYACAAKAAw79mF88AyOP/OhPPAMkD/zoTzwDJKHFRWZ3k3SGIra2M3Tk4xcGhVdkx5ZEQ2ZWpsaz1aHiIcNGxsbEEvVHgrVVAxZERsQzNNbFpjK256Ti9FPWVD7+wUwj4CYAUSrgEIFRKpAQocdjBoWnNPZzF4Rk1jWXl0Vnl3SFYxQWRuMEhrPRIkYTJiYmNmZGQtZDQyMS00NjJmLWIzNDMtNWY2ZTczZjZlM2VhGAAgACgAMNSixov9Mjjgl++kvTJA4JfvpL0yShx4UElmWEdwMEJIeGtqUnlmSHZwTUMyOEJwQ1U9WiAiHv/sd29jTi9DL1VrNkhVUDZ4VE9welN6amVmWVpJPWUieK8kwj4CYAUSrQEIExKoAQocUDBWVXlJMlNFWDBVbjVRRHhFNEk1TkZ6S2YwPRIkMWRhZWQwYmItMDBmZi00Mzc1LWExYTMtMGU4YTQ4YmE2MmIwGAAgACgAMNKixov9MjiomO+kvTJAqJjvpL0yShxoVStiamxVNkttV1lEZm1RVFl1OHFIakFYK0E9Wh8iHf9ENXl5V2luZ2dYOGZtL0ZIODVsSGY4Y2V5Y289ZSJ4ryTCPgJgBRKtAQgREqgBChxEK3QxMEQ3Zkk3cVNwbDNaS0lXM3lMQklsLzA9EiRhZGY3ZWMzOS02ZjFkLTQyZGEtYmM2NS02MGYyY2Y2NWEzZTYYACAAKAAw0aLGi/0yOKSa76S9MkCkmu+kvTJKHC95NSt0MkFjSktLR3VOMTFNbEVzWVZOZThRaz1aHyId01NFR2dWS0h0cmRjb2VCTDNYaTlJei9vUmxxQT1lInivJMI+AmAFEq0BCBASqAEKHExpZUtXVEhTK3N6OHBIUXNudEZPVE13MitJST0SJGYzNGI2YTc2LWU0ZTktNGJhYS1hMTg5LWJhMGY2ZTlmOTVhMxgAIAAoADDVosaL/TI4gJjvpL0yQICY76S9MkocazlLTXpsalFUaGZhaEVKc0ljUnpHWG4zT1BjPVofIh2mM0VieFJCVmh6ZWhUMDVOUDF6bGltOE13WmlVPWUieK8kwj4CYAUSrAEIGBKnAQocbzdnS2hRcVhXb092NkVDblRTam05Yzl3YlFRPRIkY2QwMTg0ZjAtODQxYy00NmExLTljMWYtYTEwNWIyZjBhNjAwGAAgACgAMJLE/qjhMjjMyP6o4TJAzMj+qOEyShxwWVljUTdUQ1RydmxzK0lNQ2NjMEVjN0M5b2M9Wh4iHE5GdU02VDhJaDkvVVN0NkxWNkJZa0tpTlRSTT1l/Sxn88I+AmAFEq0BCA0SqAEKHGpndVpoUFFBdEh5eUlNczVqa1hidkxMZXpSMD0SJDNhYzNiNDU4LTRiYmUtNDI1ZS05NzFhLTE5NmI3NzcyNWYwYxgAIAAoADCF/vnquTI4pcv56rkyQKXL+eq5MkocU2RuV3Jxc2Z1VEd3em90eXorREliTlV4NUJVPVofIh22NWtmZERZV3lMckExek1wZzlzb2RKVi9YV1lVPWWWNj9awj4CYAUSrQEIChKoAQocZ3hwYzhsNnMwcnEzeDB2MmV3OFRKNHVFN3k0PRIkMjQ3MTZkM2MtNDZmYy00MTBmLWI3ZjEtNzBlOGYzZGFjODAxGAAgACgAMOO8rqS8MjiLv66kvDJAi7+upLwyShw5NXpubVY4VXhvcHQzWnA4QXpieW5XbnB0VDQ9Wh8iHTVtL1ZuL21IWUpsL2lmREtzYWxaaTZnQ1VxSjQ9ZQAAAADCPgJgBRKsAQgMEqcBChx6WGxFenBRQXdycDgzWUVNMGpPUTFIL0JPZVE9EiQ5YTk2Zjk0YS1lYzlhLTQ2MmUtOTZhYS04NTUxNzUxOGRjNWEYACAAKAAw67n26rkyOPzS8+q5MkD80vPquTJKHHhpamVqc3JYRkMyYW0wOXlYSWw1Q1A2QVlkND1aHiIcbU9zSHJ2T1lVYjhNQ1NSU3VOZkt0eTA3b1VBPWXb7/Skwj4CYAUSrgEIFxKpAQocUTBYSmlDaDRKVVBCeHpreDMzMEFuMHpXNTc0PRIkMzVmYjQ1YmQtYzBjNS00ZDNhLWJmNzQtNWY3MmEzNzU0OWEzGAAgACgAMNCixov9MjiGm++kvTJAhpvvpL0yShxlQVA1OUgxQzBkbzQ1RDV1Z2tTYTJJaU0zbEE9WiAiHv/9QnE3Tzl6eGVJUDhBdUpYdHlqUWVpQmdYOFU4PWUieK8kwj4CYAUSrQEIDhKoAQocdFNMTGNmU0NyaWdMNUpNRkxYUms0YlVpUm44PRIkMmI5MTViMjctOWQxMi00Mjc4LWExODUtNTZmMTgwOTE1ZTYxGAAgACgAMNO22/K5MjjRuNvyuTJA0bjb8rkyShxvR1Q4bHFUOEhJWjQ3eGJlcnEyeFB1WUw4N1k9Wh8iHdtQOFB6cDBWT2c2SEVDV1NFY1pselorNHdLVWs9ZZ51y7DCPgJgBRKOAQgFEokBChx3UkJyWkwrNlBBOWF2S2dqTlA3SlhETGNmdnM9EiRlNTJjMDUxNS1lZDUyLTU1MjQtYmNjNi03MDJiZDViZmRhMGMYACAAKAAwyN3w5rMzOJrg8OazM0Ca4PDmszNKHG5teDY1c1FEdnhJOFRnRWV2K0ErbnR0b1NuND1aAGUAAAAAwj4CYAASrAEICRKnAQocaklrdWVBYVNwSm5yOVRrR0dPY1pTRmZoM2YwPRIkNjEzZDViYTctYWEyMS00NDk2LWE1ZWEtNzg4Mzk5MTUyYzUyGAAgACgAMO6U8+q5MjicuPHquTJAnLjx6rkyShwrdE44WVNVdUpqNXBLUGJPSDJJcjdUZVJmTU09Wh4iHERCNlpqSmw5NEk3V3p3Vk1hTWVKN2R0a0NCRT1lAAAAAMI+AmAAEq0BCBQSqAEKHHVaOFdGVU82dlZYb1ozbjZBdFlyQzdxT1ExST0SJGE5ZjY3NmVjLTY0OWUtNGUwZC1iMmRjLWMyYzhlNDAwOGVlNxgAIAAoADCKqt2n7jI4/pbvpL0yQP6W76S9MkocckVYcFFvRzZqVzFucmNWQXIrZFBXSmo4NUtFPVofIh3/YXorbkdGQ2V5ZkYvZTdRVzBiTjNZeG5BbWRVPWUieK8kwj4CYAUSrAEIDxKnAQocM0pTcnJQazNFRmJKclZDOEh1eCtQWC9kK3pJPRIkNDYyOTA3ODgtNGY0MC00MTdlLTgwZDAtMDRhNTk5N2IzMzU2GAAgACgAMPqo46O9Mjj0hOOjvTJA9ITjo70yShxiZm5uMWx6VjBRRTVqUThGYkRjME9La3R6MGM9Wh4iHEpqNmYxRDV5alNXL1FaODh6U1B1cjdLZ2tWYz1lAAAAAMI+AmAAEqwBCAsSpwEKHEhXNE90NDMwZUZRTThPcnZ1NmpNUGxpSkpwbz0SJDUwMTAxNzdkLTYzZWUtNDJjOC04YWQxLWJkZTdhNzZhMGIxZBgAIAAoADCixPfquTI4wY736rkyQMGO9+q5MkocMWI3RlZKeTNHL0s0ZXdzaDl6MytYd1FyL2xZPVoeIhxqWTVHR1dyMUltM3hxN1BoSnN1M090SW4xdWs9ZYmJuj7CPgJgBRKtAQgSEqgBChxJUW83cTlQSWdQaU9QSHljTmQxNU10SHQ2WFE9EiQ2ZGY1ZGQwMC1hYzVlLTQzODItODBkYS1mZGM2YWE0OTk1NWIYACAAKAAw1qLGi/0yOLWW76S9MkC1lu+kvTJKHGRsT0QvczhSRklRb2pJd1ZUTWgwMWRkbkxPRT1aHyId/WxmdjNOemRTS2RXS0pZUXRWUGJLa3FLUk53az1lInivJMI+AmAFEo4BCAESiQEKHHl4Si82ZnZrZWNyN2twNUVRekI0dFdMcGRiRT0SJDQyZTlmZGVmLTE4OGUtNTA2NS1iMDlkLWQzZjZjOTlmZWVlNxgAIAAoADCE1PXB/i04iu7V/uwvQIru1f7sL0ocYVJDV0xnaEY5YjVJbnFLSUR2dUovanZRa0ZjPVoAZQAAAADCPgJgABKOAQgDEokBChxuamdEdTg4ZUNydlhwODZwRDdmSEdjcUZwODg9EiQ4NTVlYjM2NC1lZWFjLTU0YmQtYTQ2Ny1iMDFhOTg5Yzg0M2QYACAAKAAwidT1wf4tOPju1f7sL0D47tX+7C9KHHl6TkIwMWNuNTRBN2NSVTB1VCsvUGdtVHRVbz1aAGUAAAAAwj4CYAAwADgA", "version": 1 } diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Bookmarks.bak b/FinlyticApp/.dart_tool/chrome-device/Default/Bookmarks.bak index 84acfc1..97de32e 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Bookmarks.bak +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Bookmarks.bak @@ -307,6 +307,6 @@ "type": "folder" } }, - "sync_metadata": "CkEKHgiIgQISCBYtO8mfAQAAKg4QABgBIAAoBTAAOABAABIAKhhqUXdZeW92NHBOYUVzNmo4cEpRZlpRPT1IA6AGDBKOAQgDEokBChxuamdEdTg4ZUNydlhwODZwRDdmSEdjcUZwODg9EiQ4NTVlYjM2NC1lZWFjLTU0YmQtYTQ2Ny1iMDFhOTg5Yzg0M2QYACAAKAAwidT1wf4tOPju1f7sL0D47tX+7C9KHHl6TkIwMWNuNTRBN2NSVTB1VCsvUGdtVHRVbz1aAGUAAAAAwj4CYAASrQEIGhKoAQocVGlxakVVMnFJRy9kRkRVR2Jidk5WOHg3cUFFPRIkN2EzOWVjN2MtMTJiNC00YTJiLTk2NzAtOTUyMTdkZWExYzA1GAAgACgAMIfJ8eazMzjI2PHmszNAyNjx5rMzShxFVlFvUno2TTVZVnJtN04xNzZ1L25uSXFWbFE9Wh8iHdMzVi9OQWtIMTVqeVJwdkNydS9tTlNBaWhTT2M9ZfX+++fCPgJgBRKtAQgHEqgBChxLYlBqRzlWVzAvcnIzZEtKWVQzR2FZNXpCNGs9EiQxZGY3OWE3ZC0wYTg3LTRhN2EtYjM3My00YWY2YzY3YWVmMTAYACAAKAAw/8WG88AyOLHchfPAMkCx3IXzwDJKHGFPTkNZclBQb0tlcE5TbThkaTJrRkcvajJ2WT1aHyIdIkxhbzR6c0U4ZGIwSkdyZ0RaVS85STFKQkF3Zz1lAAAAAMI+AmAAEq4BCBYSqQEKHHhHQWw1ZTRqdDJOeWhjb09NTXp1UmpRQzloND0SJGEyYzliY2VmLTkyNjMtNGYyMS1iZTg4LWEwZWJjZThiY2QwMRgAIAAoADDTosaL/TI4l5nvpL0yQJeZ76S9MkocTU9iKzhzVVRLM29ydUNmK3Nnb1VxdkM1TE5FPVogIh7/+1Y3ZmtjT1I5YzZKaWRtbnFwT1VXOE9kbHRORT1lInivJMI+AmAFEqwBCAgSpwEKHE1jSFRxcjhhRW1XenZiaXdQL2VQL25LVkNTdz0SJDQ0MjNkNDAyLTVlMDctNGE3Yy1iYmI4LTU5OWVkMjlmODg1MBgAIAAoADDv2YXzwDI4/86E88AyQP/OhPPAMkocVFZneTdIYitrYzdOTjFwaFV2THlkRDZlamxrPVoeIhw0bGxsQS9UeCtVUDFkRGxDM01sWmMrbnpOL0U9ZUPv7BTCPgJgBRKuAQgVEqkBChx2MGhac09nMXhGTWNZeXRWeXdIVjFBZG4wSGs9EiRhMmJiY2ZkZC1kNDIxLTQ2MmYtYjM0My01ZjZlNzNmNmUzZWEYACAAKAAw1KLGi/0yOOCX76S9MkDgl++kvTJKHHhQSWZYR3AwQkh4a2pSeWZIdnBNQzI4QnBDVT1aICIe/+x3b2NOL0MvVWs2SFVQNnhUT3B6U3pqZWZZWkk9ZSJ4ryTCPgJgBRKtAQgTEqgBChxQMFZVeUkyU0VYMFVuNVFEeEU0STVORnpLZjA9EiQxZGFlZDBiYi0wMGZmLTQzNzUtYTFhMy0wZThhNDhiYTYyYjAYACAAKAAw0qLGi/0yOKiY76S9MkComO+kvTJKHGhVK2JqbFU2S21XWURmbVFUWXU4cUhqQVgrQT1aHyId/0Q1eXlXaW5nZ1g4Zm0vRkg4NWxIZjhjZXljbz1lInivJMI+AmAFEq0BCBESqAEKHEQrdDEwRDdmSTdxU3BsM1pLSVczeUxCSWwvMD0SJGFkZjdlYzM5LTZmMWQtNDJkYS1iYzY1LTYwZjJjZjY1YTNlNhgAIAAoADDRosaL/TI4pJrvpL0yQKSa76S9MkocL3k1K3QyQWNKS0tHdU4xMU1sRXNZVk5lOFFrPVofIh3TU0VHZ1ZLSHRyZGNvZUJMM1hpOUl6L29SbHFBPWUieK8kwj4CYAUSrQEIEBKoAQocTGllS1dUSFMrc3o4cEhRc250Rk9UTXcyK0lJPRIkZjM0YjZhNzYtZTRlOS00YmFhLWExODktYmEwZjZlOWY5NWEzGAAgACgAMNWixov9MjiAmO+kvTJAgJjvpL0yShxrOUtNemxqUVRoZmFoRUpzSWNSekdYbjNPUGM9Wh8iHaYzRWJ4UkJWaHplaFQwNU5QMXpsaW04TXdaaVU9ZSJ4ryTCPgJgBRKtAQgUEqgBChx1WjhXRlVPNnZWWG9aM242QXRZckM3cU9RMUk9EiRhOWY2NzZlYy02NDllLTRlMGQtYjJkYy1jMmM4ZTQwMDhlZTcYACAAKAAwiqrdp+4yOP6W76S9MkD+lu+kvTJKHHJFWHBRb0c2alcxbnJjVkFyK2RQV0pqODVLRT1aHyId/2F6K25HRkNleWZGL2U3UVcwYk4zWXhuQW1kVT1lInivJMI+AmAFEqwBCAsSpwEKHEhXNE90NDMwZUZRTThPcnZ1NmpNUGxpSkpwbz0SJDUwMTAxNzdkLTYzZWUtNDJjOC04YWQxLWJkZTdhNzZhMGIxZBgAIAAoADCixPfquTI4wY736rkyQMGO9+q5MkocMWI3RlZKeTNHL0s0ZXdzaDl6MytYd1FyL2xZPVoeIhxqWTVHR1dyMUltM3hxN1BoSnN1M090SW4xdWs9ZYmJuj7CPgJgBRKsAQgPEqcBChwzSlNyclBrM0VGYkpyVkM4SHV4K1BYL2Qrekk9EiQ0NjI5MDc4OC00ZjQwLTQxN2UtODBkMC0wNGE1OTk3YjMzNTYYACAAKAAw+qjjo70yOPSE46O9MkD0hOOjvTJKHGJmbm4xbHpWMFFFNWpROEZiRGMwT0trdHowYz1aHiIcSmo2ZjFENXlqU1cvUVo4OHpTUHVyN0tna1ZjPWUAAAAAwj4CYAASrAEIGBKnAQocbzdnS2hRcVhXb092NkVDblRTam05Yzl3YlFRPRIkY2QwMTg0ZjAtODQxYy00NmExLTljMWYtYTEwNWIyZjBhNjAwGAAgACgAMJLE/qjhMjjMyP6o4TJAzMj+qOEyShxwWVljUTdUQ1RydmxzK0lNQ2NjMEVjN0M5b2M9Wh4iHE5GdU02VDhJaDkvVVN0NkxWNkJZa0tpTlRSTT1l/Sxn88I+AmAFEq0BCA0SqAEKHGpndVpoUFFBdEh5eUlNczVqa1hidkxMZXpSMD0SJDNhYzNiNDU4LTRiYmUtNDI1ZS05NzFhLTE5NmI3NzcyNWYwYxgAIAAoADCF/vnquTI4pcv56rkyQKXL+eq5MkocU2RuV3Jxc2Z1VEd3em90eXorREliTlV4NUJVPVofIh22NWtmZERZV3lMckExek1wZzlzb2RKVi9YV1lVPWWWNj9awj4CYAUSrQEIChKoAQocZ3hwYzhsNnMwcnEzeDB2MmV3OFRKNHVFN3k0PRIkMjQ3MTZkM2MtNDZmYy00MTBmLWI3ZjEtNzBlOGYzZGFjODAxGAAgACgAMOO8rqS8MjiLv66kvDJAi7+upLwyShw5NXpubVY4VXhvcHQzWnA4QXpieW5XbnB0VDQ9Wh8iHTVtL1ZuL21IWUpsL2lmREtzYWxaaTZnQ1VxSjQ9ZQAAAADCPgJgBRKsAQgMEqcBChx6WGxFenBRQXdycDgzWUVNMGpPUTFIL0JPZVE9EiQ5YTk2Zjk0YS1lYzlhLTQ2MmUtOTZhYS04NTUxNzUxOGRjNWEYACAAKAAw67n26rkyOPzS8+q5MkD80vPquTJKHHhpamVqc3JYRkMyYW0wOXlYSWw1Q1A2QVlkND1aHiIcbU9zSHJ2T1lVYjhNQ1NSU3VOZkt0eTA3b1VBPWXb7/Skwj4CYAUSrgEIFxKpAQocUTBYSmlDaDRKVVBCeHpreDMzMEFuMHpXNTc0PRIkMzVmYjQ1YmQtYzBjNS00ZDNhLWJmNzQtNWY3MmEzNzU0OWEzGAAgACgAMNCixov9MjiGm++kvTJAhpvvpL0yShxlQVA1OUgxQzBkbzQ1RDV1Z2tTYTJJaU0zbEE9WiAiHv/9QnE3Tzl6eGVJUDhBdUpYdHlqUWVpQmdYOFU4PWUieK8kwj4CYAUSrQEIDhKoAQocdFNMTGNmU0NyaWdMNUpNRkxYUms0YlVpUm44PRIkMmI5MTViMjctOWQxMi00Mjc4LWExODUtNTZmMTgwOTE1ZTYxGAAgACgAMNO22/K5MjjRuNvyuTJA0bjb8rkyShxvR1Q4bHFUOEhJWjQ3eGJlcnEyeFB1WUw4N1k9Wh8iHdtQOFB6cDBWT2c2SEVDV1NFY1pselorNHdLVWs9ZZ51y7DCPgJgBRKOAQgFEokBChx3UkJyWkwrNlBBOWF2S2dqTlA3SlhETGNmdnM9EiRlNTJjMDUxNS1lZDUyLTU1MjQtYmNjNi03MDJiZDViZmRhMGMYACAAKAAwyN3w5rMzOJrg8OazM0Ca4PDmszNKHG5teDY1c1FEdnhJOFRnRWV2K0ErbnR0b1NuND1aAGUAAAAAwj4CYAASrAEICRKnAQocaklrdWVBYVNwSm5yOVRrR0dPY1pTRmZoM2YwPRIkNjEzZDViYTctYWEyMS00NDk2LWE1ZWEtNzg4Mzk5MTUyYzUyGAAgACgAMO6U8+q5MjicuPHquTJAnLjx6rkyShwrdE44WVNVdUpqNXBLUGJPSDJJcjdUZVJmTU09Wh4iHERCNlpqSmw5NEk3V3p3Vk1hTWVKN2R0a0NCRT1lAAAAAMI+AmAAEq0BCBsSqAEKHDlla28vOXlCUnNQbGVRVEoyVEZLQ0o3UGxCbz0SJDBkYzgwYmE2LTVlOWItNDA1My1iYzYzLTNkYzY0ZGE3YzQ4ZRgAIAAoADCpxaC9tDM40MmgvbQzQNDJoL20M0ocZEJmQWVHSXlqV2dubitERWJTSWRTZDRJVmdNPVofIh3pczBJZjNnYXBmMUFQTVM0cXY1cEFpZlppQ2RrPWWqZAjxwj4CYAUSrQEIEhKoAQocSVFvN3E5UElnUGlPUEh5Y05kMTVNdEh0NlhRPRIkNmRmNWRkMDAtYWM1ZS00MzgyLTgwZGEtZmRjNmFhNDk5NTViGAAgACgAMNaixov9Mji1lu+kvTJAtZbvpL0yShxkbE9EL3M4UkZJUW9qSXdWVE1oMDFkZG5MT0U9Wh8iHf1sZnYzTnpkU0tkV0tKWVF0VlBiS2txS1JOd2s9ZSJ4ryTCPgJgBRKOAQgBEokBChx5eEovNmZ2a2VjcjdrcDVFUXpCNHRXTHBkYkU9EiQ0MmU5ZmRlZi0xODhlLTUwNjUtYjA5ZC1kM2Y2Yzk5ZmVlZTcYACAAKAAwhNT1wf4tOIru1f7sL0CK7tX+7C9KHGFSQ1dMZ2hGOWI1SW5xS0lEdnVKL2p2UWtGYz1aAGUAAAAAwj4CYAASrQEIGRKoAQocSS8vV1pEOHJmbFFQOG04ZGplbUo4M04yQTdZPRIkYWM1MzMxMDctOGQxMi00NTBjLWEzYWUtNzQ3Njk4OWVhMzVhGAAgACgAMPLg8cHVMzjRm8aL/TJA0ZvGi/0yShwwRDJWWUFXcTVoSm9oZE9GZkE4WmxsRXNabDA9Wh8iHacvRUNhWkNzRkR1SnNtSTFRQm9TNmlIRlVlWFU9ZYVn7Q/CPgJgBRKOAQgCEokBChxZY1NUb252RVNQd3FDczRMMmNyVmh2NjhMOTg9EiQ5Y2EzNDVmNi1jNGE4LTU0ZmEtOGQ4NS1lY2Y5ODAwMTM4NTkYACAAKAAwhdT1wf4tOJru1f7sL0Ca7tX+7C9KHG9QVmtod0JSYlY2NUtDV1IyK0lPTkhXb091OD1aAGUAAAAAwj4CYAAwADgA", + "sync_metadata": "CkEKHgiIgQISCCwDZNOfAQAAKg4QABgBIAAoBTAAOABAABIAKhhqUXdZeW92NHBOYUVzNmo4cEpRZlpRPT1IA6AGDBKOAQgCEokBChxZY1NUb252RVNQd3FDczRMMmNyVmh2NjhMOTg9EiQ5Y2EzNDVmNi1jNGE4LTU0ZmEtOGQ4NS1lY2Y5ODAwMTM4NTkYACAAKAAwhdT1wf4tOJru1f7sL0Ca7tX+7C9KHG9QVmtod0JSYlY2NUtDV1IyK0lPTkhXb091OD1aAGUAAAAAwj4CYAASrQEIGhKoAQocVGlxakVVMnFJRy9kRkRVR2Jidk5WOHg3cUFFPRIkN2EzOWVjN2MtMTJiNC00YTJiLTk2NzAtOTUyMTdkZWExYzA1GAAgACgAMIfJ8eazMzjI2PHmszNAyNjx5rMzShxFVlFvUno2TTVZVnJtN04xNzZ1L25uSXFWbFE9Wh8iHdMzVi9OQWtIMTVqeVJwdkNydS9tTlNBaWhTT2M9ZfX+++fCPgJgBRKtAQgZEqgBChxJLy9XWkQ4cmZsUVA4bThkamVtSjgzTjJBN1k9EiRhYzUzMzEwNy04ZDEyLTQ1MGMtYTNhZS03NDc2OTg5ZWEzNWEYACAAKAAw8uDxwdUzONGbxov9MkDRm8aL/TJKHDBEMlZZQVdxNWhKb2hkT0ZmQThabGxFc1psMD1aHyIdpy9FQ2FaQ3NGRHVKc21JMVFCb1M2aUhGVWVYVT1lhWftD8I+AmAFEq0BCAcSqAEKHEtiUGpHOVZXMC9ycjNkS0pZVDNHYVk1ekI0az0SJDFkZjc5YTdkLTBhODctNGE3YS1iMzczLTRhZjZjNjdhZWYxMBgAIAAoADD/xYbzwDI4sdyF88AyQLHchfPAMkocYU9OQ1lyUFBvS2VwTlNtOGRpMmtGRy9qMnZZPVofIh0iTGFvNHpzRThkYjBKR3JnRFpVLzlJMUpCQXdnPWUAAAAAwj4CYAASrgEIFhKpAQoceEdBbDVlNGp0Mk55aGNvT01NenVSalFDOWg0PRIkYTJjOWJjZWYtOTI2My00ZjIxLWJlODgtYTBlYmNlOGJjZDAxGAAgACgAMNOixov9MjiXme+kvTJAl5nvpL0yShxNT2IrOHNVVEszb3J1Q2Yrc2dvVXF2QzVMTkU9WiAiHv/7Vjdma2NPUjljNkppZG1ucXBPVVc4T2RsdE5FPWUieK8kwj4CYAUSrAEICBKnAQocTWNIVHFyOGFFbVd6dmJpd1AvZVAvbktWQ1N3PRIkNDQyM2Q0MDItNWUwNy00YTdjLWJiYjgtNTk5ZWQyOWY4ODUwGAAgACgAMO/ZhfPAMjj/zoTzwDJA/86E88AyShxUVmd5N0hiK2tjN05OMXBoVXZMeWRENmVqbGs9Wh4iHDRsbGxBL1R4K1VQMWREbEMzTWxaYytuek4vRT1lQ+/sFMI+AmAFEq4BCBUSqQEKHHYwaFpzT2cxeEZNY1l5dFZ5d0hWMUFkbjBIaz0SJGEyYmJjZmRkLWQ0MjEtNDYyZi1iMzQzLTVmNmU3M2Y2ZTNlYRgAIAAoADDUosaL/TI44JfvpL0yQOCX76S9MkoceFBJZlhHcDBCSHhralJ5Zkh2cE1DMjhCcENVPVogIh7/7HdvY04vQy9VazZIVVA2eFRPcHpTemplZllaST1lInivJMI+AmAFEq0BCBMSqAEKHFAwVlV5STJTRVgwVW41UUR4RTRJNU5GektmMD0SJDFkYWVkMGJiLTAwZmYtNDM3NS1hMWEzLTBlOGE0OGJhNjJiMBgAIAAoADDSosaL/TI4qJjvpL0yQKiY76S9MkocaFUrYmpsVTZLbVdZRGZtUVRZdThxSGpBWCtBPVofIh3/RDV5eVdpbmdnWDhmbS9GSDg1bEhmOGNleWNvPWUieK8kwj4CYAUSrQEIERKoAQocRCt0MTBEN2ZJN3FTcGwzWktJVzN5TEJJbC8wPRIkYWRmN2VjMzktNmYxZC00MmRhLWJjNjUtNjBmMmNmNjVhM2U2GAAgACgAMNGixov9Mjikmu+kvTJApJrvpL0yShwveTUrdDJBY0pLS0d1TjExTWxFc1lWTmU4UWs9Wh8iHdNTRUdnVktIdHJkY29lQkwzWGk5SXovb1JscUE9ZSJ4ryTCPgJgBRKtAQgQEqgBChxMaWVLV1RIUytzejhwSFFzbnRGT1RNdzIrSUk9EiRmMzRiNmE3Ni1lNGU5LTRiYWEtYTE4OS1iYTBmNmU5Zjk1YTMYACAAKAAw1aLGi/0yOICY76S9MkCAmO+kvTJKHGs5S016bGpRVGhmYWhFSnNJY1J6R1huM09QYz1aHyIdpjNFYnhSQlZoemVoVDA1TlAxemxpbThNd1ppVT1lInivJMI+AmAFEq0BCBQSqAEKHHVaOFdGVU82dlZYb1ozbjZBdFlyQzdxT1ExST0SJGE5ZjY3NmVjLTY0OWUtNGUwZC1iMmRjLWMyYzhlNDAwOGVlNxgAIAAoADCKqt2n7jI4/pbvpL0yQP6W76S9MkocckVYcFFvRzZqVzFucmNWQXIrZFBXSmo4NUtFPVofIh3/YXorbkdGQ2V5ZkYvZTdRVzBiTjNZeG5BbWRVPWUieK8kwj4CYAUSrAEICxKnAQocSFc0T3Q0MzBlRlFNOE9ydnU2ak1QbGlKSnBvPRIkNTAxMDE3N2QtNjNlZS00MmM4LThhZDEtYmRlN2E3NmEwYjFkGAAgACgAMKLE9+q5MjjBjvfquTJAwY736rkyShwxYjdGVkp5M0cvSzRld3NoOXozK1h3UXIvbFk9Wh4iHGpZNUdHV3IxSW0zeHE3UGhKc3UzT3RJbjF1az1liYm6PsI+AmAFEqwBCA8SpwEKHDNKU3JyUGszRUZiSnJWQzhIdXgrUFgvZCt6ST0SJDQ2MjkwNzg4LTRmNDAtNDE3ZS04MGQwLTA0YTU5OTdiMzM1NhgAIAAoADD6qOOjvTI49ITjo70yQPSE46O9MkocYmZubjFselYwUUU1alE4RmJEYzBPS2t0ejBjPVoeIhxKajZmMUQ1eWpTVy9RWjg4elNQdXI3S2drVmM9ZQAAAADCPgJgABKsAQgYEqcBChxvN2dLaFFxWFdvT3Y2RUNuVFNqbTljOXdiUVE9EiRjZDAxODRmMC04NDFjLTQ2YTEtOWMxZi1hMTA1YjJmMGE2MDAYACAAKAAwksT+qOEyOMzI/qjhMkDMyP6o4TJKHHBZWWNRN1RDVHJ2bHMrSU1DY2MwRWM3QzlvYz1aHiIcTkZ1TTZUOEloOS9VU3Q2TFY2QllrS2lOVFJNPWX9LGfzwj4CYAUSrQEIDRKoAQocamd1WmhQUUF0SHl5SU1zNWprWGJ2TExlelIwPRIkM2FjM2I0NTgtNGJiZS00MjVlLTk3MWEtMTk2Yjc3NzI1ZjBjGAAgACgAMIX++eq5Mjily/nquTJApcv56rkyShxTZG5XcnFzZnVUR3d6b3R5eitESWJOVXg1QlU9Wh8iHbY1a2ZkRFlXeUxyQTF6TXBnOXNvZEpWL1hXWVU9ZZY2P1rCPgJgBRKtAQgKEqgBChxneHBjOGw2czBycTN4MHYyZXc4VEo0dUU3eTQ9EiQyNDcxNmQzYy00NmZjLTQxMGYtYjdmMS03MGU4ZjNkYWM4MDEYACAAKAAw47yupLwyOIu/rqS8MkCLv66kvDJKHDk1em5tVjhVeG9wdDNacDhBemJ5blducHRUND1aHyIdNW0vVm4vbUhZSmwvaWZES3NhbFppNmdDVXFKND1lAAAAAMI+AmAFEqwBCAwSpwEKHHpYbEV6cFFBd3JwODNZRU0wak9RMUgvQk9lUT0SJDlhOTZmOTRhLWVjOWEtNDYyZS05NmFhLTg1NTE3NTE4ZGM1YRgAIAAoADDrufbquTI4/NLz6rkyQPzS8+q5MkoceGlqZWpzclhGQzJhbTA5eVhJbDVDUDZBWWQ0PVoeIhxtT3NIcnZPWVViOE1DU1JTdU5mS3R5MDdvVUE9Zdvv9KTCPgJgBRKuAQgXEqkBChxRMFhKaUNoNEpVUEJ4emt4MzMwQW4welc1NzQ9EiQzNWZiNDViZC1jMGM1LTRkM2EtYmY3NC01ZjcyYTM3NTQ5YTMYACAAKAAw0KLGi/0yOIab76S9MkCGm++kvTJKHGVBUDU5SDFDMGRvNDVENXVna1NhMklpTTNsQT1aICIe//1CcTdPOXp4ZUlQOEF1Slh0eWpRZWlCZ1g4VTg9ZSJ4ryTCPgJgBRKtAQgOEqgBChx0U0xMY2ZTQ3JpZ0w1Sk1GTFhSazRiVWlSbjg9EiQyYjkxNWIyNy05ZDEyLTQyNzgtYTE4NS01NmYxODA5MTVlNjEYACAAKAAw07bb8rkyONG42/K5MkDRuNvyuTJKHG9HVDhscVQ4SElaNDd4YmVycTJ4UHVZTDg3WT1aHyId21A4UHpwMFZPZzZIRUNXU0VjWmx6Wis0d0tVaz1lnnXLsMI+AmAFEo4BCAUSiQEKHHdSQnJaTCs2UEE5YXZLZ2pOUDdKWERMY2Z2cz0SJGU1MmMwNTE1LWVkNTItNTUyNC1iY2M2LTcwMmJkNWJmZGEwYxgAIAAoADDI3fDmszM4muDw5rMzQJrg8OazM0ocbm14NjVzUUR2eEk4VGdFZXYrQStudHRvU240PVoAZQAAAADCPgJgABKsAQgJEqcBChxqSWt1ZUFhU3BKbnI5VGtHR09jWlNGZmgzZjA9EiQ2MTNkNWJhNy1hYTIxLTQ0OTYtYTVlYS03ODgzOTkxNTJjNTIYACAAKAAw7pTz6rkyOJy48eq5MkCcuPHquTJKHCt0TjhZU1V1Smo1cEtQYk9IMklyN1RlUmZNTT1aHiIcREI2WmpKbDk0STdXendWTWFNZUo3ZHRrQ0JFPWUAAAAAwj4CYAASrQEIGxKoAQocOWVrby85eUJSc1BsZVFUSjJURktDSjdQbEJvPRIkMGRjODBiYTYtNWU5Yi00MDUzLWJjNjMtM2RjNjRkYTdjNDhlGAAgACgAMKnFoL20MzjQyaC9tDNA0MmgvbQzShxkQmZBZUdJeWpXZ25uK0RFYlNJZFNkNElWZ009Wh8iHelzMElmM2dhcGYxQVBNUzRxdjVwQWlmWmlDZGs9ZapkCPHCPgJgBRKtAQgSEqgBChxJUW83cTlQSWdQaU9QSHljTmQxNU10SHQ2WFE9EiQ2ZGY1ZGQwMC1hYzVlLTQzODItODBkYS1mZGM2YWE0OTk1NWIYACAAKAAw1qLGi/0yOLWW76S9MkC1lu+kvTJKHGRsT0QvczhSRklRb2pJd1ZUTWgwMWRkbkxPRT1aHyId/WxmdjNOemRTS2RXS0pZUXRWUGJLa3FLUk53az1lInivJMI+AmAFEo4BCAESiQEKHHl4Si82ZnZrZWNyN2twNUVRekI0dFdMcGRiRT0SJDQyZTlmZGVmLTE4OGUtNTA2NS1iMDlkLWQzZjZjOTlmZWVlNxgAIAAoADCE1PXB/i04iu7V/uwvQIru1f7sL0ocYVJDV0xnaEY5YjVJbnFLSUR2dUovanZRa0ZjPVoAZQAAAADCPgJgABKOAQgDEokBChxuamdEdTg4ZUNydlhwODZwRDdmSEdjcUZwODg9EiQ4NTVlYjM2NC1lZWFjLTU0YmQtYTQ2Ny1iMDFhOTg5Yzg0M2QYACAAKAAwidT1wf4tOPju1f7sL0D47tX+7C9KHHl6TkIwMWNuNTRBN2NSVTB1VCsvUGdtVHRVbz1aAGUAAAAAwj4CYAAwADgA", "version": 1 } diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/BrowsingTopicsState b/FinlyticApp/.dart_tool/chrome-device/Default/BrowsingTopicsState index b86a881..2b926f5 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/BrowsingTopicsState +++ b/FinlyticApp/.dart_tool/chrome-device/Default/BrowsingTopicsState @@ -6,7 +6,14 @@ "padded_top_topics_start_index": 0, "taxonomy_version": 0, "top_topics_and_observing_domains": [ ] + }, { + "calculation_time": "13430784010401195", + "config_version": 0, + "model_version": "0", + "padded_top_topics_start_index": 0, + "taxonomy_version": 0, + "top_topics_and_observing_domains": [ ] } ], "hex_encoded_hmac_key": "B6F2F708445BA6FD9AE93FC13F58B9FFE00F622BAC8C7EDCF364F58F7F466A75", - "next_scheduled_calculation_time": "13430655456556985" + "next_scheduled_calculation_time": "13431388810401320" } diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/DIPS b/FinlyticApp/.dart_tool/chrome-device/Default/DIPS index b26fcf7..de03174 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/DIPS and b/FinlyticApp/.dart_tool/chrome-device/Default/DIPS differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/LOG index 20c9e50..3a7549a 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/LOG @@ -1,9 +1,13 @@ -2026/08/05-21:31:05.209 6624 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\EdgeCoupons/coupons_data.db/MANIFEST-000001 -2026/08/05-21:31:05.210 6624 Recovering log #13 -2026/08/05-21:31:05.211 6624 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\EdgeCoupons/coupons_data.db/000013.log -2026/08/05-21:31:05.211 6624 Delete type=0 #4 -2026/08/05-21:31:05.212 6624 Delete type=0 #7 -2026/08/05-21:31:05.212 6624 Delete type=0 #10 -2026/08/05-21:31:25.638 2bf0 Level-0 table #17: started -2026/08/05-21:31:25.642 2bf0 Level-0 table #17: 683332 bytes OK -2026/08/05-21:31:25.644 2bf0 Delete type=0 #13 +2026/08/11-23:31:50.206 95c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\EdgeCoupons/coupons_data.db/MANIFEST-000001 +2026/08/11-23:31:50.207 95c Recovering log #23 +2026/08/11-23:31:50.208 95c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\EdgeCoupons/coupons_data.db/000023.log +2026/08/11-23:31:50.209 95c Delete type=0 #4 +2026/08/11-23:31:50.209 95c Delete type=0 #7 +2026/08/11-23:31:50.209 95c Delete type=2 #8 +2026/08/11-23:31:50.209 95c Delete type=0 #10 +2026/08/11-23:31:50.209 95c Delete type=2 #11 +2026/08/11-23:31:50.209 95c Delete type=0 #13 +2026/08/11-23:31:50.209 95c Delete type=2 #14 +2026/08/11-23:31:50.209 95c Delete type=0 #16 +2026/08/11-23:31:50.249 95c Delete type=2 #17 +2026/08/11-23:31:50.250 95c Delete type=0 #19 diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/LOG.old index 78fed09..215acad 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/LOG.old @@ -1,8 +1,15 @@ -2026/08/04-22:51:57.518 4210 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\EdgeCoupons/coupons_data.db/MANIFEST-000001 -2026/08/04-22:51:57.519 4210 Recovering log #10 -2026/08/04-22:51:57.519 4210 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\EdgeCoupons/coupons_data.db/000010.log -2026/08/04-22:51:57.520 4210 Delete type=0 #4 -2026/08/04-22:51:57.520 4210 Delete type=0 #7 -2026/08/04-23:39:18.422 2ad8 Level-0 table #14: started -2026/08/04-23:39:18.425 2ad8 Level-0 table #14: 683332 bytes OK -2026/08/04-23:39:18.428 2ad8 Delete type=0 #10 +2026/08/10-22:38:51.117 7960 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\EdgeCoupons/coupons_data.db/MANIFEST-000001 +2026/08/10-22:38:51.118 7960 Recovering log #19 +2026/08/10-22:38:51.118 7960 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\EdgeCoupons/coupons_data.db/000019.log +2026/08/10-22:38:51.119 7960 Delete type=0 #4 +2026/08/10-22:38:51.119 7960 Delete type=0 #7 +2026/08/10-22:38:51.119 7960 Delete type=2 #8 +2026/08/10-22:38:51.119 7960 Delete type=0 #10 +2026/08/10-22:38:51.119 7960 Delete type=2 #11 +2026/08/10-22:38:51.119 7960 Delete type=0 #13 +2026/08/10-22:38:51.119 7960 Delete type=2 #14 +2026/08/10-22:38:51.122 7960 Delete type=0 #16 +2026/08/10-22:38:51.122 7960 Delete type=2 #17 +2026/08/10-22:43:31.470 4b80 Level-0 table #24: started +2026/08/10-22:43:31.473 4b80 Level-0 table #24: 683332 bytes OK +2026/08/10-22:43:31.476 4b80 Delete type=0 #19 diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/MANIFEST-000001 b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/MANIFEST-000001 index d626daa..b307007 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/MANIFEST-000001 and b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeCoupons/coupons_data.db/MANIFEST-000001 differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeHubAppUsage/EdgeHubAppUsageSQLite.db b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeHubAppUsage/EdgeHubAppUsageSQLite.db index 3b10bfd..d278c75 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeHubAppUsage/EdgeHubAppUsageSQLite.db and b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeHubAppUsage/EdgeHubAppUsageSQLite.db differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeSessions/SessionRestoreLog b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeSessions/SessionRestoreLog index 773fe3e..869e293 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/EdgeSessions/SessionRestoreLog +++ b/FinlyticApp/.dart_tool/chrome-device/Default/EdgeSessions/SessionRestoreLog @@ -35,3 +35,36 @@ {"logTime": "0805/193104", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430089257699509, for SessionType SessionRestore"} {"logTime": "0805/193104", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430050656644037, for SessionType SessionRestore"} {"logTime": "0805/205906", "session": "END"} +{"logTime": "0809/212007", "session": "START"} +{"logTime": "0809/212007", "level": "INFO", "location": "chrome\\browser\\ui\\startup\\startup_browser_creator_impl.cc:353 EdgeLogLastSessionExitTypeOnStartup", "message": "Previous Session Exit Type: PreviousSessionExitType::kNormalBrowserShutDown"} +{"logTime": "0809/212007", "level": "INFO", "location": "chrome\\browser\\ui\\startup\\startup_browser_creator_impl.cc:1431 DetermineURLsAndLaunch", "message": "Startup Preference: 0"} +{"logTime": "0809/212007", "level": "INFO", "location": "chrome\\browser\\ui\\startup\\startup_browser_creator_impl.cc:1433 DetermineURLsAndLaunch", "message": "Browser Open Behavior: 0"} +{"logTime": "0809/212009", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Valid session file found: SessionRestore"} +{"logTime": "0809/212009", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430350314630125, for SessionType SessionRestore"} +{"logTime": "0809/212009", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430261414417274, for SessionType SessionRestore"} +{"logTime": "0809/212009", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430089257699509, for SessionType SessionRestore"} +{"logTime": "0809/212009", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430050656644037, for SessionType SessionRestore"} +{"logTime": "0809/213559", "session": "END"} +{"logTime": "0810/203848", "session": "START"} +{"logTime": "0810/203848", "level": "INFO", "location": "chrome\\browser\\ui\\startup\\startup_browser_creator_impl.cc:353 EdgeLogLastSessionExitTypeOnStartup", "message": "Previous Session Exit Type: PreviousSessionExitType::kNormalBrowserShutDown"} +{"logTime": "0810/203848", "level": "INFO", "location": "chrome\\browser\\ui\\startup\\startup_browser_creator_impl.cc:1431 DetermineURLsAndLaunch", "message": "Startup Preference: 0"} +{"logTime": "0810/203848", "level": "INFO", "location": "chrome\\browser\\ui\\startup\\startup_browser_creator_impl.cc:1433 DetermineURLsAndLaunch", "message": "Browser Open Behavior: 0"} +{"logTime": "0810/203850", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Valid session file found: SessionRestore"} +{"logTime": "0810/203850", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430431864565749, for SessionType SessionRestore"} +{"logTime": "0810/203850", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430350314630125, for SessionType SessionRestore"} +{"logTime": "0810/203850", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430261414417274, for SessionType SessionRestore"} +{"logTime": "0810/203850", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430089257699509, for SessionType SessionRestore"} +{"logTime": "0810/203850", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430050656644037, for SessionType SessionRestore"} +{"logTime": "0810/213623", "session": "END"} +{"logTime": "0811/213145", "session": "START"} +{"logTime": "0811/213145", "level": "INFO", "location": "chrome\\browser\\ui\\startup\\startup_browser_creator_impl.cc:353 EdgeLogLastSessionExitTypeOnStartup", "message": "Previous Session Exit Type: PreviousSessionExitType::kNormalBrowserShutDown"} +{"logTime": "0811/213145", "level": "INFO", "location": "chrome\\browser\\ui\\startup\\startup_browser_creator_impl.cc:1431 DetermineURLsAndLaunch", "message": "Startup Preference: 0"} +{"logTime": "0811/213145", "level": "INFO", "location": "chrome\\browser\\ui\\startup\\startup_browser_creator_impl.cc:1433 DetermineURLsAndLaunch", "message": "Browser Open Behavior: 0"} +{"logTime": "0811/213148", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Valid session file found: SessionRestore"} +{"logTime": "0811/213148", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430784009592248, for SessionType SessionRestore"} +{"logTime": "0811/213148", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430431864565749, for SessionType SessionRestore"} +{"logTime": "0811/213148", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430350314630125, for SessionType SessionRestore"} +{"logTime": "0811/213148", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430261414417274, for SessionType SessionRestore"} +{"logTime": "0811/213148", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430089257699509, for SessionType SessionRestore"} +{"logTime": "0811/213148", "level": "INFO", "location": "components\\sessions\\core\\command_storage_manager.cc:618 operator()", "message": "Delete session file Session_13430050656644037, for SessionType SessionRestore"} +{"logTime": "0811/213341", "session": "END"} diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/EntityExtraction/domains_config.json b/FinlyticApp/.dart_tool/chrome-device/Default/EntityExtraction/domains_config.json index f579c19..82aff1d 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/EntityExtraction/domains_config.json +++ b/FinlyticApp/.dart_tool/chrome-device/Default/EntityExtraction/domains_config.json @@ -1 +1 @@ -{"aee_config":{"ar":{"price_regex":{"ae":"(((ae|aed|\\x{062F}\\x{0660}\\x{0625}\\x{0660}|\\x{062F}\\.\\x{0625}|dhs|dh)\\s*\\d{1,3})|(\\d{1,3}\\s*(ae|aed|\\x{062F}\\x{0660}\\x{0625}\\x{0660}|\\x{062F}\\.\\x{0625}|dhs|dh)))","dz":"(((dzd|da|\\x{062F}\\x{062C})\\s*\\d{1,3})|(\\d{1,3}\\s*(dzd|da|\\x{062F}\\x{062C})))","eg":"(((e\\x{00a3}|egp)\\s*\\d{1,3})|(\\d{1,3}\\s*(e\\x{00a3}|egp)))","ma":"(((mad|dhs|dh)\\s*\\d{1,3})|(\\d{1,3}\\s*(mad|dhs|dh)))","sa":"((\\d{1,3}\\s*(sar\\s*\\x{fdfc}|sar|sr|\\x{fdfc}|\\.\\x{0631}\\.\\x{0633}))|((sar\\s*\\x{fdfc}|sar|sr|\\x{fdfc}|\\.\\x{0631}\\.\\x{0633})\\s*\\d{1,3}))"},"product_terms":"((\\x{0623}\\x{0636}\\x{0641}\\s*\\x{0625}\\x{0644}\\x{0649}\\s*\\x{0627}\\x{0644}\\x{0639}\\x{0631}\\x{0628}\\x{0629})|(\\x{0623}\\x{0636}\\x{0641}\\s*\\x{0625}\\x{0644}\\x{0649}\\s*\\x{0627}\\x{0644}\\x{062D}\\x{0642}\\x{064A}\\x{0628}\\x{0629})|(\\x{0627}\\x{0634}\\x{062A}\\x{0631}\\x{064A}\\s*\\x{0627}\\x{0644}\\x{0622}\\x{0646})|(\\x{062E}\\x{064A}\\x{0627}\\x{0631}\\x{0627}\\x{062A}\\s*\\x{0627}\\x{0644}\\x{062A}\\x{0648}\\x{0635}\\x{064A}\\x{0644})|(\\x{0627}\\x{0644}\\x{062A}\\x{0648}\\x{0635}\\x{064A}\\x{0644}\\s*\\x{0641}\\x{064A}\\s*\\x{0646}\\x{0641}\\x{0633}\\s*\\x{0627}\\x{0644}\\x{064A}\\x{0648}\\x{0645}\\s*\\x{0645}\\x{062A}\\x{0627}\\x{062D}))"},"autofill":{"autofill_onnx_model_config":{"autofill_class_map":{"0":"ACCOUNT_CREATION_PASSWORD","1":"ADDRESS_HOME_CITY","10":"CONFIRMATION_PASSWORD","11":"CREDIT_CARD_EXP_2_DIGIT_YEAR","12":"CREDIT_CARD_EXP_4_DIGIT_YEAR","13":"CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR","14":"CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR","15":"CREDIT_CARD_EXP_MONTH","16":"CREDIT_CARD_NAME_FIRST","17":"CREDIT_CARD_NAME_FULL","18":"CREDIT_CARD_NAME_LAST","19":"CREDIT_CARD_NUMBER","2":"ADDRESS_HOME_COUNTRY","20":"CREDIT_CARD_TYPE","21":"CREDIT_CARD_VERIFICATION_CODE","22":"DATE_OF_BIRTH_DAY","23":"DATE_OF_BIRTH_DD_MM_YYYY_DELIM_SLASH","24":"DATE_OF_BIRTH_DD_MM_YY_DELIM_SLASH","25":"DATE_OF_BIRTH_MM_DD_YYYY_DELIM_SLASH","26":"DATE_OF_BIRTH_MM_DD_YY_DELIM_SLASH","27":"DATE_OF_BIRTH_MONTH","28":"DATE_OF_BIRTH_YEAR","29":"EMAIL_ADDRESS","3":"ADDRESS_HOME_LINE1","30":"MERCHANT_PROMO_CODE","31":"NAME_FIRST","32":"NAME_FULL","33":"NAME_LAST","34":"NAME_MIDDLE","35":"NEW_PASSWORD","36":"PASSWORD","37":"PHONE_FAX_NUMBER","38":"PHONE_HOME_CITY_AND_NUMBER","39":"PHONE_HOME_CITY_CODE","4":"ADDRESS_HOME_LINE2","40":"PHONE_HOME_COUNTRY_CODE","41":"PHONE_HOME_EXTENSION","42":"PHONE_HOME_NUMBER","43":"PHONE_HOME_WHOLE_NUMBER","44":"PRICE","45":"PROBABLY_NEW_PASSWORD","46":"SEARCH_TERM","47":"UNKNOWN_TYPE","48":"USERNAME","5":"ADDRESS_HOME_LINE3","6":"ADDRESS_HOME_STATE","7":"ADDRESS_HOME_STREET_ADDRESS","8":"ADDRESS_HOME_ZIP","9":"COMPANY_NAME"},"autofill_class_num":49,"autofill_field_confidence_bar":{"ACCOUNT_CREATION_PASSWORD":"0.6","ADDRESS_HOME_CITY":"0.9","ADDRESS_HOME_COUNTRY":"0.9","ADDRESS_HOME_LINE1":"0.75","ADDRESS_HOME_LINE2":"0.6","ADDRESS_HOME_LINE3":"0.6","ADDRESS_HOME_STATE":"0.6","ADDRESS_HOME_STREET_ADDRESS":"0.6","ADDRESS_HOME_ZIP":"0.6","COMPANY_NAME":"0.9999","CONFIRMATION_PASSWORD":"0.65","CREDIT_CARD_EXP_2_DIGIT_YEAR":"0.75","CREDIT_CARD_EXP_4_DIGIT_YEAR":"0.75","CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR":"0.75","CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR":"0.75","CREDIT_CARD_EXP_MONTH":"0.75","CREDIT_CARD_NAME_FIRST":"0.75","CREDIT_CARD_NAME_FULL":"0.75","CREDIT_CARD_NAME_LAST":"0.75","CREDIT_CARD_NUMBER":"0.75","CREDIT_CARD_TYPE":"0.75","CREDIT_CARD_VERIFICATION_CODE":"0.7","DATE_OF_BIRTH_DAY":"0.9","DATE_OF_BIRTH_DD_MM_YYYY_DELIM_SLASH":"0.9999","DATE_OF_BIRTH_DD_MM_YY_DELIM_SLASH":"0.9999","DATE_OF_BIRTH_MM_DD_YYYY_DELIM_SLASH":"0.9999","DATE_OF_BIRTH_MM_DD_YY_DELIM_SLASH":"0.9999","DATE_OF_BIRTH_MONTH":"0.9","DATE_OF_BIRTH_YEAR":"0.9","EMAIL_ADDRESS":"0.6","MERCHANT_PROMO_CODE":"0.6","NAME_FIRST":"0.6","NAME_FULL":"0.9","NAME_LAST":"0.6","NAME_MIDDLE":"0.6","NEW_PASSWORD":"0.65","PASSWORD":"0.6","PHONE_FAX_NUMBER":"0.9","PHONE_HOME_CITY_AND_NUMBER":"0.9","PHONE_HOME_CITY_CODE":"0.9","PHONE_HOME_COUNTRY_CODE":"0.9","PHONE_HOME_EXTENSION":"0.9","PHONE_HOME_NUMBER":"0.9","PHONE_HOME_WHOLE_NUMBER":"0.9","PRICE":"0.6","PROBABLY_NEW_PASSWORD":"0.6","SEARCH_TERM":"0.6","UNKNOWN_TYPE":"0.6","USERNAME":"0.65"},"autofill_language_confidence_bar":{"default":0.8,"en":0.85},"autofill_max_sequence_length":384,"autofill_sliding_window":256},"model_descriptors":[{"allow_basic_extraction":false,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"picl","entity_type":"AutofillFull","extraction_scenario":"kProactive","extractor_model_major_version":"1","extractor_model_name":"autofillFull.en-us","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":false,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"picl","entity_type":"AutofillName","extraction_scenario":"kProactive","extractor_model_major_version":"2","extractor_model_name":"autofillName.en-us","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.en","page_locale":"","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.ar","page_locale":"ar","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.cs","page_locale":"cs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.de","page_locale":"de","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.en","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.es","page_locale":"es","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.fr","page_locale":"fr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.id","page_locale":"id","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.it","page_locale":"it","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.ja","page_locale":"ja","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.ko","page_locale":"ko","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.nl","page_locale":"nl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.pl","page_locale":"pl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.pt","page_locale":"pt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.ru","page_locale":"ru","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.sv","page_locale":"sv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.tr","page_locale":"tr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.vi","page_locale":"vi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.zh","page_locale":"zh","platform":"desktop"}]},"bg":{"price_regex":{"bg":"((\\d{1,3}\\s*(bgn|\\x{043B}\\x{0432}|\\x{043B}\\x{0432}\\.))|((bgn|\\x{043B}\\x{0432}|\\x{043B}\\x{0432}\\.)\\s*\\d{1,3}))"},"product_terms":"((\\x{0414}\\x{043E}\\x{0431}\\x{0430}\\x{0432}\\x{0438}\\s*\\x{0432}\\s*\\x{043A}\\x{043E}\\x{0448}\\x{043D}\\x{0438}\\x{0446}\\x{0430}\\x{0442}\\x{0430})|(\\x{0414}\\x{043E}\\x{0431}\\x{0430}\\x{0432}\\x{0438}\\s*\\x{0432}\\s*\\x{043A}\\x{043E}\\x{043B}\\x{0438}\\x{0447}\\x{043A}\\x{0430}\\x{0442}\\x{0430})|(\\x{0414}\\x{0440}\\x{0443}\\x{0433}\\x{0438}\\s*\\x{043E}\\x{0444}\\x{0435}\\x{0440}\\x{0442}\\x{0438})|(\\x{041F}\\x{043E}\\x{0434}\\x{043E}\\x{0431}\\x{043D}\\x{0438}\\s*\\x{043F}\\x{0440}\\x{043E}\\x{0434}\\x{0443}\\x{043A}\\x{0442}\\x{0438})|(\\x{0412}\\s*\\x{043D}\\x{0430}\\x{043B}\\x{0438}\\x{0447}\\x{043D}\\x{043E}\\x{0441}\\x{0442})|(\\x{041E}\\x{043F}\\x{0438}\\x{0441}\\x{0430}\\x{043D}\\x{0438}\\x{0435}\\s*\\x{043D}\\x{0430}\\s*\\x{043F}\\x{0440}\\x{043E}\\x{0434}\\x{0443}\\x{043A}\\x{0442}\\x{0430}))"},"bs":{"price_regex":{"ba":"((\\d{1,3}\\s*(bam|km|,-\\s*km))|((bam|km|,-\\s*km)\\s*\\d{1,3}))"},"product_terms":"((dodajte\\s*u\\s*korpu)|(dodaj\\s*u\\s*korpu)|(u\\s*ko\\x{0161}aricu)|(sli\\x{010D}nim\\s*proizvodima)|(opcije\\s*dostave)|(u\\s*prodavnici))"},"character_cutoff":400,"cs":{"price_regex":{"cz":"((\\d{1,3}\\s*(czk|k\\x{010D}))|((czk|k\\x{010D})\\s*\\d{1,3}))"},"product_terms":"((p\\x{0159}idat\\s*do\\s*n\\x{00E1}kupn\\x{00ED}ho\\s*ko\\x{0161}\\x{00ED}ku)|(do\\s*ko\\x{0161}\\x{00ED}ku)|(koupit)|(detaily\\s*o\\s*v\\x{00FD}robku)|(skladem)|(doprava\\s*zdarma))"},"currency_symbol_regex_map":{"AED":"\\x{0625}|\\x{062F}\\x{002E}\\x{0625}|\\x{062f}\\x{0631}\\x{0647}\\x{0645}","AFN":"\\x{060b}","AMD":"\\x{0534}|\\x{058F}","AWG":"\\x{0192}","AZN":"\\x{043C}\\x{0430}\\x{043D}","BDT":"\\x{09F3}","BGN":"\\x{043B}\\x{0432}","BHD":"\\x{0628}\\x{002E}\\x{062F}","DZD":"\\x{062f}\\x{064a}\\x{0646}\\x{0627}\\x{0631}","EGP":"\\x{062c}\\x{0646}\\x{064a}\\x{0647}","IQD":"\\x{0639}\\x{002E}\\x{062F}|\\x{062f}\\x{002E}\\x{0639}","JOD":"\\x{062F}\\x{002E}\\x{0627}","KHR":"\\x{17DB}","KRW":"\\x{ffe6}","KWD":"\\x{062F}\\x{002E}\\x{0643}|\\x{062f}\\x{064a}\\x{0646}\\x{0627}\\x{0631}\\s*\\x{0643}\\x{0648}\\x{064a}\\x{062a}\\x{064a}","KZT":"\\x{3012}","LBP":"\\x{0644}\\x{002E}\\x{0644}\\x{002E}?","MAD":"\\x{062F}\\x{002E}\\x{0645}\\x{002E}","MVR":"\\x{0783}\\x{002E}","OMR":"\\x{0631}\\x{002E}\\x{0639}\\x{002E}|\\x{0631}\\x{064a}\\x{0627}\\x{0644}","PLN":"z\\x{0142}","QAR":"\\x{0631}\\x{002E}\\x{0642}","RUB":"\\x{0440}\\x{0443}\\x{0431}","SAR":"\\x{0631}\\x{002E}\\x{0633}|\\x{0631}\\x{0633}|\\x{fdfc}","SYP":"\\x{0644}\\x{002E}\\x{0633}","THB":"\\x{0e1a}\\x{0e32}\\x{0e17}|\\x{0e3f}","TOP":"\\x{062F}\\x{002E}\\x{062A}","WON":"\\x{C6D0}","YEN":"\\x{5186}","YER":"\\x{0631}\\x{002E}\\x{064a}"},"da":{"price_regex":{"dk":"((\\d{1,3}\\s*(dkk|kr|,-))|((dkk|kr|,-)\\s*\\d{1,3}))"},"product_terms":"((l\\x{00E6}g\\s*i\\s*indk\\x{00F8}bskurv)|(lignende\\s*produkter)|(produktinformation)|(gratis\\s*levering)|(l\\x{00E6}g\\s*i\\s*kurv)|(tilf\\x{00F8}j\\s*til\\s*kurv)|(l\\x{00E6}g\\s*i\\s*indk\\x{00F8}bskurv)|(s\\x{00E6}lg\\s*tilbage)|(lignende\\s*produkter)|(hurtigere\\s*levering)|(levering)|(v\\x{00E6}lg\\s*varehus)|(k\\x{00F8}b)|(p\\x{00E5}\\s*lager)|(fri\\s*levering)|(fri\\s*fragt)|(returnering)|(\\d+\\s*anmeldelser))"},"de":{"price_regex":{"at":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","ch":"((\\d{1,3}\\s*(sfr\\.|fr\\.|chf|\\x{20a3}))|((sfr\\.|fr\\.|chf|\\x{20a3})\\s*\\d{1,3}))","de":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","li":"((\\d{1,3}\\s*(chf|\\x{20a3}))|((chf|\\x{20a3})\\s*\\d{1,3}))","lu":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((in\\s*den\\s*warenkorb)|(in\\s*den\\s*kaufswagen\\s*hinzufügen)|(in\\s*den\\s*einkaufswagen\\s*hinzufügen)|(zum\\s*tasche\\s*hinzufügen)|(kauft\\s*es\\s*jetzt)|(jetzt\\s*kaufen)|(kostenlose\\s*lieferung)|(gratisversand)|(voraussichtliche\\s*lieferung)|(vergriffen)|(auf\\s*lager)|(ausverkauft)|(auf\\s*die\\s*liste)|((schnellster|express|lkw|für|zu hause)|(standard\\s*versand)|(versand\\s*es)|(finden sie\\s*in\\s*einemanderen\\s*geschäft)|(( bordsteinkante | abholung|im)\\s*laden)|((abholung|am)\\s*straßenrand)|(auf\\s*die\\s*(liste| wunchzettel | registrierung))|(nur\\s*\\d{1,3}\\s*noch)|(produkt\\s*(informationen|details| übersicht | spezifikationen))|(abholung\\s*vor\\s*ort)|(spezielle \\s* angebote)|(versand\\s* verfügbarkeit)|(größentabelle)|(über\\s*produkt)|(könnten\\s*ihnen\\s*auch\\s*gefallen)|(im\\s*geschäft\\s*finden)|(auch\\s* verfügbar)|(auf\\s*lager)|(über \\s*diese\\s*produkt)|(verfügbarkeit\\s*prüfen)|(fahrzeugdaten)|(fahrzeugeigenschaften)|(kontakt \\s*händler)|(verfügbarkeit\\s*bestätigen)|(fahrzeuginformationen)))"},"default_locale_map":{"bg":"bg-bg","bs":"bs-ba","cs":"cs-cz","da":"da-dk","de":"de-de","el":"el-gr","en":"en-us","es":"es-mx","et":"et-ee","fa":"fa-ir","fi":"fi-fi","fr":"fr-fr","he":"he-il","hr":"hr-hr","hu":"hu-hu","id":"id-id","is":"is-is","it":"it-it","ja":"ja-jp","ko":"ko-kr","lt":"lt-lt","lv":"lv-lv","mk":"mk-mk","nb":"nb-no","nl":"nl-nl","no":"no-no","pl":"pl-pl","pt":"pt-pt","ro":"ro-ro","ru":"ru-ru","sk":"sk-sk","sl":"sl-si","sr":"sr-rs","sv":"sv-se","th":"th-th","tr":"tr-tr","ua":"ua-ua","vi":"vi-vn","zh":"zh-cn"},"domain_page_locales":{"ajio.com":"en-in","asda.com":"en-gb","bigbasket.com":"en-in","blakelyclothing.com":"en-gb","boat-lifestyle.com":"en-in","dangdang.com":"zh-cn","discogs.com":"en-gb","diy.com":"en-gb","elpalaciodehierro.com":"es-mx","elsotano.com":"es-mx","enviaflores.com":"es-mx","fabindia.com":"en-in","fahorro.com":"es-mx","firstcry.com":"en-in","flipkart.com":"en-in","fnp.com":"en-in","grandandtoy.com":"en-ca","innovasport.com":"es-mx","intercompras.com":"es-mx","jianke.com":"zh-cn","kaola.com.hk":"zh-cn","kongfz.com":"zh-cn","mairuan.com":"zh-cn","marks.com":"en-ca","modicare.com":"en-in","moglix.com":"en-in","myntra.com":"en-in","netmeds.com":"en-in","nordstrom.com":"en-us","nordstromrack.com":"en-us","pcel.com":"es-mx","primor.eu":"es-es","princessauto.com":"en-ca","prohockeylife.com":"en-ca","rappi.com.mx":"es-mx","reitmans.com":"en-ca","sanborns.com.mx":"es-mx","sastasundar.com":"en-in","screwfix.com":"en-gb","shopclues.com":"en-in","shopperstop.com":"en-in","snapdeal.com":"en-in","soriana.com":"es-mx","suning.com":"zh-cn","superdrug.com":"en-gb","tatacliq.com":"en-in","tesco.com":"en-gb","tiendapanini.com.mx":"es-mx","todocoleccion.net":"es-es","waitrose.com":"en-gb","waitrosecellar.com":"en-gb"},"ee_timeout_threshold_seconds":5,"el":{"price_regex":{"cy":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gr":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((\\x{03A0}\\x{03C1}\\x{03BF}\\x{03C3}\\x{03B8}\\x{03AE}\\x{03BA}\\x{03B7})|(\\x{0391}\\x{03A0}\\x{039F}\\x{03A3}\\x{03A4}\\x{039F}\\x{039B}\\x{0397}\\s*\\x{039A}\\x{0391}\\x{0399}\\s*\\x{03A0}\\x{039B}\\x{0397}\\x{03A1}\\x{03A9}\\x{039C}\\x{0397})|(\\x{0394}\\x{0399}\\x{0391}\\x{0398}\\x{0395}\\x{03A3}\\x{0399}\\x{039C}\\x{039F}\\x{03A4}\\x{0397}\\x{03A4}\\x{0391}\\s*\\x{039A}\\x{0391}\\x{03A4}\\x{0391}\\x{03A3}\\x{03A4}\\x{0397}\\x{039C}\\x{0391}\\x{03A4}\\x{039F}\\x{03A3}))"},"en":{"price_regex":{"ae":"(((ae|aed|\\x{062F}\\x{0660}\\x{0625}\\x{0660})\\s*\\d{1,3})|(\\d{1,3}\\s*(ae|aed|\\x{062F}\\x{0660}\\x{0625}\\x{0660})))","am":"(((\\x{058F}|amd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{058F}|amd)))","au":"(((\\$|au|aud)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|au|aud)))","aw":"(((awg|\\x{0192})\\s*\\d{1,3})|(\\d{1,3}\\s*(awg|\\x{0192})))","az":"(((\\x{20BC}|azn|m)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{20BC}|azn|m)))","bd":"(((bdt\\s*\\x{09f3}|bdt|\\x{09f3})\\s*\\d{1,3})|(\\d{1,3}\\s*(bdt\\s*\\x{09f3}|bdt|\\x{09f3})))","bn":"(((bnd|b\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(bnd|b\\$)))","bs":"(((\\$|b\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|b\\$)))","bz":"(((bzd\\$|bzd|bz\\$|bz|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(bzd\\$|bzd|bz\\$|bz|\\$)))","ca":"(((\\$|cdn|(c\\s*\\$))\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|cdn|(c\\s*\\$)))","cy":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","cz":"((\\d{1,3}\\s*(czk|k\\x{010D}))|((czk|k\\x{010D})\\s*\\d{1,3}))","de":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","dk":"((\\d{1,3}\\s*(dkk|kr|,-))|((dkk|kr|,-)\\s*\\d{1,3}))","dm":"(((xcd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(xcd|\\$)))","dz":"(((dzd|da|\\x{062F}\\x{062C})\\s*\\d{1,3})|(\\d{1,3}\\s*(dzd|da|\\x{062F}\\x{062C})))","eg":"(((e\\x{00a3}|egp)\\s*\\d{1,3})|(\\d{1,3}\\s*(e\\x{00a3}|egp)))","et":"(((br|etb)\\s*\\d{1,3})|(\\d{1,3}\\s*(br|etb)))","fi":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gb":"(((\\x{00a3}|gbp)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{00a3}|gbp)))","ge":"(((\\x{10DA}|gel)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{10DA}|gel)))","gh":"((\\d{1,3}\\s*(ghs|gh\\x{00A2}|gh\\x{20B5}|\\x{20B5}|\\x{00A2}))|((ghs|gh\\x{00A2}|gh\\x{20B5}|\\x{20B5}|\\x{00A2})\\s*\\d{1,3}))","gm":"(((gmd|d)\\s*\\d{1,3})|(\\d{1,3}\\s*(gmd|d)))","gr":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gu":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","gy":"(((\\$|gy|gyd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|gy|gyd)))","hk":"((\\d{1,3}\\s*(\\$|\\x{5143}))|((\\x{ffe5}|\\x{00a5}|hkd|\\$)\\s*\\d{1,3}))","hu":"(((ft|huf)\\s*\\d{1,3})|(\\d{1,3}\\s*(ft|huf)))","id":"(((rp|ind)\\s*\\d{1,3})|(\\d{1,3}\\s*(rp|ind)))","ie":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","il":"((\\d{1,3}\\s*(ils|\\x{20AA}))|((ils|\\x{20AA})\\s*\\d{1,3}))","in":"(((\\x{20B9}|rs|rs\\.)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{20B9}|rs|rs\\.)))","jm":"(((jmd\\s*\\$|jmd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(jmd\\s*\\$|jmd|\\$)))","ke":"(((kes|ksh|k)\\s*\\d{1,3})|(\\d{1,3}\\s*(kes|ksh|k)))","kg":"(((kgs|\\x{041B}\\x{0432})\\s*\\d{1,3})|(\\d{1,3}\\s*(kgs|\\x{041B}\\x{0432})))","ky":"(((\\$|ky|kyd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|ky|kyd)))","lb":"((\\d{1,3}\\s*(lbp\\s*\\x{00a3}|lbp|\\x{00a3}\\s*l|\\x{00a3}))|((lbp\\s*\\x{00a3}|lbp|\\x{00a3}\\s*l|\\x{00a3})\\s*\\d{1,3}))","lk":"(((lkr|rs\\/.|rs|\\x{0BB0}\\x{0BC2}|\\x{0DBB}\\x{0DD4})\\s*\\d{1,3})|(\\d{1,3}\\s*(lkr|rs\\/.|rs|\\x{0BB0}\\x{0BC2}|\\x{0DBB}\\x{0DD4})))","ls":"(((lsl|m)\\s*\\d{1,3})|(\\d{1,3}\\s*(lsl|m)))","ly":"(((lyd|\\x{0644}\\x{002E}\\x{062F}|ld)\\s*\\d{1,3})|(\\d{1,3}\\s*(lyd|\\x{0644}\\x{002E}\\x{062F}|ld)))","ma":"(((mad|dhs|dh)\\s*\\d{1,3})|(\\d{1,3}\\s*(mad|dhs|dh)))","md":"(((mdl\\s*l|mdl|lei|l)\\s*\\d{1,3})|(\\d{1,3}\\s*(mdl\\s*l|mdl|lei|l)))","mn":"(((mnt|\\x{20AE})\\s*\\d{1,3})|(\\d{1,3}\\s*(mnt|\\x{20AE})))","mt":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","mv":"(((mvr|mrf|rf)\\s*\\d{1,3})|(\\d{1,3}\\s*(mvr|mrf|rf)))","my":"(((rm|myr)\\s*\\d{1,3})|(\\d{1,3}\\s*(rm|myr)))","ng":"(((ngn|ng|\\x{20a6})\\s*\\d{1,3})|(\\d{1,3}\\s*(ngn|ng|\\x{20a6})))","np":"(((npr\\s*rs|npr|rs\\/.|re\\/.|rs|re)\\s*\\d{1,3})|(\\d{1,3}\\s*(npr\\s*rs|npr|rs\\/.|re\\/.|rs|re)))","nz":"(((nz\\$|nzd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(nz\\$|nzd|\\$)))","pg":"(((pgk|k)\\s*\\d{1,3})|(\\d{1,3}\\s*(pgk|k)))","ph":"((\\d{1,3}\\s*(\\x{20b1}|php))|((\\x{20b1}|php)\\s*\\d{1,3}))","pk":"(((rs|pk|pkr)\\s*\\d{1,3})|(\\d{1,3}\\s*(rs|pk|pkr)))","pr":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","sa":"((\\d{1,3}\\s*(sar\\s*\\x{fdfc}|sar|sr|\\x{fdfc}|\\.\\x{0631}\\.\\x{0633}))|((sar\\s*\\x{fdfc}|sar|sr|\\x{fdfc}|\\.\\x{0631}\\.\\x{0633})\\s*\\d{1,3}))","sg":"(((s\\$|sgd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(s\\$|sgd|\\$)))","sk":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","th":"(((thb|\\x{0e3f})\\s*\\d{1,3})|(\\d{1,3}\\s*(thb|\\x{0e3f})))","tj":"(((tjs|\\x{0405}\\x{041C})\\s*\\d{1,3})|(\\d{1,3}\\s*(tjs|\\x{0405}\\x{041C})))","tt":"(((\\$|ttd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|ttd)))","us":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","vn":"(((vnd|\\x{20ab})\\s*\\d{1,3})|(\\d{1,3}\\s*(vnd|\\x{20ab})))","za":"(((r|zar)\\s*\\d{1,3})|(\\d{1,3}\\s*(r|zar)))"},"product_terms":"((add\\s*to\\s*cart)|(add\\s*to\\s*basket)|(add\\s*to\\s*bag))"},"equivalent_locale_map":{"-tw":"zh-tw","en-gb-au":"en-au","en-gb-ca":"en-ca","en-gb-gb":"en-gb","en-gb-in":"en-in","us-en":"en-us","zh-hans-cn":"zh-cn","zh-hant":"zh-tw"},"es":{"price_regex":{"ar":"(((\\$|ars)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|ars)))","bo":"(((\\$b|bob|bs)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$b|bob|bs)))","cl":"(((cl\\$|clp|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(cl\\$|clp|\\$)))","co":"(((\\$|cop)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|cop)))","cr":"(((\\x{20a1}|crc)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{20a1}|crc)))","do":"(((\\$|dop)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|dop)))","ec":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","es":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gt":"(((q|gt)\\s*\\d{1,3})|(\\d{1,3}\\s*(q|gt)))","hn":"(((l|hn)\\s*\\d{1,3})|(\\d{1,3}\\s*(l|hn)))","mx":"((\\d{1,3}\\s*(\\x{0024}\\s*mxn|\\x{0024}|mxn|mex\\s*\\x{0024}))|((\\x{0024}\\s*mxn|\\x{0024}|mxn|mex\\s*\\x{0024})\\s*\\d{1,3}))","ni":"((\\d{1,3}\\s*(nio|c\\$))|((nio|c\\$)\\s*\\d{1,3}))","pa":"(((pab|b\\/.)\\s*\\d{1,3})|(\\d{1,3}\\s*(pab|b\\/.)))","pe":"(((s\\/|sol|pen)\\s*\\d{1,3})|(\\d{1,3}\\s*(s\\/|sol|pen)))","pr":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","py":"(((pyg|gs)\\s*\\d{1,3})|(\\d{1,3}\\s*(pyg|gs)))","sv":"((\\d{1,3}\\s*(svc|\\x{20a1}|\\$))|((svc|\\x{20a1}|\\$)\\s*\\d{1,3}))","us":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","uy":"(((uyu|\\$u)\\s*\\d{1,3})|(\\d{1,3}\\s*(uyu|\\$u)))","ve":"(((bs\\s*f|bs\\.\\s*f|bs\\.|vef|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(bs\\s*f|bs\\.\\s*f|bs\\.|vef|\\$)))"},"product_terms":"((\\x{00a1}c\\x{00f3}mpralo\\s*ya!)|(a\\x{00f1}adir\\s*al\\s*carro)|(a\\x{00f1}adido\\s*a\\s*su\\s*lista\\s*de\\s*deseos)|(a\\x{00f1}adir\\s*a\\s*favoritos)|(a\\x{00f1}adir\\s*a\\s*la\\s*bolsa)|(a\\x{00f1}adir\\s*a\\s*la\\s*cesta)|(a\\x{00f1}adir\\s*a\\s*la\\s*lista\\s*de\\s*deseos)|(a\\x{00f1}adir\\s*a\\s*mi\\s*bolsa)|(a\\x{00f1}adir\\s*a\\s*mi\\s*cesta)|(a\\x{00f1}adir\\s*a\\s*mi\\s*lista\\s*de\\s*deseos)|(a\\x{00f1}adir\\s*al\\s*carrito)|(buscar\\s*tienda)|(comprar\\s*en\\s*un\\s*clic)|(comprar\\s*ya)|(comprobar\\s*disponibilidad\\s*en\\s*tienda)|(consultar\\s*disponibilidad\\s*en\\s*tienda)|(descripci\\x{00f3}n\\s*del\\s*producto)|(detalles\\s*del\\s*producto)|(env\\x{00ed}o\\s*gratuito)|(evaluaciones\\s*de\\s*clientes)|(informaci\\x{00f3}n\\s*de\\s*producto)|(informaci\\x{00f3}n\\s*del\\s*producto)|(ir\\s*al\\s*carro)|(ir\\s*al\\s*chollo)|(nuestros\\s*clientes\\s*tambi\\x{00e9}n\\s*vieron)|(opiniones\\s*de\\s*los\\s*usuarios)|(productos\\s*relacionados)|(productos\\s*relacionados)|(productos\\s*similares)|(puja\\s*actual)|(recoger\\s*en\\s*tienda)|(sin\\s*existencias)|(valora\\s*este\\s*producto)|(valoraciones\\s*de\\s*clientes)|(comprar\\s*ahora))"},"et":{"price_regex":{"ee":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((lisa\\s*korvi)|(osta)|(tarne\\s*v\\x{00F5}imalused)|(tootekirjeldus)|(sarnased\\s*tooted))"},"fa":{"price_regex":{"ir":"((\\d{1,3}\\s*(irr|\\x{FDFC}|\\x{0631}\\x{06CC}\\x{0627}\\x{0644}|\\x{062A}\\x{0648}\\x{0645}\\x{0627}\\x{0646}))|((irr|\\x{FDFC}|\\x{0631}\\x{06CC}\\x{0627}\\x{0644}|\\x{062A}\\x{0648}\\x{0645}\\x{0627}\\x{0646})\\s*\\d{1,3}))"},"product_terms":"((\\x{0627}\\x{0641}\\x{0632}\\x{0648}\\x{062F}\\x{0646}\\s*\\x{0628}\\x{0647}\\s*\\x{0633}\\x{0628}\\x{062F})|(\\x{0627}\\x{0631}\\x{0633}\\x{0627}\\x{0644}\\s*\\x{0631}\\x{0627}\\x{06CC}\\x{06AF}\\x{0627}\\x{0646})|(\\x{062E}\\x{0631}\\x{06CC}\\x{062F}\\s*\\x{0627}\\x{06CC}\\x{0646}\\x{062A}\\x{0631}\\x{0646}\\x{062A}\\x{06CC})|(\\x{062A}\\x{063A}\\x{06CC}\\x{06CC}\\x{0631}\\x{0627}\\x{062A}\\s*\\x{0642}\\x{06CC}\\x{0645}\\x{062A})|(\\x{0645}\\x{062D}\\x{0635}\\x{0648}\\x{0644}\\x{0627}\\x{062A}\\s*\\x{0645}\\x{0634}\\x{0627}\\x{0628}\\x{0647}))"},"fi":{"price_regex":{"fi":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((lis\\x{00E4}\\x{00E4}\\s*ostoskoriin)|(myym\\x{00E4}l\\x{00E4}saatavuus)|(toimituskulut)|(tilaa\\s*netist\\x{00E4})|(nouda\\s*myym\\x{00E4}l\\x{00E4}st\\x{00E4}))"},"fr":{"price_regex":{"be":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","ca":"(((\\$|cdn|(c\\s*\\$))\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|cdn|(c\\s*\\$)))","cd":"(((cdf|fc|\\x{20A3})\\s*\\d{1,3})|(\\d{1,3}\\s*(cdf|fc|\\x{20A3})))","ch":"((\\d{1,3}\\s*(sfr\\.|fr\\.|chf|\\x{20a3}))|((sfr\\.|fr\\.|chf|\\x{20a3})\\s*\\d{1,3}))","dz":"(((dzd|da|\\x{062F}\\x{062C})\\s*\\d{1,3})|(\\d{1,3}\\s*(dzd|da|\\x{062F}\\x{062C})))","fr":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gf":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gh":"((\\d{1,3}\\s*(ghs|gh\\x{00A2}|gh\\x{20B5}|\\x{20B5}|\\x{00A2}))|((ghs|gh\\x{00A2}|gh\\x{20B5}|\\x{20B5}|\\x{00A2})\\s*\\d{1,3}))","gn":"(((gnf|fg|fr|gfr|\\x{20A3})\\s*\\d{1,3})|(\\d{1,3}\\s*(gnf|fg|fr|gfr|\\x{20A3})))","ht":"((\\d{1,3}\\s*(htg|g))|((htg|g)\\s*\\d{1,3}))","lb":"((\\d{1,3}\\s*(lbp\\s*\\x{00a3}|lbp|\\x{00a3}\\s*l|\\x{00a3}))|((lbp\\s*\\x{00a3}|lbp|\\x{00a3}\\s*l|\\x{00a3})\\s*\\d{1,3}))","li":"((\\d{1,3}\\s*(chf|\\x{20a3}))|((chf|\\x{20a3})\\s*\\d{1,3}))","lu":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","ma":"(((mad|dhs|dh)\\s*\\d{1,3})|(\\d{1,3}\\s*(mad|dhs|dh)))","mc":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","mq":"(((mga|ar)\\s*\\d{1,3})|(\\d{1,3}\\s*(mga|ar)))","mr":"(((mru|um)\\s*\\d{1,3})|(\\d{1,3}\\s*(mru|um)))","nc":"(((xpf|\\x{20A3}|f)\\s*\\d{1,3})|(\\d{1,3}\\s*(xpf|\\x{20A3}|f)))","pf":"(((xpf|\\x{20A3}|f)\\s*\\d{1,3})|(\\d{1,3}\\s*(xpf|\\x{20A3}|f)))","re":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((ajouter\\s*au\\s*panier)|(ajoutez\\s*au\\s*panier)|(ajoutez\\s*au\\s*sac)|(achetez\\s*le\\s*maintenant)|(achetez\\s*maintenant)|(livraison\\s*gratuite)|(expédition\\s*gratuite)|(livraison\\s*estimée)|(produit\\s*épuisé)|(en\\s*stock)|(épuisé)|(ajoutez\\s*à\\s*la\\s*wish\\s*list)|(livraison\\s*standard)|(livrez\\s*le)|(trouvez\\s*en\\s*un\\s*autre\\s*boutique)|((ramassage\\s*en\\s*bordure\\s*de\\s*rue)\\s*pour|magasin)|((cueillette\\s*en\\s*bordure\\s*de\\s*rue)\\s*en\\s*boutique)|(ajoutez\\s*à\\s*votre\\s*(liste|votre\\s*wishlist|votre\\s*registre))|((information\\s*de\\s*produit)|(détails\\s*de\\s*Produit)|(aperçu\\s*de\\s*produit)|(spécifications\\s*de\\s*produit))|(cueillette\\s*à\\s*boutique)|(offres\\s*spéciales\\s*disponible)|(accessible\\s*à\\s*livrer)|(guides\\s*des\\s*tailles)|(description\\s*produit)|(vous\\s*pourriez\\s*aussi\\s*aimer)|(trouvez\\s*en\\s*boutique)|(aussi\\s*disponible)|(en\\s*magasin)|(a\\s*propos\\s*de\\s*ce\\s*produit)|(vérifiez\\s*disponibilité)|(détails\\s*de\\s*véhicule)|(caractéristiques\\s*de\\s*véhicule)|(contactez\\s*marchand)|(affirmez\\s*disponibilité)|(information\\s*de\\s*véhicule))"},"he":{"price_regex":{"il":"((\\d{1,3}\\s*(ils|\\x{20AA}))|((ils|\\x{20AA})\\s*\\d{1,3}))"},"product_terms":"((\\x{05D4}\\x{05D5}\\x{05E1}\\x{05D9}\\x{05E4}\\x{05D5}\\s*\\x{05DC}\\x{05E2}\\x{05D2}\\x{05DC}\\x{05D4})|(\\x{05E7}\\x{05E0}\\x{05D5}\\s*\\x{05E2}\\x{05DB}\\x{05E9}\\x{05D9}\\x{05D5}))"},"hr":{"price_regex":{"hr":"((\\d{1,3}\\s*(hrk|kn))|((hrk|kn)\\s*\\d{1,3}))"},"product_terms":"((dodaj\\s*u\\s*ko\\x{0161}aricu)|(dodajte\\s*u\\s*ko\\x{0161}aricu)|(brzo\\s*do\\s*ponude)|(sli\\x{010D}ni\\s*proizvodi)|(podaci\\s*o\\s*proizvodu))"},"hu":{"price_regex":{"hu":"((\\d{1,3}\\s*(huf\\s*ft|huf|ft))|((huf\\s*ft|huf|ft)\\s*\\d{1,3}))"},"product_terms":"((megveszem\\s*most)|(kos(a|\\x{00E1})rba\\s*(teszem){0,1})|(el(e|\\x{00E9})rhet(o|\\x{0151})\\s*sz(a|\\x{00E1})ll(i|\\x{00ED})t(a|\\x{00E1})si\\s*m(o|\\x{00F3})dok)|(boltok\\s*(e|\\x{00E9})s\\s*(a|\\x{00E1})rak)|(ir(a|\\x{00E1})ny\\s*a\\s*bolt)|(term(e|\\x{00E9})kle(i|\\x{00ED})r(a|\\x{00E1})s)|(\\d+\\s*((v(e|\\x{00E9})lem(e|\\x{00E9})ny)|((e|\\x{00E9})rt(e|\\x{00E9)kel(e|\\x{00E9})s)))|(a\\s*sz(a|\\x{00E1})ll(i|\\x{00ED})t(a|\\x{00E1})si\\s*hat(a|\\x{00E1})rid(o|\\x{0151})k\\s*megtekint(e|\\x{00E9})se)|(hozz(a|\\x{00E1})ad(a|\\x{00E1})s)|(v(a|\\x{00E1})s(a|\\x{00E1})roljon\\s*online))"},"is":{"price_regex":{"is":"((\\d{1,3}\\s*(isk|\\x{00CD}kr|kr|,-))|((isk|\\x{00CD}kr|kr|,-)\\s*\\d{1,3}))"},"product_terms":"((b\\x{00E6}ta\\s*vi\\x{00F0}\\s*k\\x{00F6}rfu)|(setja\\s*\\x{00ED}\\s*k\\x{00F6}rfu)|(sendingarkostna\\x{00F0})|(skilareglur)|(til\\s*\\x{00E1}\\s*lager))"},"iso_currency_regex_list":["AED|Dhs|Dh","AFN|Af","AMD","AOA|Kz","ARS","AWG","AZN|M","BAM|KM","BBD|BDS","BDT|Tk","BGN|BGL","BHD","BIF","BND|B\\s*\\$","BOB\\s*\\$b|BOB|\\$b|Bs|Bs\\.","R\\s*\\$|BRL","BSD","BTN|Nu\\.","BWP|P","BYN|Br|\\x{0440}\\.","BZD|BZ","CDF|KMF|FC","CL\\$|CLP","COP","CRC","CUP|\\$MN","CZK|K\\x{010D}|Kc","DJF","DKK|kr","DOP|RD\\$","DZD|DA|\\x{062F}\\x{062C}|\\x{062F}\\x{002E}\\x{062C}","EEK","EGP","ERN|Nfk","ETB","FJD|FJ\\$","FKP","GEL|\\x{10DA}","GHS|GH","GIP","GMD|D","GNF|FG|Fr|GFr","GTQ\\s*Q|GTQ|Q","GYD","HKD|HK\\s*\\$","HNL\\s*L|HNL|L","HRK|kn","HTG|G","HUF\\s*Ft|HUF|Ft","IDR|Rp","ILS","IQD","IRR|\\x{0631}\\x{06CC}\\x{0627}\\x{0644}|\\x{062A}\\x{0648}\\x{0645}\\x{0627}\\x{0646}","ISK|\\x{00CD}kr","JMD","JOD","KES|KSh","KGS|\\x{041B}\\x{0432}|\\x{0441}\\x{043e}\\x{043c}","KHR","KPW","KRW","KWD","KYD","KZT","LAK","LBP","Lek\\x{00EB}|ALL","LEV","LKR|Rs\\/\\.|Rs|\\x{0BB0}\\x{0BC2}|\\x{0DBB}\\x{0DD4}","LRD|LD\\$","LSL|LS","LYD|\\x{0644}\\x{002E}\\x{062F}|LD","MAD","MDL\\s*L|MDL,\\s*LEI|LEI","MGA|Ar","MKD|\\x{0434}\\x{0435}\\x{043D}|\\x{041C}\\x{041A}\\x{0434}","MMK|K","MNT","MOP","MRU|UM","MUR","MVR|MRf|Rf","MWK|MK","MYR|RM","MZN|MTn","NAD|N\\$","NGN","NIO|C\\$","NOK","NPR\\s*Rs|NPR|Re\\/\\.|Re","NZ\\s*\\$|NZD","OMR\\s*\\x{fdfc}|OMR","PAB\\s*B\\/\\.|PAB|B\\/\\.","PGK","PHP","PKR\\s*Rs|PKR","PLN","PYG\\s*Gs|PYG|Gs","QAR","RON","RSD|din|\\x{0414}\\x{0438}\\x{043d}","RUB|p\\.","RWF|FRw","S\\/|S\\.|S\\/\\.|Sol|PEN","S\\s*\\$|SGD","SAR\\s*\\x{fdfc}|SAR|SR","SBD|SI\\$","SCR","SDG","SEK|kkr","SHP","SLL|Le","SOS|Sh\\.So\\.|Sh","SRD","STN|Db","SVC","SYP","SZL","THB","TJS|\\x{0405}\\x{041C}","TMT","TND","TOP|T\\$","TRY|TL|x\\{20BA}","TTD","TWD|NT\\s*\\$","TZS","UAH|\\x{0433}\\x{0440}\\x{043D}","UGX|USh","UYU\\s*\\$U|UYU|\\$U","UZS","VEF|Bs\\.?\\s*f|Bs\\.S\\.","VND","VUV|Vt","WON","WST|T|WS\\$","XAF","XCD","XOF|CFA","XPF|F","YEN","YER","ZAR|R","ZMW|ZK"],"it":{"price_regex":{"ch":"((\\d{1,3}\\s*(sfr\\.|fr\\.|\\x{20a3}|chf))|((sfr\\.|fr\\.|\\x{20a3}|chf)\\s*\\d{1,3}))","it":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((politica\\s*di\\s*reso)|(spedizione\\s*gratuita)|(\\d+\\s*ordini)|(\\d+\\s*recensioni)|(\\d+\\s*voti)|(venditore)|(disponibilit\\x{00E0}\\s*immediata)|(trova\\s*in\\s*negozio)|(aggiungi)|(aggiungi\\s*al\\s*carrello)|(acquista\\s*ora)|(aggiungi\\s*alla\\s*lista)|(dettagli\\s*prodotto)|(descrizione\\s*prodotto)|(recensioni\\s*de\\s*clienti)|(altri\\s*venditori)|(dettagli\\s*prodotto)|(specifiche\\s*prodotto)|(descrizione\\s*prodotto)|(recensioni\\s*clienti)|(consegna\\s*stimata)|(soddisfatti\\s*o\\s*rimborsati)|(prodotti\\s*correlati)|(in\\s*negozio)|(consegna)|(seleziona\\s*il\\s*negozio)|(informazioni\\s*sul\\s*prodotto)|(consegna\\s*e\\s*pagamento))"},"ja":{"price_regex":{"jp":"((\\d{1,3}\\s*(\\x{ffe5}|\\x{00a5}))|((\\x{ffe5}|\\x{00a5})\\s*\\d{1,3}))"},"product_terms":"((\\x{30ab}\\x{30fc}\\x{30c8}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{4eca}\\x{3059}\\x{3050}\\x{8cb7}\\x{3046})|((\\x{8a73}\\x{7d30})(\\x{60c5}\\x{5831}|\\x{30c7}\\x{30fc}\\x{30bf}))|(((\\x{30a2}\\x{30a4}\\x{30c6}\\x{30e0})|(\\x{5546}\\x{54c1}(\\x{306e}){0,1})|(\\x{57fa}\\x{672c})|(\\x{5185}\\x{5bb9}))((\\x{8aac}\\x{660e})|(\\x{60c5}\\x{5831})|(\\x{4ed5}\\x{69d8})))|(\\x{3054}\\x{8cfc}\\x{5165}\\x{624b}\\x{7d9a}\\x{304d}\\x{3078})|(\\x{30ab}\\x{30fc}\\x{30c8}\\x{306b}\\x{8ffd}\\x{52a0})|(\\x{9001}\\x{6599}\\x{7121}\\x{6599})|(\\x{767a}\\x{9001}\\x{4e88}\\x{5b9a})|(\\x{30d0}\\x{30b9}\\x{30b1}\\x{30c3}\\x{30c8}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{6ce8}\\x{610f})|(\\x{8cfc}\\x{5165}\\x{624b}\\x{7d9a}\\x{304d}\\x{3078})|(\\x{30d0}\\x{30b9}\\x{30b1}\\x{30c3}\\x{30c8}\\x{3092}\\x{898b}\\x{308b})|(\\x{8fd4}\\x{54c1}\\x{6761}\\x{4ef6})|(\\x{5728}\\x{5eab}\\x{3042}\\x{308a})|(\\x{30ab}\\x{30b4}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{30d0}\\x{30c3}\\x{30b0}\\x{306b}\\x{8ffd}\\x{52a0})|(\\x{5546}\\x{54c1}\\x{0051}\\x{0026}\\x{0041})|(\\x{3044}\\x{307e}\\x{3059}\\x{3050}\\x{8cfc}\\x{5165})|(\\x{5546}\\x{54c1}\\x{30b9}\\x{30da}\\x{30c3}\\x{30af})|(\\x{304a}\\x{652f}\\x{6255}\\x{65b9}\\x{6cd5})|(\\x{6ce8}\\x{610f}\\x{4e8b}\\x{9805})|(\\x{4ed5}\\x{69d8})|(\\x{914d}\\x{9001}\\x{65b9}\\x{6cd5})|(\\x{304b}\\x{3054}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{9001}\\x{6599})|(\\x{5728}\\x{5eab}\\x{72b6}\\x{6cc1})|(\\x{4f5c}\\x{54c1}\\x{5185}\\x{5bb9})|(((\\x{5546}\\x{54c1}(\\x{306e}){0,1})|(\\x{30a2}\\x{30a4}\\x{30c6}\\x{30e0}))(\\x{8a73}\\x{7d30}))|(\\x{756a}\\x{53f7})|(\\x{30b7}\\x{30e7}\\x{30c3}\\x{30d4}\\x{30f3}\\x{30b0}\\x{30d0}\\x{30c3}\\x{30b0}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{304a}\\x{6c17}\\x{306b}\\x{5165}\\x{308a}\\x{306b}\\x{8ffd}\\x{52a0})|(\\x{4fa1}\\x{683c}\\x{3092}\\x{78ba}\\x{8a8d})|(\\x{30ab}\\x{30fc}\\x{30c8}\\x{3078}\\x{9032}\\x{3080})|(\\x{30b5}\\x{30fc}\\x{30d3}\\x{30b9})|(\\x{5546}\\x{54c1}\\x{306e}\\x{767a}\\x{9001})|(\\x{5185}\\x{5bb9}\\x{7d39}\\x{4ecb})|(\\x{30ab}\\x{30fc}\\x{30c8}\\x{3078}\\x{5165}\\x{308c}\\x{308b})|(\\x{8cfc}\\x{5165}\\x{306f}\\x{3053}\\x{3061}\\x{3089}))"},"ko":{"price_regex":{"kr":"((\\d{1,3}\\s*(krw|\\x{20a9}|\\x{c6d0}))|((krw|\\x{20a9}|\\x{c6d0})\\s*\\d{1,3}))"},"product_terms":"((\\s*\\x{c7a5}\\x{bc14}\\x{ad6c}\\x{b2c8}\\s*)|(\\s*\\x{ad6c}\\x{b9e4}\\x{d558}\\x{ae30}\\s*)|(\\x{CD94}\\x{AC00})|(\\x{BC30}\\x{C1A1}\\s*\\x{BC0F}\\s*\\x{ACB0}\\x{C81C})|(\\x{C81C}\\x{D488}\\s*\\x{BC30}\\x{ACBD})|(\\x{C989}\\x{C2DC}\\s*\\x{AD6C}\\x{B9E4})|(\\x{CE74}\\x{D2B8}\\x{C5D0}\\s*\\x{B123}\\x{AE30})|(\\d+\\s*\\x{B9AC}\\x{BDF0})|(\\d+\\s*\\x{C8FC}\\x{BB38})|(\\x{BB34}\\x{B8CC}\\s*\\x{BC30}\\x{C1A1})|(\\x{ACB0}\\x{C81C}\\s*\\x{AE08}\\x{C561}\\s*\\x{D658}\\x{BD88}\\s*\\x{BCF4}\\x{C99D})|(\\x{BC30}\\x{C1A1}\\s*\\x{C608}\\x{C815})|(\\x{AD6C}\\x{B9E4}\\x{D558}\\x{AE30})|(\\x{C81C}\\x{D488}\\s*\\x{C124}\\x{BA85})|(\\x{BE44}\\x{C2B7}\\x{D55C}\\s*\\x{C81C}\\x{D488})|(\\x{B9E4}\\x{C7A5}\\s*\\x{AD6C}\\x{B9E4})|(\\x{BC30}\\x{C1A1})|(\\x{BC14}\\x{B85C}\\x{AD6C}\\x{B9E4})|(\\x{C7A5}\\x{BC14}\\x{AD6C}\\x{B2C8}\\s*\\x{B2F4}\\x{AE30}))"},"largest_contentful_paint_thresholds":{"proactive_contentful_paint_delay_seconds":2,"secondary_no_mutations_observed_ext_seconds":5,"secondary_no_mutations_observed_seconds":1,"secondary_observe_mutations_max_seconds":10,"secondary_observer_mutations_ext_max_seconds":20},"lt":{"price_regex":{"lt":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((\\x{012E}d\\x{0117}ti\\s*\\x{012F}\\s*krep\\x{0161}el\\x{012F})|(\\x{012E}d\\x{0117}ti\\s*\\x{012F}\\s*pirkini\\x{0173}\\s*krep\\x{0161}el\\x{012F})|(\\x{012E}\\s*krep\\x{0161}el\\x{012F})|(nemokamas\\s*pristatymas)|(pradin\\x{0117}\\s*\\x{012F}moka))"},"lv":{"price_regex":{"lv":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((ielikt\\s*groz\\x{0101})|(pieg\\x{0101}des\\s*veidi)|(sa\\x{0146}em\\x{0161}anas\\s*iesp\\x{0113}jas)|(pieejam\\x{012B}ba\\s*veikalos))"},"market_domain_regex_map":{"ae":"((\\.ae\\/)|(\\.com\\/ae\\/))","ar":"((\\.ar\\/)|(\\.com\\/ar\\/))","at":"((\\.at\\/)|(\\.com\\/at\\/)|(\\.com\\/de-at\\/)|(\\.com\\/de_at\\/))","au":"((\\.au\\/)|(\\.com\\/au\\/)|(\\.com\\/en-au\\/)|(\\.com\\/en_au\\/))","be":"((\\.be\\/)|(\\.com\\/be\\/)|(\\.com\\/fr-be\\/)|(\\.com\\/fr_be\\/)|(\\.com\\/nl-be\\/)|(\\.com\\/nl_be\\/))","bg":"((\\.bg\\/)|(\\.com\\/bg\\/))","br":"((\\.br\\/)|(\\.com\\/br\\/)|(\\.com\\/pt-br\\/)|(\\.com\\/pt_br\\/))","ca":"((\\.ca\\/)|(\\.com\\/ca\\/)|(\\.com\\/fr-ca\\/)|(\\.com\\/fr_ca\\/)|(\\.ca\\/fr-ca\\/)|(\\.ca\\/fr_ca\\/)|(\\.com\\/en-ca\\/)|(\\.com\\/en_ca\\/))","ch":"((\\.ch\\/)|(\\.com\\/ch\\/))","cl":"((\\.cl\\/)|(\\.com\\/cl\\/))","cn":"((\\.cn\\/)|(\\.com\\/cn\\/))","co":"((\\.co\\/)|(\\.com\\/co\\/))","cz":"((\\.cz\\/)|(\\.com\\/cz\\/))","de":"((\\.de\\/)|(\\.com\\/de\\/)|(\\.com\\/de-de\\/)|(\\.com\\/de_de\\/))","dk":"((\\.dk\\/)|(\\.com\\/dk\\/)|(\\.com\\/da-dk\\/)|(\\.com\\/da_dk\\/))","eg":"((\\.eg\\/)|(\\.com\\/eg\\/))","es":"((\\.es\\/)|(\\.com\\/es\\/)|(\\.com\\/es-es\\/)|(\\.com\\/es_es\\/))","fi":"((\\.fi\\/)|(\\.com\\/fi\\/)|(\\.com\\/fi-fi\\/)|(\\.com\\/fi_fi\\/))","fr":"((\\.fr\\/)|(\\.com\\/fr\\/)|(\\.com\\/fr-fr\\/)|(\\.com\\/fr_fr\\/))","gb":"((\\.uk\\/)|(\\.com\\/uk\\/)|(\\.com\\/en-gb\\/)|(\\.com\\/en_gb\\/))","gr":"((\\.gr\\/)|(\\.com\\/gr\\/)|(\\.com\\/el-gr\\/)|(\\.com\\/el_gr\\/))","hr":"((\\.hr\\/)|(\\.com\\/hr\\/))","hu":"((\\.hu\\/)|(\\.com\\/hu\\/)|(\\.com\\/hu-hu\\/)|(\\.com\\/hu_hu\\/))","id":"((\\.id\\/)|(\\.com\\/id\\/))","ie":"((\\.ie\\/)|(\\.com\\/ie\\/)|(\\.com\\/en-ie\\/)|(\\.com\\/en_ie\\/))","il":"((\\.il\\/)|(\\.com\\/il\\/)|(\\.com\\/hw-il\\/)|(\\.com\\/hw_il\\/))","in":"((\\.in\\/)|(\\.com\\/in\\/)|(\\.com\\/en-in\\/)|(\\.com\\/en_in\\/))","is":"((\\.is\\/)|(\\.com\\/is\\/))","it":"((\\.it\\/)|(\\.com\\/it\\/)|(\\.com\\/it-it\\/)|(\\.com\\/it_it\\/))","jp":"((\\.jp\\/)|(\\.com\\/jp\\/)|(\\.com\\/ja-jp\\/)|(\\.com\\/ja_jp\\/))","ke":"((\\.ke\\/)|(\\.com\\/ke\\/))","kr":"((\\.kr\\/)|(\\.com\\/kr\\/)|(\\.com\\/ko-kr\\/)|(\\.com\\/ko_kr\\/))","lt":"((\\.lt\\/)|(\\.com\\/lt\\/))","ma":"((\\.ma\\/)|(\\.com\\/ma\\/))","mx":"((\\.mx\\/)|(\\.com\\/mx\\/)|(\\.com\\/es-mx\\/)|(\\.com\\/es_mx\\/)|(\\.com\\/en-mx\\/)|(\\.com\\/en_mx\\/))","my":"((\\.my\\/)|(\\.com\\/my\\/)|(\\.com\\/en-my\\/)|(\\.com\\/en_my\\/))","ng":"((\\.ng\\/)|(\\.com\\/ng\\/))","nl":"((\\.nl\\/)|(\\.com\\/nl\\/)|(\\.com\\/nl-nl\\/)|(\\.com\\/nl_nl\\/))","no":"((\\.no\\/)|(\\.com\\/no\\/)|(\\.com\\/no-no\\/)|(\\.com\\/no_no\\/))","nz":"((\\.nz\\/)|(\\.com\\/nz\\/))","pe":"((\\.pe\\/)|(\\.com\\/pe\\/))","pk":"((\\.pk\\/)|(\\.com\\/pk\\/))","pl":"((\\.pl\\/)|(\\.com\\/pl\\/)|(\\.com\\/pl-pl\\/)|(\\.com\\/pl_pl\\/))","pt":"((\\.pt\\/)|(\\.com\\/pt\\/)|(\\.com\\/pt-pt\\/)|(\\.com\\/pt_pt\\/))","ro":"((\\.ro\\/)|(\\.com\\/ro\\/)|(\\.com\\/ro-ro\\/)|(\\.com\\/ro_ro\\/))","rs":"((\\.rs\\/)|(\\.com\\/rs\\/))","ru":"((\\.ru\\/)|(\\.com\\/ru\\/)|(\\.com\\/ru-ru\\/)|(\\.com\\/ru_ru\\/))","sa":"((\\.sa\\/)|(\\.com\\/sa\\/))","se":"((\\.se\\/)|(\\.com\\/se\\/)|(\\.com\\/sv-se\\/)|(\\.com\\/sv_se\\/))","sg":"((\\.sg\\/)|(\\.com\\/sg\\/)|(\\.com\\/en-sg\\/)|(\\.com\\/en_sg\\/))","si":"((\\.si\\/)|(\\.com\\/si\\/))","sk":"((\\.sk\\/)|(\\.com\\/sk\\/))","th":"((\\.th\\/)|(\\.com\\/th\\/))","tr":"((\\.tr\\/)|(\\.com\\/tr\\/)|(\\.com\\/tr-tr\\/)|(\\.com\\/tr_tr\\/))","tw":"((\\.tw\\/)|(\\.com\\/tw\\/))","ua":"((\\.ua\\/)|(\\.com\\/ua\\/))","vn":"((\\.vn\\/)|(\\.com\\/vn\\/))","za":"((\\.za\\/)|(\\.com\\/za\\/))"},"mk":{"price_regex":{"mk":"((\\d{1,3}\\s*(mkd|\\x{0414}\\x{0435}\\x{043D}|\\x{041C}\\x{041A}\\x{0414}))|((mkd|\\x{0414}\\x{0435}\\x{043D}|\\x{041C}\\x{041A}\\x{0414})\\s*\\d{1,3}))"},"product_terms":"((\\x{0434}\\x{043E}\\x{0434}\\x{0430}\\x{0434}\\x{0438}\\s*\\x{0432}\\x{043E}\\s*\\x{043A}\\x{043E}\\x{0448}\\x{043D}\\x{0438}\\x{0447}\\x{043A}\\x{0430})|(\\x{0414}\\x{043E}\\x{0434}\\x{0430}\\x{0434}\\x{0438}\\s*\\x{0432}\\x{043E}\\s*\\x{043A}\\x{043E}\\x{0448}\\x{043D}\\x{0438}\\x{0447}\\x{043A}\\x{0430})|(\\x{0414}\\x{041E}\\x{0414}\\x{0410}\\x{0414}\\x{0418}\\s*\\x{0412}\\x{041E}\\s*\\x{041A}\\x{041E}\\x{0428}\\x{041D}\\x{0418}\\x{0427}\\x{041A}\\x{0410})|(\\x{041A}\\x{0443}\\x{043F}\\x{0438})|(\\x{041D}\\x{0435}\\x{043C}\\x{0430}\\s*\\x{043D}\\x{0430}\\s*\\x{0437}\\x{0430}\\x{043B}\\x{0438}\\x{0445}\\x{0430})|(\\x{041F}\\x{043E}\\x{0432}\\x{0440}\\x{0437}\\x{0430}\\x{043D}\\x{0438}\\s*\\x{043F}\\x{0440}\\x{043E}\\x{0438}\\x{0437}\\x{0432}\\x{043E}\\x{0434}\\x{0438})|(\\x{0412}\\x{0440}\\x{0435}\\x{043C}\\x{0435}\\s*\\x{043D}\\x{0430}\\s*\\x{0438}\\x{0441}\\x{043F}\\x{043E}\\x{0440}\\x{0430}\\x{043A}\\x{0430}))"},"model_descriptors":[{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.en","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.en","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.pt","page_locale":"pt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.pt","page_locale":"pt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.it","page_locale":"it","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.it","page_locale":"it","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fr","page_locale":"fr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fr","page_locale":"fr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.de","page_locale":"de","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.de","page_locale":"de","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.nl","page_locale":"nl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.nl","page_locale":"nl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.zh","page_locale":"zh","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.zh","page_locale":"zh","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ko","page_locale":"ko","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ko","page_locale":"ko","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ja","page_locale":"ja","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ja","page_locale":"ja","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.es","page_locale":"es","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.es","page_locale":"es","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.am","page_locale":"am","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.am","page_locale":"am","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ar","page_locale":"ar","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ar","page_locale":"ar","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.az","page_locale":"az","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.az","page_locale":"az","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bg","page_locale":"bg","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bg","page_locale":"bg","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bn","page_locale":"bn","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bn","page_locale":"bn","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bs","page_locale":"bs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bs","page_locale":"bs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.cs","page_locale":"cs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.cs","page_locale":"cs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.da","page_locale":"da","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.da","page_locale":"da","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.dv","page_locale":"dv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.dv","page_locale":"dv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.dz","page_locale":"dz","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.dz","page_locale":"dz","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.el","page_locale":"el","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.el","page_locale":"el","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.et","page_locale":"et","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.et","page_locale":"et","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fa","page_locale":"fa","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fa","page_locale":"fa","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fi","page_locale":"fi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fi","page_locale":"fi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fo","page_locale":"fo","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fo","page_locale":"fo","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.he","page_locale":"he","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.he","page_locale":"he","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hi","page_locale":"hi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hi","page_locale":"hi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hr","page_locale":"hr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hr","page_locale":"hr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ht","page_locale":"ht","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ht","page_locale":"ht","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hu","page_locale":"hu","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hu","page_locale":"hu","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hy","page_locale":"hy","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hy","page_locale":"hy","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.id","page_locale":"id","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.id","page_locale":"id","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.is","page_locale":"is","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.is","page_locale":"is","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ka","page_locale":"ka","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ka","page_locale":"ka","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.kk","page_locale":"kk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.kk","page_locale":"kk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.km","page_locale":"km","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.km","page_locale":"km","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ky","page_locale":"ky","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ky","page_locale":"ky","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lo","page_locale":"lo","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lo","page_locale":"lo","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lt","page_locale":"lt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lt","page_locale":"lt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lv","page_locale":"lv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lv","page_locale":"lv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mk","page_locale":"mk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mk","page_locale":"mk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mn","page_locale":"mn","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mn","page_locale":"mn","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ms","page_locale":"ms","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ms","page_locale":"ms","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mt","page_locale":"mt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mt","page_locale":"mt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.my","page_locale":"my","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.my","page_locale":"my","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.nb","page_locale":"nb","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.nb","page_locale":"nb","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ne","page_locale":"ne","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ne","page_locale":"ne","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.no","page_locale":"no","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.no","page_locale":"no","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.pl","page_locale":"pl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.pl","page_locale":"pl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ps","page_locale":"ps","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ps","page_locale":"ps","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ro","page_locale":"ro","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ro","page_locale":"ro","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ru","page_locale":"ru","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ru","page_locale":"ru","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.si","page_locale":"si","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.si","page_locale":"si","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sk","page_locale":"sk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sk","page_locale":"sk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sl","page_locale":"sl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sl","page_locale":"sl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sm","page_locale":"sm","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sm","page_locale":"sm","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sq","page_locale":"sq","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sq","page_locale":"sq","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sr","page_locale":"sr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sr","page_locale":"sr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sv","page_locale":"sv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sv","page_locale":"sv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sw","page_locale":"sw","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sw","page_locale":"sw","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ta","page_locale":"ta","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ta","page_locale":"ta","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tg","page_locale":"tg","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tg","page_locale":"tg","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.th","page_locale":"th","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.th","page_locale":"th","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ti","page_locale":"ti","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ti","page_locale":"ti","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tk","page_locale":"tk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tk","page_locale":"tk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tl","page_locale":"tl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tl","page_locale":"tl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tr","page_locale":"tr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tr","page_locale":"tr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.uz","page_locale":"uz","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.uz","page_locale":"uz","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.vi","page_locale":"vi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.vi","page_locale":"vi","platform":"desktop"}],"nb":{"price_regex":{"no":"((\\d{1,3}\\s*(nok|kr|,-))|((nok|kr|,-)\\s*\\d{1,3}))"},"product_terms":"((legg\\s*i\\s*handlevogn)|(frakt\\s*og\\s*leveringsalternativ)|(hent\\s*i\\s*butikk)|(raskere\\s*leveranse))"},"nl":{"price_regex":{"be":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","nl":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((verkoop\\s*door)|(productbeschrijving)|(productspecificaties)|(in\\s*winkelwagen)|(gratis\\s*retourneren)|(gratis\\s*verzending)|(gratis\\s*verzenden)|(geschatte\\s*levering)|(\\d+\\s*recensies)|(\\d+\\s*beoordelingen)|(\\d+\\s*bestellingen)|(koop\\s*nu)|(voeg\\s*aan\\s*winkelwagen\\s*toe)|(voeg\\s*toe\\s*aan\\s*winkelwagen)|(geldteruggarantie)|(bestverkopende)|(selecteer\\s*winkel)|(productinformatie)|(soortgelijke\\s*producten)|(in\\s*de\\s*winkel)|(levering)|(toevoegen)|(gratis\\s*bezorging)|(nu\\s*kopen)|(op\\s*voorraad)|(verkocht\\s*door)|(in\\s*(winkelwagen|winkelmandje|winkelmand))|(nu\\s*kopen)|(productgegevens)|(productbeschrijving)|(klantenrecensies)|(\\s*bestel\\s*nu)|(\\s*voeg\\s*toe))"},"no":{"price_regex":{"no":"((\\d{1,3}\\s*(nok|kr|,-))|((nok|kr|,-)\\s*\\d{1,3}))"},"product_terms":"((legg\\s*i\\s*handlevogn)|(frakt\\s*og\\s*leveringsalternativ)|(hent\\s*i\\s*butikk)|(raskere\\s*leveranse))"},"page_cutoff":4320,"pdp_regexes":{"amazon.com":["(?:\\/gp\\/product\\/|\\/dp\\/)([A-Z0-9]+)","/.*/ko/dp/[A-Za-z0-9]+/"]},"picl_currency_regex_map":{"AUD":"A\\s*\\$|AU\\s*\\$|AUD|AU","CAD":"C\\s*\\$|CAD\\s*\\$|CDN\\s*\\$|Can\\s*\\$|CDN|CAD","CHF":"CHF|Fr\\.|SFr\\.|\\x{20A3}","CNY":"CNY|RMB|\\x{00A5}","EUR":"EUR|Euro|\\x{20AC}","GBP:":"GBP|GB|\\x{00A3}","INR":"INR|RS|RS\\.|\\x{20B9}","JPY":"JPY|\\x{ffe5}|\\x{00A5}","MXN":"MXN|MEX\\s*\\$","USD":"USD\\s*\\$|USD|US\\s*\\$|US|\\$"},"pl":{"price_regex":{"pl":"((\\d{1,3}\\s*(pln|z\\s*\\x{0142}))|(pln|z\\s*\\x{0142})\\s*\\d{1,3}))"},"product_terms":"((dodaj\\s*do\\s*koszyka)|(kup\\s*teraz)|(darmowa\\s*dostawa)|(do\\s*koszyka)|(kup)|(w\\s*sklepie)|(szczeg\\x{00F3}\\x{0142}y\\s*produktu)|(przesy\\x{0142}ka)|(dostawa)|(w\\s*magazynie)|(informacje\\s*o\\s*produkcie)|(darmowa\\s*wysy\\x{0142}ka)|(bezp\\x{0142}atna\\s*dostawa)|(opis\\s*produktu)|(\\d+\\s*opinie))"},"price_comparison_cache_minutes":20,"product_onnx_model_config":{"char_limit_for_text_element":400,"cls_token_id":0,"example_start_index_increment":250,"features":["is_image","is_preceded_by_ws","is_preceded_by_line_break","bounding_box_is_same","is_clipped","is_visible","font_weight","font_size","bounding_x","bounding_y","bounding_w","bounding_h","color_a","color_r","color_g","color_b","bounding_xe","bounding_ye","bounding_we","bounding_he","is_anchor","part"],"features_with_max_bounding_box_size":["bounding_x","bounding_y","bounding_w","bounding_h","bounding_xe","bounding_ye","bounding_we","bounding_he"],"features_with_max_color_size":["color_a","color_r","color_g","color_b"],"image_word":"#IMAGE","labels":["O","B-image","I-image","B-manufacturer","I-manufacturer","B-name","I-name","B-offers/price","I-offers/price","B-aggregateRating/ratingValue","I-aggregateRating/ratingValue","B-aggregateRating/reviewCount","I-aggregateRating/reviewCount","B-product_codes","I-product_codes","B-out_of_stock","I-out_of_stock"],"labels_for_v4":["image","name","offers/price","product_codes","manufacturer","aggregateRating/reviewCount","out_of_stock","aggregateRating/ratingValue"],"max_bounding_box_size":200,"max_color_size":100,"max_example_size":400,"max_examples":10,"max_font_size_size":100,"max_font_weight_size":100,"max_name_price_token_distance":200,"max_sequence_length":512,"max_sliding_window_size":2,"model_output_layer":"output","name_image_prediction_threshold":0.3,"name_image_prediction_threshold_for_v4":0.3,"num_labels":17,"num_labels_for_v4":8,"num_special_tokens":2,"pad_token":1,"pad_token_label_id":-100,"price_prediction_screening_threshold":0.0001,"price_prediction_threshold":0.005,"price_prediction_threshold_for_v4":0.0001,"priority_entities_ids_map":{"image":1,"name":5,"offers/price":7,"product_codes":13},"priority_entities_ids_map_for_v4":{"aggregateRating/ratingValue":7,"aggregateRating/reviewCount":5,"image":0,"manufacturer":4,"name":1,"offers/price":2,"out_of_stock":6,"product_codes":3},"product_code_prediction_threshold":0.07,"product_code_prediction_threshold_for_v4":0.3,"product_page_prediction_threshold":0.5,"sep_token_id":2,"sliding_window_start_index_increment":400},"pt":{"price_regex":{"br":"((r\\x{0024}|brl)\\s*\\d{1,3})|(\\d{1,3}\\s*(r\\x{0024}|brl))","pt":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((comprar)|(entrega)|(produtos\\s*patrocinados)(adicionar\\s*ao\\s*cesto)|(adicionar\\s*ao\\s*carrinho)|(comprar\\s*agora)|(adicionar)|(procurar\\s*nas\\s*lojas)|(pesquisar\\s*produtos)|(entrega)|(pagamento)|(estoque\\s*dispon\\x{00ED}vel)|(devolu\\x{00E7}\\x{00E3}o\\s*gr\\x{00E1}tis)|(compra\\s*garantida)|(\\d+\\s*vendidos)|(na\\s*loja)|(adicionar\\s*ao\\s*cesto)|(detalhes\\s*do\\s*produto)|(selecionar\\s*loja)|(produtos\\s*similares)|(frete\\s*gr\\x{00E1}tis)|(estimativa\\s*de\\s*entrega)|(garantia\\s*de\\s*reembolso)|(o\\s*envio\\s*come\\x{00E7}a)|(\\d+\\s*avalia\\x{00E7}\\x{00F5}es)|(\\d+\\s*pedidos)|(mais\\s*vendidos)|(\\x{00CD}tens\\s*promocionais))"},"ro":{"price_regex":{"ro":"((\\d{1,3}\\s*(ron|lei|l))|((ron|lei|l)\\s*\\d{1,3}))"},"product_terms":"((ad(a|\\x{0103})ugare)|(adaug(a|\\x{0102})\\s*(i|\\x{00CE})n\\s*co(s|\\x{0218}))|(v(a|\\x{00E2})ndut\\s*(s|\\x{0219})i\\s*livrat\\s*de)|(comand(a|\\x{0103})\\s*cu\\s*livrare)|(informa(t|\\x{021B})ii\\s*despre\\s*produs)|((i|\\x{02EE})n\\s*stoc)|(cumpara\\s*acum)|(optiuni\\s*de\\s*livrare)|(modalit(a|\\x{0103})(t|\\x{021B})ile\\s*de\\s*((livrare)|(plat(a|\\x{0103}))))|(livrare\\s*gratuit(a|\\x{0103}))|(descrierea\\s*produsului)|(spre\\s*magazin)|(((estimat)|(estimare))\\s*livrare)|(politica\\s*de\\s*retur)|(pret\\s*curent)|(cost\\s*livrare)|(\\d+\\s*review-uri))"},"ru":{"price_regex":{"by":"((\\d{1,3}\\s*(byn|br|\\x{0440}\\.|rub))|((byn|br|\\x{0440}\\.|rub)\\s*\\d{1,3}))","ru":"((\\d{1,3}\\s*(rub|\\x{0440}\\x{0443}\\x{0431}|\\x{20BD}))|((rub|\\x{0440}\\x{0443}\\x{0431}|\\x{20BD})\\s*\\d{1,3}))"},"product_terms":"((\\x{041F}\\x{043E}\\x{0434}\\x{043F}\\x{0438}\\x{0441}\\x{0430}\\x{0442}\\x{044C}\\x{0441}\\x{044F}\\s*\\x{043D}\\x{0430}\\s*\\x{043F}\\x{0440}\\x{043E}\\x{0434}\\x{0430}\\x{0432}\\x{0446}\\x{0430})|(\\x{0414}\\x{043E}\\x{0431}\\x{0430}\\x{0432}\\x{0438}\\x{0442}\\x{044C}\\s*\\x{0432}\\s*\\x{043A}\\x{043E}\\x{0440}\\x{0437}\\x{0438}\\x{043D}\\x{0443})|(\\x{0411}\\x{0435}\\x{0441}\\x{043F}\\x{043B}\\x{0430}\\x{0442}\\x{043D}\\x{0430}\\x{044F}\\s*\\x{0434}\\x{043E}\\x{0441}\\x{0442}\\x{0430}\\x{0432}\\x{043A}\\x{0430})|(\\x{043E}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0435})|(c\\s*\\x{044D}\\x{0442}\\x{0438}\\x{043C}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{043E}\\x{043C}\\s*\\x{043F}\\x{043E}\\x{043A}\\x{0443}\\x{043F}\\x{0430}\\x{043B}\\x{0438})|(c\\s*\\x{044D}\\x{0442}\\x{0438}\\x{043C}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{043E}\\x{043C}\\s*\\x{0438}\\x{0441}\\x{043A}\\x{0430}\\x{043B}\\x{0438})|(\\x{0438}\\x{043D}\\x{0444}\\x{043E}\\x{0440}\\x{043C}\\x{0430}\\x{0446}\\x{0438}\\x{044F}\\s*\\x{043E}\\s*\\x{0434}\\x{043E}\\x{0441}\\x{0442}\\x{0430}\\x{0432}\\x{043A}\\x{0435})|(c\\x{043E}\\x{0441}\\x{0442}\\x{043E}\\x{044F}\\x{043D}\\x{0438}\\x{0435}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0430})|(k\\x{0443}\\x{043F}\\x{0438}\\x{0442}\\x{044C}\\s*\\x{0441}\\x{0435}\\x{0439}\\x{0447}\\x{0430}\\x{0441})|(p\\x{0435}\\x{0439}\\x{0442}\\x{0438}\\x{043D}\\x{0433}\\s*\\x{0438}\\s*\\x{043E}\\x{0442}\\x{0437}\\x{044B}\\x{0432}\\x{044B})|(a\\x{0440}\\x{0442}\\x{0438}\\x{043A}\\x{0443}\\x{043B})|(c\\s*\\x{044D}\\x{0442}\\x{0438}\\x{043C}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{043E}\\x{043C}\\s*\\x{043F}\\x{043E}\\x{043A}\\x{0443}\\x{043F}\\x{0430}\\x{044E}\\x{0442})|(\\x{041F}\\x{043E}\\x{0445}\\x{043E}\\x{0436}\\x{0438}\\x{0435}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{044B})|(k\\x{043E}\\x{0434}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0430})|(o\\x{0442}\\x{0437}\\x{044B}\\x{0432}\\x{044B}\\s*\\x{043F}\\x{043E}\\x{043A}\\x{0443}\\x{043F}\\x{0430}\\x{0442}\\x{0435}\\x{043B}\\x{0435}\\x{0439})|(k\\x{0430}\\x{043A}\\s*\\x{0432}\\x{0435}\\x{0440}\\x{043D}\\x{0443}\\x{0442}\\x{044C})|(o\\x{043F}\\x{0438}\\x{0441}\\x{0430}\\x{043D}\\x{0438}\\x{0435}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0430})|(\\x{0438}\\x{0437}\\x{0433}\\x{043E}\\x{0442}\\x{043E}\\x{0432}\\x{0438}\\x{0442}\\x{0435}\\x{043B}\\x{044C})|(\\d+\\s*\\x{043E}\\x{0442}\\x{0437}\\x{044B}\\x{0432}\\x{043E}\\x{0432}))"},"sk":{"price_regex":{"sk":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((prida(t|\\x{0165})\\s*do\\s*(n(a|\\x{00E1})kupn(e|\\x{00E9})ho){0,1}\\s*ko(s|\\x{0161})(i|\\x{00ED})ka)|(k(r|\\x{00FA})pi(t|\\x{0165}))|(vypredan(e|\\x{00E9})\\s*on-line)|(inform(a|\\x{00E1})cie\\s*o\\s*((v(y|\\x{00FD})robku)|(produkte)))|(kde\\s*k(u|\\x{00FA})pi(i|\\x{0165}))|(z(a|\\x{00E1})ruka\\s*\\d+\\s*mesiacov)|(\\d+\\s*((z(a|\\x{00E1})kazn(i|\\x{00ED})kov)|(hodnoten(i|\\x{00ED}))))|(na\\s*sklade)|(mo(z|\\x{017E})nosti\\s*doru(c|\\x{010D})enia)|(n(a|\\x{00E1})klady\\s*na\\s*dopravu))"},"sl":{"price_regex":{"si":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((dodaj\\s*v\\s*ko\\x{0161}arico)|(podobne\\s*artikle)|(v\\s*ko\\x{0161}arico)|(podrobnosti\\s*o\\s*izdelku)|(v\\s*zalogi))"},"sq":{"price_regex":{"al":"((\\d{1,3}\\s*(lek\\x{00EB}|all|l))|((lek\\x{00EB}|all|l)\\s*\\d{1,3}))"},"product_terms":"((shto\\s*n\\x{00EB}\\s*shport\\x{00EB})|(shtoje\\s*n\\x{00EB}\\s*shport\\x{00EB})|(ne\\s*stok)|(ofert\\x{00CB}\\s*online)|(ka\\s*stok))"},"sr":{"price_regex":{"me":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","rs":"((\\d{1,3}\\s*(rsd|din))|((rsd|din)\\s*\\d{1,3}))"},"product_terms":"((dodaj\\s*u\\s*korpu)|(kupi\\s*odmah)|(obavesti\\s*me\\s*kada\\s*bude\\s*na\\s*sni\\x{017E}enju)|(opis\\s*proizvoda))"},"sv":{"price_regex":{"se":"((\\d{1,3}\\s*(kr|sek|:-))|((kr|sek|:-)\\s*\\d{1,3}))"},"product_terms":"((l\\x{00E4}gg\\s*i\\s*korgen)|(kundvagn)|(gratis\\s*leverans)|(L\\x{00E4}gg\\s*bud)|(k\\x{00F6}p)|(l\\x{00E4}gg\\s*i\\s*kundvagn)|(l\\x{00E4}gg\\s*i\\s*varukorg)|(i\\s*lager)|(fri\\s*frakt)|(leverans)|(k\\x{00F6}p)|(l\\x{00E4}gg\\s*till\\s*i\\s*kundvagn)|(returpolicy)|(s\\x{00E4}ljs\\s*av)|(andra\\s*s\\x{00E4}ljare)|(\\d+\\s*betyg)|(\\d+\\s*omd\\x{00F6}men)|(handla)|(produktinformation)|(fri\\s*retur))"},"th":{"price_regex":{"th":"((\\d{1,3}\\s*(thb\\s*\\x{0e3f}|thb|\\x{0e3f}))|((thb\\s*\\x{0e3f}|thb|\\x{0e3f})\\s*\\d{1,3}))"},"product_terms":"((\\x{0E40}\\x{0E1E}\\x{0E34}\\x{0E48}\\x{0E21}\\x{0E44}\\x{0E1B}\\x{0E22}\\x{0E31}\\x{0E07}\\x{0E23}\\x{0E16}\\x{0E40}\\x{0E02}\\x{0E47}\\x{0E19})|(\\x{0E0B}\\x{0E37}\\x{0E49}\\x{0E2D}\\x{0E2A}\\x{0E34}\\x{0E19}\\x{0E04}\\x{0E49}\\x{E032})|(\\x{0E2A}\\x{0E48}\\x{0E07}\\x{0E1F}\\x{0E23}\\x{0E35}\\x{0E17}\\x{0E31}\\x{0E48}\\x{0E27}\\x{0E44}\\x{0E17}\\x{0E22})|(\\x{0E0B}\\x{0E37}\\x{0E49}\\x{0E2D}\\x{0E40}\\x{0E25}\\x{0E22})|(\\x{0E2A}\\x{0E32}\\x{0E21}\\x{0E32}\\x{0E23}\\x{0E16}\\x{0E40}\\x{0E01}\\x{0E47}\\x{0E1A}\\x{0E40}\\x{0E07}\\x{0E34}\\x{0E19}\\x{0E1B}\\x{0E25}\\x{0E32}\\x{0E22}\\x{0E17}\\x{0E32}\\x{0E07}\\x{0E44}\\x{0E14}\\x{0E49}))"},"token_limit":1600,"tr":{"price_regex":{"cy":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","tr":"((\\d{1,3}\\s*(try|tl|x\\{20BA}))|((try|tl|x\\{20BA})\\s*\\d{1,3}))"},"product_terms":"((sepete\\s*ekle)|(\\x{015E}imdi\\s*sat\\x{0131}n\\s*al)|(taraf\\x{0131}ndan\\s*sat\\x{0131}l\\x{0131}r\\s*ve\\s*g\\x{00F6}nderilir))"},"ua":{"price_regex":{"ua":"((\\d{1,3}\\s*(uah|\\x{0433}\\x{0440}\\x{043D}|\\x{20B4}))|((uah|\\x{0433}\\x{0440}\\x{043D}|\\x{20B4})\\s*\\d{1,3}))"},"product_terms":"((\\x{041A}\\x{0443}\\x{043F}\\x{0438}\\x{0442}\\x{0438})|(\\x{0421}\\x{043F}\\x{043E}\\x{0441}\\x{043E}\\x{0431}\\x{0438}\\s*\\x{0434}\\x{043E}\\x{0441}\\x{0442}\\x{0430}\\x{0432}\\x{043A}\\x{0438})|(\\x{0421}\\x{0443}\\x{043F}\\x{0443}\\x{0442}\\x{043D}\\x{0456}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0438})|(\\x{0417}\\x{0431}\\x{0435}\\x{0440}\\x{0435}\\x{0433}\\x{0442}\\x{0438}\\s*\\x{0434}\\x{043E}\\s*\\x{0441}\\x{043F}\\x{0438}\\x{0441}\\x{043A}\\x{0443}\\s*\\x{043F}\\x{043E}\\x{043A}\\x{0443}\\x{043F}\\x{043E}\\x{043A})|(\\x{0421}\\x{043F}\\x{043E}\\x{0441}\\x{043E}\\x{0431}\\x{0438}\\s*\\x{043E}\\x{043F}\\x{043B}\\x{0430}\\x{0442}\\x{0438}))"},"url_filter_regex":"(((/s\\?.*)|(/cart([/?].*)+)|(/cart$)|(/shopping-?cart/?)|(/shopping-?bag/?)|(/my-?cart/?)|(/view-?cart/?)|(/co-?cart/?)|(/start-?my-?cart(/|\\?.*)?)|(/checkout/?)|(/search[./?].*))|(/basket([/.?].*)?)|(/cartReview([/.?].*)?)$)","vi":{"price_regex":{"vn":"((\\d{1,3}\\s*(vnd\\s*\\x{20ab}|vnd|\\x{20ab}))|((vnd\\s*\\x{20ab}|vnd|\\x{20ab})\\s*\\d{1,3}))"},"product_terms":"((mua\\s*ngay)|(th\\x{00EA}m\\s*v\\x{00E0}o\\s*gi\\x{1ECF}\\s*h\\x{00E0}ng)|(thanh\\s*to\\x{00E1}n\\s*khi\\s*nh\\x{1EAD}n\\s*h\\x{00E0}ng)|(ch\\x{1ECD}n\\s*mua))"},"zh":{"price_regex":{"cn":"((\\d{1,3}\\s*\\x{5143})|((\\x{ffe5}|\\x{00a5}|rmb|cny)\\s*\\d{1,3}))","hk":"((\\d{1,3}\\s*(\\$|\\x{5143}))|((\\x{ffe5}|\\x{00a5}|hkd|\\$)\\s*\\d{1,3}))","sg":"(((s\\$|sgd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(s\\$|sgd|\\$)))","tw":"((\\d{1,3}\\s*(\\$|\\x{5143}))|((\\x{ffe5}|\\x{00a5}|twd|\\$)\\s*\\d{1,3}))"},"product_terms":"((\\x{52a0}\\x{5165}\\x{8d2d}\\x{7269}\\x{8f66})|(\\x{73b0}\\x{5728}\\x{8d2d}\\x{4e70})|(\\x{73b0}\\x{5728}\\x{6709}\\x{8d27})|(\\x{52a0}\\x{5165}\\x{5fc3}\\x{613f}\\x{5355})|(\\x{7ecf}\\x{5e38}\\x{4e00}\\x{8d77}\\x{8d2d}\\x{4e70}\\x{7684}\\x{5546}\\x{54c1})|(\\x{514d}\\x{8d39}\\x{914d}\\x{9001})|(\\x{9884}\\x{8ba1}\\x{6700}\\x{5feb}\\x{9001}\\x{8fbe})|(\\x{6dfb}\\x{52a0}\\x{5230}\\x{8d2d}\\x{7269}\\x{888b})|(\\x{9884}\\x{8ba1}\\x{53d1}\\x{8d27}\\x{65e5}\\x{671f})|(\\x{514d}\\x{8d39}\\x{9001}\\x{8d27})|(\\x{514d}\\x{8fd0}\\x{8d39})|(\\x{6536}\\x{85cf}\\x{5546}\\x{54c1})|(\\x{5356}\\x{5149}\\x{4e86})|(\\x{67e5}\\x{770b}\\x{76f8}\\x{4f3c}\\x{4ea7}\\x{54c1})|(\\x{7f3a}\\x{8d27})|(\\x{67e5}\\x{770b}\\x{76f8}\\x{4f3c}\\x{5546}\\x{54c1})|(\\x{5546}\\x{54c1}\\x{8d27}\\x{53f7})|(\\x{5927}\\x{5bb6}\\x{6652})|(\\x{5e97}\\x{957f}\\x{63a8}\\x{8350})|(\\x{514d}\\x{5bc4}\\x{51fa}\\x{8fd0}\\x{8d39})|(\\x{7d2f}\\x{8ba1}\\x{8bc4}\\x{4ef7})|(\\x{770b}\\x{4e86}\\x{53c8}\\x{770b})|(\\x{5546}\\x{54c1}\\x{4ecb}\\x{7ecd})|(\\x{964d}\\x{4ef7}\\x{901a}\\x{77e5})|(\\x{7f3a}\\x{8d27}\\x{767b}\\x{8bb0})|(\\x{52a0}\\x{5165}\\x{6e05}\\x{5355})|(\\x{7acb}\\x{5373}\\x{8d2d}\\x{4e70})|(\\x{5546}\\x{54c1}\\x{8be6}\\x{60c5})|(\\x{76f8}\\x{5173}\\x{63a8}\\x{8350})|(\\x{624b}\\x{673a}\\x{626b}\\x{7801}\\x{8d2d}\\x{4e70})|(\\x{5546}\\x{54c1}\\x{7f16}\\x{53f7})|(\\x{5230}\\x{8d27}\\x{901a}\\x{77e5})|(\\x{6536}\\x{85cf}\\x{5b9d}\\x{8d1d})|(\\x{7d2f}\\x{8ba1}\\x{8bc4}\\x{8bba})|(\\x{5b9d}\\x{8d1d}\\x{8be6}\\x{60c5})|(\\x{624b}\\x{673a}\\x{8d2d}\\x{4e70})|(\\x{6b64}\\x{5546}\\x{54c1}\\x{6682}\\x{65f6}\\x{7f3a}\\x{8d27})|(\\x{5546}\\x{54c1}\\x{7f16}\\x{7801})|(\\x{5728}\\x{5c0f}\\x{7a0b}\\x{5e8f}\\x{4e2d}\\x{67e5}\\x{770b}\\x{6b64}\\x{5546}\\x{54c1})|(\\x{5546}\\x{54c1}\\x{5c55}\\x{793a})|(\\x{4ea7}\\x{54c1}\\x{8be6}\\x{60c5})|(\\d{1,6}\\s*\\x{4eba}\\x{6652}\\x{5355})|(\\x{52a0}\\x{5165}\\x{8cfc}\\x{7269}\\x{8eca})|(\\x{76f4}\\x{63a5}\\x{8cfc}\\x{8cb7})|(\\x{5546}\\x{54c1}\\x{7279}\\x{8272})|(\\x{5546}\\x{54c1}\\x{898f}\\x{683c})|(\\x{5546}\\x{54c1}\\x{8a73}\\x{60c5})|(\\x{7acb}\\x{5373}\\x{8cfc}\\x{8cb7})|(\\x{52a0}\\x{5165}\\x{6211}\\x{7684}\\x{8cfc}\\x{7269}\\x{8eca})|(\\x{5546}\\x{54c1}\\x{8aaa}\\x{660e}))"}},"domains_config_list":{"360.cn":{"image_traget_url_extraction":true},"6pm.com":{"image_traget_url_extraction":true},"9gag.com":{"image_traget_url_extraction":true,"picl_disabled":true},"aarp.org":{"image_traget_url_extraction":true},"abc.net.au":{"image_traget_url_extraction":true},"accuweather.com":{"image_traget_url_extraction":true,"picl_disabled":true},"acs.org":{"image_traget_url_extraction":true},"active.com":{"image_traget_url_extraction":true},"adobe.com":{"picl_disabled":true},"agoda.com":{"image_traget_url_extraction":true},"aircanada.com":{"image_traget_url_extraction":true},"alarabiya.net":{"image_traget_url_extraction":true},"alibaba.com":{"image_traget_url_extraction":true},"aliexpress.com":{"image_traget_url_extraction":true},"allrecipes.com":{"image_traget_url_extraction":true,"picl_disabled":true},"amartfurniture.com.au":{"picl_disabled":true},"amazon.ca":{"image_traget_url_extraction":true},"amazon.co.jp":{"image_traget_url_extraction":true},"amazon.co.uk":{"image_traget_url_extraction":true},"amazon.com":{"image_traget_url_extraction":true},"amazon.in":{"image_traget_url_extraction":true},"aol.com":{"image_traget_url_extraction":true,"picl_disabled":true},"archive.org":{"image_traget_url_extraction":true,"picl_disabled":true},"ask.com":{"image_traget_url_extraction":true,"picl_disabled":true},"asos.com":{"image_traget_url_extraction":true},"authenticwatches.com":{"picl_disabled":true},"autotrader.com":{"image_traget_url_extraction":true},"azlyrics.com":{"image_traget_url_extraction":true},"babycenter.com":{"image_traget_url_extraction":true},"baidu.com":{"image_traget_url_extraction":false},"bankofamerica.com":{"image_traget_url_extraction":true,"picl_disabled":true},"barnesandnoble.com":{"image_traget_url_extraction":true},"bartleby.com":{"image_traget_url_extraction":true},"basicinvite.com":{"picl_disabled":true},"bbc.co.uk":{"picl_disabled":true},"becu.com":{"picl_disabled":true},"bedbathandbeyond.com":{"image_traget_url_extraction":true},"berkeley.edu":{"image_traget_url_extraction":true},"bestbuy.com":{"image_traget_url_extraction":true},"bhg.com":{"image_traget_url_extraction":true},"bhphotovideo.com":{"image_traget_url_extraction":true},"bigw.com.au":{"picl_disabled":true},"bing.com":{"image_traget_url_extraction":true,"picl_disabled":true,"use_src_attr_for_image_extraction":true},"biomedcentral.com":{"image_traget_url_extraction":true},"bleacherreport.com":{"image_traget_url_extraction":true},"bloomberg.com":{"image_traget_url_extraction":true,"picl_disabled":true},"bmj.com":{"image_traget_url_extraction":true},"bodybuilding.com":{"image_traget_url_extraction":true},"bonappetit.com":{"image_traget_url_extraction":true},"booking.com":{"image_traget_url_extraction":true,"picl_disabled":true},"booktopia.com.au":{"picl_disabled":true},"boxrec.com":{"image_traget_url_extraction":true},"britannica.com":{"image_traget_url_extraction":true},"britishcouncil.org":{"image_traget_url_extraction":true},"businessinsider.com":{"image_traget_url_extraction":true,"picl_disabled":true},"buyma.com":{"picl_disabled":true},"cafemom.com":{"image_traget_url_extraction":true},"cambridge.org":{"image_traget_url_extraction":true},"canada.ca":{"picl_disabled":true},"caranddriver.com":{"image_traget_url_extraction":true},"cargurus.com":{"image_traget_url_extraction":true},"cars.com":{"image_traget_url_extraction":true},"carsons.com":{"picl_disabled":true},"castedduonline.it":{"picl_disabled":true},"catch.com.au":{"picl_disabled":true},"cavenders.com":{"picl_disabled":true},"cbc.ca":{"image_traget_url_extraction":true},"cbssports.com":{"image_traget_url_extraction":true},"cdc.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"change.org":{"image_traget_url_extraction":true},"chase.com":{"picl_disabled":true},"chess.com":{"image_traget_url_extraction":true,"picl_disabled":true},"china.com.cn":{"image_traget_url_extraction":true},"chinadaily.com.cn":{"image_traget_url_extraction":true,"picl_disabled":true},"chron.com":{"image_traget_url_extraction":true},"citibank.com":{"picl_disabled":true},"classiccars.com":{"picl_disabled":true},"clevelandclinic.org":{"image_traget_url_extraction":true},"cnbc.com":{"image_traget_url_extraction":true,"picl_disabled":true},"cnn.com":{"image_traget_url_extraction":true,"picl_disabled":true},"codecademy.com":{"image_traget_url_extraction":true},"coles.com.au":{"picl_disabled":true},"colorado.edu":{"image_traget_url_extraction":true},"columbia.edu":{"image_traget_url_extraction":true},"cornell.edu":{"image_traget_url_extraction":true},"cosmopolitan.com":{"image_traget_url_extraction":true},"costco.com":{"image_traget_url_extraction":true},"countryliving.com":{"image_traget_url_extraction":true},"coursera.org":{"image_traget_url_extraction":true},"covers.com":{"image_traget_url_extraction":true},"cratejoy.com":{"picl_disabled":true},"crayola.com":{"picl_disabled":true},"cricbuzz.com":{"image_traget_url_extraction":true,"picl_disabled":true},"crtc.gc.ca":{"image_traget_url_extraction":true,"picl_disabled":true},"dailymail.co.uk":{"image_traget_url_extraction":true},"debenhams.com":{"picl_disabled":true},"desmos.com":{"image_traget_url_extraction":true},"dickblick.com":{"picl_disabled":true},"digg.com":{"image_traget_url_extraction":true},"diplomatie.gouv.fr":{"image_traget_url_extraction":true},"discogs.com":{"image_traget_url_extraction":true},"discord.com":{"picl_disabled":true},"diy.com":{"picl_disabled":true},"dpreview.com":{"image_traget_url_extraction":true},"dropbox.com":{"picl_disabled":true},"drudgereport.com":{"image_traget_url_extraction":true},"drugs.com":{"image_traget_url_extraction":true},"dw.com":{"image_traget_url_extraction":true},"ea.com":{"image_traget_url_extraction":true},"easports.com":{"image_traget_url_extraction":true},"ebay.co.uk":{"image_traget_url_extraction":true},"ebay.com":{"image_traget_url_extraction":true},"ebay.com.au":{"picl_disabled":true},"edmunds.com":{"image_traget_url_extraction":true},"ehow.com":{"image_traget_url_extraction":true},"elsevier.com":{"image_traget_url_extraction":true},"eonline.com":{"image_traget_url_extraction":true},"ereplacementparts.com":{"picl_disabled":true},"espn.com":{"image_traget_url_extraction":false,"picl_disabled":true},"espncricinfo.com":{"image_traget_url_extraction":true,"picl_disabled":true},"esquire.com":{"image_traget_url_extraction":true},"etsy.com":{"image_traget_url_extraction":true},"euronews.com":{"image_traget_url_extraction":true},"europa.eu":{"image_traget_url_extraction":true},"eurosport.com":{"image_traget_url_extraction":true},"expatriates.com":{"image_traget_url_extraction":true},"facebook.com":{"image_traget_url_extraction":true,"picl_disabled":true},"fandom.com":{"picl_disabled":true},"fanfiction.net":{"image_traget_url_extraction":true},"fao.org":{"image_traget_url_extraction":true},"fatbraintoys.com":{"picl_disabled":true},"fda.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"filgoal.com":{"image_traget_url_extraction":true},"firmoo.com":{"picl_disabled":true},"fishpond.com.au":{"picl_disabled":true},"fixya.com":{"image_traget_url_extraction":true},"flipkart.com":{"image_traget_url_extraction":true},"fontsquirrel.com":{"image_traget_url_extraction":true},"food.com":{"image_traget_url_extraction":true},"foodnetwork.com":{"image_traget_url_extraction":true},"fool.com":{"image_traget_url_extraction":true},"football365.com":{"image_traget_url_extraction":true},"formula1.com":{"image_traget_url_extraction":true},"foxnews.com":{"image_traget_url_extraction":true,"picl_disabled":true},"foxsports.com":{"image_traget_url_extraction":true},"frontgate.com":{"picl_disabled":true},"gamespot.com":{"image_traget_url_extraction":true},"gap.com":{"image_traget_url_extraction":true},"ge.xhamster.desi":{"picl_disabled":true},"gizmodo.com":{"image_traget_url_extraction":true},"go.com":{"image_traget_url_extraction":false},"goal.com":{"image_traget_url_extraction":true},"godaddy.com":{"picl_disabled":true},"goodhousekeeping.com":{"image_traget_url_extraction":true},"goodreads.com":{"image_traget_url_extraction":true},"google.ca":{"image_traget_url_extraction":true,"picl_disabled":true},"google.cat":{"image_traget_url_extraction":true,"picl_disabled":true},"google.co.in":{"image_traget_url_extraction":true},"google.co.uk":{"image_traget_url_extraction":true,"picl_disabled":true},"google.com":{"image_traget_url_extraction":true,"picl_disabled":true},"gov.uk":{"picl_disabled":true},"groupon.com":{"image_traget_url_extraction":true},"grubhub.com":{"image_traget_url_extraction":true},"gsmarena.com":{"image_traget_url_extraction":true},"harvard.edu":{"image_traget_url_extraction":true},"health.com":{"image_traget_url_extraction":true},"healthgrades.com":{"image_traget_url_extraction":true},"heart.org":{"image_traget_url_extraction":true},"herroom.com":{"picl_disabled":true},"hgtv.com":{"image_traget_url_extraction":true},"hindustantimes.com":{"image_traget_url_extraction":true},"hm.com":{"image_traget_url_extraction":true},"hollywoodreporter.com":{"image_traget_url_extraction":true},"homedepot.com":{"image_traget_url_extraction":true},"hotels.com":{"image_traget_url_extraction":true},"howstuffworks.com":{"image_traget_url_extraction":true},"hp.com":{"image_traget_url_extraction":true},"hse.ru":{"image_traget_url_extraction":true},"hulu.com":{"picl_disabled":true},"humblebundle.com":{"image_traget_url_extraction":true},"icy-veins.com":{"image_traget_url_extraction":true},"ign.com":{"image_traget_url_extraction":true,"picl_disabled":true},"ikea.com":{"image_traget_url_extraction":true},"imdb.com":{"picl_disabled":true},"imgur.com":{"picl_disabled":true},"indeed.com":{"picl_disabled":true},"indiamart.com":{"image_traget_url_extraction":true},"indianexpress.com":{"image_traget_url_extraction":true},"indiatimes.com":{"image_traget_url_extraction":true,"picl_disabled":true},"instagram.com":{"picl_disabled":true},"instructables.com":{"image_traget_url_extraction":true},"investing.com":{"image_traget_url_extraction":true,"picl_disabled":true},"investopedia.com":{"image_traget_url_extraction":true,"picl_disabled":true},"irishtimes.com":{"image_traget_url_extraction":true},"irna.ir":{"image_traget_url_extraction":true},"irs.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"jalopnik.com":{"image_traget_url_extraction":true},"japan-onlinestore.com":{"picl_disabled":true},"japanpost.jp":{"image_traget_url_extraction":true},"jnu.edu.cn":{"image_traget_url_extraction":true},"jw.org":{"image_traget_url_extraction":true},"jwpepper.com":{"picl_disabled":true},"khanacademy.org":{"image_traget_url_extraction":true,"picl_disabled":true},"kmart.com":{"picl_disabled":true},"kmart.com.au":{"picl_disabled":true},"kogan.com":{"picl_disabled":true},"kohls.com":{"image_traget_url_extraction":true},"komeri.com":{"picl_disabled":true},"kongregate.com":{"image_traget_url_extraction":true},"lanebryant.com":{"picl_disabled":true},"latimes.com":{"image_traget_url_extraction":true},"legacy.com":{"image_traget_url_extraction":true},"lego.com":{"image_traget_url_extraction":true},"lifehack.org":{"image_traget_url_extraction":true},"linkedin.com":{"image_traget_url_extraction":true,"picl_disabled":true},"littletoncoin.com":{"picl_disabled":true},"live.com":{"picl_disabled":true},"livemint.com":{"image_traget_url_extraction":true},"liverpoolfc.com":{"image_traget_url_extraction":true},"livescience.com":{"image_traget_url_extraction":true},"loc.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"lonelyplanet.com":{"image_traget_url_extraction":true},"lordandtaylor.com":{"picl_disabled":true},"lowes.com":{"image_traget_url_extraction":true},"maccosmetics.com":{"picl_disabled":true},"macys.com":{"image_traget_url_extraction":true},"mail.google.com":{"picl_disabled":true},"mama.cn":{"image_traget_url_extraction":true},"marketwatch.com":{"image_traget_url_extraction":true},"mathrubhumi.com":{"image_traget_url_extraction":true,"picl_disabled":true},"mcafee.com":{"picl_disabled":true},"medicinenet.com":{"image_traget_url_extraction":true},"medscape.com":{"image_traget_url_extraction":true},"menshealth.com":{"image_traget_url_extraction":true},"mercola.com":{"image_traget_url_extraction":true},"merriam-webster.com":{"image_traget_url_extraction":true,"picl_disabled":true},"meteoblue.com":{"picl_disabled":true},"microsoft.com":{"image_traget_url_extraction":true},"microsoftonline.com":{"picl_disabled":true},"minecraft.net":{"image_traget_url_extraction":true},"miniclip.com":{"image_traget_url_extraction":true},"minne.com":{"picl_disabled":true},"minted.com":{"picl_disabled":true},"mit.edu":{"image_traget_url_extraction":true,"picl_disabled":true},"monotaro.com":{"picl_disabled":true},"motorsport.com":{"image_traget_url_extraction":true},"mozilla.org":{"image_traget_url_extraction":true,"picl_disabled":true},"msn.com":{"image_traget_url_extraction":true,"picl_disabled":true},"myer.com.au":{"picl_disabled":true},"myfitnesspal.com":{"image_traget_url_extraction":true},"nba.com":{"image_traget_url_extraction":true},"nbcnews.com":{"image_traget_url_extraction":true,"picl_disabled":true},"nbcsports.com":{"image_traget_url_extraction":true},"ndtv.com":{"image_traget_url_extraction":true,"picl_disabled":true},"nejm.org":{"image_traget_url_extraction":true},"netflix.com":{"picl_disabled":true},"newegg.com":{"image_traget_url_extraction":true},"news.com.au":{"image_traget_url_extraction":true},"newsweek.com":{"image_traget_url_extraction":true},"nexusmods.com":{"image_traget_url_extraction":true},"nhl.com":{"image_traget_url_extraction":true},"nih.gov":{"image_traget_url_extraction":true},"nike.com":{"image_traget_url_extraction":true},"nintendo.com":{"image_traget_url_extraction":true},"noaa.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"nordstrom.com":{"image_traget_url_extraction":true},"npr.org":{"image_traget_url_extraction":true},"nps.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"nypost.com":{"image_traget_url_extraction":true,"picl_disabled":true},"nytimes.com":{"image_traget_url_extraction":true,"picl_disabled":true},"office.com":{"picl_disabled":true},"ohiolottery.com":{"picl_disabled":true},"okezone.com":{"image_traget_url_extraction":true},"onlyfans.com":{"picl_disabled":true},"outlook-sdf.office.com":{"picl_disabled":true},"outlook.com":{"picl_disabled":true},"outlook.live.com":{"picl_disabled":true},"outlook.office.com":{"picl_disabled":true},"parents.com":{"image_traget_url_extraction":true},"pbs.org":{"image_traget_url_extraction":true},"pbskids.org":{"image_traget_url_extraction":true},"pcgamer.com":{"image_traget_url_extraction":true},"pgatour.com":{"image_traget_url_extraction":true},"pinkbike.com":{"image_traget_url_extraction":true},"pinterest.com":{"image_traget_url_extraction":true,"picl_disabled":true},"planetminecraft.com":{"image_traget_url_extraction":true,"picl_disabled":true},"playstation.com":{"image_traget_url_extraction":true},"plos.org":{"image_traget_url_extraction":true},"pointp.fr":{"picl_disabled":true},"pokemon.com":{"image_traget_url_extraction":true},"ponparemall.com":{"picl_disabled":true},"pornhub.com":{"picl_disabled":true},"powells.com":{"picl_disabled":true},"psu.edu":{"image_traget_url_extraction":true},"psychologytoday.com":{"image_traget_url_extraction":true},"puritan.com":{"picl_disabled":true},"purplewave.com":{"picl_disabled":true},"qq.com":{"image_traget_url_extraction":true},"raspberrypi.org":{"image_traget_url_extraction":true},"realsimple.com":{"image_traget_url_extraction":true},"realtor.com":{"image_traget_url_extraction":true,"picl_disabled":true},"reddit.com":{"image_traget_url_extraction":false,"picl_disabled":true},"redfin.com":{"picl_disabled":true},"rei.com":{"image_traget_url_extraction":true},"reuters.com":{"image_traget_url_extraction":true,"picl_disabled":true},"rightmove.co.uk":{"picl_disabled":true},"roblox.com":{"picl_disabled":true},"rockpapershotgun.com":{"image_traget_url_extraction":true},"rollingstone.com":{"image_traget_url_extraction":true},"rotoworld.com":{"image_traget_url_extraction":true},"rottentomatoes.com":{"image_traget_url_extraction":true,"picl_disabled":true},"royalbank.com":{"picl_disabled":true},"royalmail.com":{"image_traget_url_extraction":true},"rt.com":{"image_traget_url_extraction":true,"picl_disabled":true},"runnersworld.com":{"image_traget_url_extraction":true},"salon.com":{"image_traget_url_extraction":true},"sbnation.com":{"image_traget_url_extraction":true},"sciencedaily.com":{"image_traget_url_extraction":true},"sciencemag.org":{"image_traget_url_extraction":true},"scientificamerican.com":{"image_traget_url_extraction":true},"scotiaonline.scotiabank.com":{"picl_disabled":true},"screenrant.com":{"image_traget_url_extraction":true},"screwfix.com":{"picl_disabled":true},"scribd.com":{"image_traget_url_extraction":true},"sdsu.edu":{"image_traget_url_extraction":true},"sec.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"secure.lloydsbank.co.uk":{"picl_disabled":true},"securebusiness.lloydsbank.co.uk":{"picl_disabled":true},"self.com":{"image_traget_url_extraction":true},"sherdog.com":{"image_traget_url_extraction":true},"shutterfly.com":{"image_traget_url_extraction":true},"sina.com.cn":{"image_traget_url_extraction":true},"sky.com":{"image_traget_url_extraction":true},"skyscanner.com":{"image_traget_url_extraction":true},"slate.com":{"image_traget_url_extraction":true},"slideshare.net":{"image_traget_url_extraction":true,"picl_disabled":true},"snopes.com":{"image_traget_url_extraction":true},"sohu.com":{"image_traget_url_extraction":true},"space.com":{"image_traget_url_extraction":true},"sparknotes.com":{"image_traget_url_extraction":true},"sportsmansguide.com":{"picl_disabled":true},"spotlightstores.com":{"picl_disabled":true},"square-enix.com":{"image_traget_url_extraction":true},"sstack.com":{"picl_disabled":true},"stackoverflow.com":{"picl_disabled":true},"stanford.edu":{"image_traget_url_extraction":true},"staples.com":{"image_traget_url_extraction":true},"state.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"steampowered.com":{"image_traget_url_extraction":true},"studentdoctor.net":{"image_traget_url_extraction":true},"sulekha.com":{"image_traget_url_extraction":true},"superdrug.com":{"picl_disabled":true},"szu.edu.cn":{"image_traget_url_extraction":true},"taobao.com":{"image_traget_url_extraction":true},"target.com":{"image_traget_url_extraction":true},"tax.service.gov.uk":{"picl_disabled":true},"td.com":{"image_traget_url_extraction":true,"picl_disabled":true},"techstreet.com":{"picl_disabled":true},"tesco.com":{"picl_disabled":true},"theasianparent.com":{"image_traget_url_extraction":true},"theatlantic.com":{"image_traget_url_extraction":true},"thedailybeast.com":{"image_traget_url_extraction":true},"thefreedictionary.com":{"image_traget_url_extraction":true},"thehill.com":{"image_traget_url_extraction":true},"thelancet.com":{"image_traget_url_extraction":true},"thesaurus.com":{"image_traget_url_extraction":true,"picl_disabled":true},"thesimsresource.com":{"image_traget_url_extraction":true},"thespruce.com":{"image_traget_url_extraction":true},"thespruceeats.com":{"image_traget_url_extraction":true},"theverge.com":{"image_traget_url_extraction":true,"picl_disabled":true},"thoughtco.com":{"image_traget_url_extraction":true},"thrillist.com":{"image_traget_url_extraction":true},"ticketmaster.com":{"image_traget_url_extraction":true},"time.com":{"image_traget_url_extraction":true,"picl_disabled":true},"tmall.com":{"image_traget_url_extraction":true},"tmz.com":{"image_traget_url_extraction":true},"tomsguide.com":{"image_traget_url_extraction":true},"tomshardware.com":{"image_traget_url_extraction":true},"tonyrobbins.com":{"image_traget_url_extraction":true},"tribunnews.com":{"image_traget_url_extraction":true,"picl_disabled":true},"tripadvisor.co.uk":{"picl_disabled":true},"tripsavvy.com":{"image_traget_url_extraction":true},"trivago.com":{"image_traget_url_extraction":true},"tsn.ca":{"image_traget_url_extraction":true},"tums.ac.ir":{"image_traget_url_extraction":true},"turnitin.com":{"image_traget_url_extraction":true},"twitch.tv":{"image_traget_url_extraction":true,"picl_disabled":true},"twitter.com":{"image_traget_url_extraction":true,"picl_disabled":true},"ubisoft.com":{"image_traget_url_extraction":true},"udemy.com":{"image_traget_url_extraction":true},"un.org":{"image_traget_url_extraction":true},"unesco.org":{"image_traget_url_extraction":true},"unity3d.com":{"image_traget_url_extraction":true},"usatoday.com":{"image_traget_url_extraction":false,"picl_disabled":true},"usda.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"usgs.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"usps.com":{"picl_disabled":true},"utoronto.ca":{"image_traget_url_extraction":true},"vectorstock.com":{"image_traget_url_extraction":true},"verizonwireless.com":{"image_traget_url_extraction":true},"verywellfit.com":{"image_traget_url_extraction":true},"verywellmind.com":{"image_traget_url_extraction":true},"vice.com":{"image_traget_url_extraction":false,"picl_disabled":true},"vitals.com":{"image_traget_url_extraction":true},"walgreens.com":{"image_traget_url_extraction":true},"washingtonpost.com":{"image_traget_url_extraction":true,"picl_disabled":true},"wayfair.com":{"image_traget_url_extraction":true},"weather.com":{"image_traget_url_extraction":true,"picl_disabled":true},"weather.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"weathertech.com":{"picl_disabled":true},"webmd.com":{"image_traget_url_extraction":true,"picl_disabled":true},"wellsfargo.com":{"image_traget_url_extraction":true,"picl_disabled":true},"whoscored.com":{"image_traget_url_extraction":true},"wikipedia.org":{"image_traget_url_extraction":true,"picl_disabled":true},"wired.com":{"image_traget_url_extraction":true},"worldbank.org":{"image_traget_url_extraction":true},"wsj.com":{"image_traget_url_extraction":true,"picl_disabled":true},"wunderground.com":{"image_traget_url_extraction":true},"wwe.com":{"image_traget_url_extraction":true},"xbox.com":{"image_traget_url_extraction":true},"xhamster.com":{"picl_disabled":true},"xinhuanet.com":{"image_traget_url_extraction":true},"xvideos.com":{"picl_disabled":true},"yahoo.co.jp":{"image_traget_url_extraction":true},"yahoo.com":{"image_traget_url_extraction":true,"picl_disabled":true},"yelp.com":{"image_traget_url_extraction":true},"yoox.com":{"image_traget_url_extraction":true},"youtube.com":{"image_traget_url_extraction":true,"picl_disabled":true},"zhanqi.tv":{"image_traget_url_extraction":true},"zillow.com":{"image_traget_url_extraction":true,"picl_disabled":true},"zocdoc.com":{"image_traget_url_extraction":true},"zoom.us":{"picl_disabled":true},"zumiez.com":{"picl_disabled":true},"zvab.com":{"picl_disabled":true}},"updated_at":1785958299.812515} \ No newline at end of file +{"aee_config":{"ar":{"price_regex":{"ae":"(((ae|aed|\\x{062F}\\x{0660}\\x{0625}\\x{0660}|\\x{062F}\\.\\x{0625}|dhs|dh)\\s*\\d{1,3})|(\\d{1,3}\\s*(ae|aed|\\x{062F}\\x{0660}\\x{0625}\\x{0660}|\\x{062F}\\.\\x{0625}|dhs|dh)))","dz":"(((dzd|da|\\x{062F}\\x{062C})\\s*\\d{1,3})|(\\d{1,3}\\s*(dzd|da|\\x{062F}\\x{062C})))","eg":"(((e\\x{00a3}|egp)\\s*\\d{1,3})|(\\d{1,3}\\s*(e\\x{00a3}|egp)))","ma":"(((mad|dhs|dh)\\s*\\d{1,3})|(\\d{1,3}\\s*(mad|dhs|dh)))","sa":"((\\d{1,3}\\s*(sar\\s*\\x{fdfc}|sar|sr|\\x{fdfc}|\\.\\x{0631}\\.\\x{0633}))|((sar\\s*\\x{fdfc}|sar|sr|\\x{fdfc}|\\.\\x{0631}\\.\\x{0633})\\s*\\d{1,3}))"},"product_terms":"((\\x{0623}\\x{0636}\\x{0641}\\s*\\x{0625}\\x{0644}\\x{0649}\\s*\\x{0627}\\x{0644}\\x{0639}\\x{0631}\\x{0628}\\x{0629})|(\\x{0623}\\x{0636}\\x{0641}\\s*\\x{0625}\\x{0644}\\x{0649}\\s*\\x{0627}\\x{0644}\\x{062D}\\x{0642}\\x{064A}\\x{0628}\\x{0629})|(\\x{0627}\\x{0634}\\x{062A}\\x{0631}\\x{064A}\\s*\\x{0627}\\x{0644}\\x{0622}\\x{0646})|(\\x{062E}\\x{064A}\\x{0627}\\x{0631}\\x{0627}\\x{062A}\\s*\\x{0627}\\x{0644}\\x{062A}\\x{0648}\\x{0635}\\x{064A}\\x{0644})|(\\x{0627}\\x{0644}\\x{062A}\\x{0648}\\x{0635}\\x{064A}\\x{0644}\\s*\\x{0641}\\x{064A}\\s*\\x{0646}\\x{0641}\\x{0633}\\s*\\x{0627}\\x{0644}\\x{064A}\\x{0648}\\x{0645}\\s*\\x{0645}\\x{062A}\\x{0627}\\x{062D}))"},"autofill":{"autofill_onnx_model_config":{"autofill_class_map":{"0":"ACCOUNT_CREATION_PASSWORD","1":"ADDRESS_HOME_CITY","10":"CONFIRMATION_PASSWORD","11":"CREDIT_CARD_EXP_2_DIGIT_YEAR","12":"CREDIT_CARD_EXP_4_DIGIT_YEAR","13":"CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR","14":"CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR","15":"CREDIT_CARD_EXP_MONTH","16":"CREDIT_CARD_NAME_FIRST","17":"CREDIT_CARD_NAME_FULL","18":"CREDIT_CARD_NAME_LAST","19":"CREDIT_CARD_NUMBER","2":"ADDRESS_HOME_COUNTRY","20":"CREDIT_CARD_TYPE","21":"CREDIT_CARD_VERIFICATION_CODE","22":"DATE_OF_BIRTH_DAY","23":"DATE_OF_BIRTH_DD_MM_YYYY_DELIM_SLASH","24":"DATE_OF_BIRTH_DD_MM_YY_DELIM_SLASH","25":"DATE_OF_BIRTH_MM_DD_YYYY_DELIM_SLASH","26":"DATE_OF_BIRTH_MM_DD_YY_DELIM_SLASH","27":"DATE_OF_BIRTH_MONTH","28":"DATE_OF_BIRTH_YEAR","29":"EMAIL_ADDRESS","3":"ADDRESS_HOME_LINE1","30":"MERCHANT_PROMO_CODE","31":"NAME_FIRST","32":"NAME_FULL","33":"NAME_LAST","34":"NAME_MIDDLE","35":"NEW_PASSWORD","36":"PASSWORD","37":"PHONE_FAX_NUMBER","38":"PHONE_HOME_CITY_AND_NUMBER","39":"PHONE_HOME_CITY_CODE","4":"ADDRESS_HOME_LINE2","40":"PHONE_HOME_COUNTRY_CODE","41":"PHONE_HOME_EXTENSION","42":"PHONE_HOME_NUMBER","43":"PHONE_HOME_WHOLE_NUMBER","44":"PRICE","45":"PROBABLY_NEW_PASSWORD","46":"SEARCH_TERM","47":"UNKNOWN_TYPE","48":"USERNAME","5":"ADDRESS_HOME_LINE3","6":"ADDRESS_HOME_STATE","7":"ADDRESS_HOME_STREET_ADDRESS","8":"ADDRESS_HOME_ZIP","9":"COMPANY_NAME"},"autofill_class_num":49,"autofill_field_confidence_bar":{"ACCOUNT_CREATION_PASSWORD":"0.6","ADDRESS_HOME_CITY":"0.9","ADDRESS_HOME_COUNTRY":"0.9","ADDRESS_HOME_LINE1":"0.75","ADDRESS_HOME_LINE2":"0.6","ADDRESS_HOME_LINE3":"0.6","ADDRESS_HOME_STATE":"0.6","ADDRESS_HOME_STREET_ADDRESS":"0.6","ADDRESS_HOME_ZIP":"0.6","COMPANY_NAME":"0.9999","CONFIRMATION_PASSWORD":"0.65","CREDIT_CARD_EXP_2_DIGIT_YEAR":"0.75","CREDIT_CARD_EXP_4_DIGIT_YEAR":"0.75","CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR":"0.75","CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR":"0.75","CREDIT_CARD_EXP_MONTH":"0.75","CREDIT_CARD_NAME_FIRST":"0.75","CREDIT_CARD_NAME_FULL":"0.75","CREDIT_CARD_NAME_LAST":"0.75","CREDIT_CARD_NUMBER":"0.75","CREDIT_CARD_TYPE":"0.75","CREDIT_CARD_VERIFICATION_CODE":"0.7","DATE_OF_BIRTH_DAY":"0.9","DATE_OF_BIRTH_DD_MM_YYYY_DELIM_SLASH":"0.9999","DATE_OF_BIRTH_DD_MM_YY_DELIM_SLASH":"0.9999","DATE_OF_BIRTH_MM_DD_YYYY_DELIM_SLASH":"0.9999","DATE_OF_BIRTH_MM_DD_YY_DELIM_SLASH":"0.9999","DATE_OF_BIRTH_MONTH":"0.9","DATE_OF_BIRTH_YEAR":"0.9","EMAIL_ADDRESS":"0.6","MERCHANT_PROMO_CODE":"0.6","NAME_FIRST":"0.6","NAME_FULL":"0.9","NAME_LAST":"0.6","NAME_MIDDLE":"0.6","NEW_PASSWORD":"0.65","PASSWORD":"0.6","PHONE_FAX_NUMBER":"0.9","PHONE_HOME_CITY_AND_NUMBER":"0.9","PHONE_HOME_CITY_CODE":"0.9","PHONE_HOME_COUNTRY_CODE":"0.9","PHONE_HOME_EXTENSION":"0.9","PHONE_HOME_NUMBER":"0.9","PHONE_HOME_WHOLE_NUMBER":"0.9","PRICE":"0.6","PROBABLY_NEW_PASSWORD":"0.6","SEARCH_TERM":"0.6","UNKNOWN_TYPE":"0.6","USERNAME":"0.65"},"autofill_language_confidence_bar":{"default":0.8,"en":0.85},"autofill_max_sequence_length":384,"autofill_sliding_window":256},"model_descriptors":[{"allow_basic_extraction":false,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"picl","entity_type":"AutofillFull","extraction_scenario":"kProactive","extractor_model_major_version":"1","extractor_model_name":"autofillFull.en-us","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":false,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"picl","entity_type":"AutofillName","extraction_scenario":"kProactive","extractor_model_major_version":"2","extractor_model_name":"autofillName.en-us","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.en","page_locale":"","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.ar","page_locale":"ar","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.cs","page_locale":"cs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.de","page_locale":"de","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.en","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.es","page_locale":"es","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.fr","page_locale":"fr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.id","page_locale":"id","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.it","page_locale":"it","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.ja","page_locale":"ja","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.ko","page_locale":"ko","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.nl","page_locale":"nl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.pl","page_locale":"pl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.pt","page_locale":"pt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.ru","page_locale":"ru","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.sv","page_locale":"sv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.tr","page_locale":"tr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.vi","page_locale":"vi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Autofill","classification_confidence":1.0,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"autofillFull","extraction_scenario":"kOnDemand","extractor_model_major_version":"2","extractor_model_name":"onnx.autofill.desktop.zh","page_locale":"zh","platform":"desktop"}]},"bg":{"price_regex":{"bg":"((\\d{1,3}\\s*(bgn|\\x{043B}\\x{0432}|\\x{043B}\\x{0432}\\.))|((bgn|\\x{043B}\\x{0432}|\\x{043B}\\x{0432}\\.)\\s*\\d{1,3}))"},"product_terms":"((\\x{0414}\\x{043E}\\x{0431}\\x{0430}\\x{0432}\\x{0438}\\s*\\x{0432}\\s*\\x{043A}\\x{043E}\\x{0448}\\x{043D}\\x{0438}\\x{0446}\\x{0430}\\x{0442}\\x{0430})|(\\x{0414}\\x{043E}\\x{0431}\\x{0430}\\x{0432}\\x{0438}\\s*\\x{0432}\\s*\\x{043A}\\x{043E}\\x{043B}\\x{0438}\\x{0447}\\x{043A}\\x{0430}\\x{0442}\\x{0430})|(\\x{0414}\\x{0440}\\x{0443}\\x{0433}\\x{0438}\\s*\\x{043E}\\x{0444}\\x{0435}\\x{0440}\\x{0442}\\x{0438})|(\\x{041F}\\x{043E}\\x{0434}\\x{043E}\\x{0431}\\x{043D}\\x{0438}\\s*\\x{043F}\\x{0440}\\x{043E}\\x{0434}\\x{0443}\\x{043A}\\x{0442}\\x{0438})|(\\x{0412}\\s*\\x{043D}\\x{0430}\\x{043B}\\x{0438}\\x{0447}\\x{043D}\\x{043E}\\x{0441}\\x{0442})|(\\x{041E}\\x{043F}\\x{0438}\\x{0441}\\x{0430}\\x{043D}\\x{0438}\\x{0435}\\s*\\x{043D}\\x{0430}\\s*\\x{043F}\\x{0440}\\x{043E}\\x{0434}\\x{0443}\\x{043A}\\x{0442}\\x{0430}))"},"bs":{"price_regex":{"ba":"((\\d{1,3}\\s*(bam|km|,-\\s*km))|((bam|km|,-\\s*km)\\s*\\d{1,3}))"},"product_terms":"((dodajte\\s*u\\s*korpu)|(dodaj\\s*u\\s*korpu)|(u\\s*ko\\x{0161}aricu)|(sli\\x{010D}nim\\s*proizvodima)|(opcije\\s*dostave)|(u\\s*prodavnici))"},"character_cutoff":400,"cs":{"price_regex":{"cz":"((\\d{1,3}\\s*(czk|k\\x{010D}))|((czk|k\\x{010D})\\s*\\d{1,3}))"},"product_terms":"((p\\x{0159}idat\\s*do\\s*n\\x{00E1}kupn\\x{00ED}ho\\s*ko\\x{0161}\\x{00ED}ku)|(do\\s*ko\\x{0161}\\x{00ED}ku)|(koupit)|(detaily\\s*o\\s*v\\x{00FD}robku)|(skladem)|(doprava\\s*zdarma))"},"currency_symbol_regex_map":{"AED":"\\x{0625}|\\x{062F}\\x{002E}\\x{0625}|\\x{062f}\\x{0631}\\x{0647}\\x{0645}","AFN":"\\x{060b}","AMD":"\\x{0534}|\\x{058F}","AWG":"\\x{0192}","AZN":"\\x{043C}\\x{0430}\\x{043D}","BDT":"\\x{09F3}","BGN":"\\x{043B}\\x{0432}","BHD":"\\x{0628}\\x{002E}\\x{062F}","DZD":"\\x{062f}\\x{064a}\\x{0646}\\x{0627}\\x{0631}","EGP":"\\x{062c}\\x{0646}\\x{064a}\\x{0647}","IQD":"\\x{0639}\\x{002E}\\x{062F}|\\x{062f}\\x{002E}\\x{0639}","JOD":"\\x{062F}\\x{002E}\\x{0627}","KHR":"\\x{17DB}","KRW":"\\x{ffe6}","KWD":"\\x{062F}\\x{002E}\\x{0643}|\\x{062f}\\x{064a}\\x{0646}\\x{0627}\\x{0631}\\s*\\x{0643}\\x{0648}\\x{064a}\\x{062a}\\x{064a}","KZT":"\\x{3012}","LBP":"\\x{0644}\\x{002E}\\x{0644}\\x{002E}?","MAD":"\\x{062F}\\x{002E}\\x{0645}\\x{002E}","MVR":"\\x{0783}\\x{002E}","OMR":"\\x{0631}\\x{002E}\\x{0639}\\x{002E}|\\x{0631}\\x{064a}\\x{0627}\\x{0644}","PLN":"z\\x{0142}","QAR":"\\x{0631}\\x{002E}\\x{0642}","RUB":"\\x{0440}\\x{0443}\\x{0431}","SAR":"\\x{0631}\\x{002E}\\x{0633}|\\x{0631}\\x{0633}|\\x{fdfc}","SYP":"\\x{0644}\\x{002E}\\x{0633}","THB":"\\x{0e1a}\\x{0e32}\\x{0e17}|\\x{0e3f}","TOP":"\\x{062F}\\x{002E}\\x{062A}","WON":"\\x{C6D0}","YEN":"\\x{5186}","YER":"\\x{0631}\\x{002E}\\x{064a}"},"da":{"price_regex":{"dk":"((\\d{1,3}\\s*(dkk|kr|,-))|((dkk|kr|,-)\\s*\\d{1,3}))"},"product_terms":"((l\\x{00E6}g\\s*i\\s*indk\\x{00F8}bskurv)|(lignende\\s*produkter)|(produktinformation)|(gratis\\s*levering)|(l\\x{00E6}g\\s*i\\s*kurv)|(tilf\\x{00F8}j\\s*til\\s*kurv)|(l\\x{00E6}g\\s*i\\s*indk\\x{00F8}bskurv)|(s\\x{00E6}lg\\s*tilbage)|(lignende\\s*produkter)|(hurtigere\\s*levering)|(levering)|(v\\x{00E6}lg\\s*varehus)|(k\\x{00F8}b)|(p\\x{00E5}\\s*lager)|(fri\\s*levering)|(fri\\s*fragt)|(returnering)|(\\d+\\s*anmeldelser))"},"de":{"price_regex":{"at":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","ch":"((\\d{1,3}\\s*(sfr\\.|fr\\.|chf|\\x{20a3}))|((sfr\\.|fr\\.|chf|\\x{20a3})\\s*\\d{1,3}))","de":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","li":"((\\d{1,3}\\s*(chf|\\x{20a3}))|((chf|\\x{20a3})\\s*\\d{1,3}))","lu":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((in\\s*den\\s*warenkorb)|(in\\s*den\\s*kaufswagen\\s*hinzufügen)|(in\\s*den\\s*einkaufswagen\\s*hinzufügen)|(zum\\s*tasche\\s*hinzufügen)|(kauft\\s*es\\s*jetzt)|(jetzt\\s*kaufen)|(kostenlose\\s*lieferung)|(gratisversand)|(voraussichtliche\\s*lieferung)|(vergriffen)|(auf\\s*lager)|(ausverkauft)|(auf\\s*die\\s*liste)|((schnellster|express|lkw|für|zu hause)|(standard\\s*versand)|(versand\\s*es)|(finden sie\\s*in\\s*einemanderen\\s*geschäft)|(( bordsteinkante | abholung|im)\\s*laden)|((abholung|am)\\s*straßenrand)|(auf\\s*die\\s*(liste| wunchzettel | registrierung))|(nur\\s*\\d{1,3}\\s*noch)|(produkt\\s*(informationen|details| übersicht | spezifikationen))|(abholung\\s*vor\\s*ort)|(spezielle \\s* angebote)|(versand\\s* verfügbarkeit)|(größentabelle)|(über\\s*produkt)|(könnten\\s*ihnen\\s*auch\\s*gefallen)|(im\\s*geschäft\\s*finden)|(auch\\s* verfügbar)|(auf\\s*lager)|(über \\s*diese\\s*produkt)|(verfügbarkeit\\s*prüfen)|(fahrzeugdaten)|(fahrzeugeigenschaften)|(kontakt \\s*händler)|(verfügbarkeit\\s*bestätigen)|(fahrzeuginformationen)))"},"default_locale_map":{"bg":"bg-bg","bs":"bs-ba","cs":"cs-cz","da":"da-dk","de":"de-de","el":"el-gr","en":"en-us","es":"es-mx","et":"et-ee","fa":"fa-ir","fi":"fi-fi","fr":"fr-fr","he":"he-il","hr":"hr-hr","hu":"hu-hu","id":"id-id","is":"is-is","it":"it-it","ja":"ja-jp","ko":"ko-kr","lt":"lt-lt","lv":"lv-lv","mk":"mk-mk","nb":"nb-no","nl":"nl-nl","no":"no-no","pl":"pl-pl","pt":"pt-pt","ro":"ro-ro","ru":"ru-ru","sk":"sk-sk","sl":"sl-si","sr":"sr-rs","sv":"sv-se","th":"th-th","tr":"tr-tr","ua":"ua-ua","vi":"vi-vn","zh":"zh-cn"},"domain_page_locales":{"ajio.com":"en-in","asda.com":"en-gb","bigbasket.com":"en-in","blakelyclothing.com":"en-gb","boat-lifestyle.com":"en-in","dangdang.com":"zh-cn","discogs.com":"en-gb","diy.com":"en-gb","elpalaciodehierro.com":"es-mx","elsotano.com":"es-mx","enviaflores.com":"es-mx","fabindia.com":"en-in","fahorro.com":"es-mx","firstcry.com":"en-in","flipkart.com":"en-in","fnp.com":"en-in","grandandtoy.com":"en-ca","innovasport.com":"es-mx","intercompras.com":"es-mx","jianke.com":"zh-cn","kaola.com.hk":"zh-cn","kongfz.com":"zh-cn","mairuan.com":"zh-cn","marks.com":"en-ca","modicare.com":"en-in","moglix.com":"en-in","myntra.com":"en-in","netmeds.com":"en-in","nordstrom.com":"en-us","nordstromrack.com":"en-us","pcel.com":"es-mx","primor.eu":"es-es","princessauto.com":"en-ca","prohockeylife.com":"en-ca","rappi.com.mx":"es-mx","reitmans.com":"en-ca","sanborns.com.mx":"es-mx","sastasundar.com":"en-in","screwfix.com":"en-gb","shopclues.com":"en-in","shopperstop.com":"en-in","snapdeal.com":"en-in","soriana.com":"es-mx","suning.com":"zh-cn","superdrug.com":"en-gb","tatacliq.com":"en-in","tesco.com":"en-gb","tiendapanini.com.mx":"es-mx","todocoleccion.net":"es-es","waitrose.com":"en-gb","waitrosecellar.com":"en-gb"},"ee_timeout_threshold_seconds":5,"el":{"price_regex":{"cy":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gr":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((\\x{03A0}\\x{03C1}\\x{03BF}\\x{03C3}\\x{03B8}\\x{03AE}\\x{03BA}\\x{03B7})|(\\x{0391}\\x{03A0}\\x{039F}\\x{03A3}\\x{03A4}\\x{039F}\\x{039B}\\x{0397}\\s*\\x{039A}\\x{0391}\\x{0399}\\s*\\x{03A0}\\x{039B}\\x{0397}\\x{03A1}\\x{03A9}\\x{039C}\\x{0397})|(\\x{0394}\\x{0399}\\x{0391}\\x{0398}\\x{0395}\\x{03A3}\\x{0399}\\x{039C}\\x{039F}\\x{03A4}\\x{0397}\\x{03A4}\\x{0391}\\s*\\x{039A}\\x{0391}\\x{03A4}\\x{0391}\\x{03A3}\\x{03A4}\\x{0397}\\x{039C}\\x{0391}\\x{03A4}\\x{039F}\\x{03A3}))"},"en":{"price_regex":{"ae":"(((ae|aed|\\x{062F}\\x{0660}\\x{0625}\\x{0660})\\s*\\d{1,3})|(\\d{1,3}\\s*(ae|aed|\\x{062F}\\x{0660}\\x{0625}\\x{0660})))","am":"(((\\x{058F}|amd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{058F}|amd)))","au":"(((\\$|au|aud)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|au|aud)))","aw":"(((awg|\\x{0192})\\s*\\d{1,3})|(\\d{1,3}\\s*(awg|\\x{0192})))","az":"(((\\x{20BC}|azn|m)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{20BC}|azn|m)))","bd":"(((bdt\\s*\\x{09f3}|bdt|\\x{09f3})\\s*\\d{1,3})|(\\d{1,3}\\s*(bdt\\s*\\x{09f3}|bdt|\\x{09f3})))","bn":"(((bnd|b\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(bnd|b\\$)))","bs":"(((\\$|b\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|b\\$)))","bz":"(((bzd\\$|bzd|bz\\$|bz|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(bzd\\$|bzd|bz\\$|bz|\\$)))","ca":"(((\\$|cdn|(c\\s*\\$))\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|cdn|(c\\s*\\$)))","cy":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","cz":"((\\d{1,3}\\s*(czk|k\\x{010D}))|((czk|k\\x{010D})\\s*\\d{1,3}))","de":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","dk":"((\\d{1,3}\\s*(dkk|kr|,-))|((dkk|kr|,-)\\s*\\d{1,3}))","dm":"(((xcd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(xcd|\\$)))","dz":"(((dzd|da|\\x{062F}\\x{062C})\\s*\\d{1,3})|(\\d{1,3}\\s*(dzd|da|\\x{062F}\\x{062C})))","eg":"(((e\\x{00a3}|egp)\\s*\\d{1,3})|(\\d{1,3}\\s*(e\\x{00a3}|egp)))","et":"(((br|etb)\\s*\\d{1,3})|(\\d{1,3}\\s*(br|etb)))","fi":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gb":"(((\\x{00a3}|gbp)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{00a3}|gbp)))","ge":"(((\\x{10DA}|gel)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{10DA}|gel)))","gh":"((\\d{1,3}\\s*(ghs|gh\\x{00A2}|gh\\x{20B5}|\\x{20B5}|\\x{00A2}))|((ghs|gh\\x{00A2}|gh\\x{20B5}|\\x{20B5}|\\x{00A2})\\s*\\d{1,3}))","gm":"(((gmd|d)\\s*\\d{1,3})|(\\d{1,3}\\s*(gmd|d)))","gr":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gu":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","gy":"(((\\$|gy|gyd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|gy|gyd)))","hk":"((\\d{1,3}\\s*(\\$|\\x{5143}))|((\\x{ffe5}|\\x{00a5}|hkd|\\$)\\s*\\d{1,3}))","hu":"(((ft|huf)\\s*\\d{1,3})|(\\d{1,3}\\s*(ft|huf)))","id":"(((rp|ind)\\s*\\d{1,3})|(\\d{1,3}\\s*(rp|ind)))","ie":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","il":"((\\d{1,3}\\s*(ils|\\x{20AA}))|((ils|\\x{20AA})\\s*\\d{1,3}))","in":"(((\\x{20B9}|rs|rs\\.)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{20B9}|rs|rs\\.)))","jm":"(((jmd\\s*\\$|jmd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(jmd\\s*\\$|jmd|\\$)))","ke":"(((kes|ksh|k)\\s*\\d{1,3})|(\\d{1,3}\\s*(kes|ksh|k)))","kg":"(((kgs|\\x{041B}\\x{0432})\\s*\\d{1,3})|(\\d{1,3}\\s*(kgs|\\x{041B}\\x{0432})))","ky":"(((\\$|ky|kyd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|ky|kyd)))","lb":"((\\d{1,3}\\s*(lbp\\s*\\x{00a3}|lbp|\\x{00a3}\\s*l|\\x{00a3}))|((lbp\\s*\\x{00a3}|lbp|\\x{00a3}\\s*l|\\x{00a3})\\s*\\d{1,3}))","lk":"(((lkr|rs\\/.|rs|\\x{0BB0}\\x{0BC2}|\\x{0DBB}\\x{0DD4})\\s*\\d{1,3})|(\\d{1,3}\\s*(lkr|rs\\/.|rs|\\x{0BB0}\\x{0BC2}|\\x{0DBB}\\x{0DD4})))","ls":"(((lsl|m)\\s*\\d{1,3})|(\\d{1,3}\\s*(lsl|m)))","ly":"(((lyd|\\x{0644}\\x{002E}\\x{062F}|ld)\\s*\\d{1,3})|(\\d{1,3}\\s*(lyd|\\x{0644}\\x{002E}\\x{062F}|ld)))","ma":"(((mad|dhs|dh)\\s*\\d{1,3})|(\\d{1,3}\\s*(mad|dhs|dh)))","md":"(((mdl\\s*l|mdl|lei|l)\\s*\\d{1,3})|(\\d{1,3}\\s*(mdl\\s*l|mdl|lei|l)))","mn":"(((mnt|\\x{20AE})\\s*\\d{1,3})|(\\d{1,3}\\s*(mnt|\\x{20AE})))","mt":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","mv":"(((mvr|mrf|rf)\\s*\\d{1,3})|(\\d{1,3}\\s*(mvr|mrf|rf)))","my":"(((rm|myr)\\s*\\d{1,3})|(\\d{1,3}\\s*(rm|myr)))","ng":"(((ngn|ng|\\x{20a6})\\s*\\d{1,3})|(\\d{1,3}\\s*(ngn|ng|\\x{20a6})))","np":"(((npr\\s*rs|npr|rs\\/.|re\\/.|rs|re)\\s*\\d{1,3})|(\\d{1,3}\\s*(npr\\s*rs|npr|rs\\/.|re\\/.|rs|re)))","nz":"(((nz\\$|nzd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(nz\\$|nzd|\\$)))","pg":"(((pgk|k)\\s*\\d{1,3})|(\\d{1,3}\\s*(pgk|k)))","ph":"((\\d{1,3}\\s*(\\x{20b1}|php))|((\\x{20b1}|php)\\s*\\d{1,3}))","pk":"(((rs|pk|pkr)\\s*\\d{1,3})|(\\d{1,3}\\s*(rs|pk|pkr)))","pr":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","sa":"((\\d{1,3}\\s*(sar\\s*\\x{fdfc}|sar|sr|\\x{fdfc}|\\.\\x{0631}\\.\\x{0633}))|((sar\\s*\\x{fdfc}|sar|sr|\\x{fdfc}|\\.\\x{0631}\\.\\x{0633})\\s*\\d{1,3}))","sg":"(((s\\$|sgd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(s\\$|sgd|\\$)))","sk":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","th":"(((thb|\\x{0e3f})\\s*\\d{1,3})|(\\d{1,3}\\s*(thb|\\x{0e3f})))","tj":"(((tjs|\\x{0405}\\x{041C})\\s*\\d{1,3})|(\\d{1,3}\\s*(tjs|\\x{0405}\\x{041C})))","tt":"(((\\$|ttd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|ttd)))","us":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","vn":"(((vnd|\\x{20ab})\\s*\\d{1,3})|(\\d{1,3}\\s*(vnd|\\x{20ab})))","za":"(((r|zar)\\s*\\d{1,3})|(\\d{1,3}\\s*(r|zar)))"},"product_terms":"((add\\s*to\\s*cart)|(add\\s*to\\s*basket)|(add\\s*to\\s*bag))"},"equivalent_locale_map":{"-tw":"zh-tw","en-gb-au":"en-au","en-gb-ca":"en-ca","en-gb-gb":"en-gb","en-gb-in":"en-in","us-en":"en-us","zh-hans-cn":"zh-cn","zh-hant":"zh-tw"},"es":{"price_regex":{"ar":"(((\\$|ars)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|ars)))","bo":"(((\\$b|bob|bs)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$b|bob|bs)))","cl":"(((cl\\$|clp|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(cl\\$|clp|\\$)))","co":"(((\\$|cop)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|cop)))","cr":"(((\\x{20a1}|crc)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\x{20a1}|crc)))","do":"(((\\$|dop)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|dop)))","ec":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","es":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gt":"(((q|gt)\\s*\\d{1,3})|(\\d{1,3}\\s*(q|gt)))","hn":"(((l|hn)\\s*\\d{1,3})|(\\d{1,3}\\s*(l|hn)))","mx":"((\\d{1,3}\\s*(\\x{0024}\\s*mxn|\\x{0024}|mxn|mex\\s*\\x{0024}))|((\\x{0024}\\s*mxn|\\x{0024}|mxn|mex\\s*\\x{0024})\\s*\\d{1,3}))","ni":"((\\d{1,3}\\s*(nio|c\\$))|((nio|c\\$)\\s*\\d{1,3}))","pa":"(((pab|b\\/.)\\s*\\d{1,3})|(\\d{1,3}\\s*(pab|b\\/.)))","pe":"(((s\\/|sol|pen)\\s*\\d{1,3})|(\\d{1,3}\\s*(s\\/|sol|pen)))","pr":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","py":"(((pyg|gs)\\s*\\d{1,3})|(\\d{1,3}\\s*(pyg|gs)))","sv":"((\\d{1,3}\\s*(svc|\\x{20a1}|\\$))|((svc|\\x{20a1}|\\$)\\s*\\d{1,3}))","us":"(((\\$|usd)\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|usd)))","uy":"(((uyu|\\$u)\\s*\\d{1,3})|(\\d{1,3}\\s*(uyu|\\$u)))","ve":"(((bs\\s*f|bs\\.\\s*f|bs\\.|vef|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(bs\\s*f|bs\\.\\s*f|bs\\.|vef|\\$)))"},"product_terms":"((\\x{00a1}c\\x{00f3}mpralo\\s*ya!)|(a\\x{00f1}adir\\s*al\\s*carro)|(a\\x{00f1}adido\\s*a\\s*su\\s*lista\\s*de\\s*deseos)|(a\\x{00f1}adir\\s*a\\s*favoritos)|(a\\x{00f1}adir\\s*a\\s*la\\s*bolsa)|(a\\x{00f1}adir\\s*a\\s*la\\s*cesta)|(a\\x{00f1}adir\\s*a\\s*la\\s*lista\\s*de\\s*deseos)|(a\\x{00f1}adir\\s*a\\s*mi\\s*bolsa)|(a\\x{00f1}adir\\s*a\\s*mi\\s*cesta)|(a\\x{00f1}adir\\s*a\\s*mi\\s*lista\\s*de\\s*deseos)|(a\\x{00f1}adir\\s*al\\s*carrito)|(buscar\\s*tienda)|(comprar\\s*en\\s*un\\s*clic)|(comprar\\s*ya)|(comprobar\\s*disponibilidad\\s*en\\s*tienda)|(consultar\\s*disponibilidad\\s*en\\s*tienda)|(descripci\\x{00f3}n\\s*del\\s*producto)|(detalles\\s*del\\s*producto)|(env\\x{00ed}o\\s*gratuito)|(evaluaciones\\s*de\\s*clientes)|(informaci\\x{00f3}n\\s*de\\s*producto)|(informaci\\x{00f3}n\\s*del\\s*producto)|(ir\\s*al\\s*carro)|(ir\\s*al\\s*chollo)|(nuestros\\s*clientes\\s*tambi\\x{00e9}n\\s*vieron)|(opiniones\\s*de\\s*los\\s*usuarios)|(productos\\s*relacionados)|(productos\\s*relacionados)|(productos\\s*similares)|(puja\\s*actual)|(recoger\\s*en\\s*tienda)|(sin\\s*existencias)|(valora\\s*este\\s*producto)|(valoraciones\\s*de\\s*clientes)|(comprar\\s*ahora))"},"et":{"price_regex":{"ee":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((lisa\\s*korvi)|(osta)|(tarne\\s*v\\x{00F5}imalused)|(tootekirjeldus)|(sarnased\\s*tooted))"},"fa":{"price_regex":{"ir":"((\\d{1,3}\\s*(irr|\\x{FDFC}|\\x{0631}\\x{06CC}\\x{0627}\\x{0644}|\\x{062A}\\x{0648}\\x{0645}\\x{0627}\\x{0646}))|((irr|\\x{FDFC}|\\x{0631}\\x{06CC}\\x{0627}\\x{0644}|\\x{062A}\\x{0648}\\x{0645}\\x{0627}\\x{0646})\\s*\\d{1,3}))"},"product_terms":"((\\x{0627}\\x{0641}\\x{0632}\\x{0648}\\x{062F}\\x{0646}\\s*\\x{0628}\\x{0647}\\s*\\x{0633}\\x{0628}\\x{062F})|(\\x{0627}\\x{0631}\\x{0633}\\x{0627}\\x{0644}\\s*\\x{0631}\\x{0627}\\x{06CC}\\x{06AF}\\x{0627}\\x{0646})|(\\x{062E}\\x{0631}\\x{06CC}\\x{062F}\\s*\\x{0627}\\x{06CC}\\x{0646}\\x{062A}\\x{0631}\\x{0646}\\x{062A}\\x{06CC})|(\\x{062A}\\x{063A}\\x{06CC}\\x{06CC}\\x{0631}\\x{0627}\\x{062A}\\s*\\x{0642}\\x{06CC}\\x{0645}\\x{062A})|(\\x{0645}\\x{062D}\\x{0635}\\x{0648}\\x{0644}\\x{0627}\\x{062A}\\s*\\x{0645}\\x{0634}\\x{0627}\\x{0628}\\x{0647}))"},"fi":{"price_regex":{"fi":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((lis\\x{00E4}\\x{00E4}\\s*ostoskoriin)|(myym\\x{00E4}l\\x{00E4}saatavuus)|(toimituskulut)|(tilaa\\s*netist\\x{00E4})|(nouda\\s*myym\\x{00E4}l\\x{00E4}st\\x{00E4}))"},"fr":{"price_regex":{"be":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","ca":"(((\\$|cdn|(c\\s*\\$))\\s*\\d{1,3})|(\\d{1,3}\\s*(\\$|cdn|(c\\s*\\$)))","cd":"(((cdf|fc|\\x{20A3})\\s*\\d{1,3})|(\\d{1,3}\\s*(cdf|fc|\\x{20A3})))","ch":"((\\d{1,3}\\s*(sfr\\.|fr\\.|chf|\\x{20a3}))|((sfr\\.|fr\\.|chf|\\x{20a3})\\s*\\d{1,3}))","dz":"(((dzd|da|\\x{062F}\\x{062C})\\s*\\d{1,3})|(\\d{1,3}\\s*(dzd|da|\\x{062F}\\x{062C})))","fr":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gf":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","gh":"((\\d{1,3}\\s*(ghs|gh\\x{00A2}|gh\\x{20B5}|\\x{20B5}|\\x{00A2}))|((ghs|gh\\x{00A2}|gh\\x{20B5}|\\x{20B5}|\\x{00A2})\\s*\\d{1,3}))","gn":"(((gnf|fg|fr|gfr|\\x{20A3})\\s*\\d{1,3})|(\\d{1,3}\\s*(gnf|fg|fr|gfr|\\x{20A3})))","ht":"((\\d{1,3}\\s*(htg|g))|((htg|g)\\s*\\d{1,3}))","lb":"((\\d{1,3}\\s*(lbp\\s*\\x{00a3}|lbp|\\x{00a3}\\s*l|\\x{00a3}))|((lbp\\s*\\x{00a3}|lbp|\\x{00a3}\\s*l|\\x{00a3})\\s*\\d{1,3}))","li":"((\\d{1,3}\\s*(chf|\\x{20a3}))|((chf|\\x{20a3})\\s*\\d{1,3}))","lu":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","ma":"(((mad|dhs|dh)\\s*\\d{1,3})|(\\d{1,3}\\s*(mad|dhs|dh)))","mc":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","mq":"(((mga|ar)\\s*\\d{1,3})|(\\d{1,3}\\s*(mga|ar)))","mr":"(((mru|um)\\s*\\d{1,3})|(\\d{1,3}\\s*(mru|um)))","nc":"(((xpf|\\x{20A3}|f)\\s*\\d{1,3})|(\\d{1,3}\\s*(xpf|\\x{20A3}|f)))","pf":"(((xpf|\\x{20A3}|f)\\s*\\d{1,3})|(\\d{1,3}\\s*(xpf|\\x{20A3}|f)))","re":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((ajouter\\s*au\\s*panier)|(ajoutez\\s*au\\s*panier)|(ajoutez\\s*au\\s*sac)|(achetez\\s*le\\s*maintenant)|(achetez\\s*maintenant)|(livraison\\s*gratuite)|(expédition\\s*gratuite)|(livraison\\s*estimée)|(produit\\s*épuisé)|(en\\s*stock)|(épuisé)|(ajoutez\\s*à\\s*la\\s*wish\\s*list)|(livraison\\s*standard)|(livrez\\s*le)|(trouvez\\s*en\\s*un\\s*autre\\s*boutique)|((ramassage\\s*en\\s*bordure\\s*de\\s*rue)\\s*pour|magasin)|((cueillette\\s*en\\s*bordure\\s*de\\s*rue)\\s*en\\s*boutique)|(ajoutez\\s*à\\s*votre\\s*(liste|votre\\s*wishlist|votre\\s*registre))|((information\\s*de\\s*produit)|(détails\\s*de\\s*Produit)|(aperçu\\s*de\\s*produit)|(spécifications\\s*de\\s*produit))|(cueillette\\s*à\\s*boutique)|(offres\\s*spéciales\\s*disponible)|(accessible\\s*à\\s*livrer)|(guides\\s*des\\s*tailles)|(description\\s*produit)|(vous\\s*pourriez\\s*aussi\\s*aimer)|(trouvez\\s*en\\s*boutique)|(aussi\\s*disponible)|(en\\s*magasin)|(a\\s*propos\\s*de\\s*ce\\s*produit)|(vérifiez\\s*disponibilité)|(détails\\s*de\\s*véhicule)|(caractéristiques\\s*de\\s*véhicule)|(contactez\\s*marchand)|(affirmez\\s*disponibilité)|(information\\s*de\\s*véhicule))"},"he":{"price_regex":{"il":"((\\d{1,3}\\s*(ils|\\x{20AA}))|((ils|\\x{20AA})\\s*\\d{1,3}))"},"product_terms":"((\\x{05D4}\\x{05D5}\\x{05E1}\\x{05D9}\\x{05E4}\\x{05D5}\\s*\\x{05DC}\\x{05E2}\\x{05D2}\\x{05DC}\\x{05D4})|(\\x{05E7}\\x{05E0}\\x{05D5}\\s*\\x{05E2}\\x{05DB}\\x{05E9}\\x{05D9}\\x{05D5}))"},"hr":{"price_regex":{"hr":"((\\d{1,3}\\s*(hrk|kn))|((hrk|kn)\\s*\\d{1,3}))"},"product_terms":"((dodaj\\s*u\\s*ko\\x{0161}aricu)|(dodajte\\s*u\\s*ko\\x{0161}aricu)|(brzo\\s*do\\s*ponude)|(sli\\x{010D}ni\\s*proizvodi)|(podaci\\s*o\\s*proizvodu))"},"hu":{"price_regex":{"hu":"((\\d{1,3}\\s*(huf\\s*ft|huf|ft))|((huf\\s*ft|huf|ft)\\s*\\d{1,3}))"},"product_terms":"((megveszem\\s*most)|(kos(a|\\x{00E1})rba\\s*(teszem){0,1})|(el(e|\\x{00E9})rhet(o|\\x{0151})\\s*sz(a|\\x{00E1})ll(i|\\x{00ED})t(a|\\x{00E1})si\\s*m(o|\\x{00F3})dok)|(boltok\\s*(e|\\x{00E9})s\\s*(a|\\x{00E1})rak)|(ir(a|\\x{00E1})ny\\s*a\\s*bolt)|(term(e|\\x{00E9})kle(i|\\x{00ED})r(a|\\x{00E1})s)|(\\d+\\s*((v(e|\\x{00E9})lem(e|\\x{00E9})ny)|((e|\\x{00E9})rt(e|\\x{00E9)kel(e|\\x{00E9})s)))|(a\\s*sz(a|\\x{00E1})ll(i|\\x{00ED})t(a|\\x{00E1})si\\s*hat(a|\\x{00E1})rid(o|\\x{0151})k\\s*megtekint(e|\\x{00E9})se)|(hozz(a|\\x{00E1})ad(a|\\x{00E1})s)|(v(a|\\x{00E1})s(a|\\x{00E1})roljon\\s*online))"},"is":{"price_regex":{"is":"((\\d{1,3}\\s*(isk|\\x{00CD}kr|kr|,-))|((isk|\\x{00CD}kr|kr|,-)\\s*\\d{1,3}))"},"product_terms":"((b\\x{00E6}ta\\s*vi\\x{00F0}\\s*k\\x{00F6}rfu)|(setja\\s*\\x{00ED}\\s*k\\x{00F6}rfu)|(sendingarkostna\\x{00F0})|(skilareglur)|(til\\s*\\x{00E1}\\s*lager))"},"iso_currency_regex_list":["AED|Dhs|Dh","AFN|Af","AMD","AOA|Kz","ARS","AWG","AZN|M","BAM|KM","BBD|BDS","BDT|Tk","BGN|BGL","BHD","BIF","BND|B\\s*\\$","BOB\\s*\\$b|BOB|\\$b|Bs|Bs\\.","R\\s*\\$|BRL","BSD","BTN|Nu\\.","BWP|P","BYN|Br|\\x{0440}\\.","BZD|BZ","CDF|KMF|FC","CL\\$|CLP","COP","CRC","CUP|\\$MN","CZK|K\\x{010D}|Kc","DJF","DKK|kr","DOP|RD\\$","DZD|DA|\\x{062F}\\x{062C}|\\x{062F}\\x{002E}\\x{062C}","EEK","EGP","ERN|Nfk","ETB","FJD|FJ\\$","FKP","GEL|\\x{10DA}","GHS|GH","GIP","GMD|D","GNF|FG|Fr|GFr","GTQ\\s*Q|GTQ|Q","GYD","HKD|HK\\s*\\$","HNL\\s*L|HNL|L","HRK|kn","HTG|G","HUF\\s*Ft|HUF|Ft","IDR|Rp","ILS","IQD","IRR|\\x{0631}\\x{06CC}\\x{0627}\\x{0644}|\\x{062A}\\x{0648}\\x{0645}\\x{0627}\\x{0646}","ISK|\\x{00CD}kr","JMD","JOD","KES|KSh","KGS|\\x{041B}\\x{0432}|\\x{0441}\\x{043e}\\x{043c}","KHR","KPW","KRW","KWD","KYD","KZT","LAK","LBP","Lek\\x{00EB}|ALL","LEV","LKR|Rs\\/\\.|Rs|\\x{0BB0}\\x{0BC2}|\\x{0DBB}\\x{0DD4}","LRD|LD\\$","LSL|LS","LYD|\\x{0644}\\x{002E}\\x{062F}|LD","MAD","MDL\\s*L|MDL,\\s*LEI|LEI","MGA|Ar","MKD|\\x{0434}\\x{0435}\\x{043D}|\\x{041C}\\x{041A}\\x{0434}","MMK|K","MNT","MOP","MRU|UM","MUR","MVR|MRf|Rf","MWK|MK","MYR|RM","MZN|MTn","NAD|N\\$","NGN","NIO|C\\$","NOK","NPR\\s*Rs|NPR|Re\\/\\.|Re","NZ\\s*\\$|NZD","OMR\\s*\\x{fdfc}|OMR","PAB\\s*B\\/\\.|PAB|B\\/\\.","PGK","PHP","PKR\\s*Rs|PKR","PLN","PYG\\s*Gs|PYG|Gs","QAR","RON","RSD|din|\\x{0414}\\x{0438}\\x{043d}","RUB|p\\.","RWF|FRw","S\\/|S\\.|S\\/\\.|Sol|PEN","S\\s*\\$|SGD","SAR\\s*\\x{fdfc}|SAR|SR","SBD|SI\\$","SCR","SDG","SEK|kkr","SHP","SLL|Le","SOS|Sh\\.So\\.|Sh","SRD","STN|Db","SVC","SYP","SZL","THB","TJS|\\x{0405}\\x{041C}","TMT","TND","TOP|T\\$","TRY|TL|x\\{20BA}","TTD","TWD|NT\\s*\\$","TZS","UAH|\\x{0433}\\x{0440}\\x{043D}","UGX|USh","UYU\\s*\\$U|UYU|\\$U","UZS","VEF|Bs\\.?\\s*f|Bs\\.S\\.","VND","VUV|Vt","WON","WST|T|WS\\$","XAF","XCD","XOF|CFA","XPF|F","YEN","YER","ZAR|R","ZMW|ZK"],"it":{"price_regex":{"ch":"((\\d{1,3}\\s*(sfr\\.|fr\\.|\\x{20a3}|chf))|((sfr\\.|fr\\.|\\x{20a3}|chf)\\s*\\d{1,3}))","it":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((politica\\s*di\\s*reso)|(spedizione\\s*gratuita)|(\\d+\\s*ordini)|(\\d+\\s*recensioni)|(\\d+\\s*voti)|(venditore)|(disponibilit\\x{00E0}\\s*immediata)|(trova\\s*in\\s*negozio)|(aggiungi)|(aggiungi\\s*al\\s*carrello)|(acquista\\s*ora)|(aggiungi\\s*alla\\s*lista)|(dettagli\\s*prodotto)|(descrizione\\s*prodotto)|(recensioni\\s*de\\s*clienti)|(altri\\s*venditori)|(dettagli\\s*prodotto)|(specifiche\\s*prodotto)|(descrizione\\s*prodotto)|(recensioni\\s*clienti)|(consegna\\s*stimata)|(soddisfatti\\s*o\\s*rimborsati)|(prodotti\\s*correlati)|(in\\s*negozio)|(consegna)|(seleziona\\s*il\\s*negozio)|(informazioni\\s*sul\\s*prodotto)|(consegna\\s*e\\s*pagamento))"},"ja":{"price_regex":{"jp":"((\\d{1,3}\\s*(\\x{ffe5}|\\x{00a5}))|((\\x{ffe5}|\\x{00a5})\\s*\\d{1,3}))"},"product_terms":"((\\x{30ab}\\x{30fc}\\x{30c8}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{4eca}\\x{3059}\\x{3050}\\x{8cb7}\\x{3046})|((\\x{8a73}\\x{7d30})(\\x{60c5}\\x{5831}|\\x{30c7}\\x{30fc}\\x{30bf}))|(((\\x{30a2}\\x{30a4}\\x{30c6}\\x{30e0})|(\\x{5546}\\x{54c1}(\\x{306e}){0,1})|(\\x{57fa}\\x{672c})|(\\x{5185}\\x{5bb9}))((\\x{8aac}\\x{660e})|(\\x{60c5}\\x{5831})|(\\x{4ed5}\\x{69d8})))|(\\x{3054}\\x{8cfc}\\x{5165}\\x{624b}\\x{7d9a}\\x{304d}\\x{3078})|(\\x{30ab}\\x{30fc}\\x{30c8}\\x{306b}\\x{8ffd}\\x{52a0})|(\\x{9001}\\x{6599}\\x{7121}\\x{6599})|(\\x{767a}\\x{9001}\\x{4e88}\\x{5b9a})|(\\x{30d0}\\x{30b9}\\x{30b1}\\x{30c3}\\x{30c8}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{6ce8}\\x{610f})|(\\x{8cfc}\\x{5165}\\x{624b}\\x{7d9a}\\x{304d}\\x{3078})|(\\x{30d0}\\x{30b9}\\x{30b1}\\x{30c3}\\x{30c8}\\x{3092}\\x{898b}\\x{308b})|(\\x{8fd4}\\x{54c1}\\x{6761}\\x{4ef6})|(\\x{5728}\\x{5eab}\\x{3042}\\x{308a})|(\\x{30ab}\\x{30b4}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{30d0}\\x{30c3}\\x{30b0}\\x{306b}\\x{8ffd}\\x{52a0})|(\\x{5546}\\x{54c1}\\x{0051}\\x{0026}\\x{0041})|(\\x{3044}\\x{307e}\\x{3059}\\x{3050}\\x{8cfc}\\x{5165})|(\\x{5546}\\x{54c1}\\x{30b9}\\x{30da}\\x{30c3}\\x{30af})|(\\x{304a}\\x{652f}\\x{6255}\\x{65b9}\\x{6cd5})|(\\x{6ce8}\\x{610f}\\x{4e8b}\\x{9805})|(\\x{4ed5}\\x{69d8})|(\\x{914d}\\x{9001}\\x{65b9}\\x{6cd5})|(\\x{304b}\\x{3054}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{9001}\\x{6599})|(\\x{5728}\\x{5eab}\\x{72b6}\\x{6cc1})|(\\x{4f5c}\\x{54c1}\\x{5185}\\x{5bb9})|(((\\x{5546}\\x{54c1}(\\x{306e}){0,1})|(\\x{30a2}\\x{30a4}\\x{30c6}\\x{30e0}))(\\x{8a73}\\x{7d30}))|(\\x{756a}\\x{53f7})|(\\x{30b7}\\x{30e7}\\x{30c3}\\x{30d4}\\x{30f3}\\x{30b0}\\x{30d0}\\x{30c3}\\x{30b0}\\x{306b}\\x{5165}\\x{308c}\\x{308b})|(\\x{304a}\\x{6c17}\\x{306b}\\x{5165}\\x{308a}\\x{306b}\\x{8ffd}\\x{52a0})|(\\x{4fa1}\\x{683c}\\x{3092}\\x{78ba}\\x{8a8d})|(\\x{30ab}\\x{30fc}\\x{30c8}\\x{3078}\\x{9032}\\x{3080})|(\\x{30b5}\\x{30fc}\\x{30d3}\\x{30b9})|(\\x{5546}\\x{54c1}\\x{306e}\\x{767a}\\x{9001})|(\\x{5185}\\x{5bb9}\\x{7d39}\\x{4ecb})|(\\x{30ab}\\x{30fc}\\x{30c8}\\x{3078}\\x{5165}\\x{308c}\\x{308b})|(\\x{8cfc}\\x{5165}\\x{306f}\\x{3053}\\x{3061}\\x{3089}))"},"ko":{"price_regex":{"kr":"((\\d{1,3}\\s*(krw|\\x{20a9}|\\x{c6d0}))|((krw|\\x{20a9}|\\x{c6d0})\\s*\\d{1,3}))"},"product_terms":"((\\s*\\x{c7a5}\\x{bc14}\\x{ad6c}\\x{b2c8}\\s*)|(\\s*\\x{ad6c}\\x{b9e4}\\x{d558}\\x{ae30}\\s*)|(\\x{CD94}\\x{AC00})|(\\x{BC30}\\x{C1A1}\\s*\\x{BC0F}\\s*\\x{ACB0}\\x{C81C})|(\\x{C81C}\\x{D488}\\s*\\x{BC30}\\x{ACBD})|(\\x{C989}\\x{C2DC}\\s*\\x{AD6C}\\x{B9E4})|(\\x{CE74}\\x{D2B8}\\x{C5D0}\\s*\\x{B123}\\x{AE30})|(\\d+\\s*\\x{B9AC}\\x{BDF0})|(\\d+\\s*\\x{C8FC}\\x{BB38})|(\\x{BB34}\\x{B8CC}\\s*\\x{BC30}\\x{C1A1})|(\\x{ACB0}\\x{C81C}\\s*\\x{AE08}\\x{C561}\\s*\\x{D658}\\x{BD88}\\s*\\x{BCF4}\\x{C99D})|(\\x{BC30}\\x{C1A1}\\s*\\x{C608}\\x{C815})|(\\x{AD6C}\\x{B9E4}\\x{D558}\\x{AE30})|(\\x{C81C}\\x{D488}\\s*\\x{C124}\\x{BA85})|(\\x{BE44}\\x{C2B7}\\x{D55C}\\s*\\x{C81C}\\x{D488})|(\\x{B9E4}\\x{C7A5}\\s*\\x{AD6C}\\x{B9E4})|(\\x{BC30}\\x{C1A1})|(\\x{BC14}\\x{B85C}\\x{AD6C}\\x{B9E4})|(\\x{C7A5}\\x{BC14}\\x{AD6C}\\x{B2C8}\\s*\\x{B2F4}\\x{AE30}))"},"largest_contentful_paint_thresholds":{"proactive_contentful_paint_delay_seconds":2,"secondary_no_mutations_observed_ext_seconds":5,"secondary_no_mutations_observed_seconds":1,"secondary_observe_mutations_max_seconds":10,"secondary_observer_mutations_ext_max_seconds":20},"lt":{"price_regex":{"lt":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((\\x{012E}d\\x{0117}ti\\s*\\x{012F}\\s*krep\\x{0161}el\\x{012F})|(\\x{012E}d\\x{0117}ti\\s*\\x{012F}\\s*pirkini\\x{0173}\\s*krep\\x{0161}el\\x{012F})|(\\x{012E}\\s*krep\\x{0161}el\\x{012F})|(nemokamas\\s*pristatymas)|(pradin\\x{0117}\\s*\\x{012F}moka))"},"lv":{"price_regex":{"lv":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((ielikt\\s*groz\\x{0101})|(pieg\\x{0101}des\\s*veidi)|(sa\\x{0146}em\\x{0161}anas\\s*iesp\\x{0113}jas)|(pieejam\\x{012B}ba\\s*veikalos))"},"market_domain_regex_map":{"ae":"((\\.ae\\/)|(\\.com\\/ae\\/))","ar":"((\\.ar\\/)|(\\.com\\/ar\\/))","at":"((\\.at\\/)|(\\.com\\/at\\/)|(\\.com\\/de-at\\/)|(\\.com\\/de_at\\/))","au":"((\\.au\\/)|(\\.com\\/au\\/)|(\\.com\\/en-au\\/)|(\\.com\\/en_au\\/))","be":"((\\.be\\/)|(\\.com\\/be\\/)|(\\.com\\/fr-be\\/)|(\\.com\\/fr_be\\/)|(\\.com\\/nl-be\\/)|(\\.com\\/nl_be\\/))","bg":"((\\.bg\\/)|(\\.com\\/bg\\/))","br":"((\\.br\\/)|(\\.com\\/br\\/)|(\\.com\\/pt-br\\/)|(\\.com\\/pt_br\\/))","ca":"((\\.ca\\/)|(\\.com\\/ca\\/)|(\\.com\\/fr-ca\\/)|(\\.com\\/fr_ca\\/)|(\\.ca\\/fr-ca\\/)|(\\.ca\\/fr_ca\\/)|(\\.com\\/en-ca\\/)|(\\.com\\/en_ca\\/))","ch":"((\\.ch\\/)|(\\.com\\/ch\\/))","cl":"((\\.cl\\/)|(\\.com\\/cl\\/))","cn":"((\\.cn\\/)|(\\.com\\/cn\\/))","co":"((\\.co\\/)|(\\.com\\/co\\/))","cz":"((\\.cz\\/)|(\\.com\\/cz\\/))","de":"((\\.de\\/)|(\\.com\\/de\\/)|(\\.com\\/de-de\\/)|(\\.com\\/de_de\\/))","dk":"((\\.dk\\/)|(\\.com\\/dk\\/)|(\\.com\\/da-dk\\/)|(\\.com\\/da_dk\\/))","eg":"((\\.eg\\/)|(\\.com\\/eg\\/))","es":"((\\.es\\/)|(\\.com\\/es\\/)|(\\.com\\/es-es\\/)|(\\.com\\/es_es\\/))","fi":"((\\.fi\\/)|(\\.com\\/fi\\/)|(\\.com\\/fi-fi\\/)|(\\.com\\/fi_fi\\/))","fr":"((\\.fr\\/)|(\\.com\\/fr\\/)|(\\.com\\/fr-fr\\/)|(\\.com\\/fr_fr\\/))","gb":"((\\.uk\\/)|(\\.com\\/uk\\/)|(\\.com\\/en-gb\\/)|(\\.com\\/en_gb\\/))","gr":"((\\.gr\\/)|(\\.com\\/gr\\/)|(\\.com\\/el-gr\\/)|(\\.com\\/el_gr\\/))","hr":"((\\.hr\\/)|(\\.com\\/hr\\/))","hu":"((\\.hu\\/)|(\\.com\\/hu\\/)|(\\.com\\/hu-hu\\/)|(\\.com\\/hu_hu\\/))","id":"((\\.id\\/)|(\\.com\\/id\\/))","ie":"((\\.ie\\/)|(\\.com\\/ie\\/)|(\\.com\\/en-ie\\/)|(\\.com\\/en_ie\\/))","il":"((\\.il\\/)|(\\.com\\/il\\/)|(\\.com\\/hw-il\\/)|(\\.com\\/hw_il\\/))","in":"((\\.in\\/)|(\\.com\\/in\\/)|(\\.com\\/en-in\\/)|(\\.com\\/en_in\\/))","is":"((\\.is\\/)|(\\.com\\/is\\/))","it":"((\\.it\\/)|(\\.com\\/it\\/)|(\\.com\\/it-it\\/)|(\\.com\\/it_it\\/))","jp":"((\\.jp\\/)|(\\.com\\/jp\\/)|(\\.com\\/ja-jp\\/)|(\\.com\\/ja_jp\\/))","ke":"((\\.ke\\/)|(\\.com\\/ke\\/))","kr":"((\\.kr\\/)|(\\.com\\/kr\\/)|(\\.com\\/ko-kr\\/)|(\\.com\\/ko_kr\\/))","lt":"((\\.lt\\/)|(\\.com\\/lt\\/))","ma":"((\\.ma\\/)|(\\.com\\/ma\\/))","mx":"((\\.mx\\/)|(\\.com\\/mx\\/)|(\\.com\\/es-mx\\/)|(\\.com\\/es_mx\\/)|(\\.com\\/en-mx\\/)|(\\.com\\/en_mx\\/))","my":"((\\.my\\/)|(\\.com\\/my\\/)|(\\.com\\/en-my\\/)|(\\.com\\/en_my\\/))","ng":"((\\.ng\\/)|(\\.com\\/ng\\/))","nl":"((\\.nl\\/)|(\\.com\\/nl\\/)|(\\.com\\/nl-nl\\/)|(\\.com\\/nl_nl\\/))","no":"((\\.no\\/)|(\\.com\\/no\\/)|(\\.com\\/no-no\\/)|(\\.com\\/no_no\\/))","nz":"((\\.nz\\/)|(\\.com\\/nz\\/))","pe":"((\\.pe\\/)|(\\.com\\/pe\\/))","pk":"((\\.pk\\/)|(\\.com\\/pk\\/))","pl":"((\\.pl\\/)|(\\.com\\/pl\\/)|(\\.com\\/pl-pl\\/)|(\\.com\\/pl_pl\\/))","pt":"((\\.pt\\/)|(\\.com\\/pt\\/)|(\\.com\\/pt-pt\\/)|(\\.com\\/pt_pt\\/))","ro":"((\\.ro\\/)|(\\.com\\/ro\\/)|(\\.com\\/ro-ro\\/)|(\\.com\\/ro_ro\\/))","rs":"((\\.rs\\/)|(\\.com\\/rs\\/))","ru":"((\\.ru\\/)|(\\.com\\/ru\\/)|(\\.com\\/ru-ru\\/)|(\\.com\\/ru_ru\\/))","sa":"((\\.sa\\/)|(\\.com\\/sa\\/))","se":"((\\.se\\/)|(\\.com\\/se\\/)|(\\.com\\/sv-se\\/)|(\\.com\\/sv_se\\/))","sg":"((\\.sg\\/)|(\\.com\\/sg\\/)|(\\.com\\/en-sg\\/)|(\\.com\\/en_sg\\/))","si":"((\\.si\\/)|(\\.com\\/si\\/))","sk":"((\\.sk\\/)|(\\.com\\/sk\\/))","th":"((\\.th\\/)|(\\.com\\/th\\/))","tr":"((\\.tr\\/)|(\\.com\\/tr\\/)|(\\.com\\/tr-tr\\/)|(\\.com\\/tr_tr\\/))","tw":"((\\.tw\\/)|(\\.com\\/tw\\/))","ua":"((\\.ua\\/)|(\\.com\\/ua\\/))","vn":"((\\.vn\\/)|(\\.com\\/vn\\/))","za":"((\\.za\\/)|(\\.com\\/za\\/))"},"mk":{"price_regex":{"mk":"((\\d{1,3}\\s*(mkd|\\x{0414}\\x{0435}\\x{043D}|\\x{041C}\\x{041A}\\x{0414}))|((mkd|\\x{0414}\\x{0435}\\x{043D}|\\x{041C}\\x{041A}\\x{0414})\\s*\\d{1,3}))"},"product_terms":"((\\x{0434}\\x{043E}\\x{0434}\\x{0430}\\x{0434}\\x{0438}\\s*\\x{0432}\\x{043E}\\s*\\x{043A}\\x{043E}\\x{0448}\\x{043D}\\x{0438}\\x{0447}\\x{043A}\\x{0430})|(\\x{0414}\\x{043E}\\x{0434}\\x{0430}\\x{0434}\\x{0438}\\s*\\x{0432}\\x{043E}\\s*\\x{043A}\\x{043E}\\x{0448}\\x{043D}\\x{0438}\\x{0447}\\x{043A}\\x{0430})|(\\x{0414}\\x{041E}\\x{0414}\\x{0410}\\x{0414}\\x{0418}\\s*\\x{0412}\\x{041E}\\s*\\x{041A}\\x{041E}\\x{0428}\\x{041D}\\x{0418}\\x{0427}\\x{041A}\\x{0410})|(\\x{041A}\\x{0443}\\x{043F}\\x{0438})|(\\x{041D}\\x{0435}\\x{043C}\\x{0430}\\s*\\x{043D}\\x{0430}\\s*\\x{0437}\\x{0430}\\x{043B}\\x{0438}\\x{0445}\\x{0430})|(\\x{041F}\\x{043E}\\x{0432}\\x{0440}\\x{0437}\\x{0430}\\x{043D}\\x{0438}\\s*\\x{043F}\\x{0440}\\x{043E}\\x{0438}\\x{0437}\\x{0432}\\x{043E}\\x{0434}\\x{0438})|(\\x{0412}\\x{0440}\\x{0435}\\x{043C}\\x{0435}\\s*\\x{043D}\\x{0430}\\s*\\x{0438}\\x{0441}\\x{043F}\\x{043E}\\x{0440}\\x{0430}\\x{043A}\\x{0430}))"},"model_descriptors":[{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.en","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.en","page_locale":"en","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.pt","page_locale":"pt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.pt","page_locale":"pt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.it","page_locale":"it","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.it","page_locale":"it","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fr","page_locale":"fr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fr","page_locale":"fr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.de","page_locale":"de","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.de","page_locale":"de","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.nl","page_locale":"nl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.nl","page_locale":"nl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.zh","page_locale":"zh","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.zh","page_locale":"zh","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ko","page_locale":"ko","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ko","page_locale":"ko","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ja","page_locale":"ja","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ja","page_locale":"ja","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.es","page_locale":"es","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.es","page_locale":"es","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.am","page_locale":"am","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.am","page_locale":"am","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ar","page_locale":"ar","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ar","page_locale":"ar","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.az","page_locale":"az","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.az","page_locale":"az","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bg","page_locale":"bg","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bg","page_locale":"bg","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bn","page_locale":"bn","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bn","page_locale":"bn","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bs","page_locale":"bs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.bs","page_locale":"bs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.cs","page_locale":"cs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.cs","page_locale":"cs","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.da","page_locale":"da","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.da","page_locale":"da","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.dv","page_locale":"dv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.dv","page_locale":"dv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.dz","page_locale":"dz","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.dz","page_locale":"dz","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.el","page_locale":"el","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.el","page_locale":"el","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.et","page_locale":"et","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.et","page_locale":"et","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fa","page_locale":"fa","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fa","page_locale":"fa","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fi","page_locale":"fi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fi","page_locale":"fi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fo","page_locale":"fo","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.fo","page_locale":"fo","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.he","page_locale":"he","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.he","page_locale":"he","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hi","page_locale":"hi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hi","page_locale":"hi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hr","page_locale":"hr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hr","page_locale":"hr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ht","page_locale":"ht","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ht","page_locale":"ht","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hu","page_locale":"hu","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hu","page_locale":"hu","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hy","page_locale":"hy","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.hy","page_locale":"hy","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.id","page_locale":"id","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.id","page_locale":"id","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.is","page_locale":"is","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.is","page_locale":"is","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ka","page_locale":"ka","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ka","page_locale":"ka","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.kk","page_locale":"kk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.kk","page_locale":"kk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.km","page_locale":"km","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.km","page_locale":"km","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ky","page_locale":"ky","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ky","page_locale":"ky","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lo","page_locale":"lo","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lo","page_locale":"lo","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lt","page_locale":"lt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lt","page_locale":"lt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lv","page_locale":"lv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.lv","page_locale":"lv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mk","page_locale":"mk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mk","page_locale":"mk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mn","page_locale":"mn","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mn","page_locale":"mn","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ms","page_locale":"ms","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ms","page_locale":"ms","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mt","page_locale":"mt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.mt","page_locale":"mt","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.my","page_locale":"my","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.my","page_locale":"my","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.nb","page_locale":"nb","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.nb","page_locale":"nb","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ne","page_locale":"ne","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ne","page_locale":"ne","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.no","page_locale":"no","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.no","page_locale":"no","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.pl","page_locale":"pl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.pl","page_locale":"pl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ps","page_locale":"ps","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ps","page_locale":"ps","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ro","page_locale":"ro","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ro","page_locale":"ro","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ru","page_locale":"ru","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ru","page_locale":"ru","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.si","page_locale":"si","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.si","page_locale":"si","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sk","page_locale":"sk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sk","page_locale":"sk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sl","page_locale":"sl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sl","page_locale":"sl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sm","page_locale":"sm","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sm","page_locale":"sm","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sq","page_locale":"sq","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sq","page_locale":"sq","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sr","page_locale":"sr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sr","page_locale":"sr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sv","page_locale":"sv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sv","page_locale":"sv","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sw","page_locale":"sw","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.sw","page_locale":"sw","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ta","page_locale":"ta","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ta","page_locale":"ta","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tg","page_locale":"tg","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tg","page_locale":"tg","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.th","page_locale":"th","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.th","page_locale":"th","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ti","page_locale":"ti","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.ti","page_locale":"ti","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tk","page_locale":"tk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tk","page_locale":"tk","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tl","page_locale":"tl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tl","page_locale":"tl","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tr","page_locale":"tr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.tr","page_locale":"tr","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.uz","page_locale":"uz","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.uz","page_locale":"uz","platform":"desktop"},{"allow_basic_extraction":true,"classification":"Product","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.vi","page_locale":"vi","platform":"desktop"},{"allow_basic_extraction":true,"classification":"ProductByRegex","classification_confidence":0.9,"classifier_model_major_version":"","classifier_model_name":"","engine":"onnx","entity_type":"MainProduct","extraction_scenario":"kBoth","extractor_model_major_version":"2","extractor_model_name":"onnx.product.desktop.vi","page_locale":"vi","platform":"desktop"}],"nb":{"price_regex":{"no":"((\\d{1,3}\\s*(nok|kr|,-))|((nok|kr|,-)\\s*\\d{1,3}))"},"product_terms":"((legg\\s*i\\s*handlevogn)|(frakt\\s*og\\s*leveringsalternativ)|(hent\\s*i\\s*butikk)|(raskere\\s*leveranse))"},"nl":{"price_regex":{"be":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","nl":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((verkoop\\s*door)|(productbeschrijving)|(productspecificaties)|(in\\s*winkelwagen)|(gratis\\s*retourneren)|(gratis\\s*verzending)|(gratis\\s*verzenden)|(geschatte\\s*levering)|(\\d+\\s*recensies)|(\\d+\\s*beoordelingen)|(\\d+\\s*bestellingen)|(koop\\s*nu)|(voeg\\s*aan\\s*winkelwagen\\s*toe)|(voeg\\s*toe\\s*aan\\s*winkelwagen)|(geldteruggarantie)|(bestverkopende)|(selecteer\\s*winkel)|(productinformatie)|(soortgelijke\\s*producten)|(in\\s*de\\s*winkel)|(levering)|(toevoegen)|(gratis\\s*bezorging)|(nu\\s*kopen)|(op\\s*voorraad)|(verkocht\\s*door)|(in\\s*(winkelwagen|winkelmandje|winkelmand))|(nu\\s*kopen)|(productgegevens)|(productbeschrijving)|(klantenrecensies)|(\\s*bestel\\s*nu)|(\\s*voeg\\s*toe))"},"no":{"price_regex":{"no":"((\\d{1,3}\\s*(nok|kr|,-))|((nok|kr|,-)\\s*\\d{1,3}))"},"product_terms":"((legg\\s*i\\s*handlevogn)|(frakt\\s*og\\s*leveringsalternativ)|(hent\\s*i\\s*butikk)|(raskere\\s*leveranse))"},"page_cutoff":4320,"pdp_regexes":{"amazon.com":["(?:\\/gp\\/product\\/|\\/dp\\/)([A-Z0-9]+)","/.*/ko/dp/[A-Za-z0-9]+/"]},"picl_currency_regex_map":{"AUD":"A\\s*\\$|AU\\s*\\$|AUD|AU","CAD":"C\\s*\\$|CAD\\s*\\$|CDN\\s*\\$|Can\\s*\\$|CDN|CAD","CHF":"CHF|Fr\\.|SFr\\.|\\x{20A3}","CNY":"CNY|RMB|\\x{00A5}","EUR":"EUR|Euro|\\x{20AC}","GBP:":"GBP|GB|\\x{00A3}","INR":"INR|RS|RS\\.|\\x{20B9}","JPY":"JPY|\\x{ffe5}|\\x{00A5}","MXN":"MXN|MEX\\s*\\$","USD":"USD\\s*\\$|USD|US\\s*\\$|US|\\$"},"pl":{"price_regex":{"pl":"((\\d{1,3}\\s*(pln|z\\s*\\x{0142}))|(pln|z\\s*\\x{0142})\\s*\\d{1,3}))"},"product_terms":"((dodaj\\s*do\\s*koszyka)|(kup\\s*teraz)|(darmowa\\s*dostawa)|(do\\s*koszyka)|(kup)|(w\\s*sklepie)|(szczeg\\x{00F3}\\x{0142}y\\s*produktu)|(przesy\\x{0142}ka)|(dostawa)|(w\\s*magazynie)|(informacje\\s*o\\s*produkcie)|(darmowa\\s*wysy\\x{0142}ka)|(bezp\\x{0142}atna\\s*dostawa)|(opis\\s*produktu)|(\\d+\\s*opinie))"},"price_comparison_cache_minutes":20,"product_onnx_model_config":{"char_limit_for_text_element":400,"cls_token_id":0,"example_start_index_increment":250,"features":["is_image","is_preceded_by_ws","is_preceded_by_line_break","bounding_box_is_same","is_clipped","is_visible","font_weight","font_size","bounding_x","bounding_y","bounding_w","bounding_h","color_a","color_r","color_g","color_b","bounding_xe","bounding_ye","bounding_we","bounding_he","is_anchor","part"],"features_with_max_bounding_box_size":["bounding_x","bounding_y","bounding_w","bounding_h","bounding_xe","bounding_ye","bounding_we","bounding_he"],"features_with_max_color_size":["color_a","color_r","color_g","color_b"],"image_word":"#IMAGE","labels":["O","B-image","I-image","B-manufacturer","I-manufacturer","B-name","I-name","B-offers/price","I-offers/price","B-aggregateRating/ratingValue","I-aggregateRating/ratingValue","B-aggregateRating/reviewCount","I-aggregateRating/reviewCount","B-product_codes","I-product_codes","B-out_of_stock","I-out_of_stock"],"labels_for_v4":["image","name","offers/price","product_codes","manufacturer","aggregateRating/reviewCount","out_of_stock","aggregateRating/ratingValue"],"max_bounding_box_size":200,"max_color_size":100,"max_example_size":400,"max_examples":10,"max_font_size_size":100,"max_font_weight_size":100,"max_name_price_token_distance":200,"max_sequence_length":512,"max_sliding_window_size":2,"model_output_layer":"output","name_image_prediction_threshold":0.3,"name_image_prediction_threshold_for_v4":0.3,"num_labels":17,"num_labels_for_v4":8,"num_special_tokens":2,"pad_token":1,"pad_token_label_id":-100,"price_prediction_screening_threshold":0.0001,"price_prediction_threshold":0.005,"price_prediction_threshold_for_v4":0.0001,"priority_entities_ids_map":{"image":1,"name":5,"offers/price":7,"product_codes":13},"priority_entities_ids_map_for_v4":{"aggregateRating/ratingValue":7,"aggregateRating/reviewCount":5,"image":0,"manufacturer":4,"name":1,"offers/price":2,"out_of_stock":6,"product_codes":3},"product_code_prediction_threshold":0.07,"product_code_prediction_threshold_for_v4":0.3,"product_page_prediction_threshold":0.5,"sep_token_id":2,"sliding_window_start_index_increment":400},"pt":{"price_regex":{"br":"((r\\x{0024}|brl)\\s*\\d{1,3})|(\\d{1,3}\\s*(r\\x{0024}|brl))","pt":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((comprar)|(entrega)|(produtos\\s*patrocinados)(adicionar\\s*ao\\s*cesto)|(adicionar\\s*ao\\s*carrinho)|(comprar\\s*agora)|(adicionar)|(procurar\\s*nas\\s*lojas)|(pesquisar\\s*produtos)|(entrega)|(pagamento)|(estoque\\s*dispon\\x{00ED}vel)|(devolu\\x{00E7}\\x{00E3}o\\s*gr\\x{00E1}tis)|(compra\\s*garantida)|(\\d+\\s*vendidos)|(na\\s*loja)|(adicionar\\s*ao\\s*cesto)|(detalhes\\s*do\\s*produto)|(selecionar\\s*loja)|(produtos\\s*similares)|(frete\\s*gr\\x{00E1}tis)|(estimativa\\s*de\\s*entrega)|(garantia\\s*de\\s*reembolso)|(o\\s*envio\\s*come\\x{00E7}a)|(\\d+\\s*avalia\\x{00E7}\\x{00F5}es)|(\\d+\\s*pedidos)|(mais\\s*vendidos)|(\\x{00CD}tens\\s*promocionais))"},"ro":{"price_regex":{"ro":"((\\d{1,3}\\s*(ron|lei|l))|((ron|lei|l)\\s*\\d{1,3}))"},"product_terms":"((ad(a|\\x{0103})ugare)|(adaug(a|\\x{0102})\\s*(i|\\x{00CE})n\\s*co(s|\\x{0218}))|(v(a|\\x{00E2})ndut\\s*(s|\\x{0219})i\\s*livrat\\s*de)|(comand(a|\\x{0103})\\s*cu\\s*livrare)|(informa(t|\\x{021B})ii\\s*despre\\s*produs)|((i|\\x{02EE})n\\s*stoc)|(cumpara\\s*acum)|(optiuni\\s*de\\s*livrare)|(modalit(a|\\x{0103})(t|\\x{021B})ile\\s*de\\s*((livrare)|(plat(a|\\x{0103}))))|(livrare\\s*gratuit(a|\\x{0103}))|(descrierea\\s*produsului)|(spre\\s*magazin)|(((estimat)|(estimare))\\s*livrare)|(politica\\s*de\\s*retur)|(pret\\s*curent)|(cost\\s*livrare)|(\\d+\\s*review-uri))"},"ru":{"price_regex":{"by":"((\\d{1,3}\\s*(byn|br|\\x{0440}\\.|rub))|((byn|br|\\x{0440}\\.|rub)\\s*\\d{1,3}))","ru":"((\\d{1,3}\\s*(rub|\\x{0440}\\x{0443}\\x{0431}|\\x{20BD}))|((rub|\\x{0440}\\x{0443}\\x{0431}|\\x{20BD})\\s*\\d{1,3}))"},"product_terms":"((\\x{041F}\\x{043E}\\x{0434}\\x{043F}\\x{0438}\\x{0441}\\x{0430}\\x{0442}\\x{044C}\\x{0441}\\x{044F}\\s*\\x{043D}\\x{0430}\\s*\\x{043F}\\x{0440}\\x{043E}\\x{0434}\\x{0430}\\x{0432}\\x{0446}\\x{0430})|(\\x{0414}\\x{043E}\\x{0431}\\x{0430}\\x{0432}\\x{0438}\\x{0442}\\x{044C}\\s*\\x{0432}\\s*\\x{043A}\\x{043E}\\x{0440}\\x{0437}\\x{0438}\\x{043D}\\x{0443})|(\\x{0411}\\x{0435}\\x{0441}\\x{043F}\\x{043B}\\x{0430}\\x{0442}\\x{043D}\\x{0430}\\x{044F}\\s*\\x{0434}\\x{043E}\\x{0441}\\x{0442}\\x{0430}\\x{0432}\\x{043A}\\x{0430})|(\\x{043E}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0435})|(c\\s*\\x{044D}\\x{0442}\\x{0438}\\x{043C}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{043E}\\x{043C}\\s*\\x{043F}\\x{043E}\\x{043A}\\x{0443}\\x{043F}\\x{0430}\\x{043B}\\x{0438})|(c\\s*\\x{044D}\\x{0442}\\x{0438}\\x{043C}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{043E}\\x{043C}\\s*\\x{0438}\\x{0441}\\x{043A}\\x{0430}\\x{043B}\\x{0438})|(\\x{0438}\\x{043D}\\x{0444}\\x{043E}\\x{0440}\\x{043C}\\x{0430}\\x{0446}\\x{0438}\\x{044F}\\s*\\x{043E}\\s*\\x{0434}\\x{043E}\\x{0441}\\x{0442}\\x{0430}\\x{0432}\\x{043A}\\x{0435})|(c\\x{043E}\\x{0441}\\x{0442}\\x{043E}\\x{044F}\\x{043D}\\x{0438}\\x{0435}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0430})|(k\\x{0443}\\x{043F}\\x{0438}\\x{0442}\\x{044C}\\s*\\x{0441}\\x{0435}\\x{0439}\\x{0447}\\x{0430}\\x{0441})|(p\\x{0435}\\x{0439}\\x{0442}\\x{0438}\\x{043D}\\x{0433}\\s*\\x{0438}\\s*\\x{043E}\\x{0442}\\x{0437}\\x{044B}\\x{0432}\\x{044B})|(a\\x{0440}\\x{0442}\\x{0438}\\x{043A}\\x{0443}\\x{043B})|(c\\s*\\x{044D}\\x{0442}\\x{0438}\\x{043C}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{043E}\\x{043C}\\s*\\x{043F}\\x{043E}\\x{043A}\\x{0443}\\x{043F}\\x{0430}\\x{044E}\\x{0442})|(\\x{041F}\\x{043E}\\x{0445}\\x{043E}\\x{0436}\\x{0438}\\x{0435}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{044B})|(k\\x{043E}\\x{0434}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0430})|(o\\x{0442}\\x{0437}\\x{044B}\\x{0432}\\x{044B}\\s*\\x{043F}\\x{043E}\\x{043A}\\x{0443}\\x{043F}\\x{0430}\\x{0442}\\x{0435}\\x{043B}\\x{0435}\\x{0439})|(k\\x{0430}\\x{043A}\\s*\\x{0432}\\x{0435}\\x{0440}\\x{043D}\\x{0443}\\x{0442}\\x{044C})|(o\\x{043F}\\x{0438}\\x{0441}\\x{0430}\\x{043D}\\x{0438}\\x{0435}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0430})|(\\x{0438}\\x{0437}\\x{0433}\\x{043E}\\x{0442}\\x{043E}\\x{0432}\\x{0438}\\x{0442}\\x{0435}\\x{043B}\\x{044C})|(\\d+\\s*\\x{043E}\\x{0442}\\x{0437}\\x{044B}\\x{0432}\\x{043E}\\x{0432}))"},"sk":{"price_regex":{"sk":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((prida(t|\\x{0165})\\s*do\\s*(n(a|\\x{00E1})kupn(e|\\x{00E9})ho){0,1}\\s*ko(s|\\x{0161})(i|\\x{00ED})ka)|(k(r|\\x{00FA})pi(t|\\x{0165}))|(vypredan(e|\\x{00E9})\\s*on-line)|(inform(a|\\x{00E1})cie\\s*o\\s*((v(y|\\x{00FD})robku)|(produkte)))|(kde\\s*k(u|\\x{00FA})pi(i|\\x{0165}))|(z(a|\\x{00E1})ruka\\s*\\d+\\s*mesiacov)|(\\d+\\s*((z(a|\\x{00E1})kazn(i|\\x{00ED})kov)|(hodnoten(i|\\x{00ED}))))|(na\\s*sklade)|(mo(z|\\x{017E})nosti\\s*doru(c|\\x{010D})enia)|(n(a|\\x{00E1})klady\\s*na\\s*dopravu))"},"sl":{"price_regex":{"si":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))"},"product_terms":"((dodaj\\s*v\\s*ko\\x{0161}arico)|(podobne\\s*artikle)|(v\\s*ko\\x{0161}arico)|(podrobnosti\\s*o\\s*izdelku)|(v\\s*zalogi))"},"sq":{"price_regex":{"al":"((\\d{1,3}\\s*(lek\\x{00EB}|all|l))|((lek\\x{00EB}|all|l)\\s*\\d{1,3}))"},"product_terms":"((shto\\s*n\\x{00EB}\\s*shport\\x{00EB})|(shtoje\\s*n\\x{00EB}\\s*shport\\x{00EB})|(ne\\s*stok)|(ofert\\x{00CB}\\s*online)|(ka\\s*stok))"},"sr":{"price_regex":{"me":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","rs":"((\\d{1,3}\\s*(rsd|din))|((rsd|din)\\s*\\d{1,3}))"},"product_terms":"((dodaj\\s*u\\s*korpu)|(kupi\\s*odmah)|(obavesti\\s*me\\s*kada\\s*bude\\s*na\\s*sni\\x{017E}enju)|(opis\\s*proizvoda))"},"sv":{"price_regex":{"se":"((\\d{1,3}\\s*(kr|sek|:-))|((kr|sek|:-)\\s*\\d{1,3}))"},"product_terms":"((l\\x{00E4}gg\\s*i\\s*korgen)|(kundvagn)|(gratis\\s*leverans)|(L\\x{00E4}gg\\s*bud)|(k\\x{00F6}p)|(l\\x{00E4}gg\\s*i\\s*kundvagn)|(l\\x{00E4}gg\\s*i\\s*varukorg)|(i\\s*lager)|(fri\\s*frakt)|(leverans)|(k\\x{00F6}p)|(l\\x{00E4}gg\\s*till\\s*i\\s*kundvagn)|(returpolicy)|(s\\x{00E4}ljs\\s*av)|(andra\\s*s\\x{00E4}ljare)|(\\d+\\s*betyg)|(\\d+\\s*omd\\x{00F6}men)|(handla)|(produktinformation)|(fri\\s*retur))"},"th":{"price_regex":{"th":"((\\d{1,3}\\s*(thb\\s*\\x{0e3f}|thb|\\x{0e3f}))|((thb\\s*\\x{0e3f}|thb|\\x{0e3f})\\s*\\d{1,3}))"},"product_terms":"((\\x{0E40}\\x{0E1E}\\x{0E34}\\x{0E48}\\x{0E21}\\x{0E44}\\x{0E1B}\\x{0E22}\\x{0E31}\\x{0E07}\\x{0E23}\\x{0E16}\\x{0E40}\\x{0E02}\\x{0E47}\\x{0E19})|(\\x{0E0B}\\x{0E37}\\x{0E49}\\x{0E2D}\\x{0E2A}\\x{0E34}\\x{0E19}\\x{0E04}\\x{0E49}\\x{E032})|(\\x{0E2A}\\x{0E48}\\x{0E07}\\x{0E1F}\\x{0E23}\\x{0E35}\\x{0E17}\\x{0E31}\\x{0E48}\\x{0E27}\\x{0E44}\\x{0E17}\\x{0E22})|(\\x{0E0B}\\x{0E37}\\x{0E49}\\x{0E2D}\\x{0E40}\\x{0E25}\\x{0E22})|(\\x{0E2A}\\x{0E32}\\x{0E21}\\x{0E32}\\x{0E23}\\x{0E16}\\x{0E40}\\x{0E01}\\x{0E47}\\x{0E1A}\\x{0E40}\\x{0E07}\\x{0E34}\\x{0E19}\\x{0E1B}\\x{0E25}\\x{0E32}\\x{0E22}\\x{0E17}\\x{0E32}\\x{0E07}\\x{0E44}\\x{0E14}\\x{0E49}))"},"token_limit":1600,"tr":{"price_regex":{"cy":"((\\d{1,3}\\s*(eur|\\x{20ac}))|((eur|\\x{20ac})\\s*\\d{1,3}))","tr":"((\\d{1,3}\\s*(try|tl|x\\{20BA}))|((try|tl|x\\{20BA})\\s*\\d{1,3}))"},"product_terms":"((sepete\\s*ekle)|(\\x{015E}imdi\\s*sat\\x{0131}n\\s*al)|(taraf\\x{0131}ndan\\s*sat\\x{0131}l\\x{0131}r\\s*ve\\s*g\\x{00F6}nderilir))"},"ua":{"price_regex":{"ua":"((\\d{1,3}\\s*(uah|\\x{0433}\\x{0440}\\x{043D}|\\x{20B4}))|((uah|\\x{0433}\\x{0440}\\x{043D}|\\x{20B4})\\s*\\d{1,3}))"},"product_terms":"((\\x{041A}\\x{0443}\\x{043F}\\x{0438}\\x{0442}\\x{0438})|(\\x{0421}\\x{043F}\\x{043E}\\x{0441}\\x{043E}\\x{0431}\\x{0438}\\s*\\x{0434}\\x{043E}\\x{0441}\\x{0442}\\x{0430}\\x{0432}\\x{043A}\\x{0438})|(\\x{0421}\\x{0443}\\x{043F}\\x{0443}\\x{0442}\\x{043D}\\x{0456}\\s*\\x{0442}\\x{043E}\\x{0432}\\x{0430}\\x{0440}\\x{0438})|(\\x{0417}\\x{0431}\\x{0435}\\x{0440}\\x{0435}\\x{0433}\\x{0442}\\x{0438}\\s*\\x{0434}\\x{043E}\\s*\\x{0441}\\x{043F}\\x{0438}\\x{0441}\\x{043A}\\x{0443}\\s*\\x{043F}\\x{043E}\\x{043A}\\x{0443}\\x{043F}\\x{043E}\\x{043A})|(\\x{0421}\\x{043F}\\x{043E}\\x{0441}\\x{043E}\\x{0431}\\x{0438}\\s*\\x{043E}\\x{043F}\\x{043B}\\x{0430}\\x{0442}\\x{0438}))"},"url_filter_regex":"(((/s\\?.*)|(/cart([/?].*)+)|(/cart$)|(/shopping-?cart/?)|(/shopping-?bag/?)|(/my-?cart/?)|(/view-?cart/?)|(/co-?cart/?)|(/start-?my-?cart(/|\\?.*)?)|(/checkout/?)|(/search[./?].*))|(/basket([/.?].*)?)|(/cartReview([/.?].*)?)$)","vi":{"price_regex":{"vn":"((\\d{1,3}\\s*(vnd\\s*\\x{20ab}|vnd|\\x{20ab}))|((vnd\\s*\\x{20ab}|vnd|\\x{20ab})\\s*\\d{1,3}))"},"product_terms":"((mua\\s*ngay)|(th\\x{00EA}m\\s*v\\x{00E0}o\\s*gi\\x{1ECF}\\s*h\\x{00E0}ng)|(thanh\\s*to\\x{00E1}n\\s*khi\\s*nh\\x{1EAD}n\\s*h\\x{00E0}ng)|(ch\\x{1ECD}n\\s*mua))"},"zh":{"price_regex":{"cn":"((\\d{1,3}\\s*\\x{5143})|((\\x{ffe5}|\\x{00a5}|rmb|cny)\\s*\\d{1,3}))","hk":"((\\d{1,3}\\s*(\\$|\\x{5143}))|((\\x{ffe5}|\\x{00a5}|hkd|\\$)\\s*\\d{1,3}))","sg":"(((s\\$|sgd|\\$)\\s*\\d{1,3})|(\\d{1,3}\\s*(s\\$|sgd|\\$)))","tw":"((\\d{1,3}\\s*(\\$|\\x{5143}))|((\\x{ffe5}|\\x{00a5}|twd|\\$)\\s*\\d{1,3}))"},"product_terms":"((\\x{52a0}\\x{5165}\\x{8d2d}\\x{7269}\\x{8f66})|(\\x{73b0}\\x{5728}\\x{8d2d}\\x{4e70})|(\\x{73b0}\\x{5728}\\x{6709}\\x{8d27})|(\\x{52a0}\\x{5165}\\x{5fc3}\\x{613f}\\x{5355})|(\\x{7ecf}\\x{5e38}\\x{4e00}\\x{8d77}\\x{8d2d}\\x{4e70}\\x{7684}\\x{5546}\\x{54c1})|(\\x{514d}\\x{8d39}\\x{914d}\\x{9001})|(\\x{9884}\\x{8ba1}\\x{6700}\\x{5feb}\\x{9001}\\x{8fbe})|(\\x{6dfb}\\x{52a0}\\x{5230}\\x{8d2d}\\x{7269}\\x{888b})|(\\x{9884}\\x{8ba1}\\x{53d1}\\x{8d27}\\x{65e5}\\x{671f})|(\\x{514d}\\x{8d39}\\x{9001}\\x{8d27})|(\\x{514d}\\x{8fd0}\\x{8d39})|(\\x{6536}\\x{85cf}\\x{5546}\\x{54c1})|(\\x{5356}\\x{5149}\\x{4e86})|(\\x{67e5}\\x{770b}\\x{76f8}\\x{4f3c}\\x{4ea7}\\x{54c1})|(\\x{7f3a}\\x{8d27})|(\\x{67e5}\\x{770b}\\x{76f8}\\x{4f3c}\\x{5546}\\x{54c1})|(\\x{5546}\\x{54c1}\\x{8d27}\\x{53f7})|(\\x{5927}\\x{5bb6}\\x{6652})|(\\x{5e97}\\x{957f}\\x{63a8}\\x{8350})|(\\x{514d}\\x{5bc4}\\x{51fa}\\x{8fd0}\\x{8d39})|(\\x{7d2f}\\x{8ba1}\\x{8bc4}\\x{4ef7})|(\\x{770b}\\x{4e86}\\x{53c8}\\x{770b})|(\\x{5546}\\x{54c1}\\x{4ecb}\\x{7ecd})|(\\x{964d}\\x{4ef7}\\x{901a}\\x{77e5})|(\\x{7f3a}\\x{8d27}\\x{767b}\\x{8bb0})|(\\x{52a0}\\x{5165}\\x{6e05}\\x{5355})|(\\x{7acb}\\x{5373}\\x{8d2d}\\x{4e70})|(\\x{5546}\\x{54c1}\\x{8be6}\\x{60c5})|(\\x{76f8}\\x{5173}\\x{63a8}\\x{8350})|(\\x{624b}\\x{673a}\\x{626b}\\x{7801}\\x{8d2d}\\x{4e70})|(\\x{5546}\\x{54c1}\\x{7f16}\\x{53f7})|(\\x{5230}\\x{8d27}\\x{901a}\\x{77e5})|(\\x{6536}\\x{85cf}\\x{5b9d}\\x{8d1d})|(\\x{7d2f}\\x{8ba1}\\x{8bc4}\\x{8bba})|(\\x{5b9d}\\x{8d1d}\\x{8be6}\\x{60c5})|(\\x{624b}\\x{673a}\\x{8d2d}\\x{4e70})|(\\x{6b64}\\x{5546}\\x{54c1}\\x{6682}\\x{65f6}\\x{7f3a}\\x{8d27})|(\\x{5546}\\x{54c1}\\x{7f16}\\x{7801})|(\\x{5728}\\x{5c0f}\\x{7a0b}\\x{5e8f}\\x{4e2d}\\x{67e5}\\x{770b}\\x{6b64}\\x{5546}\\x{54c1})|(\\x{5546}\\x{54c1}\\x{5c55}\\x{793a})|(\\x{4ea7}\\x{54c1}\\x{8be6}\\x{60c5})|(\\d{1,6}\\s*\\x{4eba}\\x{6652}\\x{5355})|(\\x{52a0}\\x{5165}\\x{8cfc}\\x{7269}\\x{8eca})|(\\x{76f4}\\x{63a5}\\x{8cfc}\\x{8cb7})|(\\x{5546}\\x{54c1}\\x{7279}\\x{8272})|(\\x{5546}\\x{54c1}\\x{898f}\\x{683c})|(\\x{5546}\\x{54c1}\\x{8a73}\\x{60c5})|(\\x{7acb}\\x{5373}\\x{8cfc}\\x{8cb7})|(\\x{52a0}\\x{5165}\\x{6211}\\x{7684}\\x{8cfc}\\x{7269}\\x{8eca})|(\\x{5546}\\x{54c1}\\x{8aaa}\\x{660e}))"}},"domains_config_list":{"360.cn":{"image_traget_url_extraction":true},"6pm.com":{"image_traget_url_extraction":true},"9gag.com":{"image_traget_url_extraction":true,"picl_disabled":true},"aarp.org":{"image_traget_url_extraction":true},"abc.net.au":{"image_traget_url_extraction":true},"accuweather.com":{"image_traget_url_extraction":true,"picl_disabled":true},"acs.org":{"image_traget_url_extraction":true},"active.com":{"image_traget_url_extraction":true},"adobe.com":{"picl_disabled":true},"agoda.com":{"image_traget_url_extraction":true},"aircanada.com":{"image_traget_url_extraction":true},"alarabiya.net":{"image_traget_url_extraction":true},"alibaba.com":{"image_traget_url_extraction":true},"aliexpress.com":{"image_traget_url_extraction":true},"allrecipes.com":{"image_traget_url_extraction":true,"picl_disabled":true},"amartfurniture.com.au":{"picl_disabled":true},"amazon.ca":{"image_traget_url_extraction":true},"amazon.co.jp":{"image_traget_url_extraction":true},"amazon.co.uk":{"image_traget_url_extraction":true},"amazon.com":{"image_traget_url_extraction":true},"amazon.in":{"image_traget_url_extraction":true},"aol.com":{"image_traget_url_extraction":true,"picl_disabled":true},"archive.org":{"image_traget_url_extraction":true,"picl_disabled":true},"ask.com":{"image_traget_url_extraction":true,"picl_disabled":true},"asos.com":{"image_traget_url_extraction":true},"authenticwatches.com":{"picl_disabled":true},"autotrader.com":{"image_traget_url_extraction":true},"azlyrics.com":{"image_traget_url_extraction":true},"babycenter.com":{"image_traget_url_extraction":true},"baidu.com":{"image_traget_url_extraction":false},"bankofamerica.com":{"image_traget_url_extraction":true,"picl_disabled":true},"barnesandnoble.com":{"image_traget_url_extraction":true},"bartleby.com":{"image_traget_url_extraction":true},"basicinvite.com":{"picl_disabled":true},"bbc.co.uk":{"picl_disabled":true},"becu.com":{"picl_disabled":true},"bedbathandbeyond.com":{"image_traget_url_extraction":true},"berkeley.edu":{"image_traget_url_extraction":true},"bestbuy.com":{"image_traget_url_extraction":true},"bhg.com":{"image_traget_url_extraction":true},"bhphotovideo.com":{"image_traget_url_extraction":true},"bigw.com.au":{"picl_disabled":true},"bing.com":{"image_traget_url_extraction":true,"picl_disabled":true,"use_src_attr_for_image_extraction":true},"biomedcentral.com":{"image_traget_url_extraction":true},"bleacherreport.com":{"image_traget_url_extraction":true},"bloomberg.com":{"image_traget_url_extraction":true,"picl_disabled":true},"bmj.com":{"image_traget_url_extraction":true},"bodybuilding.com":{"image_traget_url_extraction":true},"bonappetit.com":{"image_traget_url_extraction":true},"booking.com":{"image_traget_url_extraction":true,"picl_disabled":true},"booktopia.com.au":{"picl_disabled":true},"boxrec.com":{"image_traget_url_extraction":true},"britannica.com":{"image_traget_url_extraction":true},"britishcouncil.org":{"image_traget_url_extraction":true},"businessinsider.com":{"image_traget_url_extraction":true,"picl_disabled":true},"buyma.com":{"picl_disabled":true},"cafemom.com":{"image_traget_url_extraction":true},"cambridge.org":{"image_traget_url_extraction":true},"canada.ca":{"picl_disabled":true},"caranddriver.com":{"image_traget_url_extraction":true},"cargurus.com":{"image_traget_url_extraction":true},"cars.com":{"image_traget_url_extraction":true},"carsons.com":{"picl_disabled":true},"castedduonline.it":{"picl_disabled":true},"catch.com.au":{"picl_disabled":true},"cavenders.com":{"picl_disabled":true},"cbc.ca":{"image_traget_url_extraction":true},"cbssports.com":{"image_traget_url_extraction":true},"cdc.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"change.org":{"image_traget_url_extraction":true},"chase.com":{"picl_disabled":true},"chess.com":{"image_traget_url_extraction":true,"picl_disabled":true},"china.com.cn":{"image_traget_url_extraction":true},"chinadaily.com.cn":{"image_traget_url_extraction":true,"picl_disabled":true},"chron.com":{"image_traget_url_extraction":true},"citibank.com":{"picl_disabled":true},"classiccars.com":{"picl_disabled":true},"clevelandclinic.org":{"image_traget_url_extraction":true},"cnbc.com":{"image_traget_url_extraction":true,"picl_disabled":true},"cnn.com":{"image_traget_url_extraction":true,"picl_disabled":true},"codecademy.com":{"image_traget_url_extraction":true},"coles.com.au":{"picl_disabled":true},"colorado.edu":{"image_traget_url_extraction":true},"columbia.edu":{"image_traget_url_extraction":true},"cornell.edu":{"image_traget_url_extraction":true},"cosmopolitan.com":{"image_traget_url_extraction":true},"costco.com":{"image_traget_url_extraction":true},"countryliving.com":{"image_traget_url_extraction":true},"coursera.org":{"image_traget_url_extraction":true},"covers.com":{"image_traget_url_extraction":true},"cratejoy.com":{"picl_disabled":true},"crayola.com":{"picl_disabled":true},"cricbuzz.com":{"image_traget_url_extraction":true,"picl_disabled":true},"crtc.gc.ca":{"image_traget_url_extraction":true,"picl_disabled":true},"dailymail.co.uk":{"image_traget_url_extraction":true},"debenhams.com":{"picl_disabled":true},"desmos.com":{"image_traget_url_extraction":true},"dickblick.com":{"picl_disabled":true},"digg.com":{"image_traget_url_extraction":true},"diplomatie.gouv.fr":{"image_traget_url_extraction":true},"discogs.com":{"image_traget_url_extraction":true},"discord.com":{"picl_disabled":true},"diy.com":{"picl_disabled":true},"dpreview.com":{"image_traget_url_extraction":true},"dropbox.com":{"picl_disabled":true},"drudgereport.com":{"image_traget_url_extraction":true},"drugs.com":{"image_traget_url_extraction":true},"dw.com":{"image_traget_url_extraction":true},"ea.com":{"image_traget_url_extraction":true},"easports.com":{"image_traget_url_extraction":true},"ebay.co.uk":{"image_traget_url_extraction":true},"ebay.com":{"image_traget_url_extraction":true},"ebay.com.au":{"picl_disabled":true},"edmunds.com":{"image_traget_url_extraction":true},"ehow.com":{"image_traget_url_extraction":true},"elsevier.com":{"image_traget_url_extraction":true},"eonline.com":{"image_traget_url_extraction":true},"ereplacementparts.com":{"picl_disabled":true},"espn.com":{"image_traget_url_extraction":false,"picl_disabled":true},"espncricinfo.com":{"image_traget_url_extraction":true,"picl_disabled":true},"esquire.com":{"image_traget_url_extraction":true},"etsy.com":{"image_traget_url_extraction":true},"euronews.com":{"image_traget_url_extraction":true},"europa.eu":{"image_traget_url_extraction":true},"eurosport.com":{"image_traget_url_extraction":true},"expatriates.com":{"image_traget_url_extraction":true},"facebook.com":{"image_traget_url_extraction":true,"picl_disabled":true},"fandom.com":{"picl_disabled":true},"fanfiction.net":{"image_traget_url_extraction":true},"fao.org":{"image_traget_url_extraction":true},"fatbraintoys.com":{"picl_disabled":true},"fda.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"filgoal.com":{"image_traget_url_extraction":true},"firmoo.com":{"picl_disabled":true},"fishpond.com.au":{"picl_disabled":true},"fixya.com":{"image_traget_url_extraction":true},"flipkart.com":{"image_traget_url_extraction":true},"fontsquirrel.com":{"image_traget_url_extraction":true},"food.com":{"image_traget_url_extraction":true},"foodnetwork.com":{"image_traget_url_extraction":true},"fool.com":{"image_traget_url_extraction":true},"football365.com":{"image_traget_url_extraction":true},"formula1.com":{"image_traget_url_extraction":true},"foxnews.com":{"image_traget_url_extraction":true,"picl_disabled":true},"foxsports.com":{"image_traget_url_extraction":true},"frontgate.com":{"picl_disabled":true},"gamespot.com":{"image_traget_url_extraction":true},"gap.com":{"image_traget_url_extraction":true},"ge.xhamster.desi":{"picl_disabled":true},"gizmodo.com":{"image_traget_url_extraction":true},"go.com":{"image_traget_url_extraction":false},"goal.com":{"image_traget_url_extraction":true},"godaddy.com":{"picl_disabled":true},"goodhousekeeping.com":{"image_traget_url_extraction":true},"goodreads.com":{"image_traget_url_extraction":true},"google.ca":{"image_traget_url_extraction":true,"picl_disabled":true},"google.cat":{"image_traget_url_extraction":true,"picl_disabled":true},"google.co.in":{"image_traget_url_extraction":true},"google.co.uk":{"image_traget_url_extraction":true,"picl_disabled":true},"google.com":{"image_traget_url_extraction":true,"picl_disabled":true},"gov.uk":{"picl_disabled":true},"groupon.com":{"image_traget_url_extraction":true},"grubhub.com":{"image_traget_url_extraction":true},"gsmarena.com":{"image_traget_url_extraction":true},"harvard.edu":{"image_traget_url_extraction":true},"health.com":{"image_traget_url_extraction":true},"healthgrades.com":{"image_traget_url_extraction":true},"heart.org":{"image_traget_url_extraction":true},"herroom.com":{"picl_disabled":true},"hgtv.com":{"image_traget_url_extraction":true},"hindustantimes.com":{"image_traget_url_extraction":true},"hm.com":{"image_traget_url_extraction":true},"hollywoodreporter.com":{"image_traget_url_extraction":true},"homedepot.com":{"image_traget_url_extraction":true},"hotels.com":{"image_traget_url_extraction":true},"howstuffworks.com":{"image_traget_url_extraction":true},"hp.com":{"image_traget_url_extraction":true},"hse.ru":{"image_traget_url_extraction":true},"hulu.com":{"picl_disabled":true},"humblebundle.com":{"image_traget_url_extraction":true},"icy-veins.com":{"image_traget_url_extraction":true},"ign.com":{"image_traget_url_extraction":true,"picl_disabled":true},"ikea.com":{"image_traget_url_extraction":true},"imdb.com":{"picl_disabled":true},"imgur.com":{"picl_disabled":true},"indeed.com":{"picl_disabled":true},"indiamart.com":{"image_traget_url_extraction":true},"indianexpress.com":{"image_traget_url_extraction":true},"indiatimes.com":{"image_traget_url_extraction":true,"picl_disabled":true},"instagram.com":{"picl_disabled":true},"instructables.com":{"image_traget_url_extraction":true},"investing.com":{"image_traget_url_extraction":true,"picl_disabled":true},"investopedia.com":{"image_traget_url_extraction":true,"picl_disabled":true},"irishtimes.com":{"image_traget_url_extraction":true},"irna.ir":{"image_traget_url_extraction":true},"irs.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"jalopnik.com":{"image_traget_url_extraction":true},"japan-onlinestore.com":{"picl_disabled":true},"japanpost.jp":{"image_traget_url_extraction":true},"jnu.edu.cn":{"image_traget_url_extraction":true},"jw.org":{"image_traget_url_extraction":true},"jwpepper.com":{"picl_disabled":true},"khanacademy.org":{"image_traget_url_extraction":true,"picl_disabled":true},"kmart.com":{"picl_disabled":true},"kmart.com.au":{"picl_disabled":true},"kogan.com":{"picl_disabled":true},"kohls.com":{"image_traget_url_extraction":true},"komeri.com":{"picl_disabled":true},"kongregate.com":{"image_traget_url_extraction":true},"lanebryant.com":{"picl_disabled":true},"latimes.com":{"image_traget_url_extraction":true},"legacy.com":{"image_traget_url_extraction":true},"lego.com":{"image_traget_url_extraction":true},"lifehack.org":{"image_traget_url_extraction":true},"linkedin.com":{"image_traget_url_extraction":true,"picl_disabled":true},"littletoncoin.com":{"picl_disabled":true},"live.com":{"picl_disabled":true},"livemint.com":{"image_traget_url_extraction":true},"liverpoolfc.com":{"image_traget_url_extraction":true},"livescience.com":{"image_traget_url_extraction":true},"loc.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"lonelyplanet.com":{"image_traget_url_extraction":true},"lordandtaylor.com":{"picl_disabled":true},"lowes.com":{"image_traget_url_extraction":true},"maccosmetics.com":{"picl_disabled":true},"macys.com":{"image_traget_url_extraction":true},"mail.google.com":{"picl_disabled":true},"mama.cn":{"image_traget_url_extraction":true},"marketwatch.com":{"image_traget_url_extraction":true},"mathrubhumi.com":{"image_traget_url_extraction":true,"picl_disabled":true},"mcafee.com":{"picl_disabled":true},"medicinenet.com":{"image_traget_url_extraction":true},"medscape.com":{"image_traget_url_extraction":true},"menshealth.com":{"image_traget_url_extraction":true},"mercola.com":{"image_traget_url_extraction":true},"merriam-webster.com":{"image_traget_url_extraction":true,"picl_disabled":true},"meteoblue.com":{"picl_disabled":true},"microsoft.com":{"image_traget_url_extraction":true},"microsoftonline.com":{"picl_disabled":true},"minecraft.net":{"image_traget_url_extraction":true},"miniclip.com":{"image_traget_url_extraction":true},"minne.com":{"picl_disabled":true},"minted.com":{"picl_disabled":true},"mit.edu":{"image_traget_url_extraction":true,"picl_disabled":true},"monotaro.com":{"picl_disabled":true},"motorsport.com":{"image_traget_url_extraction":true},"mozilla.org":{"image_traget_url_extraction":true,"picl_disabled":true},"msn.com":{"image_traget_url_extraction":true,"picl_disabled":true},"myer.com.au":{"picl_disabled":true},"myfitnesspal.com":{"image_traget_url_extraction":true},"nba.com":{"image_traget_url_extraction":true},"nbcnews.com":{"image_traget_url_extraction":true,"picl_disabled":true},"nbcsports.com":{"image_traget_url_extraction":true},"ndtv.com":{"image_traget_url_extraction":true,"picl_disabled":true},"nejm.org":{"image_traget_url_extraction":true},"netflix.com":{"picl_disabled":true},"newegg.com":{"image_traget_url_extraction":true},"news.com.au":{"image_traget_url_extraction":true},"newsweek.com":{"image_traget_url_extraction":true},"nexusmods.com":{"image_traget_url_extraction":true},"nhl.com":{"image_traget_url_extraction":true},"nih.gov":{"image_traget_url_extraction":true},"nike.com":{"image_traget_url_extraction":true},"nintendo.com":{"image_traget_url_extraction":true},"noaa.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"nordstrom.com":{"image_traget_url_extraction":true},"npr.org":{"image_traget_url_extraction":true},"nps.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"nypost.com":{"image_traget_url_extraction":true,"picl_disabled":true},"nytimes.com":{"image_traget_url_extraction":true,"picl_disabled":true},"office.com":{"picl_disabled":true},"ohiolottery.com":{"picl_disabled":true},"okezone.com":{"image_traget_url_extraction":true},"onlyfans.com":{"picl_disabled":true},"outlook-sdf.office.com":{"picl_disabled":true},"outlook.com":{"picl_disabled":true},"outlook.live.com":{"picl_disabled":true},"outlook.office.com":{"picl_disabled":true},"parents.com":{"image_traget_url_extraction":true},"pbs.org":{"image_traget_url_extraction":true},"pbskids.org":{"image_traget_url_extraction":true},"pcgamer.com":{"image_traget_url_extraction":true},"pgatour.com":{"image_traget_url_extraction":true},"pinkbike.com":{"image_traget_url_extraction":true},"pinterest.com":{"image_traget_url_extraction":true,"picl_disabled":true},"planetminecraft.com":{"image_traget_url_extraction":true,"picl_disabled":true},"playstation.com":{"image_traget_url_extraction":true},"plos.org":{"image_traget_url_extraction":true},"pointp.fr":{"picl_disabled":true},"pokemon.com":{"image_traget_url_extraction":true},"ponparemall.com":{"picl_disabled":true},"pornhub.com":{"picl_disabled":true},"powells.com":{"picl_disabled":true},"psu.edu":{"image_traget_url_extraction":true},"psychologytoday.com":{"image_traget_url_extraction":true},"puritan.com":{"picl_disabled":true},"purplewave.com":{"picl_disabled":true},"qq.com":{"image_traget_url_extraction":true},"raspberrypi.org":{"image_traget_url_extraction":true},"realsimple.com":{"image_traget_url_extraction":true},"realtor.com":{"image_traget_url_extraction":true,"picl_disabled":true},"reddit.com":{"image_traget_url_extraction":false,"picl_disabled":true},"redfin.com":{"picl_disabled":true},"rei.com":{"image_traget_url_extraction":true},"reuters.com":{"image_traget_url_extraction":true,"picl_disabled":true},"rightmove.co.uk":{"picl_disabled":true},"roblox.com":{"picl_disabled":true},"rockpapershotgun.com":{"image_traget_url_extraction":true},"rollingstone.com":{"image_traget_url_extraction":true},"rotoworld.com":{"image_traget_url_extraction":true},"rottentomatoes.com":{"image_traget_url_extraction":true,"picl_disabled":true},"royalbank.com":{"picl_disabled":true},"royalmail.com":{"image_traget_url_extraction":true},"rt.com":{"image_traget_url_extraction":true,"picl_disabled":true},"runnersworld.com":{"image_traget_url_extraction":true},"salon.com":{"image_traget_url_extraction":true},"sbnation.com":{"image_traget_url_extraction":true},"sciencedaily.com":{"image_traget_url_extraction":true},"sciencemag.org":{"image_traget_url_extraction":true},"scientificamerican.com":{"image_traget_url_extraction":true},"scotiaonline.scotiabank.com":{"picl_disabled":true},"screenrant.com":{"image_traget_url_extraction":true},"screwfix.com":{"picl_disabled":true},"scribd.com":{"image_traget_url_extraction":true},"sdsu.edu":{"image_traget_url_extraction":true},"sec.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"secure.lloydsbank.co.uk":{"picl_disabled":true},"securebusiness.lloydsbank.co.uk":{"picl_disabled":true},"self.com":{"image_traget_url_extraction":true},"sherdog.com":{"image_traget_url_extraction":true},"shutterfly.com":{"image_traget_url_extraction":true},"sina.com.cn":{"image_traget_url_extraction":true},"sky.com":{"image_traget_url_extraction":true},"skyscanner.com":{"image_traget_url_extraction":true},"slate.com":{"image_traget_url_extraction":true},"slideshare.net":{"image_traget_url_extraction":true,"picl_disabled":true},"snopes.com":{"image_traget_url_extraction":true},"sohu.com":{"image_traget_url_extraction":true},"space.com":{"image_traget_url_extraction":true},"sparknotes.com":{"image_traget_url_extraction":true},"sportsmansguide.com":{"picl_disabled":true},"spotlightstores.com":{"picl_disabled":true},"square-enix.com":{"image_traget_url_extraction":true},"sstack.com":{"picl_disabled":true},"stackoverflow.com":{"picl_disabled":true},"stanford.edu":{"image_traget_url_extraction":true},"staples.com":{"image_traget_url_extraction":true},"state.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"steampowered.com":{"image_traget_url_extraction":true},"studentdoctor.net":{"image_traget_url_extraction":true},"sulekha.com":{"image_traget_url_extraction":true},"superdrug.com":{"picl_disabled":true},"szu.edu.cn":{"image_traget_url_extraction":true},"taobao.com":{"image_traget_url_extraction":true},"target.com":{"image_traget_url_extraction":true},"tax.service.gov.uk":{"picl_disabled":true},"td.com":{"image_traget_url_extraction":true,"picl_disabled":true},"techstreet.com":{"picl_disabled":true},"tesco.com":{"picl_disabled":true},"theasianparent.com":{"image_traget_url_extraction":true},"theatlantic.com":{"image_traget_url_extraction":true},"thedailybeast.com":{"image_traget_url_extraction":true},"thefreedictionary.com":{"image_traget_url_extraction":true},"thehill.com":{"image_traget_url_extraction":true},"thelancet.com":{"image_traget_url_extraction":true},"thesaurus.com":{"image_traget_url_extraction":true,"picl_disabled":true},"thesimsresource.com":{"image_traget_url_extraction":true},"thespruce.com":{"image_traget_url_extraction":true},"thespruceeats.com":{"image_traget_url_extraction":true},"theverge.com":{"image_traget_url_extraction":true,"picl_disabled":true},"thoughtco.com":{"image_traget_url_extraction":true},"thrillist.com":{"image_traget_url_extraction":true},"ticketmaster.com":{"image_traget_url_extraction":true},"time.com":{"image_traget_url_extraction":true,"picl_disabled":true},"tmall.com":{"image_traget_url_extraction":true},"tmz.com":{"image_traget_url_extraction":true},"tomsguide.com":{"image_traget_url_extraction":true},"tomshardware.com":{"image_traget_url_extraction":true},"tonyrobbins.com":{"image_traget_url_extraction":true},"tribunnews.com":{"image_traget_url_extraction":true,"picl_disabled":true},"tripadvisor.co.uk":{"picl_disabled":true},"tripsavvy.com":{"image_traget_url_extraction":true},"trivago.com":{"image_traget_url_extraction":true},"tsn.ca":{"image_traget_url_extraction":true},"tums.ac.ir":{"image_traget_url_extraction":true},"turnitin.com":{"image_traget_url_extraction":true},"twitch.tv":{"image_traget_url_extraction":true,"picl_disabled":true},"twitter.com":{"image_traget_url_extraction":true,"picl_disabled":true},"ubisoft.com":{"image_traget_url_extraction":true},"udemy.com":{"image_traget_url_extraction":true},"un.org":{"image_traget_url_extraction":true},"unesco.org":{"image_traget_url_extraction":true},"unity3d.com":{"image_traget_url_extraction":true},"usatoday.com":{"image_traget_url_extraction":false,"picl_disabled":true},"usda.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"usgs.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"usps.com":{"picl_disabled":true},"utoronto.ca":{"image_traget_url_extraction":true},"vectorstock.com":{"image_traget_url_extraction":true},"verizonwireless.com":{"image_traget_url_extraction":true},"verywellfit.com":{"image_traget_url_extraction":true},"verywellmind.com":{"image_traget_url_extraction":true},"vice.com":{"image_traget_url_extraction":false,"picl_disabled":true},"vitals.com":{"image_traget_url_extraction":true},"walgreens.com":{"image_traget_url_extraction":true},"washingtonpost.com":{"image_traget_url_extraction":true,"picl_disabled":true},"wayfair.com":{"image_traget_url_extraction":true},"weather.com":{"image_traget_url_extraction":true,"picl_disabled":true},"weather.gov":{"image_traget_url_extraction":true,"picl_disabled":true},"weathertech.com":{"picl_disabled":true},"webmd.com":{"image_traget_url_extraction":true,"picl_disabled":true},"wellsfargo.com":{"image_traget_url_extraction":true,"picl_disabled":true},"whoscored.com":{"image_traget_url_extraction":true},"wikipedia.org":{"image_traget_url_extraction":true,"picl_disabled":true},"wired.com":{"image_traget_url_extraction":true},"worldbank.org":{"image_traget_url_extraction":true},"wsj.com":{"image_traget_url_extraction":true,"picl_disabled":true},"wunderground.com":{"image_traget_url_extraction":true},"wwe.com":{"image_traget_url_extraction":true},"xbox.com":{"image_traget_url_extraction":true},"xhamster.com":{"picl_disabled":true},"xinhuanet.com":{"image_traget_url_extraction":true},"xvideos.com":{"picl_disabled":true},"yahoo.co.jp":{"image_traget_url_extraction":true},"yahoo.com":{"image_traget_url_extraction":true,"picl_disabled":true},"yelp.com":{"image_traget_url_extraction":true},"yoox.com":{"image_traget_url_extraction":true},"youtube.com":{"image_traget_url_extraction":true,"picl_disabled":true},"zhanqi.tv":{"image_traget_url_extraction":true},"zillow.com":{"image_traget_url_extraction":true,"picl_disabled":true},"zocdoc.com":{"image_traget_url_extraction":true},"zoom.us":{"picl_disabled":true},"zumiez.com":{"picl_disabled":true},"zvab.com":{"picl_disabled":true}},"updated_at":1786310416.855737} \ No newline at end of file diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/000003.log index 6cb4b80..59392f1 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/LOG index ffa6f56..dfd484e 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:02.084 6350 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Extension Rules/MANIFEST-000001 -2026/08/05-21:31:02.084 6350 Recovering log #3 -2026/08/05-21:31:02.085 6350 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Extension Rules/000003.log +2026/08/11-23:31:45.890 4e54 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Extension Rules/MANIFEST-000001 +2026/08/11-23:31:45.891 4e54 Recovering log #3 +2026/08/11-23:31:45.891 4e54 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Extension Rules/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/LOG.old index 24d5ffc..f711df2 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Rules/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.185 334 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Extension Rules/MANIFEST-000001 -2026/08/04-22:51:52.185 334 Recovering log #3 -2026/08/04-22:51:52.186 334 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Extension Rules/000003.log +2026/08/10-22:38:48.205 3874 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Extension Rules/MANIFEST-000001 +2026/08/10-22:38:48.205 3874 Recovering log #3 +2026/08/10-22:38:48.205 3874 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Extension Rules/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/000003.log index 6cb4b80..59392f1 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/LOG index cb7317e..e591eea 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:02.091 6350 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Extension Scripts/MANIFEST-000001 -2026/08/05-21:31:02.093 6350 Recovering log #3 -2026/08/05-21:31:02.093 6350 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Extension Scripts/000003.log +2026/08/11-23:31:45.897 4e54 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Extension Scripts/MANIFEST-000001 +2026/08/11-23:31:45.897 4e54 Recovering log #3 +2026/08/11-23:31:45.898 4e54 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Extension Scripts/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/LOG.old index 8476ec6..b1aa625 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Extension Scripts/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.191 334 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Extension Scripts/MANIFEST-000001 -2026/08/04-22:51:52.192 334 Recovering log #3 -2026/08/04-22:51:52.192 334 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Extension Scripts/000003.log +2026/08/10-22:38:48.210 3874 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Extension Scripts/MANIFEST-000001 +2026/08/10-22:38:48.210 3874 Recovering log #3 +2026/08/10-22:38:48.211 3874 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Extension Scripts/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/000003.log index 32667a9..4b8ea5f 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/LOG index 06e68af..4e1568f 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:02.379 2bf0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Extension State/MANIFEST-000001 -2026/08/05-21:31:02.379 2bf0 Recovering log #3 -2026/08/05-21:31:02.380 2bf0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Extension State/000003.log +2026/08/11-23:31:46.176 50f0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Extension State/MANIFEST-000001 +2026/08/11-23:31:46.176 50f0 Recovering log #3 +2026/08/11-23:31:46.177 50f0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Extension State/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/LOG.old index 698d435..c03ea14 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Extension State/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.441 334 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Extension State/MANIFEST-000001 -2026/08/04-22:51:52.441 334 Recovering log #3 -2026/08/04-22:51:52.441 334 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Extension State/000003.log +2026/08/10-22:38:48.501 4b80 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Extension State/MANIFEST-000001 +2026/08/10-22:38:48.501 4b80 Recovering log #3 +2026/08/10-22:38:48.502 4b80 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Extension State/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/ExtensionActivityEdge b/FinlyticApp/.dart_tool/chrome-device/Default/ExtensionActivityEdge index f61a792..3f16646 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/ExtensionActivityEdge and b/FinlyticApp/.dart_tool/chrome-device/Default/ExtensionActivityEdge differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Favicons b/FinlyticApp/.dart_tool/chrome-device/Default/Favicons index 158f0a1..79d8a96 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Favicons and b/FinlyticApp/.dart_tool/chrome-device/Default/Favicons differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/History b/FinlyticApp/.dart_tool/chrome-device/Default/History index f4b2458..1ab5c4c 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/History and b/FinlyticApp/.dart_tool/chrome-device/Default/History differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/000004.log b/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/000004.log index d4f2650..6e99e24 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/000004.log and b/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/000004.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/LOG index 7061e7f..20940ce 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:32:59.002 5224 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\IndexedDB\devtools_devtools_0.indexeddb.leveldb/MANIFEST-000001 -2026/08/05-21:32:59.002 5224 Recovering log #4 -2026/08/05-21:32:59.003 5224 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\IndexedDB\devtools_devtools_0.indexeddb.leveldb/000004.log +2026/08/10-23:35:02.595 4b80 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\IndexedDB\devtools_devtools_0.indexeddb.leveldb/MANIFEST-000001 +2026/08/10-23:35:02.595 4b80 Recovering log #7 +2026/08/10-23:35:02.595 4b80 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\IndexedDB\devtools_devtools_0.indexeddb.leveldb/000007.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/LOG.old index e6cdab3..67fc50b 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/LOG.old @@ -1,3 +1,15 @@ -2026/08/04-22:58:21.294 7484 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\IndexedDB\devtools_devtools_0.indexeddb.leveldb/MANIFEST-000001 -2026/08/04-22:58:21.294 7484 Recovering log #4 -2026/08/04-22:58:21.294 7484 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\IndexedDB\devtools_devtools_0.indexeddb.leveldb/000004.log +2026/08/10-23:23:13.920 4b80 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\IndexedDB\devtools_devtools_0.indexeddb.leveldb/MANIFEST-000001 +2026/08/10-23:23:13.921 4b80 Recovering log #4 +2026/08/10-23:23:13.921 4b80 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\IndexedDB\devtools_devtools_0.indexeddb.leveldb/000004.log +2026/08/10-23:30:13.758 5bd0 Level-0 table #8: started +2026/08/10-23:30:13.775 5bd0 Level-0 table #8: 226 bytes OK +2026/08/10-23:30:13.786 5bd0 Delete type=0 #4 +2026/08/10-23:30:13.787 5bd0 Manual compaction at level-0 from (begin) .. (end); will stop at (end) +2026/08/10-23:30:13.787 5bd0 Manual compaction at level-1 from (begin) .. (end); will stop at '\x00\x00\x00\x00\x06' @ 62 : 1 +2026/08/10-23:30:13.787 5bd0 Compacting 1@1 + 1@2 files +2026/08/10-23:30:13.792 5bd0 Generated table #9@1: 23 keys, 557 bytes +2026/08/10-23:30:13.792 5bd0 Compacted 1@1 + 1@2 files => 557 bytes +2026/08/10-23:30:13.794 5bd0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/08/10-23:30:13.794 5bd0 Delete type=2 #5 +2026/08/10-23:30:13.794 5bd0 Delete type=2 #8 +2026/08/10-23:30:13.795 5bd0 Manual compaction at level-1 from '\x00\x00\x00\x00\x06' @ 62 : 1 .. (end); will stop at (end) diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/MANIFEST-000001 b/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/MANIFEST-000001 index e1b1a2f..06e8505 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/MANIFEST-000001 and b/FinlyticApp/.dart_tool/chrome-device/Default/IndexedDB/devtools_devtools_0.indexeddb.leveldb/MANIFEST-000001 differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Local Extension Settings/jdiccldimpdaibmpdkjnbmckianbfold/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Local Extension Settings/jdiccldimpdaibmpdkjnbmckianbfold/LOG index d8105f3..6354b68 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Local Extension Settings/jdiccldimpdaibmpdkjnbmckianbfold/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Local Extension Settings/jdiccldimpdaibmpdkjnbmckianbfold/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:02.427 2bf0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Local Extension Settings\jdiccldimpdaibmpdkjnbmckianbfold/MANIFEST-000001 -2026/08/05-21:31:02.427 2bf0 Recovering log #3 -2026/08/05-21:31:02.427 2bf0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Local Extension Settings\jdiccldimpdaibmpdkjnbmckianbfold/000003.log +2026/08/11-23:31:46.171 50f0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Local Extension Settings\jdiccldimpdaibmpdkjnbmckianbfold/MANIFEST-000001 +2026/08/11-23:31:46.171 50f0 Recovering log #3 +2026/08/11-23:31:46.171 50f0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Local Extension Settings\jdiccldimpdaibmpdkjnbmckianbfold/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Local Extension Settings/jdiccldimpdaibmpdkjnbmckianbfold/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Local Extension Settings/jdiccldimpdaibmpdkjnbmckianbfold/LOG.old index 70da93e..ba06edc 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Local Extension Settings/jdiccldimpdaibmpdkjnbmckianbfold/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Local Extension Settings/jdiccldimpdaibmpdkjnbmckianbfold/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.466 2ad8 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Local Extension Settings\jdiccldimpdaibmpdkjnbmckianbfold/MANIFEST-000001 -2026/08/04-22:51:52.467 2ad8 Recovering log #3 -2026/08/04-22:51:52.467 2ad8 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Local Extension Settings\jdiccldimpdaibmpdkjnbmckianbfold/000003.log +2026/08/10-22:38:48.496 4b80 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Local Extension Settings\jdiccldimpdaibmpdkjnbmckianbfold/MANIFEST-000001 +2026/08/10-22:38:48.497 4b80 Recovering log #3 +2026/08/10-22:38:48.497 4b80 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Local Extension Settings\jdiccldimpdaibmpdkjnbmckianbfold/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/000003.log index 6d5cdce..a628454 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/LOG index 7af5925..272abf2 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/LOG @@ -1,3 +1,8 @@ -2026/08/05-21:31:02.132 4094 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Local Storage\leveldb/MANIFEST-000001 -2026/08/05-21:31:02.139 4094 Recovering log #3 -2026/08/05-21:31:02.142 4094 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Local Storage\leveldb/000003.log +2026/08/11-23:31:45.908 5368 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Local Storage\leveldb/MANIFEST-000001 +2026/08/11-23:31:45.912 5368 Recovering log #3 +2026/08/11-23:31:45.912 5368 Level-0 table #3: started +2026/08/11-23:31:45.917 5368 Level-0 table #3: 27897 bytes OK +2026/08/11-23:31:45.917 5368 Recovering log #4 +2026/08/11-23:31:45.920 5368 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Local Storage\leveldb/000004.log +2026/08/11-23:31:45.922 5368 Delete type=0 #3 +2026/08/11-23:31:45.922 5368 Delete type=2 #5 diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/LOG.old index cbbc647..b30e7da 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/LOG.old @@ -1,3 +1,5 @@ -2026/08/04-22:51:52.203 5c5c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Local Storage\leveldb/MANIFEST-000001 -2026/08/04-22:51:52.214 5c5c Recovering log #3 -2026/08/04-22:51:52.217 5c5c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Local Storage\leveldb/000003.log +2026/08/10-22:38:48.242 190c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Local Storage\leveldb/MANIFEST-000001 +2026/08/10-22:38:48.246 190c Recovering log #3 +2026/08/10-22:38:48.248 190c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Local Storage\leveldb/000003.log +2026/08/10-23:36:23.164 5e00 Level-0 table #5: started +2026/08/10-23:36:23.170 5e00 Level-0 table #5: 27897 bytes OK diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/MANIFEST-000001 b/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/MANIFEST-000001 index 18e5cab..bef9939 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/MANIFEST-000001 and b/FinlyticApp/.dart_tool/chrome-device/Default/Local Storage/leveldb/MANIFEST-000001 differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Login Data b/FinlyticApp/.dart_tool/chrome-device/Default/Login Data index 23e5926..207366e 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Login Data and b/FinlyticApp/.dart_tool/chrome-device/Default/Login Data differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Network Action Predictor b/FinlyticApp/.dart_tool/chrome-device/Default/Network Action Predictor index fe70365..b79907b 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Network Action Predictor and b/FinlyticApp/.dart_tool/chrome-device/Default/Network Action Predictor differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Network/Cookies b/FinlyticApp/.dart_tool/chrome-device/Default/Network/Cookies index 9a7995b..863e678 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Network/Cookies and b/FinlyticApp/.dart_tool/chrome-device/Default/Network/Cookies differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Network/Network Persistent State b/FinlyticApp/.dart_tool/chrome-device/Default/Network/Network Persistent State index bea6357..b33725b 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Network/Network Persistent State +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Network/Network Persistent State @@ -1 +1 @@ -{"net":{"http_server_properties":{"servers":[{"anonymization":["GAAAABMAAABkZXZ0b29sczovL2RldnRvb2xzAA==",true,0],"network_stats":{"srtt":17414},"server":"https://fonts.gstatic.com"},{"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"server":"https://edge.microsoft.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL29mZmljZS5jb20AAA==",false,0],"server":"https://mss.office.com","supports_spdy":true},{"anonymization":["HAAAABUAAABodHRwczovL21pY3Jvc29mdC5jb20AAAA=",false,0],"server":"https://prod.rewardsplatform.microsoft.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433023865520729","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL29mZmljZS5jb20AAA==",false,0],"network_stats":{"srtt":38420},"server":"https://substrate.office.com","supports_spdy":true},{"anonymization":["GAAAABMAAABkZXZ0b29sczovL2RldnRvb2xzAA==",false,0],"server":"https://msedgedevtools.microsoft.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433023979073721","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":22603},"server":"https://clients2.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433023979156048","port":443,"protocol_str":"quic"}],"anonymization":["JAAAAB0AAABodHRwczovL2dvb2dsZXVzZXJjb250ZW50LmNvbQAAAA==",false,0],"network_stats":{"srtt":24210},"server":"https://clients2.googleusercontent.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433023862968354","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":17560},"server":"https://fonts.googleapis.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433023862968168","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":86448},"server":"https://www.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433025053634153","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":22917},"server":"https://fonts.gstatic.com","supports_spdy":true},{"anonymization":["HAAAABUAAABodHRwczovL21pY3Jvc29mdC5jb20AAAA=",false,0],"server":"https://edge.microsoft.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433029146627680","port":443,"protocol_str":"quic"}],"anonymization":[3],"network_stats":{"srtt":15812},"server":"https://dns.google","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13430529064390250","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwczovL2JpbmcuY29t",false,0],"network_stats":{"srtt":22092},"server":"https://www.bing.com","supports_spdy":true}],"supports_quic":{"address":"192.168.178.26","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G"}}} \ No newline at end of file +{"net":{"http_server_properties":{"broken_alternative_services":[{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"broken_count":1,"host":"tracenep-eu.bidprism.com","port":443,"protocol_str":"quic"}],"servers":[{"anonymization":["FAAAABAAAABodHRwczovL2JpbmcuY29t",false,0],"server":"https://th.bing.com","supports_spdy":true},{"anonymization":["GAAAABMAAABkZXZ0b29sczovL2RldnRvb2xzAA==",true,0],"network_stats":{"srtt":15514},"server":"https://fonts.gstatic.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433376176601082","port":443,"protocol_str":"quic"}],"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://trace-eu2.adworknow.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://msft-ssp-emea.adnxs.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://tracenep-eu.bidprism.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://browser.events.data.msn.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"server":"https://edge.microsoft.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://consent.cmp.oath.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://cdn.p-n.io","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463080335976","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://www.googletagmanager.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://sb.scorecardresearch.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://opus.analytics.yahoo.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://cdn.jsdelivr.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463082022541","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://ep2.adtrafficquality.google","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://jsapi.login.yahoo.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://pm-widget.taboola.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://cdn.taboola.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://k.p-n.io","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463079886187","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"network_stats":{"srtt":17260},"server":"https://i.clean.gg","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463082499022","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",true,0],"network_stats":{"srtt":34805},"server":"https://ep2.adtrafficquality.google","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463083128776","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"network_stats":{"srtt":42208},"server":"https://ep1.adtrafficquality.google","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://am-trc-events.taboola.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://nexus-gateway-prod.media.yahoo.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://udc.yahoo.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://edge.microsoft.com","supports_spdy":true},{"anonymization":["GAAAABMAAABkZXZ0b29sczovL2RldnRvb2xzAA==",false,0],"server":"https://msedgedevtools.microsoft.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://s.yimg.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://finance.yahoo.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13430957704804035","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABQAAABodHRwczovL2pzZGVsaXZyLm5ldA==",false,0],"server":"https://cdn.jsdelivr.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463278680217","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",true,0],"network_stats":{"srtt":32620},"server":"https://tpc.googlesyndication.com","supports_spdy":true},{"anonymization":["LAAAACgAAABodHRwczovL3hwYXl3YWxsZXRjZG4tcHJvZC5henVyZWVkZ2UubmV0",false,0],"server":"https://xpaywalletcdn-prod.azureedge.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463082096930","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",true,0],"network_stats":{"srtt":65814},"server":"https://f1a7d4adf80cbc8e3314a91f2f485f94.safeframe.googlesyndication.com"},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://query1.finance.yahoo.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://trc-events.taboola.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"server":"https://geo.yahoo.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463369370100","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"network_stats":{"srtt":14743},"server":"https://pagead2.googlesyndication.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463383083815","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",true,0],"network_stats":{"srtt":12835},"server":"https://pagead2.googlesyndication.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433463383074677","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL3lhaG9vLmNvbQAAAA==",false,0],"network_stats":{"srtt":16651},"server":"https://region1.google-analytics.com","supports_spdy":true},{"anonymization":["HAAAABUAAABodHRwczovL21pY3Jvc29mdC5jb20AAAA=",false,0],"server":"https://prod.rewardsplatform.microsoft.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL29mZmljZS5jb20AAA==",false,0],"server":"https://mss.office.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://api.msn.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://c.bing.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://c.msn.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://edge.microsoft.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://srtb.msn.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://ntp.msn.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://assets.msn.com","supports_spdy":true},{"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"server":"https://rewards.bing.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433549506841792","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":17858},"server":"https://fonts.googleapis.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433549506745356","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":25885},"server":"https://www.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433549510435395","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":85301},"server":"https://clients2.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433549510537537","port":443,"protocol_str":"quic"}],"anonymization":["JAAAAB0AAABodHRwczovL2dvb2dsZXVzZXJjb250ZW50LmNvbQAAAA==",false,0],"network_stats":{"srtt":14860},"server":"https://clients2.googleusercontent.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431043916520702","port":443,"protocol_str":"quic"}],"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"network_stats":{"srtt":43364},"server":"https://th.bing.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431051116519785","port":443,"protocol_str":"quic"}],"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"network_stats":{"srtt":28826},"server":"https://img-s-msn-com.akamaized.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431051116547803","port":443,"protocol_str":"quic"}],"anonymization":["FAAAAA8AAABodHRwczovL21zbi5jb20A",false,0],"network_stats":{"srtt":32679},"server":"https://www.bing.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433549518575017","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":24924},"server":"https://fonts.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433549536292167","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL29mZmljZS5jb20AAA==",false,0],"network_stats":{"srtt":25873},"server":"https://substrate.office.com","supports_spdy":true},{"anonymization":["HAAAABUAAABodHRwczovL21pY3Jvc29mdC5jb20AAAA=",false,0],"server":"https://edge.microsoft.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433549596426801","port":443,"protocol_str":"quic"}],"anonymization":[3],"network_stats":{"srtt":33541},"server":"https://dns.google","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431051110414086","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwczovL2JpbmcuY29t",false,0],"network_stats":{"srtt":80264},"server":"https://www.bing.com","supports_spdy":true}],"supports_quic":{"address":"192.168.178.26","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G"}}} \ No newline at end of file diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Network/Reporting and NEL b/FinlyticApp/.dart_tool/chrome-device/Default/Network/Reporting and NEL index 7554917..028a22f 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Network/Reporting and NEL and b/FinlyticApp/.dart_tool/chrome-device/Default/Network/Reporting and NEL differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Network/TransportSecurity b/FinlyticApp/.dart_tool/chrome-device/Default/Network/TransportSecurity index d4477e7..d380a62 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Network/TransportSecurity +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Network/TransportSecurity @@ -1 +1 @@ -{"sts":[{"expiry":1817412719.887427,"host":"E2grh36KYBPKcpj8t8jB5P5zpjI7nyFG6NVRcHFibQ4=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1785876719.88743},{"expiry":1817499546.627688,"host":"OuKlWsMW1dkkbI1X/oi6o0Y95ZNSWnSoeaIXAEYPlv4=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1785963546.627689},{"expiry":1817494265.675546,"host":"PKqosHGXLFTwexcsjC+UXTkKV3GWWHwtzKz/ULb9ssM=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1785958265.675548},{"expiry":1817494264.3256,"host":"XfQ4sL0YUsz0d2efIucTK4gCZsiYC8a7DpHfg2YLsps=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1785958264.325602},{"expiry":1817494262.968869,"host":"nAuqgR4iEWti7SOdT3UHPl6rmZU/DeaIm38P2O2OkgA=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1785958262.968872},{"expiry":1817494265.521471,"host":"rmnekbKAq/dxKc3O5aFRkaYg4kOrb8ehfGdmdZ4sxZ0=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1785958265.521477},{"expiry":1817494264.586678,"host":"7tSAOAx10AkpkhAGpc2+WxFucu2Qg9/ypzW0ZDwcltE=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1785958264.586681}],"version":2} \ No newline at end of file +{"sts":[{"expiry":1817933775.683156,"host":"B6AXuzZLGG97vjnwF7wx0l7EcservwUEMn/6xq+3XeU=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786397775.683159},{"expiry":1818019914.838454,"host":"E2grh36KYBPKcpj8t8jB5P5zpjI7nyFG6NVRcHFibQ4=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786483914.838457},{"expiry":1817933704.037421,"host":"Imip1Y7nHfPZTYQgI7EifDZOyiqlFeRT0HU8heztW1Q=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397704.037424},{"expiry":1817933478.109443,"host":"Jqurao51Ii2ik2L333aYJZMZL/1huuAWcJKIw3RDdy8=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786397478.109445},{"expiry":1817933699.518875,"host":"KcbWAXnoPL+I6rflLsYJJuaUOJyqfmpTWy0jfHf+pfk=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397699.518878},{"expiry":1817933768.413509,"host":"KdPYVONcL8Q8Fq4yTKlpWJmAS/CRKiJ7tFAwQ9TQpUo=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397768.413513},{"expiry":1817933781.217954,"host":"K8nNagTbI3hnZC3xmo4KKuLQOxSH6wPBY87a+bxCmhI=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397781.217957},{"expiry":1817846579.63741,"host":"Mrhkytqi5a+5SqjNm+BlTzQkzpfkQMT31YM3RSLQ/U8=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786310579.637412},{"expiry":1817933480.336147,"host":"M4bfUnCmQAi4PNb3B8aI/2+SVJhHKsMfMMT7fzi6ij4=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786397480.33615},{"expiry":1817933483.226198,"host":"OkcoriPvFby30zsX+UEwmbHNMnIeIy/UZB0ca7wDP40=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397483.2262},{"expiry":1818019996.426821,"host":"OuKlWsMW1dkkbI1X/oi6o0Y95ZNSWnSoeaIXAEYPlv4=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786483996.426824},{"expiry":1817933480.428281,"host":"PBpfVbhJMSTFJe+o0NXJ0ygDF3F5gO5VsP23Yu+Eex4=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786397480.428284},{"expiry":1818019912.908784,"host":"PKqosHGXLFTwexcsjC+UXTkKV3GWWHwtzKz/ULb9ssM=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786483912.908786},{"expiry":1818019910.31817,"host":"XfQ4sL0YUsz0d2efIucTK4gCZsiYC8a7DpHfg2YLsps=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786483910.318174},{"expiry":1817933482.606139,"host":"egdkMUjLTLk5/EIcmMZrEknGxegVXBfuHONolFX42Ns=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397482.606141},{"expiry":1817933707.526504,"host":"fbRAPKLRPRT1j5V8oJzybaVzdpP8qtdRra4+FmWV3CI=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397707.526506},{"expiry":1818019906.841968,"host":"nAuqgR4iEWti7SOdT3UHPl6rmZU/DeaIm38P2O2OkgA=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786483906.84197},{"expiry":1817846577.598227,"host":"ofvmP7oW+0RwTFJSZyupPak3ZVHEb6IkoKJ+1IOU6KA=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786310577.598229},{"expiry":1817933783.118597,"host":"orePd9rNSlekPnxKdXlDk5n5/alBAOuliWN2jgnMWf4=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397783.118598},{"expiry":1817933704.804195,"host":"qaDeFdT1UTirY0OQe+c5LKw+zjx6vF/+3vFh7CgrAOY=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786397704.804197},{"expiry":1817933480.981929,"host":"rJqa85YHBGBHea8wSNPfCMMKMgiQZeq2nO3tUyvtgWI=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397480.981931},{"expiry":1818019936.292354,"host":"rmnekbKAq/dxKc3O5aFRkaYg4kOrb8ehfGdmdZ4sxZ0=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786483936.292357},{"expiry":1787693512.442664,"host":"zi8JlNTXaMJ4ItuOkNurrynRee2qQ3s7zYEjUGufIRE=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786483912.442666},{"expiry":1817846577.679582,"host":"3IYUBX7IrDAL2Q2p9rScEEGJmIAY8KrSJk/nyCS1o04=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786310577.679585},{"expiry":1818019906.280417,"host":"7tSAOAx10AkpkhAGpc2+WxFucu2Qg9/ypzW0ZDwcltE=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786483906.28043},{"expiry":1817933483.084554,"host":"/MnWlMLgi3kqszs2YcP4C5Ck57g5EBGXmQ1sTITVMoI=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397483.084555},{"expiry":1817933677.818657,"host":"/d33uIJEv2VeAZFidpD8ekVPipj6egsj17W3vb3BuDw=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1786397677.818658}],"version":2} \ No newline at end of file diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Password_Diagnostics/PMLog_13430050657669799 b/FinlyticApp/.dart_tool/chrome-device/Default/Password_Diagnostics/PMLog_13430050657669799 index 68aa2ef..9d92388 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Password_Diagnostics/PMLog_13430050657669799 +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Password_Diagnostics/PMLog_13430050657669799 @@ -986,3 +986,471 @@ AddLoginSync AddLoginSync 13430431866915854 AddLoginSync +13430784014565787 +AddLoginSync +13430784014566608 +AddLoginSync +13430784014567304 +AddLoginSync +13430784014568110 +AddLoginSync +13430784014582195 +AddLoginSync +13430784014583089 +AddLoginSync +13430784014583810 +AddLoginSync +13430784014584554 +AddLoginSync +13430784014585171 +AddLoginSync +13430784014585767 +AddLoginSync +13430784014586330 +AddLoginSync +13430784014586889 +AddLoginSync +13430784014587522 +AddLoginSync +13430784014588064 +AddLoginSync +13430784014588646 +AddLoginSync +13430784014589415 +AddLoginSync +13430784014643936 +AddLoginSync +13430784014644943 +AddLoginSync +13430784014645593 +AddLoginSync +13430784014646197 +AddLoginSync +13430784014659300 +AddLoginSync +13430784014660289 +AddLoginSync +13430784014660901 +AddLoginSync +13430784014661476 +AddLoginSync +13430784014662055 +AddLoginSync +13430784014662609 +AddLoginSync +13430784014663196 +AddLoginSync +13430784014663770 +AddLoginSync +13430784014664368 +AddLoginSync +13430784014665029 +AddLoginSync +13430784014665556 +AddLoginSync +13430784014666099 +AddLoginSync +13430784014666664 +AddLoginSync +13430784014667235 +AddLoginSync +13430784014667900 +AddLoginSync +13430784014668489 +AddLoginSync +13430784014669045 +AddLoginSync +13430784014669659 +AddLoginSync +13430784014670351 +AddLoginSync +13430784014671032 +AddLoginSync +13430784014671658 +AddLoginSync +13430784014672274 +AddLoginSync +13430784014672869 +AddLoginSync +13430784014673723 +AddLoginSync +13430784014675429 +AddLoginSync +13430784014676155 +AddLoginSync +13430784014676791 +AddLoginSync +13430784014677407 +AddLoginSync +13430784014678055 +AddLoginSync +13430784014679120 +AddLoginSync +13430784014679752 +AddLoginSync +13430784014680513 +AddLoginSync +13430784014681431 +AddLoginSync +13430784014682093 +AddLoginSync +13430784014682713 +AddLoginSync +13430784014683324 +AddLoginSync +13430784014683925 +AddLoginSync +13430784014684722 +AddLoginSync +13430784014685277 +AddLoginSync +13430784014685897 +AddLoginSync +13430784014686477 +AddLoginSync +13430784014687002 +AddLoginSync +13430784014687594 +AddLoginSync +13430784014688168 +AddLoginSync +13430784014688727 +AddLoginSync +13430784014689346 +AddLoginSync +13430784014690277 +AddLoginSync +13430784014690936 +AddLoginSync +13430784014691733 +AddLoginSync +13430784014692397 +AddLoginSync +13430784014693078 +AddLoginSync +13430784014693712 +AddLoginSync +13430784014694342 +AddLoginSync +13430784014695075 +AddLoginSync +13430784014695692 +AddLoginSync +13430784014696275 +AddLoginSync +13430784014696846 +AddLoginSync +13430784014697410 +AddLoginSync +13430867933139574 +AddLoginSync +13430867933140592 +AddLoginSync +13430867933141225 +AddLoginSync +13430867933164149 +AddLoginSync +13430867933165030 +AddLoginSync +13430867933165669 +AddLoginSync +13430867933166325 +AddLoginSync +13430867933167012 +AddLoginSync +13430867933167602 +AddLoginSync +13430867933168195 +AddLoginSync +13430867933168912 +AddLoginSync +13430867933169561 +AddLoginSync +13430867933170090 +AddLoginSync +13430867933170640 +AddLoginSync +13430867933171167 +AddLoginSync +13430867933171718 +AddLoginSync +13430867933172305 +AddLoginSync +13430867933172840 +AddLoginSync +13430867933173315 +AddLoginSync +13430867933173832 +AddLoginSync +13430867933174325 +AddLoginSync +13430867933174813 +AddLoginSync +13430867933175328 +AddLoginSync +13430867933175951 +AddLoginSync +13430867933176824 +AddLoginSync +13430867933177297 +AddLoginSync +13430867933177779 +AddLoginSync +13430867933190497 +AddLoginSync +13430867933210782 +AddLoginSync +13430867933211478 +AddLoginSync +13430867933212005 +AddLoginSync +13430867933212560 +AddLoginSync +13430867933213062 +AddLoginSync +13430867933213629 +AddLoginSync +13430867933214138 +AddLoginSync +13430867933214647 +AddLoginSync +13430867933241564 +AddLoginSync +13430867933257263 +AddLoginSync +13430867933258072 +AddLoginSync +13430867933258771 +AddLoginSync +13430867933259439 +AddLoginSync +13430867933272982 +AddLoginSync +13430867933273670 +AddLoginSync +13430867933274374 +AddLoginSync +13430867933274982 +AddLoginSync +13430867933288149 +AddLoginSync +13430867933288767 +AddLoginSync +13430867933289253 +AddLoginSync +13430867933289673 +AddLoginSync +13430867933290180 +AddLoginSync +13430867933290763 +AddLoginSync +13430867933291343 +AddLoginSync +13430867933291819 +AddLoginSync +13430867933292909 +AddLoginSync +13430867933293828 +AddLoginSync +13430867933294407 +AddLoginSync +13430867933295017 +AddLoginSync +13430867933295593 +AddLoginSync +13430867933296168 +AddLoginSync +13430867933296745 +AddLoginSync +13430867933297434 +AddLoginSync +13430867933298013 +AddLoginSync +13430867933323381 +AddLoginSync +13430867933324200 +AddLoginSync +13430867933324868 +AddLoginSync +13430867933325495 +AddLoginSync +13430867933326130 +AddLoginSync +13430867933327430 +AddLoginSync +13430867933328195 +AddLoginSync +13430867933329641 +AddLoginSync +13430867933354340 +AddLoginSync +13430867933355336 +AddLoginSync +13430867933356014 +AddLoginSync +13430867933356689 +AddLoginSync +13430867933358277 +AddLoginSync +13430867933358959 +AddLoginSync +13430867933363516 +AddLoginSync +13430867933382110 +AddLoginSync +13430957513744618 +AddLoginSync +13430957513745128 +AddLoginSync +13430957513745609 +AddLoginSync +13430957513746044 +AddLoginSync +13430957513769547 +AddLoginSync +13430957513770175 +AddLoginSync +13430957513770585 +AddLoginSync +13430957513770980 +AddLoginSync +13430957513771495 +AddLoginSync +13430957513771960 +AddLoginSync +13430957513772352 +AddLoginSync +13430957513772745 +AddLoginSync +13430957513773131 +AddLoginSync +13430957513773527 +AddLoginSync +13430957513773924 +AddLoginSync +13430957513774326 +AddLoginSync +13430957513774717 +AddLoginSync +13430957513775141 +AddLoginSync +13430957513775556 +AddLoginSync +13430957513775951 +AddLoginSync +13430957513776346 +AddLoginSync +13430957513776737 +AddLoginSync +13430957513777181 +AddLoginSync +13430957513777671 +AddLoginSync +13430957513778077 +AddLoginSync +13430957513778519 +AddLoginSync +13430957513778927 +AddLoginSync +13430957513779316 +AddLoginSync +13430957513779706 +AddLoginSync +13430957513780130 +AddLoginSync +13430957513780512 +AddLoginSync +13430957513780966 +AddLoginSync +13430957513781415 +AddLoginSync +13430957513781829 +AddLoginSync +13430957513782228 +AddLoginSync +13430957513782622 +AddLoginSync +13430957513783023 +AddLoginSync +13430957513783412 +AddLoginSync +13430957513783805 +AddLoginSync +13430957513784219 +AddLoginSync +13430957513784617 +AddLoginSync +13430957513785241 +AddLoginSync +13430957513785671 +AddLoginSync +13430957513786198 +AddLoginSync +13430957513786612 +AddLoginSync +13430957513787037 +AddLoginSync +13430957513787458 +AddLoginSync +13430957513787872 +AddLoginSync +13430957513788367 +AddLoginSync +13430957513788794 +AddLoginSync +13430957513789185 +AddLoginSync +13430957513789575 +AddLoginSync +13430957513789977 +AddLoginSync +13430957513790365 +AddLoginSync +13430957513790787 +AddLoginSync +13430957513791229 +AddLoginSync +13430957513791623 +AddLoginSync +13430957513792060 +AddLoginSync +13430957513792461 +AddLoginSync +13430957513792862 +AddLoginSync +13430957513793252 +AddLoginSync +13430957513793639 +AddLoginSync +13430957513794122 +AddLoginSync +13430957513794505 +AddLoginSync +13430957513794888 +AddLoginSync +13430957513795273 +AddLoginSync +13430957513795659 +AddLoginSync +13430957513796043 +AddLoginSync +13430957513796431 +AddLoginSync +13430957513796820 +AddLoginSync +13430957513797206 +AddLoginSync +13430957513797590 +AddLoginSync +13430957513798003 +AddLoginSync +13430957513798389 +AddLoginSync +13430957513798793 +AddLoginSync +13430957513799184 +AddLoginSync +13430957513799598 +AddLoginSync +13430957513800005 +AddLoginSync diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Preferences b/FinlyticApp/.dart_tool/chrome-device/Default/Preferences index 1a1717d..140532f 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Preferences +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Preferences @@ -1 +1 @@ -{"aadc_info":{"age_group":3},"accessibility":{"captions":{"headless_caption_enabled":false}},"account_info":[{"access_point":17,"account_id":"0859b554192dfb34","accountcapabilities":{"accountcapabilities/g42tslldmfya":-1,"accountcapabilities/g44tilldmfya":-1,"accountcapabilities/ge2dinbnmnqxa":-1,"accountcapabilities/ge2tknznmnqxa":-1,"accountcapabilities/ge4tenznmnqxa":-1,"accountcapabilities/ge4tgnznmnqxa":-1,"accountcapabilities/geytcnbnmnqxa":-1,"accountcapabilities/gezdcnbnmnqxa":-1,"accountcapabilities/gezdsmbnmnqxa":-1,"accountcapabilities/geztenjnmnqxa":-1,"accountcapabilities/gi2tklldmfya":-1,"accountcapabilities/giytmnrnmnqxa":-1,"accountcapabilities/gizdqmrnmnqxa":-1,"accountcapabilities/gu2dqlldmfya":-1,"accountcapabilities/guydolldmfya":-1,"accountcapabilities/guzdslldmfya":-1,"accountcapabilities/haytqlldmfya":-1,"accountcapabilities/he4tolldmfya":-1},"accountcapability_overrides":{},"edge_account_age_group":3,"edge_account_cid":"0859b554192dfb34","edge_account_environment":2,"edge_account_environment_string":"login.microsoftonline.com","edge_account_first_name":"Lars","edge_account_is_test_on_premises_profile":false,"edge_account_last_name":"Hatzky","edge_account_location":"DE","edge_account_oid":"","edge_account_phone_number":"","edge_account_puid":"000340010EEBC7AA","edge_account_sovereignty":2,"edge_account_tenant_id":"9188040d-6c67-4c5b-b112-36a304b66dad","edge_account_type":1,"edge_tenant_supports_msa_linking":false,"edge_wam_aad_for_app_account_type":0,"email":"larshatzky@outlook.com","full_name":"","gaia":"0859b554192dfb34","given_name":"","hd":"","is_supervised_child":-1,"is_under_advanced_protection":false,"last_downloaded_image_url_with_size":"","locale":"","picture_url":""}],"account_tracker_service_last_update":"13430436712295683","appdefaults_partner_code":"EDGEESS","apps":{"shortcuts_arch":"","shortcuts_version":1},"arbitration_using_experiment_config":false,"autocomplete":{"retention_policy_last_version":151},"autofill":{"ai_last_version_deduped":151,"autofill_ai":{"opt_in_status":{}},"edge_autofill_advanced_ml_enabled":false,"edge_autofill_purge_low_quality_profiles_by_timeline":false,"last_version_deduped":151,"upload_encoding_seed":"D79545433C18E048219468BE6783BE80"},"bookmark":{"storage_computation_last_update":"13430436712295155"},"bookmark_bar":{"show_on_all_tabs":true,"show_only_on_ntp":false},"browser":{"available_dark_theme_options":"All","bookmarks_last_used_time":"13410910456813281","copilot_chat_last_used_timestamp":"13413229273360802","edge_sidebar_visibility":{"_game_assist_":{"order":{"4a4878b3-89d5-4dab-8196-4b88da4a3a76":1879048191,"68604548-9c75-4e8b-89fd-ccc06faa85ad":1610612735,"8ac719c5-140b-4bf2-a0b7-c71617f1f377":2147483647,"e6723537-66ff-4f4e-ab56-a4cbaddf4e0f":1073741823}},"_gaming_assist_":{"order":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":1610612733,"523b5ef3-0b10-4154-8b62-10b2ebd00921":1073741822,"64be4f9b-3b81-4b6e-b354-0ba00d6ba485":-1610612741,"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":-1073741830,"8ac719c5-140b-4bf2-a0b7-c71617f1f377":536870911,"92f1b743-e26b-433b-a1ec-912d1f0ad1fa":-536870919,"96defd79-4015-4a32-bd09-794ff72183ef":2147483644}},"add_app_to_bottom":true,"order":{"8ac719c5-140b-4bf2-a0b7-c71617f1f377":613566756}},"edge_sidebar_visibility_debug":{"order_list":["Suche"],"order_raw_data":{"8ac719c5-140b-4bf2-a0b7-c71617f1f377":{"name":"Suche","pos":"613566756"}}},"editor_proofing_languages":{"de":{"Grammar":true,"Spelling":true},"de-DE":{"Grammar":false,"Spelling":false},"en":{"Grammar":false,"Spelling":false},"en-GB":{"Grammar":false,"Spelling":false},"en-US":{"Grammar":false,"Spelling":false}},"history_thumbnail_enabled_notice_shown":true,"hub_app_non_synced_preferences":{"apps":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":{"last_path":""},"168a2510-04d5-473e-b6a0-828815a7ca5f":{"last_path":""},"1ec8a5a9-971c-4c82-a104-5e1a259456b8":{"last_path":""},"2354565a-f412-4654-b89c-f92eaa9dbd20":{"last_path":""},"2caf0cf4-ea42-4083-b928-29b39da1182b":{"last_path":""},"380c71d3-10bf-4a5d-9a06-c932e4b7d1d8":{"last_path":""},"4a4878b3-89d5-4dab-8196-4b88da4a3a76":{"last_path":""},"523b5ef3-0b10-4154-8b62-10b2ebd00921":{"last_path":""},"64be4f9b-3b81-4b6e-b354-0ba00d6ba485":{"last_path":""},"68604548-9c75-4e8b-89fd-ccc06faa85ad":{"last_path":""},"698b01b4-557a-4a3b-9af7-a7e8138e8372":{"last_path":""},"76b926d6-3738-46bf-82d7-2ab896ddf70b":{"last_path":""},"7b52ae05-ae84-4165-b083-98ba2031bc22":{"last_path":""},"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":{"last_path":""},"8ac719c5-140b-4bf2-a0b7-c71617f1f377":{"last_path":""},"92f1b743-e26b-433b-a1ec-912d1f0ad1fa":{"last_path":""},"96defd79-4015-4a32-bd09-794ff72183ef":{"last_path":""},"c814ae4d-fa0a-4280-a444-cb8bd264828b":{"last_path":""},"cd4688a9-e888-48ea-ad81-76193d56b1be":{"last_path":""},"d3ff4c56-a2b8-4673-ad13-35e7706cc9d1":{"last_path":""},"da15ec1d-543d-41c9-94b8-eb2bd060f2c7":{"last_path":""},"dadd1f1c-380c-4871-9e09-7971b6b15069":{"last_path":""},"e6723537-66ff-4f4e-ab56-a4cbaddf4e0f":{"last_path":""}}},"hub_app_preferences":{"439642fc-998d-4a64-8bb6-940ecaf6b60b":{"auto_show":{"enabled":true}},"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":{"all_scenarios":{"auto_open":{"enabled":false}},"auto_show":{"enabled":false}},"8ac719c5-140b-4bf2-a0b7-c71617f1f377":{"auto_show":{"enabled":true}},"_game_assist_":{"user_generated_index":["68604548-9c75-4e8b-89fd-ccc06faa85ad","4a4878b3-89d5-4dab-8196-4b88da4a3a76"]},"cd4688a9-e888-48ea-ad81-76193d56b1be":{"auto_show":{"enabled":true},"notification":{"triggering_framework":{"first_show_time":{"IsTopNewsDomain":"13417358233411615"},"last_show_time":"13417399975943291","nudge_display_count":{"IsTopNewsDomain":3}}}},"default_on_apps_cleanup_state":1,"game_assist_apps_initialized":true,"user_generated":{"4a4878b3-89d5-4dab-8196-4b88da4a3a76":{"device_emulation":"none","icon_url":"https://static.edge.microsoftapp.net/consumer/edgeml/sai/SAI_favicon_v2/twitch.tv.png","id":"4a4878b3-89d5-4dab-8196-4b88da4a3a76","name":"Twitch","navigable":false,"notificationsEnabled":true,"preferred_side_pane_width":560,"url":"https://www.twitch.tv/"},"68604548-9c75-4e8b-89fd-ccc06faa85ad":{"device_emulation":"none","icon_url":"https://static.edge.microsoftapp.net/consumer/edgeml/sai/SAI_favicon_v2/discord.com.png","id":"68604548-9c75-4e8b-89fd-ccc06faa85ad","name":"Discord","navigable":false,"notificationsEnabled":true,"preferred_side_pane_width":560,"url":"https://discord.com/"}}},"hub_app_usage_preferences":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":1,"CleanupCounts":1,"OpenFirstTime":1684086333,"cd4688a9-e888-48ea-ad81-76193d56b1be":2},"hub_cleanup_candidate_list_for_debug":[{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"}],"hub_cleanup_context":{"cleanup_last_time_v3":1724181006.864973,"show_days":"00000000000000000000000000000000","sidebar_show_last_time":3711903},"hub_cleanup_context_v2":{"cleanup_debug_info_v2_adjusted_engaged_app_count":0,"cleanup_debug_info_v2_app_count_threshold":1,"cleanup_debug_info_v2_current_sidebar_visibility":0,"cleanup_debug_info_v2_discover_icon_enabled":false,"cleanup_debug_info_v2_dwell_time_in_secs":10,"cleanup_debug_info_v2_engaged_app_count":0,"cleanup_debug_info_v2_expected_sidebar_visibility":0,"cleanup_debug_info_v2_is_tower_off_by_user":false,"cleanup_debug_info_v2_skip_user_generated_apps_for_threshold":true,"cleanup_debug_info_v2_user_generated_app_count":0,"hub_app_cleanup_v2_done":true},"mai_ds_default_theme_type":1,"recent_theme_color_list":[4293914607.0,4293914607.0,4293914607.0,4293914607.0,4293914607.0],"show_downloads_hub_pinned":false,"show_edge_split_window_toolbar_button":false,"show_hub_app_in_sidebar_buttons":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":3,"2354565a-f412-4654-b89c-f92eaa9dbd20":0,"523b5ef3-0b10-4154-8b62-10b2ebd00921":3,"64be4f9b-3b81-4b6e-b354-0ba00d6ba485":3,"76b926d6-3738-46bf-82d7-2ab896ddf70b":3,"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":3,"8ac719c5-140b-4bf2-a0b7-c71617f1f377":0,"92f1b743-e26b-433b-a1ec-912d1f0ad1fa":3,"96defd79-4015-4a32-bd09-794ff72183ef":3,"9ce3c9c2-462f-4cc9-bbd7-57d656445be0":3,"_game_assist_":{"4a4878b3-89d5-4dab-8196-4b88da4a3a76":2,"68604548-9c75-4e8b-89fd-ccc06faa85ad":2,"e6723537-66ff-4f4e-ab56-a4cbaddf4e0f":2},"cd4688a9-e888-48ea-ad81-76193d56b1be":0,"dadd1f1c-380c-4871-9e09-7971b6b15069":3},"show_hub_app_in_sidebar_buttons_legacy":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":3,"2354565a-f412-4654-b89c-f92eaa9dbd20":0,"523b5ef3-0b10-4154-8b62-10b2ebd00921":3,"64be4f9b-3b81-4b6e-b354-0ba00d6ba485":3,"76b926d6-3738-46bf-82d7-2ab896ddf70b":3,"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":3,"8ac719c5-140b-4bf2-a0b7-c71617f1f377":0,"92f1b743-e26b-433b-a1ec-912d1f0ad1fa":3,"96defd79-4015-4a32-bd09-794ff72183ef":3,"cd4688a9-e888-48ea-ad81-76193d56b1be":0,"dadd1f1c-380c-4871-9e09-7971b6b15069":3},"show_hub_app_in_sidebar_buttons_legacy_update_time":"13430431982325029","show_hub_apps_tower_pinned":false,"show_toolbar_collections_button":false,"show_toolbar_spacework_button":false,"time_of_last_normal_window_close":"13430437146561845","underside_chat_bing_signed_in_status":false,"underside_chat_consent":1,"user_level_features_context":{},"window_placement":{"bottom":1022,"left":10,"maximized":true,"right":955,"top":10,"work_area_bottom":1032,"work_area_left":0,"work_area_right":1920,"work_area_top":0}},"collections":{"prism_collections":{"enabled":0,"migration":{"accepted":true},"policy":{"cached":0}}},"commerce_daily_metrics_last_update_time":"13430436712296304","continuous_migration":{"equal_opt_out_users_data":{"backfilled":true,"detected":true}},"countryid_at_install":17477,"custom_links":{"list":[]},"devtools":{"f12_shortcut":{"enabled":true,"flyout_should_show":false},"last_open_timestamp":"13430431978700","preferences":{"closeable-tabs":"{\"security\":true,\"heap-profiler\":true,\"resources\":true,\"lighthouse\":true,\"welcome\":false,\"timeline\":true,\"network\":true,\"cssoverview\":true,\"issues-pane\":true}","cloud-release-notes":"{\"edgeVersion\":151,\"shouldOpenWelcome\":true,\"help\":[{\"title\":\"DevTools documentation\",\"linkId\":\"2196640\",\"localizedAnnouncementKey\":\"helpCard1\",\"iconName\":\"edge-documentation_book_filled\"},{\"title\":\"Overview of all tools\",\"linkId\":\"2196549\",\"localizedAnnouncementKey\":\"helpCard2\",\"iconName\":\"edge-developer-resources\"},{\"title\":\"Use Copilot to explain Console errors\",\"linkId\":\"2257416\",\"localizedAnnouncementKey\":\"helpCard3\",\"iconName\":\"edge-copilot\"},{\"title\":\"Videos about web development with Microsoft Edge\",\"linkId\":\"2196701\",\"localizedAnnouncementKey\":\"helpCard5\",\"iconName\":\"edge-run_command\"},{\"title\":\"Accessibility testing features\",\"linkId\":\"2196801\",\"localizedAnnouncementKey\":\"helpCard6\",\"iconName\":\"edge-documentation_book_filled\"},{\"title\":\"Use the Console tool to track down problems\",\"linkId\":\"2196702\",\"localizedAnnouncementKey\":\"helpCard7\",\"iconName\":\"edge-console\"},{\"title\":\"Modify and debug JS with the Sources tool\",\"linkId\":\"2196900\",\"localizedAnnouncementKey\":\"helpCard8\",\"iconName\":\"edge-sources\"},{\"title\":\"Find source files for a page using the search tool\",\"linkId\":\"2196802\",\"localizedAnnouncementKey\":\"helpCard9\",\"iconName\":\"edge-sources-search-sources-tab\"},{\"title\":\"Microsoft Edge DevTools for Visual Studio Code\",\"linkId\":\"2196901\",\"localizedAnnouncementKey\":\"helpCard10\",\"iconName\":\"edge-help_tooltips\"}],\"releaseNotes\":[{\"title\":\"The webhint experiment has been removed\",\"subtitle\":\"The webhint experiment is removed from DevTools in Microsoft Edge 151.\",\"linkId\":\"2373137\",\"localizedAnnouncementKey\":\"edgeAnnouncement1\"},{\"title\":\"Tool icons have been removed\",\"subtitle\":\"Tool icons have been removed. Functionality is unchanged, and all tools are still available.\",\"linkId\":\"2373031\",\"localizedAnnouncementKey\":\"edgeAnnouncement1Description\"}],\"header\":{\"localizedKey\":\"highlightsFromTheLatestMicrosoft\",\"title\":\"What's New\"},\"learnHeader\":{\"localizedKey\":\"learnHeader\",\"title\":\"Learn\"},\"allAnnouncementsLinkText\":{\"localizedKey\":\"allAnnouncementsLinkText\",\"title\":\"View all\"},\"whatsNewVideo\":{\"title\":\"What's New in DevTools 115 - 125\",\"subtitle\":\"Check out our video series on the latest and greatest features in DevTools!\",\"linkId\":\"26zDq9Xhz7k\",\"imageName\":\"whats-new-115-125-thumbnail.jpg\",\"imageAltText\":\"A title card for the Microsoft Edge: What's New in DevTools 115 - 125 video\",\"localizedKey\":\"whatsNewVideo\"},\"viewAllLinkId\":\"2372843\",\"localized\":{\"en-US\":{\"panels/edge_welcome/ReleaseNotes.ts | helpCard1\":{\"message\":\"DevTools documentation\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard2\":{\"message\":\"Overview of all tools\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard3\":{\"message\":\"Use Copilot to explain Console errors\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard5\":{\"message\":\"Videos about web development with Microsoft Edge\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard6\":{\"message\":\"Accessibility testing features\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard7\":{\"message\":\"Use the Console tool to track down problems\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard8\":{\"message\":\"Modify and debug JS with the Sources tool\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard9\":{\"message\":\"Find source files for a page using the search tool\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard10\":{\"message\":\"Microsoft Edge DevTools for Visual Studio Code\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | edgeAnnouncement1\":{\"message\":\"The webhint experiment has been removed\",\"description\":\"Title of a release note, shown next to a description, in a list of release notes.\"},\"panels/edge_welcome/ReleaseNotes.ts | edgeAnnouncement1Description\":{\"message\":\"Tool icons have been removed\",\"description\":\"Title of a release note, shown next to a description, in a list of release notes.\"},\"panels/edge_welcome/ReleaseNotes.ts | edgeAnnouncement1DescriptionDescription\":{\"message\":\"Tool icons have been removed. Functionality is unchanged, and all tools are still available.\",\"description\":\"Description of a release note providing further details, shown next to each release note title.\"},\"panels/edge_welcome/ReleaseNotes.ts | learnHeader\":{\"message\":\"Learn\",\"description\":\"Title text of a header bar in the welcome tool.\"},\"panels/edge_welcome/ReleaseNotes.ts | allAnnouncementsLinkText\":{\"message\":\"View all\",\"description\":\"Title text of a header bar in the welcome tool.\"},\"panels/edge_welcome/ReleaseNotes.ts | highlightsFromTheLatestMicrosoft\":{\"message\":\"What's New\",\"description\":\"Title text of a header bar in the welcome tool.\"},\"panels/edge_welcome/ReleaseNotes.ts | whatsNewVideo\":{\"message\":\"What's New in DevTools 115 - 125\",\"description\":\"Title of a video summarizing the latest release, shown next to a description, above a list of release notes.\"},\"panels/edge_welcome/ReleaseNotes.ts | whatsNewVideoDescription\":{\"message\":\"Check out our video series on the latest and greatest features in DevTools!\",\"description\":\"Description of a video link providing further details\"}}}}","console.sidebar-selected-filter":"\"message\"","console.sidebar.width":"{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","currentDockState":"\"right\"","data-grid-network-log-column-weights":"{\"name\":22.548672566371682,\"path\":6,\"url\":6,\"request-number\":6,\"method\":6,\"status\":6,\"protocol\":6,\"scheme\":6,\"domain\":6,\"remote-address\":10,\"remote-address-space\":10,\"type\":6,\"initiator\":10,\"initiator-address-space\":10,\"cookies\":6,\"set-cookies\":6,\"size\":6,\"time\":6,\"priority\":6,\"connection-id\":6,\"response-header-cache-control\":6,\"response-header-connection\":6,\"response-header-content-encoding\":6,\"response-header-content-length\":6,\"response-header-etag\":6,\"has-overrides\":6,\"response-header-keep-alive\":6,\"response-header-last-modified\":6,\"response-header-server\":6,\"response-header-vary\":6,\"request-header-accept\":6,\"request-header-accept-encoding\":6,\"request-header-accept-language\":6,\"request-header-content-type\":6,\"request-header-origin\":6,\"request-header-referer\":6,\"request-header-sec-fetch-dest\":6,\"request-header-sec-fetch-mode\":6,\"request-header-user-agent\":6,\"is-ad-related\":6,\"render-blocking\":6,\"waterfall\":6,\"response-fulfilled-by-comment\":3.4513274336283186,\"status-text\":6}","disable-focus-mode-deprecation-info-bar":"true","edge-inspector.actions-tab-split-view-state":"{\"vertical\":{\"size\":0,\"showMode\":\"Both\"},\"horizontal\":{\"size\":30,\"showMode\":\"Both\"}}","edge-webhint-deprecation-migration-v1-done":"true","elements.styles.sidebar.width":"{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","inspector-view.split-view-state":"{\"vertical\":{\"size\":539}}","inspector.drawer-split-view-state":"{\"horizontal\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","inspectorVersion":"46","network-panel-sidebar-state":"{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","network-panel-split-view-state":"{\"vertical\":{\"size\":0}}","network-panel-split-view-waterfall":"{\"vertical\":{\"size\":0}}","network-resource-type-filters":"{\"Fetch and XHR\":true}","network-text-filter":"\"\"","panel-selected-tab":"\"network\"","release-note-version-seen":"151","request-info-general-category-expanded":"true","request-info-request-headers-category-expanded":"true","request-info-response-headers-category-expanded":"true","resource-view-tab":"\"preview\"","selected-profile-type":"\"HEAP\"","should-show-drawer-on-devtools-launch":"false","sources-panel-debugger-sidebar-tab-order":"{\"sources.scope-chain\":10,\"sources.watch\":20}","sources-panel-navigator-split-view-state":"{\"vertical\":{\"size\":0,\"showMode\":\"Both\"}}","sources-panel-split-view-state":"{\"vertical\":{\"size\":0,\"showMode\":\"Both\"},\"horizontal\":{\"size\":0,\"showMode\":\"Both\"}}","styles-pane-sidebar-tab-order":"{\"styles\":10,\"computed\":20}","timeline-counters-split-view-state":"{\"horizontal\":{\"size\":0}}","timeline-panel-sidebar-state":"{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","timeline-tree-view-details-split-widget":"{\"vertical\":{\"size\":0}}","tools-used":"{\"welcome\":1785877101684,\"console-view\":1785958378866,\"sources\":1785616035402,\"network\":1785958385802,\"elements\":1785958378866,\"timeline\":1785958385371}","webhint-auto-disable-banner-pending":"false"},"synced_preferences_sync_disabled":{"adorner-settings":"[{\"adorner\":\"ad\",\"isEnabled\":true},{\"adorner\":\"container\",\"isEnabled\":true},{\"adorner\":\"flex\",\"isEnabled\":true},{\"adorner\":\"grid\",\"isEnabled\":true},{\"adorner\":\"grid-lanes\",\"isEnabled\":true},{\"adorner\":\"media\",\"isEnabled\":false},{\"adorner\":\"popover\",\"isEnabled\":true},{\"adorner\":\"reveal\",\"isEnabled\":true},{\"adorner\":\"scroll\",\"isEnabled\":true},{\"adorner\":\"scroll-snap\",\"isEnabled\":true},{\"adorner\":\"slot\",\"isEnabled\":true},{\"adorner\":\"view-source\",\"isEnabled\":true},{\"adorner\":\"starting-style\",\"isEnabled\":true},{\"adorner\":\"subgrid\",\"isEnabled\":true},{\"adorner\":\"top-layer\",\"isEnabled\":true}]","syncedInspectorVersion":"46"}},"download":{"prompt_for_download":true},"dp_info":{},"dual_engine":{"consumer_site_list_with_ie_entries":false,"consumer_sitelist_location":"","consumer_sitelist_version":"","shared_cookie_data":{},"sitelist_has_consumer_data":false,"sitelist_has_enterprise_data":false,"sitelist_location":"","sitelist_source":0,"sitelist_version":""},"edge":{"account_type":1,"bookmarks":{"last_dup_info_record_time":"13430350322299515"},"msa_sso_info":{"allow_for_non_msa_profile":false},"profile_matches_os_primary_account":false,"profile_sso_info":{"aad_sso_algo_state":1,"is_first_profile":true,"is_msa_first_profile":true,"msa_sso_algo_state":2,"msa_sso_state_reached_by":3},"services":{"last_gaia_id":"0859b554192dfb34","signin_scoped_device_id":"fce994ae-52c5-4bf8-a1ed-99cb6242a29b"},"spaceworks":{"has_ever_used_spacework":true,"should_show_post_migration_message":true},"workspaces":{"migration":{"complete":true},"state":"{\"edgeWorkspacePrefsVersion\":2,\"enableFluid\":true,\"failedRestartSpaceId\":\"\",\"failedToConnectToFluid\":false,\"fluidMigrationStatus\":false,\"fluidStatus\":0,\"fre_shown\":false,\"fromCache\":false,\"isFluidPreferencesConnected\":false,\"isSpaceOpening\":false,\"openingSpaceId\":\"\",\"statusForScreenReaders\":\"\",\"workspacePopupMode\":0,\"workspacesForExternalLinks\":[]}"}},"edge_cloud_messaging":{"cached_target_token":{"cv":"1137467841541331456","target_token":"3J6nAFkqKtVIDiouyi3VuQ==$7Q3+peyA2o+nh1o7QpF1knJDmJeA/+ljo/MnDN3MuRjqHI+D29Bt70R7QOEnzVbTgJh3aMlxX+BQWJrHam4P5vq65xJD3yLjpcyEdDfI6wzJn/TaQNo3qAN6/1riPIMrlmGQh38bpa5H4Sts3YN1mWd/ivvRMkvuKTakHTF0Vx4=","time":"13430431864275298"}},"edge_copilot":{"msa_eligibility_info":{"account_id":"0859b554192dfb34","ageGroup":"Adult","cached_time":"13430431864329586","cohort":"BCWBF","featureSet":{"uxFeatures":[]},"isCodexEnabledRegion":true,"isCopilotEligible":true}},"edge_pinning_campaign":{"precomputed_campaign_data":{"has_relevant_history":false,"session_id":0,"stored_assets":["www.youtube.com","www.facebook.com"]}},"edge_rewards":{"cache_data":"CAEQyAEYAEoCZGU=","hva_promotions":[],"hva_webui_action_status_dict":{},"promotions":[],"referral_hash":"D5E46D64","refresh_status_muted_until":"13430655454138738"},"edge_triggering":{"config_version":"1.42.2"},"edge_ux_config":{"assignmentcontext":"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=","dataversion":"254697033","experimentvariables":{},"flights":{},"latestcorrelationid":"Ref A: 12C0A7D947424E39809F11307DD1B016 Ref B: FRA261110507054 Ref C: 2026-08-05T20:31:04Z"},"edge_vpn":{"available":true},"edge_wallet":{"ec_cool_down_time":"13385404682120572","ec_dismiss_count":5,"home":{"fre":{"passwords_step_completed":true,"passwords_step_completion_state":1}},"passwords":{"latest_password_management_count":{"2026-03-31":3,"2026-04-02":2},"latest_password_usage_count":{"2026-04-23":1},"password_lost_report_date":"13430350342118628"},"trigger_funnel":{"records":[]}},"enable_do_not_track":true,"enhanced_tracking_prevention":{"enabled":false,"user_pref":2},"enterprise_profile_guid":"58861dcc-bd06-4ae5-a30e-42bf455dc36f","extension":{"installed_extension_count":11},"extensions":{"alerts":{"initialized":true},"chrome_url_overrides":{},"commands":{},"last_chrome_version":"151.0.4129.59","microsoft_install_signature":{"expire_date":"2026-10-28","ids":["cgjgjfacjflmgphhhepmbhhbgjieaecn","kfbdpdaobnofkbopebjglnaadopfikhh"],"invalid_ids":[],"salt":"apf11AbITgZDBgG/z22VyICLYc4HYaJwHlhZy7PFLuY=","signature":"DP+bJiOI3RbH3EyRoKgvfTVQsPFd3kuZJ7vGUz3fxbeLTWF410QI6nH5rR2T0N6XEv3upW3vzH7/5G95mxL5VivXy8unQS6M3Z9xT0fdJuJaoGXNlEOEYReHADKa72S5uhIXC7h5CadnxvBOvP1WaCKdA4cM99qlsznwykZR9uftfaQ9rkazB9/8u7aKUGZWdWn9G1Da+2/oDqnk6jdlIQ0fzkrgKpsw2aYilfps/vXMEF4onUCSEDPkiqNNt1KmFm6FyUmBSDDzMuBOD4SWbaG3ud1lAp49tDUC8BF8WtxH84Ae4nzVxui84Amy0oKMw7Cj7z+DpP6nMNX8IOPYbA==","signature_format_version":2,"timestamp":"13430431982573966"},"pdf_upsell_triggered":false,"pinned_extension_migration":true,"pinned_extensions":[],"ui":{"allow_chrome_webstore":true}},"family_safety":{"activity_reporting_enabled":false,"web_filtering_enabled":false},"fsd":{"retention_policy_last_version":151},"gaia_cookie":{"periodic_report_time_2":"13430436712125700"},"google":{"services":{"consented_to_sync":true,"signin":{"LAST_SIGNIN_ACCESS_POINT":{"time":"2026-08-05T19:31:04.108Z","value":"17"}}}},"history":{"thumbnail_visibility":true,"thumbnail_visibility_per_usage":true},"history_clusters":{"all_cache":{"all_keywords":{},"all_timestamp":"0"},"short_cache":{"short_keywords":{},"short_timestamp":"0"}},"import_items_failure_state":{"reimport":{"ie_react":62436}},"in_product_help":{"recent_session_enabled_time":"13430050654171363","recent_session_start_times":["13430431862149334","13430350312210885","13430261411977172","13430089255217498","13430050654171363"],"session_last_active_time":"13430437144616721","session_number":6,"session_start_time":"13430431862149334"},"instrumentation":{"bookmark_bar":{"show_on_all_tabs":"BookmarksMessageHandler::SetShowFavoritesBar;true","show_only_on_ntp":"BookmarksMessageHandler::SetShowFavoritesBarOnlyNTP;false"},"ntp":{"layout_mode":"InstantService::UpdateNtpPrefs;3","news_feed_display":"InstantService::UpdateNtpPrefs;always"}},"intl":{"accept_languages":"de,de-DE,en,en-GB,en-US","selected_languages":"de,de-DE,en,en-GB,en-US"},"local_browser_data_share":{"index_last_cleaned_time":"13430350672304294","pin_recommendations_eligible":false},"management":{"profile":{"last_log_time":"13430350312117035"}},"media":{"engagement":{"schema_version":5}},"media_router":{"receiver_id_hash_token":"y6367xSDQBB5siqxIHLiqtVCkzlUTCwsdAZylhcn3y9c2jVvgNERDtofxRNSc75RuHzWM4MISLanOvKlAO74VA=="},"muid":{"last_sync":"13430436712295576","values_seen":["269B7980A73169400A166E2CA6C468EE"]},"ntp":{"layout_mode":2,"news_feed_display":"always","num_personal_suggestions":1,"record_user_choices":[{"setting":"tscollapsed","source":"tscollapsed_to_off","timestamp":1.696685049401e+12,"value":0},{"setting":"breaking_news_dismissed","source":"ntp","timestamp":1.785691799685e+12,"value":{}},{"setting":"ntp.enable_wid_in_partial_view","source":"ntp","timestamp":1.730405466669e+12,"value":true},{"setting":"is_ruby_page","source":"ntp","timestamp":1.785691804774e+12,"value":"0"},{"setting":"ruby_cookie_change_history","source":"ntp","timestamp":1.785691798158e+12,"value":"2|1785691798158|6a6f7e9865814e6988bb1a36d1ea1e2d|0"},{"setting":"ruby_set_history","source":"ntp","timestamp":1.785691804679e+12,"value":"true"},{"setting":"ntp.is_ruby","source":"ntp","timestamp":1.785691804679e+12,"value":"false"},{"setting":"ruby_ux_history","source":"ntp","timestamp":1.785691804679e+12,"value":"false"}],"show_greeting":true},"nurturing":{"time_of_last_sync_consent_view":"13430050655492222"},"omnibox":{"work_organization_name":{"name":""}},"optimization_guide":{"hintsfetcher":{"hosts_successfully_fetched":{}},"previously_registered_optimization_types":{"ABOUT_THIS_SITE":true,"AUTOFILL_ACTOR_IFRAME_ORIGIN_ALLOWLIST":true,"GLIC_ACTION_PAGE_BLOCK":true,"HISTORY_CLUSTERS":true,"LOADING_PREDICTOR":true,"MERCHANT_TRUST_SIGNALS_V2":true,"PRICE_TRACKING":true,"SAVED_TAB_GROUP":true}},"password_manager":{"account_store_backup_password_cleaning_last_timestamp":"13430050714139981","account_store_migrated_to_os_crypt_async":true,"profile_store_backup_password_cleaning_last_timestamp":"13430050714465475","profile_store_migrated_to_os_crypt_async":true},"personalization_data_consent":{"how_set":2,"personalization_in_context_consent_can_prompt":true,"personalization_in_context_count":0,"personalization_in_context_has_prompted":false,"when_set":"13374879897479538"},"pinned_sites":{"last_launch_times":{}},"prefs":{"preference_encrypted_reset_time":"13430431862246478"},"privacy_sandbox":{"first_party_sets_data_access_allowed_initialized":true},"profile":{"avatar_index":20,"background_password_check":{"check_fri_weight":9,"check_interval":"864000000000","check_mon_weight":4,"check_sat_weight":4,"check_sun_weight":4,"check_thu_weight":9,"check_tue_weight":9,"check_wed_weight":9,"next_check_time":"13430295745393465"},"content_settings":{"exceptions":{"abusive_notification_permissions":{},"access_to_get_all_screens_media_in_session":{},"anti_abuse":{},"app_banner":{},"ar":{},"are_suspicious_notifications_allowlisted_by_user":{},"auto_picture_in_picture":{},"auto_select_certificate":{},"automatic_downloads":{},"automatic_fullscreen":{},"autoplay":{},"background_sync":{},"bluetooth_chooser_data":{},"bluetooth_guard":{},"bluetooth_scanning":{},"camera_pan_tilt_zoom":{},"captured_surface_control":{},"clear_browsing_data_cookies_exceptions":{},"client_hints":{},"clipboard":{},"controlled_frame":{},"cookie_controls_metadata":{"http://localhost,*":{"last_modified":"13430436643430767","setting":{}}},"cookies":{},"direct_sockets":{},"direct_sockets_private_network_access":{},"display_media_system_audio":{},"disruptive_notification_permissions":{},"durable_storage":{},"edge_ad_targeting":{},"edge_ad_targeting_data":{},"edge_all_file_read_access":{},"edge_browser_action":{},"edge_notification_referrer_chain_blocked":{},"edge_sdsm":{},"edge_split_screen":{},"edge_tech_scam_detection":{},"edge_u2f_api_request":{},"edge_user_agent_token":{},"fedcm_idp_registration":{},"fedcm_idp_signin":{},"fedcm_share":{},"file_system_access_chooser_data":{},"file_system_access_extended_permission":{},"file_system_access_restore_permission":{},"file_system_last_picked_directory":{},"file_system_read_guard":{},"file_system_write_guard":{},"formfill_metadata":{},"geolocation":{},"geolocation_with_options":{},"hand_tracking":{},"has_migrated_local_network_access":true,"hid_chooser_data":{},"hid_guard":{},"http_allowed":{},"https_enforced":{},"idle_detection":{},"images":{},"important_site_info":{},"initialized_translations":{},"inline_cue_menu":{},"intent_picker_auto_display":{},"javascript":{},"javascript_jit":{},"javascript_optimizer":{},"keyboard_lock":{},"legacy_cookie_access":{},"legacy_cookie_scope":{},"local_fonts":{},"local_network":{},"local_network_access":{},"loopback_network":{},"media_engagement":{"http://localhost:56149,*":{"expiration":"13437867780510360","last_modified":"13430091780510362","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:57262,*":{"expiration":"13438213146555078","last_modified":"13430437146555081","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:61657,*":{"expiration":"13437837007973620","last_modified":"13430061007973623","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:63436,*":{"expiration":"13438129182065637","last_modified":"13430353182065639","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:64741,*":{"expiration":"13438038438667863","last_modified":"13430262438667866","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}}},"media_stream_camera":{},"media_stream_mic":{},"midi_sysex":{},"mixed_script":{},"nfc_devices":{},"notification_interactions":{},"notification_permission_review":{},"notifications":{},"ondevice_languages_downloaded":{},"password_protection":{},"payment_handler":{},"permission_actions_history":{},"permission_autoblocking_data":{},"permission_autorevocation_data":{},"pointer_lock":{},"popups":{"https://www.office.com:443,*":{"last_modified":"13357245951925773","setting":1}},"protected_media_identifier":{},"protocol_handler":{},"reduced_accept_language":{},"safe_browsing_url_check_data":{},"secure_network":{},"secure_network_sites":{},"sensors":{},"serial_chooser_data":{},"serial_guard":{},"site_engagement":{"http://localhost:56149,*":{"last_modified":"13430431862174702","setting":{"lastEngagementTime":1.3430341586683288e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":15.0}},"http://localhost:57262,*":{"last_modified":"13430437109376416","setting":{"lastEngagementTime":1.3430437109376404e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":15.0,"rawScore":15.0}},"http://localhost:61657,*":{"last_modified":"13430431862174685","setting":{"lastEngagementTime":1.3430310274029964e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":9.599999999999998}},"http://localhost:63436,*":{"last_modified":"13430431862174663","setting":{"lastEngagementTime":1.3430403062174534e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":15.0}},"http://localhost:64741,*":{"last_modified":"13430431862174585","setting":{"lastEngagementTime":1.343037140301276e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":8.999999999999998}}},"sleeping_tabs":{},"sound":{},"speaker_selection":{},"ssl_cert_decisions":{},"storage_access":{},"storage_access_header_origin_trial":{},"sub_apps_without_prompts":{},"subresource_filter":{},"subresource_filter_data":{},"suspicious_notification_ids":{},"suspicious_notification_show_original":{},"top_level_storage_access":{},"trackers":{},"trackers_data":{},"tracking_org_exceptions":{},"tracking_org_relationships":{},"typosquatting":{},"unused_site_permissions":{},"usb_chooser_data":{},"usb_guard":{},"vr":{},"web_app_installation":{},"webid_api":{},"webid_auto_reauthn":{},"window_placement":{}},"pref_version":1},"created_by_version":"150.0.4078.105","creation_time":"13430050654109835","default_content_setting_values":{"has_migrated_local_network_access":true},"edge_crash_exit_count":0,"edge_password_is_using_new_login_db_path":false,"edge_password_login_db_path_flip_flop_count":0,"edge_passwords_more_menu_label_shown":true,"edge_profile_id":"a214953e-f3d4-404d-b0c7-662b822f8ed9","edge_user_with_non_zero_passwords":true,"exit_type":"Normal","hard_no_auto_save_consent":true,"hard_no_password_monitor_consent":true,"has_seen_signin_fre":false,"is_relative_to_aad":false,"last_engagement_time":"13430437109376405","last_time_auto_save_consent_shown":"13313380035189805","last_time_obsolete_http_credentials_removed":1785577114.141604,"last_time_password_store_metrics_reported":1785876742.118688,"managed_user_id":"","name":"Profil 1","network_pbs":{"3d7a5ba3":{"last_updated":"13428796607143085","pb":6}},"number_auto_save_consent_shown":1,"observed_session_time":{"feedback_rating_in_product_help_observed_session_time_key_150.0.4078.105":653.0,"feedback_rating_in_product_help_observed_session_time_key_151.0.4129.59":1782.0},"password_hash_data_list":[],"signin_fre_seen_time":"13430050654132145","were_old_google_logins_removed":true},"profile_network_context_service":{"http_cache_finch_experiment_groups":"None None None None"},"profiles":{"last_swag_account_type":1},"read_aloud":{"last_used_time":"13380377422013311","toolbar_button_animation_last_shown_time":"13359681778073834","toolbar_button_animation_shown_count":1},"reading_view":{"last_access_time":"13359681778018840"},"reset_prepopulated_engines":false,"safebrowsing":{"advanced_protection_last_refresh":"13430431864885383","extension_telemetry_file_data":{},"unhandled_sync_password_reuses":{}},"safety_hub":{"unused_site_permissions_revocation":{"migration_completed":true}},"saved_tab_groups":{"did_enable_shared_tab_groups_in_last_session":false,"specifics_to_data_migration":true},"segmentation_platform":{"segment_execution_result":{"edge_browser_usage":{"execution_time":"13430436783562782","is_ready":true,"output":[0.0,6.0,0.0,0.0,0.0,1.0],"segment_id":533},"edge_browser_usage_do_not_disturb_user":{"execution_time":"13430436783563467","is_ready":true,"output":[0.0],"prediction_score":0.0,"segment_id":536},"edge_browser_usage_pb_50":{"execution_time":"13430436783563497","is_ready":true,"output":[1.0],"prediction_score":1.0,"segment_id":560},"edge_browser_usage_sync":{"execution_time":"13430436783563149","is_ready":true,"output":[6.0],"prediction_score":6.0,"segment_id":538},"edge_browser_usage_threshold":{"execution_time":"13430436783563487","is_ready":true,"output":[0.0],"prediction_score":0.0,"segment_id":557},"edge_most_valuable_user":{"execution_time":"13430436783563136","is_ready":true,"output":[0.0],"prediction_score":0.0,"segment_id":504},"edge_most_valuable_user_server":{"execution_time":"13430436783563479","is_ready":true,"output":[0.0],"prediction_score":0.0,"segment_id":540}}},"sessions":{"event_log":[{"crashed":false,"time":"13430050654142940","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430061007970089","type":2,"window_count":1},{"crashed":false,"time":"13430089255185529","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430091780503363","type":2,"window_count":1},{"crashed":false,"time":"13430261411914730","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430262438664179","type":2,"window_count":1},{"crashed":false,"time":"13430350312127174","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430353182062151","type":2,"window_count":1},{"crashed":false,"time":"13430431862062455","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430437146540535","type":2,"window_count":1}],"session_data_status":3},"shopping":{"contextual_features_enabled":true,"dma_telemetry_expiration_time":"13430436712200930","last_pwilo_api_fetch_time":"13430350912206913"},"should_read_incoming_syncing_theme_prefs":false,"signin":{"accounts_metadata_dict":{"0859b554192dfb34":{"BookmarksExplicitBrowserSigninEnabled":false}},"allowed":true,"signin_with_explicit_browser_signin_on":true},"smart_explore":{"auto_cleanup":{"check_time":"13430433758220075"},"auto_cleanup_date":"13390507243958314","engagement_date":"13382038762701326"},"spellcheck":{"dictionaries":["de"],"dictionary":""},"surf_game":{"buoy_highscore":-1,"classic_highscore":1605,"speed_highscore":-1},"sync":{"apps":true,"autofill":true,"bookmarks":true,"cached_passphrase_type":2,"cached_persistent_auth_error":false,"cached_trusted_vault_auto_upgrade_experiment_group":"","collections_edge_re_evaluated":true,"edge_account_type":1,"edge_workspaces":true,"edge_workspaces_edge_supported":true,"encryption_bootstrap_token_per_account_migration_done":true,"extensions":true,"extensions_edge_supported":true,"has_been_enabled":true,"has_setup_completed":true,"history_edge_supported":true,"keep_everything_synced":true,"keystore_encryption_key_state":"eyJkb3dubG9hZF9rZXlfcmVzdWx0Ijp0cnVlLCJleHBpcmF0aW9uX3RpbWUiOjE3ODYwNDQ2NjUuNjc2MjIxLCJodHRwX3Jlc3BvbnNlX2NvZGUiOjIwMCwia2V5X2NvdW50IjoxMCwia2V5X3ZhbGlkYXRpb25fdGltZSI6MTc4NTk1ODI2Ni4zOTk4ODEsIm5ldF9lcnJvcl9jb2RlIjoxLCJwcm9jZXNzX2tleV9yZXN1bHQiOjAsInNldF9rZXlfcmVzdWx0Ijp0cnVlfQ==","local_data_out_of_sync":false,"local_device_guids_with_timestamp":[{"cache_guid":"jQwYyov4pNaEs6j8pJQfZQ==","timestamp":155444}],"passwords":true,"preferences":true,"tabs":true,"tabs_edge_supported":true,"transport_data_per_account":{"Of46XuGouE9WBpYyPI8qwz4Z0YNqRIr8/69wXz72wvQ=":{"sync.bag_of_chips":"","sync.birthday":"ProductionEnvironmentDefinition","sync.cache_guid":"jQwYyov4pNaEs6j8pJQfZQ==","sync.last_poll_time":"13430431874650370","sync.last_synced_time":"13430436784633431","sync.short_poll_interval":"28800000000"}},"typed_urls":true},"sync_consent_recorded":true,"sync_profile_info":{"edge_san_consent_last_modified_date":"13374879897480209","edge_san_consent_last_shown_date":"13374879897480209","edge_san_is_option_explicitly_selectedby_user":false},"syncing_theme_prefs_migrated_to_non_syncing":true,"tab_groups":[],"tab_groups_migration_version":3,"third_party_search":{"consented":false},"toolbar":{"pinned_cast_migration_complete":true,"pinned_chrome_labs_migration_complete":true},"toolbar_declutter":{"new_user_cleanup_triggered":true,"undo":{"last_time":"13430050669200392"}},"total_passwords_available_for_account":0,"total_passwords_available_for_profile":78,"translate_blocked_languages":["de","en"],"typosquatting":{"allowlist_migration_done":true},"user_experience_metrics":{"personalization_data_consent_enabled":false,"personalization_data_consent_enabled_last_known_value":false},"visual_search":{"dma_state":1},"web_app_install_metrics":{"agimnkijcaahngcdmfeangaknmldooml":{"install_source":16,"install_timestamp":"13430050663168609"},"cinhimbnkkaeohfgghhklpknlkffjgod":{"install_source":16,"install_timestamp":"13430050662906697"},"hjlhbeffadgkonmpnblkfmhckmocohah":{"install_source":16,"install_timestamp":"13430050662652146"},"npblienfghmjcclodnjeoadehgpjipjh":{"install_source":16,"install_timestamp":"13430050662765381"}},"web_apps":{"did_migrate_default_chrome_apps":["MigrateDefaultChromeAppToWebAppsGSuite","MigrateDefaultChromeAppToWebAppsNonGSuite"],"last_preinstall_synchronize_version":"151","link_handling_info":{"enabled_for_installed_apps":true}}} \ No newline at end of file +{"aadc_info":{"age_group":3},"accessibility":{"captions":{"headless_caption_enabled":false}},"account_info":[{"access_point":17,"account_id":"0859b554192dfb34","accountcapabilities":{"accountcapabilities/g42tslldmfya":-1,"accountcapabilities/g44tilldmfya":-1,"accountcapabilities/ge2dinbnmnqxa":-1,"accountcapabilities/ge2tknznmnqxa":-1,"accountcapabilities/ge4tenznmnqxa":-1,"accountcapabilities/ge4tgnznmnqxa":-1,"accountcapabilities/geytcnbnmnqxa":-1,"accountcapabilities/gezdcnbnmnqxa":-1,"accountcapabilities/gezdsmbnmnqxa":-1,"accountcapabilities/geztenjnmnqxa":-1,"accountcapabilities/gi2tklldmfya":-1,"accountcapabilities/giytmnrnmnqxa":-1,"accountcapabilities/gizdqmrnmnqxa":-1,"accountcapabilities/gu2dqlldmfya":-1,"accountcapabilities/guydolldmfya":-1,"accountcapabilities/guzdslldmfya":-1,"accountcapabilities/haytqlldmfya":-1,"accountcapabilities/he4tolldmfya":-1},"accountcapability_overrides":{},"edge_account_age_group":3,"edge_account_cid":"0859b554192dfb34","edge_account_environment":2,"edge_account_environment_string":"login.microsoftonline.com","edge_account_first_name":"Lars","edge_account_is_test_on_premises_profile":false,"edge_account_last_name":"Hatzky","edge_account_location":"DE","edge_account_oid":"","edge_account_phone_number":"","edge_account_puid":"000340010EEBC7AA","edge_account_sovereignty":2,"edge_account_tenant_id":"9188040d-6c67-4c5b-b112-36a304b66dad","edge_account_type":1,"edge_tenant_supports_msa_linking":false,"edge_wam_aad_for_app_account_type":0,"email":"larshatzky@outlook.com","full_name":"","gaia":"0859b554192dfb34","given_name":"","hd":"","is_supervised_child":-1,"is_under_advanced_protection":false,"last_downloaded_image_url_with_size":"","locale":"","picture_url":""}],"account_tracker_service_last_update":"13430957505994903","app_defaults":{"dse_injp_pc_cleared":true},"appdefaults_partner_code":"EDGEESS","apps":{"shortcuts_arch":"","shortcuts_version":1},"arbitration_experiences":{"Nurturing.Global.EdgeMobile_MobileUpsell_Email_AF_AnimationNews":{"ClickedCount":0,"Cohort":"DefaultCohort","DisableCount":0,"Disabled":false,"DismissedCount":1,"ExperienceEngagementHistory":0,"GlobalNSAT":0.0,"IgnoredCount":0,"IsGlobalExperience":false,"LastReservedTime":"11644473600000000","LastTriggeredTime":"13430871079888466","LastUndoShownTime":"11644473600000000","Loss":0,"ModelScore":1.0,"NSATTriggeredCount":1,"NSATUpperCI":1.0,"OverallNSAT":1.0,"QuickDismissedCount":0,"Reserved":0,"SnoozeCount":0,"Triggered":1,"UndoShown":0,"Win":0}},"arbitration_last_notification_shown":"13430871236000382","arbitration_using_experiment_config":false,"autocomplete":{"retention_policy_last_version":151},"autofill":{"ai_last_version_deduped":151,"autofill_ai":{"opt_in_status":{}},"edge_autofill_advanced_ml_enabled":false,"edge_autofill_purge_low_quality_profiles_by_timeline":false,"last_version_deduped":151,"upload_encoding_seed":"D79545433C18E048219468BE6783BE80"},"bookmark":{"storage_computation_last_update":"13430957505993112"},"bookmark_bar":{"show_on_all_tabs":true,"show_only_on_ntp":false},"browser":{"available_dark_theme_options":"All","bookmarks_last_used_time":"13410910456813281","copilot_chat_last_used_timestamp":"13413229273360802","edge_sidebar_visibility":{"_game_assist_":{"order":{"4a4878b3-89d5-4dab-8196-4b88da4a3a76":1879048191,"68604548-9c75-4e8b-89fd-ccc06faa85ad":1610612735,"8ac719c5-140b-4bf2-a0b7-c71617f1f377":2147483647,"e6723537-66ff-4f4e-ab56-a4cbaddf4e0f":1073741823}},"_gaming_assist_":{"order":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":1610612733,"523b5ef3-0b10-4154-8b62-10b2ebd00921":1073741822,"64be4f9b-3b81-4b6e-b354-0ba00d6ba485":-1610612741,"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":-1073741830,"8ac719c5-140b-4bf2-a0b7-c71617f1f377":536870911,"92f1b743-e26b-433b-a1ec-912d1f0ad1fa":-536870919,"96defd79-4015-4a32-bd09-794ff72183ef":2147483644}},"add_app_to_bottom":true,"order":{"8ac719c5-140b-4bf2-a0b7-c71617f1f377":613566756}},"edge_sidebar_visibility_debug":{"order_list":["Suche"],"order_raw_data":{"8ac719c5-140b-4bf2-a0b7-c71617f1f377":{"name":"Suche","pos":"613566756"}}},"editor_proofing_languages":{"de":{"Grammar":true,"Spelling":true},"de-DE":{"Grammar":false,"Spelling":false},"en":{"Grammar":false,"Spelling":false},"en-GB":{"Grammar":false,"Spelling":false},"en-US":{"Grammar":false,"Spelling":false}},"history_thumbnail_enabled_notice_shown":true,"hub_app_non_synced_preferences":{"apps":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":{"last_path":""},"168a2510-04d5-473e-b6a0-828815a7ca5f":{"last_path":""},"1ec8a5a9-971c-4c82-a104-5e1a259456b8":{"last_path":""},"2354565a-f412-4654-b89c-f92eaa9dbd20":{"last_path":""},"2caf0cf4-ea42-4083-b928-29b39da1182b":{"last_path":""},"380c71d3-10bf-4a5d-9a06-c932e4b7d1d8":{"last_path":""},"4a4878b3-89d5-4dab-8196-4b88da4a3a76":{"last_path":""},"523b5ef3-0b10-4154-8b62-10b2ebd00921":{"last_path":""},"64be4f9b-3b81-4b6e-b354-0ba00d6ba485":{"last_path":""},"68604548-9c75-4e8b-89fd-ccc06faa85ad":{"last_path":""},"698b01b4-557a-4a3b-9af7-a7e8138e8372":{"last_path":""},"76b926d6-3738-46bf-82d7-2ab896ddf70b":{"last_path":""},"7b52ae05-ae84-4165-b083-98ba2031bc22":{"last_path":""},"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":{"last_path":""},"8ac719c5-140b-4bf2-a0b7-c71617f1f377":{"last_path":""},"92f1b743-e26b-433b-a1ec-912d1f0ad1fa":{"last_path":""},"96defd79-4015-4a32-bd09-794ff72183ef":{"last_path":""},"c814ae4d-fa0a-4280-a444-cb8bd264828b":{"last_path":""},"cd4688a9-e888-48ea-ad81-76193d56b1be":{"last_path":""},"d3ff4c56-a2b8-4673-ad13-35e7706cc9d1":{"last_path":""},"da15ec1d-543d-41c9-94b8-eb2bd060f2c7":{"last_path":""},"dadd1f1c-380c-4871-9e09-7971b6b15069":{"last_path":""},"e6723537-66ff-4f4e-ab56-a4cbaddf4e0f":{"last_path":""}}},"hub_app_preferences":{"439642fc-998d-4a64-8bb6-940ecaf6b60b":{"auto_show":{"enabled":true}},"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":{"all_scenarios":{"auto_open":{"enabled":false}},"auto_show":{"enabled":false}},"8ac719c5-140b-4bf2-a0b7-c71617f1f377":{"auto_show":{"enabled":true}},"_game_assist_":{"user_generated_index":["68604548-9c75-4e8b-89fd-ccc06faa85ad","4a4878b3-89d5-4dab-8196-4b88da4a3a76"]},"cd4688a9-e888-48ea-ad81-76193d56b1be":{"auto_show":{"enabled":true},"notification":{"triggering_framework":{"first_show_time":{"IsTopNewsDomain":"13417358233411615"},"last_show_time":"13417399975943291","nudge_display_count":{"IsTopNewsDomain":3}}}},"default_on_apps_cleanup_state":1,"game_assist_apps_initialized":true,"user_generated":{"4a4878b3-89d5-4dab-8196-4b88da4a3a76":{"device_emulation":"none","icon_url":"https://static.edge.microsoftapp.net/consumer/edgeml/sai/SAI_favicon_v2/twitch.tv.png","id":"4a4878b3-89d5-4dab-8196-4b88da4a3a76","name":"Twitch","navigable":false,"notificationsEnabled":true,"preferred_side_pane_width":560,"url":"https://www.twitch.tv/"},"68604548-9c75-4e8b-89fd-ccc06faa85ad":{"device_emulation":"none","icon_url":"https://static.edge.microsoftapp.net/consumer/edgeml/sai/SAI_favicon_v2/discord.com.png","id":"68604548-9c75-4e8b-89fd-ccc06faa85ad","name":"Discord","navigable":false,"notificationsEnabled":true,"preferred_side_pane_width":560,"url":"https://discord.com/"}}},"hub_app_usage_preferences":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":1,"CleanupCounts":1,"OpenFirstTime":1684086333,"cd4688a9-e888-48ea-ad81-76193d56b1be":2},"hub_cleanup_candidate_list_for_debug":[{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"},{"cleanup_progress":"cleanup_start_v2"},{"cleanup_progress":"skipped_cleanup_v2_has_happened"}],"hub_cleanup_context":{"cleanup_last_time_v3":1724181006.864973,"show_days":"00000000000000000000000000000000","sidebar_show_last_time":3711903},"hub_cleanup_context_v2":{"cleanup_debug_info_v2_adjusted_engaged_app_count":0,"cleanup_debug_info_v2_app_count_threshold":1,"cleanup_debug_info_v2_current_sidebar_visibility":0,"cleanup_debug_info_v2_discover_icon_enabled":false,"cleanup_debug_info_v2_dwell_time_in_secs":10,"cleanup_debug_info_v2_engaged_app_count":0,"cleanup_debug_info_v2_expected_sidebar_visibility":0,"cleanup_debug_info_v2_is_tower_off_by_user":false,"cleanup_debug_info_v2_skip_user_generated_apps_for_threshold":true,"cleanup_debug_info_v2_user_generated_app_count":0,"hub_app_cleanup_v2_done":true},"mai_ds_default_theme_type":1,"recent_theme_color_list":[4293914607.0,4293914607.0,4293914607.0,4293914607.0,4293914607.0],"show_downloads_hub_pinned":false,"show_edge_split_window_toolbar_button":false,"show_hub_app_in_sidebar_buttons":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":3,"2354565a-f412-4654-b89c-f92eaa9dbd20":0,"523b5ef3-0b10-4154-8b62-10b2ebd00921":3,"64be4f9b-3b81-4b6e-b354-0ba00d6ba485":3,"76b926d6-3738-46bf-82d7-2ab896ddf70b":3,"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":3,"8ac719c5-140b-4bf2-a0b7-c71617f1f377":0,"92f1b743-e26b-433b-a1ec-912d1f0ad1fa":3,"96defd79-4015-4a32-bd09-794ff72183ef":3,"9ce3c9c2-462f-4cc9-bbd7-57d656445be0":3,"_game_assist_":{"4a4878b3-89d5-4dab-8196-4b88da4a3a76":2,"68604548-9c75-4e8b-89fd-ccc06faa85ad":2,"e6723537-66ff-4f4e-ab56-a4cbaddf4e0f":2},"cd4688a9-e888-48ea-ad81-76193d56b1be":0,"dadd1f1c-380c-4871-9e09-7971b6b15069":3},"show_hub_app_in_sidebar_buttons_legacy":{"0c835d2d-9592-4c7a-8d0a-0e283c9ad3cd":3,"2354565a-f412-4654-b89c-f92eaa9dbd20":0,"523b5ef3-0b10-4154-8b62-10b2ebd00921":3,"64be4f9b-3b81-4b6e-b354-0ba00d6ba485":3,"76b926d6-3738-46bf-82d7-2ab896ddf70b":3,"8682d0fa-50b3-4ece-aa5b-e0b33f9919e2":3,"8ac719c5-140b-4bf2-a0b7-c71617f1f377":0,"92f1b743-e26b-433b-a1ec-912d1f0ad1fa":3,"96defd79-4015-4a32-bd09-794ff72183ef":3,"cd4688a9-e888-48ea-ad81-76193d56b1be":0,"dadd1f1c-380c-4871-9e09-7971b6b15069":3},"show_hub_app_in_sidebar_buttons_legacy_update_time":"13430868048405990","show_hub_apps_tower_pinned":false,"show_toolbar_collections_button":false,"show_toolbar_spacework_button":false,"time_of_last_normal_window_close":"13430957621193417","underside_chat_bing_signed_in_status":false,"underside_chat_consent":1,"user_level_features_context":{},"window_placement":{"bottom":1022,"left":10,"maximized":true,"right":955,"top":10,"work_area_bottom":1032,"work_area_left":0,"work_area_right":1920,"work_area_top":0}},"collections":{"prism_collections":{"enabled":0,"migration":{"accepted":true},"policy":{"cached":0}}},"commerce_daily_metrics_last_update_time":"13430957505995956","continuous_migration":{"equal_opt_out_users_data":{"backfilled":true,"detected":true,"disable_autolaunch":true,"disable_autolaunch_reason":3}},"countryid_at_install":17477,"custom_links":{"list":[]},"devtools":{"f12_shortcut":{"enabled":true,"flyout_should_show":false},"last_open_timestamp":"13430871302370","preferences":{"closeable-tabs":"{\"security\":true,\"heap-profiler\":true,\"resources\":true,\"lighthouse\":true,\"welcome\":false,\"timeline\":true,\"network\":true,\"cssoverview\":true,\"issues-pane\":true}","cloud-release-notes":"{\"edgeVersion\":151,\"shouldOpenWelcome\":true,\"help\":[{\"title\":\"DevTools documentation\",\"linkId\":\"2196640\",\"localizedAnnouncementKey\":\"helpCard1\",\"iconName\":\"edge-documentation_book_filled\"},{\"title\":\"Overview of all tools\",\"linkId\":\"2196549\",\"localizedAnnouncementKey\":\"helpCard2\",\"iconName\":\"edge-developer-resources\"},{\"title\":\"Use Copilot to explain Console errors\",\"linkId\":\"2257416\",\"localizedAnnouncementKey\":\"helpCard3\",\"iconName\":\"edge-copilot\"},{\"title\":\"Videos about web development with Microsoft Edge\",\"linkId\":\"2196701\",\"localizedAnnouncementKey\":\"helpCard5\",\"iconName\":\"edge-run_command\"},{\"title\":\"Accessibility testing features\",\"linkId\":\"2196801\",\"localizedAnnouncementKey\":\"helpCard6\",\"iconName\":\"edge-documentation_book_filled\"},{\"title\":\"Use the Console tool to track down problems\",\"linkId\":\"2196702\",\"localizedAnnouncementKey\":\"helpCard7\",\"iconName\":\"edge-console\"},{\"title\":\"Modify and debug JS with the Sources tool\",\"linkId\":\"2196900\",\"localizedAnnouncementKey\":\"helpCard8\",\"iconName\":\"edge-sources\"},{\"title\":\"Find source files for a page using the search tool\",\"linkId\":\"2196802\",\"localizedAnnouncementKey\":\"helpCard9\",\"iconName\":\"edge-sources-search-sources-tab\"},{\"title\":\"Microsoft Edge DevTools for Visual Studio Code\",\"linkId\":\"2196901\",\"localizedAnnouncementKey\":\"helpCard10\",\"iconName\":\"edge-help_tooltips\"}],\"releaseNotes\":[{\"title\":\"The webhint experiment has been removed\",\"subtitle\":\"The webhint experiment is removed from DevTools in Microsoft Edge 151.\",\"linkId\":\"2373137\",\"localizedAnnouncementKey\":\"edgeAnnouncement1\"},{\"title\":\"Tool icons have been removed\",\"subtitle\":\"Tool icons have been removed. Functionality is unchanged, and all tools are still available.\",\"linkId\":\"2373031\",\"localizedAnnouncementKey\":\"edgeAnnouncement1Description\"}],\"header\":{\"localizedKey\":\"highlightsFromTheLatestMicrosoft\",\"title\":\"What's New\"},\"learnHeader\":{\"localizedKey\":\"learnHeader\",\"title\":\"Learn\"},\"allAnnouncementsLinkText\":{\"localizedKey\":\"allAnnouncementsLinkText\",\"title\":\"View all\"},\"whatsNewVideo\":{\"title\":\"What's New in DevTools 115 - 125\",\"subtitle\":\"Check out our video series on the latest and greatest features in DevTools!\",\"linkId\":\"26zDq9Xhz7k\",\"imageName\":\"whats-new-115-125-thumbnail.jpg\",\"imageAltText\":\"A title card for the Microsoft Edge: What's New in DevTools 115 - 125 video\",\"localizedKey\":\"whatsNewVideo\"},\"viewAllLinkId\":\"2372843\",\"localized\":{\"en-US\":{\"panels/edge_welcome/ReleaseNotes.ts | helpCard1\":{\"message\":\"DevTools documentation\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard2\":{\"message\":\"Overview of all tools\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard3\":{\"message\":\"Use Copilot to explain Console errors\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard5\":{\"message\":\"Videos about web development with Microsoft Edge\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard6\":{\"message\":\"Accessibility testing features\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard7\":{\"message\":\"Use the Console tool to track down problems\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard8\":{\"message\":\"Modify and debug JS with the Sources tool\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard9\":{\"message\":\"Find source files for a page using the search tool\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | helpCard10\":{\"message\":\"Microsoft Edge DevTools for Visual Studio Code\",\"description\":\"Title of a help link in a list of help section.\"},\"panels/edge_welcome/ReleaseNotes.ts | edgeAnnouncement1\":{\"message\":\"The webhint experiment has been removed\",\"description\":\"Title of a release note, shown next to a description, in a list of release notes.\"},\"panels/edge_welcome/ReleaseNotes.ts | edgeAnnouncement1Description\":{\"message\":\"Tool icons have been removed\",\"description\":\"Title of a release note, shown next to a description, in a list of release notes.\"},\"panels/edge_welcome/ReleaseNotes.ts | edgeAnnouncement1DescriptionDescription\":{\"message\":\"Tool icons have been removed. Functionality is unchanged, and all tools are still available.\",\"description\":\"Description of a release note providing further details, shown next to each release note title.\"},\"panels/edge_welcome/ReleaseNotes.ts | learnHeader\":{\"message\":\"Learn\",\"description\":\"Title text of a header bar in the welcome tool.\"},\"panels/edge_welcome/ReleaseNotes.ts | allAnnouncementsLinkText\":{\"message\":\"View all\",\"description\":\"Title text of a header bar in the welcome tool.\"},\"panels/edge_welcome/ReleaseNotes.ts | highlightsFromTheLatestMicrosoft\":{\"message\":\"What's New\",\"description\":\"Title text of a header bar in the welcome tool.\"},\"panels/edge_welcome/ReleaseNotes.ts | whatsNewVideo\":{\"message\":\"What's New in DevTools 115 - 125\",\"description\":\"Title of a video summarizing the latest release, shown next to a description, above a list of release notes.\"},\"panels/edge_welcome/ReleaseNotes.ts | whatsNewVideoDescription\":{\"message\":\"Check out our video series on the latest and greatest features in DevTools!\",\"description\":\"Description of a video link providing further details\"}}}}","console.sidebar-selected-filter":"\"message\"","console.sidebar.width":"{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","currentDockState":"\"right\"","data-grid-network-log-column-weights":"{\"name\":22.548672566371682,\"path\":6,\"url\":6,\"request-number\":6,\"method\":6,\"status\":6,\"protocol\":6,\"scheme\":6,\"domain\":6,\"remote-address\":10,\"remote-address-space\":10,\"type\":6,\"initiator\":10,\"initiator-address-space\":10,\"cookies\":6,\"set-cookies\":6,\"size\":6,\"time\":6,\"priority\":6,\"connection-id\":6,\"response-header-cache-control\":6,\"response-header-connection\":6,\"response-header-content-encoding\":6,\"response-header-content-length\":6,\"response-header-etag\":6,\"has-overrides\":6,\"response-header-keep-alive\":6,\"response-header-last-modified\":6,\"response-header-server\":6,\"response-header-vary\":6,\"request-header-accept\":6,\"request-header-accept-encoding\":6,\"request-header-accept-language\":6,\"request-header-content-type\":6,\"request-header-origin\":6,\"request-header-referer\":6,\"request-header-sec-fetch-dest\":6,\"request-header-sec-fetch-mode\":6,\"request-header-user-agent\":6,\"is-ad-related\":6,\"render-blocking\":6,\"waterfall\":6,\"response-fulfilled-by-comment\":3.4513274336283186,\"status-text\":6}","disable-focus-mode-deprecation-info-bar":"true","edge-inspector.actions-tab-split-view-state":"{\"vertical\":{\"size\":0,\"showMode\":\"Both\"},\"horizontal\":{\"size\":30,\"showMode\":\"Both\"}}","edge-webhint-deprecation-migration-v1-done":"true","elements.styles.sidebar.width":"{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","inspector-view.split-view-state":"{\"vertical\":{\"size\":545}}","inspector.drawer-split-view-state":"{\"horizontal\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","inspectorVersion":"46","network-panel-sidebar-state":"{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","network-panel-split-view-state":"{\"vertical\":{\"size\":129}}","network-panel-split-view-waterfall":"{\"vertical\":{\"size\":0}}","network-resource-type-filters":"{\"Fetch and XHR\":true}","network-text-filter":"\"\"","panel-selected-tab":"\"network\"","release-note-version-seen":"151","request-info-general-category-expanded":"true","request-info-request-headers-category-expanded":"true","request-info-response-headers-category-expanded":"true","resource-view-tab":"\"preview\"","selected-profile-type":"\"HEAP\"","should-show-drawer-on-devtools-launch":"false","sources-panel-debugger-sidebar-tab-order":"{\"sources.scope-chain\":10,\"sources.watch\":20}","sources-panel-navigator-split-view-state":"{\"vertical\":{\"size\":0,\"showMode\":\"Both\"}}","sources-panel-split-view-state":"{\"vertical\":{\"size\":0,\"showMode\":\"Both\"},\"horizontal\":{\"size\":0,\"showMode\":\"Both\"}}","styles-pane-sidebar-tab-order":"{\"styles\":10,\"computed\":20}","timeline-counters-split-view-state":"{\"horizontal\":{\"size\":0}}","timeline-panel-sidebar-state":"{\"vertical\":{\"size\":0,\"showMode\":\"OnlyMain\"}}","timeline-tree-view-details-split-widget":"{\"vertical\":{\"size\":0}}","tools-used":"{\"welcome\":1785877101684,\"console-view\":1785958378866,\"sources\":1785616035402,\"network\":1786397703216,\"elements\":1786397703559,\"timeline\":1785958385371}","webhint-auto-disable-banner-pending":"false"},"synced_preferences_sync_disabled":{"adorner-settings":"[{\"adorner\":\"ad\",\"isEnabled\":true},{\"adorner\":\"container\",\"isEnabled\":true},{\"adorner\":\"flex\",\"isEnabled\":true},{\"adorner\":\"grid\",\"isEnabled\":true},{\"adorner\":\"grid-lanes\",\"isEnabled\":true},{\"adorner\":\"media\",\"isEnabled\":false},{\"adorner\":\"popover\",\"isEnabled\":true},{\"adorner\":\"reveal\",\"isEnabled\":true},{\"adorner\":\"scroll\",\"isEnabled\":true},{\"adorner\":\"scroll-snap\",\"isEnabled\":true},{\"adorner\":\"slot\",\"isEnabled\":true},{\"adorner\":\"view-source\",\"isEnabled\":true},{\"adorner\":\"starting-style\",\"isEnabled\":true},{\"adorner\":\"subgrid\",\"isEnabled\":true},{\"adorner\":\"top-layer\",\"isEnabled\":true}]","syncedInspectorVersion":"46"}},"download":{"prompt_for_download":true},"dp_info":{},"dual_engine":{"consumer_site_list_with_ie_entries":false,"consumer_sitelist_location":"","consumer_sitelist_version":"","shared_cookie_data":{},"sitelist_has_consumer_data":false,"sitelist_has_enterprise_data":false,"sitelist_location":"","sitelist_source":0,"sitelist_version":""},"edge":{"account_type":1,"bookmarks":{"last_dup_info_record_time":"13430957515998216"},"msa_sso_info":{"allow_for_non_msa_profile":false},"profile_matches_os_primary_account":false,"profile_sso_info":{"aad_sso_algo_state":1,"is_first_profile":true,"is_msa_first_profile":true,"msa_sso_algo_state":2,"msa_sso_state_reached_by":3},"services":{"last_gaia_id":"0859b554192dfb34","signin_scoped_device_id":"fce994ae-52c5-4bf8-a1ed-99cb6242a29b"},"spaceworks":{"has_ever_used_spacework":true,"should_show_post_migration_message":true},"workspaces":{"migration":{"complete":true},"state":"{\"edgeWorkspacePrefsVersion\":2,\"enableFluid\":true,\"failedRestartSpaceId\":\"\",\"failedToConnectToFluid\":false,\"fluidMigrationStatus\":false,\"fluidStatus\":0,\"fre_shown\":false,\"fromCache\":false,\"isFluidPreferencesConnected\":false,\"isSpaceOpening\":false,\"openingSpaceId\":\"\",\"statusForScreenReaders\":\"\",\"workspacePopupMode\":0,\"workspacesForExternalLinks\":[]}"}},"edge_cloud_messaging":{"cached_target_token":{"cv":"1137467841541331456","target_token":"3J6nAFkqKtVIDiouyi3VuQ==$7Q3+peyA2o+nh1o7QpF1knJDmJeA/+ljo/MnDN3MuRjqHI+D29Bt70R7QOEnzVbTgJh3aMlxX+BQWJrHam4P5vq65xJD3yLjpcyEdDfI6wzJn/TaQNo3qAN6/1riPIMrlmGQh38bpa5H4Sts3YN1mWd/ivvRMkvuKTakHTF0Vx4=","time":"13430431864275298"}},"edge_copilot":{"msa_eligibility_info":{"account_id":"0859b554192dfb34","ageGroup":"Adult","cached_time":"13430957510318966","cohort":"BCWBF","featureSet":{"uxFeatures":[]},"isCodexEnabledRegion":true,"isCopilotEligible":true}},"edge_pinning_campaign":{"precomputed_campaign_data":{"has_relevant_history":false,"session_id":0,"stored_assets":["www.youtube.com","www.facebook.com"]}},"edge_rewards":{"cache_data":"CAEQyAEYADogCQAAAAAAAAAAEQAAAAAAAAAAGQAAAAAAAAAAIgNldXJKAmRl","hva_promotions":[],"hva_webui_action_status_dict":{},"promotions":[],"referral_hash":"D5E46D64","refresh_status_muted_until":"13431388807077261"},"edge_triggering":{"config_version":"1.42.2"},"edge_ux_config":{"assignmentcontext":"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=","dataversion":"254699771","experimentvariables":{},"flights":{},"latestcorrelationid":"Ref A: F81B34A5A9DF4E329E2677729872F0AF Ref B: FRA261071505040 Ref C: 2026-08-11T21:31:46Z"},"edge_vpn":{"available":true},"edge_wallet":{"checkout":{"global_config":"{\"common_config\":{\"auto_dimiss_count_threshold\":1,\"cooldown\":[1,24,168,720],\"coupons_off_threshold\":20000,\"disabled_features\":[],\"dsat_cooldown\":{\"-1\":168,\"0\":720,\"3\":168,\"4\":168,\"5\":24,\"6\":24,\"7\":24,\"8\":24},\"enabled_countries\":[\"CN\",\"US\",\"GB\",\"CA\",\"AU\",\"DK\",\"FR\",\"JP\",\"KR\",\"BR\",\"MX\",\"DE\",\"NL\",\"PL\",\"SE\",\"ES\",\"IT\",\"NO\",\"NZ\",\"SG\",\"HK\",\"TW\",\"PH\",\"TH\",\"VN\",\"MY\",\"AE\",\"PR\",\"CO\",\"CL\",\"AR\",\"IL\",\"SA\",\"PE\",\"TR\",\"IN\",\"DO\",\"ID\",\"CH\",\"ZA\",\"CR\",\"EC\",\"EG\",\"GT\",\"NG\",\"AT\",\"CZ\",\"BE\",\"IE\",\"PT\",\"AD\",\"AF\",\"AG\",\"AI\",\"AL\",\"AM\",\"AO\",\"AQ\",\"AS\",\"AW\",\"AX\",\"AZ\",\"BA\",\"BB\",\"BD\",\"BF\",\"BG\",\"BH\",\"BI\",\"BJ\",\"BL\",\"BM\",\"BN\",\"BO\",\"BQ\",\"BS\",\"BT\",\"BV\",\"BW\",\"BZ\",\"CC\",\"CD\",\"CF\",\"CG\",\"CI\",\"CK\",\"CM\",\"CV\",\"CW\",\"CX\",\"CY\",\"DJ\",\"DM\",\"DZ\",\"EE\",\"EH\",\"ER\",\"ET\",\"FI\",\"FJ\",\"FK\",\"FM\",\"FO\",\"GA\",\"GD\",\"GE\",\"GF\",\"GG\",\"GH\",\"GI\",\"GL\",\"GM\",\"GN\",\"GP\",\"GQ\",\"GR\",\"GS\",\"GU\",\"GW\",\"GY\",\"HM\",\"HN\",\"HR\",\"HT\",\"HU\",\"IM\",\"IO\",\"IQ\",\"IS\",\"JE\",\"JM\",\"JO\",\"KE\",\"KG\",\"KH\",\"KI\",\"KM\",\"KN\",\"KW\",\"KY\",\"KZ\",\"LA\",\"LB\",\"LC\",\"LI\",\"LK\",\"LR\",\"LS\",\"LT\",\"LU\",\"LV\",\"LY\",\"MA\",\"MC\",\"MD\",\"ME\",\"MF\",\"MG\",\"MH\",\"MK\",\"ML\",\"MM\",\"MN\",\"MO\",\"MP\",\"MQ\",\"MR\",\"MS\",\"MT\",\"MU\",\"MV\",\"MW\",\"MZ\",\"NA\",\"NC\",\"NE\",\"NF\",\"NI\",\"NP\",\"NR\",\"NU\",\"OM\",\"PA\",\"PF\",\"PG\",\"PK\",\"PM\",\"PN\",\"PS\",\"PW\",\"PY\",\"QA\",\"RE\",\"RO\",\"RS\",\"RW\",\"SB\",\"SC\",\"SD\",\"SH\",\"SI\",\"SJ\",\"SK\",\"SL\",\"SM\",\"SN\",\"SO\",\"SR\",\"SS\",\"ST\",\"SV\",\"SX\",\"SZ\",\"TC\",\"TD\",\"TF\",\"TG\",\"TJ\",\"TK\",\"TL\",\"TM\",\"TN\",\"TO\",\"TT\",\"TV\",\"TZ\",\"UA\",\"UG\",\"UM\",\"UY\",\"UZ\",\"VA\",\"VC\",\"VE\",\"VG\",\"VI\",\"VU\",\"WF\",\"WS\",\"YE\",\"YT\",\"ZM\",\"ZW\"],\"enabled_features\":[\"giftCardV2\",\"msWalletCheckoutCouponImprovement\",\"msWalletCheckoutECPaneDisableAutoDismiss:127.18082.18067.70_999.0.0.0\",\"msWalletCheckoutProfileCardRankByRecentUsage\"],\"export_card_timeout\":100,\"min_height\":300,\"min_version\":\"123.0.0.0\",\"min_width\":1000,\"wait_for_dom_loaded_before_trigger_ms\":4000},\"daf_config\":{\"allowed_url_keywords\":[\"checkout\",\"order\",\"book\",\"donate\",\"purchase\",\"cart\",\"buy\",\"shop\",\"reserve\",\"subscribe\",\"pay\",\"payment\",\"reservation\",\"billing\",\"invoice\",\"merchant\",\"secure\",\"transaction\",\"charge\",\"subscription\"],\"disabled_features\":[\"giftCardV2\"],\"disallowed_url_keywords\":[\"member\",\"membership\",\"account\",\"signup\",\"profile\"],\"enabled_features\":[],\"is_bloom_filter_base64_encoded\":true,\"is_empty_pool_skipped\":true,\"is_enabled\":false},\"ecommerce_config\":{\"disabled_features\":[\"giftCardV2\"],\"disallowed_sites\":{\"disallowed_filter_bytes\":\"lLMx0qG4N7YrIFdqEwrq6dGdN2Te7bSGGJfJdTUIbjIkuaFN8NSd8FfEy45NTR8T94Pi2rT00SXIcdC+AiWpf7JkIo2YqyjMKENnC3KoxIKvoZHsT1gGgSVFAWDFrOmt36cSZwCMEy3TmmeMsNfiFEUwtqTOPjg+Eq5qzQeBReqGNQdzQb0tLugkwnL4lQRvb5rUwUFoBlwyKp1YFyIjUG+09b3mzhtT6Gy2AeQX1uzHqu6+UYn4EGmrvE7jo03qtY+3oReaUzzge+5QBJEPCdshgWhDatMEOv2LMiI+YxQzjx9T+hvkhR0HC6hOqZ9XAuK4iShgXAQqgEElK+RusAJg463A9PeR5w4mSk0qsoMzXYvdSaXagNyRVpS453uwRVJARIxihCqnZAxtMgA+KbVGf/OWQ9VhO3QuBCn72Z/Lxnc2xt9hP8IG5JHhAWbhSZBPPMNUMSHMfakmq0PZovpi/pHe0Q8mOvpLIgHwKDy9+y637NXXBvmkrr+OOB8EdqTE+/RzDhIjds1UgBx8rIkVYylOo105EXCeaJlpQCCfboHtylBZ569VI5KCDERo5n1l9zKqCeAHqY/cMpbWgwQk4LiDAsyeCROQr+NRL0RP8ryai5Q/SrYu3r+txjghgfaNGl6UaIGvnQjRS5VYeg+YQ/SorW0+SEIp+uIS+argFMe5wsF01MAH5VNfZDIBkhq6gR36O9XJJ1jYgRFWL1oanpjuM2EmhKxhdy8IaY6VLie+89d+rjwtVb8vXJbLuY+jOm+aGskkQyoOOY8lsw5kQmBj/vCI5Hvlgo4zV4fadIuHNNg3hltP8RhsH9Djso6sPzo/2mWu08Wsjg/yXpJglddIiEI8Vx80eqS5gtDLe/osjIdVWbxd6E6fQlBjyZnuOTCG2x6IoiviMW1tRyNDMvqYS+k8Q0BoYS2ZlAMd/qweECXkwLKM2NVdXX0ZeC76ldVOFxy04Mg0Srhvng5/vMAN0S5DVCt9cKlAx3F5wJzaAuVN9u+EV6FEmW9XupKzJB5BPTSO1lOrAId4/xpwIXCRqlJhAC0mT2Qhy7VQucptPfwQSCSxix/q53G8HNmW7n2zCLR7B2MPbuK7LuIFMlvHMEF96mkTrfdWfSTXDw8BUaJCQdfCSu01MLBmO142j/ovPr6DZKd212oQygSOsXYAmvOIgkrjDuN+ANxWUbNscUKGvHk1cgACdEGNpcBw+CaPOXJDodtoKA6sUqyXmCc8ZmQJazOc45+nbOkaIBoG8TJY8QnoWhuxGDZYTAabRStH1TlVOLuGrrfEhBWNGfmL2/NU+BHLog/CpeilSzpIHQc8FrJSwQz2trBCyHgqKINf54zlBZL5NxdDPSETr+QOSwsZzZFdf5CyFhB9S0tg5KOknqa1j+KXVXJpQmKutKJI4f3oPdQb7yWkD5d0RAkKicvqzvCI6oYpBcZqpdbIqr52JxFk8uzRUywUp3dHp1chuTECkVrD5YzJEbH2lzFxknpvSMxemp8NAW+pDBoff0UENQpbJa05qeQJoG2l6ih5bwClDil3sZuCEAh8iJ7SSdH+0jih9Cw5/TjYSgzeiBYwMNbC7ZjIOu5l9jqqFB0PH1Z/HV1zo8PHizR1STADO9Y8LdW6nGhZXMltmJqHZBqxIIocZSVJ1V8RdjP3McTk8VrmE5+1ygWzAMyIoiV3vVh4GLrp9WXBHbY5ZXyt0+oaBhwbWIB6zqsYEGDiF4mJRNuay9r5zAzGneS8BEu3Od8cnDwaTW7bQ3k7PxJzzcGttnaUNSMuFDfUqsVHhnVUFp586s4WN/YqUikU83Y79JiY5/kK9unNPWk0qHh1vig3sjMMHEWdEToLvTvsryGIwm8YmNWnni3lO76IyvB1Pv+q+SVOCFUbUGk5+WBd5EEyWAX37E7VXVJg/lrJ9h0+2dLKExQESuvIeGgKDXjZwAyighjTrwdHgqEeOL0upxHgAp24Z6TTEO5ExRHMblKGJzgqGFh/y/74NdxD+RlbXp08mGV/xysAvoU+HPqD4CdHebP37DstlSxVBt18Tu+bPE3sbfPEkxsOfEk9I0fZJoR4kD6KXfyJphQkdLL14dpKb7lPT7uI9IGNSTbIlN8UYihLTadHkpADLrn2WB2hN29nIiZpMs1uswZzFdUxTS39CcDAOAUKtpLlb+mMZi8QUxpJy91pZ6/VCKLB0aLGoWiGw4BSavbLsGt4Yvv0JgUxrhgNLoBOGnS4sCoYkiVMRBl76TugAwhykLb8M9vJSVFC+LI1DBEERUTSvzaBZOTkcIBINI2QJZ/deoHQQ6sYaJWcnaV3ylhU53tVk9C1Fo2XHlkQKGKGLSl87zvFbNYivkeaPC8r/rRxcgqlxGNwni71YRaf/EoBx6soh/GBUHVUu5QylDhJFgVbJIdB0VE0SCto0aUJHzUj4fKT6onxWahsyOYU2iqQJSAP//33tK84OIeldqn04YN0Lp/X22e2n8FJaxJcjCe4b9y36sHfUnyU+piBEiAnfJ8d2V9YjstFO3abTqSRkd2fKxQOW/PFOJaNUTTBhLmAKmCZ1JgX7R8VwP8GH0ZWIF3EAohQyWWDJqKJfTZlsW1dkBm7WPEHNABmFUDZNsPcZEBMsOvT6YoslyBqZHc4n7egx4iAvfwLihu+hUdYAwvtUROnoAtB3KMAtkWlhigzgdb7qz6xMAiF+CFTUY/2shP86aOp+SHMcaBRMs2VrhHrHIET2TQE7AXcB9+nni3ERjHypPwpCxXH/ZkM1CJR1T0Oo2czVSHrQ1AcONS0vpjNOC2t0P5H9awhUuPvNf89KiO6A0sAHAYrfIlEkSg3BThdVQN6OhJVLQIN5NuDrdNoqFHO2q4Ns9I4J7bjmSXGy31Gxa8EWRS3aeebVW8g738Bp9MPJ0/pPNnfFWvY1CC0zBi9WDkERV+n8rk+8WM75dAbT56eTE7/M1i+gQWzIKeLdilg7/AvVwPXPhI8zgUWuWiCCZkZW0yLvUnuKBU93iohkUjdaRTdcl6IsvPLSy/sZEH+Hm/l9MTyguD7DeLEDxEVsCjrFVLtDto2bDn6ErBNsoKZI7iQRLF+j19Zezr7Q2GusOJ8iAyOL8ix9CmZMTAOXFHtqW7Y0daeoWnic413A2SfTY8YhwsWFoNSO1gEErvi1NiWZ7f0W812e2+ha9qRuIyUideyh+wZGKImBmZNUnRsTyY1BGJemuHL4wD0jWW4gk9Xb714dgTyGU3b4vDr8GzU+Ku+WALpY3LGFXJp2AS0MCfpbarbeBlV2TMmDCxrM9s4AVPRCOhux589bsBsJif1Ej8FIT6G1dEiop2Xo5ugDDd2Z5lZDXqkwSnWIlQiad8fmTeGrLajhm6K5lhWDiiAtg7W6HNUpqA/9cBEBUIYZu4wPLjjLVD05O7rGztjjMQSXeb9mjDAoJQYvvN+CYCQ3zNaSA3lMBrWEMZscsND6S9QrDi1Zx06XN2JHYUkZYMGRLQuzs1nIZ4u51+CwomVhU6a6cEdVM/k0mu0nkSP2ayVTgAZzh05FhFlXkSo4QFYzp1IIf7O+rOv3ni4/RDHY1iESmdO/EioeqGn99N32mWzSb3M+AscqrCS2M8t/8pCCYNDN4WHa4lIuBqbaMkImRbKTWIbSZz+1iEjDUb4QXwQmxLw3p6mWhJ7cjhn1a/GDcymigsFTvUKboN6rJQgGDjKoGGTdec6gfiyYXlZKpe7o7OrEp2VZO4UZJcWVQ+yq9ojJUzAesioNzdEIyaaKNy/9NkbEl/dRVbZw8a3bW2RERYf03GJ+4K8fNEO8QP6sf9riL7UduUUeE00iHwFJLUmDZyiwSJ5oi7GVPtWpgYQDqZt+vw2VoxappENGO5i8Iea3RqO1T0SGI8w0SM2GopgWY9Lbr5KALTujideljf8fHFPvpW4lVhmkaquCmxwlPgBY9uaZGxxnyymRmuEJG1B7Vd0j8MYyrJX50QJMipUseFdDFyuxd78KkrmuH9bzJ5gAqKOpJmNEKxwQ+ZxQnnp3Lu787AkYe4qTnlcsLDiMw==\",\"num_bits\":24270,\"seeds\":[0,1,2,3,4,5,6,7,8,9]},\"is_enabled\":true,\"platforms\":[{\"html_selectors\":[\"meta[name='serialized-api-client-id']\"],\"name\":\"shopify\",\"template_id\":1,\"url_path_regex\":\"/checkouts\"},{\"html_selectors\":[\"meta[name='shopify-checkout-api-token']\"],\"name\":\"shopify\",\"template_id\":2,\"url_path_regex\":\"/\\\\d+/checkouts\"},{\"html_selectors\":[\"body.woocommerce-checkout\"],\"name\":\"woocommerce\",\"template_id\":1,\"url_path_regex\":\"/checkout/\"},{\"html_selectors\":[\"meta[name='generator'][content='Wix.com Website Builder']\"],\"name\":\"wix\",\"template_id\":1,\"url_path_regex\":\"/checkout\"},{\"html_selectors\":[\"body#sqs-standard-checkout\"],\"name\":\"squarespace\",\"template_id\":1,\"url_path_regex\":\"/checkout\"},{\"html_selectors\":[\"meta[name='shopify-checkout-authorization-token']\"],\"name\":\"shopify\",\"template_id\":4,\"url_path_regex\":\"/checkouts\"},{\"html_selectors\":[\"meta[name='shopify-digital-wallet']\"],\"name\":\"shopify\",\"template_id\":4,\"url_path_regex\":\"/checkouts\"},{\"html_selectors\":[\"head link[href*='cdn.shopify.com/shopifycloud/checkout-web']\"],\"name\":\"shopify\",\"template_id\":1,\"url_path_regex\":\"/checkouts\"},{\"html_selectors\":[\"head > #woocommerce-inline-inline-css\"],\"name\":\"woocommerce\",\"template_id\":1,\"url_path_regex\":\"/checkout/\"},{\"html_selectors\":[\"script[data-requiremodule='magentoStorefrontEvents']\"],\"name\":\"adobe\",\"template_id\":1,\"url_path_regex\":\"/checkout/\"},{\"html_selectors\":[\"script[src*='bolt.com']\"],\"name\":\"bolt\",\"template_id\":1,\"url_path_regex\":\"/\"},{\"html_selectors\":[\"div.StripeElement > div[class*='PrivateStripeElement'] > iframe[title='Secure payment input frame']\"],\"name\":\"stripe\",\"template_id\":1,\"url_path_regex\":\"/\"}]},\"topsite_config\":{\"disabled_features\":[],\"eligible_sites\":[\"bedbathandbeyond.com\",\"fanatics.com\",\"roamingst.webxtsvc-int.microsoft.com\",\"dominos.com\",\"commerce.adobe.com\",\"hilton.com\",\"aa.com\",\"mcafee.com\",\"expedia.com\",\"paypal.com\",\"spotify.com\",\"netflix.com\",\"papajohns.com\",\"pay.openai.com\",\"bestbuy.com\",\"pay.ebay.com\",\"lowes.com\",\"checkout.stripe.com\",\"alaskaair.com\",\"pay.ebay.de\",\"bathandbodyworks.com\",\"walmart.com\",\"target.com\",\"pay.ebay.co.uk\",\"pay.gov\",\"secure.booking.com\",\"kohls.com\",\"marriott.com\",\"signup.hulu.com\",\"basket.step.rakuten.co.jp\",\"southwest.com\",\"hotels.com\",\"secure.wayfair.com\",\"jcpenney.com\",\"delta.com\",\"pay.usps.com\",\"secureacceptance.cybersource.com\",\"ihg.com\",\"amazon.com\",\"amazon.co.uk\",\"etsy.com\",\"homedepot.com\",\"pdffiller.com\",\"shop.app\",\"nike.com\",\"youtube.com\",\"checkout.microsoft365.com\",\"connect.intuit.com\",\"sis.redsys.es\",\"sbs.e-paycapita.com\",\"card.payments.service.gov.uk\",\"payments.worldpay.com\",\"app.squareup.com\",\"send.royalmail.com\",\"premierinn.com\",\"easyjet.com\",\"britishairways.com\",\"staples.com\",\"canva.com\",\"epayment.nets.eu\",\"hpp.worldpay.com\",\"temu.com\",\"saferpay.com\",\"secure.payzen.eu\",\"peacocktv.com\",\"sec.windcave.com\",\"ipg-online.com\",\"fep.sps-system.com\",\"account.microsoft.com\",\"checkout.globalgatewaye4.firstdata.com\",\"magic.collectorsolutions.com\",\"3dsecure.gpwebpay.com\",\"aliexpress.com\",\"ipn.paymentus.com\",\"commerce.cashnet.com\",\"payment-web.sips-services.com\",\"pizzahut.com\",\"p.monetico-services.com\",\"linkedin.com\",\"turbospn.com\",\"nbc.sbi.co.in\",\"rayexpress.raysigorta.com.tr\",\"cebs.prod.fedex.com\",\"authentication.td.com\",\"hwts.hilton.com\",\"step.soa.webapp.dst.baintern.de\",\"forms.office.com\",\"crm.izzi.mx\",\"rlms.sbi\",\"advisorpro.allstate.com\",\"sise.cjf.gob.mx\",\"qbo.intuit.com\",\"avantius.justizia.eus\",\"cibconline.cibc.com\",\"content.lifecycle.office.net\",\"reportes.interrapidisimo.com\",\"cashmanagement.barclays.net\",\"pstcdypisr.clouda.sat.gob.mx\",\"edus.ccss.sa.cr\",\"spoolnetng.axa-fr.intraxa\",\"adaptedmind.com\",\"stportal.bmi.intra.gv.at\",\"gab.com\",\"store.malwarebytes.com\",\"client-central.com\",\"apps.powerapps.com\",\"microsoft.com\",\"roblox.com\",\"e-menu.sunat.gob.pe\",\"usa.experian.com\",\"clover.com\",\"payment.smart-glocal.com\",\"wwwmat.sat.gob.mx\",\"sgp.justicia.aragon.es\",\"pheds.imss.gob.mx\",\"convergepay.com\",\"pay.hotmart.com\",\"pmu.fr\",\"login.pep.hilton.com\",\"sbiepay.sbi\",\"paytrace.com\",\"account.authorize.net\",\"farm3.sat.gob.gt\",\"sd20.finanze.it\",\"borjoperations.attijariwafa.net\",\"w2.seg-social.es\",\"eue.gde.gob.ar\",\"amazon.fr\",\"businesscentral.dynamics.com\",\"fedex.com\",\"pmb.rectanglehealth.com\",\"pgi.billdesk.com\",\"nfe.prefeitura.sp.gov.br\",\"sevenrooms.com\",\"wb.authentication.td.com\",\"genawmprod.generali.it\",\"application.littlehotelier.com\",\"mrkoll.se\",\"apps.facebook.com\",\"choiceadvantage.com\",\"pc-prod-gwcpprod.promutuel.delta2-butterfly.guidewire.net\",\"acente.magdeburger.com.tr\",\"crmnext.hbctxdom.com\",\"facebook.com\",\"servint.madrid.es\",\"openjet.inhealth.ae\",\"agentsm.spectrummobile.com\",\"sncf-connect.com\",\"bancanetempresarial.citibanamex.com.mx\",\"ryanair.com\",\"pbmdeapcsc01.bancolombia.corp\",\"m.skybet.com\",\"uline.com\",\"clients.mindbodyonline.com\",\"online.instamed.com\",\"hoc.bt.wan\",\"shop.win-rar.com\",\"qy96596.com\",\"app.pennylane.com\",\"checkout.ticketmaster.com\",\"servizi.mit.gov.it\",\"members.pscufs.com\",\"secure.athenahealthpayment.com\",\"app.hubspot.com\",\"es.intrallianz.com\",\"ins.crm.dynamics.com\",\"mcmeehr.me.hcnet.biz\",\"internet.speedpay.com\",\"vereda.cantabria.es\",\"091402wb236.infonavit.net\",\"flights.ctrip.com\",\"elcorteinglessa.lightning.force.com\",\"assure.ameli.fr\",\"elster.de\",\"kmart.com.au\",\"loginunico.viabcp.com\",\"portalgrupo.elcorteingles.int\",\"wz.skt.ccta.dk\",\"trak.ufh.com\",\"gestionprocesal.admon-cfnavarra.es\",\"vehicletax.service.gov.uk\",\"portal.sisbr.coop.br\",\"extranet.chie.junta-andalucia.es\",\"ryanair.com\",\"clientesviajeselcorteingles.lightning.force.com\",\"royalcaribbean.com\",\"hmsweb.hms.eu1.inforcloudsuite.com\",\"arsiv.mackolik.com\",\"adultfriendfinder.com\",\"dropbox.com\",\"sicop.go.cr\",\"paiement.systempay.fr\",\"husll-sisn2.ssib.es\",\"alogic.myeyedr.com\",\"securecheckout.cdc.nicusa.com\",\"united.com\",\"adquiramexico.com.mx\",\"wps.kessai.info\",\"payment.parchment.com\",\"us-east-2.turbotaxonline.intuit.com\",\"us-west-2.turbotaxonline.intuit.com\",\"freetaxusa.com\",\"tax.service.gov.uk\",\"taxes.hrblock.com\",\"securecheckout-fl.cdc.nicusa.com\",\"internet.speedpay.com\",\"facebook.com\"],\"enabled_features\":[],\"extra_sites\":{\"4th_extra_sites\":[],\"recovery_sites\":[\"easyjet.com\"]},\"inline_sites\":[\"amazon.com\",\"roamingst.webxtsvc-int.microsoft.com\",\"ihg.com\",\"mcafee.com\",\"hotels.com\",\"pay.ebay.de\",\"papajohns.com\",\"fanatics.com\",\"pay.ebay.co.uk\",\"pay.ebay.com\",\"bedbathandbeyond.com\",\"etsy.com\",\"secure.booking.com\",\"nike.com\",\"kohls.com\",\"staples.com\",\"paypal.com\",\"homedepot.com\",\"shop.app\",\"checkout.stripe.com\",\"securecheckout.cdc.nicusa.com\",\"expedia.com\",\"hilton.com\",\"marriott.com\",\"pizzahut.com\",\"delta.com\",\"lowes.com\",\"secure.wayfair.com\",\"target.com\",\"amazon.co.uk\",\"jcpenney.com\",\"britishairways.com\",\"bathandbodyworks.com\",\"ryanair.com\",\"dominos.com\",\"facebook.com\"],\"is_enabled\":true,\"recovering_sites\":[]},\"version\":256}","global_config_last_updated_time":"13430871375665907","global_daf_config_last_updated_time":"13430871375683812"},"ec_cool_down_time":"13385404682120572","ec_dismiss_count":5,"home":{"fre":{"passwords_step_completed":true,"passwords_step_completion_state":1}},"passwords":{"latest_password_management_count":{"2026-03-31":3,"2026-04-02":2},"latest_password_usage_count":{"2026-04-23":1},"password_lost_report_date":"13430957535847100"},"trigger_funnel":{"records":[]}},"enable_do_not_track":true,"enhanced_tracking_prevention":{"enabled":false,"user_pref":2},"enterprise_profile_guid":"58861dcc-bd06-4ae5-a30e-42bf455dc36f","extension":{"installed_extension_count":11},"extensions":{"alerts":{"initialized":true},"chrome_url_overrides":{},"commands":{},"last_chrome_version":"151.0.4129.72","pdf_upsell_triggered":false,"pinned_extension_migration":true,"pinned_extensions":[],"ui":{"allow_chrome_webstore":true}},"family_safety":{"activity_reporting_enabled":false,"web_filtering_enabled":false},"fsd":{"retention_policy_last_version":151},"gaia_cookie":{"periodic_report_time_2":"13430957505848020"},"google":{"services":{"consented_to_sync":true,"signin":{"LAST_SIGNIN_ACCESS_POINT":{"time":"2026-08-10T20:38:50.016Z","value":"17"}}}},"history":{"thumbnail_visibility":true,"thumbnail_visibility_per_usage":true},"history_clusters":{"all_cache":{"all_keywords":{},"all_timestamp":"0"},"short_cache":{"short_keywords":{},"short_timestamp":"0"}},"https_upgrade_navigations":{"2026-08-09":10},"import_items_failure_state":{"reimport":{"ie_react":62436}},"in_product_help":{"recent_session_enabled_time":"13430050654171363","recent_session_start_times":["13430957505921379","13430867928253862","13430784007144194","13430431862149334","13430350312210885","13430261411977172","13430089255217498","13430050654171363"],"session_last_active_time":"13430957580941319","session_number":9,"session_start_time":"13430957505921379"},"instrumentation":{"bookmark_bar":{"show_on_all_tabs":"BookmarksMessageHandler::SetShowFavoritesBar;true","show_only_on_ntp":"BookmarksMessageHandler::SetShowFavoritesBarOnlyNTP;false"},"ntp":{"layout_mode":"InstantService::UpdateNtpPrefs;3","news_feed_display":"InstantService::UpdateNtpPrefs;always"}},"intl":{"accept_languages":"de,de-DE,en,en-GB,en-US","selected_languages":"de,de-DE,en,en-GB,en-US"},"language_dwell_time_average":{"en":11.0},"language_model_counters":{"de":1,"en":1},"language_usage_count":{"en":2},"local_browser_data_share":{"index_last_cleaned_time":"13430784367248809","pin_recommendations_eligible":false},"management":{"profile":{"last_log_time":"13430957505846494"}},"media":{"engagement":{"schema_version":5}},"media_router":{"receiver_id_hash_token":"y6367xSDQBB5siqxIHLiqtVCkzlUTCwsdAZylhcn3y9c2jVvgNERDtofxRNSc75RuHzWM4MISLanOvKlAO74VA=="},"muid":{"last_sync":"13430957505993524","values_seen":["326BBBD68849639B18E7AC64894D6219"]},"ntp":{"background_image":{"configIndex":56,"imageId":"BB1msOP5","provider":"CMSImage","userSelected":false},"layout_mode":2,"news_feed_display":"always","ntp_last_creation_time_v2":"13430784175828747","num_personal_suggestions":1,"prerender_contents_height":914,"prerender_contents_width":1912,"record_user_choices":[{"setting":"tscollapsed","source":"tscollapsed_to_off","timestamp":1.696685049401e+12,"value":0},{"setting":"breaking_news_dismissed","source":"ntp","timestamp":1.786310576194e+12,"value":{}},{"setting":"ntp.enable_wid_in_partial_view","source":"ntp","timestamp":1.730405466669e+12,"value":true},{"setting":"is_ruby_page","source":"ntp","timestamp":1.786469538686e+12,"value":"0"},{"setting":"ruby_cookie_change_history","source":"ntp","timestamp":1.786461235367e+12,"value":"2|1786461235367|6a7b3c32f3e143f7bc9d2a10b8dc6a5d|1"},{"setting":"ruby_set_history","source":"ntp","timestamp":1.786469538489e+12,"value":"true"},{"setting":"ntp.is_ruby","source":"ntp","timestamp":1.786469538489e+12,"value":"false"},{"setting":"ruby_ux_history","source":"ntp","timestamp":1.786469538489e+12,"value":"false"}],"selected_feed_pivot":"myFeed","show_greeting":true,"user_nurturing":[{"key":"background_setting_preferences","value":{"changeBackgroundDaily":true}},{"key":"wpo_nx","value":{"cpt":true,"v":"2"}},{"key":"sptmarket","value":{"setting":"sptmarket","source":"ntp","timestamp":1.786310576269e+12,"value":"de%7C%7Cde%7Cde-de%7Cde-de%7Cde%7C%7Creason%3DRevIP%3Ade%7Ccf%3D8%7CRefA%3D6a78ef331d4241b79d01b41abb59d731.RefC%3D2026-08-09T21%3A20%3A51Z"}},{"key":"layoutPromotion"},{"key":"viewport","value":{"height":914,"width":1912}}]},"nurturing":{"time_of_last_sync_consent_view":"13430050655492222"},"omnibox":{"work_organization_name":{"name":""}},"optimization_guide":{"hintsfetcher":{"hosts_successfully_fetched":{}},"previously_registered_optimization_types":{"ABOUT_THIS_SITE":true,"AUTOFILL_ACTOR_IFRAME_ORIGIN_ALLOWLIST":true,"GLIC_ACTION_PAGE_BLOCK":true,"HISTORY_CLUSTERS":true,"LOADING_PREDICTOR":true,"MERCHANT_TRUST_SIGNALS_V2":true,"PRICE_TRACKING":true,"SAVED_TAB_GROUP":true}},"password_manager":{"account_store_backup_password_cleaning_last_timestamp":"13430050714139981","account_store_migrated_to_os_crypt_async":true,"profile_store_backup_password_cleaning_last_timestamp":"13430050714465475","profile_store_migrated_to_os_crypt_async":true},"personalization_data_consent":{"how_set":2,"personalization_in_context_consent_can_prompt":true,"personalization_in_context_count":0,"personalization_in_context_has_prompted":false,"when_set":"13374879897479538"},"pinned_sites":{"last_launch_times":{}},"prefs":{"preference_encrypted_reset_time":"13430957505992462"},"privacy_sandbox":{"first_party_sets_data_access_allowed_initialized":true},"profile":{"avatar_index":20,"background_password_check":{"check_fri_weight":9,"check_interval":"864000000000","check_mon_weight":4,"check_sat_weight":4,"check_sun_weight":4,"check_thu_weight":9,"check_tue_weight":9,"check_wed_weight":9,"next_check_time":"13430295745393465"},"content_settings":{"exceptions":{"abusive_notification_permissions":{},"access_to_get_all_screens_media_in_session":{},"anti_abuse":{},"app_banner":{"https://finance.yahoo.com:443,*":{"last_modified":"13430871236000052","setting":{"https://finance.yahoo.com/":{"couldShowBannerEvents":1.3430871081033098e+16,"next_install_text_animation":{"last_shown":"13430871236000041","shown_count":1}}}}},"ar":{},"are_suspicious_notifications_allowlisted_by_user":{},"auto_picture_in_picture":{},"auto_select_certificate":{},"automatic_downloads":{},"automatic_fullscreen":{},"autoplay":{},"background_sync":{},"bluetooth_chooser_data":{},"bluetooth_guard":{},"bluetooth_scanning":{},"camera_pan_tilt_zoom":{},"captured_surface_control":{},"clear_browsing_data_cookies_exceptions":{},"client_hints":{"https://ntp.msn.com:443,*":{"last_modified":"13430957512445004","setting":{"client_hints":[0,4,5,6,8,9,10,11,12,13,14,15,16,18,20,22,23]}}},"clipboard":{},"controlled_frame":{},"cookie_controls_metadata":{"http://localhost,*":{"last_modified":"13430957506618722","setting":{}},"https://[*.]yahoo.com,*":{"last_modified":"13430871079232475","setting":{}}},"cookies":{},"direct_sockets":{},"direct_sockets_private_network_access":{},"display_media_system_audio":{},"disruptive_notification_permissions":{},"durable_storage":{},"edge_ad_targeting":{},"edge_ad_targeting_data":{},"edge_all_file_read_access":{},"edge_browser_action":{},"edge_notification_referrer_chain_blocked":{},"edge_sdsm":{},"edge_split_screen":{},"edge_tech_scam_detection":{},"edge_u2f_api_request":{},"edge_user_agent_token":{},"fedcm_idp_registration":{},"fedcm_idp_signin":{},"fedcm_share":{},"file_system_access_chooser_data":{},"file_system_access_extended_permission":{},"file_system_access_restore_permission":{},"file_system_last_picked_directory":{},"file_system_read_guard":{},"file_system_write_guard":{},"formfill_metadata":{},"geolocation":{},"geolocation_with_options":{},"hand_tracking":{},"has_migrated_local_network_access":true,"hid_chooser_data":{},"hid_guard":{},"http_allowed":{},"https_enforced":{},"idle_detection":{},"images":{},"important_site_info":{},"initialized_translations":{},"inline_cue_menu":{},"intent_picker_auto_display":{},"javascript":{},"javascript_jit":{},"javascript_optimizer":{},"keyboard_lock":{},"legacy_cookie_access":{},"legacy_cookie_scope":{},"local_fonts":{},"local_network":{},"local_network_access":{},"loopback_network":{},"media_engagement":{"http://localhost:54481,*":{"expiration":"13438733621190245","last_modified":"13430957621190248","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:56149,*":{"expiration":"13437867780510360","last_modified":"13430091780510362","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:57262,*":{"expiration":"13438213146555078","last_modified":"13430437146555081","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:57865,*":{"expiration":"13438647383019762","last_modified":"13430871383019765","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:60103,*":{"expiration":"13438560959333946","last_modified":"13430784959333948","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":2}},"http://localhost:61657,*":{"expiration":"13437837007973620","last_modified":"13430061007973623","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:63436,*":{"expiration":"13438129182065637","last_modified":"13430353182065639","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"http://localhost:64741,*":{"expiration":"13438038438667863","last_modified":"13430262438667866","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"https://consent.yahoo.com:443,*":{"expiration":"13438647079232960","last_modified":"13430871079232962","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"https://finance.yahoo.com:443,*":{"expiration":"13438647383015239","last_modified":"13430871383015242","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}},"https://ntp.msn.com:443,*":{"expiration":"13438560051138901","last_modified":"13430784051138903","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}}},"media_stream_camera":{},"media_stream_mic":{},"midi_sysex":{},"mixed_script":{},"nfc_devices":{},"notification_interactions":{},"notification_permission_review":{},"notifications":{},"ondevice_languages_downloaded":{},"password_protection":{},"payment_handler":{},"permission_actions_history":{},"permission_autoblocking_data":{},"permission_autorevocation_data":{},"pointer_lock":{},"popups":{"https://www.office.com:443,*":{"last_modified":"13357245951925773","setting":1}},"protected_media_identifier":{},"protocol_handler":{},"reduced_accept_language":{},"safe_browsing_url_check_data":{},"secure_network":{},"secure_network_sites":{},"sensors":{},"serial_chooser_data":{},"serial_guard":{},"site_engagement":{"http://localhost:54481,*":{"last_modified":"13430957618723322","setting":{"lastEngagementTime":1.3430957618723312e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":7.799999999999998,"rawScore":7.799999999999998}},"http://localhost:56149,*":{"last_modified":"13430957505942308","setting":{"lastEngagementTime":1.3430771271726896e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":15.0}},"http://localhost:57262,*":{"last_modified":"13430957505942292","setting":{"lastEngagementTime":1.3430866794420012e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":15.0}},"http://localhost:57865,*":{"last_modified":"13430957505942274","setting":{"lastEngagementTime":1.3430928481438052e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":15.0}},"http://localhost:60103,*":{"last_modified":"13430957505942255","setting":{"lastEngagementTime":1.34308965361398e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":10.799999999999997}},"http://localhost:61657,*":{"last_modified":"13430957505942235","setting":{"lastEngagementTime":1.3430739959073572e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":9.599999999999998}},"http://localhost:63436,*":{"last_modified":"13430957505942215","setting":{"lastEngagementTime":1.343083274721814e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":15.0}},"http://localhost:64741,*":{"last_modified":"13430957505942194","setting":{"lastEngagementTime":1.3430801088056368e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":8.999999999999998}},"https://finance.yahoo.com:443,*":{"last_modified":"13430957505942166","setting":{"lastEngagementTime":1.3430928705941996e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":3.3000000000000003}},"https://ntp.msn.com:443,*":{"last_modified":"13430957505942063","setting":{"lastEngagementTime":1.3430895637275088e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":3.0}}},"sleeping_tabs":{},"sound":{},"speaker_selection":{},"ssl_cert_decisions":{},"storage_access":{},"storage_access_header_origin_trial":{},"sub_apps_without_prompts":{},"subresource_filter":{},"subresource_filter_data":{},"suspicious_notification_ids":{},"suspicious_notification_show_original":{},"top_level_storage_access":{},"trackers":{},"trackers_data":{},"tracking_org_exceptions":{},"tracking_org_relationships":{},"typosquatting":{},"unused_site_permissions":{},"usb_chooser_data":{},"usb_guard":{},"vr":{},"web_app_installation":{},"webid_api":{},"webid_auto_reauthn":{},"window_placement":{}},"pref_version":1},"created_by_version":"150.0.4078.105","creation_time":"13430050654109835","default_content_setting_values":{"has_migrated_local_network_access":true},"edge_crash_exit_count":0,"edge_password_is_using_new_login_db_path":false,"edge_password_login_db_path_flip_flop_count":0,"edge_passwords_more_menu_label_shown":true,"edge_profile_id":"a214953e-f3d4-404d-b0c7-662b822f8ed9","edge_user_with_non_zero_passwords":true,"exit_type":"Normal","hard_no_auto_save_consent":true,"hard_no_password_monitor_consent":true,"has_seen_signin_fre":false,"is_relative_to_aad":false,"last_engagement_time":"13430957618723311","last_time_auto_save_consent_shown":"13313380035189805","last_time_obsolete_http_credentials_removed":1785577114.141604,"last_time_password_store_metrics_reported":1786483935.847168,"managed_user_id":"","name":"Profil 1","network_pbs":{"3d7a5ba3":{"last_updated":"13430512423915920","pb":34}},"number_auto_save_consent_shown":1,"observed_session_time":{"feedback_rating_in_product_help_observed_session_time_key_150.0.4078.105":653.0,"feedback_rating_in_product_help_observed_session_time_key_151.0.4129.59":1782.0,"feedback_rating_in_product_help_observed_session_time_key_151.0.4129.72":984.0},"password_hash_data_list":[],"signin_fre_seen_time":"13430050654132145","were_old_google_logins_removed":true},"profile_network_context_service":{"http_cache_finch_experiment_groups":"None None None None"},"profiles":{"last_swag_account_type":1},"read_aloud":{"last_used_time":"13380377422013311","toolbar_button_animation_last_shown_time":"13359681778073834","toolbar_button_animation_shown_count":1},"reading_view":{"last_access_time":"13359681778018840"},"reset_prepopulated_engines":false,"safebrowsing":{"advanced_protection_last_refresh":"13430957505992668","extension_telemetry_file_data":{},"unhandled_sync_password_reuses":{}},"safety_hub":{"unused_site_permissions_revocation":{"migration_completed":true}},"saved_tab_groups":{"did_enable_shared_tab_groups_in_last_session":false,"specifics_to_data_migration":true},"segmentation_platform":{"segment_execution_result":{"edge_browser_usage":{"execution_time":"13430957571836430","is_ready":true,"output":[0.0,6.0,1.0,0.0,0.0,1.0],"segment_id":533},"edge_browser_usage_do_not_disturb_user":{"execution_time":"13430957571836533","is_ready":true,"output":[1.0],"prediction_score":1.0,"segment_id":536},"edge_browser_usage_pb_50":{"execution_time":"13430957571836587","is_ready":true,"output":[1.0],"prediction_score":1.0,"segment_id":560},"edge_browser_usage_sync":{"execution_time":"13430957571836468","is_ready":true,"output":[6.0],"prediction_score":6.0,"segment_id":538},"edge_browser_usage_threshold":{"execution_time":"13430957571836579","is_ready":true,"output":[0.0],"prediction_score":0.0,"segment_id":557},"edge_most_valuable_user":{"execution_time":"13430957571836460","is_ready":true,"output":[0.0],"prediction_score":0.0,"segment_id":504},"edge_most_valuable_user_server":{"execution_time":"13430957571836571","is_ready":true,"output":[0.0],"prediction_score":0.0,"segment_id":540}}},"sessions":{"event_log":[{"crashed":false,"time":"13430050654142940","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430061007970089","type":2,"window_count":1},{"crashed":false,"time":"13430089255185529","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430091780503363","type":2,"window_count":1},{"crashed":false,"time":"13430261411914730","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430262438664179","type":2,"window_count":1},{"crashed":false,"time":"13430350312127174","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430353182062151","type":2,"window_count":1},{"crashed":false,"time":"13430431862062455","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430437146540535","type":2,"window_count":1},{"crashed":false,"time":"13430784007082953","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430784959328661","type":2,"window_count":1},{"crashed":false,"time":"13430867928188096","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":2,"time":"13430871383004862","type":2,"window_count":1},{"crashed":false,"time":"13430957505855162","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13430957621186824","type":2,"window_count":1}],"session_data_status":3},"shopping":{"contextual_features_enabled":true,"dma_telemetry_expiration_time":"13431043905912849","last_pwilo_api_fetch_time":"13430871007164311"},"should_read_incoming_syncing_theme_prefs":false,"signin":{"accounts_metadata_dict":{"0859b554192dfb34":{"BookmarksExplicitBrowserSigninEnabled":false}},"allowed":true,"signin_with_explicit_browser_signin_on":true},"smart_explore":{"auto_cleanup":{"check_time":"13430433758220075"},"auto_cleanup_date":"13390507243958314","engagement_date":"13382038762701326"},"spellcheck":{"dictionaries":["de"],"dictionary":""},"surf_game":{"buoy_highscore":-1,"classic_highscore":1605,"speed_highscore":-1},"sync":{"apps":true,"autofill":true,"bookmarks":true,"cached_passphrase_type":2,"cached_persistent_auth_error":false,"cached_trusted_vault_auto_upgrade_experiment_group":"","collections_edge_re_evaluated":true,"edge_account_type":1,"edge_workspaces":true,"edge_workspaces_edge_supported":true,"encryption_bootstrap_token_per_account_migration_done":true,"extensions":true,"extensions_edge_supported":true,"has_been_enabled":true,"has_setup_completed":true,"history_edge_supported":true,"keep_everything_synced":true,"keystore_encryption_key_state":"eyJkb3dubG9hZF9rZXlfcmVzdWx0Ijp0cnVlLCJleHBpcmF0aW9uX3RpbWUiOjE3ODY1NzAzMTIuOTA5NTc4LCJodHRwX3Jlc3BvbnNlX2NvZGUiOjIwMCwia2V5X2NvdW50IjoxMCwia2V5X3ZhbGlkYXRpb25fdGltZSI6MTc4NjM5NDMzMi43NjI5NjYsIm5ldF9lcnJvcl9jb2RlIjoxLCJwcm9jZXNzX2tleV9yZXN1bHQiOjAsInNldF9rZXlfcmVzdWx0Ijp0cnVlfQ==","local_data_out_of_sync":false,"local_device_guids_with_timestamp":[{"cache_guid":"jQwYyov4pNaEs6j8pJQfZQ==","timestamp":155450}],"passwords":true,"preferences":true,"tabs":true,"tabs_edge_supported":true,"transport_data_per_account":{"Of46XuGouE9WBpYyPI8qwz4Z0YNqRIr8/69wXz72wvQ=":{"sync.bag_of_chips":"","sync.birthday":"ProductionEnvironmentDefinition","sync.cache_guid":"jQwYyov4pNaEs6j8pJQfZQ==","sync.last_poll_time":"13430957514619143","sync.last_synced_time":"13430957572641315","sync.short_poll_interval":"28800000000"}},"typed_urls":true},"sync_consent_recorded":true,"sync_profile_info":{"edge_san_consent_last_modified_date":"13374879897480209","edge_san_consent_last_shown_date":"13374879897480209","edge_san_is_option_explicitly_selectedby_user":false},"syncing_theme_prefs_migrated_to_non_syncing":true,"tab_groups":[],"tab_groups_migration_version":3,"third_party_search":{"consented":false},"toolbar":{"pinned_cast_migration_complete":true,"pinned_chrome_labs_migration_complete":true},"toolbar_declutter":{"new_user_cleanup_triggered":true,"undo":{"last_time":"13430050669200392"}},"total_passwords_available_for_account":0,"total_passwords_available_for_profile":78,"translate_blocked_languages":["de","en"],"typosquatting":{"allowlist_migration_done":true},"updateclientdata":{"apps":{"cgjgjfacjflmgphhhepmbhhbgjieaecn":{"cohort":"rrf@0.32","dlrc":7161,"installdate":7161,"pf":"93369fe0-f407-48b8-a08c-8f0749cd833a"},"kfbdpdaobnofkbopebjglnaadopfikhh":{"cohort":"rrf@0.22","dlrc":7161,"installdate":7161,"pf":"bfcf1576-4b3d-468f-861f-66011972cff6"}}},"user_experience_metrics":{"personalization_data_consent_enabled":false,"personalization_data_consent_enabled_last_known_value":false},"visual_search":{"dma_state":1},"web_app_install_metrics":{"agimnkijcaahngcdmfeangaknmldooml":{"install_source":16,"install_timestamp":"13430050663168609"},"cinhimbnkkaeohfgghhklpknlkffjgod":{"install_source":16,"install_timestamp":"13430050662906697"},"hjlhbeffadgkonmpnblkfmhckmocohah":{"install_source":16,"install_timestamp":"13430050662652146"},"npblienfghmjcclodnjeoadehgpjipjh":{"install_source":16,"install_timestamp":"13430050662765381"}},"web_apps":{"daily_metrics":{"https://finance.yahoo.com/":{"background_duration_sec":0,"browser_app_background_duration_sec":0,"browser_app_foreground_duration_sec":0,"captures_links":false,"effective_display_mode":3,"foreground_duration_sec":0,"installed":false,"num_sessions":0,"promotable":true,"store_app_background_duration_sec":0,"store_app_foreground_duration_sec":0}},"daily_metrics_date":"13430786400000000","did_migrate_default_chrome_apps":["MigrateDefaultChromeAppToWebAppsGSuite","MigrateDefaultChromeAppToWebAppsNonGSuite"],"last_preinstall_synchronize_version":"151","link_handling_info":{"enabled_for_installed_apps":true}},"zerosuggest":{"cachedresults":"[\"\",[\"Alemannia Aachen\",\"bvb news\",\"lottozahlen samstag\",\"sonnenfinsternis 2026\",\"MSV Duisburg\",\"tatort heute\",\"motogp live\",\"VfB Stuttgart\"],[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[],{\"google:clientdata\":{\"bcp\":false,\"phi\":0,\"tlw\":false},\"google:suggestdetail\":[{\"t\":\"Alemannia Aachen\",\"a\":\"Deutscher Sportverein\",\"i\":\"https://th.bing.com/th/id/OSK.a_EUhypJbGQR_E_fXNF04nyJjqSh_MmAQANWpVK6Hw0?w=120\\u0026h=120\\u0026c=12\\u0026p=0\\u0026pid=RS\",\"q\":\"asbe=PN\\u0026qs=MB\\u0026sc=8-0\\u0026asbe=PN\\u0026filters=ufn%3a%22Alemannia+Aachen%22+sid%3a%22fbcf702b-648e-abec-5687-2ac52cbf197d%22\"},{\"q\":\"qs=PN\\u0026sk=PN1\\u0026sc=8-0\"},{\"q\":\"qs=PN\\u0026sk=PN2\\u0026sc=8-0\"},{\"q\":\"qs=PN\\u0026sk=PN3\\u0026sc=8-0\"},{\"t\":\"MSV Duisburg\",\"a\":\"Deutscher Fußballverein\",\"i\":\"https://th.bing.com/th/id/OSK.6e2200e186708ac4e68d75e7d0d7cbbf?w=120\\u0026h=120\\u0026c=12\\u0026p=0\\u0026pid=RS\",\"q\":\"asbe=PN\\u0026qs=MB\\u0026sk=PN4\\u0026sc=8-0\\u0026asbe=PN\\u0026filters=ufn%3a%22MSV+Duisburg%22+sid%3a%2231c93a7b-e001-e4cc-5136-a595ea349b0d%22\"},{\"q\":\"qs=PN\\u0026sk=PN5\\u0026sc=8-0\"},{\"q\":\"qs=PN\\u0026sk=PN6\\u0026sc=8-0\"},{\"t\":\"VfB Stuttgart\",\"a\":\"Deutscher Fußballverein\",\"i\":\"https://th.bing.com/th/id/OSK.bfef6c915d221e18fbe7a2c745cc6f9e?w=120\\u0026h=120\\u0026c=6\\u0026p=0\\u0026pid=RS\",\"q\":\"asbe=PN\\u0026qs=MB\\u0026sk=PN7\\u0026sc=8-0\\u0026asbe=PN\\u0026filters=ufn%3a%22VfB+Stuttgart%22+sid%3a%22ba3f4797-eadd-cce7-c151-22a85b9f0f51%22\"}],\"google:suggestrelevance\":[99,99,99,99,99,99,99,99],\"google:suggestsubtypes\":[[143],[143],[143],[143],[143],[143],[143],[143]],\"google:suggesttype\":[\"ENTITY\",\"TRENDING_NOW\",\"TRENDING_NOW\",\"TRENDING_NOW\",\"ENTITY\",\"TRENDING_NOW\",\"TRENDING_NOW\",\"ENTITY\"],\"google:verbatimrelevance\":799}]"}} \ No newline at end of file diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Secure Preferences b/FinlyticApp/.dart_tool/chrome-device/Default/Secure Preferences index c8312e8..8e13570 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Secure Preferences +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Secure Preferences @@ -1 +1 @@ -{"edge":{"services":{"account_id":"0859b554192dfb34","last_username":"larshatzky@outlook.com"}},"edge_fundamentals_appdefaults":{"enclave_version":101},"ess_kv_states":{"restore_on_startup":{"closed_notification":false,"decrypt_success":false,"key":"restore_on_startup","notification_popup_count":0},"startup_urls":{"closed_notification":false,"decrypt_success":false,"key":"startup_urls","notification_popup_count":0},"template_url_data":{"closed_notification":false,"decrypt_success":true,"key":"template_url_data","notification_popup_count":0}},"extensions":{"settings":{"adgpaedigldkggglmagcgklkomgfkepc":{"lastpingday":"13430361598430667"},"cgjgjfacjflmgphhhepmbhhbgjieaecn":{"account_extension_type":0,"ack_external":true,"active_permissions":{"api":["devtools"],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":8193,"disable_reasons":[],"edge_last_update_check_time":"13430431982306209","events":[],"first_install_time":"13430431982303257","from_webstore":false,"granted_permissions":{"api":["devtools"],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13430431982303257","lastpingday":"13430361597973528","location":10,"manifest":{"description":"Provides Named Function Ranges from typescript's compiler to augment sourcemap scopes information","devtools_page":"DevToolsPlugin.html","key":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiMfSIPlj0PRSUeFx85BNsj/QeZ3AhvP4ScF9UxY8S+OWRyP7RcqU0e5E2okxSBD4r+L0MerEVIaUPyuMCfY4gn+Cc0CPCw/EtG/17Z0Sx9PgiM71CgWa07TYXZQXQW+K32FWf5v35prF2m75SNOUG2b4J3HMf1YkCWhEi2URHmNKIIJjrABdm5mBUzLAMM5ZKAAK9voekfq4YETl58ClarnTjM7pKBw2NvrSSuZCj5llCQoZcdfUAkOBtHyXqhmjEiVVeO2du1jDlPuVPs3YqCM99Q+kTASfUfLSV3vosx1lonpghMj9CPcOxpQrI8ybqPY24b5sv4ULigpaZL6RLwIDAQAB","manifest_version":3,"name":"Microsoft Edge Unminification Extension","update_url":"https://edge.microsoft.com/extensionwebstorebase/v1/crx","version":"135.0.3176.0"},"path":"cgjgjfacjflmgphhhepmbhhbgjieaecn\\135.0.3176.0_0","preferences":{},"regular_only_preferences":{},"was_installed_by_default":false,"was_installed_by_oem":false},"cjneempfhkonkkbcmnfdibgobmhbagaj":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"dgiklkfkllikcanfonkcabmbdfmgleag":{"events":[]},"ehlmnljdoejdahfjdfobmpfancoibmig":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"fancfknaplihpclbhbpclnmmjcjanbaf":{"disable_reasons":[1],"lastpingday":"13430361598430667"},"fikbjbembnmfhppjfnmfkahdhfohhjmg":{"events":[]},"fjngpfnaikknjdhkckmncgicobbkcnle":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"fphgeikpdcdcheaochkhldmnfblfogla":{"lastpingday":"13430361598430667"},"gbihlnbpmfkodghomcinpblknjhneknc":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"gbmoeijgfngecijpcnbooedokgafmmji":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"gcinnojdebelpnodghnoicmcdmamjoch":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"gecfnmoodchdkebjjffmdcmeghkflpib":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"gmgoamodcdcjnbaobigkjelfplakmdhh":{"disable_reasons":[1],"lastpingday":"13430361598430667"},"hfmgbegjielnmfghmoohgmplnpeehike":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"iglcjdemknebjbklcgkfaebgojjphkec":{"events":[]},"ihmafllikibpmigkcoadcmckbfhibefp":{"events":["edgeFeedbackPrivate.onFeedbackRequested"],"running":false},"ilonanfdcnaljoedndpfeflllibalflj":{"lastpingday":"13430361598430667"},"jbleckejnaboogigodiafflhkajdmpcl":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"jbllkioefpagebehjdpafimenmfochkd":{"lastpingday":"13430361598430667"},"jdiccldimpdaibmpdkjnbmckianbfold":{"events":["ttsEngine.onPause","ttsEngine.onResume","ttsEngine.onSpeak","ttsEngine.onStop"]},"kfbdpdaobnofkbopebjglnaadopfikhh":{"account_extension_type":0,"ack_external":true,"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":8193,"disable_reasons":[],"edge_last_update_check_time":"13430431982341245","events":[],"first_install_time":"13430431982340246","from_webstore":false,"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13430431982340246","lastpingday":"13430361597973528","location":10,"manifest":{"description":"Microsoft Edge DevTools Enhancements","key":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxx2oBf3foCCxdn8gQWEGh6HQhGfz+kbpzYJSgAiMy8T6NFVYRfECBK/oZad9hKR317bgpyQlAeaueDu7K2f1NtRKVKA/RCiYUcDp9hyaDmoXn0+ayis97+1Rvl13IGToAqxehQ9T8ZNz4B1uRegJpNHpKA9LCW4uUh6iTC0hMKKTfEXMUVZQ6uQEeXRb+YpB7ZlesFcEZvnbbs2yj4BvjOXWaaxxWTJE0f3hu2dAPgQ4YMp3wluI7eKH475okTdJsdSR4yfcMwx9UHLqp6tUTENAUrb724HWF5yZ+sqAixHJ+TqNxWjGA6L+8zR1kww+OyT7Irh+9400VuQwLtLaswIDAQAB","manifest_version":3,"name":"Microsoft Edge DevTools Enhancements","update_url":"https://edge.microsoft.com/extensionwebstorebase/v1/crx","version":"113.0.1765.0"},"path":"kfbdpdaobnofkbopebjglnaadopfikhh\\113.0.1765.0_0","preferences":{},"regular_only_preferences":{},"was_installed_by_default":false,"was_installed_by_oem":false},"kfihiegbjaloebkmglnjnljoljgkkchm":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"mhjfbmdgcfjbbpaeojofohoefgiehjai":{"events":[]},"ncbjelpjchkpbikbpkcchkhkblodoama":{"events":[]},"ndcpkimcihhghdcddljkfmmjccdmcmof":{"serviceworkerevents":[]},"nkbndigcebkoaejohleckhekfmcecfja":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"nkeimhogjdpnpccoofpliimaahmaaome":{"events":["runtime.onConnectExternal"]},"odfafepnkmbhccpbejgmiehpchacaeak":{"disable_reasons":[1],"lastpingday":"13430361598430667"},"ofefcgjbeghpigppfmkologfjadafddi":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true}}},"google":{"services":{"last_signed_in_username":"larshatzky@outlook.com"}},"homepage_is_newtabpage":false,"prefs":{"preference_reset_time":"13430431862246482"},"protection":{"macs":{"browser":{"show_home_button":"38C8EE4BC16623F359A764833127314C612E0478A8729FD51C1197FA1FED2C5A","show_home_button_encrypted_hash":"djEw72NmQ0PP3DfalNYMW6V2WtT4uAtIWavBKRY4cGhF5KJhvspYNs3BYMrQQMsNihZ1TdQ5BZfxpRj978jg"},"default_search_provider_data":{"template_url_data":"28C2EFD237A7FD6BF60DF4A983C6B7A0D4D65366D22D5CCC75F94FF670E1E7C6","template_url_data_encrypted_hash":"djEwM/enhwn8Xn1Shcux4ygMu9wu9fHdbe6xaSxiJmhLptejwllSl8fqDI3WHpAXjslRVWQqZAXGMXB3jRC7"},"edge":{"services":{"account_id":"B16BDB59BEDA668788FE998733A56B0374F918999B3B59741F16E02723209483","account_id_encrypted_hash":"djEwpl0KpjPG65+suUEeZ0fCzOLF/el5LpWZ4+wbR+WnoHTzDZnDJtNRn45hytYX5wMzyUyobBj8jf4wqDgb","last_username":"4B288F417E1882894AECBAC6C9F0781653C42529454F130FBD11674B81E6FF94","last_username_encrypted_hash":"djEwGOUA2c1Ofi7qG4CZvPzKvx1MQRs+8Ty0cRMLjbsxwPE9LE5zSNPU/RXzvOvOPgcDUJBUquLpi26tvS72"}},"enterprise_signin":{"policy_recovery_token":"ECEB38A73D67988B20733BE8878B975B3B18ECE038913267F6974D36B572D92A","policy_recovery_token_encrypted_hash":"djEwu6USjeQop0eL/vkHEk/Q+SF9EgmA+uA1WFWdS+ATjynvOpEt1a4HiDdbBLmwhNg+qaVUj+Voygn4RrXY"},"extensions":{"install":{"initiallist":"FD98B793A24B877F030AE711686736F133B69479DE7CAFBF5C3C49B773FCBEF5","initiallist_encrypted_hash":"djEwIjRsMDeJe978IkMx5ENUnVfZCAW8UD919wTVOpnwpFPs4ZTlkzzG/GDJ/HFTVfykkuW1cVm3iZHrjJl4","initialprovidername":"7C32FB2E58F64E3F4F9E2CD38D8480F0CC8657E509781BCC2C4820FE6CD1AE50","initialprovidername_encrypted_hash":"djEwkrtVpyDioquiaMHR59cAJVVgKGHI5+bV42o1zaZZswGpKeoCSlVCOdGpJXWHaheATlwbbbgYlzhdLyU5"},"settings":{"adgpaedigldkggglmagcgklkomgfkepc":"3FED0BF738F589DABB377ECF05D5CA3FF9B9F4CDF40797CC0962DBCD7E8807AD","cgjgjfacjflmgphhhepmbhhbgjieaecn":"0617391CFA6A714F87F1BC3948C0943A02512C53DCCBC9781EAB1E00189C6B5F","cjneempfhkonkkbcmnfdibgobmhbagaj":"1EC7C58D0C53161B0FA5C923DBB22013F9B1D3921790CDD94C5A4C552552F9B5","dgiklkfkllikcanfonkcabmbdfmgleag":"6970B23D50723171B83EA8B825313649982503D376123982AF625992A6D7CBDF","ehlmnljdoejdahfjdfobmpfancoibmig":"48C648C0FCFEF6D176C2FF86810D13513A8E48EF606C25ED3DB17698BA9906A3","fancfknaplihpclbhbpclnmmjcjanbaf":"1E95C2097890F952ED9BA123421CBF9F852F65D5FFC6236CBE46E4933BE876E0","fikbjbembnmfhppjfnmfkahdhfohhjmg":"01DA8ABAC7715F98D5C2068B356851826C0B70C2996FE2835682F775D19864DE","fjngpfnaikknjdhkckmncgicobbkcnle":"2D3075860981C9524A77387956A6A5EDB461A16AB5D7C73210F5DD01C73CE469","fphgeikpdcdcheaochkhldmnfblfogla":"2FD782778ED919729221E036447ADBAFACC40286DF220B6E313FD529B5969CC7","gbihlnbpmfkodghomcinpblknjhneknc":"502513EC12815056D6A997FD8E137BCA4755044CF54A7AE7CCB26466E1BAFB03","gbmoeijgfngecijpcnbooedokgafmmji":"3ABE927BCDDD369CE6A7F8A7746863E85ED7753409B2A362C0CD9ADA5CDCB0B6","gcinnojdebelpnodghnoicmcdmamjoch":"FF96C875A424646B267CD12283C9CCD26603745A725ECF74BD503D5075DF8423","gecfnmoodchdkebjjffmdcmeghkflpib":"BBD0CCA62B65ECD726DF18612B0BCFAFD43A4A873964898AF7C959EFDE14C064","gmgoamodcdcjnbaobigkjelfplakmdhh":"4319954183F288983E552D7FB82FCA9F62AAC8D9B0BF257F3A358A906A67D3C2","hfmgbegjielnmfghmoohgmplnpeehike":"D6421058E9B9B6EF69C6B6A52FD8A19DF55AADA36A36F847218491673BCEB0B8","iglcjdemknebjbklcgkfaebgojjphkec":"958ED60D92AADAA8A2B3097A40FA64D2CF735936FB31C606BE8BE2398289CA7F","ihmafllikibpmigkcoadcmckbfhibefp":"1127625C896C65B3917B80878AA7D895C564A4B7C0A33F220BB135DC1B16AF9B","ilonanfdcnaljoedndpfeflllibalflj":"32CF12C3ACB8A2E574650F8EBAE5E19B09BFE1EC3582AA202CE620FF0AE0C3AA","jbleckejnaboogigodiafflhkajdmpcl":"22FEAFDDB6E80DFD63044F63D8868E834B8031CCB6174BB1B5872BA3FEA48D15","jbllkioefpagebehjdpafimenmfochkd":"3C7A0025DC3A77C7F08257BDBC36FB2A888A0C088679AFEC9273C5ACE0C9CE0C","jdiccldimpdaibmpdkjnbmckianbfold":"1EB8A1AEB6A7695EF78227A0ECA998F487D5AE81E562D56C1348A6FB6EE43D42","kfbdpdaobnofkbopebjglnaadopfikhh":"F7B5D503662340EA802DF9810E00DF66F39E95A24E0FC2F70669CFE0CCA14AEB","kfihiegbjaloebkmglnjnljoljgkkchm":"C95A46BB8108092E32BD7D8690CC1B25302815DA2898E4F7A4A1769D56834D47","mhjfbmdgcfjbbpaeojofohoefgiehjai":"FBDEB8A2F7652647FDE660D6F7230B41A1448BF037F7DA950200D361EF93CC3D","ncbjelpjchkpbikbpkcchkhkblodoama":"83079E8297085443D18113F5545C26CDF1CF23D5B4C4E68046CB89A2F7BC6C0E","ndcpkimcihhghdcddljkfmmjccdmcmof":"DC03A56BA5F4BADA1C36323A3CD20933C520F16D02DAC8CE68D7FCB780AFEA2D","nkbndigcebkoaejohleckhekfmcecfja":"854DFE626418C7A096F24BBF6B4EAA1C5287CC05814E4EB0835DDD73318EA33C","nkeimhogjdpnpccoofpliimaahmaaome":"6A30B1864AAFDFC7C0447DEB885FFFE1220C57489C9493207188AAFEC1D50565","odfafepnkmbhccpbejgmiehpchacaeak":"089CACA851633B510A83F19C3313AE87FA28B271D01C825927ED3BD1F4CE5F66","ofefcgjbeghpigppfmkologfjadafddi":"B1CF1D76596D1ECBFB5166F516481BCD1719DBCE642EF352B861A3DBD226ED32"},"settings_encrypted_hash":{"adgpaedigldkggglmagcgklkomgfkepc":"djEwFht6zj529w+JheMF1kbGcV9Rh2MGw9EDlrPvR5wgVGDyhrNjG3o/rzGFgWUuGFj/avODdkwOd84Xbz7t","cgjgjfacjflmgphhhepmbhhbgjieaecn":"djEwKUh8PoqAyZ9phhffs/8nQZZWa+ySskouEl5IRFyk2YJpaznhJV4ADc+kzy1jp46jH0UNeDX4C+1MByRO","cjneempfhkonkkbcmnfdibgobmhbagaj":"djEw29cvlJgI28tsEB8lEXVtFi3uq1025rzROIkrTsteCyCOM/6tOFSu29DjNkqUSrv1AohhIITCVn6YGF7n","dgiklkfkllikcanfonkcabmbdfmgleag":"djEwOO/sXkAv9TjihYXQ+XZTTk/vkNlxLf/ax48Mctfl0OvOVGHPiAIkj+2+mrMZfEA4WEA9WkpEh6J6fTTG","ehlmnljdoejdahfjdfobmpfancoibmig":"djEwWGg/+erOJFA8hBD50RmB1IDwklhRducwYPIpImBoKD0RdjRvU9UfwjEf6dMmfFs0SGyzpYVD+2npqvMW","fancfknaplihpclbhbpclnmmjcjanbaf":"djEwwdDEvTDbQGAHw10qSQ8qe+8JjwSzNT2ipQzGrl1Xuae1ef1ACyYSwWdTvZm6thKZYebg2NdWVzaeTmCW","fikbjbembnmfhppjfnmfkahdhfohhjmg":"djEwxm44owGccNxC77mZjxLwp7wD29AW7aLHPi1kE+OZJMsXl3jzH9oklXGRjo6ONy+93ze3NkU1PRUh1A9c","fjngpfnaikknjdhkckmncgicobbkcnle":"djEw1ACDOb7n4R/1N33hUXFWV2gVy6DKuepsr1saiLhUCyorvrrphnMzPLR+BTOzhiYjGDyPuWaMmbr2T659","fphgeikpdcdcheaochkhldmnfblfogla":"djEwXz9PgoQA/u6hvrI1VMPGxpSTNJvQVmRcI+Q0hTk43t0J4a21UA7IidB9DNsIPlgS7mStgNgs4xobdfAf","gbihlnbpmfkodghomcinpblknjhneknc":"djEwFZUAnl9hlxjHkiizJIOH5AEXR4wyh3NBAIIeN2kpr2UgQQDHsNGbBhPnm6mlasxI2RJVeHO48B7hwAjq","gbmoeijgfngecijpcnbooedokgafmmji":"djEwQPNf5djgultK9CU8tz7Sxb+t7j1t3bRbbSFUrZWp52WdI2TFcLbu1FOs3bFtHXEFFI6Xp3G8YfDFksOa","gcinnojdebelpnodghnoicmcdmamjoch":"djEw0fEjQa0KRnXQ17kTUarlViIFaJ0S/vMi7Psd6xd9TH9/RwWgSljZ5jQTZO7k/jLCwfrnuFPD8pZGa1Y9","gecfnmoodchdkebjjffmdcmeghkflpib":"djEwVNAUI6t824exNbWUOIQTWU8sYudoMN+K8rExXwPJJ2uw5oYmu7JasIHAWWiUaD3k9hGJfNc0MOVCkTTF","gmgoamodcdcjnbaobigkjelfplakmdhh":"djEwQ911bYVdUyxwoztdRfRnR+tYqOyurtkefftRKqxyAIqfMa9DCETm35h/6dDkgvOnJTSA23/XcklC5JYB","hfmgbegjielnmfghmoohgmplnpeehike":"djEwTfvf0DJBVOOdu/qYBJv4zb30YCIdC7OcKj2TR1jWjqdT4SRtOXm/5m+hCCC0szwqadvumguhYfQXv3ln","iglcjdemknebjbklcgkfaebgojjphkec":"djEwJzK4sf3K+YN4Qwqj9fzY5QnMqBGzRqXZZl0vMqOAUABmom4PzwIaiSlXNRnUDwEgyp8qFeBdw4TH2evz","ihmafllikibpmigkcoadcmckbfhibefp":"djEwYCwXHa/7lDgUFLrLlh4h4sytgwQoOJBvi01W4/ombB+yqjgKAvLRfk3+vXnldtAVQWJYfP09SeVmuDl0","ilonanfdcnaljoedndpfeflllibalflj":"djEwzP35EFL7WpOzebKdB5EA2GzuJAnoAUiTpk299EHopjIH2/IeN/cU8mei9Jys+OUjJyO47XAf09q/cEcD","jbleckejnaboogigodiafflhkajdmpcl":"djEw3EFOPJbcNdtAWNr/euWIxqHYa4UkCbORc2BnSgkn8SpR+V9qObJFZ1F5L/fKHmlnI/9ym/z9s2ZmJb1u","jbllkioefpagebehjdpafimenmfochkd":"djEwpRnH24uzKjHI6PWwTjeZ9JmC3LxJd9LncVjlwC5AKcwA9y/ObL3A9Yp6xUra4dok6Ov4fbqldLYKUEEq","jdiccldimpdaibmpdkjnbmckianbfold":"djEwX0mlrGjryxepVTf4b2s/yK044hlw/cnRqzhxX5i+oXaiLrSX4nDvYLUI59k2X72r1k2HDtc1nJW1lizv","kfbdpdaobnofkbopebjglnaadopfikhh":"djEwRbsS9eWA7FoNJ225PybomO9AnE/co/zg4DUzexTaF2gFm7DPBmeRdYmZiGsphwfn5m850quLOMxLUajg","kfihiegbjaloebkmglnjnljoljgkkchm":"djEwDH0bKZDDwTfoMq9NvbH1Zmu3CDPetg9EJ1gCa2talLi5yXCwXF+FdVFwy9n0oFdFl6yGIhJdyrte0MtI","mhjfbmdgcfjbbpaeojofohoefgiehjai":"djEwOzQn5WEpmda2Px8ZlBDFqdHxJllJTo7QGHzGabrwQWwt8r8Ax/rzItwi3FhtEHQrKjC5EkA+qFboSRyt","ncbjelpjchkpbikbpkcchkhkblodoama":"djEwC5cAJhY/9Rd/w+u8yTPj2FcXsrDJEzMJ5GsItYFJqJ6+LZCBF0POt44RVh6aVgiElbyb+EFq2cJyx0Q7","ndcpkimcihhghdcddljkfmmjccdmcmof":"djEwQtkKf5n7dqdv6hV8L8O1LVdlKmsLJsdz+t0Bzv9LIXQxH77RE2bbEhSWp3PSBBBZFsRZKw/xX6TYE5pC","nkbndigcebkoaejohleckhekfmcecfja":"djEwaJ3YC8+zPEvxo9Ly7vdhTZamHANDmbjome2zoyvwOAdNqzND3su2/3+FJELJnBDoc0LsamRlch8sSOhy","nkeimhogjdpnpccoofpliimaahmaaome":"djEwZN7VqcYWULYA8c1cd1T9rXgim95IDSIuof37TukxuPIVgFmCz273Lrbrsc5I/YdiJB9vJwjiM3e61IVY","odfafepnkmbhccpbejgmiehpchacaeak":"djEwOV2vUbTPehrtAbdDLql4vGS8ZetYc8KJqS+/xWEEF5k9IWcNgvgS+zl6N6yQBn0ug7TuDrOnivcejoaI","ofefcgjbeghpigppfmkologfjadafddi":"djEwtqud1A3ddkx5fHTZku9+g8K3uIsw28RQV6bhxOnTipqTfJpW4K+sV2DTnB2pFD6mLtD9a4870XTDBSOV"},"ui":{"developer_mode":"A3F8A68B43B45C47E37E311AF37A4D3EADF62B8BFF8D0946544EC6EAB24671C3","developer_mode_encrypted_hash":"djEwBDoPbaafKSe1kwTwt7RBcrr5ODkt5QxZq6MxYwEViDxrJEmeTxoiHv4Hp9JOEVRu/G/N1yQaNX8bD+HM"}},"google":{"services":{"last_signed_in_username":"62BEB558DB548D49E04046BB4D764E7AFF65AF861ED00B45145EB8F6BA77F25E","last_signed_in_username_encrypted_hash":"djEweyztNmBSq1nakFku8+QARZFt2CSnWr9PojSjgGGQUqNCs2jWCxYt9qJNew1zvYa7v0vEsAErW6DHy9EA"}},"homepage":"0DB1DA4CBF9A9CEE16971FA8EAFF2BFA371D19D00F1EF88D78CAE7FB1D088883","homepage_encrypted_hash":"djEwwQi1OG21giR6dvachI0weStKK0NrxlcAfw4Q8+5dQyxa+HcESzU0iEkAFYCoL4kfJvONAan58zxdYaNt","homepage_is_newtabpage":"EDCB860DEA672047D14F286D66F2E5BA4FCC7B000F271C4D607A810522488948","homepage_is_newtabpage_encrypted_hash":"djEw4Txhe2mdJtP9uJNfnHa8M9boHlfFYT3g5MQuomuApYEzuzOD4I6yquPu0F2Enf5elNfpntYw4tCACfqj","media":{"cdm":{"origin_data":"085080276FB1328670C41640CC137AB0311EF2D610655B83A9AEBED6534F49DD","origin_data_encrypted_hash":"djEwwy8B6kDukXsTQMd17jj4jbtzLnfBoMr24e1V550qe6apB/wQYd38T8H7c8pGUcpScdV3qNz9WWrLVwri"},"storage_id_salt":"0FC4F2A391AE425AF29C70166FE73C835CF4F71C74E9DBC98AB9F61E5B4BF89D","storage_id_salt_encrypted_hash":"djEwT4Cf4rJsBAExr2MRXpDQZED3u6PRBkA+RuSwXy8Vm7pMMeiomn4WPD+5UZ3xvE+LXf9mjNIkbznX7IHb"},"pinned_tabs":"361A0887A60C1FF20712C698494926793783886AFCE81D495C7C1C1BA760BEC1","pinned_tabs_encrypted_hash":"djEwHST56MfXeNW/92OAu5P6PNFJGJ5bknmDRGbnFuH5ToAd+WH6DUIbtQyooJi4NdV0stftqJxUKlf3P3Vo","prefs":{"preference_reset_time":"C3355777CF3D3E81FEBA4F94990F054BC06627B1EAA0B35A950B62F2C7CB1607","preference_reset_time_encrypted_hash":"djEwsscFf4Pvw7kk8fhkxB5zTkrTIGMWAI6r1a0VhfYWIdw2P5a7ossj384ohQh8ixZCn21lVGXbG9dtqnhj"},"safebrowsing":{"incidents_sent":"DE18813B1DAF6450AECA2CFCFD5D049F17904B2CE26A0768989C67AA54ECDDC5","incidents_sent_encrypted_hash":"djEwJXpGp+gs1CxBVnFqcemQ+z67O2NmdvHOL3RxPE1qD1Rz3pc6LWgnT/5SMnVcks63Yb50r3pbLvpx9G35"},"schedule_to_flush_to_disk":"8181BFA0ECDFCA14CC2BCD6395CC2B05CE1E0C1A3A2091225FD7AD86BB05ABCB","schedule_to_flush_to_disk_encrypted_hash":"djEwd/qzKXDL1M/vhOImIIhFftWpol7ON+vj0g/sddT9S+a7IYR3fmk5nQh+LvGA5EW02vkFLuwfwBOpYYXa","search_provider_overrides":"AF77DB9F6AD126A58B46FEA93FA22908DF01DD182BF28545DBA0BB2E19563305","search_provider_overrides_encrypted_hash":"djEwLSEF/2Zyp3suOG/NNOJq7iX5wgJ+oQ7ex9y6XZwoUVJT9SULEwHmapUqSxr0DzTQDZiAvR5s5oMyeRCZ","session":{"restore_on_startup":"03961441AFC09EF270B4EFA6AC560B91C33A5412E5C18FA8E3784798E1FFAC37","restore_on_startup_encrypted_hash":"djEw7L8BFLhsM8AFPxBjuPaf4DLvtSwLj1MMwssQ33skXy0ROj8pU0EHGjwgmKSPYVsKreO9I/vu+lisonQX","startup_urls":"59AB28649C4B8C6A6C8695F983EC4D547B42BC5995411D8CC745AA6CA053DF0B","startup_urls_encrypted_hash":"djEwCwW62GFzLB9FCti018H6ZGUJN/hB5q36R9V5lD7PldTLmDcYoEjogYNAhoTnlcoeHQfhQ82WgiAtXhjy"}},"super_encrypted_hash":"djEwo8yNs6hlTpY2ZQZmuHNNCsTqlQCzpT+KRVNSmjhaXk3G363H5uN6Ds8HAQko7BgyzBGN4udXIRs0BPUD","super_mac":"3978F0BC741C5363451BA787FE8466008C43AC87FB505F6A7C8D2E60C2869B40"},"schedule_to_flush_to_disk":"13430431862245038","session":{"restore_on_startup":1,"restore_on_startup_edge_enclave":"E9000000010000000101000009000000CB231E568827D407B071AAB2DA6F9A926C89F04F4009BA7652F6B9AE2D7905D46205AC8DFC1446679A4E6A24B2C28CD80300000000000000F8A051C46271405EBBB8F49F69AC02740B7BD647EC8249A09EFDC59CD22498899DF5081D1C27A802AABC0ACC95D4E09A75B43D18AAE61183316B109C062070711106B773B40572F7D02A0CFF794B00E10E1331BBA27AB0619DB8187376744A5C407C7E1F251E4312B56F1161F9E856625A46FC4386A840E5BCAAC98F066A0A0265000000000000000200000000000000000000001000000005000000EE42E3AA25","restore_on_startup_edge_enclave_verify":"cc0b5ea5b5c316983188c7f64295ba35","startup_urls":["edge://welcome/","https://www.microsoft.com/de-de/edge/welcome?form=MA13FJ"],"startup_urls_edge_enclave":"36010000010000000101000009000000ED92EF93449F2AD4F183DC86614ADE88B1AA408E17442021400D8488F19DC234951C2DF22E3280C5A497D999E7E780010300000000000000F8A051C46271405EBBB8F49F69AC02740B7BD647EC8249A09EFDC59CD22498899DF5081D1C27A802AABC0ACC95D4E09A75B43D18AAE61183316B109C062070711106B773B40572F7D02A0CFF794B00E10E1331BBA27AB0619DB8187376744A5C407C7E1F251E4312B56F1161F9E856625A46FC4386A840E5BCAAC98F066A0A0265000000000000000200000000000000000000001000000052000000C39F8BB20078947596BB7FEA8FF2A379CFB74CD07CA6BA46486051947B708DA9367B0A6A7ACC095EA9DADEAEA8327ECB8498752E6E48A4258B1F1DA91737A39FBC67E28A1E8BC1B8347063D963D541223A99","startup_urls_edge_enclave_verify":"5904e7f60ba3e9b7a639570346f32154"}} \ No newline at end of file +{"edge_fundamentals_appdefaults":{"enclave_version":101},"ess_kv_states":{"restore_on_startup":{"closed_notification":false,"decrypt_success":false,"key":"restore_on_startup","notification_popup_count":0},"startup_urls":{"closed_notification":false,"decrypt_success":false,"key":"startup_urls","notification_popup_count":0},"template_url_data":{"closed_notification":false,"decrypt_success":true,"key":"template_url_data","notification_popup_count":0}},"extensions":{"settings":{"adgpaedigldkggglmagcgklkomgfkepc":{"lastpingday":"13430880000487533"},"cjneempfhkonkkbcmnfdibgobmhbagaj":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"dgiklkfkllikcanfonkcabmbdfmgleag":{"events":[]},"ehlmnljdoejdahfjdfobmpfancoibmig":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"fancfknaplihpclbhbpclnmmjcjanbaf":{"disable_reasons":[1],"lastpingday":"13430880000487533"},"fikbjbembnmfhppjfnmfkahdhfohhjmg":{"events":[]},"fjngpfnaikknjdhkckmncgicobbkcnle":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"fphgeikpdcdcheaochkhldmnfblfogla":{"lastpingday":"13430880000487533"},"gbihlnbpmfkodghomcinpblknjhneknc":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"gbmoeijgfngecijpcnbooedokgafmmji":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"gcinnojdebelpnodghnoicmcdmamjoch":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"gecfnmoodchdkebjjffmdcmeghkflpib":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"gmgoamodcdcjnbaobigkjelfplakmdhh":{"disable_reasons":[1],"lastpingday":"13430880000487533"},"hfmgbegjielnmfghmoohgmplnpeehike":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"iglcjdemknebjbklcgkfaebgojjphkec":{"events":[]},"ihmafllikibpmigkcoadcmckbfhibefp":{"events":["edgeFeedbackPrivate.onFeedbackRequested"],"running":false},"ilonanfdcnaljoedndpfeflllibalflj":{"lastpingday":"13430880000487533"},"jbleckejnaboogigodiafflhkajdmpcl":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"jbllkioefpagebehjdpafimenmfochkd":{"lastpingday":"13430880000487533"},"jdiccldimpdaibmpdkjnbmckianbfold":{"events":["ttsEngine.onPause","ttsEngine.onResume","ttsEngine.onSpeak","ttsEngine.onStop"]},"kfihiegbjaloebkmglnjnljoljgkkchm":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"mhjfbmdgcfjbbpaeojofohoefgiehjai":{"events":[]},"ncbjelpjchkpbikbpkcchkhkblodoama":{"events":[]},"ndcpkimcihhghdcddljkfmmjccdmcmof":{"has_started_service_worker":true,"service_worker_registration_info":{"version":"151.0.4129.58"},"serviceworkerevents":["copilotBridgePrivate.ciq.interactions.onSendPromptConfig","copilotBridgePrivate.notify.onNotification","copilotBridgePrivate.qvMessaging.onHandoffLiveModeConversation","copilotBridgePrivate.qvMessaging.onSendQuickViewPrompt","copilotBridgePrivate.qvMessaging.onUpdateAppMode","runtime.onConnectExternal"]},"nkbndigcebkoaejohleckhekfmcecfja":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true},"nkeimhogjdpnpccoofpliimaahmaaome":{"events":["runtime.onConnectExternal"]},"odfafepnkmbhccpbejgmiehpchacaeak":{"disable_reasons":[1],"lastpingday":"13430880000487533"},"ofefcgjbeghpigppfmkologfjadafddi":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"granted_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"needs_sync":true}}},"homepage_is_newtabpage":false,"prefs":{"preference_reset_time":"13430957505992466"},"protection":{"macs":{"browser":{"show_home_button":"38C8EE4BC16623F359A764833127314C612E0478A8729FD51C1197FA1FED2C5A","show_home_button_encrypted_hash":"djEwhM8+4im6IUD+Tt77aPRXsLRLmzaHsc8CgiP3VCWctDcbOF0Io6jSGqPovOjkdjYS/SHTZ3wgHnqBN5Co"},"default_search_provider_data":{"template_url_data":"28C2EFD237A7FD6BF60DF4A983C6B7A0D4D65366D22D5CCC75F94FF670E1E7C6","template_url_data_encrypted_hash":"djEwOC0jmxy2IQmWAv4v/fWUFq5vMIrRTP//xNMJi16zaylGZ9kHKblUAYNht+xLn4Sg237Zsat1f2xlgCH1"},"edge":{"services":{"account_id":"415EF47C7D59AE733535859E9C7B1015A4499B47A33C6053DF8DE16ADEF0930C","account_id_encrypted_hash":"djEwAOsSTr+dzOBt7UzekOAYVsi/MwM9jHupUvYsynTxAyNS34Mb9YXfnVlb7iST5nIw9gzuOfZ9wd6kpEPY","last_username":"1EBDDBC99F375193C730B8D2591AA69A68BB634F4C7CDA3988B3F0991A10B833","last_username_encrypted_hash":"djEwEm2HLQY04idzcbT0vAuIcjG8t+doCcoCemTbM4MTW7T0yOl4E4W2nXiTi3ZJFRsUqzJrBDP9/Jc6HRJF"}},"enterprise_signin":{"policy_recovery_token":"ECEB38A73D67988B20733BE8878B975B3B18ECE038913267F6974D36B572D92A","policy_recovery_token_encrypted_hash":"djEw24Fsuh+QS5n5Mpb+dopkB8tCmDiW0Np5B0DDKDlqcTFQS2jUboGpMVTKIPuxQLv8m6pj9mvSPF8Nyvs5"},"extensions":{"install":{"initiallist":"FD98B793A24B877F030AE711686736F133B69479DE7CAFBF5C3C49B773FCBEF5","initiallist_encrypted_hash":"djEwkMgyVRuygpMp+RhB0MdB2eOrhnOsciTlHu815UZSf663oVSyWxjoH1LzmC12tl8GykW+S5QdXFNNGco8","initialprovidername":"7C32FB2E58F64E3F4F9E2CD38D8480F0CC8657E509781BCC2C4820FE6CD1AE50","initialprovidername_encrypted_hash":"djEwWAslcLKO4RCWV5FDQtJ4rU21/tgV0H9qaqxkDb2kxpgLa98tejR1BsVASJKaK0TEHbWC5fZDh8B6xVnB"},"settings":{"adgpaedigldkggglmagcgklkomgfkepc":"763327449D0607ECF2BD7CAE26F30E688C9B0BFF5EE2C5F4156C2EE57C6FD145","cjneempfhkonkkbcmnfdibgobmhbagaj":"1EC7C58D0C53161B0FA5C923DBB22013F9B1D3921790CDD94C5A4C552552F9B5","dgiklkfkllikcanfonkcabmbdfmgleag":"6970B23D50723171B83EA8B825313649982503D376123982AF625992A6D7CBDF","ehlmnljdoejdahfjdfobmpfancoibmig":"48C648C0FCFEF6D176C2FF86810D13513A8E48EF606C25ED3DB17698BA9906A3","fancfknaplihpclbhbpclnmmjcjanbaf":"66D04C7BFA5579F3988BA3626F93A64BBD88FE312C2F00A58A6256F621FF8B78","fikbjbembnmfhppjfnmfkahdhfohhjmg":"01DA8ABAC7715F98D5C2068B356851826C0B70C2996FE2835682F775D19864DE","fjngpfnaikknjdhkckmncgicobbkcnle":"2D3075860981C9524A77387956A6A5EDB461A16AB5D7C73210F5DD01C73CE469","fphgeikpdcdcheaochkhldmnfblfogla":"475C67924D167C92165636D09F7B806A2AF89845263A778E4629DF09FB4842A2","gbihlnbpmfkodghomcinpblknjhneknc":"502513EC12815056D6A997FD8E137BCA4755044CF54A7AE7CCB26466E1BAFB03","gbmoeijgfngecijpcnbooedokgafmmji":"3ABE927BCDDD369CE6A7F8A7746863E85ED7753409B2A362C0CD9ADA5CDCB0B6","gcinnojdebelpnodghnoicmcdmamjoch":"FF96C875A424646B267CD12283C9CCD26603745A725ECF74BD503D5075DF8423","gecfnmoodchdkebjjffmdcmeghkflpib":"BBD0CCA62B65ECD726DF18612B0BCFAFD43A4A873964898AF7C959EFDE14C064","gmgoamodcdcjnbaobigkjelfplakmdhh":"17B3BB134E9E5433A42A3EA176C73247A7F8881CD682B77F36014E88A30969DC","hfmgbegjielnmfghmoohgmplnpeehike":"D6421058E9B9B6EF69C6B6A52FD8A19DF55AADA36A36F847218491673BCEB0B8","iglcjdemknebjbklcgkfaebgojjphkec":"958ED60D92AADAA8A2B3097A40FA64D2CF735936FB31C606BE8BE2398289CA7F","ihmafllikibpmigkcoadcmckbfhibefp":"1127625C896C65B3917B80878AA7D895C564A4B7C0A33F220BB135DC1B16AF9B","ilonanfdcnaljoedndpfeflllibalflj":"BC312823036830814E87E92D4BA60FD7F656975823847451C99310BFD0F94EC0","jbleckejnaboogigodiafflhkajdmpcl":"22FEAFDDB6E80DFD63044F63D8868E834B8031CCB6174BB1B5872BA3FEA48D15","jbllkioefpagebehjdpafimenmfochkd":"C07F3328A68C381C14B11DF4CCF6C76DB3789AF73E7AC1F303EC26429D58E035","jdiccldimpdaibmpdkjnbmckianbfold":"1EB8A1AEB6A7695EF78227A0ECA998F487D5AE81E562D56C1348A6FB6EE43D42","kfihiegbjaloebkmglnjnljoljgkkchm":"C95A46BB8108092E32BD7D8690CC1B25302815DA2898E4F7A4A1769D56834D47","mhjfbmdgcfjbbpaeojofohoefgiehjai":"FBDEB8A2F7652647FDE660D6F7230B41A1448BF037F7DA950200D361EF93CC3D","ncbjelpjchkpbikbpkcchkhkblodoama":"83079E8297085443D18113F5545C26CDF1CF23D5B4C4E68046CB89A2F7BC6C0E","ndcpkimcihhghdcddljkfmmjccdmcmof":"A597C3D4A72D0975C850B5E38410272486132CE880E18EECFF421EE6C31AC0FA","nkbndigcebkoaejohleckhekfmcecfja":"854DFE626418C7A096F24BBF6B4EAA1C5287CC05814E4EB0835DDD73318EA33C","nkeimhogjdpnpccoofpliimaahmaaome":"6A30B1864AAFDFC7C0447DEB885FFFE1220C57489C9493207188AAFEC1D50565","odfafepnkmbhccpbejgmiehpchacaeak":"B047832AC8C0B2BCC02A573A0A0DB5E6D6EA05633016B7B0CDC789ABAE3B51CE","ofefcgjbeghpigppfmkologfjadafddi":"B1CF1D76596D1ECBFB5166F516481BCD1719DBCE642EF352B861A3DBD226ED32"},"settings_encrypted_hash":{"adgpaedigldkggglmagcgklkomgfkepc":"djEw6Gzb7hlxloIJl+sPEnfO1f+680s7tCSmrQCPz66EqMnMs7QS7GVr/F6HWIf/zrZI1vaCRpr8kqVS5FYa","cjneempfhkonkkbcmnfdibgobmhbagaj":"djEwjZSTQST50NPZWHjtG7kECkLXqWCxgCdQrydRPo55OSgzXL8K31wn2y6F54oTPD/sOm/cxWk+FYopwkVS","dgiklkfkllikcanfonkcabmbdfmgleag":"djEwqgp+UO6GWJaTe4KYIXxYow3vW2vlGOn7NJUKy0bqIduDd9zJvBdJjVa92uTZSCoEwBvoaBVfoioU6c87","ehlmnljdoejdahfjdfobmpfancoibmig":"djEw01xr/HUc5+ST/vF1/qCD1nQYyRLB8+GwGhv/nAPSy4Ejyw4qqqrcS7B3a3xZxNKA+HZ4Ieno3lqfdyzA","fancfknaplihpclbhbpclnmmjcjanbaf":"djEwJ821Yl2YpgK3vsbrmzyaqwn5RsPiandEeH0cnSQxfT4FEKGOZnXmT2S/8cvEU5B7rI+Eo6CEca9B/NRN","fikbjbembnmfhppjfnmfkahdhfohhjmg":"djEw2I616SKR7W3Lk2QGKy9G+qszD3PTcnVp7fzW9LHdwCEIEO/VEEdVYI0nHfDyaclrsuEOv03/u1xUN22A","fjngpfnaikknjdhkckmncgicobbkcnle":"djEwTFL9ytV5jGKKbhXrlavBaLhxQLcWkb1nYoa6SSvLckwv9bUNXnc2VRYFIggqqzd57gdXQJmJo7ra/eAR","fphgeikpdcdcheaochkhldmnfblfogla":"djEwRF1W7VAv0UEi4CvjaZwwXWyfLYyZl9DY2xUeOIeLav5W+iKc2TUxyi0cHm28ozoiEIrHyK+CeHrTgxQe","gbihlnbpmfkodghomcinpblknjhneknc":"djEwqo7A2gcbWPSbtiEGjeVMVI6B7e+mXA5LbCtOlHjhz7ram9hD8JAFWCZJtolrUsJ2E8Za+eK8jZG84ulH","gbmoeijgfngecijpcnbooedokgafmmji":"djEwFM/wnT2vuw1FfNHQ2rHiWKSJgZB41In575D0s5VhJyeMQkpU1FY+pHR6hc8LZPemsNfZmJgrhlVeQNKl","gcinnojdebelpnodghnoicmcdmamjoch":"djEwy32NTxnUSn1WFE7TCj2FzKaeMNQ497CXVUI/6eXUYZ9t0CwG3MZJYBNjXal5OoUiuSUIVcYaZ3awa7ni","gecfnmoodchdkebjjffmdcmeghkflpib":"djEw3ulL/01ad2BN/ySOWqwb1aaj5Lcx0n6n/yEl9vlxHNmv7jrVER4KyI9H8uWuMk7Ou9wGyC2RA6ihJKlM","gmgoamodcdcjnbaobigkjelfplakmdhh":"djEwbuD2zHPOR/J9L9hCIG+KsrtKWMFarhAKOoq523r9E0IBnBVRhnfutBZdVXJQ2lUNnb/Octmc2BjBlyF3","hfmgbegjielnmfghmoohgmplnpeehike":"djEwv4WItG/rlMFapJsFQCqIRPOZyPFNMJ6HKY6/3r+kS93GmcAVJXvRUpyLHKu+bHH7Qg8ZuRHWLNAzl1l8","iglcjdemknebjbklcgkfaebgojjphkec":"djEwI2RdfAeMDPPhr1fv0yiM8nh8eu7Pzz4KQm7O2ngNDUis4doQTmfZ0P/STB1HeiyS2TQwvOQAZTRqtPnm","ihmafllikibpmigkcoadcmckbfhibefp":"djEwPIYuQLW3Hb+Hda9IxZRkYUFmdkyITRZPurcfZQhskGjnkxBvbC+myvFsioH0onaEjbZACkzAQlUqGPAP","ilonanfdcnaljoedndpfeflllibalflj":"djEwNo6Qqwu/Kzjqs3xQbmYO8qfVc8eUmzWGyQ1oJ/ZeP1jBBna0k4233bRbPzYfczRFe7Ir5n/lJ1RPbJ1E","jbleckejnaboogigodiafflhkajdmpcl":"djEwq7ebTDD36x61KbtIyN/SG1h2wiTZ0opPj75hZhZicoTdK656EO7kvq2fuoIMGAZ6QHHK1OF+rPApyHYh","jbllkioefpagebehjdpafimenmfochkd":"djEw9RYmNlHptnrwHb5t9/ZoCd4No+z5yn6HKvA5ZqlTpSpdyxDwwudYgFN/Bgdh9TFwXNWXKkR1OqQHFCHX","jdiccldimpdaibmpdkjnbmckianbfold":"djEwccjek3zCXnwqfVW50Cqfg+9O86f9j8KuEPuLZfiRWTfDsWCYyg86bFYHyZY0W+YC7Ve60z4jRsrA+TUM","kfihiegbjaloebkmglnjnljoljgkkchm":"djEw2FV2ZG7rFvztOMOr2CBxs2sRaF5rijcUuEQVYP+ACwbSt05CctP/nmzSk13I/xQ1s49sL4X3tVJdCBzD","mhjfbmdgcfjbbpaeojofohoefgiehjai":"djEw8qIv/vu9Gwa+CnWmeqClsMzwSrJhm8Hc+42xLy+LYrV3baAaVbFZsqm1LUh7971EANo5GbsuUY+YeKSx","ncbjelpjchkpbikbpkcchkhkblodoama":"djEw9z8ndeaA+dIexVWn7i36b0fKb1I6JHdWErYC+Cc+nUxTBbGbHtsa4u96rwn1H1FpIqF2j95Vw88ATgk9","ndcpkimcihhghdcddljkfmmjccdmcmof":"djEwAnkfrnAOGWUSYtL5zP7/ChoUNDcsXsl1wa8rRuhEYmI6wiPIdt8vSOM1UxkOVlp/bTjfsxCQmhoirc9x","nkbndigcebkoaejohleckhekfmcecfja":"djEwBe3xeYqIw22pPiJi1ONCCconDjNE/UiWqV845fpjGKwrGbcMbI/U4OfF7u4N/xFYM4z/N7mvBQv7pmcC","nkeimhogjdpnpccoofpliimaahmaaome":"djEw0zdvCENJuDV7vuk8fv3TShuN0mjatTRP4QL5p7UBcITe49GwHs6o6XBdM2PRoysq4s47crg+U3X2HeVh","odfafepnkmbhccpbejgmiehpchacaeak":"djEw3qZyKwWFpKjFMp2ofOXP9hwkbNGrsrrBQGV5X3RvkiAe3ktjXrwDNrEnar1i1JOJPANG6DbyMP/tsZKE","ofefcgjbeghpigppfmkologfjadafddi":"djEwdgrkqGhXkcrkDLLVEptuok1AXOBGc+jx2E1gdAJjBMKNm4CaOhCCfqixWShIwv5kHflPVXrmOJR0NuaF"},"ui":{"developer_mode":"A3F8A68B43B45C47E37E311AF37A4D3EADF62B8BFF8D0946544EC6EAB24671C3","developer_mode_encrypted_hash":"djEwdVCnlXzky8GQGshkai11EF6zK3IiPa93vALc90D+k6N4BZO+3RRvO4gJtYDhfiMB5OGSlaHDq9RM7Mb3"}},"google":{"services":{"last_signed_in_username":"F076D0B4062DD45116232F13B3ABDF72911D874026A79216F3B2F8D872BF930C","last_signed_in_username_encrypted_hash":"djEwrCeM3Fm2srezHYuNNtzbnpJrkOet464FM0EQ4iooeby7itKTLLmfnBajLsAMziAfcBJdhYAwfEPHjcXQ"}},"homepage":"0DB1DA4CBF9A9CEE16971FA8EAFF2BFA371D19D00F1EF88D78CAE7FB1D088883","homepage_encrypted_hash":"djEw05C7PYga6BKMBQ+9PdWCydVi85b+QBmr/KA5DXnuzGRpnvW9jzwmImkHbekuGYlF/P43mDPRN+Ko+eML","homepage_is_newtabpage":"EDCB860DEA672047D14F286D66F2E5BA4FCC7B000F271C4D607A810522488948","homepage_is_newtabpage_encrypted_hash":"djEwf3gTXKukuSesGpSqL20shfW7rUKjx6S1wEnM5t2FS00PcnAnaYO7AfhZP/4BTHysEYxpFhMQerfy95YC","media":{"cdm":{"origin_data":"085080276FB1328670C41640CC137AB0311EF2D610655B83A9AEBED6534F49DD","origin_data_encrypted_hash":"djEwHdY40sCeXz4c4As3+5FsY1UtkfqIyKgDPKkYMRnMC38n/ckPBiJ8eYkrDbCAASXJxPrYQbqtLfcKmukY"},"storage_id_salt":"0FC4F2A391AE425AF29C70166FE73C835CF4F71C74E9DBC98AB9F61E5B4BF89D","storage_id_salt_encrypted_hash":"djEwSZJgu9PEE2gEBaJpBVJoNNnz+MrJTuN7w1IFV7ujFaq+ONLVOrRpx5GI+70GJLDOdwAmsEmXp2kVPYUq"},"pinned_tabs":"361A0887A60C1FF20712C698494926793783886AFCE81D495C7C1C1BA760BEC1","pinned_tabs_encrypted_hash":"djEwxJZzSA5cBSK8AwXTsZf2tTQpFzmcOqNplMk6eUxnFwgPY9oH4aJHANHl/CxprDfK6I7DlHrjhbTeNqtd","prefs":{"preference_reset_time":"6F67E0941B4D649D456E8949810F9E965D9735FBFAACFADB9A5D1E00A3433782","preference_reset_time_encrypted_hash":"djEwP/Cn6CUCnK8J0jLt25S+aBZ43is+S9zeIQpdsDYvLyDVUFv4RdIRXEFnhTc7bckLkZDMmj9Y3uObgmRG"},"safebrowsing":{"incidents_sent":"DE18813B1DAF6450AECA2CFCFD5D049F17904B2CE26A0768989C67AA54ECDDC5","incidents_sent_encrypted_hash":"djEwjDXXWQrtXsNKdf4qteLsi8wyMRl/9HP96Zv4XzGZBekiBfcZKOh8yoQ3q4DwaV0su6zjHGABxOiEEGf4"},"schedule_to_flush_to_disk":"663F9E01C255AA26A9511152114B00D6DA1B60BAC3E1E6896C910EEEF6DC1065","schedule_to_flush_to_disk_encrypted_hash":"djEwJwuKxq3rXRkoAlIf6eie0B4bQemfKDdK6Gr16tG/wmKKGnr5gQORtKQ/Dhoo+8cip114eBOfIpPiQ8Pp","search_provider_overrides":"AF77DB9F6AD126A58B46FEA93FA22908DF01DD182BF28545DBA0BB2E19563305","search_provider_overrides_encrypted_hash":"djEwlQcu3QwwLA+fFemAckXr1rL5EGQ0Kcnl5AHIpupW3taojvsOVpSXYigYvYy7PgXErB32byNIzIl6+px7","session":{"restore_on_startup":"03961441AFC09EF270B4EFA6AC560B91C33A5412E5C18FA8E3784798E1FFAC37","restore_on_startup_encrypted_hash":"djEwNnfK8jD9VTSiBmPfZc9kpRBjzQvpVcwVPSWDbFpyN1U6ZENwMj46z5wWMEozJF7r527ylu5Ug4arKdkU","startup_urls":"59AB28649C4B8C6A6C8695F983EC4D547B42BC5995411D8CC745AA6CA053DF0B","startup_urls_encrypted_hash":"djEwcQ0mIuw6zz3zLIeM1U5X6T37U49I8/U3/VGLqoN2m1S6CYiZ/tRUlLU0bQNzt1zBIggzG6uMLSJu0IUm"}},"super_encrypted_hash":"djEwhbzVVzt5QzxwhUiHGe/hcAzqMIQM7/GUnajVbcY04gVqf7DtAIlEnogoCOvuDLvwrRLX52ZGT+kKlLK8","super_mac":"ABF7EFEB62ED5067C597784C799EC978CBCA7F61FC55BC04A6037E3B918F5EB6"},"session":{"restore_on_startup":1,"restore_on_startup_edge_enclave":"E9000000010000000101000009000000DE7C4CD9C3D1BD6CCD46CA6FCBFE305DB467092DE94FBA26A2AC8A63B991056D73BDA7459F958304594A14B96EE28B620300000000000000F8A051C46271405EBBB8F49F69AC02740B7BD647EC8249A09EFDC59CD22498899DF5081D1C27A802AABC0ACC95D4E09A75B43D18AAE61183316B109C062070711106B773B40572F7D02A0CFF794B00E10E1331BBA27AB0619DB8187376744A5C407C7E1F251E4312B56F1161F9E856625A46FC4386A840E5BCAAC98F066A0A02650000000000000002000000000000000000000010000000050000003097CA70A3","restore_on_startup_edge_enclave_verify":"34b6b4fec8837f1f63f8a75368948d9e","startup_urls":["edge://welcome/","https://www.microsoft.com/de-de/edge/welcome?form=MA13FJ"],"startup_urls_edge_enclave":"3601000001000000010100000900000047661CF412A081A864F0F20AB305021C8D7E9B82186CA7019C416297435C0EFC7049C28C5DB0F7AB6B9942B5C5AEB6500300000000000000F8A051C46271405EBBB8F49F69AC02740B7BD647EC8249A09EFDC59CD22498899DF5081D1C27A802AABC0ACC95D4E09A75B43D18AAE61183316B109C062070711106B773B40572F7D02A0CFF794B00E10E1331BBA27AB0619DB8187376744A5C407C7E1F251E4312B56F1161F9E856625A46FC4386A840E5BCAAC98F066A0A026500000000000000020000000000000000000000100000005200000060EBC48EE110340D4C6C53278E5E5183B155AB6C41A9DE412A2B765E638CF1F87691FB8A9850E9EA4E0F85F8B95C16FA9490D9B0B6F1D898A162BF7AFE3C895A63D523CB07F133E761ACB5BB625383C34DAD","startup_urls_edge_enclave_verify":"05af5f3c34c5ced90ac99f4b6a7705ff"}} \ No newline at end of file diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/000003.log index 3dff395..149ae61 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/LOG index 73ae901..2b61e47 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:02.056 6730 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Service Worker\Database/MANIFEST-000001 -2026/08/05-21:31:02.057 6730 Recovering log #3 -2026/08/05-21:31:02.057 6730 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Service Worker\Database/000003.log +2026/08/11-23:31:45.849 2868 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Service Worker\Database/MANIFEST-000001 +2026/08/11-23:31:45.850 2868 Recovering log #3 +2026/08/11-23:31:45.850 2868 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Service Worker\Database/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/LOG.old index 667cb6d..cacb544 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Service Worker/Database/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.131 39fc Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Service Worker\Database/MANIFEST-000001 -2026/08/04-22:51:52.132 39fc Recovering log #3 -2026/08/04-22:51:52.132 39fc Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Service Worker\Database/000003.log +2026/08/10-22:38:48.182 7af4 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Service Worker\Database/MANIFEST-000001 +2026/08/10-22:38:48.183 7af4 Recovering log #3 +2026/08/10-22:38:48.184 7af4 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Service Worker\Database/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/000003.log index ad6bcba..a122bdf 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/LOG index 717048f..ff19312 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/LOG @@ -1,3 +1,4 @@ -2026/08/05-21:31:02.144 470c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Session Storage/MANIFEST-000001 -2026/08/05-21:31:02.145 470c Recovering log #3 -2026/08/05-21:31:02.148 470c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Session Storage/000003.log +2026/08/11-23:31:45.917 7268 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Session Storage/MANIFEST-000001 +2026/08/11-23:31:45.918 7268 Recovering log #4 +2026/08/11-23:31:45.921 7268 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Session Storage/000004.log +2026/08/11-23:31:45.922 7268 Delete type=0 #3 diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/LOG.old index 22c0bcf..a56f7d1 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/LOG.old @@ -1,3 +1,6 @@ -2026/08/04-22:51:52.286 5c5c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Session Storage/MANIFEST-000001 -2026/08/04-22:51:52.287 5c5c Recovering log #3 -2026/08/04-22:51:52.290 5c5c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Session Storage/000003.log +2026/08/10-22:38:48.250 7268 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Session Storage/MANIFEST-000001 +2026/08/10-22:38:48.251 7268 Recovering log #3 +2026/08/10-22:38:48.253 7268 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Session Storage/000003.log +2026/08/10-23:36:23.148 190c Level-0 table #5: started +2026/08/10-23:36:23.157 190c Level-0 table #5: 21476 bytes OK +2026/08/10-23:36:23.164 190c Delete type=0 #3 diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/MANIFEST-000001 b/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/MANIFEST-000001 index 18e5cab..6928a92 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/MANIFEST-000001 and b/FinlyticApp/.dart_tool/chrome-device/Default/Session Storage/MANIFEST-000001 differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Shared Dictionary/cache/index-dir/the-real-index b/FinlyticApp/.dart_tool/chrome-device/Default/Shared Dictionary/cache/index-dir/the-real-index index edfdb5d..bd2b3ac 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Shared Dictionary/cache/index-dir/the-real-index and b/FinlyticApp/.dart_tool/chrome-device/Default/Shared Dictionary/cache/index-dir/the-real-index differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Shared Dictionary/db b/FinlyticApp/.dart_tool/chrome-device/Default/Shared Dictionary/db index b84ab02..e8a52e6 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Shared Dictionary/db and b/FinlyticApp/.dart_tool/chrome-device/Default/Shared Dictionary/db differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Shortcuts b/FinlyticApp/.dart_tool/chrome-device/Default/Shortcuts index 2d750c4..a839516 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Shortcuts and b/FinlyticApp/.dart_tool/chrome-device/Default/Shortcuts differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/000003.log index d1c7f79..2045dc2 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/LOG index a9bb841..7f77200 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:02.061 59e0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Site Characteristics Database/MANIFEST-000001 -2026/08/05-21:31:02.061 59e0 Recovering log #3 -2026/08/05-21:31:02.062 59e0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Site Characteristics Database/000003.log +2026/08/11-23:31:45.855 7250 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Site Characteristics Database/MANIFEST-000001 +2026/08/11-23:31:45.856 7250 Recovering log #3 +2026/08/11-23:31:45.856 7250 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Site Characteristics Database/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/LOG.old index 0335a34..5ccca89 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Site Characteristics Database/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.132 3f14 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Site Characteristics Database/MANIFEST-000001 -2026/08/04-22:51:52.134 3f14 Recovering log #3 -2026/08/04-22:51:52.134 3f14 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Site Characteristics Database/000003.log +2026/08/10-22:38:48.185 7864 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Site Characteristics Database/MANIFEST-000001 +2026/08/10-22:38:48.186 7864 Recovering log #3 +2026/08/10-22:38:48.186 7864 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Site Characteristics Database/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/000003.log index 8ac4a90..5378bec 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/LOG index b83bb26..870f910 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:02.292 470c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Local Storage\leveldb/MANIFEST-000001 -2026/08/05-21:31:02.294 470c Recovering log #3 -2026/08/05-21:31:02.297 470c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Local Storage\leveldb/000003.log +2026/08/11-23:31:46.028 7268 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Local Storage\leveldb/MANIFEST-000001 +2026/08/11-23:31:46.029 7268 Recovering log #3 +2026/08/11-23:31:46.032 7268 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Local Storage\leveldb/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/LOG.old index 674e6b8..da823a1 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Local Storage/leveldb/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.329 5c5c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Local Storage\leveldb/MANIFEST-000001 -2026/08/04-22:51:52.332 5c5c Recovering log #3 -2026/08/04-22:51:52.336 5c5c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Local Storage\leveldb/000003.log +2026/08/10-22:38:48.354 7268 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Local Storage\leveldb/MANIFEST-000001 +2026/08/10-22:38:48.355 7268 Recovering log #3 +2026/08/10-22:38:48.359 7268 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Local Storage\leveldb/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Network/Network Persistent State b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Network/Network Persistent State index 816988e..c64facb 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Network/Network Persistent State +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Network/Network Persistent State @@ -1 +1 @@ -{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433023867163308","port":443,"protocol_str":"quic"}],"anonymization":[3],"network_stats":{"srtt":18606},"server":"https://dns.google","supports_spdy":true}],"supports_quic":{"address":"192.168.178.26","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G"}}} \ No newline at end of file +{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13433549511058500","port":443,"protocol_str":"quic"}],"anonymization":[3],"network_stats":{"srtt":16643},"server":"https://dns.google","supports_spdy":true}],"supports_quic":{"address":"192.168.178.26","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G"}}} \ No newline at end of file diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Network/TransportSecurity b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Network/TransportSecurity index d0ef23a..1601102 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Network/TransportSecurity +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Network/TransportSecurity @@ -1 +1 @@ -{"sts":[{"expiry":1817494267.163331,"host":"OuKlWsMW1dkkbI1X/oi6o0Y95ZNSWnSoeaIXAEYPlv4=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1785958267.163334}],"version":2} \ No newline at end of file +{"sts":[{"expiry":1818019911.058524,"host":"OuKlWsMW1dkkbI1X/oi6o0Y95ZNSWnSoeaIXAEYPlv4=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1786483911.058528}],"version":2} \ No newline at end of file diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/000003.log index 16bfed5..1780fb3 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/LOG index 2fd9175..a415874 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:17.428 470c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Session Storage/MANIFEST-000001 -2026/08/05-21:31:17.429 470c Recovering log #3 -2026/08/05-21:31:17.431 470c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Session Storage/000003.log +2026/08/11-23:32:01.179 7268 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Session Storage/MANIFEST-000001 +2026/08/11-23:32:01.179 7268 Recovering log #3 +2026/08/11-23:32:01.181 7268 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Session Storage/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/LOG.old index 02a613b..9465c45 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Session Storage/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:52:07.474 5c5c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Session Storage/MANIFEST-000001 -2026/08/04-22:52:07.475 5c5c Recovering log #3 -2026/08/04-22:52:07.477 5c5c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Session Storage/000003.log +2026/08/10-22:39:03.533 7268 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Session Storage/MANIFEST-000001 +2026/08/10-22:39:03.535 7268 Recovering log #3 +2026/08/10-22:39:03.539 7268 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Storage\ext\ihmafllikibpmigkcoadcmckbfhibefp\def\Session Storage/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Shared Dictionary/cache/index-dir/the-real-index b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Shared Dictionary/cache/index-dir/the-real-index index 6e41789..7d63c18 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Shared Dictionary/cache/index-dir/the-real-index and b/FinlyticApp/.dart_tool/chrome-device/Default/Storage/ext/ihmafllikibpmigkcoadcmckbfhibefp/def/Shared Dictionary/cache/index-dir/the-real-index differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/000004.log b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/000004.log index 33cf66b..46047be 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/000004.log and b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/000004.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/LOG index 8f111b8..b5da1c5 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/LOG @@ -1,6 +1,4 @@ -2026/08/05-21:31:02.052 6a48 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Sync Data\LevelDB/MANIFEST-000001 -2026/08/05-21:31:02.055 6a48 Recovering log #3 -2026/08/05-21:31:02.060 6a48 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Sync Data\LevelDB/000003.log -2026/08/05-21:31:11.883 3bd8 Level-0 table #5: started -2026/08/05-21:31:11.888 3bd8 Level-0 table #5: 119981 bytes OK -2026/08/05-21:31:11.892 3bd8 Delete type=0 #3 +2026/08/11-23:31:45.845 51a4 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Sync Data\LevelDB/MANIFEST-000001 +2026/08/11-23:31:45.847 51a4 Recovering log #4 +2026/08/11-23:31:45.850 51a4 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Sync Data\LevelDB/000004.log +2026/08/11-23:31:45.850 51a4 Delete type=0 #3 diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/LOG.old index c8ccfad..265db9b 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/LevelDB/LOG.old @@ -1,3 +1,4 @@ -2026/08/04-22:51:52.124 2454 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Sync Data\LevelDB/MANIFEST-000001 -2026/08/04-22:51:52.132 2454 Recovering log #3 -2026/08/04-22:51:52.137 2454 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Sync Data\LevelDB/000003.log +2026/08/10-22:38:48.180 5bd0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Sync Data\LevelDB/MANIFEST-000001 +2026/08/10-22:38:48.184 5bd0 Recovering log #4 +2026/08/10-22:38:48.185 5bd0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Sync Data\LevelDB/000004.log +2026/08/10-22:38:48.186 5bd0 Delete type=0 #3 diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Logs/cv_debug.log b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Logs/cv_debug.log index 484366c..9a9a5df 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Logs/cv_debug.log +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Logs/cv_debug.log @@ -1,300 +1,3 @@ -Contributing types: Sessions} -{"logTime": "0801/094420", "correlationVector":"10ufW2LS/p3Jz4qkLH2y2V.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000m"}} -{"logTime": "0801/094420", "correlationVector":"10ufW2LS/p3Jz4qkLH2y2V.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=10ufW2LS/p3Jz4qkLH2y2V.0;server=akswtt00400000m;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/202100", "correlationVector":"eAqxcJ4c7f7G1V7lcuElMK.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000p"}} -{"logTime": "0801/202100", "correlationVector":"eAqxcJ4c7f7G1V7lcuElMK.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Encryption Keys", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0801/202101", "correlationVector":"LW+a+OQHQl0MJ2zREP+5Uw","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"", "migrationStage":"", "server":""}} -{"logTime": "0801/202101", "correlationVector":"LW+a+OQHQl0MJ2zREP+5Uw.0","action":"EncryptionKeysFetcher.DownloadKeys:", "result":"Success", "context":Key count: 10, Last key timestamp: 2026-07-17T21:16:54Z} -{"logTime": "0801/202101", "correlationVector":"LW+a+OQHQl0MJ2zREP+5Uw.1","action":"EncryptionKeysManager::SetEncryptionKeys:", "result":"Success", "context":Key names[10]:[wimgRheq8lOIGfRV4WVcoKimTc/AOq0F+9IwiHp174I5F8axIfO8QCCbjE+9fg1EfqcrdO7m/RW7IuoOLPy6tw==][GdjhGEUfutVDRCUJOikLMkXGcpLd7Uw/1EcmxDQyl/czleXfAbh5HqA0PJRRCznjHzo3toviT7z0JXnA+liXQA==][FyZbP02mdYiJPYKaLVgtmzm6/U83YVKhhqAPS/pTdA4vq7nBrRDI5Jj2dVTByT16R08AkHEVlQHt44fUsFNgug==][YUky7ZK7bd2iWVL7pAvQz7q9P46FaQcoUWpMR1MebQzUvV6HzzY72Uag3T+UDYqQR0ewoBpnVMlAkMpMQZkRHA==][M7X+8hkU1gOr+gt7kESNKrIOQltK7LmM62a/ustC7uHDi5DJZw3djmlzb1VYjx4cZz0ptD/8/fRrQGXwyqdACg==][UECYbawrS/Luzn7cJ88XfKmR+Y5+aSB4P+DY/pbpVzcy0m33QhplS/SidutoXTKC8l/lwsL0tk8bKQDFN6ME5w==][XtlvKPhWPhaxb7J2Nb5w3uMEAu0mvD95RTWTbWb2R7WCJyftcYw6RjvDBhh3rWH7ejepTKMUwN88wsrFXHniqQ==][acPLEjd0BJ/kkL7u0BN30342USMSyJRqddIaZ/Q7F1XyWnkYvzOOFx7cDX/HMxXB/Ec0ojbxV5mVC8Vpb6Hg4w==][CsVCzdBgQ8vnG0XM1FiBJMDfLsF0BLwBbQmnXEgeolbMa15kFSj5pYQN1tvWrrfZA3UFzlpVCsM3pV4DQZzowQ==][Z8gs04R9mP5dM2DtFaTkwSDUYR23ghtyhSkUzNUhotvEHI1q2GS1N6uJRoTzMS+GBwpIqXq8Ovgslujv+2Nt6A==]} -{"logTime": "0801/202101", "correlationVector":"LW+a+OQHQl0MJ2zREP+5Uw.2","action":"EncryptionKeysManager::SetEncryptionKeysWithTimestamps:", "result":"Success", "context":Key timestamps[10]:[2023-08-01T10:16:36Z][2023-09-05T18:01:02Z][2024-03-08T21:41:33Z][2024-04-12T06:14:40Z][2024-05-01T06:42:59Z][2024-10-31T20:02:53Z][2025-05-02T20:50:04Z][2025-06-11T10:46:10Z][2025-12-20T17:43:42Z][2026-07-17T21:16:54Z]} -{"logTime": "0801/202101", "correlationVector":"eAqxcJ4c7f7G1V7lcuElMK","action":"Initial GetUpdates", "result":"", "context":Reason: NEW_CLIENT. cV=eAqxcJ4c7f7G1V7lcuElMK} -{"logTime": "0801/202101", "correlationVector":"eAqxcJ4c7f7G1V7lcuElMK.3","action":"GetUpdates Response", "result":"Success", "context":Received 1 update(s). cV=eAqxcJ4c7f7G1V7lcuElMK.0;server=akswtt00400000p;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/202101", "correlationVector":"lCsMrHUseI3J2F1BnMk2QY","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=lCsMrHUseI3J2F1BnMk2QY} -{"logTime": "0801/202101", "correlationVector":"lCsMrHUseI3J2F1BnMk2QY.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000q"}} -{"logTime": "0801/202101", "correlationVector":"lCsMrHUseI3J2F1BnMk2QY.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Passwords", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"104", "total":"104"}} -{"logTime": "0801/202101", "correlationVector":"lCsMrHUseI3J2F1BnMk2QY.3","action":"GetUpdates Response", "result":"Success", "context":Received 104 update(s). cV=lCsMrHUseI3J2F1BnMk2QY.0;server=akswtt00400000q;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/202101", "correlationVector":"SbX1JD6bMnJZ0QSHLA+p1l","action":"Normal GetUpdate request", "result":"", "context":cV=SbX1JD6bMnJZ0QSHLA+p1l -Nudged types: Sessions, History -Refresh requested types: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys} -{"logTime": "0801/202102", "correlationVector":"SbX1JD6bMnJZ0QSHLA+p1l.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000d"}} -{"logTime": "0801/202102", "correlationVector":"SbX1JD6bMnJZ0QSHLA+p1l.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"3", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"4", "total":"4"}} -{"logTime": "0801/202102", "correlationVector":"SbX1JD6bMnJZ0QSHLA+p1l.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"4", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"7", "total":"7"}} -{"logTime": "0801/202102", "correlationVector":"SbX1JD6bMnJZ0QSHLA+p1l.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Device Info", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0801/202102", "correlationVector":"SbX1JD6bMnJZ0QSHLA+p1l.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"History", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"30", "total":"30"}} -{"logTime": "0801/202102", "correlationVector":"SbX1JD6bMnJZ0QSHLA+p1l.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0801/202102", "correlationVector":"SbX1JD6bMnJZ0QSHLA+p1l.7","action":"GetUpdates Response", "result":"Success", "context":Received 43 update(s). cV=SbX1JD6bMnJZ0QSHLA+p1l.0;server=akswtt00400000d;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/202102", "correlationVector":"vzYeOHQYeSHHIrqZ8RQ5wp","action":"Poll GetUpdate request", "result":"", "context":cV=vzYeOHQYeSHHIrqZ8RQ5wp} -{"logTime": "0801/202102", "correlationVector":"vzYeOHQYeSHHIrqZ8RQ5wp.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000p"}} -{"logTime": "0801/202102", "correlationVector":"vzYeOHQYeSHHIrqZ8RQ5wp.2","action":"GetUpdates Response", "result":"Success", "context":Received 0 update(s). cV=vzYeOHQYeSHHIrqZ8RQ5wp.0;server=akswtt00400000p;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/202157", "correlationVector":"8iNSG0bBjQMIopPM5Pzg2q","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Preferences, Sessions} -{"logTime": "0801/202157", "correlationVector":"8iNSG0bBjQMIopPM5Pzg2q.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000p"}} -{"logTime": "0801/202157", "correlationVector":"8iNSG0bBjQMIopPM5Pzg2q.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=8iNSG0bBjQMIopPM5Pzg2q.0;server=akswtt00400000p;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/202557", "correlationVector":"cMyxz+7Thb3xuY2ddBaGOT","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Preferences} -{"logTime": "0801/202557", "correlationVector":"cMyxz+7Thb3xuY2ddBaGOT.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000p"}} -{"logTime": "0801/202557", "correlationVector":"cMyxz+7Thb3xuY2ddBaGOT.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=cMyxz+7Thb3xuY2ddBaGOT.0;server=akswtt00400000p;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/202557", "correlationVector":"cMyxz+7Thb3xuY2ddBaGOT.3","action":"Commit.Preferences", "result":"Success", "context":{"id":"0231a422-5232-43cc-8300-2b3687cef86e", "isDeleted":"true", "size":"0", "version":"1785615719345"}} -{"logTime": "0801/202730", "correlationVector":"FZO2T1U3jL2iMJvUvgWMEm","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Sessions, History} -{"logTime": "0801/202731", "correlationVector":"FZO2T1U3jL2iMJvUvgWMEm.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000009"}} -{"logTime": "0801/202731", "correlationVector":"FZO2T1U3jL2iMJvUvgWMEm.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=FZO2T1U3jL2iMJvUvgWMEm.0;server=akswtt004000009;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/202849", "correlationVector":"+DpMK7E+120dwx8Vd0vR+z","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Sessions, History} -{"logTime": "0801/202850", "correlationVector":"+DpMK7E+120dwx8Vd0vR+z.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000s"}} -{"logTime": "0801/202850", "correlationVector":"+DpMK7E+120dwx8Vd0vR+z.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=+DpMK7E+120dwx8Vd0vR+z.0;server=akswtt00400000s;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/203321", "correlationVector":"QAEgT+QC//ViY7nf2eEIJs","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Sessions, History} -{"logTime": "0801/203322", "correlationVector":"QAEgT+QC//ViY7nf2eEIJs.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000e"}} -{"logTime": "0801/203322", "correlationVector":"QAEgT+QC//ViY7nf2eEIJs.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=QAEgT+QC//ViY7nf2eEIJs.0;server=akswtt00400000e;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/203709", "correlationVector":"xQEo6HUcmEIGJPs33KQf82","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0801/203709", "correlationVector":"xQEo6HUcmEIGJPs33KQf82.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000007"}} -{"logTime": "0801/203709", "correlationVector":"xQEo6HUcmEIGJPs33KQf82.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=xQEo6HUcmEIGJPs33KQf82.0;server=akswtt004000007;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/204324", "correlationVector":"WOume4nl1/Xv++ATgAPpAP","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0801/204324", "correlationVector":"WOume4nl1/Xv++ATgAPpAP.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000o"}} -{"logTime": "0801/204324", "correlationVector":"WOume4nl1/Xv++ATgAPpAP.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=WOume4nl1/Xv++ATgAPpAP.0;server=akswtt00400000o;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/204836", "correlationVector":"xJUo3iMvHnmD0GDAmWUVdW","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Sessions, History} -{"logTime": "0801/204838", "correlationVector":"xJUo3iMvHnmD0GDAmWUVdW.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000s"}} -{"logTime": "0801/204838", "correlationVector":"xJUo3iMvHnmD0GDAmWUVdW.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=xJUo3iMvHnmD0GDAmWUVdW.0;server=akswtt00400000s;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/205620", "correlationVector":"9DK2Wj3xPVcUei1eTKRHr1","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0801/205621", "correlationVector":"9DK2Wj3xPVcUei1eTKRHr1.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000e"}} -{"logTime": "0801/205621", "correlationVector":"9DK2Wj3xPVcUei1eTKRHr1.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=9DK2Wj3xPVcUei1eTKRHr1.0;server=akswtt00400000e;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/205914", "correlationVector":"OUkZiwy/3lRtSs5Fxa5/Uo","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Sessions, History} -{"logTime": "0801/205915", "correlationVector":"OUkZiwy/3lRtSs5Fxa5/Uo.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000l"}} -{"logTime": "0801/205915", "correlationVector":"OUkZiwy/3lRtSs5Fxa5/Uo.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=OUkZiwy/3lRtSs5Fxa5/Uo.0;server=akswtt00400000l;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0801/210104", "correlationVector":"SlbZPqUYDOyF3L7u2Kbwlj","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0801/210105", "correlationVector":"SlbZPqUYDOyF3L7u2Kbwlj.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000t"}} -{"logTime": "0801/210105", "correlationVector":"SlbZPqUYDOyF3L7u2Kbwlj.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=SlbZPqUYDOyF3L7u2Kbwlj.0;server=akswtt00400000t;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201014", "correlationVector":"mdyKHS4SUtTxQm0X/dyK6K.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000006"}} -{"logTime": "0803/201014", "correlationVector":"mdyKHS4SUtTxQm0X/dyK6K.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Encryption Keys", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0803/201018", "correlationVector":"gn+tPxpymvhyoHYGj8hB5Q","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"", "migrationStage":"", "server":""}} -{"logTime": "0803/201018", "correlationVector":"gn+tPxpymvhyoHYGj8hB5Q.0","action":"EncryptionKeysFetcher.DownloadKeys:", "result":"Success", "context":Key count: 10, Last key timestamp: 2026-07-17T21:16:54Z} -{"logTime": "0803/201018", "correlationVector":"gn+tPxpymvhyoHYGj8hB5Q.1","action":"EncryptionKeysManager::SetEncryptionKeys:", "result":"Success", "context":Key names[10]:[wimgRheq8lOIGfRV4WVcoKimTc/AOq0F+9IwiHp174I5F8axIfO8QCCbjE+9fg1EfqcrdO7m/RW7IuoOLPy6tw==][GdjhGEUfutVDRCUJOikLMkXGcpLd7Uw/1EcmxDQyl/czleXfAbh5HqA0PJRRCznjHzo3toviT7z0JXnA+liXQA==][FyZbP02mdYiJPYKaLVgtmzm6/U83YVKhhqAPS/pTdA4vq7nBrRDI5Jj2dVTByT16R08AkHEVlQHt44fUsFNgug==][YUky7ZK7bd2iWVL7pAvQz7q9P46FaQcoUWpMR1MebQzUvV6HzzY72Uag3T+UDYqQR0ewoBpnVMlAkMpMQZkRHA==][M7X+8hkU1gOr+gt7kESNKrIOQltK7LmM62a/ustC7uHDi5DJZw3djmlzb1VYjx4cZz0ptD/8/fRrQGXwyqdACg==][UECYbawrS/Luzn7cJ88XfKmR+Y5+aSB4P+DY/pbpVzcy0m33QhplS/SidutoXTKC8l/lwsL0tk8bKQDFN6ME5w==][XtlvKPhWPhaxb7J2Nb5w3uMEAu0mvD95RTWTbWb2R7WCJyftcYw6RjvDBhh3rWH7ejepTKMUwN88wsrFXHniqQ==][acPLEjd0BJ/kkL7u0BN30342USMSyJRqddIaZ/Q7F1XyWnkYvzOOFx7cDX/HMxXB/Ec0ojbxV5mVC8Vpb6Hg4w==][CsVCzdBgQ8vnG0XM1FiBJMDfLsF0BLwBbQmnXEgeolbMa15kFSj5pYQN1tvWrrfZA3UFzlpVCsM3pV4DQZzowQ==][Z8gs04R9mP5dM2DtFaTkwSDUYR23ghtyhSkUzNUhotvEHI1q2GS1N6uJRoTzMS+GBwpIqXq8Ovgslujv+2Nt6A==]} -{"logTime": "0803/201018", "correlationVector":"gn+tPxpymvhyoHYGj8hB5Q.2","action":"EncryptionKeysManager::SetEncryptionKeysWithTimestamps:", "result":"Success", "context":Key timestamps[10]:[2023-08-01T10:16:36Z][2023-09-05T18:01:02Z][2024-03-08T21:41:33Z][2024-04-12T06:14:40Z][2024-05-01T06:42:59Z][2024-10-31T20:02:53Z][2025-05-02T20:50:04Z][2025-06-11T10:46:10Z][2025-12-20T17:43:42Z][2026-07-17T21:16:54Z]} -{"logTime": "0803/201018", "correlationVector":"mdyKHS4SUtTxQm0X/dyK6K","action":"Initial GetUpdates", "result":"", "context":Reason: NEW_CLIENT. cV=mdyKHS4SUtTxQm0X/dyK6K} -{"logTime": "0803/201018", "correlationVector":"mdyKHS4SUtTxQm0X/dyK6K.3","action":"GetUpdates Response", "result":"Success", "context":Received 1 update(s). cV=mdyKHS4SUtTxQm0X/dyK6K.0;server=akswtt004000006;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201018", "correlationVector":"LqrHIJCsB/r9NqIMdLR5NT","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=LqrHIJCsB/r9NqIMdLR5NT} -{"logTime": "0803/201018", "correlationVector":"LqrHIJCsB/r9NqIMdLR5NT.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000t"}} -{"logTime": "0803/201018", "correlationVector":"LqrHIJCsB/r9NqIMdLR5NT.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Passwords", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"104", "total":"104"}} -{"logTime": "0803/201018", "correlationVector":"LqrHIJCsB/r9NqIMdLR5NT.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Device Info", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"32", "total":"32"}} -{"logTime": "0803/201018", "correlationVector":"LqrHIJCsB/r9NqIMdLR5NT.4","action":"GetUpdates Response", "result":"Success", "context":Received 136 update(s). cV=LqrHIJCsB/r9NqIMdLR5NT.0;server=akswtt00400000t;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201018", "correlationVector":"D6VjiX60pVoDzLxeFGiP1k","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=D6VjiX60pVoDzLxeFGiP1k} -{"logTime": "0803/201020", "correlationVector":"D6VjiX60pVoDzLxeFGiP1k.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000007"}} -{"logTime": "0803/201020", "correlationVector":"D6VjiX60pVoDzLxeFGiP1k.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Bookmarks", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"25", "total":"25"}} -{"logTime": "0803/201020", "correlationVector":"D6VjiX60pVoDzLxeFGiP1k.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"86", "total":"86"}} -{"logTime": "0803/201020", "correlationVector":"D6VjiX60pVoDzLxeFGiP1k.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"75", "total":"75"}} -{"logTime": "0803/201020", "correlationVector":"D6VjiX60pVoDzLxeFGiP1k.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"3", "total":"3"}} -{"logTime": "0803/201020", "correlationVector":"D6VjiX60pVoDzLxeFGiP1k.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extension settings", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"57", "total":"57"}} -{"logTime": "0803/201020", "correlationVector":"D6VjiX60pVoDzLxeFGiP1k.7","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Web Apps", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"4", "total":"4"}} -{"logTime": "0803/201020", "correlationVector":"D6VjiX60pVoDzLxeFGiP1k.8","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=D6VjiX60pVoDzLxeFGiP1k.0;server=akswtt004000007;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0803/201020", "correlationVector":"lGUZGjJCNYRWTDY26FNxc9","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=lGUZGjJCNYRWTDY26FNxc9} -{"logTime": "0803/201021", "correlationVector":"lGUZGjJCNYRWTDY26FNxc9.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000000"}} -{"logTime": "0803/201021", "correlationVector":"lGUZGjJCNYRWTDY26FNxc9.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"250", "total":"250"}} -{"logTime": "0803/201021", "correlationVector":"lGUZGjJCNYRWTDY26FNxc9.3","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=lGUZGjJCNYRWTDY26FNxc9.0;server=akswtt004000000;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0803/201021", "correlationVector":"cLyzzkzPak1hN4+HdxeSka","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=cLyzzkzPak1hN4+HdxeSka} -{"logTime": "0803/201022", "correlationVector":"cLyzzkzPak1hN4+HdxeSka.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000a"}} -{"logTime": "0803/201022", "correlationVector":"cLyzzkzPak1hN4+HdxeSka.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"250", "total":"250"}} -{"logTime": "0803/201022", "correlationVector":"cLyzzkzPak1hN4+HdxeSka.3","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=cLyzzkzPak1hN4+HdxeSka.0;server=akswtt00400000a;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0803/201022", "correlationVector":"zyABu/5w9lD0gniaqIaKSM","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=zyABu/5w9lD0gniaqIaKSM} -{"logTime": "0803/201023", "correlationVector":"zyABu/5w9lD0gniaqIaKSM.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000q"}} -{"logTime": "0803/201023", "correlationVector":"zyABu/5w9lD0gniaqIaKSM.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Bookmarks", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0803/201023", "correlationVector":"zyABu/5w9lD0gniaqIaKSM.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"15", "total":"15"}} -{"logTime": "0803/201023", "correlationVector":"zyABu/5w9lD0gniaqIaKSM.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill Profiles", "deleted":"9", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"17", "total":"17"}} -{"logTime": "0803/201023", "correlationVector":"zyABu/5w9lD0gniaqIaKSM.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"214", "total":"214"}} -{"logTime": "0803/201023", "correlationVector":"zyABu/5w9lD0gniaqIaKSM.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0803/201023", "correlationVector":"zyABu/5w9lD0gniaqIaKSM.7","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"1", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0803/201023", "correlationVector":"zyABu/5w9lD0gniaqIaKSM.8","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=zyABu/5w9lD0gniaqIaKSM.0;server=akswtt00400000q;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0803/201023", "correlationVector":"9FttVg/4TYk4rbe3aFCSXA","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=9FttVg/4TYk4rbe3aFCSXA} -{"logTime": "0803/201024", "correlationVector":"9FttVg/4TYk4rbe3aFCSXA.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000t"}} -{"logTime": "0803/201024", "correlationVector":"9FttVg/4TYk4rbe3aFCSXA.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill Profiles", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0803/201024", "correlationVector":"9FttVg/4TYk4rbe3aFCSXA.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"243", "total":"243"}} -{"logTime": "0803/201024", "correlationVector":"9FttVg/4TYk4rbe3aFCSXA.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0803/201024", "correlationVector":"9FttVg/4TYk4rbe3aFCSXA.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"2", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0803/201024", "correlationVector":"9FttVg/4TYk4rbe3aFCSXA.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"1", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0803/201024", "correlationVector":"9FttVg/4TYk4rbe3aFCSXA.7","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=9FttVg/4TYk4rbe3aFCSXA.0;server=akswtt00400000t;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0803/201024", "correlationVector":"aOGpu4X+UHI/WpVDtAg1fj","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=aOGpu4X+UHI/WpVDtAg1fj} -{"logTime": "0803/201025", "correlationVector":"aOGpu4X+UHI/WpVDtAg1fj.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000q"}} -{"logTime": "0803/201025", "correlationVector":"aOGpu4X+UHI/WpVDtAg1fj.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"15", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"16", "total":"16"}} -{"logTime": "0803/201025", "correlationVector":"aOGpu4X+UHI/WpVDtAg1fj.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"9", "total":"9"}} -{"logTime": "0803/201025", "correlationVector":"aOGpu4X+UHI/WpVDtAg1fj.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0803/201025", "correlationVector":"aOGpu4X+UHI/WpVDtAg1fj.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"21", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"56", "total":"56"}} -{"logTime": "0803/201025", "correlationVector":"aOGpu4X+UHI/WpVDtAg1fj.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0803/201025", "correlationVector":"aOGpu4X+UHI/WpVDtAg1fj.7","action":"GetUpdates Response", "result":"Success", "context":Received 84 update(s). cV=aOGpu4X+UHI/WpVDtAg1fj.0;server=akswtt00400000q;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201025", "correlationVector":"BquENi8StfYhTqnOll+PtK","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=BquENi8StfYhTqnOll+PtK} -{"logTime": "0803/201026", "correlationVector":"BquENi8StfYhTqnOll+PtK.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000a"}} -{"logTime": "0803/201026", "correlationVector":"BquENi8StfYhTqnOll+PtK.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"History", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"232", "total":"232"}} -{"logTime": "0803/201026", "correlationVector":"BquENi8StfYhTqnOll+PtK.3","action":"GetUpdates Response", "result":"Success", "context":Received 232 update(s). cV=BquENi8StfYhTqnOll+PtK.0;server=akswtt00400000a;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201026", "correlationVector":"2VqgCZBHiol/89n90xABpZ","action":"Normal GetUpdate request", "result":"", "context":cV=2VqgCZBHiol/89n90xABpZ -Nudged types: Sessions, Device Info -Refresh requested types: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys} -{"logTime": "0803/201026", "correlationVector":"2VqgCZBHiol/89n90xABpZ.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000q"}} -{"logTime": "0803/201026", "correlationVector":"2VqgCZBHiol/89n90xABpZ.2","action":"GetUpdates Response", "result":"Success", "context":Received 0 update(s). cV=2VqgCZBHiol/89n90xABpZ.0;server=akswtt00400000q;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201026", "correlationVector":"Gu+m44CxHQZVRwY/AJNMVB","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Sessions, Device Info} -{"logTime": "0803/201027", "correlationVector":"Gu+m44CxHQZVRwY/AJNMVB.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000007"}} -{"logTime": "0803/201027", "correlationVector":"Gu+m44CxHQZVRwY/AJNMVB.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=Gu+m44CxHQZVRwY/AJNMVB.0;server=akswtt004000007;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201027", "correlationVector":"sp3vvjuhzN9x5STx0qYCS6","action":"Poll GetUpdate request", "result":"", "context":cV=sp3vvjuhzN9x5STx0qYCS6} -{"logTime": "0803/201028", "correlationVector":"sp3vvjuhzN9x5STx0qYCS6.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000t"}} -{"logTime": "0803/201028", "correlationVector":"sp3vvjuhzN9x5STx0qYCS6.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0803/201028", "correlationVector":"sp3vvjuhzN9x5STx0qYCS6.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Device Info", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0803/201028", "correlationVector":"sp3vvjuhzN9x5STx0qYCS6.4","action":"GetUpdates Response", "result":"Success", "context":Received 3 update(s). cV=sp3vvjuhzN9x5STx0qYCS6.0;server=akswtt00400000t;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201113", "correlationVector":"9Ei5O6TJiig/YkgRNr3xl6","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Preferences} -{"logTime": "0803/201114", "correlationVector":"9Ei5O6TJiig/YkgRNr3xl6.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000a"}} -{"logTime": "0803/201114", "correlationVector":"9Ei5O6TJiig/YkgRNr3xl6.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=9Ei5O6TJiig/YkgRNr3xl6.0;server=akswtt00400000a;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201306", "correlationVector":"r6DSUdI+s92kyOjTt5bF24","action":"Commit Request", "result":"", "context":Item count: 4 -Contributing types: Preferences, Sessions, History} -{"logTime": "0803/201307", "correlationVector":"r6DSUdI+s92kyOjTt5bF24.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000009"}} -{"logTime": "0803/201307", "correlationVector":"r6DSUdI+s92kyOjTt5bF24.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=r6DSUdI+s92kyOjTt5bF24.0;server=akswtt004000009;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/201307", "correlationVector":"r6DSUdI+s92kyOjTt5bF24.3","action":"Commit.Preferences", "result":"Success", "context":{"id":"c720d5fd-f92c-475a-9dc5-24985759e5c5", "isDeleted":"true", "size":"0", "version":"1785787874456"}} -{"logTime": "0803/201408", "correlationVector":"OEgeNIL3Tsdh/9tTPZzF2e","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0803/201408", "correlationVector":"OEgeNIL3Tsdh/9tTPZzF2e.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000o"}} -{"logTime": "0803/201408", "correlationVector":"OEgeNIL3Tsdh/9tTPZzF2e.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=OEgeNIL3Tsdh/9tTPZzF2e.0;server=akswtt00400000o;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/202129", "correlationVector":"2sun4L4WZOO3Sw+PKAlZdp","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Sessions, History} -{"logTime": "0803/202131", "correlationVector":"2sun4L4WZOO3Sw+PKAlZdp.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000i"}} -{"logTime": "0803/202131", "correlationVector":"2sun4L4WZOO3Sw+PKAlZdp.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=2sun4L4WZOO3Sw+PKAlZdp.0;server=akswtt00400000i;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0803/202610", "correlationVector":"rCuGn6PRJnh7Ibeqw9UVQR","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Sessions, History} -{"logTime": "0803/202611", "correlationVector":"rCuGn6PRJnh7Ibeqw9UVQR.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000007"}} -{"logTime": "0803/202611", "correlationVector":"rCuGn6PRJnh7Ibeqw9UVQR.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=rCuGn6PRJnh7Ibeqw9UVQR.0;server=akswtt004000007;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/205158", "correlationVector":"YgidzlEj+ZNl+tlA6TCFPi.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000006"}} -{"logTime": "0804/205158", "correlationVector":"YgidzlEj+ZNl+tlA6TCFPi.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Encryption Keys", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0804/205158", "correlationVector":"69MK4ZdqON3LT0SXLf+95a","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"", "migrationStage":"", "server":""}} -{"logTime": "0804/205158", "correlationVector":"69MK4ZdqON3LT0SXLf+95a.0","action":"EncryptionKeysFetcher.DownloadKeys:", "result":"Success", "context":Key count: 10, Last key timestamp: 2026-07-17T21:16:54Z} -{"logTime": "0804/205158", "correlationVector":"69MK4ZdqON3LT0SXLf+95a.1","action":"EncryptionKeysManager::SetEncryptionKeys:", "result":"Success", "context":Key names[10]:[wimgRheq8lOIGfRV4WVcoKimTc/AOq0F+9IwiHp174I5F8axIfO8QCCbjE+9fg1EfqcrdO7m/RW7IuoOLPy6tw==][GdjhGEUfutVDRCUJOikLMkXGcpLd7Uw/1EcmxDQyl/czleXfAbh5HqA0PJRRCznjHzo3toviT7z0JXnA+liXQA==][FyZbP02mdYiJPYKaLVgtmzm6/U83YVKhhqAPS/pTdA4vq7nBrRDI5Jj2dVTByT16R08AkHEVlQHt44fUsFNgug==][YUky7ZK7bd2iWVL7pAvQz7q9P46FaQcoUWpMR1MebQzUvV6HzzY72Uag3T+UDYqQR0ewoBpnVMlAkMpMQZkRHA==][M7X+8hkU1gOr+gt7kESNKrIOQltK7LmM62a/ustC7uHDi5DJZw3djmlzb1VYjx4cZz0ptD/8/fRrQGXwyqdACg==][UECYbawrS/Luzn7cJ88XfKmR+Y5+aSB4P+DY/pbpVzcy0m33QhplS/SidutoXTKC8l/lwsL0tk8bKQDFN6ME5w==][XtlvKPhWPhaxb7J2Nb5w3uMEAu0mvD95RTWTbWb2R7WCJyftcYw6RjvDBhh3rWH7ejepTKMUwN88wsrFXHniqQ==][acPLEjd0BJ/kkL7u0BN30342USMSyJRqddIaZ/Q7F1XyWnkYvzOOFx7cDX/HMxXB/Ec0ojbxV5mVC8Vpb6Hg4w==][CsVCzdBgQ8vnG0XM1FiBJMDfLsF0BLwBbQmnXEgeolbMa15kFSj5pYQN1tvWrrfZA3UFzlpVCsM3pV4DQZzowQ==][Z8gs04R9mP5dM2DtFaTkwSDUYR23ghtyhSkUzNUhotvEHI1q2GS1N6uJRoTzMS+GBwpIqXq8Ovgslujv+2Nt6A==]} -{"logTime": "0804/205158", "correlationVector":"69MK4ZdqON3LT0SXLf+95a.2","action":"EncryptionKeysManager::SetEncryptionKeysWithTimestamps:", "result":"Success", "context":Key timestamps[10]:[2023-08-01T10:16:36Z][2023-09-05T18:01:02Z][2024-03-08T21:41:33Z][2024-04-12T06:14:40Z][2024-05-01T06:42:59Z][2024-10-31T20:02:53Z][2025-05-02T20:50:04Z][2025-06-11T10:46:10Z][2025-12-20T17:43:42Z][2026-07-17T21:16:54Z]} -{"logTime": "0804/205158", "correlationVector":"YgidzlEj+ZNl+tlA6TCFPi","action":"Initial GetUpdates", "result":"", "context":Reason: NEW_CLIENT. cV=YgidzlEj+ZNl+tlA6TCFPi} -{"logTime": "0804/205158", "correlationVector":"YgidzlEj+ZNl+tlA6TCFPi.3","action":"GetUpdates Response", "result":"Success", "context":Received 1 update(s). cV=YgidzlEj+ZNl+tlA6TCFPi.0;server=akswtt004000006;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/205158", "correlationVector":"MDk0HgvtHHE9LZVcxw1tFl","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=MDk0HgvtHHE9LZVcxw1tFl} -{"logTime": "0804/205159", "correlationVector":"MDk0HgvtHHE9LZVcxw1tFl.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400001b"}} -{"logTime": "0804/205159", "correlationVector":"MDk0HgvtHHE9LZVcxw1tFl.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Passwords", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"104", "total":"104"}} -{"logTime": "0804/205159", "correlationVector":"MDk0HgvtHHE9LZVcxw1tFl.3","action":"GetUpdates Response", "result":"Success", "context":Received 104 update(s). cV=MDk0HgvtHHE9LZVcxw1tFl.0;server=akswtt00400001b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/205159", "correlationVector":"TqUZHXfRFLp/pfnH957NMP","action":"Normal GetUpdate request", "result":"", "context":cV=TqUZHXfRFLp/pfnH957NMP -Nudged types: Sessions, Device Info, History -Refresh requested types: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys} -{"logTime": "0804/205159", "correlationVector":"TqUZHXfRFLp/pfnH957NMP.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000a"}} -{"logTime": "0804/205159", "correlationVector":"TqUZHXfRFLp/pfnH957NMP.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"3", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"3", "total":"3"}} -{"logTime": "0804/205159", "correlationVector":"TqUZHXfRFLp/pfnH957NMP.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill Profiles", "deleted":"2", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0804/205159", "correlationVector":"TqUZHXfRFLp/pfnH957NMP.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"1", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"3", "total":"3"}} -{"logTime": "0804/205159", "correlationVector":"TqUZHXfRFLp/pfnH957NMP.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Device Info", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0804/205159", "correlationVector":"TqUZHXfRFLp/pfnH957NMP.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"History", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"15", "total":"15"}} -{"logTime": "0804/205159", "correlationVector":"TqUZHXfRFLp/pfnH957NMP.7","action":"GetUpdates Response", "result":"Success", "context":Received 24 update(s). cV=TqUZHXfRFLp/pfnH957NMP.0;server=akswtt00400000a;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/205159", "correlationVector":"qBbZBU4gpZLKP4HDkCjJ92","action":"Poll GetUpdate request", "result":"", "context":cV=qBbZBU4gpZLKP4HDkCjJ92} -{"logTime": "0804/205200", "correlationVector":"qBbZBU4gpZLKP4HDkCjJ92.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000001"}} -{"logTime": "0804/205200", "correlationVector":"qBbZBU4gpZLKP4HDkCjJ92.2","action":"GetUpdates Response", "result":"Success", "context":Received 0 update(s). cV=qBbZBU4gpZLKP4HDkCjJ92.0;server=akswtt004000001;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/205254", "correlationVector":"wniu3QRv9pmg1wqi1BuuED","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Preferences, Sessions} -{"logTime": "0804/205255", "correlationVector":"wniu3QRv9pmg1wqi1BuuED.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000i"}} -{"logTime": "0804/205255", "correlationVector":"wniu3QRv9pmg1wqi1BuuED.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=wniu3QRv9pmg1wqi1BuuED.0;server=akswtt00400000i;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/205258", "correlationVector":"tZ0QOqmBeTr/QZLxWEkQix","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Device Info} -{"logTime": "0804/205259", "correlationVector":"tZ0QOqmBeTr/QZLxWEkQix.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000009"}} -{"logTime": "0804/205259", "correlationVector":"tZ0QOqmBeTr/QZLxWEkQix.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=tZ0QOqmBeTr/QZLxWEkQix.0;server=akswtt004000009;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/205651", "correlationVector":"LWZG2JO4N2hVdu6LX+/hk1","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0804/205652", "correlationVector":"LWZG2JO4N2hVdu6LX+/hk1.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000f"}} -{"logTime": "0804/205652", "correlationVector":"LWZG2JO4N2hVdu6LX+/hk1.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=LWZG2JO4N2hVdu6LX+/hk1.0;server=akswtt00400000f;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/205654", "correlationVector":"0T9sfnousfQROn+s8t0Que","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Preferences} -{"logTime": "0804/205654", "correlationVector":"0T9sfnousfQROn+s8t0Que.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000q"}} -{"logTime": "0804/205654", "correlationVector":"0T9sfnousfQROn+s8t0Que.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=0T9sfnousfQROn+s8t0Que.0;server=akswtt00400000q;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/205654", "correlationVector":"0T9sfnousfQROn+s8t0Que.3","action":"Commit.Preferences", "result":"Success", "context":{"id":"83747599-11ac-487a-b670-341d4897198d", "isDeleted":"true", "size":"0", "version":"1785876775486"}} -{"logTime": "0804/210731", "correlationVector":"2IXoK9dcAN5rD0XFd29zZT","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0804/210731", "correlationVector":"2IXoK9dcAN5rD0XFd29zZT.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000007"}} -{"logTime": "0804/210731", "correlationVector":"2IXoK9dcAN5rD0XFd29zZT.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=2IXoK9dcAN5rD0XFd29zZT.0;server=akswtt004000007;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/211149", "correlationVector":"QxjwjqaHLvvyCip0P1wf3K","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0804/211150", "correlationVector":"QxjwjqaHLvvyCip0P1wf3K.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000s"}} -{"logTime": "0804/211150", "correlationVector":"QxjwjqaHLvvyCip0P1wf3K.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=QxjwjqaHLvvyCip0P1wf3K.0;server=akswtt00400000s;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/211508", "correlationVector":"iqDmCX9CdJgu9xq8qyfqfv","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0804/211509", "correlationVector":"iqDmCX9CdJgu9xq8qyfqfv.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400001b"}} -{"logTime": "0804/211509", "correlationVector":"iqDmCX9CdJgu9xq8qyfqfv.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=iqDmCX9CdJgu9xq8qyfqfv.0;server=akswtt00400001b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/211650", "correlationVector":"QPYcUJ/Ciw2HzjnA1Yodh8","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0804/211651", "correlationVector":"QPYcUJ/Ciw2HzjnA1Yodh8.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000t"}} -{"logTime": "0804/211651", "correlationVector":"QPYcUJ/Ciw2HzjnA1Yodh8.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=QPYcUJ/Ciw2HzjnA1Yodh8.0;server=akswtt00400000t;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/211826", "correlationVector":"M3F8UeA1eWUXrahqOCbR2q","action":"Commit Request", "result":"", "context":Item count: 3 -Contributing types: Sessions, History} -{"logTime": "0804/211827", "correlationVector":"M3F8UeA1eWUXrahqOCbR2q.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000004"}} -{"logTime": "0804/211827", "correlationVector":"M3F8UeA1eWUXrahqOCbR2q.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=M3F8UeA1eWUXrahqOCbR2q.0;server=akswtt004000004;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0804/213916", "correlationVector":"ivD13S7UlgSKe+inSbe7C+","action":"Commit Request", "result":"", "context":Item count: 1 -Contributing types: Sessions} -{"logTime": "0804/213916", "correlationVector":"ivD13S7UlgSKe+inSbe7C+.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000009"}} -{"logTime": "0804/213916", "correlationVector":"ivD13S7UlgSKe+inSbe7C+.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=ivD13S7UlgSKe+inSbe7C+.0;server=akswtt004000009;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0805/193105", "correlationVector":"XMnWc7tZxEZSxW2bodpjeS.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000005"}} -{"logTime": "0805/193105", "correlationVector":"XMnWc7tZxEZSxW2bodpjeS.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Encryption Keys", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0805/193105", "correlationVector":"ybNDbCWl9eGnd0KAjvMVso","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"", "migrationStage":"", "server":""}} -{"logTime": "0805/193105", "correlationVector":"ybNDbCWl9eGnd0KAjvMVso.0","action":"EncryptionKeysFetcher.DownloadKeys:", "result":"Success", "context":Key count: 10, Last key timestamp: 2026-07-17T21:16:54Z} -{"logTime": "0805/193105", "correlationVector":"ybNDbCWl9eGnd0KAjvMVso.1","action":"EncryptionKeysManager::SetEncryptionKeys:", "result":"Success", "context":Key names[10]:[wimgRheq8lOIGfRV4WVcoKimTc/AOq0F+9IwiHp174I5F8axIfO8QCCbjE+9fg1EfqcrdO7m/RW7IuoOLPy6tw==][GdjhGEUfutVDRCUJOikLMkXGcpLd7Uw/1EcmxDQyl/czleXfAbh5HqA0PJRRCznjHzo3toviT7z0JXnA+liXQA==][FyZbP02mdYiJPYKaLVgtmzm6/U83YVKhhqAPS/pTdA4vq7nBrRDI5Jj2dVTByT16R08AkHEVlQHt44fUsFNgug==][YUky7ZK7bd2iWVL7pAvQz7q9P46FaQcoUWpMR1MebQzUvV6HzzY72Uag3T+UDYqQR0ewoBpnVMlAkMpMQZkRHA==][M7X+8hkU1gOr+gt7kESNKrIOQltK7LmM62a/ustC7uHDi5DJZw3djmlzb1VYjx4cZz0ptD/8/fRrQGXwyqdACg==][UECYbawrS/Luzn7cJ88XfKmR+Y5+aSB4P+DY/pbpVzcy0m33QhplS/SidutoXTKC8l/lwsL0tk8bKQDFN6ME5w==][XtlvKPhWPhaxb7J2Nb5w3uMEAu0mvD95RTWTbWb2R7WCJyftcYw6RjvDBhh3rWH7ejepTKMUwN88wsrFXHniqQ==][acPLEjd0BJ/kkL7u0BN30342USMSyJRqddIaZ/Q7F1XyWnkYvzOOFx7cDX/HMxXB/Ec0ojbxV5mVC8Vpb6Hg4w==][CsVCzdBgQ8vnG0XM1FiBJMDfLsF0BLwBbQmnXEgeolbMa15kFSj5pYQN1tvWrrfZA3UFzlpVCsM3pV4DQZzowQ==][Z8gs04R9mP5dM2DtFaTkwSDUYR23ghtyhSkUzNUhotvEHI1q2GS1N6uJRoTzMS+GBwpIqXq8Ovgslujv+2Nt6A==]} -{"logTime": "0805/193105", "correlationVector":"ybNDbCWl9eGnd0KAjvMVso.2","action":"EncryptionKeysManager::SetEncryptionKeysWithTimestamps:", "result":"Success", "context":Key timestamps[10]:[2023-08-01T10:16:36Z][2023-09-05T18:01:02Z][2024-03-08T21:41:33Z][2024-04-12T06:14:40Z][2024-05-01T06:42:59Z][2024-10-31T20:02:53Z][2025-05-02T20:50:04Z][2025-06-11T10:46:10Z][2025-12-20T17:43:42Z][2026-07-17T21:16:54Z]} -{"logTime": "0805/193105", "correlationVector":"XMnWc7tZxEZSxW2bodpjeS","action":"Initial GetUpdates", "result":"", "context":Reason: NEW_CLIENT. cV=XMnWc7tZxEZSxW2bodpjeS} -{"logTime": "0805/193105", "correlationVector":"XMnWc7tZxEZSxW2bodpjeS.3","action":"GetUpdates Response", "result":"Success", "context":Received 1 update(s). cV=XMnWc7tZxEZSxW2bodpjeS.0;server=akswtt004000005;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0805/193105", "correlationVector":"lYFuqHk3iwOKlZZYix7FhZ","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=lYFuqHk3iwOKlZZYix7FhZ} -{"logTime": "0805/193106", "correlationVector":"lYFuqHk3iwOKlZZYix7FhZ.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000b"}} -{"logTime": "0805/193106", "correlationVector":"lYFuqHk3iwOKlZZYix7FhZ.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Passwords", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"104", "total":"104"}} -{"logTime": "0805/193106", "correlationVector":"lYFuqHk3iwOKlZZYix7FhZ.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Device Info", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"32", "total":"32"}} -{"logTime": "0805/193106", "correlationVector":"lYFuqHk3iwOKlZZYix7FhZ.4","action":"GetUpdates Response", "result":"Success", "context":Received 136 update(s). cV=lYFuqHk3iwOKlZZYix7FhZ.0;server=akswtt00400000b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0805/193106", "correlationVector":"5DfUosPHK/pUULJffLuvjL","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=5DfUosPHK/pUULJffLuvjL} -{"logTime": "0805/193107", "correlationVector":"5DfUosPHK/pUULJffLuvjL.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000j"}} -{"logTime": "0805/193107", "correlationVector":"5DfUosPHK/pUULJffLuvjL.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Bookmarks", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"25", "total":"25"}} -{"logTime": "0805/193107", "correlationVector":"5DfUosPHK/pUULJffLuvjL.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"86", "total":"86"}} -{"logTime": "0805/193107", "correlationVector":"5DfUosPHK/pUULJffLuvjL.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"75", "total":"75"}} -{"logTime": "0805/193107", "correlationVector":"5DfUosPHK/pUULJffLuvjL.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"3", "total":"3"}} -{"logTime": "0805/193107", "correlationVector":"5DfUosPHK/pUULJffLuvjL.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extension settings", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"57", "total":"57"}} -{"logTime": "0805/193107", "correlationVector":"5DfUosPHK/pUULJffLuvjL.7","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Web Apps", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"4", "total":"4"}} -{"logTime": "0805/193107", "correlationVector":"5DfUosPHK/pUULJffLuvjL.8","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=5DfUosPHK/pUULJffLuvjL.0;server=akswtt00400000j;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0805/193107", "correlationVector":"ntVbJBJ/F+upsuCzL3n0lR","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=ntVbJBJ/F+upsuCzL3n0lR} -{"logTime": "0805/193108", "correlationVector":"ntVbJBJ/F+upsuCzL3n0lR.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000b"}} -{"logTime": "0805/193108", "correlationVector":"ntVbJBJ/F+upsuCzL3n0lR.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"250", "total":"250"}} -{"logTime": "0805/193108", "correlationVector":"ntVbJBJ/F+upsuCzL3n0lR.3","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=ntVbJBJ/F+upsuCzL3n0lR.0;server=akswtt00400000b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0805/193108", "correlationVector":"NY9dW0uW+z0MN4BGlu7DZt","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=NY9dW0uW+z0MN4BGlu7DZt} -{"logTime": "0805/193109", "correlationVector":"NY9dW0uW+z0MN4BGlu7DZt.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000000"}} -{"logTime": "0805/193109", "correlationVector":"NY9dW0uW+z0MN4BGlu7DZt.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"250", "total":"250"}} -{"logTime": "0805/193109", "correlationVector":"NY9dW0uW+z0MN4BGlu7DZt.3","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=NY9dW0uW+z0MN4BGlu7DZt.0;server=akswtt004000000;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0805/193109", "correlationVector":"snVFDKjFwDltjVBq6Sadvf","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=snVFDKjFwDltjVBq6Sadvf} -{"logTime": "0805/193110", "correlationVector":"snVFDKjFwDltjVBq6Sadvf.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000019"}} -{"logTime": "0805/193110", "correlationVector":"snVFDKjFwDltjVBq6Sadvf.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Bookmarks", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0805/193110", "correlationVector":"snVFDKjFwDltjVBq6Sadvf.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"14", "total":"14"}} -{"logTime": "0805/193110", "correlationVector":"snVFDKjFwDltjVBq6Sadvf.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill Profiles", "deleted":"9", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"15", "total":"15"}} -{"logTime": "0805/193110", "correlationVector":"snVFDKjFwDltjVBq6Sadvf.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"217", "total":"217"}} -{"logTime": "0805/193110", "correlationVector":"snVFDKjFwDltjVBq6Sadvf.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0805/193110", "correlationVector":"snVFDKjFwDltjVBq6Sadvf.7","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"1", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0805/193110", "correlationVector":"snVFDKjFwDltjVBq6Sadvf.8","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=snVFDKjFwDltjVBq6Sadvf.0;server=akswtt004000019;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0805/193110", "correlationVector":"sXj/GwW3VyOi6izOZyj6VW","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=sXj/GwW3VyOi6izOZyj6VW} -{"logTime": "0805/193111", "correlationVector":"sXj/GwW3VyOi6izOZyj6VW.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000b"}} -{"logTime": "0805/193111", "correlationVector":"sXj/GwW3VyOi6izOZyj6VW.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill Profiles", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0805/193111", "correlationVector":"sXj/GwW3VyOi6izOZyj6VW.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"242", "total":"242"}} -{"logTime": "0805/193111", "correlationVector":"sXj/GwW3VyOi6izOZyj6VW.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"3", "total":"3"}} -{"logTime": "0805/193111", "correlationVector":"sXj/GwW3VyOi6izOZyj6VW.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"2", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0805/193111", "correlationVector":"sXj/GwW3VyOi6izOZyj6VW.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"1", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0805/193111", "correlationVector":"sXj/GwW3VyOi6izOZyj6VW.7","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=sXj/GwW3VyOi6izOZyj6VW.0;server=akswtt00400000b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} -{"logTime": "0805/193111", "correlationVector":"tKVy9coEj1TTUbSWKrdxXv","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=tKVy9coEj1TTUbSWKrdxXv} -{"logTime": "0805/193111", "correlationVector":"tKVy9coEj1TTUbSWKrdxXv.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000j"}} -{"logTime": "0805/193111", "correlationVector":"tKVy9coEj1TTUbSWKrdxXv.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"20", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"22", "total":"22"}} -{"logTime": "0805/193111", "correlationVector":"tKVy9coEj1TTUbSWKrdxXv.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill Profiles", "deleted":"2", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} -{"logTime": "0805/193111", "correlationVector":"tKVy9coEj1TTUbSWKrdxXv.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"7", "total":"7"}} -{"logTime": "0805/193111", "correlationVector":"tKVy9coEj1TTUbSWKrdxXv.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0805/193111", "correlationVector":"tKVy9coEj1TTUbSWKrdxXv.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"22", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"58", "total":"58"}} -{"logTime": "0805/193111", "correlationVector":"tKVy9coEj1TTUbSWKrdxXv.7","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} -{"logTime": "0805/193111", "correlationVector":"tKVy9coEj1TTUbSWKrdxXv.8","action":"GetUpdates Response", "result":"Success", "context":Received 91 update(s). cV=tKVy9coEj1TTUbSWKrdxXv.0;server=akswtt00400000j;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0805/193111", "correlationVector":"5ubkdhdRaueGlx7A5xn463","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=5ubkdhdRaueGlx7A5xn463} -{"logTime": "0805/193112", "correlationVector":"5ubkdhdRaueGlx7A5xn463.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000000"}} -{"logTime": "0805/193112", "correlationVector":"5ubkdhdRaueGlx7A5xn463.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"History", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"249", "total":"249"}} -{"logTime": "0805/193112", "correlationVector":"5ubkdhdRaueGlx7A5xn463.3","action":"GetUpdates Response", "result":"Success", "context":Received 249 update(s). cV=5ubkdhdRaueGlx7A5xn463.0;server=akswtt004000000;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} -{"logTime": "0805/193112", "correlationVector":"cXkSg8BEj1qv8DAeg1JZKy","action":"Normal GetUpdate request", "result":"", "context":cV=cXkSg8BEj1qv8DAeg1JZKy -Nudged types: Sessions, Device Info -Refresh requested types: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys} -{"logTime": "0805/193113", "correlationVector":"cXkSg8BEj1qv8DAeg1JZKy.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000j"}} {"logTime": "0805/193113", "correlationVector":"cXkSg8BEj1qv8DAeg1JZKy.2","action":"GetUpdates Response", "result":"Success", "context":Received 0 update(s). cV=cXkSg8BEj1qv8DAeg1JZKy.0;server=akswtt00400000j;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} {"logTime": "0805/193113", "correlationVector":"Fu1BbaNBjbuY5rIesn2X5/","action":"Commit Request", "result":"", "context":Item count: 3 Contributing types: Sessions, Device Info} @@ -366,3 +69,266 @@ Contributing types: Sessions, History} Contributing types: Device Info} {"logTime": "0805/205304", "correlationVector":"CZHAw89qe/V0w2ci8E9yxr.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000005"}} {"logTime": "0805/205304", "correlationVector":"CZHAw89qe/V0w2ci8E9yxr.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=CZHAw89qe/V0w2ci8E9yxr.0;server=akswtt004000005;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212013", "correlationVector":"+/Kxw72vUt5rxqcSuEiHGd.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000019"}} +{"logTime": "0809/212013", "correlationVector":"+/Kxw72vUt5rxqcSuEiHGd.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Encryption Keys", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0809/212013", "correlationVector":"dswZhshKMiRdMqU52d92vM","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"", "migrationStage":"", "server":""}} +{"logTime": "0809/212013", "correlationVector":"dswZhshKMiRdMqU52d92vM.0","action":"EncryptionKeysFetcher.DownloadKeys:", "result":"Success", "context":Key count: 10, Last key timestamp: 2026-07-17T21:16:54Z} +{"logTime": "0809/212013", "correlationVector":"dswZhshKMiRdMqU52d92vM.1","action":"EncryptionKeysManager::SetEncryptionKeys:", "result":"Success", "context":Key names[10]:[wimgRheq8lOIGfRV4WVcoKimTc/AOq0F+9IwiHp174I5F8axIfO8QCCbjE+9fg1EfqcrdO7m/RW7IuoOLPy6tw==][GdjhGEUfutVDRCUJOikLMkXGcpLd7Uw/1EcmxDQyl/czleXfAbh5HqA0PJRRCznjHzo3toviT7z0JXnA+liXQA==][FyZbP02mdYiJPYKaLVgtmzm6/U83YVKhhqAPS/pTdA4vq7nBrRDI5Jj2dVTByT16R08AkHEVlQHt44fUsFNgug==][YUky7ZK7bd2iWVL7pAvQz7q9P46FaQcoUWpMR1MebQzUvV6HzzY72Uag3T+UDYqQR0ewoBpnVMlAkMpMQZkRHA==][M7X+8hkU1gOr+gt7kESNKrIOQltK7LmM62a/ustC7uHDi5DJZw3djmlzb1VYjx4cZz0ptD/8/fRrQGXwyqdACg==][UECYbawrS/Luzn7cJ88XfKmR+Y5+aSB4P+DY/pbpVzcy0m33QhplS/SidutoXTKC8l/lwsL0tk8bKQDFN6ME5w==][XtlvKPhWPhaxb7J2Nb5w3uMEAu0mvD95RTWTbWb2R7WCJyftcYw6RjvDBhh3rWH7ejepTKMUwN88wsrFXHniqQ==][acPLEjd0BJ/kkL7u0BN30342USMSyJRqddIaZ/Q7F1XyWnkYvzOOFx7cDX/HMxXB/Ec0ojbxV5mVC8Vpb6Hg4w==][CsVCzdBgQ8vnG0XM1FiBJMDfLsF0BLwBbQmnXEgeolbMa15kFSj5pYQN1tvWrrfZA3UFzlpVCsM3pV4DQZzowQ==][Z8gs04R9mP5dM2DtFaTkwSDUYR23ghtyhSkUzNUhotvEHI1q2GS1N6uJRoTzMS+GBwpIqXq8Ovgslujv+2Nt6A==]} +{"logTime": "0809/212013", "correlationVector":"dswZhshKMiRdMqU52d92vM.2","action":"EncryptionKeysManager::SetEncryptionKeysWithTimestamps:", "result":"Success", "context":Key timestamps[10]:[2023-08-01T10:16:36Z][2023-09-05T18:01:02Z][2024-03-08T21:41:33Z][2024-04-12T06:14:40Z][2024-05-01T06:42:59Z][2024-10-31T20:02:53Z][2025-05-02T20:50:04Z][2025-06-11T10:46:10Z][2025-12-20T17:43:42Z][2026-07-17T21:16:54Z]} +{"logTime": "0809/212013", "correlationVector":"+/Kxw72vUt5rxqcSuEiHGd","action":"Initial GetUpdates", "result":"", "context":Reason: NEW_CLIENT. cV=+/Kxw72vUt5rxqcSuEiHGd} +{"logTime": "0809/212013", "correlationVector":"+/Kxw72vUt5rxqcSuEiHGd.3","action":"GetUpdates Response", "result":"Success", "context":Received 1 update(s). cV=+/Kxw72vUt5rxqcSuEiHGd.0;server=akswtt103000019;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212013", "correlationVector":"aECgUHctDmu9uso/jCAgf0","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=aECgUHctDmu9uso/jCAgf0} +{"logTime": "0809/212014", "correlationVector":"aECgUHctDmu9uso/jCAgf0.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000015"}} +{"logTime": "0809/212014", "correlationVector":"aECgUHctDmu9uso/jCAgf0.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Passwords", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"104", "total":"104"}} +{"logTime": "0809/212014", "correlationVector":"aECgUHctDmu9uso/jCAgf0.3","action":"GetUpdates Response", "result":"Success", "context":Received 104 update(s). cV=aECgUHctDmu9uso/jCAgf0.0;server=akswtt103000015;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212014", "correlationVector":"ooVO6KYvLznMNzDdbr294o","action":"Normal GetUpdate request", "result":"", "context":cV=ooVO6KYvLznMNzDdbr294o +Nudged types: Sessions, Device Info, History +Refresh requested types: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys} +{"logTime": "0809/212014", "correlationVector":"ooVO6KYvLznMNzDdbr294o.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000019"}} +{"logTime": "0809/212014", "correlationVector":"ooVO6KYvLznMNzDdbr294o.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"4", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"8", "total":"8"}} +{"logTime": "0809/212014", "correlationVector":"ooVO6KYvLznMNzDdbr294o.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"16", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"21", "total":"21"}} +{"logTime": "0809/212014", "correlationVector":"ooVO6KYvLznMNzDdbr294o.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Device Info", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} +{"logTime": "0809/212014", "correlationVector":"ooVO6KYvLznMNzDdbr294o.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"History", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"28", "total":"28"}} +{"logTime": "0809/212014", "correlationVector":"ooVO6KYvLznMNzDdbr294o.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"1", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0809/212014", "correlationVector":"ooVO6KYvLznMNzDdbr294o.7","action":"GetUpdates Response", "result":"Success", "context":Received 60 update(s). cV=ooVO6KYvLznMNzDdbr294o.0;server=akswtt103000019;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212014", "correlationVector":"skQ9ENw4zCTnVlr9kjdeRU","action":"Poll GetUpdate request", "result":"", "context":cV=skQ9ENw4zCTnVlr9kjdeRU} +{"logTime": "0809/212015", "correlationVector":"skQ9ENw4zCTnVlr9kjdeRU.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300000t"}} +{"logTime": "0809/212015", "correlationVector":"skQ9ENw4zCTnVlr9kjdeRU.2","action":"GetUpdates Response", "result":"Success", "context":Received 0 update(s). cV=skQ9ENw4zCTnVlr9kjdeRU.0;server=akswtt10300000t;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212050", "correlationVector":"pw7EyjflIWIV0nWcrJ/+py","action":"Commit Request", "result":"", "context":Item count: 5 +Contributing types: Sessions, Device Info, History} +{"logTime": "0809/212051", "correlationVector":"pw7EyjflIWIV0nWcrJ/+py.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000003"}} +{"logTime": "0809/212051", "correlationVector":"pw7EyjflIWIV0nWcrJ/+py.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=pw7EyjflIWIV0nWcrJ/+py.0;server=akswtt103000003;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212053", "correlationVector":"4A0WuACstDU7rgJrWOwS/O","action":"Commit Request", "result":"", "context":Item count: 5 +Contributing types: Preferences, Sessions, Device Info, History} +{"logTime": "0809/212054", "correlationVector":"4A0WuACstDU7rgJrWOwS/O.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000003"}} +{"logTime": "0809/212054", "correlationVector":"4A0WuACstDU7rgJrWOwS/O.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=4A0WuACstDU7rgJrWOwS/O.0;server=akswtt103000003;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212109", "correlationVector":"t0f+RH6fL8QUcOa4kner58","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Preferences} +{"logTime": "0809/212109", "correlationVector":"t0f+RH6fL8QUcOa4kner58.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000016"}} +{"logTime": "0809/212109", "correlationVector":"t0f+RH6fL8QUcOa4kner58.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=t0f+RH6fL8QUcOa4kner58.0;server=akswtt103000016;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212111", "correlationVector":"uok/Tl8+ZE7GBXMrIRPp6C","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Device Info} +{"logTime": "0809/212112", "correlationVector":"uok/Tl8+ZE7GBXMrIRPp6C.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000003"}} +{"logTime": "0809/212112", "correlationVector":"uok/Tl8+ZE7GBXMrIRPp6C.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=uok/Tl8+ZE7GBXMrIRPp6C.0;server=akswtt103000003;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212217", "correlationVector":"OrxBaHg2HsCbJjtQfrRIS/","action":"Commit Request", "result":"", "context":Item count: 4 +Contributing types: Sessions, History} +{"logTime": "0809/212218", "correlationVector":"OrxBaHg2HsCbJjtQfrRIS/.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000016"}} +{"logTime": "0809/212218", "correlationVector":"OrxBaHg2HsCbJjtQfrRIS/.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=OrxBaHg2HsCbJjtQfrRIS/.0;server=akswtt103000016;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212218", "correlationVector":"OrxBaHg2HsCbJjtQfrRIS/.3","action":"Commit.Sessions", "result":"Success", "context":{"id":"c48b7ad1-f77e-42c7-9a0b-06a371adb50e", "isDeleted":"true", "size":"0", "version":"1786310455610"}} +{"logTime": "0809/212256", "correlationVector":"8aB9TRa2243ZlKYLkkMQAs","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Device Info} +{"logTime": "0809/212256", "correlationVector":"8aB9TRa2243ZlKYLkkMQAs.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000003"}} +{"logTime": "0809/212256", "correlationVector":"8aB9TRa2243ZlKYLkkMQAs.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=8aB9TRa2243ZlKYLkkMQAs.0;server=akswtt103000003;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212258", "correlationVector":"VhzOPwWvx92v0aLK/O/6lV","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Preferences} +{"logTime": "0809/212259", "correlationVector":"VhzOPwWvx92v0aLK/O/6lV.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000003"}} +{"logTime": "0809/212259", "correlationVector":"VhzOPwWvx92v0aLK/O/6lV.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=VhzOPwWvx92v0aLK/O/6lV.0;server=akswtt103000003;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212301", "correlationVector":"FFnACB/5u4Ja2jXhYX6bON","action":"Commit Request", "result":"", "context":Item count: 4 +Contributing types: Preferences, Sessions, History} +{"logTime": "0809/212302", "correlationVector":"FFnACB/5u4Ja2jXhYX6bON.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300000k"}} +{"logTime": "0809/212302", "correlationVector":"FFnACB/5u4Ja2jXhYX6bON.3","action":"Commit.Preferences", "result":"Success", "context":{"id":"3ce13086-d2ad-4c3c-9c0e-1ab67704cc83", "isDeleted":"true", "size":"0", "version":"1786310470968"}} +{"logTime": "0809/212302", "correlationVector":"FFnACB/5u4Ja2jXhYX6bON.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=FFnACB/5u4Ja2jXhYX6bON.0;server=akswtt10300000k;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212345", "correlationVector":"Nb5Jb/UX1UErYj+i/bKS6i","action":"Commit Request", "result":"", "context":Item count: 2 +Contributing types: Preferences, Device Info} +{"logTime": "0809/212346", "correlationVector":"Nb5Jb/UX1UErYj+i/bKS6i.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300000t"}} +{"logTime": "0809/212346", "correlationVector":"Nb5Jb/UX1UErYj+i/bKS6i.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=Nb5Jb/UX1UErYj+i/bKS6i.0;server=akswtt10300000t;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212501", "correlationVector":"ZJhrCtnoSOg3o5oWw0kQHA","action":"Commit Request", "result":"", "context":Item count: 4 +Contributing types: Sessions, History} +{"logTime": "0809/212502", "correlationVector":"ZJhrCtnoSOg3o5oWw0kQHA.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300000l"}} +{"logTime": "0809/212502", "correlationVector":"ZJhrCtnoSOg3o5oWw0kQHA.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=ZJhrCtnoSOg3o5oWw0kQHA.0;server=akswtt10300000l;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212502", "correlationVector":"ZJhrCtnoSOg3o5oWw0kQHA.3","action":"Commit.Sessions", "result":"Success", "context":{"id":"b65b333f-fc69-4469-b36d-d7aaadeac3fa", "isDeleted":"true", "size":"0", "version":"1786310583491"}} +{"logTime": "0809/212616", "correlationVector":"doG0uoiTb5IGjOEA9snT+x","action":"Commit Request", "result":"", "context":Item count: 4 +Contributing types: Sessions, History} +{"logTime": "0809/212617", "correlationVector":"doG0uoiTb5IGjOEA9snT+x.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300001r"}} +{"logTime": "0809/212617", "correlationVector":"doG0uoiTb5IGjOEA9snT+x.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=doG0uoiTb5IGjOEA9snT+x.0;server=akswtt10300001r;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212831", "correlationVector":"KfhuVmncmmP+uXsPITh36i","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Sessions} +{"logTime": "0809/212831", "correlationVector":"KfhuVmncmmP+uXsPITh36i.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000q"}} +{"logTime": "0809/212831", "correlationVector":"KfhuVmncmmP+uXsPITh36i.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=KfhuVmncmmP+uXsPITh36i.0;server=akswtt00400000q;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/212946", "correlationVector":"8lY7KenouC0dw5c47aFpwN","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Sessions, History} +{"logTime": "0809/212947", "correlationVector":"8lY7KenouC0dw5c47aFpwN.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000008"}} +{"logTime": "0809/212947", "correlationVector":"8lY7KenouC0dw5c47aFpwN.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=8lY7KenouC0dw5c47aFpwN.0;server=akswtt004000008;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/213240", "correlationVector":"Dqiz9BYBsclpAVrQ753obd","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Sessions, History} +{"logTime": "0809/213241", "correlationVector":"Dqiz9BYBsclpAVrQ753obd.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000o"}} +{"logTime": "0809/213241", "correlationVector":"Dqiz9BYBsclpAVrQ753obd.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=Dqiz9BYBsclpAVrQ753obd.0;server=akswtt00400000o;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/213404", "correlationVector":"CN9hHyTKrRhesvuAl9HBhE","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Sessions, History} +{"logTime": "0809/213405", "correlationVector":"CN9hHyTKrRhesvuAl9HBhE.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400001b"}} +{"logTime": "0809/213405", "correlationVector":"CN9hHyTKrRhesvuAl9HBhE.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=CN9hHyTKrRhesvuAl9HBhE.0;server=akswtt00400001b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0809/213519", "correlationVector":"f17tGDlAJjSydbkMhTRkej","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Sessions} +{"logTime": "0809/213519", "correlationVector":"f17tGDlAJjSydbkMhTRkej.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000q"}} +{"logTime": "0809/213519", "correlationVector":"f17tGDlAJjSydbkMhTRkej.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=f17tGDlAJjSydbkMhTRkej.0;server=akswtt00400000q;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/203851", "correlationVector":"CToxOtCMG/BZ7QAHpqH4Cc.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000004"}} +{"logTime": "0810/203851", "correlationVector":"CToxOtCMG/BZ7QAHpqH4Cc.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Encryption Keys", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0810/203851", "correlationVector":"dsEgZ1fLcWSyDx6P45mMA5","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"", "migrationStage":"", "server":""}} +{"logTime": "0810/203851", "correlationVector":"dsEgZ1fLcWSyDx6P45mMA5.0","action":"EncryptionKeysFetcher.DownloadKeys:", "result":"Success", "context":Key count: 10, Last key timestamp: 2026-07-17T21:16:54Z} +{"logTime": "0810/203851", "correlationVector":"dsEgZ1fLcWSyDx6P45mMA5.1","action":"EncryptionKeysManager::SetEncryptionKeys:", "result":"Success", "context":Key names[10]:[wimgRheq8lOIGfRV4WVcoKimTc/AOq0F+9IwiHp174I5F8axIfO8QCCbjE+9fg1EfqcrdO7m/RW7IuoOLPy6tw==][GdjhGEUfutVDRCUJOikLMkXGcpLd7Uw/1EcmxDQyl/czleXfAbh5HqA0PJRRCznjHzo3toviT7z0JXnA+liXQA==][FyZbP02mdYiJPYKaLVgtmzm6/U83YVKhhqAPS/pTdA4vq7nBrRDI5Jj2dVTByT16R08AkHEVlQHt44fUsFNgug==][YUky7ZK7bd2iWVL7pAvQz7q9P46FaQcoUWpMR1MebQzUvV6HzzY72Uag3T+UDYqQR0ewoBpnVMlAkMpMQZkRHA==][M7X+8hkU1gOr+gt7kESNKrIOQltK7LmM62a/ustC7uHDi5DJZw3djmlzb1VYjx4cZz0ptD/8/fRrQGXwyqdACg==][UECYbawrS/Luzn7cJ88XfKmR+Y5+aSB4P+DY/pbpVzcy0m33QhplS/SidutoXTKC8l/lwsL0tk8bKQDFN6ME5w==][XtlvKPhWPhaxb7J2Nb5w3uMEAu0mvD95RTWTbWb2R7WCJyftcYw6RjvDBhh3rWH7ejepTKMUwN88wsrFXHniqQ==][acPLEjd0BJ/kkL7u0BN30342USMSyJRqddIaZ/Q7F1XyWnkYvzOOFx7cDX/HMxXB/Ec0ojbxV5mVC8Vpb6Hg4w==][CsVCzdBgQ8vnG0XM1FiBJMDfLsF0BLwBbQmnXEgeolbMa15kFSj5pYQN1tvWrrfZA3UFzlpVCsM3pV4DQZzowQ==][Z8gs04R9mP5dM2DtFaTkwSDUYR23ghtyhSkUzNUhotvEHI1q2GS1N6uJRoTzMS+GBwpIqXq8Ovgslujv+2Nt6A==]} +{"logTime": "0810/203851", "correlationVector":"dsEgZ1fLcWSyDx6P45mMA5.2","action":"EncryptionKeysManager::SetEncryptionKeysWithTimestamps:", "result":"Success", "context":Key timestamps[10]:[2023-08-01T10:16:36Z][2023-09-05T18:01:02Z][2024-03-08T21:41:33Z][2024-04-12T06:14:40Z][2024-05-01T06:42:59Z][2024-10-31T20:02:53Z][2025-05-02T20:50:04Z][2025-06-11T10:46:10Z][2025-12-20T17:43:42Z][2026-07-17T21:16:54Z]} +{"logTime": "0810/203851", "correlationVector":"CToxOtCMG/BZ7QAHpqH4Cc","action":"Initial GetUpdates", "result":"", "context":Reason: NEW_CLIENT. cV=CToxOtCMG/BZ7QAHpqH4Cc} +{"logTime": "0810/203851", "correlationVector":"CToxOtCMG/BZ7QAHpqH4Cc.3","action":"GetUpdates Response", "result":"Success", "context":Received 1 update(s). cV=CToxOtCMG/BZ7QAHpqH4Cc.0;server=akswtt004000004;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/203851", "correlationVector":"1L2Un0tLe62YqIS9ggPkN+","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=1L2Un0tLe62YqIS9ggPkN+} +{"logTime": "0810/203852", "correlationVector":"1L2Un0tLe62YqIS9ggPkN+.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000i"}} +{"logTime": "0810/203852", "correlationVector":"1L2Un0tLe62YqIS9ggPkN+.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Passwords", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"104", "total":"104"}} +{"logTime": "0810/203852", "correlationVector":"1L2Un0tLe62YqIS9ggPkN+.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Device Info", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"32", "total":"32"}} +{"logTime": "0810/203852", "correlationVector":"1L2Un0tLe62YqIS9ggPkN+.4","action":"GetUpdates Response", "result":"Success", "context":Received 136 update(s). cV=1L2Un0tLe62YqIS9ggPkN+.0;server=akswtt00400000i;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/203852", "correlationVector":"fXHVavnHpQzswQGhXSv+uv","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=fXHVavnHpQzswQGhXSv+uv} +{"logTime": "0810/203855", "correlationVector":"fXHVavnHpQzswQGhXSv+uv.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000004"}} +{"logTime": "0810/203855", "correlationVector":"fXHVavnHpQzswQGhXSv+uv.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Bookmarks", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"25", "total":"25"}} +{"logTime": "0810/203855", "correlationVector":"fXHVavnHpQzswQGhXSv+uv.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"86", "total":"86"}} +{"logTime": "0810/203855", "correlationVector":"fXHVavnHpQzswQGhXSv+uv.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"75", "total":"75"}} +{"logTime": "0810/203855", "correlationVector":"fXHVavnHpQzswQGhXSv+uv.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"3", "total":"3"}} +{"logTime": "0810/203855", "correlationVector":"fXHVavnHpQzswQGhXSv+uv.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extension settings", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"57", "total":"57"}} +{"logTime": "0810/203855", "correlationVector":"fXHVavnHpQzswQGhXSv+uv.7","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Web Apps", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"4", "total":"4"}} +{"logTime": "0810/203855", "correlationVector":"fXHVavnHpQzswQGhXSv+uv.8","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=fXHVavnHpQzswQGhXSv+uv.0;server=akswtt004000004;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} +{"logTime": "0810/203855", "correlationVector":"k7RUtLdGg5Ij5XFR15Sn3h","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=k7RUtLdGg5Ij5XFR15Sn3h} +{"logTime": "0810/203856", "correlationVector":"k7RUtLdGg5Ij5XFR15Sn3h.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000o"}} +{"logTime": "0810/203856", "correlationVector":"k7RUtLdGg5Ij5XFR15Sn3h.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"250", "total":"250"}} +{"logTime": "0810/203856", "correlationVector":"k7RUtLdGg5Ij5XFR15Sn3h.3","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=k7RUtLdGg5Ij5XFR15Sn3h.0;server=akswtt00400000o;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} +{"logTime": "0810/203856", "correlationVector":"cc+hPbEB78sGWfjjTTxrGa","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=cc+hPbEB78sGWfjjTTxrGa} +{"logTime": "0810/203857", "correlationVector":"cc+hPbEB78sGWfjjTTxrGa.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000009"}} +{"logTime": "0810/203857", "correlationVector":"cc+hPbEB78sGWfjjTTxrGa.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"250", "total":"250"}} +{"logTime": "0810/203857", "correlationVector":"cc+hPbEB78sGWfjjTTxrGa.3","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=cc+hPbEB78sGWfjjTTxrGa.0;server=akswtt004000009;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} +{"logTime": "0810/203857", "correlationVector":"vPYT5TTJw5217flSvveNAM","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=vPYT5TTJw5217flSvveNAM} +{"logTime": "0810/203859", "correlationVector":"vPYT5TTJw5217flSvveNAM.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000o"}} +{"logTime": "0810/203859", "correlationVector":"vPYT5TTJw5217flSvveNAM.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Bookmarks", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} +{"logTime": "0810/203859", "correlationVector":"vPYT5TTJw5217flSvveNAM.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"13", "total":"13"}} +{"logTime": "0810/203859", "correlationVector":"vPYT5TTJw5217flSvveNAM.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill Profiles", "deleted":"9", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"15", "total":"15"}} +{"logTime": "0810/203859", "correlationVector":"vPYT5TTJw5217flSvveNAM.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"218", "total":"218"}} +{"logTime": "0810/203859", "correlationVector":"vPYT5TTJw5217flSvveNAM.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0810/203859", "correlationVector":"vPYT5TTJw5217flSvveNAM.7","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"1", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0810/203859", "correlationVector":"vPYT5TTJw5217flSvveNAM.8","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=vPYT5TTJw5217flSvveNAM.0;server=akswtt00400000o;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} +{"logTime": "0810/203859", "correlationVector":"VnTQUn5OERucd3Pgmauaf7","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=VnTQUn5OERucd3Pgmauaf7} +{"logTime": "0810/203859", "correlationVector":"VnTQUn5OERucd3Pgmauaf7.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000004"}} +{"logTime": "0810/203859", "correlationVector":"VnTQUn5OERucd3Pgmauaf7.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill Profiles", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0810/203859", "correlationVector":"VnTQUn5OERucd3Pgmauaf7.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"242", "total":"242"}} +{"logTime": "0810/203859", "correlationVector":"VnTQUn5OERucd3Pgmauaf7.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"3", "total":"3"}} +{"logTime": "0810/203859", "correlationVector":"VnTQUn5OERucd3Pgmauaf7.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"2", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} +{"logTime": "0810/203859", "correlationVector":"VnTQUn5OERucd3Pgmauaf7.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"1", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} +{"logTime": "0810/203859", "correlationVector":"VnTQUn5OERucd3Pgmauaf7.7","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=VnTQUn5OERucd3Pgmauaf7.0;server=akswtt004000004;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} +{"logTime": "0810/203859", "correlationVector":"SjoJoumNrGpDVM0jnqrWJY","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=SjoJoumNrGpDVM0jnqrWJY} +{"logTime": "0810/203900", "correlationVector":"SjoJoumNrGpDVM0jnqrWJY.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000009"}} +{"logTime": "0810/203900", "correlationVector":"SjoJoumNrGpDVM0jnqrWJY.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"26", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"31", "total":"31"}} +{"logTime": "0810/203900", "correlationVector":"SjoJoumNrGpDVM0jnqrWJY.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill Profiles", "deleted":"2", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} +{"logTime": "0810/203900", "correlationVector":"SjoJoumNrGpDVM0jnqrWJY.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Autofill", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"6", "total":"6"}} +{"logTime": "0810/203900", "correlationVector":"SjoJoumNrGpDVM0jnqrWJY.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Extensions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0810/203900", "correlationVector":"SjoJoumNrGpDVM0jnqrWJY.6","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"42", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"65", "total":"65"}} +{"logTime": "0810/203900", "correlationVector":"SjoJoumNrGpDVM0jnqrWJY.7","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Edge Hub App Usage", "deleted":"1", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} +{"logTime": "0810/203900", "correlationVector":"SjoJoumNrGpDVM0jnqrWJY.8","action":"GetUpdates Response", "result":"Success", "context":Received 107 update(s). cV=SjoJoumNrGpDVM0jnqrWJY.0;server=akswtt004000009;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/203900", "correlationVector":"mmdy/vd2o0207y+txVlrSn","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=mmdy/vd2o0207y+txVlrSn} +{"logTime": "0810/203901", "correlationVector":"mmdy/vd2o0207y+txVlrSn.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000o"}} +{"logTime": "0810/203901", "correlationVector":"mmdy/vd2o0207y+txVlrSn.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"History", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"250", "total":"250"}} +{"logTime": "0810/203901", "correlationVector":"mmdy/vd2o0207y+txVlrSn.3","action":"GetUpdates Response", "result":"Success", "context":Received 250 update(s). cV=mmdy/vd2o0207y+txVlrSn.0;server=akswtt00400000o;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted Some updates remain.} +{"logTime": "0810/203901", "correlationVector":"jqSGrnrhtvRQ+PMeEIULIy","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=jqSGrnrhtvRQ+PMeEIULIy} +{"logTime": "0810/203901", "correlationVector":"jqSGrnrhtvRQ+PMeEIULIy.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000j"}} +{"logTime": "0810/203901", "correlationVector":"jqSGrnrhtvRQ+PMeEIULIy.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"History", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"61", "total":"61"}} +{"logTime": "0810/203901", "correlationVector":"jqSGrnrhtvRQ+PMeEIULIy.3","action":"GetUpdates Response", "result":"Success", "context":Received 61 update(s). cV=jqSGrnrhtvRQ+PMeEIULIy.0;server=akswtt00400000j;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/203901", "correlationVector":"UBkjNRxR4SheXDeXwbLRXb","action":"Normal GetUpdate request", "result":"", "context":cV=UBkjNRxR4SheXDeXwbLRXb +Nudged types: Sessions, Device Info +Refresh requested types: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys} +{"logTime": "0810/203902", "correlationVector":"UBkjNRxR4SheXDeXwbLRXb.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000000"}} +{"logTime": "0810/203902", "correlationVector":"UBkjNRxR4SheXDeXwbLRXb.2","action":"GetUpdates Response", "result":"Success", "context":Received 0 update(s). cV=UBkjNRxR4SheXDeXwbLRXb.0;server=akswtt004000000;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/203902", "correlationVector":"o/yshSC3ro8LEAXzh+eYln","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Sessions, Device Info} +{"logTime": "0810/203903", "correlationVector":"o/yshSC3ro8LEAXzh+eYln.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000009"}} +{"logTime": "0810/203903", "correlationVector":"o/yshSC3ro8LEAXzh+eYln.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=o/yshSC3ro8LEAXzh+eYln.0;server=akswtt004000009;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/203903", "correlationVector":"ciMjB+eMm7kXH5yvV3YJ0H","action":"Poll GetUpdate request", "result":"", "context":cV=ciMjB+eMm7kXH5yvV3YJ0H} +{"logTime": "0810/203903", "correlationVector":"ciMjB+eMm7kXH5yvV3YJ0H.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000j"}} +{"logTime": "0810/203903", "correlationVector":"ciMjB+eMm7kXH5yvV3YJ0H.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"2", "total":"2"}} +{"logTime": "0810/203903", "correlationVector":"ciMjB+eMm7kXH5yvV3YJ0H.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Device Info", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0810/203903", "correlationVector":"ciMjB+eMm7kXH5yvV3YJ0H.4","action":"GetUpdates Response", "result":"Success", "context":Received 3 update(s). cV=ciMjB+eMm7kXH5yvV3YJ0H.0;server=akswtt00400000j;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/203950", "correlationVector":"bg9/6RPVFaiQ/CGlOSxuw7","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Preferences} +{"logTime": "0810/203950", "correlationVector":"bg9/6RPVFaiQ/CGlOSxuw7.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000j"}} +{"logTime": "0810/203950", "correlationVector":"bg9/6RPVFaiQ/CGlOSxuw7.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=bg9/6RPVFaiQ/CGlOSxuw7.0;server=akswtt00400000j;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/204350", "correlationVector":"Sexl9B3mXUeUz/YLd75wDu","action":"Commit Request", "result":"", "context":Item count: 2 +Contributing types: Preferences, Sessions} +{"logTime": "0810/204350", "correlationVector":"Sexl9B3mXUeUz/YLd75wDu.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400001b"}} +{"logTime": "0810/204350", "correlationVector":"Sexl9B3mXUeUz/YLd75wDu.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=Sexl9B3mXUeUz/YLd75wDu.0;server=akswtt00400001b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/204350", "correlationVector":"Sexl9B3mXUeUz/YLd75wDu.3","action":"Commit.Preferences", "result":"Success", "context":{"id":"cf72592b-0f57-42c2-a5ac-c39972f7fea5", "isDeleted":"true", "size":"0", "version":"1786394390512"}} +{"logTime": "0810/204500", "correlationVector":"jPl5SSgMV3AJB8X2RvLPVG","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Sessions, History} +{"logTime": "0810/204501", "correlationVector":"jPl5SSgMV3AJB8X2RvLPVG.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000b"}} +{"logTime": "0810/204501", "correlationVector":"jPl5SSgMV3AJB8X2RvLPVG.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=jPl5SSgMV3AJB8X2RvLPVG.0;server=akswtt00400000b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/204717", "correlationVector":"XInqbRbWu6RSRyhw6DQUaJ","action":"Commit Request", "result":"", "context":Item count: 4 +Contributing types: Preferences, Sessions, History} +{"logTime": "0810/204719", "correlationVector":"XInqbRbWu6RSRyhw6DQUaJ.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000f"}} +{"logTime": "0810/204719", "correlationVector":"XInqbRbWu6RSRyhw6DQUaJ.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=XInqbRbWu6RSRyhw6DQUaJ.0;server=akswtt00400000f;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/210228", "correlationVector":"ZGnWUAO/srlQFXgg2PkXOo","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Sessions} +{"logTime": "0810/210229", "correlationVector":"ZGnWUAO/srlQFXgg2PkXOo.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000d"}} +{"logTime": "0810/210229", "correlationVector":"ZGnWUAO/srlQFXgg2PkXOo.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=ZGnWUAO/srlQFXgg2PkXOo.0;server=akswtt00400000d;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/210718", "correlationVector":"vURo0LQigUNk9061JpRXR4","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Sessions, History} +{"logTime": "0810/210719", "correlationVector":"vURo0LQigUNk9061JpRXR4.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000m"}} +{"logTime": "0810/210719", "correlationVector":"vURo0LQigUNk9061JpRXR4.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=vURo0LQigUNk9061JpRXR4.0;server=akswtt00400000m;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/211010", "correlationVector":"pVjEfT0zMGiDW8OsN5Km//","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Sessions, History} +{"logTime": "0810/211011", "correlationVector":"pVjEfT0zMGiDW8OsN5Km//.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000s"}} +{"logTime": "0810/211011", "correlationVector":"pVjEfT0zMGiDW8OsN5Km//.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=pVjEfT0zMGiDW8OsN5Km//.0;server=akswtt00400000s;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/211318", "correlationVector":"1pywv32mGMb4v7JjUKsMSM","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Sessions} +{"logTime": "0810/211319", "correlationVector":"1pywv32mGMb4v7JjUKsMSM.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000d"}} +{"logTime": "0810/211319", "correlationVector":"1pywv32mGMb4v7JjUKsMSM.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=1pywv32mGMb4v7JjUKsMSM.0;server=akswtt00400000d;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/211531", "correlationVector":"hiYuqjDUN047LzOsAWqvQ/","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Sessions, History} +{"logTime": "0810/211532", "correlationVector":"hiYuqjDUN047LzOsAWqvQ/.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000003"}} +{"logTime": "0810/211532", "correlationVector":"hiYuqjDUN047LzOsAWqvQ/.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=hiYuqjDUN047LzOsAWqvQ/.0;server=akswtt004000003;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/212116", "correlationVector":"CQIBjjDXxSUNacv6MymrY9","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Device Info} +{"logTime": "0810/212117", "correlationVector":"CQIBjjDXxSUNacv6MymrY9.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000g"}} +{"logTime": "0810/212117", "correlationVector":"CQIBjjDXxSUNacv6MymrY9.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=CQIBjjDXxSUNacv6MymrY9.0;server=akswtt00400000g;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/212411", "correlationVector":"x+JW3bbdMkOMPBhPyDbBIY","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Sessions} +{"logTime": "0810/212412", "correlationVector":"x+JW3bbdMkOMPBhPyDbBIY.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300001r"}} +{"logTime": "0810/212412", "correlationVector":"x+JW3bbdMkOMPBhPyDbBIY.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=x+JW3bbdMkOMPBhPyDbBIY.0;server=akswtt10300001r;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/213120", "correlationVector":"9sONruU5QvG9ULNWOYvKIt","action":"Commit Request", "result":"", "context":Item count: 5 +Contributing types: Sessions, History} +{"logTime": "0810/213121", "correlationVector":"9sONruU5QvG9ULNWOYvKIt.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400001b"}} +{"logTime": "0810/213121", "correlationVector":"9sONruU5QvG9ULNWOYvKIt.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=9sONruU5QvG9ULNWOYvKIt.0;server=akswtt00400001b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/213221", "correlationVector":"44gpiFA6eR59aCgav/G21G","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Sessions, History} +{"logTime": "0810/213222", "correlationVector":"44gpiFA6eR59aCgav/G21G.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000009"}} +{"logTime": "0810/213222", "correlationVector":"44gpiFA6eR59aCgav/G21G.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=44gpiFA6eR59aCgav/G21G.0;server=akswtt004000009;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/213424", "correlationVector":"pxJZLjuxayC4mWw1/54kFZ","action":"Commit Request", "result":"", "context":Item count: 4 +Contributing types: Sessions, History} +{"logTime": "0810/213425", "correlationVector":"pxJZLjuxayC4mWw1/54kFZ.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt00400000i"}} +{"logTime": "0810/213425", "correlationVector":"pxJZLjuxayC4mWw1/54kFZ.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=pxJZLjuxayC4mWw1/54kFZ.0;server=akswtt00400000i;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0810/213532", "correlationVector":"09CvGSoJcyuAZO24p2KvnU","action":"Commit Request", "result":"", "context":Item count: 4 +Contributing types: Sessions, History} +{"logTime": "0810/213533", "correlationVector":"09CvGSoJcyuAZO24p2KvnU.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt004000009"}} +{"logTime": "0810/213533", "correlationVector":"09CvGSoJcyuAZO24p2KvnU.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=09CvGSoJcyuAZO24p2KvnU.0;server=akswtt004000009;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-010-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0811/213152", "correlationVector":"3nSvdnkzJZVa9kJ7aXwAbE.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300000w"}} +{"logTime": "0811/213152", "correlationVector":"3nSvdnkzJZVa9kJ7aXwAbE.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Encryption Keys", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0811/213152", "correlationVector":"gnK0MxNgyXbNWPs59tp1Gv","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"", "migrationStage":"", "server":""}} +{"logTime": "0811/213152", "correlationVector":"gnK0MxNgyXbNWPs59tp1Gv.0","action":"EncryptionKeysFetcher.DownloadKeys:", "result":"Success", "context":Key count: 10, Last key timestamp: 2026-07-17T21:16:54Z} +{"logTime": "0811/213152", "correlationVector":"gnK0MxNgyXbNWPs59tp1Gv.1","action":"EncryptionKeysManager::SetEncryptionKeys:", "result":"Success", "context":Key names[10]:[wimgRheq8lOIGfRV4WVcoKimTc/AOq0F+9IwiHp174I5F8axIfO8QCCbjE+9fg1EfqcrdO7m/RW7IuoOLPy6tw==][GdjhGEUfutVDRCUJOikLMkXGcpLd7Uw/1EcmxDQyl/czleXfAbh5HqA0PJRRCznjHzo3toviT7z0JXnA+liXQA==][FyZbP02mdYiJPYKaLVgtmzm6/U83YVKhhqAPS/pTdA4vq7nBrRDI5Jj2dVTByT16R08AkHEVlQHt44fUsFNgug==][YUky7ZK7bd2iWVL7pAvQz7q9P46FaQcoUWpMR1MebQzUvV6HzzY72Uag3T+UDYqQR0ewoBpnVMlAkMpMQZkRHA==][M7X+8hkU1gOr+gt7kESNKrIOQltK7LmM62a/ustC7uHDi5DJZw3djmlzb1VYjx4cZz0ptD/8/fRrQGXwyqdACg==][UECYbawrS/Luzn7cJ88XfKmR+Y5+aSB4P+DY/pbpVzcy0m33QhplS/SidutoXTKC8l/lwsL0tk8bKQDFN6ME5w==][XtlvKPhWPhaxb7J2Nb5w3uMEAu0mvD95RTWTbWb2R7WCJyftcYw6RjvDBhh3rWH7ejepTKMUwN88wsrFXHniqQ==][acPLEjd0BJ/kkL7u0BN30342USMSyJRqddIaZ/Q7F1XyWnkYvzOOFx7cDX/HMxXB/Ec0ojbxV5mVC8Vpb6Hg4w==][CsVCzdBgQ8vnG0XM1FiBJMDfLsF0BLwBbQmnXEgeolbMa15kFSj5pYQN1tvWrrfZA3UFzlpVCsM3pV4DQZzowQ==][Z8gs04R9mP5dM2DtFaTkwSDUYR23ghtyhSkUzNUhotvEHI1q2GS1N6uJRoTzMS+GBwpIqXq8Ovgslujv+2Nt6A==]} +{"logTime": "0811/213152", "correlationVector":"gnK0MxNgyXbNWPs59tp1Gv.2","action":"EncryptionKeysManager::SetEncryptionKeysWithTimestamps:", "result":"Success", "context":Key timestamps[10]:[2023-08-01T10:16:36Z][2023-09-05T18:01:02Z][2024-03-08T21:41:33Z][2024-04-12T06:14:40Z][2024-05-01T06:42:59Z][2024-10-31T20:02:53Z][2025-05-02T20:50:04Z][2025-06-11T10:46:10Z][2025-12-20T17:43:42Z][2026-07-17T21:16:54Z]} +{"logTime": "0811/213152", "correlationVector":"3nSvdnkzJZVa9kJ7aXwAbE","action":"Initial GetUpdates", "result":"", "context":Reason: NEW_CLIENT. cV=3nSvdnkzJZVa9kJ7aXwAbE} +{"logTime": "0811/213152", "correlationVector":"3nSvdnkzJZVa9kJ7aXwAbE.3","action":"GetUpdates Response", "result":"Success", "context":Received 1 update(s). cV=3nSvdnkzJZVa9kJ7aXwAbE.0;server=akswtt10300000w;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0811/213152", "correlationVector":"xmqLOPR5RCWv3XOGngT7Lt","action":"Initial GetUpdates", "result":"", "context":Reason: NEWLY_SUPPORTED_DATATYPE. cV=xmqLOPR5RCWv3XOGngT7Lt} +{"logTime": "0811/213153", "correlationVector":"xmqLOPR5RCWv3XOGngT7Lt.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000015"}} +{"logTime": "0811/213153", "correlationVector":"xmqLOPR5RCWv3XOGngT7Lt.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Passwords", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"104", "total":"104"}} +{"logTime": "0811/213153", "correlationVector":"xmqLOPR5RCWv3XOGngT7Lt.3","action":"GetUpdates Response", "result":"Success", "context":Received 104 update(s). cV=xmqLOPR5RCWv3XOGngT7Lt.0;server=akswtt103000015;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0811/213153", "correlationVector":"w7WkfVWNXxiIYZie8K01Fw","action":"Normal GetUpdate request", "result":"", "context":cV=w7WkfVWNXxiIYZie8K01Fw +Nudged types: Preferences, Sessions, Device Info, History +Refresh requested types: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys} +{"logTime": "0811/213154", "correlationVector":"w7WkfVWNXxiIYZie8K01Fw.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300001b"}} +{"logTime": "0811/213154", "correlationVector":"w7WkfVWNXxiIYZie8K01Fw.2","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Preferences", "deleted":"3", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"5", "total":"5"}} +{"logTime": "0811/213154", "correlationVector":"w7WkfVWNXxiIYZie8K01Fw.3","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Sessions", "deleted":"6", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"9", "total":"9"}} +{"logTime": "0811/213154", "correlationVector":"w7WkfVWNXxiIYZie8K01Fw.4","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"Device Info", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"1", "total":"1"}} +{"logTime": "0811/213154", "correlationVector":"w7WkfVWNXxiIYZie8K01Fw.5","action":"ProcessGetUpdates", "result":"Done", "context":{"dataType":"History", "deleted":"0", "process_failed_to_decrypt":"0", "process_pending_decryption":"0", "process_success":"63", "total":"63"}} +{"logTime": "0811/213154", "correlationVector":"w7WkfVWNXxiIYZie8K01Fw.6","action":"GetUpdates Response", "result":"Success", "context":Received 78 update(s). cV=w7WkfVWNXxiIYZie8K01Fw.0;server=akswtt10300001b;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0811/213154", "correlationVector":"jK/2hBynuMZMOkB+BVUokV","action":"Poll GetUpdate request", "result":"", "context":cV=jK/2hBynuMZMOkB+BVUokV} +{"logTime": "0811/213154", "correlationVector":"jK/2hBynuMZMOkB+BVUokV.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300001r"}} +{"logTime": "0811/213154", "correlationVector":"jK/2hBynuMZMOkB+BVUokV.2","action":"GetUpdates Response", "result":"Success", "context":Received 0 update(s). cV=jK/2hBynuMZMOkB+BVUokV.0;server=akswtt10300001r;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0811/213247", "correlationVector":"DIZeAYr+N3PrlyAvG1qnfL","action":"Commit Request", "result":"", "context":Item count: 3 +Contributing types: Preferences, Sessions} +{"logTime": "0811/213248", "correlationVector":"DIZeAYr+N3PrlyAvG1qnfL.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt10300000w"}} +{"logTime": "0811/213248", "correlationVector":"DIZeAYr+N3PrlyAvG1qnfL.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=DIZeAYr+N3PrlyAvG1qnfL.0;server=akswtt10300000w;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} +{"logTime": "0811/213252", "correlationVector":"v8YtaiJQdWQ3J8a/ysHqBE","action":"Commit Request", "result":"", "context":Item count: 1 +Contributing types: Device Info} +{"logTime": "0811/213252", "correlationVector":"v8YtaiJQdWQ3J8a/ysHqBE.1","action":"SyncServerConnectionManagerRequest", "result":"SYNC_SERVER_OK", "context":{"environment":"Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral", "migrationStage":"NotStarted", "server":"akswtt103000019"}} +{"logTime": "0811/213252", "correlationVector":"v8YtaiJQdWQ3J8a/ysHqBE.2","action":"Commit Response", "result":"Success", "context":Result: Success. cV=v8YtaiJQdWQ3J8a/ysHqBE.0;server=akswtt103000019;cloudType=Consumer;environment=Prod_germanywestcentral_prod-s01-011-eur-germanywestcentral;migrationStage=NotStarted} diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Logs/sync_diagnostic.log b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Logs/sync_diagnostic.log index d314179..040132a 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Logs/sync_diagnostic.log +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Logs/sync_diagnostic.log @@ -533,3 +533,276 @@ 2026-08-05 19:31:12.499: [INFO][SyncEngineBackend::DoStartSyncing] Start syncing 2026-08-05 20:59:06.702: [INFO][Sync] Reset engine, reason: 0 2026-08-05 20:59:06.702: [INFO][Sync] Reset engine with reason: 0 +2026-08-09 21:20:07.091: [INFO][Sync] SyncState after authenticated was: FeatureCanStart +2026-08-09 21:20:07.986: [INFO][SyncAuthManager::SetLastAuthError] Current auth error: None +2026-08-09 21:20:07.986: [INFO][SyncAuthManager::EdgeLogTokenErrorState] Token error with: None for account type: MSA +2026-08-09 21:20:07.986: [INFO][Sync] Credentials changed for: EdgeSyncKeyDataScope +2026-08-09 21:20:12.233: [INFO][Sync] Try to start sync engine +2026-08-09 21:20:12.434: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Encryption Keys +2026-08-09 21:20:12.434: [INFO][SyncEngineBackend::LoadAndConnectNigoriController] Load and connect Nigori controller +2026-08-09 21:20:12.434: [INFO][SyncEngineBackend::DoInitialize] Control Types added: Encryption Keys +2026-08-09 21:20:12.434: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: Encryption Keys with reason: 3 +2026-08-09 21:20:12.434: [INFO][SyncEngineBackend::DoUpdateKeyDataCredentials] Update key data credentials +2026-08-09 21:20:12.434: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Configure job was blocked +2026-08-09 21:20:12.438: [INFO][SyncAuthManager::SetLastAuthError] Current auth error: None +2026-08-09 21:20:12.438: [INFO][SyncAuthManager::EdgeLogTokenErrorState] Token error with: None for account type: MSA +2026-08-09 21:20:12.438: [INFO][Sync] Credentials changed for: EdgeSyncScopeNew +2026-08-09 21:20:12.438: [INFO][SyncEngineBackend::DoUpdateCredentials] Update credentials +2026-08-09 21:20:12.438: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Blocked types: and types to download: Encryption Keys +2026-08-09 21:20:13.145: [INFO][SyncEngineBackend::DoUpdateKeyDataCredentials] Update key data credentials +2026-08-09 21:20:13.156: [INFO][Sync] Started DataTypeManager configuration, reason: 4 +2026-08-09 21:20:13.156: [INFO][Sync] Configuring for: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys, reason: 4, current state: 0 +2026-08-09 21:20:13.156: [WARN][Sync] Crypto error data types: Passwords, Autofill Profiles, Autofill +2026-08-09 21:20:13.158: [INFO][Sync] Configure, desired: Bookmarks, Preferences, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys; Allow fail: Passwords, Autofill Profiles, Autofill +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Bookmarks +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Preferences +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Extensions +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Sessions +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Extension settings +2026-08-09 21:20:13.158: [INFO][Sync] Loading: History Delete Directives +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Device Info +2026-08-09 21:20:13.158: [INFO][Sync] Loading: User Consents +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Send Tab To Self +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Web Apps +2026-08-09 21:20:13.158: [INFO][Sync] Loading: History +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Saved Tab Group +2026-08-09 21:20:13.158: [INFO][Sync] Loading: WebAuthn Credentials +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Edge E Drop +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Edge Hub App Usage +2026-08-09 21:20:13.158: [INFO][Sync] Loading: Edge Workspace +2026-08-09 21:20:13.164: [INFO][Sync] All data types are ready for configure. +2026-08-09 21:20:13.685: [INFO][Sync] Started DataTypeManager configuration, reason: 5 +2026-08-09 21:20:13.685: [INFO][Sync] Configuring for: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys, reason: 5, current state: 1 +2026-08-09 21:20:13.689: [INFO][SyncEngineBackend::DoStartConfiguration] Start configuration +2026-08-09 21:20:13.689: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 4 +2026-08-09 21:20:13.689: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-09 21:20:13.689: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 3 +2026-08-09 21:20:13.689: [WARN][Sync] Reconfigure requested while configuration ongoing. +2026-08-09 21:20:13.689: [INFO][Sync] Configuring for: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys, reason: 5, current state: 2 +2026-08-09 21:20:13.689: [INFO][Sync] Configure, desired: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys; Allow fail: +2026-08-09 21:20:13.689: [INFO][Sync] Loading: Passwords +2026-08-09 21:20:13.689: [INFO][Sync] Loading: Autofill Profiles +2026-08-09 21:20:13.689: [INFO][Sync] Loading: Autofill +2026-08-09 21:20:13.690: [INFO][Sync] All data types are ready for configure. +2026-08-09 21:20:13.690: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Passwords +2026-08-09 21:20:13.690: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 5 +2026-08-09 21:20:13.690: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-09 21:20:13.690: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 3 +2026-08-09 21:20:13.690: [INFO][Sync] Prepare to configure types: Passwords, Encryption Keys +2026-08-09 21:20:13.690: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: Passwords, Encryption Keys with reason: 5 +2026-08-09 21:20:13.690: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Blocked types: and types to download: Passwords, Encryption Keys +2026-08-09 21:20:14.182: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: Passwords, Encryption Keys +2026-08-09 21:20:14.186: [INFO][Sync] ConfigurationDone, failed: , succeeded: Passwords, Encryption Keys, remaining count: 2 +2026-08-09 21:20:14.186: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 5 +2026-08-09 21:20:14.186: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-09 21:20:14.186: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 1 +2026-08-09 21:20:14.186: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 5 +2026-08-09 21:20:14.186: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-09 21:20:14.186: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 0 +2026-08-09 21:20:14.186: [INFO][Sync] Configuration completed, state: 7 +2026-08-09 21:20:14.186: [INFO][Sync] Configured DataTypeManager: Ok +2026-08-09 21:20:14.190: [INFO][SyncEngineBackend::DoStartSyncing] Start syncing +2026-08-09 21:35:59.434: [INFO][Sync] Reset engine, reason: 0 +2026-08-09 21:35:59.434: [INFO][Sync] Reset engine with reason: 0 +2026-08-10 20:38:48.195: [INFO][Sync] Reset engine, reason: 8 +2026-08-10 20:38:48.195: [INFO][Sync] Stopped: Bookmarks +2026-08-10 20:38:48.195: [INFO][Sync] Stopped: Preferences +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Passwords +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Autofill Profiles +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Autofill +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Extensions +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Sessions +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Extension settings +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: History Delete Directives +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Device Info +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: User Consents +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Send Tab To Self +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Web Apps +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: History +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Saved Tab Group +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: WebAuthn Credentials +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Edge E Drop +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Edge Hub App Usage +2026-08-10 20:38:48.196: [INFO][Sync] Stopped: Edge Workspace +2026-08-10 20:38:48.196: [INFO][Sync] SyncState after authenticated was: NotSignedIn +2026-08-10 20:38:48.323: [INFO][Sync] Reset engine, reason: 8 +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Bookmarks +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Preferences +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Passwords +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Autofill Profiles +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Autofill +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Extensions +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Sessions +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Extension settings +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: History Delete Directives +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Device Info +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: User Consents +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Send Tab To Self +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Web Apps +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: History +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Saved Tab Group +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: WebAuthn Credentials +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Edge E Drop +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Edge Hub App Usage +2026-08-10 20:38:48.323: [INFO][Sync] Stopped: Edge Workspace +2026-08-10 20:38:50.016: [INFO][Sync] Try to start sync engine +2026-08-10 20:38:50.017: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Encryption Keys +2026-08-10 20:38:50.017: [INFO][SyncEngineBackend::LoadAndConnectNigoriController] Load and connect Nigori controller +2026-08-10 20:38:50.017: [INFO][SyncEngineBackend::DoInitialize] Control Types added: Encryption Keys +2026-08-10 20:38:50.017: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: Encryption Keys with reason: 3 +2026-08-10 20:38:50.017: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Configure job was blocked +2026-08-10 20:38:50.039: [INFO][SyncAuthManager::SetLastAuthError] Current auth error: None +2026-08-10 20:38:50.039: [INFO][SyncAuthManager::EdgeLogTokenErrorState] Token error with: None for account type: MSA +2026-08-10 20:38:50.039: [INFO][Sync] Credentials changed for: EdgeSyncScopeNew +2026-08-10 20:38:50.502: [INFO][SyncAuthManager::SetLastAuthError] Current auth error: None +2026-08-10 20:38:50.502: [INFO][SyncAuthManager::EdgeLogTokenErrorState] Token error with: None for account type: MSA +2026-08-10 20:38:50.502: [INFO][Sync] Credentials changed for: EdgeSyncKeyDataScope +2026-08-10 20:38:50.502: [INFO][SyncEngineBackend::DoUpdateKeyDataCredentials] Update key data credentials +2026-08-10 20:38:50.502: [INFO][SyncEngineBackend::DoUpdateCredentials] Update credentials +2026-08-10 20:38:50.502: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Blocked types: and types to download: Encryption Keys +2026-08-10 20:38:51.373: [INFO][Sync] Started DataTypeManager configuration, reason: 4 +2026-08-10 20:38:51.373: [INFO][Sync] Configuring for: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys, reason: 4, current state: 0 +2026-08-10 20:38:51.373: [WARN][Sync] Crypto error data types: Passwords, Autofill Profiles, Autofill +2026-08-10 20:38:51.376: [INFO][Sync] Configure, desired: Bookmarks, Preferences, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys; Allow fail: Passwords, Autofill Profiles, Autofill +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Bookmarks +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Preferences +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Extensions +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Sessions +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Extension settings +2026-08-10 20:38:51.376: [INFO][Sync] Loading: History Delete Directives +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Device Info +2026-08-10 20:38:51.376: [INFO][Sync] Loading: User Consents +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Send Tab To Self +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Web Apps +2026-08-10 20:38:51.376: [INFO][Sync] Loading: History +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Saved Tab Group +2026-08-10 20:38:51.376: [INFO][Sync] Loading: WebAuthn Credentials +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Edge E Drop +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Edge Hub App Usage +2026-08-10 20:38:51.376: [INFO][Sync] Loading: Edge Workspace +2026-08-10 20:38:51.384: [INFO][Sync] All data types are ready for configure. +2026-08-10 20:38:51.863: [INFO][Sync] Started DataTypeManager configuration, reason: 5 +2026-08-10 20:38:51.863: [INFO][Sync] Configuring for: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys, reason: 5, current state: 1 +2026-08-10 20:38:51.867: [INFO][SyncEngineBackend::DoStartConfiguration] Start configuration +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Bookmarks +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Preferences +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Extensions +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Sessions +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Extension settings +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for History Delete Directives +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Device Info +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Send Tab To Self +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Web Apps +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for History +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Saved Tab Group +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for WebAuthn Credentials +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Edge E Drop +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Edge Hub App Usage +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Edge Workspace +2026-08-10 20:38:51.867: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 4 +2026-08-10 20:38:51.867: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-10 20:38:51.868: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 3 +2026-08-10 20:38:51.868: [WARN][Sync] Reconfigure requested while configuration ongoing. +2026-08-10 20:38:51.868: [INFO][Sync] Configuring for: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys, reason: 5, current state: 2 +2026-08-10 20:38:51.868: [INFO][Sync] Configure, desired: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys; Allow fail: +2026-08-10 20:38:51.868: [INFO][Sync] Loading: Passwords +2026-08-10 20:38:51.868: [INFO][Sync] Loading: Autofill Profiles +2026-08-10 20:38:51.868: [INFO][Sync] Loading: Autofill +2026-08-10 20:38:51.868: [INFO][Sync] All data types are ready for configure. +2026-08-10 20:38:51.868: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Passwords +2026-08-10 20:38:51.868: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Autofill Profiles +2026-08-10 20:38:51.868: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Autofill +2026-08-10 20:38:51.868: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 5 +2026-08-10 20:38:51.868: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-10 20:38:51.870: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 3 +2026-08-10 20:38:51.870: [INFO][Sync] Prepare to configure types: Passwords, Device Info, Edge E Drop, Encryption Keys +2026-08-10 20:38:51.870: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: Passwords, Device Info, Edge E Drop, Encryption Keys with reason: 5 +2026-08-10 20:38:51.870: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Blocked types: and types to download: Passwords, Device Info, Edge E Drop, Encryption Keys +2026-08-10 20:38:52.763: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: Passwords, Device Info, Edge E Drop, Encryption Keys +2026-08-10 20:38:52.765: [INFO][Sync] ConfigurationDone, failed: , succeeded: Passwords, Device Info, Edge E Drop, Encryption Keys, remaining count: 2 +2026-08-10 20:38:52.765: [INFO][Sync] Prepare to configure types: Bookmarks, Preferences, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Send Tab To Self, Web Apps, Saved Tab Group, WebAuthn Credentials, Edge Hub App Usage, Edge Workspace, Encryption Keys +2026-08-10 20:38:52.766: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: Bookmarks, Preferences, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Send Tab To Self, Web Apps, Saved Tab Group, WebAuthn Credentials, Edge Hub App Usage, Edge Workspace, Encryption Keys with reason: 5 +2026-08-10 20:38:52.766: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Blocked types: and types to download: Bookmarks, Preferences, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Send Tab To Self, Web Apps, Saved Tab Group, WebAuthn Credentials, Edge Hub App Usage, Edge Workspace, Encryption Keys +2026-08-10 20:39:00.329: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: Bookmarks, Preferences, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Send Tab To Self, Web Apps, Saved Tab Group, WebAuthn Credentials, Edge Hub App Usage, Edge Workspace, Encryption Keys +2026-08-10 20:39:00.331: [INFO][Sync] ConfigurationDone, failed: , succeeded: Bookmarks, Preferences, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Send Tab To Self, Web Apps, Saved Tab Group, WebAuthn Credentials, Edge Hub App Usage, Edge Workspace, Encryption Keys, remaining count: 1 +2026-08-10 20:39:00.331: [INFO][Sync] Prepare to configure types: History, Encryption Keys +2026-08-10 20:39:00.331: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: History, Encryption Keys with reason: 5 +2026-08-10 20:39:00.331: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Blocked types: and types to download: History, Encryption Keys +2026-08-10 20:39:01.666: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: History, Encryption Keys +2026-08-10 20:39:01.669: [INFO][Sync] ConfigurationDone, failed: , succeeded: History, Encryption Keys, remaining count: 0 +2026-08-10 20:39:01.669: [INFO][Sync] Configuration completed, state: 7 +2026-08-10 20:39:01.669: [INFO][Sync] Configured DataTypeManager: Ok +2026-08-10 20:39:01.671: [INFO][SyncEngineBackend::DoStartSyncing] Start syncing +2026-08-10 21:36:23.146: [INFO][Sync] Reset engine, reason: 0 +2026-08-10 21:36:23.146: [INFO][Sync] Reset engine with reason: 0 +2026-08-11 21:31:45.865: [INFO][Sync] SyncState after authenticated was: FeatureCanStart +2026-08-11 21:31:46.706: [INFO][SyncAuthManager::SetLastAuthError] Current auth error: None +2026-08-11 21:31:46.706: [INFO][SyncAuthManager::EdgeLogTokenErrorState] Token error with: None for account type: MSA +2026-08-11 21:31:46.706: [INFO][Sync] Credentials changed for: EdgeSyncKeyDataScope +2026-08-11 21:31:51.517: [INFO][Sync] Try to start sync engine +2026-08-11 21:31:51.641: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Encryption Keys +2026-08-11 21:31:51.641: [INFO][SyncEngineBackend::LoadAndConnectNigoriController] Load and connect Nigori controller +2026-08-11 21:31:51.641: [INFO][SyncEngineBackend::DoInitialize] Control Types added: Encryption Keys +2026-08-11 21:31:51.641: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: Encryption Keys with reason: 3 +2026-08-11 21:31:51.641: [INFO][SyncEngineBackend::DoUpdateKeyDataCredentials] Update key data credentials +2026-08-11 21:31:51.641: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Configure job was blocked +2026-08-11 21:31:51.645: [INFO][SyncAuthManager::SetLastAuthError] Current auth error: None +2026-08-11 21:31:51.645: [INFO][SyncAuthManager::EdgeLogTokenErrorState] Token error with: None for account type: MSA +2026-08-11 21:31:51.645: [INFO][Sync] Credentials changed for: EdgeSyncScopeNew +2026-08-11 21:31:51.645: [INFO][SyncEngineBackend::DoUpdateCredentials] Update credentials +2026-08-11 21:31:51.645: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Blocked types: and types to download: Encryption Keys +2026-08-11 21:31:52.322: [INFO][SyncEngineBackend::DoUpdateKeyDataCredentials] Update key data credentials +2026-08-11 21:31:52.327: [INFO][Sync] Started DataTypeManager configuration, reason: 4 +2026-08-11 21:31:52.327: [INFO][Sync] Configuring for: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys, reason: 4, current state: 0 +2026-08-11 21:31:52.327: [WARN][Sync] Crypto error data types: Passwords, Autofill Profiles, Autofill +2026-08-11 21:31:52.328: [INFO][Sync] Configure, desired: Bookmarks, Preferences, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys; Allow fail: Passwords, Autofill Profiles, Autofill +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Bookmarks +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Preferences +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Extensions +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Sessions +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Extension settings +2026-08-11 21:31:52.329: [INFO][Sync] Loading: History Delete Directives +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Device Info +2026-08-11 21:31:52.329: [INFO][Sync] Loading: User Consents +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Send Tab To Self +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Web Apps +2026-08-11 21:31:52.329: [INFO][Sync] Loading: History +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Saved Tab Group +2026-08-11 21:31:52.329: [INFO][Sync] Loading: WebAuthn Credentials +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Edge E Drop +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Edge Hub App Usage +2026-08-11 21:31:52.329: [INFO][Sync] Loading: Edge Workspace +2026-08-11 21:31:52.332: [INFO][Sync] All data types are ready for configure. +2026-08-11 21:31:52.913: [INFO][Sync] Started DataTypeManager configuration, reason: 5 +2026-08-11 21:31:52.913: [INFO][Sync] Configuring for: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys, reason: 5, current state: 1 +2026-08-11 21:31:52.917: [INFO][SyncEngineBackend::DoStartConfiguration] Start configuration +2026-08-11 21:31:52.917: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 4 +2026-08-11 21:31:52.917: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-11 21:31:52.917: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 3 +2026-08-11 21:31:52.917: [WARN][Sync] Reconfigure requested while configuration ongoing. +2026-08-11 21:31:52.917: [INFO][Sync] Configuring for: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys, reason: 5, current state: 2 +2026-08-11 21:31:52.917: [INFO][Sync] Configure, desired: Bookmarks, Preferences, Passwords, Autofill Profiles, Autofill, Extensions, Sessions, Extension settings, History Delete Directives, Device Info, User Consents, Send Tab To Self, Web Apps, History, Saved Tab Group, WebAuthn Credentials, Edge E Drop, Edge Hub App Usage, Edge Workspace, Encryption Keys; Allow fail: +2026-08-11 21:31:52.917: [INFO][Sync] Loading: Passwords +2026-08-11 21:31:52.917: [INFO][Sync] Loading: Autofill Profiles +2026-08-11 21:31:52.917: [INFO][Sync] Loading: Autofill +2026-08-11 21:31:52.917: [INFO][Sync] All data types are ready for configure. +2026-08-11 21:31:52.917: [INFO][SyncManagerImpl::NudgeForInitialDownload] Initial download nudge for Passwords +2026-08-11 21:31:52.917: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 5 +2026-08-11 21:31:52.917: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-11 21:31:52.917: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 3 +2026-08-11 21:31:52.917: [INFO][Sync] Prepare to configure types: Passwords, Encryption Keys +2026-08-11 21:31:52.917: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: Passwords, Encryption Keys with reason: 5 +2026-08-11 21:31:52.917: [INFO][SyncSchedulerImpl::DoConfigurationSyncCycleJob] Blocked types: and types to download: Passwords, Encryption Keys +2026-08-11 21:31:53.439: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: Passwords, Encryption Keys +2026-08-11 21:31:53.441: [INFO][Sync] ConfigurationDone, failed: , succeeded: Passwords, Encryption Keys, remaining count: 2 +2026-08-11 21:31:53.441: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 5 +2026-08-11 21:31:53.441: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-11 21:31:53.441: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 1 +2026-08-11 21:31:53.441: [INFO][SyncManagerImpl::ConfigureSyncer] Types to download: with reason: 5 +2026-08-11 21:31:53.441: [INFO][SyncEngineBackend::DoFinishConfigureDataTypes] Failed to download types: and succeeded types: +2026-08-11 21:31:53.442: [INFO][Sync] ConfigurationDone, failed: , succeeded: , remaining count: 0 +2026-08-11 21:31:53.442: [INFO][Sync] Configuration completed, state: 7 +2026-08-11 21:31:53.442: [INFO][Sync] Configured DataTypeManager: Ok +2026-08-11 21:31:53.445: [INFO][SyncEngineBackend::DoStartSyncing] Start syncing +2026-08-11 21:33:41.283: [INFO][Sync] Reset engine, reason: 0 +2026-08-11 21:33:41.283: [INFO][Sync] Reset engine with reason: 0 diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Nigori.bin b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Nigori.bin index e729bf3..1511ce0 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Nigori.bin and b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Data/Nigori.bin differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/adgpaedigldkggglmagcgklkomgfkepc/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/adgpaedigldkggglmagcgklkomgfkepc/LOG index e2b2b9b..fe94f4b 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/adgpaedigldkggglmagcgklkomgfkepc/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/adgpaedigldkggglmagcgklkomgfkepc/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:11.888 5224 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Sync Extension Settings\adgpaedigldkggglmagcgklkomgfkepc/MANIFEST-000001 -2026/08/05-21:31:11.888 5224 Recovering log #3 -2026/08/05-21:31:11.889 5224 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Sync Extension Settings\adgpaedigldkggglmagcgklkomgfkepc/000003.log +2026/08/11-23:31:45.873 4e54 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Sync Extension Settings\adgpaedigldkggglmagcgklkomgfkepc/MANIFEST-000001 +2026/08/11-23:31:45.873 4e54 Recovering log #3 +2026/08/11-23:31:45.873 4e54 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Sync Extension Settings\adgpaedigldkggglmagcgklkomgfkepc/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/adgpaedigldkggglmagcgklkomgfkepc/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/adgpaedigldkggglmagcgklkomgfkepc/LOG.old index 9d082fa..ee784a9 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/adgpaedigldkggglmagcgklkomgfkepc/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/adgpaedigldkggglmagcgklkomgfkepc/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.162 334 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Sync Extension Settings\adgpaedigldkggglmagcgklkomgfkepc/MANIFEST-000001 -2026/08/04-22:51:52.163 334 Recovering log #3 -2026/08/04-22:51:52.166 334 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Sync Extension Settings\adgpaedigldkggglmagcgklkomgfkepc/000003.log +2026/08/10-22:39:00.329 5bd0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Sync Extension Settings\adgpaedigldkggglmagcgklkomgfkepc/MANIFEST-000001 +2026/08/10-22:39:00.330 5bd0 Recovering log #3 +2026/08/10-22:39:00.330 5bd0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Sync Extension Settings\adgpaedigldkggglmagcgklkomgfkepc/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/fancfknaplihpclbhbpclnmmjcjanbaf/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/fancfknaplihpclbhbpclnmmjcjanbaf/LOG index 6e35ca3..a77cf64 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/fancfknaplihpclbhbpclnmmjcjanbaf/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/fancfknaplihpclbhbpclnmmjcjanbaf/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:11.893 5224 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Sync Extension Settings\fancfknaplihpclbhbpclnmmjcjanbaf/MANIFEST-000001 -2026/08/05-21:31:11.893 5224 Recovering log #3 -2026/08/05-21:31:11.894 5224 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Sync Extension Settings\fancfknaplihpclbhbpclnmmjcjanbaf/000003.log +2026/08/11-23:31:45.877 4e54 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Sync Extension Settings\fancfknaplihpclbhbpclnmmjcjanbaf/MANIFEST-000001 +2026/08/11-23:31:45.878 4e54 Recovering log #3 +2026/08/11-23:31:45.878 4e54 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Sync Extension Settings\fancfknaplihpclbhbpclnmmjcjanbaf/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/fancfknaplihpclbhbpclnmmjcjanbaf/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/fancfknaplihpclbhbpclnmmjcjanbaf/LOG.old index 984d57a..ed5581f 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/fancfknaplihpclbhbpclnmmjcjanbaf/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/fancfknaplihpclbhbpclnmmjcjanbaf/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.174 334 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Sync Extension Settings\fancfknaplihpclbhbpclnmmjcjanbaf/MANIFEST-000001 -2026/08/04-22:51:52.174 334 Recovering log #3 -2026/08/04-22:51:52.175 334 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Sync Extension Settings\fancfknaplihpclbhbpclnmmjcjanbaf/000003.log +2026/08/10-22:39:00.334 5bd0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Sync Extension Settings\fancfknaplihpclbhbpclnmmjcjanbaf/MANIFEST-000001 +2026/08/10-22:39:00.334 5bd0 Recovering log #3 +2026/08/10-22:39:00.335 5bd0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Sync Extension Settings\fancfknaplihpclbhbpclnmmjcjanbaf/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/jbllkioefpagebehjdpafimenmfochkd/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/jbllkioefpagebehjdpafimenmfochkd/LOG index 8119d17..767c7c6 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/jbllkioefpagebehjdpafimenmfochkd/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/jbllkioefpagebehjdpafimenmfochkd/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:11.898 5224 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Sync Extension Settings\jbllkioefpagebehjdpafimenmfochkd/MANIFEST-000001 -2026/08/05-21:31:11.898 5224 Recovering log #3 -2026/08/05-21:31:11.898 5224 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\Sync Extension Settings\jbllkioefpagebehjdpafimenmfochkd/000003.log +2026/08/11-23:31:45.884 4e54 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Sync Extension Settings\jbllkioefpagebehjdpafimenmfochkd/MANIFEST-000001 +2026/08/11-23:31:45.884 4e54 Recovering log #3 +2026/08/11-23:31:45.885 4e54 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\Sync Extension Settings\jbllkioefpagebehjdpafimenmfochkd/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/jbllkioefpagebehjdpafimenmfochkd/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/jbllkioefpagebehjdpafimenmfochkd/LOG.old index 7149bb9..e7a70bb 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/jbllkioefpagebehjdpafimenmfochkd/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/Sync Extension Settings/jbllkioefpagebehjdpafimenmfochkd/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.179 334 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Sync Extension Settings\jbllkioefpagebehjdpafimenmfochkd/MANIFEST-000001 -2026/08/04-22:51:52.180 334 Recovering log #3 -2026/08/04-22:51:52.180 334 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\Sync Extension Settings\jbllkioefpagebehjdpafimenmfochkd/000003.log +2026/08/10-22:39:00.338 5bd0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Sync Extension Settings\jbllkioefpagebehjdpafimenmfochkd/MANIFEST-000001 +2026/08/10-22:39:00.339 5bd0 Recovering log #3 +2026/08/10-22:39:00.339 5bd0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\Sync Extension Settings\jbllkioefpagebehjdpafimenmfochkd/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/Web Data b/FinlyticApp/.dart_tool/chrome-device/Default/Web Data index 91845f6..8a3ef2d 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/Web Data and b/FinlyticApp/.dart_tool/chrome-device/Default/Web Data differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/WebStorage/QuotaManager b/FinlyticApp/.dart_tool/chrome-device/Default/WebStorage/QuotaManager index 528a2f9..e134fb0 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/WebStorage/QuotaManager and b/FinlyticApp/.dart_tool/chrome-device/Default/WebStorage/QuotaManager differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/favorites_diagnostic.log b/FinlyticApp/.dart_tool/chrome-device/Default/favorites_diagnostic.log index 8568b7c..0c75624 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/favorites_diagnostic.log +++ b/FinlyticApp/.dart_tool/chrome-device/Default/favorites_diagnostic.log @@ -85,3 +85,41 @@ 2026-08-05 19:31:12.498: [INFO] Sync initialization duration: 10248ms 2026-08-05 20:59:06.578: [INFO] VisibilityChanged: 0 2026-08-05 20:59:06.699: [INFO] BookmarksSnapshot Shutdown total=18 bar=7 other=0 mobile=0 showBar=1 showBarNTP=0 +2026-08-09 21:20:07.206: [INFO] CurrentProfilePath: C:\Users\larsh\AppData\Local\Temp\flutter_tools.8e7484c1\flutter_tools_chrome_device.366bf005\Default +2026-08-09 21:20:07.206: [INFO] Profiles total count: 1 +2026-08-09 21:20:07.207: [INFO] Profile: name=Profil 1 path=C:\Users\larsh\AppData\Local\Temp\flutter_tools.8e7484c1\flutter_tools_chrome_device.366bf005\Default lastActive=2026-08-09T21:20:07.187Z +2026-08-09 21:20:07.207: [INFO] LastUsedProfileDir: C:\Users\larsh\AppData\Local\Temp\flutter_tools.8e7484c1\flutter_tools_chrome_device.366bf005\Default +2026-08-09 21:20:07.207: [INFO] MostRecentlyActiveProfile: name=Profil 1 path=C:\Users\larsh\AppData\Local\Temp\flutter_tools.8e7484c1\flutter_tools_chrome_device.366bf005\Default lastActive=2026-08-09T21:20:07.187Z +2026-08-09 21:20:07.207: [INFO] OnDoneLoading sync enabled: 1 +2026-08-09 21:20:07.207: [INFO] BookmarkModelLoaded, ids_reassigned: 0 +2026-08-09 21:20:07.207: [INFO] BookmarksLoadDropped droppedNodes=0 +2026-08-09 21:20:07.207: [INFO] BookmarksSnapshot Startup total=18 bar=7 other=0 mobile=0 showBar=1 showBarNTP=0 +2026-08-09 21:20:14.189: [INFO] Sync initialization duration: 1747ms +2026-08-09 21:35:59.342: [INFO] VisibilityChanged: 0 +2026-08-09 21:35:59.434: [INFO] BookmarksSnapshot Shutdown total=18 bar=7 other=0 mobile=0 showBar=1 showBarNTP=0 +2026-08-10 20:38:48.321: [INFO] CurrentProfilePath: C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default +2026-08-10 20:38:48.321: [INFO] Profiles total count: 1 +2026-08-10 20:38:48.322: [INFO] Profile: name=Profil 1 path=C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default lastActive=2026-08-10T20:38:48.299Z +2026-08-10 20:38:48.322: [INFO] LastUsedProfileDir: C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default +2026-08-10 20:38:48.322: [INFO] MostRecentlyActiveProfile: name=Profil 1 path=C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default lastActive=2026-08-10T20:38:48.299Z +2026-08-10 20:38:48.322: [INFO] OnDoneLoading sync enabled: 0 +2026-08-10 20:38:48.322: [INFO] BookmarkModelLoaded, ids_reassigned: 0 +2026-08-10 20:38:48.322: [INFO] BookmarksLoadDropped droppedNodes=0 +2026-08-10 20:38:48.322: [INFO] BookmarksSnapshot Startup total=18 bar=7 other=0 mobile=0 showBar=1 showBarNTP=0 +2026-08-10 20:38:50.024: [INFO] Primary account changed. +2026-08-10 20:38:50.024: [INFO] OnPrimaryAccountChanged PrimaryAccountChangeEvent::Type::kSet +2026-08-10 20:39:01.671: [INFO] Sync initialization duration: 13347ms +2026-08-10 21:36:23.027: [INFO] VisibilityChanged: 0 +2026-08-10 21:36:23.146: [INFO] BookmarksSnapshot Shutdown total=18 bar=7 other=0 mobile=0 showBar=1 showBarNTP=0 +2026-08-11 21:31:45.993: [INFO] CurrentProfilePath: C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default +2026-08-11 21:31:45.993: [INFO] Profiles total count: 1 +2026-08-11 21:31:45.993: [INFO] Profile: name=Profil 1 path=C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default lastActive=2026-08-11T21:31:45.974Z +2026-08-11 21:31:45.993: [INFO] LastUsedProfileDir: C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default +2026-08-11 21:31:45.993: [INFO] MostRecentlyActiveProfile: name=Profil 1 path=C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default lastActive=2026-08-11T21:31:45.974Z +2026-08-11 21:31:45.993: [INFO] OnDoneLoading sync enabled: 1 +2026-08-11 21:31:45.993: [INFO] BookmarkModelLoaded, ids_reassigned: 0 +2026-08-11 21:31:45.993: [INFO] BookmarksLoadDropped droppedNodes=0 +2026-08-11 21:31:45.993: [INFO] BookmarksSnapshot Startup total=18 bar=7 other=0 mobile=0 showBar=1 showBarNTP=0 +2026-08-11 21:31:53.445: [INFO] Sync initialization duration: 1796ms +2026-08-11 21:33:41.198: [INFO] VisibilityChanged: 0 +2026-08-11 21:33:41.283: [INFO] BookmarksSnapshot Shutdown total=18 bar=7 other=0 mobile=0 showBar=1 showBarNTP=0 diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/load_statistics.db b/FinlyticApp/.dart_tool/chrome-device/Default/load_statistics.db index 5578027..fa2d2de 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/load_statistics.db and b/FinlyticApp/.dart_tool/chrome-device/Default/load_statistics.db differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/000003.log index 1b86671..ffbe7a4 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/LOG index 7da3a43..23dbbf2 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:02.266 2bf0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\shared_proto_db/MANIFEST-000001 -2026/08/05-21:31:02.267 2bf0 Recovering log #3 -2026/08/05-21:31:02.267 2bf0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\shared_proto_db/000003.log +2026/08/11-23:31:46.007 577c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\shared_proto_db/MANIFEST-000001 +2026/08/11-23:31:46.008 577c Recovering log #3 +2026/08/11-23:31:46.008 577c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\shared_proto_db/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/LOG.old index 4e34a93..df89bb1 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.306 2454 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\shared_proto_db/MANIFEST-000001 -2026/08/04-22:51:52.307 2454 Recovering log #3 -2026/08/04-22:51:52.307 2454 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\shared_proto_db/000003.log +2026/08/10-22:38:48.331 1740 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\shared_proto_db/MANIFEST-000001 +2026/08/10-22:38:48.332 1740 Recovering log #3 +2026/08/10-22:38:48.333 1740 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\shared_proto_db/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/000003.log b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/000003.log index 7fc6309..c2d0bc0 100644 Binary files a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/000003.log and b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/000003.log differ diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/LOG b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/LOG index dadac58..906c780 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/LOG +++ b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/LOG @@ -1,3 +1,3 @@ -2026/08/05-21:31:02.254 2bf0 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\shared_proto_db\metadata/MANIFEST-000001 -2026/08/05-21:31:02.255 2bf0 Recovering log #3 -2026/08/05-21:31:02.256 2bf0 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.2993d3\flutter_tools_chrome_device.c2da8a67\Default\shared_proto_db\metadata/000003.log +2026/08/11-23:31:45.998 577c Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\shared_proto_db\metadata/MANIFEST-000001 +2026/08/11-23:31:45.999 577c Recovering log #3 +2026/08/11-23:31:45.999 577c Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.563f49b\flutter_tools_chrome_device.9d15186e\Default\shared_proto_db\metadata/000003.log diff --git a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/LOG.old b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/LOG.old index 76a80d2..2532011 100644 --- a/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/LOG.old +++ b/FinlyticApp/.dart_tool/chrome-device/Default/shared_proto_db/metadata/LOG.old @@ -1,3 +1,3 @@ -2026/08/04-22:51:52.298 2454 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\shared_proto_db\metadata/MANIFEST-000001 -2026/08/04-22:51:52.298 2454 Recovering log #3 -2026/08/04-22:51:52.299 2454 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.20e8229a\flutter_tools_chrome_device.7d5ee104\Default\shared_proto_db\metadata/000003.log +2026/08/10-22:38:48.326 1740 Reusing MANIFEST C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\shared_proto_db\metadata/MANIFEST-000001 +2026/08/10-22:38:48.327 1740 Recovering log #3 +2026/08/10-22:38:48.327 1740 Reusing old log C:\Users\larsh\AppData\Local\Temp\flutter_tools.ccaa1042\flutter_tools_chrome_device.9ad653a1\Default\shared_proto_db\metadata/000003.log diff --git a/FinlyticApp/.dart_tool/hooks_runner/objective_c/337ce265dc/.lock b/FinlyticApp/.dart_tool/hooks_runner/objective_c/337ce265dc/.lock index 601f8db..15126cd 100644 --- a/FinlyticApp/.dart_tool/hooks_runner/objective_c/337ce265dc/.lock +++ b/FinlyticApp/.dart_tool/hooks_runner/objective_c/337ce265dc/.lock @@ -1 +1 @@ -Last acquired by C:\Users\larsh\Documents\flutter\bin\cache\dart-sdk\bin\dart.exe (pid 27684) running file:///C:/Users/larsh/Documents/flutter/bin/cache/flutter_tools.snapshot on 2026-08-06 17:59:35.953035. \ No newline at end of file +Last acquired by C:\Users\larsh\Documents\flutter\bin\cache\dart-sdk\bin\dart.exe (pid 7632) running file:///C:/Users/larsh/Documents/flutter/bin/cache/flutter_tools.snapshot on 2026-08-12 17:28:01.442185. \ No newline at end of file diff --git a/FinlyticApp/.dart_tool/hooks_runner/shared/objective_c/.lock b/FinlyticApp/.dart_tool/hooks_runner/shared/objective_c/.lock index aa8de62..5dce3e3 100644 --- a/FinlyticApp/.dart_tool/hooks_runner/shared/objective_c/.lock +++ b/FinlyticApp/.dart_tool/hooks_runner/shared/objective_c/.lock @@ -1 +1 @@ -Last acquired by C:\Users\larsh\Documents\flutter\bin\cache\dart-sdk\bin\dart.exe (pid 27684) running file:///C:/Users/larsh/Documents/flutter/bin/cache/flutter_tools.snapshot on 2026-08-06 17:59:35.952538. \ No newline at end of file +Last acquired by C:\Users\larsh\Documents\flutter\bin\cache\dart-sdk\bin\dart.exe (pid 7632) running file:///C:/Users/larsh/Documents/flutter/bin/cache/flutter_tools.snapshot on 2026-08-12 17:28:01.441186. \ No newline at end of file diff --git a/FinlyticApp/build/0418b486ce914458ba04093ce00d4980.cache.dill.track.dill b/FinlyticApp/build/0418b486ce914458ba04093ce00d4980.cache.dill.track.dill index 17ee50a..204468f 100644 Binary files a/FinlyticApp/build/0418b486ce914458ba04093ce00d4980.cache.dill.track.dill and b/FinlyticApp/build/0418b486ce914458ba04093ce00d4980.cache.dill.track.dill differ diff --git a/FinlyticApp/lib/core/utils/asset_utils.dart b/FinlyticApp/lib/core/utils/asset_utils.dart deleted file mode 100644 index fc1daf5..0000000 --- a/FinlyticApp/lib/core/utils/asset_utils.dart +++ /dev/null @@ -1,98 +0,0 @@ -import '../network/api_client.dart'; - -/// Asset utility helpers to map ISIN codes, symbols, and company names to logos and details. -class AssetUtils { - static final Map _isinToNameMap = { - 'US0378331005': 'Apple Inc.', - 'US5949181045': 'Microsoft Corp.', - 'US0231351067': 'Amazon.com Inc.', - 'US67066G1040': 'NVIDIA Corp.', - 'US88160R1014': 'Tesla Inc.', - 'US02079K3059': 'Alphabet Inc.', - 'US30303M1027': 'Meta Platforms', - 'DE0007164600': 'SAP SE', - 'DE0007236101': 'Siemens AG', - 'DE0008469008': 'Allianz SE', - 'FR0004125920': 'Amundi', - }; - - static final Map _nameToIsinMap = { - 'APPLE INC.': 'US0378331005', - 'APPLE': 'US0378331005', - 'MICROSOFT CORP.': 'US5949181045', - 'MICROSOFT': 'US5949181045', - 'AMAZON.COM INC.': 'US0231351067', - 'AMAZON': 'US0231351067', - 'NVIDIA CORP.': 'US67066G1040', - 'NVIDIA': 'US67066G1040', - 'TESLA INC.': 'US88160R1014', - 'TESLA': 'US88160R1014', - 'ALPHABET INC.': 'US02079K3059', - 'ALPHABET': 'US02079K3059', - 'META PLATFORMS': 'US30303M1027', - 'META': 'US30303M1027', - 'SAP SE': 'DE0007164600', - 'SAP': 'DE0007164600', - 'SIEMENS AG': 'DE0007236101', - 'SIEMENS': 'DE0007236101', - 'ALLIANZ SE': 'DE0008469008', - 'ALLIANZ': 'DE0008469008', - 'AMUNDI': 'FR0004125920', - }; - - static final Map _imageMap = {}; - - /// Registers an ISIN, Name, and optional Logo Image URL. - static void registerAsset(String isin, String name, [String? imageUrl]) { - final cleanIsin = isin.trim().toUpperCase(); - final cleanName = name.trim(); - if (cleanIsin.isNotEmpty && cleanName.isNotEmpty) { - _isinToNameMap[cleanIsin] = cleanName; - _nameToIsinMap[cleanName.toUpperCase()] = cleanIsin; - } - if (imageUrl != null && imageUrl.isNotEmpty) { - final resolved = resolveUrl(imageUrl); - if (cleanIsin.isNotEmpty) _imageMap[cleanIsin] = resolved; - if (cleanName.isNotEmpty) _imageMap[cleanName.toUpperCase()] = resolved; - } - } - - /// Resolves relative logo URLs (/api/logo/...) to complete backend endpoints. - static String resolveUrl(String url) { - if (url.startsWith('http://') || url.startsWith('https://')) { - return url; - } - if (url.startsWith('/')) { - return '${ApiClient.baseUrl}$url'; - } - return '${ApiClient.baseUrl}/$url'; - } - - /// Resolves an ISIN or symbol to readable asset name. - static String getAssetName(String isinOrSymbol) { - final key = isinOrSymbol.trim().toUpperCase(); - if (_isinToNameMap.containsKey(key)) { - return _isinToNameMap[key]!; - } - return isinOrSymbol; - } - - /// Resolves an asset name or symbol to ISIN. - static String? getIsin(String nameOrSymbol) { - final key = nameOrSymbol.trim().toUpperCase(); - if (_isinToNameMap.containsKey(key)) return key; - return _nameToIsinMap[key]; - } - - /// Returns official local backend logo URL for given symbol/name/ISIN. - static String? getLogoUrl(String symbolOrName) { - final key = symbolOrName.trim().toUpperCase(); - if (_imageMap.containsKey(key)) return resolveUrl(_imageMap[key]!); - - final isin = getIsin(key) ?? (key.length == 12 ? key : null); - if (isin != null && isin.length == 12) { - return '${ApiClient.baseUrl}/api/logo/$isin'; - } - return null; - } -} diff --git a/FinlyticApp/lib/core/widgets/asset_logo_widget.dart b/FinlyticApp/lib/core/widgets/asset_logo_widget.dart index 0db949b..babeee2 100644 --- a/FinlyticApp/lib/core/widgets/asset_logo_widget.dart +++ b/FinlyticApp/lib/core/widgets/asset_logo_widget.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import '../network/api_client.dart'; import '../theme/app_theme.dart'; -import '../utils/asset_utils.dart'; /// Reusable performance-optimized Asset Logo Widget supporting SVG, PNG, gradient fallbacks, and Hero transitions. class AssetLogoWidget extends StatelessWidget { @@ -15,24 +15,29 @@ class AssetLogoWidget extends StatelessWidget { const AssetLogoWidget({ super.key, required this.symbolOrName, - this.imageUrl, + required this.imageUrl, this.size = 32, this.enableHero = true, }); @override Widget build(BuildContext context) { - final rawUrl = imageUrl ?? AssetUtils.getLogoUrl(symbolOrName); - final logoUrl = rawUrl != null && rawUrl.isNotEmpty ? AssetUtils.resolveUrl(rawUrl) : null; + // Resolve relative URLs (e.g. /api/v1/logo/...) to include host and port (e.g. http://localhost:5000) + String? resolveUrl(String? url) { + if (url == null || url.isEmpty) return null; + if (url.startsWith('http://') || url.startsWith('https://')) return url; + return url.startsWith('/') ? '${ApiClient.baseUrl}$url' : '${ApiClient.baseUrl}/$url'; + } + + final image = resolveUrl(imageUrl); final initial = symbolOrName.isNotEmpty ? symbolOrName[0].toUpperCase() : 'A'; final colors = _getGradientColors(initial); Widget content; - if (logoUrl != null && logoUrl.isNotEmpty && !_failedUrls.contains(logoUrl)) { - final isSvg = logoUrl.toLowerCase().endsWith('.svg') || - logoUrl.contains('traderepublic.com') || - logoUrl.contains('/api/logo/'); + if (image != null && image.isNotEmpty && !_failedUrls.contains(image)) { + final isSvg = image.toLowerCase().endsWith('.svg') || + image.contains('/api/v1/logo/'); content = ClipRRect( borderRadius: BorderRadius.circular(size * 0.3), @@ -50,26 +55,26 @@ class AssetLogoWidget extends StatelessWidget { padding: EdgeInsets.all(size * 0.1), child: isSvg ? SvgPicture.network( - logoUrl, - width: size, - height: size, - fit: BoxFit.contain, - placeholderBuilder: (context) => _buildFallback(initial, colors), - errorBuilder: (context, error, stackTrace) { - _failedUrls.add(logoUrl); - return _buildFallback(initial, colors); - }, - ) + image, + width: size, + height: size, + fit: BoxFit.contain, + placeholderBuilder: (context) => _buildFallback(initial, colors), + errorBuilder: (context, error, stackTrace) { + _failedUrls.add(image); + return _buildFallback(initial, colors); + }, + ) : Image.network( - logoUrl, - width: size, - height: size, - fit: BoxFit.contain, - errorBuilder: (context, error, stackTrace) { - _failedUrls.add(logoUrl); - return _buildFallback(initial, colors); - }, - ), + image, + width: size, + height: size, + fit: BoxFit.contain, + errorBuilder: (context, error, stackTrace) { + _failedUrls.add(image); + return _buildFallback(initial, colors); + }, + ), ), ); } else { @@ -78,7 +83,7 @@ class AssetLogoWidget extends StatelessWidget { if (enableHero && symbolOrName.isNotEmpty) { return Hero( - tag: 'asset_logo_$symbolOrName', + tag: 'asset_logo_${symbolOrName}_$size', child: content, ); } @@ -127,4 +132,4 @@ class AssetLogoWidget extends StatelessWidget { return [AppTheme.activePreset.accentColor, const Color(0xFF3B82F6)]; } } -} +} \ No newline at end of file diff --git a/FinlyticApp/lib/features/asset_detail/bloc/asset_detail_bloc.dart b/FinlyticApp/lib/features/asset_detail/bloc/asset_detail_bloc.dart deleted file mode 100644 index 9929a06..0000000 --- a/FinlyticApp/lib/features/asset_detail/bloc/asset_detail_bloc.dart +++ /dev/null @@ -1,40 +0,0 @@ -import 'dart:async'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:finlytic_app/features/asset_detail/repositories/asset_repository.dart'; -import 'asset_detail_event.dart'; -import 'asset_detail_state.dart'; - -class AssetDetailBloc extends Bloc { - final AssetRepository repository; - - AssetDetailBloc({required this.repository}) : super(AssetDetailInitial()) { - on(_onLoadAssetData); - on(_onForceRefreshAssetData); - } - - Future _onLoadAssetData(LoadAssetData event, Emitter emit) async { - emit(AssetDetailLoading()); - try { - final results = await Future.wait([ - repository.getFundamentalData(event.symbol), - repository.getTechnicalAnalysis(event.symbol), - ]); - - emit(AssetDetailLoaded( - fundamentalData: results[0] as dynamic, - technicalAnalysis: results[1] as dynamic, - )); - } catch (e) { - emit(AssetDetailError("Fehler beim Laden der Asset-Daten.")); - } - } - - Future _onForceRefreshAssetData(ForceRefreshAssetData event, Emitter emit) async { - try { - await repository.forceRefreshFundamentalData(event.symbol); - // Optional: re-load after a delay, or rely on MQTT/SignalR to push the new data. - } catch (e) { - // ignore - } - } -} diff --git a/FinlyticApp/lib/features/asset_detail/bloc/asset_detail_event.dart b/FinlyticApp/lib/features/asset_detail/bloc/asset_detail_event.dart deleted file mode 100644 index 21b98d9..0000000 --- a/FinlyticApp/lib/features/asset_detail/bloc/asset_detail_event.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:equatable/equatable.dart'; - -abstract class AssetDetailEvent extends Equatable { - const AssetDetailEvent(); - - @override - List get props => []; -} - -class LoadAssetData extends AssetDetailEvent { - final String symbol; - - const LoadAssetData(this.symbol); - - @override - List get props => [symbol]; -} - -class ForceRefreshAssetData extends AssetDetailEvent { - final String symbol; - - const ForceRefreshAssetData(this.symbol); - - @override - List get props => [symbol]; -} diff --git a/FinlyticApp/lib/features/asset_detail/bloc/asset_detail_state.dart b/FinlyticApp/lib/features/asset_detail/bloc/asset_detail_state.dart deleted file mode 100644 index 3a2a355..0000000 --- a/FinlyticApp/lib/features/asset_detail/bloc/asset_detail_state.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:finlytic_app/features/asset_detail/models/fundamental_data_model.dart'; -import 'package:finlytic_app/features/asset_detail/models/technical_analysis_model.dart'; - -abstract class AssetDetailState extends Equatable { - const AssetDetailState(); - - @override - List get props => []; -} - -class AssetDetailInitial extends AssetDetailState {} - -class AssetDetailLoading extends AssetDetailState {} - -class AssetDetailLoaded extends AssetDetailState { - final FundamentalDataModel? fundamentalData; - final TechnicalAnalysisModel? technicalAnalysis; - - const AssetDetailLoaded({this.fundamentalData, this.technicalAnalysis}); - - @override - List get props => [fundamentalData, technicalAnalysis]; -} - -class AssetDetailError extends AssetDetailState { - final String message; - - const AssetDetailError(this.message); - - @override - List get props => [message]; -} diff --git a/FinlyticApp/lib/features/asset_detail/bloc/header/asset_header_bloc.dart b/FinlyticApp/lib/features/asset_detail/bloc/header/asset_header_bloc.dart index 064706a..ec98bfa 100644 --- a/FinlyticApp/lib/features/asset_detail/bloc/header/asset_header_bloc.dart +++ b/FinlyticApp/lib/features/asset_detail/bloc/header/asset_header_bloc.dart @@ -2,6 +2,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'asset_header_event.dart'; import 'asset_header_state.dart'; import '../../repositories/asset_repository.dart'; +import '../../models/asset_model.dart'; class AssetHeaderBloc extends Bloc { final AssetRepository repository; @@ -10,8 +11,28 @@ class AssetHeaderBloc extends Bloc { final prevData = state is AssetHeaderLoaded ? (state as AssetHeaderLoaded).data : (state is AssetHeaderLoading ? (state as AssetHeaderLoading).previousData : null); emit(AssetHeaderLoading(previousData: prevData)); try { - final data = await repository.getAssetHeader(event.isin, exchange: event.exchange, ticker: event.ticker); - emit(AssetHeaderLoaded(data)); + final fundamentals = await repository.getAssetFundamentals(event.isin, event.forceRefresh, ticker: event.ticker); + if (fundamentals != null) { + final assetModel = AssetModel( + isin: fundamentals.isin, + symbol: fundamentals.primaryTicker.isNotEmpty ? fundamentals.primaryTicker : fundamentals.isin, + name: fundamentals.companyName, + currentPrice: fundamentals.currentPrice, + currency: fundamentals.tradingCurrency ?? 'EUR', + exchange: fundamentals.exchange ?? 'XETRA', + exchanges: [], // Can be populated if needed + tickers: fundamentals.availableTickers.map((t) => AssetTickerOption( + ticker: t.ticker, + exchange: t.exchange ?? 'Unknown', + tradingCurrency: t.tradingCurrency ?? fundamentals.tradingCurrency ?? 'EUR', + currentPrice: t.currentPrice, + )).toList(), + image: '/api/v1/logo/${fundamentals.isin}', + ); + emit(AssetHeaderLoaded(assetModel)); + } else { + emit(AssetHeaderError('Failed to load asset header data')); + } } catch (e) { emit(AssetHeaderError(e.toString())); } diff --git a/FinlyticApp/lib/features/asset_detail/models/fundamental_data_model.dart b/FinlyticApp/lib/features/asset_detail/models/fundamental_data_model.dart index 02b3315..a22f3ed 100644 --- a/FinlyticApp/lib/features/asset_detail/models/fundamental_data_model.dart +++ b/FinlyticApp/lib/features/asset_detail/models/fundamental_data_model.dart @@ -58,6 +58,7 @@ class FundamentalDataModel extends Equatable { final List executives; final List financialStatements; final List estimates; + final List availableTickers; const FundamentalDataModel({ required this.isin, @@ -111,6 +112,7 @@ class FundamentalDataModel extends Equatable { required this.executives, required this.financialStatements, required this.estimates, + this.availableTickers = const [], }); factory FundamentalDataModel.fromJson(Map json) { @@ -187,6 +189,10 @@ class FundamentalDataModel extends Equatable { ?.map((e) => ForwardEstimateModel.fromJson(e)) .toList() ?? [], + availableTickers: (json['availableTickers'] as List?) + ?.map((e) => TickerModel.fromJson(e)) + .toList() ?? + [], ); } @@ -242,6 +248,7 @@ class FundamentalDataModel extends Equatable { 'executives': executives.map((e) => e.toJson()).toList(), 'financialStatements': financialStatements.map((e) => e.toJson()).toList(), 'estimates': estimates.map((e) => e.toJson()).toList(), + 'availableTickers': availableTickers.map((e) => e.toJson()).toList(), }; } @@ -297,6 +304,7 @@ class FundamentalDataModel extends Equatable { executives, financialStatements, estimates, + availableTickers, ]; } @@ -526,3 +534,38 @@ class ForwardEstimateModel extends Equatable { @override List get props => [period, expectedRevenue, expectedEps, expectedGrowthRate]; } + +class TickerModel extends Equatable { + final String ticker; + final String? exchange; + final String? tradingCurrency; + final double currentPrice; + + const TickerModel({ + required this.ticker, + this.exchange, + this.tradingCurrency, + required this.currentPrice, + }); + + factory TickerModel.fromJson(Map json) { + return TickerModel( + ticker: json['ticker']?.toString() ?? '', + exchange: json['exchange']?.toString(), + tradingCurrency: json['tradingCurrency']?.toString(), + currentPrice: json['currentPrice'] != null ? double.tryParse(json['currentPrice'].toString()) ?? 0.0 : 0.0, + ); + } + + Map toJson() { + return { + 'ticker': ticker, + 'exchange': exchange, + 'tradingCurrency': tradingCurrency, + 'currentPrice': currentPrice, + }; + } + + @override + List get props => [ticker, exchange, tradingCurrency, currentPrice]; +} diff --git a/FinlyticApp/lib/features/asset_detail/models/technical_analysis_model.dart b/FinlyticApp/lib/features/asset_detail/models/technical_analysis_model.dart index 1a904dd..3b891e1 100644 --- a/FinlyticApp/lib/features/asset_detail/models/technical_analysis_model.dart +++ b/FinlyticApp/lib/features/asset_detail/models/technical_analysis_model.dart @@ -118,6 +118,36 @@ class StrategySignalModel extends Equatable { List get props => [title, date, price, type]; } +class PatternPoint extends Equatable { + final DateTime time; + final double price; + + const PatternPoint(this.time, this.price); + factory PatternPoint.fromJson(Map json) => PatternPoint(DateTime.tryParse(json['time'] ?? '') ?? DateTime.now(), (json['price'] as num).toDouble()); + + @override + List get props => [time, price]; +} + +class ChartPatternModel extends Equatable { + final String type; + final List upperLine; + final List lowerLine; + + const ChartPatternModel({required this.type, required this.upperLine, required this.lowerLine}); + + factory ChartPatternModel.fromJson(Map json) { + return ChartPatternModel( + type: json['type']?.toString() ?? 'Pattern', + upperLine: (json['upperLine'] as List? ?? []).map((e) => PatternPoint.fromJson(e)).toList(), + lowerLine: (json['lowerLine'] as List? ?? []).map((e) => PatternPoint.fromJson(e)).toList(), + ); + } + + @override + List get props => [type, upperLine, lowerLine]; +} + class TechnicalAnalysisModel extends Equatable { final String symbol; final String trend; @@ -132,7 +162,7 @@ class TechnicalAnalysisModel extends Equatable { final double? stopLossAtr; final List candles; final List indicators; - final List patterns; + final List patterns; final List signals; const TechnicalAnalysisModel({ @@ -164,20 +194,33 @@ class TechnicalAnalysisModel extends Equatable { var signalsList = rawSignals.map((s) => StrategySignalModel.fromJson(s as Map)).toList(); var rawPatterns = json['patterns'] as List? ?? []; - var patternsList = rawPatterns.map((p) => p.toString()).toList(); + var patternsList = rawPatterns.map((p) => ChartPatternModel.fromJson(p as Map)).toList(); + + + final lastInd = indicatorsList.isNotEmpty ? indicatorsList.last : null; + final regime = json['marketRegime'] as Map?; + + String parsedTrend = lastInd?.supertrendDirection ?? 'Neutral'; + if (parsedTrend.toUpperCase() == 'BUY') parsedTrend = 'Bullisch ▲'; + if (parsedTrend.toUpperCase() == 'SELL') parsedTrend = 'Bearisch ▼'; + + String parsedSignal = 'HOLD'; + if (signalsList.isNotEmpty) { + parsedSignal = signalsList.last.type.toUpperCase(); + } return TechnicalAnalysisModel( symbol: json['symbol']?.toString() ?? json['isin']?.toString() ?? json['ticker']?.toString() ?? '', - trend: json['trend']?.toString() ?? json['Trend']?.toString() ?? 'Bullisch ▲', - rsi: json['rsi']?.toString() ?? json['Rsi']?.toString() ?? '58.7', - macd: json['macd']?.toString() ?? json['Macd']?.toString() ?? '0.45', - overallSignal: json['overallSignal']?.toString() ?? json['OverallSignal']?.toString() ?? 'HOLD', - sma50: json['sma50']?.toString() ?? json['Sma50']?.toString() ?? '49.50', - sma200: json['sma200']?.toString() ?? json['Sma200']?.toString() ?? '42.50', - vix: (json['vix'] as num?)?.toDouble() ?? 16.5, - sp500Trend: json['sp500Trend']?.toString() ?? 'Bullish', - dxy: (json['dxy'] as num?)?.toDouble() ?? 104.2, - stopLossAtr: (json['stopLossAtr'] as num?)?.toDouble(), + trend: parsedTrend, + rsi: lastInd?.rsi14?.toStringAsFixed(1) ?? 'N/A', + macd: lastInd?.macdHistogram?.toStringAsFixed(2) ?? lastInd?.macdLine?.toStringAsFixed(2) ?? 'N/A', + overallSignal: parsedSignal, + sma50: lastInd?.sma50?.toStringAsFixed(2) ?? 'N/A', + sma200: lastInd?.sma200?.toStringAsFixed(2) ?? 'N/A', + vix: (regime?['vixValue'] as num?)?.toDouble() ?? 16.5, + sp500Trend: regime?['marketTrend']?.toString() ?? 'Bullish', + dxy: (regime?['dxyValue'] as num?)?.toDouble() ?? 104.2, + stopLossAtr: lastInd?.recommendedStopLoss, candles: candlesList, indicators: indicatorsList, patterns: patternsList, diff --git a/FinlyticApp/lib/features/asset_detail/repositories/asset_repository.dart b/FinlyticApp/lib/features/asset_detail/repositories/asset_repository.dart index ed15753..20c9249 100644 --- a/FinlyticApp/lib/features/asset_detail/repositories/asset_repository.dart +++ b/FinlyticApp/lib/features/asset_detail/repositories/asset_repository.dart @@ -1,5 +1,5 @@ import 'package:finlytic_app/core/network/api_client.dart'; -import 'package:finlytic_app/features/asset_detail/models/asset_model.dart'; + import 'package:finlytic_app/features/asset_detail/models/fundamental_data_model.dart'; import 'package:finlytic_app/features/asset_detail/models/technical_analysis_model.dart'; import 'package:finlytic_app/features/asset_detail/models/manual_analysis_request_dto.dart'; @@ -11,56 +11,9 @@ class AssetRepository { AssetRepository({required this.apiClient}); - Future forceRefreshFundamentalData(String symbol) async { - try { - await apiClient.post('/api/v1/assets/$symbol/refresh'); - } catch (e) { - print('Error forcing refresh: $e'); - } - } - - Future getFundamentalData(String symbol) async { - try { - final res = await apiClient.get('/api/v1/assets/fundamentals/$symbol'); - if (res.statusCode == 200 && res.data != null) { - return FundamentalDataModel.fromJson(res.data); - } - } catch (e) { - print('Error fetching fundamentals for $symbol: $e'); - } - return null; - } - - Future getTechnicalAnalysis(String symbol) async { - try { - final res = await apiClient.get('/api/v1/ta/$symbol'); - if (res.statusCode == 200 && res.data != null) { - return TechnicalAnalysisModel.fromJson(res.data); - } - } catch (e) { - print('Error fetching TA for $symbol: $e'); - } - return null; - } - Future getAssetHeader(String isin, {String? exchange, String? ticker}) async { - try { - String url = '/api/v1/assets/header/$isin?'; - if (ticker != null && ticker.isNotEmpty) { - url += 'ticker=$ticker'; - } - final res = await apiClient.get(url); - if (res.statusCode == 200 && res.data != null) { - return AssetModel.fromJson(res.data); - } - } catch (e) { - print('Error fetching asset header for $isin: $e'); - } - return null; - } - Future getAssetFundamentals(String isin, bool forceRefresh, {String? ticker}) async { try { - String url = '/api/v1/assets/fundamentals/$isin?forceRefresh=$forceRefresh'; + String url = '/api/v1/assets/$isin/fundamentals?forceRefresh=$forceRefresh'; if (ticker != null && ticker.isNotEmpty) { url += '&ticker=$ticker'; } @@ -76,7 +29,7 @@ class AssetRepository { Future getAssetTechnical(String isin, bool forceRefresh, {String? ticker}) async { try { - String url = '/api/v1/ta/$isin?forceRefresh=$forceRefresh'; + String url = '/api/v1/assets/$isin/technicals?forceRefresh=$forceRefresh'; if (ticker != null && ticker.isNotEmpty) { url += '&ticker=$ticker'; } @@ -92,7 +45,7 @@ class AssetRepository { Future> getAssetTrades(String isin, String? status) async { try { - String url = '/api/v1/trades?isin=$isin'; + String url = '/api/v1/user/trades?isin=$isin'; if (status != null) url += '&status=$status'; final res = await apiClient.get(url); if (res.statusCode == 200 && res.data != null) { diff --git a/FinlyticApp/lib/features/asset_detail/utils/pattern_explanations.dart b/FinlyticApp/lib/features/asset_detail/utils/pattern_explanations.dart index a6e1326..f15d4aa 100644 --- a/FinlyticApp/lib/features/asset_detail/utils/pattern_explanations.dart +++ b/FinlyticApp/lib/features/asset_detail/utils/pattern_explanations.dart @@ -8,7 +8,10 @@ class PatternExplanations { 'bias': 'BULLISH', 'description': 'Ein bullisches Fortsetzungsmuster, das durch eine horizontale Widerstandslinie oben und eine steigende Unterstützungslinie unten gekennzeichnet ist.', 'significance': 'Käufer werden bei jedem Rücksetzer aggressiver (höhere Tiefs). Ein Ausbruch über die obere Widerstandslinie signalisiert eine starke Fortsetzung des Aufwärtstrends.', - 'action': 'Kauf-Order / Breakout-Trade beim Ausbruch über den horizontalen Widerstand mit Stop-Loss knapp unter der steigenden Trendlinie.', + 'action': 'Kauf-Order / Breakout-Trade beim Ausbruch über den horizontalen Widerstand.', + 'reliability': 'Hoch', + 'target': 'Höhe des Dreiecks an der Basis, addiert zum Ausbruchsniveau.', + 'stop_loss': 'Knapp unter der unteren (steigenden) Trendlinie.', }, 'DESCENDING_TRIANGLE': { 'title': 'Fallendes Dreieck (Descending Triangle)', @@ -16,13 +19,19 @@ class PatternExplanations { 'description': 'Ein bärisches Fortsetzungsmuster mit einer horizontalen Unterstützungslinie unten und fallenden Hochs oben.', 'significance': 'Verkäufer drücken den Kurs bei jeder Erholung schneller nach unten. Ein Bruch der unteren Unterstützung führt meist zu dynamischen Abverkäufen.', 'action': 'Short-Trade oder Verkauf bei Durchbruch der unteren Unterstützungslinie.', + 'reliability': 'Hoch', + 'target': 'Höhe des Dreiecks an der Basis, subtrahiert vom Ausbruchsniveau.', + 'stop_loss': 'Knapp über der oberen (fallenden) Trendlinie.', }, 'HEAD_AND_SHOULDERS': { 'title': 'Kopf-Schulter-Formation (Head & Shoulders)', 'bias': 'BEARISH', 'description': 'Klassisches Umkehrmuster bestehend aus drei Höchstständen: der mittleren höchsten Spitze (Kopf) und zwei kleineren Höchstständen links und rechts (Schultern).', 'significance': 'Ein nachhaltiger Bruch der Nackenlinie (Neckline) markiert das Ende eines Aufwärtstrends und den Beginn einer Bärenphase.', - 'action': 'Verkauf/Short-Position beim Bruch der Nackenlinie mit Kursziel entsprechend der Distanz zwischen Kopf und Nackenlinie.', + 'action': 'Verkauf/Short-Position beim Bruch der Nackenlinie.', + 'reliability': 'Sehr Hoch', + 'target': 'Distanz zwischen Kopf und Nackenlinie, vom Ausbruchspunkt der Nackenlinie nach unten projiziert.', + 'stop_loss': 'Knapp über der rechten Schulter.', }, 'INVERSE_HEAD_AND_SHOULDERS': { 'title': 'Umgekehrte Kopf-Schulter-Formation', @@ -30,6 +39,9 @@ class PatternExplanations { 'description': 'Bullisches Bodenbildungsmuster nach einem Abwärtstrend mit drei Tiefspunkten.', 'significance': 'Signalisiert das Ende des Abwärtstrends und den Beginn eines neuen Bullenmarktes.', 'action': 'Kauf bei Ausbruch über die obere Nackenlinie.', + 'reliability': 'Sehr Hoch', + 'target': 'Distanz zwischen Kopf (tiefster Punkt) und Nackenlinie, vom Ausbruchspunkt nach oben projiziert.', + 'stop_loss': 'Knapp unter der rechten Schulter.', }, 'BULL_FLAG': { 'title': 'Bullische Flagge (Bull Flag)', @@ -37,6 +49,9 @@ class PatternExplanations { 'description': 'Kurze Konsolidierung gegen den übergeordneten starken Aufwärtstrend (Fahnenstange).', 'significance': 'Zeigt eine temporäre Gewinnmitnahme vor der nächsten Welle nach oben.', 'action': 'Kauf beim Ausbruch aus der oberen Begrenzung des Flaggenkanals.', + 'reliability': 'Hoch', + 'target': 'Länge des vorherigen Aufwärtstrends (Fahnenstange), angesetzt am Ausbruchspunkt der Flagge.', + 'stop_loss': 'Unterhalb des unteren Randes der Flagge.', }, 'BEAR_FLAG': { 'title': 'Bärische Flagge (Bear Flag)', @@ -44,6 +59,9 @@ class PatternExplanations { 'description': 'Kurze Aufwärtskonsolidierung in einem steilen Abwärtstrend.', 'significance': 'Signalisiert eine Fortsetzung des steilen Abverkaufs.', 'action': 'Short-Position bei Durchbrechen der unteren Flaggenkante.', + 'reliability': 'Hoch', + 'target': 'Länge des vorherigen Abwärtstrends (Fahnenstange), angesetzt am Ausbruchspunkt der Flagge.', + 'stop_loss': 'Oberhalb des oberen Randes der Flagge.', }, 'DOUBLE_BOTTOM': { 'title': 'Doppelboden (W-Formation)', @@ -51,6 +69,9 @@ class PatternExplanations { 'description': 'Zwei aufeinanderfolgende Tiefpunkte auf etwa gleichem Kursniveau.', 'significance': 'Starke Unterstützung auf dem Tiefststand wurde zweimal erfolgreich verteidigt. Ausbruch über das Zwischenhoch bestätigt W-Boden.', 'action': 'Kauf bei Überschreiten des W-Zwischenhochs.', + 'reliability': 'Mittel bis Hoch', + 'target': 'Distanz zwischen dem Tief und dem Zwischenhoch, auf das Zwischenhoch addiert.', + 'stop_loss': 'Knapp unter den beiden Tiefpunkten.', }, 'DOUBLE_TOP': { 'title': 'Doppeltopp (M-Formation)', @@ -58,6 +79,9 @@ class PatternExplanations { 'description': 'Zwei markante Höchststände auf ähnlicher Höhe, die nicht durchbrochen werden konnten.', 'significance': 'Widerstandszone ist zu stark für die Bullen. Bruch des Zwischen-Tiefs leitet Trendwende ein.', 'action': 'Verkauf/Short bei Bruch des Zwischentiefs.', + 'reliability': 'Mittel bis Hoch', + 'target': 'Distanz zwischen dem Hoch und dem Zwischentief, vom Zwischentief subtrahiert.', + 'stop_loss': 'Knapp über den beiden Höchstständen.', }, 'CHANNEL': { 'title': 'Trendkanal (Trading Channel)', @@ -65,6 +89,9 @@ class PatternExplanations { 'description': 'Parallele obere und untere Trendlinien, zwischen denen der Kurs Oszilliert.', 'significance': 'Erlaubt Swing-Trading zwischen den Kanallinien oder Breakout-Trading beim Ausbruch.', 'action': 'Kauf an der Unterkante, Verkauf an der Oberkante oder Breakout-Trading.', + 'reliability': 'Mittel', + 'target': 'Die gegenüberliegende Kanallinie (beim Swing-Trading) oder die Kanalbreite (beim Ausbruch).', + 'stop_loss': 'Außerhalb des Kanals auf der entgegengesetzten Seite des Einstiegs.', }, 'SUPPORT_RESISTANCE': { 'title': 'Unterstützungs- & Widerstandslinien', @@ -72,9 +99,24 @@ class PatternExplanations { 'description': 'Preisniveaus, an denen historisch gehäuft Kauf- oder Verkaufsinteresse auftrat.', 'significance': 'Wichtige Marken für Stop-Loss Platzierungen und Kursziele.', 'action': 'Trading an Key-Levels mit engem Risikomanagement.', + 'reliability': 'Variabel', + 'target': 'Das nächste große Unterstützungs- oder Widerstandslevel.', + 'stop_loss': 'Knapp jenseits der gebrochenen Linie (im Falle eines Fehlausbruchs).', }, }; + static Color getColorForPattern(String patternType) { + const colors = [ + Colors.amberAccent, + Colors.cyanAccent, + Colors.purpleAccent, + Colors.pinkAccent, + Colors.lightGreenAccent, + Colors.orangeAccent, + ]; + return colors[patternType.hashCode.abs() % colors.length]; + } + static void showPatternDetails(BuildContext context, String rawPatternType) { final key = dictionary.keys.firstWhere( (k) => rawPatternType.toUpperCase().contains(k) || k.contains(rawPatternType.toUpperCase()), @@ -87,6 +129,9 @@ class PatternExplanations { 'description': 'Ein vom FinlyticAnalyzer erkanntes technisches Chart-Muster ($rawPatternType).', 'significance': 'Trendlinien und Schlüssel-Zonen zur Bestimmung von Ein- und Ausstiegssignalen.', 'action': 'Nutzen Sie Stopp-Orders und beachten Sie den übergeordneten Markt-Trend.', + 'reliability': 'Unbekannt', + 'target': 'Abhängig vom spezifischen Muster und der Volatilität.', + 'stop_loss': 'Immer an lokalen Unterstützungs- oder Widerstandszonen platzieren.', }; final isBullish = info['bias'] == 'BULLISH'; @@ -144,9 +189,37 @@ class PatternExplanations { Text(info['significance']!, style: const TextStyle(color: Colors.white70, fontSize: 13, height: 1.4)), const SizedBox(height: 14), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('Zuverlässigkeit:', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)), + const SizedBox(height: 2), + Text(info['reliability']!, style: TextStyle(color: AppTheme.textSecondary, fontSize: 13)), + ], + ), + ), + ], + ), + const SizedBox(height: 14), + + const Text('Kursziel (Take Profit):', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)), + const SizedBox(height: 4), + Text(info['target']!, style: TextStyle(color: AppTheme.primaryEmerald, fontSize: 13, height: 1.4)), + const SizedBox(height: 14), + + const Text('Stop-Loss Platzierung:', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)), + const SizedBox(height: 4), + Text(info['stop_loss']!, style: TextStyle(color: AppTheme.accentRed, fontSize: 13, height: 1.4)), + const SizedBox(height: 18), + const Text('Empfohlene Trading-Handlung:', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)), const SizedBox(height: 4), Container( + width: double.infinity, padding: const EdgeInsets.all(10), decoration: BoxDecoration( color: AppTheme.glassSurface, diff --git a/FinlyticApp/lib/features/asset_detail/views/asset_detail_screen.dart b/FinlyticApp/lib/features/asset_detail/views/asset_detail_screen.dart index 6460bee..c5a7797 100644 --- a/FinlyticApp/lib/features/asset_detail/views/asset_detail_screen.dart +++ b/FinlyticApp/lib/features/asset_detail/views/asset_detail_screen.dart @@ -2,11 +2,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/network/api_client.dart'; import '../bloc/fundamentals/asset_fundamentals_bloc.dart'; -import '../bloc/fundamentals/asset_fundamentals_event.dart'; import '../bloc/header/asset_header_bloc.dart'; import '../bloc/header/asset_header_event.dart'; import '../bloc/technical/asset_technical_bloc.dart'; -import '../bloc/technical/asset_technical_event.dart'; import '../bloc/trades/asset_trades_bloc.dart'; import '../bloc/trades/asset_trades_event.dart'; import '../repositories/asset_repository.dart'; @@ -14,13 +12,17 @@ import 'layouts/asset_page_desktop_layout.dart'; import 'layouts/asset_page_mobile_layout.dart'; class AssetDetailScreen extends StatelessWidget { - final String symbol; + final String isin; + final String? name; + final String? symbol; final ApiClient apiClient; const AssetDetailScreen({ super.key, - required this.symbol, + required this.isin, + this.symbol, required this.apiClient, + required this.name, }); @override @@ -30,25 +32,35 @@ class AssetDetailScreen extends StatelessWidget { return MultiBlocProvider( providers: [ BlocProvider( - create: (context) => AssetHeaderBloc(repository: repository)..add(LoadAssetHeader(symbol)), + create: (context) => AssetHeaderBloc(repository: repository) + ..add(LoadAssetHeader(isin, ticker: symbol)), ), BlocProvider( - create: (context) => AssetFundamentalsBloc(repository: repository)..add(LoadAssetFundamentals(symbol)), + create: (context) => AssetFundamentalsBloc(repository: repository), ), BlocProvider( - create: (context) => AssetTechnicalBloc(repository: repository)..add(LoadAssetTechnical(symbol)), + create: (context) => AssetTechnicalBloc(repository: repository), ), BlocProvider( - create: (context) => AssetTradesBloc(repository: repository)..add(LoadAssetTrades(symbol)), + create: (context) => AssetTradesBloc(repository: repository) + ..add(LoadAssetTrades(isin)), ), ], child: Scaffold( body: LayoutBuilder( builder: (context, constraints) { if (constraints.maxWidth >= 900) { - return AssetPageDesktopLayout(symbol: symbol); + return AssetPageDesktopLayout( + isin: isin, + name: name, + selectedTicker: symbol, + ); } - return AssetPageMobileLayout(symbol: symbol); + return AssetPageMobileLayout( + isin: isin, + name: name, + selectedTicker: symbol, + ); }, ), ), diff --git a/FinlyticApp/lib/features/asset_detail/views/layouts/asset_page_desktop_layout.dart b/FinlyticApp/lib/features/asset_detail/views/layouts/asset_page_desktop_layout.dart index 97c5ed3..a569c8e 100644 --- a/FinlyticApp/lib/features/asset_detail/views/layouts/asset_page_desktop_layout.dart +++ b/FinlyticApp/lib/features/asset_detail/views/layouts/asset_page_desktop_layout.dart @@ -17,15 +17,19 @@ import '../tabs/technical_tab.dart'; import '../tabs/trades_tab.dart'; class AssetPageDesktopLayout extends StatefulWidget { - final String symbol; + final String isin; + final String? name; + final String? selectedTicker; - const AssetPageDesktopLayout({super.key, required this.symbol}); + const AssetPageDesktopLayout( + {super.key, required this.isin, this.selectedTicker, this.name}); @override State createState() => _AssetPageDesktopLayoutState(); } -class _AssetPageDesktopLayoutState extends State with SingleTickerProviderStateMixin { +class _AssetPageDesktopLayoutState extends State + with SingleTickerProviderStateMixin { late TabController _tabController; String? _selectedExchange; String? _selectedTicker; @@ -47,21 +51,29 @@ class _AssetPageDesktopLayoutState extends State with Si _selectedExchange = newExchange; _selectedTicker = newTicker; }); - context.read().add(LoadAssetHeader(widget.symbol, exchange: newExchange, ticker: newTicker)); - context.read().add(LoadAssetFundamentals(widget.symbol, ticker: newTicker, forceRefresh: false)); - context.read().add(LoadAssetTechnical(widget.symbol, ticker: newTicker, forceRefresh: false)); + context.read().add( + LoadAssetHeader(widget.isin, exchange: newExchange, ticker: newTicker)); + context.read().add(LoadAssetFundamentals(widget.isin, + ticker: newTicker, forceRefresh: false)); + context.read().add(LoadAssetTechnical(widget.isin, + ticker: newTicker, forceRefresh: false)); final favCubit = context.read(); - if (favCubit.state.isFavorite(widget.symbol)) { - favCubit.updateFavoriteTicker(widget.symbol, newTicker); + if (favCubit.state.isFavorite(widget.isin)) { + favCubit.updateFavoriteTicker(widget.isin, newTicker); } } void _handleForceRefresh() { - context.read().add(LoadAssetHeader(widget.symbol, forceRefresh: true, exchange: _selectedExchange, ticker: _selectedTicker)); - context.read().add(LoadAssetFundamentals(widget.symbol, ticker: _selectedTicker, forceRefresh: true)); - context.read().add(LoadAssetTechnical(widget.symbol, ticker: _selectedTicker, forceRefresh: true)); - context.read().add(LoadAssetTrades(widget.symbol)); + context.read().add(LoadAssetHeader(widget.isin, + forceRefresh: true, + exchange: _selectedExchange, + ticker: _selectedTicker)); + // AssetFundamentalsBloc is omitted here because AssetHeaderBloc already triggers forceRefresh=true + // for fundamentals, and the listener below will fetch the updated data with forceRefresh=false. + context.read().add(LoadAssetTechnical(widget.isin, + ticker: _selectedTicker, forceRefresh: true)); + context.read().add(LoadAssetTrades(widget.isin)); } @override @@ -73,91 +85,108 @@ class _AssetPageDesktopLayoutState extends State with Si if (state is AssetHeaderLoaded && state.data != null) { if (_selectedTicker == null) { setState(() { - _selectedTicker = state.data!.symbol; - _selectedExchange = state.data!.exchange; + _selectedTicker = widget.selectedTicker; + //_selectedExchange = state.data!.exchange; }); - // Re-trigger fundamentals and TA with resolved ticker - context.read().add(LoadAssetFundamentals(widget.symbol, ticker: state.data!.symbol, forceRefresh: false)); - context.read().add(LoadAssetTechnical(widget.symbol, ticker: state.data!.symbol, forceRefresh: false)); } + // Re-trigger fundamentals and TA with resolved ticker whenever header loads (e.g. after force refresh) + context.read().add(LoadAssetFundamentals( + widget.isin, + ticker: _selectedTicker, + forceRefresh: false)); + context.read().add(LoadAssetTechnical( + widget.isin, + ticker: _selectedTicker, + forceRefresh: false)); } }, child: LayoutBuilder( builder: (context, constraints) { - final height = constraints.maxHeight.isFinite ? constraints.maxHeight : MediaQuery.of(context).size.height; - return SizedBox( - height: height, - width: double.infinity, - child: Column( - children: [ - AssetHeroHeader( - symbol: widget.symbol, - selectedExchange: _selectedExchange, - onExchangeChanged: _handleExchangeChanged, - onForceRefresh: _handleForceRefresh, - ), - Expanded( - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // Left Panel (Chart Focus) - Expanded( - flex: 5, - child: Container( - margin: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: theme.cardSurface, - borderRadius: BorderRadius.circular(16), - border: Border.all(color: theme.glassBorder), + final height = constraints.maxHeight.isFinite + ? constraints.maxHeight + : MediaQuery.of(context).size.height; + return SizedBox( + height: height, + width: double.infinity, + child: Column( + children: [ + AssetHeroHeader( + isin: widget.isin, + name: widget.name ?? widget.isin, + symbol: _selectedTicker ?? widget.selectedTicker, + onExchangeChanged: _handleExchangeChanged, + onForceRefresh: _handleForceRefresh, + ), + Expanded( + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Left Panel (Chart Focus) + Expanded( + flex: 5, + child: Container( + margin: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: theme.cardSurface, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: theme.glassBorder), + ), + child: TechnicalTab( + isin: widget.isin, + symbol: _selectedTicker, + isDesktopLeftPanel: true), ), - child: TechnicalTab(symbol: _selectedTicker ?? widget.symbol, isDesktopLeftPanel: true), ), - ), - // Right Panel (Tabs for fundamentals/trades) - Expanded( - flex: 3, - child: Container( - margin: const EdgeInsets.only(top: 16, right: 16, bottom: 16), - decoration: BoxDecoration( - color: theme.cardSurface, - borderRadius: BorderRadius.circular(16), - border: Border.all(color: theme.glassBorder), - ), - child: Column( - children: [ - TabBar( - controller: _tabController, - labelColor: theme.primaryColor, - unselectedLabelColor: theme.textMuted, - indicatorColor: theme.primaryColor, - dividerColor: theme.glassBorder, - labelStyle: const TextStyle(fontWeight: FontWeight.bold, fontSize: 13), - tabs: const [ - Tab(text: 'OVERVIEW'), - Tab(text: 'TRADES'), - ], - ), - Expanded( - child: TabBarView( + // Right Panel (Tabs for fundamentals/trades) + Expanded( + flex: 3, + child: Container( + margin: const EdgeInsets.only( + top: 16, right: 16, bottom: 16), + decoration: BoxDecoration( + color: theme.cardSurface, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: theme.glassBorder), + ), + child: Column( + children: [ + TabBar( controller: _tabController, - children: [ - FundamentalsTab(symbol: _selectedTicker ?? widget.symbol), - TradesTab(symbol: widget.symbol), + labelColor: theme.primaryColor, + unselectedLabelColor: theme.textMuted, + indicatorColor: theme.primaryColor, + dividerColor: theme.glassBorder, + labelStyle: const TextStyle( + fontWeight: FontWeight.bold, fontSize: 13), + tabs: const [ + Tab(text: 'OVERVIEW'), + Tab(text: 'TRADES'), ], ), - ), - ], + Expanded( + child: TabBarView( + controller: _tabController, + children: [ + FundamentalsTab( + isin: widget.isin, + symbol: _selectedTicker, + ), + TradesTab(symbol: widget.isin), + ], + ), + ), + ], + ), ), ), - ), - ], + ], + ), ), - ), - ], - ), - ); - }, - ), + ], + ), + ); + }, + ), ); } } diff --git a/FinlyticApp/lib/features/asset_detail/views/layouts/asset_page_mobile_layout.dart b/FinlyticApp/lib/features/asset_detail/views/layouts/asset_page_mobile_layout.dart index 415f92a..1906b15 100644 --- a/FinlyticApp/lib/features/asset_detail/views/layouts/asset_page_mobile_layout.dart +++ b/FinlyticApp/lib/features/asset_detail/views/layouts/asset_page_mobile_layout.dart @@ -17,22 +17,26 @@ import '../tabs/technical_tab.dart'; import '../tabs/trades_tab.dart'; class AssetPageMobileLayout extends StatefulWidget { - final String symbol; + final String isin; + final String? name; + final String? selectedTicker; - const AssetPageMobileLayout({super.key, required this.symbol}); + const AssetPageMobileLayout( + {super.key, required this.isin, this.selectedTicker, this.name}); @override State createState() => _AssetPageMobileLayoutState(); } -class _AssetPageMobileLayoutState extends State with SingleTickerProviderStateMixin { +class _AssetPageMobileLayoutState extends State + with SingleTickerProviderStateMixin { late TabController _tabController; - String? _selectedExchange; String? _selectedTicker; @override void initState() { super.initState(); + //_selectedTicker = widget.selectedTicker; _tabController = TabController(length: 3, vsync: this); } @@ -44,24 +48,30 @@ class _AssetPageMobileLayoutState extends State with Sing void _handleExchangeChanged(String newExchange, String newTicker) { setState(() { - _selectedExchange = newExchange; + //_selectedExchange = newExchange; _selectedTicker = newTicker; }); - context.read().add(LoadAssetHeader(widget.symbol, exchange: newExchange, ticker: newTicker)); - context.read().add(LoadAssetFundamentals(widget.symbol, ticker: newTicker, forceRefresh: false)); - context.read().add(LoadAssetTechnical(widget.symbol, ticker: newTicker, forceRefresh: false)); + context.read().add( + LoadAssetHeader(widget.isin, exchange: newExchange, ticker: newTicker)); + context.read().add(LoadAssetFundamentals(widget.isin, + ticker: newTicker, forceRefresh: false)); + context.read().add(LoadAssetTechnical(widget.isin, + ticker: newTicker, forceRefresh: false)); final favCubit = context.read(); - if (favCubit.state.isFavorite(widget.symbol)) { - favCubit.updateFavoriteTicker(widget.symbol, newTicker); + if (favCubit.state.isFavorite(widget.isin)) { + favCubit.updateFavoriteTicker(widget.isin, newTicker); } } void _handleForceRefresh() { - context.read().add(LoadAssetHeader(widget.symbol, forceRefresh: true, exchange: _selectedExchange, ticker: _selectedTicker)); - context.read().add(LoadAssetFundamentals(widget.symbol, ticker: _selectedTicker, forceRefresh: true)); - context.read().add(LoadAssetTechnical(widget.symbol, ticker: _selectedTicker, forceRefresh: true)); - context.read().add(LoadAssetTrades(widget.symbol)); + context.read().add(LoadAssetHeader(widget.isin, + forceRefresh: true, ticker: _selectedTicker)); + // AssetFundamentalsBloc is omitted here because AssetHeaderBloc already triggers forceRefresh=true + // for fundamentals, and the listener below will fetch the updated data with forceRefresh=false. + context.read().add(LoadAssetTechnical(widget.isin, + ticker: _selectedTicker, forceRefresh: true)); + context.read().add(LoadAssetTrades(widget.isin)); } @override @@ -73,56 +83,70 @@ class _AssetPageMobileLayoutState extends State with Sing if (state is AssetHeaderLoaded && state.data != null) { if (_selectedTicker == null) { setState(() { - _selectedTicker = state.data!.symbol; - _selectedExchange = state.data!.exchange; + _selectedTicker = widget.selectedTicker; + //_selectedExchange = state.data!.exchange; }); - // Re-trigger fundamentals and TA with resolved ticker - context.read().add(LoadAssetFundamentals(widget.symbol, ticker: state.data!.symbol, forceRefresh: false)); - context.read().add(LoadAssetTechnical(widget.symbol, ticker: state.data!.symbol, forceRefresh: false)); } + // Re-trigger fundamentals and TA with resolved ticker whenever header loads (e.g. after force refresh) + context.read().add(LoadAssetFundamentals( + widget.isin, + ticker: _selectedTicker, + forceRefresh: false)); + context.read().add(LoadAssetTechnical( + widget.isin, + ticker: _selectedTicker, + forceRefresh: false)); } }, child: NestedScrollView( headerSliverBuilder: (context, innerBoxIsScrolled) { - return [ - SliverToBoxAdapter( - child: AssetHeroHeader( - symbol: widget.symbol, - selectedExchange: _selectedExchange, - onExchangeChanged: _handleExchangeChanged, - onForceRefresh: _handleForceRefresh, - ), - ), - SliverPersistentHeader( - pinned: true, - delegate: _SliverAppBarDelegate( - TabBar( - controller: _tabController, - labelColor: theme.primaryColor, - unselectedLabelColor: theme.textMuted, - indicatorColor: theme.primaryColor, - dividerColor: Colors.transparent, - labelStyle: const TextStyle(fontWeight: FontWeight.bold, fontSize: 13), - tabs: const [ - Tab(text: 'OVERVIEW'), - Tab(text: 'TECHNICAL'), - Tab(text: 'TRADES'), - ], + return [ + SliverToBoxAdapter( + child: AssetHeroHeader( + isin: widget.isin, + name: widget.name ?? widget.isin, + symbol: _selectedTicker ?? widget.selectedTicker, + onExchangeChanged: _handleExchangeChanged, + onForceRefresh: _handleForceRefresh, ), - theme.cardSurface, ), - ), - ]; - }, - body: TabBarView( - controller: _tabController, - children: [ - FundamentalsTab(symbol: _selectedTicker ?? widget.symbol), - TechnicalTab(symbol: _selectedTicker ?? widget.symbol), - TradesTab(symbol: widget.symbol), - ], + SliverPersistentHeader( + pinned: true, + delegate: _SliverAppBarDelegate( + TabBar( + controller: _tabController, + labelColor: theme.primaryColor, + unselectedLabelColor: theme.textMuted, + indicatorColor: theme.primaryColor, + dividerColor: Colors.transparent, + labelStyle: const TextStyle( + fontWeight: FontWeight.bold, fontSize: 13), + tabs: const [ + Tab(text: 'OVERVIEW'), + Tab(text: 'TECHNICAL'), + Tab(text: 'TRADES'), + ], + ), + theme.cardSurface, + ), + ), + ]; + }, + body: TabBarView( + controller: _tabController, + children: [ + FundamentalsTab( + isin: widget.isin, + symbol: _selectedTicker, + ), + TechnicalTab( + isin: widget.isin, + symbol: _selectedTicker, + ), + TradesTab(symbol: widget.isin), + ], + ), ), - ), ); } } @@ -135,11 +159,13 @@ class _SliverAppBarDelegate extends SliverPersistentHeaderDelegate { @override double get minExtent => _tabBar.preferredSize.height; + @override double get maxExtent => _tabBar.preferredSize.height; @override - Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) { + Widget build( + BuildContext context, double shrinkOffset, bool overlapsContent) { return Container( color: _backgroundColor, child: _tabBar, diff --git a/FinlyticApp/lib/features/asset_detail/views/tabs/fundamentals_tab.dart b/FinlyticApp/lib/features/asset_detail/views/tabs/fundamentals_tab.dart index e11605a..3499da5 100644 --- a/FinlyticApp/lib/features/asset_detail/views/tabs/fundamentals_tab.dart +++ b/FinlyticApp/lib/features/asset_detail/views/tabs/fundamentals_tab.dart @@ -10,8 +10,9 @@ import '../../bloc/fundamentals/asset_fundamentals_state.dart'; import '../../utils/metric_explanations.dart'; class FundamentalsTab extends StatefulWidget { - final String symbol; - const FundamentalsTab({super.key, required this.symbol}); + final String isin; + final String? symbol; + const FundamentalsTab({super.key, this.symbol, required this.isin}); @override State createState() => _FundamentalsTabState(); @@ -24,15 +25,11 @@ class _FundamentalsTabState extends State { @override void initState() { super.initState(); - context.read().add(LoadAssetFundamentals(widget.symbol, forceRefresh: false)); } @override void didUpdateWidget(covariant FundamentalsTab oldWidget) { super.didUpdateWidget(oldWidget); - if (oldWidget.symbol != widget.symbol) { - context.read().add(LoadAssetFundamentals(widget.symbol, forceRefresh: false)); - } } @override @@ -55,7 +52,7 @@ class _FundamentalsTabState extends State { Text('Fehler beim Laden der Fundamentaldaten: ${state.message}', style: const TextStyle(color: Colors.white70)), const SizedBox(height: 16), ElevatedButton.icon( - onPressed: () => context.read().add(LoadAssetFundamentals(widget.symbol, forceRefresh: true)), + onPressed: () => context.read().add(LoadAssetFundamentals(widget.isin, ticker: widget.symbol, forceRefresh: true)), icon: const Icon(Icons.refresh), label: const Text('Erneut versuchen'), ), @@ -515,7 +512,7 @@ class _FundamentalsTabState extends State { Text('Für dieses Asset wurden noch keine Bilanz- oder Bewertungskennzahlen erfasst.', style: TextStyle(color: AppTheme.textMuted, fontSize: 12), textAlign: TextAlign.center), const SizedBox(height: 16), ElevatedButton.icon( - onPressed: () => context.read().add(LoadAssetFundamentals(widget.symbol, forceRefresh: true)), + onPressed: () => context.read().add(LoadAssetFundamentals(widget.isin, ticker: widget.symbol, forceRefresh: true)), icon: const Icon(Icons.download), label: const Text('Daten von Backend abrufen'), ), diff --git a/FinlyticApp/lib/features/asset_detail/views/tabs/technical_tab.dart b/FinlyticApp/lib/features/asset_detail/views/tabs/technical_tab.dart index f126879..50c6a68 100644 --- a/FinlyticApp/lib/features/asset_detail/views/tabs/technical_tab.dart +++ b/FinlyticApp/lib/features/asset_detail/views/tabs/technical_tab.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../core/theme/app_theme.dart'; import '../../../../core/widgets/glass_container.dart'; @@ -11,13 +12,15 @@ import '../../utils/pattern_explanations.dart'; import '../../widgets/chart/candlestick_chart.dart'; class TechnicalTab extends StatefulWidget { - final String symbol; + final String isin; + final String? symbol; final bool isDesktopLeftPanel; const TechnicalTab({ super.key, - required this.symbol, + this.symbol, this.isDesktopLeftPanel = false, + required this.isin, }); @override @@ -38,15 +41,11 @@ class _TechnicalTabState extends State { @override void initState() { super.initState(); - context.read().add(LoadAssetTechnical(widget.symbol, forceRefresh: false)); } @override void didUpdateWidget(covariant TechnicalTab oldWidget) { super.didUpdateWidget(oldWidget); - if (oldWidget.symbol != widget.symbol) { - context.read().add(LoadAssetTechnical(widget.symbol, forceRefresh: false)); - } } @override @@ -54,7 +53,8 @@ class _TechnicalTabState extends State { return BlocBuilder( builder: (context, state) { if (state is AssetTechnicalLoading) { - return Center(child: CircularProgressIndicator(color: AppTheme.primaryEmerald)); + return Center( + child: CircularProgressIndicator(color: AppTheme.primaryEmerald)); } if (state is AssetTechnicalError) { @@ -66,10 +66,13 @@ class _TechnicalTabState extends State { children: [ Icon(Icons.show_chart, color: AppTheme.accentRed, size: 48), const SizedBox(height: 12), - Text('Fehler beim Laden der Technischen Analyse: ${state.message}', style: const TextStyle(color: Colors.white70)), + Text( + 'Fehler beim Laden der Technischen Analyse: ${state.message}', + style: const TextStyle(color: Colors.white70)), const SizedBox(height: 16), ElevatedButton.icon( - onPressed: () => context.read().add(LoadAssetTechnical(widget.symbol, forceRefresh: true)), + onPressed: () => context.read().add( + LoadAssetTechnical(widget.isin, ticker: widget.symbol, forceRefresh: true)), icon: const Icon(Icons.refresh), label: const Text('Erneut versuchen'), ), @@ -87,10 +90,40 @@ class _TechnicalTabState extends State { List indicators = []; if (data != null) { - candles = data.candles.map((c) => CandleModel(time: c.timestamp, open: c.open, high: c.high, low: c.low, close: c.close, volume: c.volume)).toList(); - patterns = []; // Since data.patterns is a List of Strings, we don't have point coordinates to draw them on the chart - signals = data.signals.map((s) => StrategySignalModel(type: 'strategy', timestamp: s.date, direction: s.type, price: s.price, description: s.title)).toList(); - indicators = data.indicators.map((i) => IndicatorModel(timestamp: i.timestamp, ema20: i.ema20, sma50: i.sma50, sma200: i.sma200, supertrendUpper: i.supertrendUpper, supertrendLower: i.supertrendLower, supertrendDirection: i.supertrendDirection)).toList(); + candles = data.candles + .map((c) => CandleModel( + time: c.timestamp, + open: c.open, + high: c.high, + low: c.low, + close: c.close, + volume: c.volume)) + .toList(); + patterns = data.patterns + .map((p) => ChartPatternModel( + type: p.type, + upperLine: p.upperLine.map((pt) => PatternPoint(pt.time, pt.price)).toList(), + lowerLine: p.lowerLine.map((pt) => PatternPoint(pt.time, pt.price)).toList(), + )) + .toList(); + signals = data.signals + .map((s) => StrategySignalModel( + type: 'strategy', + timestamp: s.date, + direction: s.type, + price: s.price, + description: s.title)) + .toList(); + indicators = data.indicators + .map((i) => IndicatorModel( + timestamp: i.timestamp, + ema20: i.ema20, + sma50: i.sma50, + sma200: i.sma200, + supertrendUpper: i.supertrendUpper, + supertrendLower: i.supertrendLower, + supertrendDirection: i.supertrendDirection)) + .toList(); } // Filter patterns according to individual checkbox states @@ -105,22 +138,47 @@ class _TechnicalTabState extends State { children: [ // Glassmorphic Indicator & Pattern Control Ribbon GlassContainer( - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + padding: + const EdgeInsets.symmetric(horizontal: 12, vertical: 8), child: SingleChildScrollView( scrollDirection: Axis.horizontal, child: Row( children: [ - _buildIndicatorChip('EMA (20)', _showEma, (v) => setState(() => _showEma = v), Colors.blueAccent), + _buildIndicatorChip( + 'EMA (20)', + _showEma, + (v) => setState(() => _showEma = v), + Colors.blueAccent), const SizedBox(width: 6), - _buildIndicatorChip('SMA (50)', _showSma50, (v) => setState(() => _showSma50 = v), Colors.orangeAccent), + _buildIndicatorChip( + 'SMA (50)', + _showSma50, + (v) => setState(() => _showSma50 = v), + Colors.orangeAccent), const SizedBox(width: 6), - _buildIndicatorChip('SMA (200)', _showSma200, (v) => setState(() => _showSma200 = v), Colors.redAccent), + _buildIndicatorChip( + 'SMA (200)', + _showSma200, + (v) => setState(() => _showSma200 = v), + Colors.redAccent), const SizedBox(width: 6), - _buildIndicatorChip('Supertrend', _showSupertrend, (v) => setState(() => _showSupertrend = v), AppTheme.primaryEmerald), + _buildIndicatorChip( + 'Supertrend', + _showSupertrend, + (v) => setState(() => _showSupertrend = v), + AppTheme.primaryEmerald), const SizedBox(width: 6), - _buildIndicatorChip('Alle Muster', _showPatterns, (v) => setState(() => _showPatterns = v), Colors.amberAccent), + _buildIndicatorChip( + 'Alle Muster', + _showPatterns, + (v) => setState(() => _showPatterns = v), + Colors.amberAccent), const SizedBox(width: 6), - _buildIndicatorChip('Signale', _showSignals, (v) => setState(() => _showSignals = v), AppTheme.accentCyan), + _buildIndicatorChip( + 'Signale', + _showSignals, + (v) => setState(() => _showSignals = v), + AppTheme.accentCyan), ], ), ), @@ -156,24 +214,42 @@ class _TechnicalTabState extends State { children: [ Row( children: [ - Icon(Icons.architecture_outlined, color: AppTheme.primaryEmerald, size: 20), + Icon(Icons.architecture_outlined, + color: AppTheme.primaryEmerald, size: 20), const SizedBox(width: 8), - const Text('Erkannte Chart-Muster & Signale', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold, color: Colors.white)), + const Text('Erkannte Chart-Muster & Signale', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.white)), ], ), if (patterns.isNotEmpty) TextButton.icon( onPressed: () { setState(() { - if (_disabledPatternIndices.length == patterns.length) { + if (_disabledPatternIndices.length == + patterns.length) { _disabledPatternIndices.clear(); } else { - _disabledPatternIndices.addAll(List.generate(patterns.length, (i) => i)); + _disabledPatternIndices.addAll( + List.generate( + patterns.length, (i) => i)); } }); }, - icon: Icon(_disabledPatternIndices.isEmpty ? Icons.deselect : Icons.select_all, size: 16, color: Colors.amberAccent), - label: Text(_disabledPatternIndices.isEmpty ? 'Alle abwählen' : 'Alle anwählen', style: const TextStyle(color: Colors.amberAccent, fontSize: 12)), + icon: Icon( + _disabledPatternIndices.isEmpty + ? Icons.deselect + : Icons.select_all, + size: 16, + color: Colors.amberAccent), + label: Text( + _disabledPatternIndices.isEmpty + ? 'Alle abwählen' + : 'Alle anwählen', + style: const TextStyle( + color: Colors.amberAccent, fontSize: 12)), ), ], ), @@ -182,18 +258,33 @@ class _TechnicalTabState extends State { GlassContainer( padding: const EdgeInsets.all(16), child: Center( - child: Text('Zurzeit wurden keine akuten Formationen oder Strategie-Signale identifiziert.', style: TextStyle(color: AppTheme.textMuted, fontSize: 12)), + child: Text( + 'Zurzeit wurden keine akuten Formationen oder Strategie-Signale identifiziert.', + style: TextStyle( + color: AppTheme.textMuted, fontSize: 12)), ), ) else ...[ if (patterns.isNotEmpty) ...[ - Text('Formationen & Trendlinien (Mit Checkbox im Chart schalten):', style: TextStyle(color: AppTheme.textSecondary, fontWeight: FontWeight.w600, fontSize: 13)), + Text( + 'Formationen & Trendlinien (Mit Checkbox im Chart schalten):', + style: TextStyle( + color: AppTheme.textSecondary, + fontWeight: FontWeight.w600, + fontSize: 13)), const SizedBox(height: 6), - ...List.generate(patterns.length, (index) => _buildPatternCard(patterns[index], index)), + ...List.generate( + patterns.length, + (index) => + _buildPatternCard(patterns[index], index)), const SizedBox(height: 12), ], if (signals.isNotEmpty) ...[ - Text('Strategie-Signale:', style: TextStyle(color: AppTheme.textSecondary, fontWeight: FontWeight.w600, fontSize: 13)), + Text('Strategie-Signale:', + style: TextStyle( + color: AppTheme.textSecondary, + fontWeight: FontWeight.w600, + fontSize: 13)), const SizedBox(height: 6), ...signals.map((s) => _buildSignalCard(s)), ], @@ -208,7 +299,8 @@ class _TechnicalTabState extends State { } return Center( - child: Text('Keine technisches Indikatoren verfügbar', style: TextStyle(color: AppTheme.textMuted)), + child: Text('Keine technisches Indikatoren verfügbar', + style: TextStyle(color: AppTheme.textMuted)), ); }, ); @@ -216,6 +308,21 @@ class _TechnicalTabState extends State { Widget _buildPatternCard(ChartPatternModel pattern, int index) { final isEnabled = !_disabledPatternIndices.contains(index); + final patternColor = PatternExplanations.getColorForPattern(pattern.type); + + final allPoints = [...pattern.upperLine, ...pattern.lowerLine]; + DateTime? startDate; + DateTime? endDate; + if (allPoints.isNotEmpty) { + allPoints.sort((a, b) => a.time.compareTo(b.time)); + startDate = allPoints.first.time; + endDate = allPoints.last.time; + } + + final dateFormat = DateFormat('dd.MM.yy'); + final dateStr = startDate != null && endDate != null + ? '${dateFormat.format(startDate)} - ${dateFormat.format(endDate)}' + : 'Unbekannt'; return Padding( padding: const EdgeInsets.only(bottom: 8), @@ -226,9 +333,10 @@ class _TechnicalTabState extends State { // Checkbox for individual pattern toggling on the chart Checkbox( value: isEnabled, - activeColor: Colors.amberAccent, + activeColor: patternColor, checkColor: Colors.black, - side: BorderSide(color: Colors.amberAccent.withValues(alpha: 0.6)), + side: + BorderSide(color: patternColor.withValues(alpha: 0.6)), onChanged: (bool? val) { setState(() { if (val == true) { @@ -241,19 +349,27 @@ class _TechnicalTabState extends State { ), Expanded( child: InkWell( - onTap: () => PatternExplanations.showPatternDetails(context, pattern.type), + onTap: () => PatternExplanations.showPatternDetails( + context, pattern.type), borderRadius: BorderRadius.circular(8), child: Padding( - padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 4), + padding: + const EdgeInsets.symmetric(vertical: 4, horizontal: 4), child: Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( - color: isEnabled ? Colors.amberAccent.withValues(alpha: 0.15) : AppTheme.glassSurface, + color: isEnabled + ? patternColor.withValues(alpha: 0.15) + : AppTheme.glassSurface, borderRadius: BorderRadius.circular(8), ), - child: Icon(Icons.polyline_outlined, color: isEnabled ? Colors.amberAccent : AppTheme.textMuted, size: 20), + child: Icon(Icons.polyline_outlined, + color: isEnabled + ? patternColor + : AppTheme.textMuted, + size: 20), ), const SizedBox(width: 12), Expanded( @@ -266,26 +382,33 @@ class _TechnicalTabState extends State { pattern.type, style: TextStyle( fontWeight: FontWeight.bold, - color: isEnabled ? Colors.white : AppTheme.textMuted, + color: isEnabled + ? Colors.white + : AppTheme.textMuted, fontSize: 14, - decoration: isEnabled ? null : TextDecoration.lineThrough, + decoration: isEnabled + ? null + : TextDecoration.lineThrough, ), ), const SizedBox(width: 6), - Icon(Icons.info_outline, size: 14, color: AppTheme.textMuted), + Icon(Icons.info_outline, + size: 14, color: AppTheme.textMuted), ], ), - const SizedBox(height: 4), Text( - 'Formationspunkte: Oberer Trendkanal (${pattern.upperLine.length} Pkt.) / Unterer Trendkanal (${pattern.lowerLine.length} Pkt.)', - style: TextStyle(color: AppTheme.textMuted, fontSize: 11), + 'Zeitraum: $dateStr\n' + 'Linien: Oben (${pattern.upperLine.length} Pkt.) / Unten (${pattern.lowerLine.length} Pkt.)', + style: TextStyle( + color: AppTheme.textMuted, fontSize: 11, height: 1.3), ), ], ), ), StatusBadge( label: isEnabled ? 'AKTIV' : 'AUS', - color: isEnabled ? Colors.amberAccent : AppTheme.textMuted, + color: + isEnabled ? patternColor : AppTheme.textMuted, ), ], ), @@ -314,7 +437,8 @@ class _TechnicalTabState extends State { color: color.withValues(alpha: 0.15), borderRadius: BorderRadius.circular(8), ), - child: Icon(isBuy ? Icons.north_east : Icons.south_east, color: color, size: 20), + child: Icon(isBuy ? Icons.north_east : Icons.south_east, + color: color, size: 20), ), const SizedBox(width: 12), Expanded( @@ -323,13 +447,26 @@ class _TechnicalTabState extends State { children: [ Row( children: [ - Text(signal.type.toUpperCase(), style: TextStyle(fontWeight: FontWeight.bold, color: color, fontSize: 14)), + Text(signal.type.toUpperCase(), + style: TextStyle( + fontWeight: FontWeight.bold, + color: color, + fontSize: 14)), const SizedBox(width: 8), - Text('@ €${signal.price.toStringAsFixed(2)}', style: const TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 13)), + Text('@ €${signal.price.toStringAsFixed(2)}', + style: const TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 13)), ], ), const SizedBox(height: 4), - Text(signal.description.isNotEmpty ? signal.description : 'Strategisches Kaufsignal ausgelöst durch technische Indikatoren.', style: TextStyle(color: AppTheme.textSecondary, fontSize: 12)), + Text( + signal.description.isNotEmpty + ? signal.description + : 'Strategisches Kaufsignal ausgelöst durch technische Indikatoren.', + style: TextStyle( + color: AppTheme.textSecondary, fontSize: 12)), ], ), ), @@ -340,13 +477,18 @@ class _TechnicalTabState extends State { ); } - Widget _buildIndicatorChip(String label, bool isSelected, ValueChanged onChanged, Color color) { + Widget _buildIndicatorChip(String label, bool isSelected, + ValueChanged onChanged, Color color) { return Row( mainAxisSize: MainAxisSize.min, children: [ FilterChip( selected: isSelected, - label: Text(label, style: TextStyle(color: isSelected ? Colors.black : color, fontSize: 11, fontWeight: FontWeight.bold)), + label: Text(label, + style: TextStyle( + color: isSelected ? Colors.black : color, + fontSize: 11, + fontWeight: FontWeight.bold)), selectedColor: color, backgroundColor: color.withValues(alpha: 0.15), side: BorderSide(color: color.withValues(alpha: 0.4)), @@ -357,7 +499,8 @@ class _TechnicalTabState extends State { onTap: () => MetricExplanations.show(context, label), child: Padding( padding: const EdgeInsets.symmetric(horizontal: 2), - child: Icon(Icons.info_outline, size: 14, color: AppTheme.textMuted), + child: + Icon(Icons.info_outline, size: 14, color: AppTheme.textMuted), ), ), ], diff --git a/FinlyticApp/lib/features/asset_detail/widgets/chart/candlestick_chart.dart b/FinlyticApp/lib/features/asset_detail/widgets/chart/candlestick_chart.dart index 88a37f8..ca8d013 100644 --- a/FinlyticApp/lib/features/asset_detail/widgets/chart/candlestick_chart.dart +++ b/FinlyticApp/lib/features/asset_detail/widgets/chart/candlestick_chart.dart @@ -2,6 +2,7 @@ import 'dart:math'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import '../../../../core/theme/app_theme.dart'; +import '../../utils/pattern_explanations.dart'; class CandleModel { final DateTime time; @@ -518,16 +519,16 @@ class _CandlePainter extends CustomPainter { } if (showEma && !firstEma20) { - canvas.drawPath(ema20Path, Paint()..color = theme.primaryColor..style = PaintingStyle.stroke..strokeWidth = 1.5); + canvas.drawPath(ema20Path, Paint()..color = Colors.blueAccent..style = PaintingStyle.stroke..strokeWidth = 1.5); } if (showSma50 && !firstSma50) { canvas.drawPath(sma50Path, Paint()..color = Colors.orangeAccent..style = PaintingStyle.stroke..strokeWidth = 1.5); } if (showSma200 && !firstSma200) { - canvas.drawPath(sma200Path, Paint()..color = Colors.purpleAccent..style = PaintingStyle.stroke..strokeWidth = 2.0); + canvas.drawPath(sma200Path, Paint()..color = Colors.redAccent..style = PaintingStyle.stroke..strokeWidth = 2.0); } if (showSupertrend && !firstSupertrend) { - canvas.drawPath(supertrendPath, Paint()..color = Colors.lightBlueAccent..style = PaintingStyle.stroke..strokeWidth = 2.0); + canvas.drawPath(supertrendPath, Paint()..color = AppTheme.primaryEmerald..style = PaintingStyle.stroke..strokeWidth = 2.0); } if (showPatterns) { @@ -702,12 +703,13 @@ class _CandlePainter extends CustomPainter { } void _drawPatterns(Canvas canvas, double Function(DateTime) getX, double Function(double) getY) { - final paint = Paint() - ..color = Colors.orangeAccent - ..style = PaintingStyle.stroke - ..strokeWidth = 2.0; - for (var pattern in patterns) { + final color = PatternExplanations.getColorForPattern(pattern.type); + final paint = Paint() + ..color = color + ..style = PaintingStyle.stroke + ..strokeWidth = 2.0; + void drawLine(List points) { if (points.length < 2) return; final path = Path(); diff --git a/FinlyticApp/lib/features/asset_detail/widgets/header/asset_hero_header.dart b/FinlyticApp/lib/features/asset_detail/widgets/header/asset_hero_header.dart index 0795502..8271026 100644 --- a/FinlyticApp/lib/features/asset_detail/widgets/header/asset_hero_header.dart +++ b/FinlyticApp/lib/features/asset_detail/widgets/header/asset_hero_header.dart @@ -6,19 +6,19 @@ import '../../../../shared/widgets/favorite_star_button.dart'; import '../../bloc/header/asset_header_bloc.dart'; import '../../bloc/header/asset_header_state.dart'; import '../../models/asset_model.dart'; +import 'package:url_launcher/url_launcher.dart'; class AssetHeroHeader extends StatelessWidget { - final String symbol; + final String isin; + final String name; + final String? symbol; final void Function(String exchange, String ticker)? onExchangeChanged; final VoidCallback? onForceRefresh; - final String? selectedExchange; const AssetHeroHeader({ super.key, - required this.symbol, this.onExchangeChanged, - this.onForceRefresh, - this.selectedExchange, + this.onForceRefresh, required this.isin, required this.name, this.symbol, }); @override @@ -27,10 +27,8 @@ class AssetHeroHeader extends StatelessWidget { return BlocBuilder( builder: (context, state) { - String name = symbol; double? price; String currency = 'EUR'; - String currentExchange = selectedExchange ?? 'XETRA'; List tickerOptions = [ AssetTickerOption(ticker: 'Loading', exchange: 'Loading', tradingCurrency: '', currentPrice: 0.0) ]; @@ -43,10 +41,9 @@ class AssetHeroHeader extends StatelessWidget { } if (asset != null) { - name = asset.name.isNotEmpty ? asset.name : symbol; + //name = asset.name.isNotEmpty ? asset.name : symbol; currency = asset.currency.isNotEmpty ? asset.currency : 'EUR'; price = asset.currentPrice; - currentExchange = selectedExchange ?? asset.exchange; if (asset.tickers.isNotEmpty) { tickerOptions = asset.tickers; @@ -54,7 +51,7 @@ class AssetHeroHeader extends StatelessWidget { } final selectedOption = tickerOptions.firstWhere( - (t) => t.exchange == currentExchange, + (t) => t.ticker == symbol || t.exchange == symbol, orElse: () => tickerOptions.first, ); @@ -89,7 +86,7 @@ class AssetHeroHeader extends StatelessWidget { ), const SizedBox(width: 8), ], - AssetLogoWidget(symbolOrName: symbol, size: 48), + AssetLogoWidget(symbolOrName: isin, imageUrl: asset?.image, size: 48), const SizedBox(width: 16), Expanded( child: Column( @@ -106,7 +103,7 @@ class AssetHeroHeader extends StatelessWidget { ), const SizedBox(height: 2), SelectableText( - symbol, + isin, style: TextStyle( fontSize: 14, fontWeight: FontWeight.bold, @@ -122,13 +119,24 @@ class AssetHeroHeader extends StatelessWidget { ), Row( children: [ + IconButton( + tooltip: 'Open in Yahoo Finance', + icon: Icon(Icons.open_in_new, color: theme.textSecondary), + onPressed: () async { + final url = Uri.parse('https://finance.yahoo.com/quote/${selectedOption.ticker}'); + if (await canLaunchUrl(url)) { + await launchUrl(url, mode: LaunchMode.externalApplication); + } + }, + ), + const SizedBox(width: 8), IconButton( tooltip: 'Force Refresh Data', icon: Icon(Icons.refresh, color: theme.primaryColor), onPressed: onForceRefresh, ), const SizedBox(width: 8), - FavoriteStarButton(symbol: symbol, identifier: symbol, name: name), + FavoriteStarButton(symbol: symbol, identifier: isin, name: name), ], ), ], @@ -142,7 +150,7 @@ class AssetHeroHeader extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'LIVE PRICE', + 'AKTUELLER PREIS', style: TextStyle( fontSize: 11, fontWeight: FontWeight.bold, @@ -180,15 +188,15 @@ class AssetHeroHeader extends StatelessWidget { ), // Interactive Ticker & Exchange Selector Dropdown PopupMenuButton( - initialValue: selectedOption.exchange, + initialValue: selectedOption.ticker, tooltip: 'Select Exchange & Ticker', - onSelected: (newExchange) { + onSelected: (newTicker) { if (onExchangeChanged != null) { final opt = tickerOptions.firstWhere( - (t) => t.exchange == newExchange, + (t) => t.ticker == newTicker, orElse: () => tickerOptions.first, ); - onExchangeChanged!(newExchange, opt.ticker); + onExchangeChanged!(opt.exchange, opt.ticker); } }, itemBuilder: (context) { @@ -196,10 +204,10 @@ class AssetHeroHeader extends StatelessWidget { final ex = opt.exchange; final tick = opt.ticker; final label = '$tick ($ex)'; - final isSelected = ex == currentExchange; + final isSelected = tick == symbol || ex == symbol; return PopupMenuItem( - value: ex, + value: tick, child: Row( children: [ Icon( diff --git a/FinlyticApp/lib/features/calendar/bloc/calendar_bloc.dart b/FinlyticApp/lib/features/calendar/bloc/calendar_bloc.dart index d451145..3c83394 100644 --- a/FinlyticApp/lib/features/calendar/bloc/calendar_bloc.dart +++ b/FinlyticApp/lib/features/calendar/bloc/calendar_bloc.dart @@ -20,10 +20,10 @@ class CalendarBloc extends Bloc { Future _onFetchEvents(FetchCalendarEvents event, Emitter emit) async { emit(CalendarLoading()); try { - final events = await repository.fetchEvents(); + final events = await repository.fetchEvents(event.year, event.month); emit(CalendarLoaded( allEvents: events, - currentMonth: DateTime.now(), + currentMonth: DateTime(event.year, event.month), )); } catch (e) { emit(const CalendarError("Fehler beim Laden des Kalenders.")); @@ -60,6 +60,9 @@ class CalendarBloc extends Bloc { currentMonth: event.newMonth, clearSelectedDate: true, )); + + // Trigger new fetch for the selected month + add(FetchCalendarEvents(year: event.newMonth.year, month: event.newMonth.month)); } } } diff --git a/FinlyticApp/lib/features/calendar/bloc/calendar_event.dart b/FinlyticApp/lib/features/calendar/bloc/calendar_event.dart index 2fe69e6..db71e73 100644 --- a/FinlyticApp/lib/features/calendar/bloc/calendar_event.dart +++ b/FinlyticApp/lib/features/calendar/bloc/calendar_event.dart @@ -7,7 +7,15 @@ abstract class CalendarEvent extends Equatable { List get props => []; } -class FetchCalendarEvents extends CalendarEvent {} +class FetchCalendarEvents extends CalendarEvent { + final int year; + final int month; + + const FetchCalendarEvents({required this.year, required this.month}); + + @override + List get props => [year, month]; +} class FilterCategoryChanged extends CalendarEvent { final String category; diff --git a/FinlyticApp/lib/features/calendar/models/corporate_event_model.dart b/FinlyticApp/lib/features/calendar/models/corporate_event_model.dart index addfe00..a576b04 100644 --- a/FinlyticApp/lib/features/calendar/models/corporate_event_model.dart +++ b/FinlyticApp/lib/features/calendar/models/corporate_event_model.dart @@ -2,6 +2,7 @@ import 'package:equatable/equatable.dart'; class CorporateEventModel extends Equatable { final String id; + final String isin; final String symbol; final String companyName; final String eventType; @@ -15,6 +16,7 @@ class CorporateEventModel extends Equatable { required this.eventType, required this.eventDate, required this.description, + required this.isin, }); factory CorporateEventModel.fromJson(Map json) { @@ -25,7 +27,8 @@ class CorporateEventModel extends Equatable { if (str.contains('.')) { final parts = str.split('.'); if (parts.length >= 3) { - return DateTime(int.parse(parts[2]), int.parse(parts[1]), int.parse(parts[0])); + return DateTime( + int.parse(parts[2]), int.parse(parts[1]), int.parse(parts[0])); } } return DateTime.parse(str); @@ -36,17 +39,24 @@ class CorporateEventModel extends Equatable { return CorporateEventModel( id: json['id']?.toString() ?? json['Id']?.toString() ?? '', + isin: json['isin']?.toString() ?? json['Isin']?.toString() ?? '', symbol: json['symbol']?.toString() ?? json['Symbol']?.toString() ?? '', - companyName: json['companyName']?.toString() ?? json['CompanyName']?.toString() ?? '', - eventType: json['eventType']?.toString() ?? json['EventType']?.toString() ?? '', + companyName: json['companyName']?.toString() ?? + json['CompanyName']?.toString() ?? + '', + eventType: + json['eventType']?.toString() ?? json['EventType']?.toString() ?? '', eventDate: parseDate(json['eventDate'] ?? json['EventDate']), - description: json['description']?.toString() ?? json['Description']?.toString() ?? '', + description: json['description']?.toString() ?? + json['Description']?.toString() ?? + '', ); } Map toJson() { return { 'id': id, + 'isin': isin, 'symbol': symbol, 'companyName': companyName, 'eventType': eventType, @@ -56,5 +66,6 @@ class CorporateEventModel extends Equatable { } @override - List get props => [id, symbol, companyName, eventType, eventDate, description]; + List get props => + [id, symbol, companyName, eventType, eventDate, description]; } diff --git a/FinlyticApp/lib/features/calendar/repositories/calendar_repository.dart b/FinlyticApp/lib/features/calendar/repositories/calendar_repository.dart index 504fcd3..1b353bb 100644 --- a/FinlyticApp/lib/features/calendar/repositories/calendar_repository.dart +++ b/FinlyticApp/lib/features/calendar/repositories/calendar_repository.dart @@ -6,9 +6,10 @@ class CalendarRepository { CalendarRepository({required this.apiClient}); - Future> fetchEvents() async { + Future> fetchEvents(int year, int month) async { try { - final res = await apiClient.get('/api/v1/calendar'); + final monthStr = month.toString().padLeft(2, '0'); + final res = await apiClient.get('/api/v1/calendar/events/$year/$monthStr'); if (res.statusCode == 200 && res.data != null) { final List data = res.data; return data.map((json) => CorporateEventModel.fromJson(json)).toList(); diff --git a/FinlyticApp/lib/features/calendar/views/corporate_calendar_screen.dart b/FinlyticApp/lib/features/calendar/views/corporate_calendar_screen.dart index 4630f3e..6c0a465 100644 --- a/FinlyticApp/lib/features/calendar/views/corporate_calendar_screen.dart +++ b/FinlyticApp/lib/features/calendar/views/corporate_calendar_screen.dart @@ -17,9 +17,12 @@ class CorporateCalendarScreen extends StatelessWidget { @override Widget build(BuildContext context) { return BlocProvider( - create: (context) => CalendarBloc( - repository: CalendarRepository(apiClient: apiClient), - )..add(FetchCalendarEvents()), + create: (context) { + final now = DateTime.now(); + return CalendarBloc( + repository: CalendarRepository(apiClient: apiClient), + )..add(FetchCalendarEvents(year: now.year, month: now.month)); + }, child: _CorporateCalendarScreenContent(apiClient: apiClient), ); } @@ -50,125 +53,130 @@ class _CorporateCalendarScreenContent extends StatelessWidget { if (state is CalendarLoaded) { final filtered = state.filteredEvents; - return SingleChildScrollView( - padding: const EdgeInsets.all(20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - MonthCalendarWidget( - currentMonth: state.currentMonth, - selectedDate: state.selectedDate, - events: state.allEvents.map((e) => e.toJson()).toList(), - onDateSelected: (date) { - context.read().add(FilterDateSelected(date)); - }, - onMonthChanged: (newMonth) { - context.read().add(MonthChanged(newMonth)); - }, - ), - const SizedBox(height: 18), - - Row( - children: [ - Expanded( - child: SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: categories.map((cat) { - final isSelected = state.selectedCategory == cat; - String label = 'Alle'; - if (cat == 'Earnings') label = 'Quartalsergebnisse'; - if (cat == 'ExDividend') label = 'Ex-Dividendentage'; - if (cat == 'Payout') label = 'Zahlungstage'; - - return Padding( - padding: const EdgeInsets.only(right: 8), - child: ChoiceChip( - label: Text(label), - selected: isSelected, - selectedColor: AppTheme.primaryEmerald.withValues(alpha: 0.25), - backgroundColor: AppTheme.glassSurface, - labelStyle: TextStyle( - color: isSelected ? AppTheme.primaryEmerald : AppTheme.textSecondary, - fontWeight: isSelected ? FontWeight.bold : FontWeight.normal, - fontSize: 12, - ), - side: BorderSide(color: isSelected ? AppTheme.primaryEmerald : AppTheme.glassBorder), - onSelected: (_) { - context.read().add(FilterCategoryChanged(cat)); - }, - ), - ); - }).toList(), - ), - ), - ), - if (state.selectedDate != null) - TextButton.icon( - onPressed: () { - context.read().add(const FilterDateSelected(null)); + return CustomScrollView( + slivers: [ + SliverPadding( + padding: const EdgeInsets.all(20), + sliver: SliverToBoxAdapter( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + MonthCalendarWidget( + currentMonth: state.currentMonth, + selectedDate: state.selectedDate, + events: state.allEvents.map((e) => e.toJson()).toList(), + onDateSelected: (date) { + context.read().add(FilterDateSelected(date)); + }, + onMonthChanged: (newMonth) { + context.read().add(MonthChanged(newMonth)); }, - icon: Icon(Icons.clear, size: 14, color: AppTheme.accentCyan), - label: Text('Alle Tage', style: TextStyle(color: AppTheme.accentCyan, fontSize: 12)), ), - ], - ), - const SizedBox(height: 14), + const SizedBox(height: 18), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - state.selectedDate != null - ? 'Termine am ${state.selectedDate!.day.toString().padLeft(2, '0')}.${state.selectedDate!.month.toString().padLeft(2, '0')}.${state.selectedDate!.year} (${filtered.length})' - : 'Anstehende Termine (${filtered.length})', - style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold, color: AppTheme.textPrimary), - ), - Text('Kachelansicht', style: TextStyle(fontSize: 11, color: AppTheme.textMuted)), - ], - ), - const SizedBox(height: 12), + Row( + children: [ + Expanded( + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: categories.map((cat) { + final isSelected = state.selectedCategory == cat; + String label = 'Alle'; + if (cat == 'Earnings') label = 'Quartalsergebnisse'; + if (cat == 'ExDividend') label = 'Ex-Dividendentage'; + if (cat == 'Payout') label = 'Zahlungstage'; - filtered.isEmpty - ? Container( - width: double.infinity, - padding: const EdgeInsets.all(24), - decoration: BoxDecoration( - color: AppTheme.glassSurface, - borderRadius: BorderRadius.circular(12), - border: Border.all(color: AppTheme.glassBorder), - ), - child: Center( - child: Text( - 'Keine Unternehmenstermine für diesen Filter/Tag gefunden.', - style: TextStyle(color: AppTheme.textMuted, fontSize: 13), + return Padding( + padding: const EdgeInsets.only(right: 8), + child: ChoiceChip( + label: Text(label), + selected: isSelected, + selectedColor: AppTheme.primaryEmerald.withValues(alpha: 0.25), + backgroundColor: AppTheme.glassSurface, + labelStyle: TextStyle( + color: isSelected ? AppTheme.primaryEmerald : AppTheme.textSecondary, + fontWeight: isSelected ? FontWeight.bold : FontWeight.normal, + fontSize: 12, + ), + side: BorderSide(color: isSelected ? AppTheme.primaryEmerald : AppTheme.glassBorder), + onSelected: (_) { + context.read().add(FilterCategoryChanged(cat)); + }, + ), + ); + }).toList(), + ), + ), + ), + if (state.selectedDate != null) + TextButton.icon( + onPressed: () { + context.read().add(const FilterDateSelected(null)); + }, + icon: Icon(Icons.clear, size: 14, color: AppTheme.accentCyan), + label: Text('Alle Tage', style: TextStyle(color: AppTheme.accentCyan, fontSize: 12)), + ), + ], + ), + const SizedBox(height: 14), + + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + state.selectedDate != null + ? 'Termine am ${state.selectedDate!.day.toString().padLeft(2, '0')}.${state.selectedDate!.month.toString().padLeft(2, '0')}.${state.selectedDate!.year} (${filtered.length})' + : 'Anstehende Termine (${filtered.length})', + style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold, color: AppTheme.textPrimary), + ), + Text('Kachelansicht', style: TextStyle(fontSize: 11, color: AppTheme.textMuted)), + ], + ), + const SizedBox(height: 12), + + if (filtered.isEmpty) + Container( + width: double.infinity, + padding: const EdgeInsets.all(24), + decoration: BoxDecoration( + color: AppTheme.glassSurface, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: AppTheme.glassBorder), + ), + child: Center( + child: Text( + 'Keine Unternehmenstermine für diesen Filter/Tag gefunden.', + style: TextStyle(color: AppTheme.textMuted, fontSize: 13), + ), ), ), - ) - : LayoutBuilder( - builder: (context, constraints) { - final crossAxisCount = constraints.maxWidth > 750 ? 4 : (constraints.maxWidth > 480 ? 2 : 1); - return GridView.builder( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - itemCount: filtered.length, - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: crossAxisCount, - childAspectRatio: 3, - crossAxisSpacing: 12, - mainAxisSpacing: 12, - ), - itemBuilder: (context, index) { - return CalendarEventTile( - event: filtered[index].toJson(), - apiClient: apiClient, - ); - }, - ); - }, - ), - ], - ), + ], + ), + ), + ), + if (filtered.isNotEmpty) + SliverPadding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 20), + sliver: SliverGrid( + gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( + maxCrossAxisExtent: 300, + mainAxisExtent: 135, + mainAxisSpacing: 12, + crossAxisSpacing: 12, + ), + delegate: SliverChildBuilderDelegate( + (context, index) { + return CalendarEventTile( + event: filtered[index].toJson(), + apiClient: apiClient, + ); + }, + childCount: filtered.length, + ), + ), + ), + ], ); } return const SizedBox.shrink(); diff --git a/FinlyticApp/lib/features/calendar/widgets/calendar_event_tile.dart b/FinlyticApp/lib/features/calendar/widgets/calendar_event_tile.dart index b3f82d5..c0db60a 100644 --- a/FinlyticApp/lib/features/calendar/widgets/calendar_event_tile.dart +++ b/FinlyticApp/lib/features/calendar/widgets/calendar_event_tile.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import '../../../core/network/api_client.dart'; import '../../../core/theme/app_theme.dart'; -import '../../../core/utils/asset_utils.dart'; import '../../../core/widgets/asset_logo_widget.dart'; import '../../../core/widgets/glass_container.dart'; import '../../../core/widgets/status_badge.dart'; @@ -20,12 +19,13 @@ class CalendarEventTile extends StatelessWidget { @override Widget build(BuildContext context) { - final rawSymbol = event['symbol']?.toString() ?? event['Symbol']?.toString() ?? 'ASSET'; - final rawCompany = event['companyName']?.toString() ?? event['CompanyName']?.toString() ?? rawSymbol; - final displayName = AssetUtils.getAssetName(rawCompany.isNotEmpty ? rawCompany : rawSymbol); + final isin = event['isin']!; + final rawSymbol = event['ticker']?.toString() ?? event['Ticker']?.toString() ?? event['symbol']?.toString() ?? 'ASSET'; + final companyName = event['companyName']?.toString() ?? event['CompanyName']?.toString() ?? rawSymbol; final type = event['eventType']?.toString() ?? event['EventType']?.toString() ?? 'Earnings'; - final desc = event['description']?.toString() ?? event['Description']?.toString() ?? ''; - final dateStr = event['eventDate']?.toString() ?? event['EventDate']?.toString() ?? ''; + final desc = event['description']?.toString() ?? event['Description']?.toString() ?? '$companyName $type Termin'; + final dateStr = event['date']?.toString() ?? event['Date']?.toString() ?? event['eventDate']?.toString() ?? ''; + final image = event['image']?.toString() ?? (isin.isNotEmpty ? '/api/v1/logo/$isin' : null); String formattedDate = dateStr; try { @@ -50,7 +50,9 @@ class CalendarEventTile extends StatelessWidget { context, MaterialPageRoute( builder: (_) => AssetDetailScreen( - symbol: displayName, + isin: isin, + name: companyName, + symbol: rawSymbol, apiClient: apiClient, ), ), @@ -66,14 +68,14 @@ class CalendarEventTile extends StatelessWidget { Expanded( child: Row( children: [ - AssetLogoWidget(symbolOrName: displayName, size: 28), + AssetLogoWidget(symbolOrName: companyName, imageUrl: image, size: 28), const SizedBox(width: 8), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - displayName, + companyName, style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 13.5), maxLines: 1, overflow: TextOverflow.ellipsis, diff --git a/FinlyticApp/lib/features/dashboard/widgets/asset_discovery_bar.dart b/FinlyticApp/lib/features/dashboard/widgets/asset_discovery_bar.dart index 3e909d5..4ab54ec 100644 --- a/FinlyticApp/lib/features/dashboard/widgets/asset_discovery_bar.dart +++ b/FinlyticApp/lib/features/dashboard/widgets/asset_discovery_bar.dart @@ -68,8 +68,13 @@ class _AssetDiscoveryBarState extends State { itemCount: assets.length, itemBuilder: (context, index) { final asset = assets[index]; - final identifier = asset.symbol.isNotEmpty ? asset.symbol : asset.isin; - final isFav = favState.isFavorite(identifier) || favState.isFavorite(asset.isin); + + final isin = asset.isin; + final matches = favState.favoriteDetails.where((e) => e.isin == isin); + final symbol = matches.isNotEmpty ? matches.first : null; + final symbolOrNull = symbol?.symbol; + + final isFav = symbol != null; return Padding( padding: const EdgeInsets.only(right: 8), @@ -101,7 +106,9 @@ class _AssetDiscoveryBarState extends State { context, MaterialPageRoute( builder: (_) => AssetDetailScreen( - symbol: identifier, + isin: isin, + name: asset.name, + symbol: symbolOrNull, apiClient: widget.apiClient, ), ), diff --git a/FinlyticApp/lib/features/dashboard/widgets/favorites_carousel.dart b/FinlyticApp/lib/features/dashboard/widgets/favorites_carousel.dart index 1ec1bf2..0cb23f2 100644 --- a/FinlyticApp/lib/features/dashboard/widgets/favorites_carousel.dart +++ b/FinlyticApp/lib/features/dashboard/widgets/favorites_carousel.dart @@ -43,12 +43,9 @@ class FavoritesCarousel extends StatelessWidget { itemCount: favoritesList.length, itemBuilder: (context, index) { final fav = favoritesList[index]; - final displayName = fav.name.isNotEmpty - ? fav.name - : (fav.symbol.isNotEmpty ? fav.symbol : fav.isin); - final isinOrSymbol = fav.isin.isNotEmpty - ? fav.isin - : (fav.symbol.isNotEmpty ? fav.symbol : fav.name); + final displayName = fav.name; + final isin = fav.isin; + final symbol = fav.symbol.isNotEmpty ? fav.symbol : null; final isPositive = fav.change24h >= 0; @@ -62,7 +59,9 @@ class FavoritesCarousel extends StatelessWidget { context, MaterialPageRoute( builder: (_) => AssetDetailScreen( - symbol: isinOrSymbol, + isin: isin, + name: displayName, + symbol: symbol, apiClient: apiClient, ), ), @@ -75,7 +74,7 @@ class FavoritesCarousel extends StatelessWidget { Row( children: [ AssetLogoWidget( - symbolOrName: isinOrSymbol, + symbolOrName: isin, imageUrl: fav.image.isNotEmpty ? fav.image : null, size: 24, ), @@ -92,7 +91,7 @@ class FavoritesCarousel extends StatelessWidget { ), ), FavoriteStarButton( - identifier: isinOrSymbol, + identifier: isin, symbol: fav.symbol, name: fav.name, size: 18, diff --git a/FinlyticApp/lib/features/dashboard/widgets/trades_stream_widget.dart b/FinlyticApp/lib/features/dashboard/widgets/trades_stream_widget.dart index 643dc12..7aef78a 100644 --- a/FinlyticApp/lib/features/dashboard/widgets/trades_stream_widget.dart +++ b/FinlyticApp/lib/features/dashboard/widgets/trades_stream_widget.dart @@ -110,7 +110,9 @@ class _TradesStreamWidgetContent extends StatelessWidget { context, MaterialPageRoute( builder: (ctx) => AssetDetailScreen( - symbol: p.symbol.isNotEmpty ? p.symbol : p.isin, + isin: p.isin, + name: p.companyName, + symbol: p.symbol.isNotEmpty ? p.symbol : null, apiClient: context.read().repository.apiClient, ), ), diff --git a/FinlyticApp/lib/features/favorites/bloc/favorites_bloc.dart b/FinlyticApp/lib/features/favorites/bloc/favorites_bloc.dart deleted file mode 100644 index ef8ae1c..0000000 --- a/FinlyticApp/lib/features/favorites/bloc/favorites_bloc.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'dart:async'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:finlytic_app/features/favorites/repositories/favorites_repository.dart'; -import 'favorites_event.dart'; -import 'favorites_state.dart'; - -class FavoritesBloc extends Bloc { - final FavoritesRepository repository; - - FavoritesBloc({required this.repository}) : super(FavoritesInitial()) { - on(_onLoadFavorites); - } - - Future _onLoadFavorites(LoadFavorites event, Emitter emit) async { - emit(FavoritesLoading()); - try { - final favorites = await repository.fetchFavoritesDetails(event.symbols); - emit(FavoritesLoaded(favorites)); - } catch (e) { - emit(const FavoritesError("Fehler beim Laden der Favoriten.")); - } - } -} diff --git a/FinlyticApp/lib/features/favorites/bloc/favorites_event.dart b/FinlyticApp/lib/features/favorites/bloc/favorites_event.dart deleted file mode 100644 index 0bf7033..0000000 --- a/FinlyticApp/lib/features/favorites/bloc/favorites_event.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:equatable/equatable.dart'; - -abstract class FavoritesEvent extends Equatable { - const FavoritesEvent(); - - @override - List get props => []; -} - -class LoadFavorites extends FavoritesEvent { - final List symbols; - - const LoadFavorites(this.symbols); - - @override - List get props => [symbols]; -} diff --git a/FinlyticApp/lib/features/favorites/bloc/favorites_state.dart b/FinlyticApp/lib/features/favorites/bloc/favorites_state.dart deleted file mode 100644 index c604f52..0000000 --- a/FinlyticApp/lib/features/favorites/bloc/favorites_state.dart +++ /dev/null @@ -1,31 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:finlytic_app/features/favorites/models/favorite_asset_model.dart'; - -abstract class FavoritesState extends Equatable { - const FavoritesState(); - - @override - List get props => []; -} - -class FavoritesInitial extends FavoritesState {} - -class FavoritesLoading extends FavoritesState {} - -class FavoritesLoaded extends FavoritesState { - final List favorites; - - const FavoritesLoaded(this.favorites); - - @override - List get props => [favorites]; -} - -class FavoritesError extends FavoritesState { - final String message; - - const FavoritesError(this.message); - - @override - List get props => [message]; -} diff --git a/FinlyticApp/lib/features/favorites/cubit/favorites_cubit.dart b/FinlyticApp/lib/features/favorites/cubit/favorites_cubit.dart index 645dc38..371a491 100644 --- a/FinlyticApp/lib/features/favorites/cubit/favorites_cubit.dart +++ b/FinlyticApp/lib/features/favorites/cubit/favorites_cubit.dart @@ -3,7 +3,6 @@ import 'package:equatable/equatable.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/network/api_client.dart'; import '../../../core/network/signalr_service.dart'; -import '../../../core/utils/asset_utils.dart'; import '../models/favorite_asset_model.dart'; class FavoritesState extends Equatable { @@ -63,7 +62,8 @@ class FavoritesCubit extends Cubit { Future loadFavorites() async { emit(state.copyWith(isLoading: true)); try { - final res = await apiClient.get('/api/v1/user/favorites'); + final ts = DateTime.now().millisecondsSinceEpoch; + final res = await apiClient.get('/api/v1/user/favorites?_t=$ts'); if (res.statusCode == 200 && res.data is List) { final rawList = res.data as List; final set = {}; @@ -71,7 +71,6 @@ class FavoritesCubit extends Cubit { for (var item in rawList) { final model = FavoriteAssetModel.fromJson(Map.from(item)); - AssetUtils.registerAsset(model.isin, model.name, model.image); final key = (model.isin.isNotEmpty ? model.isin : (model.symbol.isNotEmpty ? model.symbol : model.name)).toUpperCase(); if (!dedupMap.containsKey(key)) { dedupMap[key] = model; @@ -150,10 +149,21 @@ class FavoritesCubit extends Cubit { Future updateFavoriteTicker(String symbol, String ticker) async { try { + // Optimistic UI update + final target = symbol.toUpperCase(); + final updatedDetails = state.favoriteDetails.map((model) { + if (model.isin.toUpperCase() == target || model.symbol.toUpperCase() == target) { + return model.copyWith(symbol: ticker); + } + return model; + }).toList(); + emit(state.copyWith(favoriteDetails: updatedDetails)); + await apiClient.post('/api/v1/user/favorites/$symbol/ticker?ticker=$ticker'); await loadFavorites(); } catch (_) { - // Ignore gracefully + // Revert/refresh on error + await loadFavorites(); } } } diff --git a/FinlyticApp/lib/features/favorites/repositories/favorites_repository.dart b/FinlyticApp/lib/features/favorites/repositories/favorites_repository.dart deleted file mode 100644 index 1115203..0000000 --- a/FinlyticApp/lib/features/favorites/repositories/favorites_repository.dart +++ /dev/null @@ -1,35 +0,0 @@ -import 'package:finlytic_app/core/network/api_client.dart'; -import 'package:finlytic_app/features/favorites/models/favorite_asset_model.dart'; -import 'package:finlytic_app/core/utils/asset_utils.dart'; - -class FavoritesRepository { - final ApiClient apiClient; - - FavoritesRepository({required this.apiClient}); - - Future> fetchFavoritesDetails(List symbols) async { - if (symbols.isEmpty) return []; - - try { - final res = await apiClient.post('/api/v1/assets/batch', data: {'symbols': symbols}); - if (res.statusCode == 200 && res.data != null) { - final List data = res.data; - return data.map((json) => FavoriteAssetModel.fromJson(json)).toList(); - } - return symbols.map((s) => FavoriteAssetModel( - symbol: s, - name: AssetUtils.getAssetName(s), - currentPrice: 0.0, - change24h: 0.0, - )).toList(); - } catch (e) { - print('Error fetching favorites details: $e'); - return symbols.map((s) => FavoriteAssetModel( - symbol: s, - name: AssetUtils.getAssetName(s), - currentPrice: 0.0, - change24h: 0.0, - )).toList(); - } - } -} diff --git a/FinlyticApp/lib/features/favorites/widgets/watchlist_card.dart b/FinlyticApp/lib/features/favorites/widgets/watchlist_card.dart index 5f8de8e..4dcbc33 100644 --- a/FinlyticApp/lib/features/favorites/widgets/watchlist_card.dart +++ b/FinlyticApp/lib/features/favorites/widgets/watchlist_card.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import '../../../core/network/api_client.dart'; import '../../../core/theme/app_theme.dart'; -import '../../../core/utils/asset_utils.dart'; import '../../../core/widgets/asset_logo_widget.dart'; import '../../../core/widgets/glass_container.dart'; import '../../../shared/widgets/favorite_star_button.dart'; @@ -23,7 +22,7 @@ class WatchlistCard extends StatelessWidget { Widget build(BuildContext context) { final activeTheme = AppTheme.activePreset; final symbol = asset.symbol; - final displayName = asset.name.isNotEmpty ? asset.name : AssetUtils.getAssetName(symbol); + final displayName = asset.name; final isPositive = asset.change24h >= 0; return GlassContainer( @@ -32,7 +31,9 @@ class WatchlistCard extends StatelessWidget { context, MaterialPageRoute( builder: (_) => AssetDetailScreen( - symbol: displayName, + isin: asset.isin, + name: displayName, + symbol: asset.symbol, apiClient: apiClient, ), ), diff --git a/FinlyticApp/lib/features/news/widgets/news_card_item.dart b/FinlyticApp/lib/features/news/widgets/news_card_item.dart index 81e426e..d157221 100644 --- a/FinlyticApp/lib/features/news/widgets/news_card_item.dart +++ b/FinlyticApp/lib/features/news/widgets/news_card_item.dart @@ -1,4 +1,6 @@ +import 'package:finlytic_app/features/favorites/cubit/favorites_cubit.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/network/api_client.dart'; import '../../../core/theme/app_theme.dart'; import '../../../core/utils/time_utils.dart'; @@ -47,6 +49,8 @@ class NewsCardItem extends StatelessWidget { final matchedAssetsRaw = article['MatchedAssets'] ?? article['matchedAssets']; final matchedAssets = matchedAssetsRaw is List ? matchedAssetsRaw : []; + final favourites = context.read().state.favoriteDetails; + return GlassContainer( margin: const EdgeInsets.only(bottom: 12), onTap: () { @@ -101,9 +105,12 @@ class NewsCardItem extends StatelessWidget { spacing: 4, runSpacing: 4, children: matchedAssets.map((assetItem) { - final assetSymbol = assetItem['Name']?.toString() ?? assetItem['name']?.toString() ?? assetItem['Isin']?.toString() ?? assetItem['isin']?.toString() ?? 'ASSET'; + final isin = assetItem['isin']!; + final name = assetItem['name']!; + final match = favourites.where((e) => e.isin == isin); + final symbol = match.isEmpty ? null : match.first; return ActionChip( - label: Text(assetSymbol, style: TextStyle(fontSize: 10, color: AppTheme.accentCyan)), + label: Text(name, style: TextStyle(fontSize: 10, color: AppTheme.accentCyan)), backgroundColor: AppTheme.glassSurface, padding: EdgeInsets.zero, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, @@ -112,7 +119,9 @@ class NewsCardItem extends StatelessWidget { context, MaterialPageRoute( builder: (_) => AssetDetailScreen( - symbol: assetSymbol, + isin: assetItem, + name: name, + symbol: symbol != null ? symbol.symbol : null, apiClient: apiClient, ), ), diff --git a/FinlyticApp/lib/features/search/repositories/search_repository.dart b/FinlyticApp/lib/features/search/repositories/search_repository.dart index 66d1525..bfaebec 100644 --- a/FinlyticApp/lib/features/search/repositories/search_repository.dart +++ b/FinlyticApp/lib/features/search/repositories/search_repository.dart @@ -1,6 +1,5 @@ import 'package:finlytic_app/core/network/api_client.dart'; import 'package:finlytic_app/features/search/models/search_result_model.dart'; -import 'package:finlytic_app/core/utils/asset_utils.dart'; class SearchRepository { final ApiClient apiClient; @@ -9,15 +8,12 @@ class SearchRepository { Future> searchAssets(String query) async { try { - final res = await apiClient.get('/api/v1/assets/search', queryParameters: {'q': query}); + final res = await apiClient + .get('/api/v1/assets/search', queryParameters: {'q': query}); if (res.statusCode == 200 && res.data != null) { final list = res.data as List; - final results = list.map((json) => SearchResultModel.fromJson(json)).toList(); - for (final item in results) { - if (item.isinCode.isNotEmpty && item.displayName.isNotEmpty) { - AssetUtils.registerAsset(item.isinCode, item.displayName, item.image); - } - } + final results = + list.map((json) => SearchResultModel.fromJson(json)).toList(); return results; } return []; diff --git a/FinlyticApp/lib/features/search/widgets/asset_search_dialog.dart b/FinlyticApp/lib/features/search/widgets/asset_search_dialog.dart index b5f5d66..db2c3c9 100644 --- a/FinlyticApp/lib/features/search/widgets/asset_search_dialog.dart +++ b/FinlyticApp/lib/features/search/widgets/asset_search_dialog.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/network/api_client.dart'; import '../../../core/theme/app_theme.dart'; -import '../../../core/utils/asset_utils.dart'; import '../../../core/widgets/asset_logo_widget.dart'; import '../../../core/widgets/shimmer_loading.dart'; import '../../../shared/widgets/favorite_star_button.dart'; @@ -138,13 +137,9 @@ class _AssetSearchDialogContentState extends State<_AssetSearchDialogContent> { itemBuilder: (context, index) { final item = results[index]; final assetName = item.displayName; - final isinCode = item.isinCode; + final isin = item.isin; - if (isinCode.isNotEmpty && assetName.isNotEmpty) { - AssetUtils.registerAsset(isinCode, assetName, item.image); - } - - final targetId = isinCode.isNotEmpty ? isinCode : assetName; + final targetId = isin.isNotEmpty ? isin : assetName; return ListTile( leading: AssetLogoWidget( @@ -153,8 +148,8 @@ class _AssetSearchDialogContentState extends State<_AssetSearchDialogContent> { size: 36, ), title: Text(assetName, style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 14)), - subtitle: isinCode.isNotEmpty - ? Text('ISIN: $isinCode', style: TextStyle(color: activeTheme.textMuted, fontSize: 11)) + subtitle: isin.isNotEmpty + ? Text('ISIN: $isin', style: TextStyle(color: activeTheme.textMuted, fontSize: 11)) : null, trailing: SizedBox( width: 40, @@ -171,7 +166,8 @@ class _AssetSearchDialogContentState extends State<_AssetSearchDialogContent> { context, MaterialPageRoute( builder: (_) => AssetDetailScreen( - symbol: assetName, + isin: isin, + name: assetName, apiClient: widget.apiClient, ), ), diff --git a/FinlyticApp/lib/features/trades/repositories/trade_repository.dart b/FinlyticApp/lib/features/trades/repositories/trade_repository.dart index 2412be9..7b8e4a1 100644 --- a/FinlyticApp/lib/features/trades/repositories/trade_repository.dart +++ b/FinlyticApp/lib/features/trades/repositories/trade_repository.dart @@ -14,7 +14,7 @@ class TradeRepository { if (isin != null && isin.isNotEmpty) queryParams['isin'] = isin; if (status != null && status.isNotEmpty) queryParams['status'] = status; - final response = await apiClient.get('/api/v1/trades', queryParameters: queryParams); + final response = await apiClient.get('/api/v1/user/trades', queryParameters: queryParams); if (response.statusCode == 200 && response.data != null) { final List data = response.data; @@ -34,8 +34,9 @@ class TradeRepository { } } - Future closeTrade(String id) async { - final response = await apiClient.post('/api/v1/user/trades/$id/close'); + Future closeTrade(String id, {double? exitPrice}) async { + final body = exitPrice != null ? {'userExitPrice': exitPrice} : null; + final response = await apiClient.post('/api/v1/user/trades/$id/close', data: body); if (response.statusCode != 200) { throw Exception('Trade konnte nicht geschlossen werden'); } diff --git a/FinlyticBackend/Controllers/AssetsController.cs b/FinlyticBackend/Controllers/AssetsController.cs index c3d732a..12d0e2b 100644 --- a/FinlyticBackend/Controllers/AssetsController.cs +++ b/FinlyticBackend/Controllers/AssetsController.cs @@ -271,16 +271,14 @@ public class AssetsController : ControllerBase /// /// Serviert das SVG-Logo direkt aus dem gemounteten Docker Volume (Volumes.LogosRelativePath). /// - [HttpGet("logo/{isin}")] + [HttpGet("/api/v1/logo/{isin}")] + [AllowAnonymous] public async Task GetAssetLogo([FromRoute] string isin) { if (string.IsNullOrWhiteSpace(isin)) return NotFound(); - - string cleanIsin = isin.Trim().ToUpperInvariant(); - + // Path Traversal Guard - string safeFileName = string.Concat(cleanIsin.Where(c => char.IsLetterOrDigit(c) || c == '_' || c == '-')) + ".svg"; - string logoPath = Path.Combine(Volumes.LogosRelativePath, safeFileName); + string logoPath = Path.Combine(Volumes.LogosRelativePath, $"{isin}.svg"); if (System.IO.File.Exists(logoPath)) { diff --git a/FinlyticBackend/Controllers/CalendarController.cs b/FinlyticBackend/Controllers/CalendarController.cs index 6decc34..0ad3d84 100644 --- a/FinlyticBackend/Controllers/CalendarController.cs +++ b/FinlyticBackend/Controllers/CalendarController.cs @@ -13,27 +13,6 @@ using Microsoft.Extensions.Logging; namespace FinlyticBackend.Controllers; -/// -/// Response DTO for corporate calendar events (AOT-compliant). -/// -public record CalendarEventResponseDto( - [property: JsonPropertyName("id")] string Id, - [property: JsonPropertyName("symbol")] string Symbol, - [property: JsonPropertyName("companyName")] - string CompanyName, - [property: JsonPropertyName("eventType")] - string EventType, - [property: JsonPropertyName("eventDate")] - DateTime EventDate, - [property: JsonPropertyName("date")] string Date, - [property: JsonPropertyName("isin")] string Isin, - [property: JsonPropertyName("ticker")] string Ticker, - [property: JsonPropertyName("description")] - string Description, - [property: JsonPropertyName("details")] - string Details, - [property: JsonPropertyName("image")] string Image -); [ApiController] [Authorize] @@ -52,22 +31,26 @@ public class CalendarController : ControllerBase /// /// Retrieves corporate calendar events with optional filters. /// - [HttpGet("events")] + [HttpGet("events/{year:int?}/{month:int?}")] public async Task GetCorporateCalendar( + int? year = null, + int? month = null, [FromQuery] string? category = null, [FromQuery] DateTime? date = null, [FromQuery] string? symbol = null, [FromQuery] string? isin = null) { string? activeSymbol = !string.IsNullOrWhiteSpace(symbol) ? symbol.Trim() : isin?.Trim(); + int targetYear = year ?? DateTime.UtcNow.Year; + int targetMonth = month ?? DateTime.UtcNow.Month; try { if (_mqttClient.IsConnected) { - var rawEvents = await _mqttClient.SendRpcRequestAsync, EmptyRequest>( - "events_GetAll", - new EmptyRequest(), + var rawEvents = await _mqttClient.SendRpcRequestAsync, GetEventsByMonthRequest>( + "events_GetByMonth", + new GetEventsByMonthRequest(targetYear, targetMonth), TimeSpan.FromSeconds(4) ); diff --git a/FinlyticBackend/Controllers/NewsController.cs b/FinlyticBackend/Controllers/NewsController.cs index 20db288..ff50daf 100644 --- a/FinlyticBackend/Controllers/NewsController.cs +++ b/FinlyticBackend/Controllers/NewsController.cs @@ -50,12 +50,6 @@ public class NewsController : ControllerBase effectiveStatus = "Analyzed"; } - string? dateStr = !string.IsNullOrWhiteSpace(date) ? date.Trim() : null; - if (string.Equals(dateStr, "today", StringComparison.OrdinalIgnoreCase)) - { - dateStr = DateTime.UtcNow.ToString("yyyy-MM-dd"); - } - try { if (_mqttClient.IsConnected) @@ -64,11 +58,13 @@ public class NewsController : ControllerBase Limit: pageSize, Offset: (page - 1) * pageSize, Isin: activeSymbol, - Date: dateStr, + Date: DateTime.TryParse(date, out var dateTime) ? dateTime : null, Status: effectiveStatus, Query: query, HasSentiment: hasSentiment ); + + _logger.LogInformation("[payload] " + payload.Date.ToString()); var articles = await _mqttClient.SendRpcRequestAsync, DailyNewsRequest>( "news_Get", diff --git a/FinlyticBackend/Hubs/FavoritesPriceHub.cs b/FinlyticBackend/Hubs/FavoritesPriceHub.cs index 57bdfef..f7fbe4a 100644 --- a/FinlyticBackend/Hubs/FavoritesPriceHub.cs +++ b/FinlyticBackend/Hubs/FavoritesPriceHub.cs @@ -1,5 +1,7 @@ using System; +using System.Collections.Concurrent; using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; @@ -8,24 +10,71 @@ namespace FinlyticBackend.Hubs; /// /// SignalR Hub streaming real-time stock prices & daily % growth updates for favorite assets every 10 seconds. /// +[Authorize] public class FavoritesPriceHub : Hub { private readonly ILogger _logger; + // Speichert thread-sicher, wie viele aktive Verbindungen ein User hat (UserId -> ConnectionCount) + private static readonly ConcurrentDictionary ActiveUserConnections = new(); + public FavoritesPriceHub(ILogger logger) { _logger = logger; } + /// + /// Liefert eine Übersicht aller aktuell mit dem Hub verbundenen User-IDs. + /// + public static string[] GetActiveUserIds() => [.. ActiveUserConnections.Keys]; + public override async Task OnConnectedAsync() { - _logger.LogInformation("[FavoritesPriceHub] SignalR client connected: ConnectionId={ConnectionId}", Context.ConnectionId); + var userId = Context.UserIdentifier; + + if (!string.IsNullOrEmpty(userId)) + { + // Füge die Verbindung der benutzerspezifischen Gruppe hinzu + await Groups.AddToGroupAsync(Context.ConnectionId, GetGroupName(userId)); + + ActiveUserConnections.AddOrUpdate(userId, 1, (_, count) => count + 1); + + _logger.LogInformation("[FavoritesPriceHub] User '{UserId}' connected (ConnectionId={ConnectionId}). Active connections for user: {Count}", + userId, Context.ConnectionId, ActiveUserConnections[userId]); + } + else + { + _logger.LogWarning("[FavoritesPriceHub] Anonymous SignalR client connected without UserIdentifier: ConnectionId={ConnectionId}", Context.ConnectionId); + } + await base.OnConnectedAsync(); } public override async Task OnDisconnectedAsync(Exception? exception) { - _logger.LogInformation("[FavoritesPriceHub] SignalR client disconnected: ConnectionId={ConnectionId}", Context.ConnectionId); + var userId = Context.UserIdentifier; + + if (!string.IsNullOrEmpty(userId)) + { + await Groups.RemoveFromGroupAsync(Context.ConnectionId, GetGroupName(userId)); + + ActiveUserConnections.AddOrUpdate(userId, 0, (_, count) => + { + var newCount = count - 1; + return newCount < 0 ? 0 : newCount; + }); + + // Wenn keine aktiven Verbindungen mehr bestehen, aus Dictionary entfernen + if (ActiveUserConnections.TryGetValue(userId, out var remainingCount) && remainingCount <= 0) + { + ActiveUserConnections.TryRemove(userId, out _); + } + + _logger.LogInformation("[FavoritesPriceHub] User '{UserId}' disconnected (ConnectionId={ConnectionId})", userId, Context.ConnectionId); + } + await base.OnDisconnectedAsync(exception); } -} + + public static string GetGroupName(string userId) => $"User_{userId.Trim()}"; +} \ No newline at end of file diff --git a/FinlyticBackend/Services/FavoritesPriceBackgroundService.cs b/FinlyticBackend/Services/FavoritesPriceBackgroundService.cs index cc81202..c7b73cf 100644 --- a/FinlyticBackend/Services/FavoritesPriceBackgroundService.cs +++ b/FinlyticBackend/Services/FavoritesPriceBackgroundService.cs @@ -1,135 +1,92 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; using FinlyticBackend.Database; -using FinlyticBackend.Entities; using FinlyticBackend.Hubs; using FinlyticBackend.Util; using FinlyticCore.Dtos; using FinlyticCore.Dtos.TechnicalAnalysis; using Microsoft.AspNetCore.SignalR; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; namespace FinlyticBackend.Services; -/// -/// Background service that periodically (every 10 seconds) queries FinlyticTechnicalAnalysis over MQTT RPC -/// to retrieve current close prices and daily % growth for all favorited assets, and broadcasts the updates -/// via SignalR to connected clients. -/// -public class FavoritesPriceBackgroundService : BackgroundService +public class FavoritesPriceBackgroundService( + IHubContext hubContext, + WebMqttClient mqttClient, + IServiceScopeFactory scopeFactory, + ILogger logger) : BackgroundService { - private readonly IHubContext _hubContext; - private readonly WebMqttClient _mqttClient; - private readonly IServiceScopeFactory _scopeFactory; - private readonly ILogger _logger; - private readonly Random _random = new(); - - public FavoritesPriceBackgroundService( - IHubContext hubContext, - WebMqttClient mqttClient, - IServiceScopeFactory scopeFactory, - ILogger logger) - { - _hubContext = hubContext; - _mqttClient = mqttClient; - _scopeFactory = scopeFactory; - _logger = logger; - } - protected override async Task ExecuteAsync(CancellationToken stoppingToken) { - _logger.LogInformation("[FavoritesPriceBackgroundService] Started 10-second periodic price & daily growth stream."); await Task.Delay(4000, stoppingToken); while (!stoppingToken.IsCancellationRequested) { try { - var priceUpdates = await FetchFavoritePricesAsync(stoppingToken); - if (priceUpdates.Count > 0) + var activeUserIds = FavoritesPriceHub.GetActiveUserIds(); + if (activeUserIds.Length > 0) { - await _hubContext.Clients.All.SendAsync("ReceiveFavoritePrices", priceUpdates, cancellationToken: stoppingToken); + await ProcessActiveUserPricesAsync(activeUserIds, stoppingToken); } } catch (Exception ex) { - _logger.LogWarning(ex, "[FavoritesPriceBackgroundService] Error broadcasting 10s favorite price updates."); + logger.LogWarning(ex, "[FavoritesPriceBackgroundService] Error broadcasting price updates."); } await Task.Delay(10000, stoppingToken); } } - private async Task> FetchFavoritePricesAsync(CancellationToken cancellationToken) + private async Task ProcessActiveUserPricesAsync(string[] activeUserIds, CancellationToken cancellationToken) { - var priceMap = new Dictionary(StringComparer.OrdinalIgnoreCase); - List favorites = new(); + using var scope = scopeFactory.CreateScope(); + var db = scope.ServiceProvider.GetRequiredService(); - try + // 1. Direkt per EF nach aktiven Usern filtern & laden + var userFavorites = await db.UserFavoriteAssets + .AsNoTracking() + .Where(f => activeUserIds.Contains(f.UserId.ToString())) + .ToListAsync(cancellationToken); + + if (userFavorites.Count == 0) return; + + // 2. Pro User einfach die Kurse abfragen und senden + foreach (var userGroup in userFavorites.GroupBy(f => f.UserId.ToString())) { - using var scope = _scopeFactory.CreateScope(); - var dbContext = scope.ServiceProvider.GetRequiredService(); - favorites = await dbContext.UserFavoriteAssets - .AsNoTracking() - .ToListAsync(cancellationToken); - } - catch { } + var userId = userGroup.Key; + var priceUpdates = new Dictionary(); - // De-duplicate by ISIN (preferring entries that have SelectedTicker) - var dedupedFavorites = favorites - .GroupBy(f => f.Isin.Trim().ToUpperInvariant()) - .Select(g => g.OrderByDescending(f => !string.IsNullOrEmpty(f.SelectedTicker)).First()) - .ToList(); - - foreach (var fav in dedupedFavorites) - { - string cleanIsin = fav.Isin.Trim().ToUpperInvariant(); - if (string.IsNullOrWhiteSpace(cleanIsin)) continue; - - string querySymbol = !string.IsNullOrWhiteSpace(fav.SelectedTicker) ? fav.SelectedTicker.Trim().ToUpperInvariant() : cleanIsin; - - double currentPrice = 0.0; - double dailyChangePercent = 0.0; - bool resolvedFromTa = false; - - try + foreach (var fav in userGroup) { - if (_mqttClient.IsConnected) + var cleanIsin = fav.Isin.Trim().ToUpperInvariant(); + + if (!mqttClient.IsConnected) continue; + + try { - var livePriceDto = await _mqttClient.SendRpcRequestAsync( + var livePrice = await mqttClient.SendRpcRequestAsync( "tr_GetLivePrice", - new IsinRequest(querySymbol), + new IsinRequest(cleanIsin), TimeSpan.FromSeconds(2) ); - if (livePriceDto != null) + if (livePrice != null) { - currentPrice = (double)livePriceDto.CurrentPrice; - dailyChangePercent = (double)livePriceDto.DailyChangePercent; - resolvedFromTa = true; + priceUpdates[cleanIsin] = new + { + currentPrice = (double)livePrice.CurrentPrice, + dailyChangePercent = (double)livePrice.DailyChangePercent + }; } } + catch { /* Ignorieren bei Einzel-Timeout */ } } - catch { } - if (resolvedFromTa) + if (priceUpdates.Count > 0) { - priceMap[cleanIsin] = new - { - isin = cleanIsin, - symbol = querySymbol, - currentPrice = currentPrice, - dailyChangePercent = dailyChangePercent - }; + await hubContext.Clients.Group(FavoritesPriceHub.GetGroupName(userId)) + .SendAsync("ReceiveFavoritePrices", priceUpdates, cancellationToken); } } - - return priceMap; } -} +} \ No newline at end of file diff --git a/FinlyticBackend/Util/BackendMqttBridge.cs b/FinlyticBackend/Util/BackendMqttBridge.cs index 1f02e46..b1f431e 100644 --- a/FinlyticBackend/Util/BackendMqttBridge.cs +++ b/FinlyticBackend/Util/BackendMqttBridge.cs @@ -94,6 +94,7 @@ public class BackendMqttBridge : ManagedMqttClient, IHostedService await SubscribeAsync("finlytic/assets/fundamentals/#"); await SubscribeAsync("finlytic/technicalanalysis/#"); await SubscribeAsync("finlytic/ta/#"); + } /// diff --git a/FinlyticBackend/Util/WebMqttClient.cs b/FinlyticBackend/Util/WebMqttClient.cs index 1a600ff..30d6728 100644 --- a/FinlyticBackend/Util/WebMqttClient.cs +++ b/FinlyticBackend/Util/WebMqttClient.cs @@ -51,6 +51,7 @@ public class WebMqttClient : ManagedMqttClient, IHostedService await SubscribeAsync("services/response/sentiment_GetIsin/#"); await SubscribeAsync("services/response/fundamentals_Get/#"); await SubscribeAsync("services/response/events_GetAll/#"); + await SubscribeAsync("services/response/events_GetByMonth/#"); await SubscribeAsync("services/response/ta_GetAnalysis/#"); await SubscribeAsync("services/response/tr_GetLivePrice/#"); await SubscribeAsync("services/response/assets_Get/#"); diff --git a/FinlyticCore/Dtos/CalendarEventResponseDto.cs b/FinlyticCore/Dtos/CalendarEventResponseDto.cs new file mode 100644 index 0000000..b53eea5 --- /dev/null +++ b/FinlyticCore/Dtos/CalendarEventResponseDto.cs @@ -0,0 +1,21 @@ +using System; +using System.Text.Json.Serialization; + +namespace FinlyticCore.Dtos; + +/// +/// Response DTO for corporate calendar events (AOT-compliant). +/// +public record CalendarEventResponseDto( + [property: JsonPropertyName("id")] string Id, + [property: JsonPropertyName("symbol")] string Symbol, + [property: JsonPropertyName("companyName")] string CompanyName, + [property: JsonPropertyName("eventType")] string EventType, + [property: JsonPropertyName("eventDate")] DateTime EventDate, + [property: JsonPropertyName("date")] string Date, + [property: JsonPropertyName("isin")] string Isin, + [property: JsonPropertyName("ticker")] string Ticker, + [property: JsonPropertyName("description")] string Description, + [property: JsonPropertyName("details")] string Details, + [property: JsonPropertyName("image")] string Image +); diff --git a/FinlyticCore/Dtos/MqttRequestDtos.cs b/FinlyticCore/Dtos/MqttRequestDtos.cs index 70371d9..3f5c0e5 100644 --- a/FinlyticCore/Dtos/MqttRequestDtos.cs +++ b/FinlyticCore/Dtos/MqttRequestDtos.cs @@ -13,39 +13,40 @@ public record LimitRequest( /// Generic request payload for paginated queries with optional ISIN filter. /// public record PaginatedRequest( - [property: JsonPropertyName("limit")] int Limit, - [property: JsonPropertyName("offset")] int Offset, - [property: JsonPropertyName("isin")] string? Isin = null + [property: JsonPropertyName("limit")] int Limit, + [property: JsonPropertyName("offset")] int Offset, + [property: JsonPropertyName("isin")] string? Isin = null ); /// /// Request payload for daily-news queries with optional filters. /// public record DailyNewsRequest( - [property: JsonPropertyName("limit")] int Limit, - [property: JsonPropertyName("offset")] int Offset, - [property: JsonPropertyName("isin")] string? Isin = null, - [property: JsonPropertyName("date")] string? Date = null, - [property: JsonPropertyName("status")] string? Status = null, - [property: JsonPropertyName("query")] string? Query = null, - [property: JsonPropertyName("hasSentiment")] bool? HasSentiment = null + [property: JsonPropertyName("limit")] int Limit, + [property: JsonPropertyName("offset")] int Offset, + [property: JsonPropertyName("isin")] string? Isin = null, + [property: JsonPropertyName("date")] DateTime? Date = null, + [property: JsonPropertyName("status")] string? Status = null, + [property: JsonPropertyName("query")] string? Query = null, + [property: JsonPropertyName("hasSentiment")] + bool? HasSentiment = null ); - /// /// Request payload for fetching fundamentals or technical-analysis data by ISIN. /// public record IsinRequest( - [property: JsonPropertyName("isin")] string Isin, - [property: JsonPropertyName("ticker")] string? Ticker = "", - [property: JsonPropertyName("forceRefresh")] bool ForceRefresh = false + [property: JsonPropertyName("isin")] string Isin, + [property: JsonPropertyName("ticker")] string? Ticker = "", + [property: JsonPropertyName("forceRefresh")] + bool ForceRefresh = false ); /// /// Request payload for fetching trades filtered by ISIN and/or status. /// public record GetTradesRequest( - [property: JsonPropertyName("isin")] string? Isin = null, + [property: JsonPropertyName("isin")] string? Isin = null, [property: JsonPropertyName("status")] string? Status = null, [property: JsonPropertyName("userId")] string? UserId = null ); @@ -54,17 +55,20 @@ public record GetTradesRequest( /// Request payload for fetching sentiment by article ID. /// public record ArticleRequest( - [property: JsonPropertyName("articleId")] string ArticleId, - [property: JsonPropertyName("id")] string? Id = null + [property: JsonPropertyName("articleId")] + string ArticleId, + [property: JsonPropertyName("id")] string? Id = null ); /// /// Request payload for triggering a manual sentiment analysis for an article or ISIN. /// public record AnalyzeSentimentRequest( - [property: JsonPropertyName("articleId")] string? ArticleId = null, - [property: JsonPropertyName("isin")] string? Isin = null, - [property: JsonPropertyName("forceReload")] bool ForceReload = false + [property: JsonPropertyName("articleId")] + string? ArticleId = null, + [property: JsonPropertyName("isin")] string? Isin = null, + [property: JsonPropertyName("forceReload")] + bool ForceReload = false ); /// @@ -72,6 +76,14 @@ public record AnalyzeSentimentRequest( /// public record EmptyRequest; +/// +/// Request payload for paginated/monthly calendar queries. +/// +public record GetEventsByMonthRequest( + [property: JsonPropertyName("year")] int Year, + [property: JsonPropertyName("month")] int Month +); + /// /// Request payload for triggering a manual AI analysis. /// @@ -79,28 +91,40 @@ public record ManualAnalysisRpcRequest( [property: JsonPropertyName("isin")] string Isin, [property: JsonPropertyName("symbol")] string Symbol, [property: JsonPropertyName("sector")] string Sector, - [property: JsonPropertyName("headline")] string Headline, - [property: JsonPropertyName("currentPrice")] decimal CurrentPrice, - [property: JsonPropertyName("riskScore")] int RiskScore, - [property: JsonPropertyName("minTimeframeValue")] int MinTimeframeValue, - [property: JsonPropertyName("maxTimeframeValue")] int MaxTimeframeValue, - [property: JsonPropertyName("timeframeUnit")] string TimeframeUnit, - [property: JsonPropertyName("instrumentType")] string InstrumentType, - [property: JsonPropertyName("userNotes")] string UserNotes, + [property: JsonPropertyName("headline")] + string Headline, + [property: JsonPropertyName("currentPrice")] + decimal CurrentPrice, + [property: JsonPropertyName("riskScore")] + int RiskScore, + [property: JsonPropertyName("minTimeframeValue")] + int MinTimeframeValue, + [property: JsonPropertyName("maxTimeframeValue")] + int MaxTimeframeValue, + [property: JsonPropertyName("timeframeUnit")] + string TimeframeUnit, + [property: JsonPropertyName("instrumentType")] + string InstrumentType, + [property: JsonPropertyName("userNotes")] + string UserNotes, [property: JsonPropertyName("taData")] FinlyticCore.Dtos.TechnicalAnalysis.TechnicalAnalysisDto? TaData, - [property: JsonPropertyName("fundamentalsData")] FinlyticCore.Dtos.Fundamentals.AssetFundamentalsDto? FundamentalsData, - [property: JsonPropertyName("sentimentData")] FinlyticCore.Dtos.Sentiment.IsinSentimentSummaryDto? SentimentData + [property: JsonPropertyName("fundamentalsData")] + FinlyticCore.Dtos.Fundamentals.AssetFundamentalsDto? FundamentalsData, + [property: JsonPropertyName("sentimentData")] + FinlyticCore.Dtos.Sentiment.IsinSentimentSummaryDto? SentimentData ); - /// /// Response payload returned by microservice health pings over MQTT. /// public record ServiceHealthResponse( - [property: JsonPropertyName("serviceName")] string ServiceName, + [property: JsonPropertyName("serviceName")] + string ServiceName, [property: JsonPropertyName("status")] string Status, - [property: JsonPropertyName("timestamp")] DateTime Timestamp, - [property: JsonPropertyName("dbStatus")] string DbStatus + [property: JsonPropertyName("timestamp")] + DateTime Timestamp, + [property: JsonPropertyName("dbStatus")] + string DbStatus ); /// @@ -109,7 +133,8 @@ public record ServiceHealthResponse( public record FetchLogoResponse( [property: JsonPropertyName("isin")] string? Isin, [property: JsonPropertyName("path")] string? Path, - [property: JsonPropertyName("success")] bool Success + [property: JsonPropertyName("success")] + bool Success ); /// @@ -117,9 +142,12 @@ public record FetchLogoResponse( /// Replaces the anonymous type to be compatible with AOT/source-gen JSON serialization. /// public record ServiceConfigUpdatePayload( - [property: JsonPropertyName("serviceName")] string ServiceName, - [property: JsonPropertyName("timestamp")] DateTime Timestamp, - [property: JsonPropertyName("settings")] Dictionary Settings + [property: JsonPropertyName("serviceName")] + string ServiceName, + [property: JsonPropertyName("timestamp")] + DateTime Timestamp, + [property: JsonPropertyName("settings")] + Dictionary Settings ); /// @@ -127,4 +155,4 @@ public record ServiceConfigUpdatePayload( /// public record TickMessageDto( [property: JsonPropertyName("price")] decimal Price -); +); \ No newline at end of file diff --git a/FinlyticCore/Models/Auth/AuthResponseDto.cs b/FinlyticCore/Models/Auth/AuthResponseDto.cs index 8507d10..4a04149 100644 --- a/FinlyticCore/Models/Auth/AuthResponseDto.cs +++ b/FinlyticCore/Models/Auth/AuthResponseDto.cs @@ -10,6 +10,7 @@ public class AuthResponseDto public string Email { get; set; } = string.Empty; public string FullName { get; set; } = string.Empty; public string Role { get; set; } = "User"; + public string ThemePreference { get; set; } = "dark_classic"; public List FcmTokens { get; set; } = new(); public DateTime ExpiresAt { get; set; } public bool RequiresPasswordChange { get; set; } diff --git a/FinlyticCore/Models/Auth/UserDto.cs b/FinlyticCore/Models/Auth/UserDto.cs index e6f3040..b926836 100644 --- a/FinlyticCore/Models/Auth/UserDto.cs +++ b/FinlyticCore/Models/Auth/UserDto.cs @@ -10,6 +10,7 @@ public class UserDto public string FullName { get; set; } = string.Empty; public string Role { get; set; } = "User"; public bool IsActive { get; set; } = true; + public string ThemePreference { get; set; } = "dark_classic"; public List FcmTokens { get; set; } = new(); public DateTime CreatedAt { get; set; } public DateTime? LastLoginAt { get; set; } diff --git a/FinlyticCore/Util/FinlyticJsonSerializerContext.cs b/FinlyticCore/Util/FinlyticJsonSerializerContext.cs index 73e035c..d34dfc1 100644 --- a/FinlyticCore/Util/FinlyticJsonSerializerContext.cs +++ b/FinlyticCore/Util/FinlyticJsonSerializerContext.cs @@ -43,6 +43,8 @@ namespace FinlyticCore.Util; [JsonSerializable(typeof(List))] [JsonSerializable(typeof(CorporateEventDto))] [JsonSerializable(typeof(List))] +[JsonSerializable(typeof(CalendarEventResponseDto))] +[JsonSerializable(typeof(List))] [JsonSerializable(typeof(IsinSentimentSummaryDto))] [JsonSerializable(typeof(IsinAnalysisEntry))] [JsonSerializable(typeof(SectorSentimentSummaryDto))] @@ -72,6 +74,7 @@ namespace FinlyticCore.Util; [JsonSerializable(typeof(ArticleRequest))] [JsonSerializable(typeof(AnalyzeSentimentRequest))] [JsonSerializable(typeof(EmptyRequest))] +[JsonSerializable(typeof(GetEventsByMonthRequest))] [JsonSerializable(typeof(ManualAnalysisRpcRequest))] [JsonSerializable(typeof(ServiceHealthResponse))] diff --git a/FinlyticCore/Util/ManagedMqttClient.cs b/FinlyticCore/Util/ManagedMqttClient.cs index bacaa48..694c11e 100644 --- a/FinlyticCore/Util/ManagedMqttClient.cs +++ b/FinlyticCore/Util/ManagedMqttClient.cs @@ -281,24 +281,33 @@ public abstract class ManagedMqttClient : IDisposable if (_cts == null || _cts.IsCancellationRequested) return; - _logger.LogWarning("Lost connection to MQTT broker (Reason: {Reason}). Initiating auto-reconnect loop in 5 seconds...", e.Reason); + _logger.LogWarning("Lost connection to MQTT broker (Reason: {Reason}). Initiating auto-reconnect loop...", e.Reason); - try + int attempt = 0; + while (_cts != null && !_cts.IsCancellationRequested) { - await Task.Delay(TimeSpan.FromSeconds(5), _cts.Token); - - await _mqttClient.ReconnectAsync(_cts.Token); - - if (_mqttClient.IsConnected) + attempt++; + var delaySeconds = Math.Min(5 * Math.Pow(2, attempt - 1), 60); // 5s, 10s, 20s, 40s, 60s max + + try { - _logger.LogInformation("MQTT client reconnected successfully."); - await OnConnectedAsync(); + _logger.LogInformation("Reconnect attempt {Attempt} in {Delay}s...", attempt, delaySeconds); + await Task.Delay(TimeSpan.FromSeconds(delaySeconds), _cts.Token); + + await _mqttClient.ReconnectAsync(_cts.Token); + + if (_mqttClient.IsConnected) + { + _logger.LogInformation("MQTT client reconnected successfully after {Attempt} attempt(s).", attempt); + await OnConnectedAsync(); + return; + } + } + catch (OperationCanceledException) { return; /* Expected on application shutdown */ } + catch (Exception ex) + { + _logger.LogWarning(ex, "Reconnect attempt {Attempt} to the MQTT broker failed.", attempt); } - } - catch (OperationCanceledException) { /* Expected swallow on application shutdown */ } - catch (Exception ex) - { - _logger.LogError(ex, "Reconnection attempt to the MQTT broker failed."); } } diff --git a/FinlyticFundamentals/Dockerfile b/FinlyticFundamentals/Dockerfile index 78d1390..d6f6629 100644 --- a/FinlyticFundamentals/Dockerfile +++ b/FinlyticFundamentals/Dockerfile @@ -1,22 +1,67 @@ -FROM mcr.microsoft.com/dotnet/runtime:10.0 AS base -USER $APP_UID -WORKDIR /app +# ───────────────────────────────────────────────────────────────────────────── +# FinlyticFundamentals — Application Dockerfile +# +# Prerequisite: The Playwright base image must exist locally. +# docker build -f FinlyticNews/Dockerfile.playwright-base ` +# -t finlytic-playwright-base:1.49.0 ` +# FinlyticNews +# +# Then build this image as normal: +# docker compose build finlyticfundamentals +# — or — +# docker build -f FinlyticFundamentals/Dockerfile -t finlyticfundamentals . +# ───────────────────────────────────────────────────────────────────────────── +# ── Stage 1: Build ──────────────────────────────────────────────────────────── FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src + +# Restore dependencies first (cached until .csproj changes) COPY ["FinlyticFundamentals/FinlyticFundamentals.csproj", "FinlyticFundamentals/"] COPY ["FinlyticCore/FinlyticCore.csproj", "FinlyticCore/"] RUN dotnet restore "FinlyticFundamentals/FinlyticFundamentals.csproj" + +# Build COPY . . WORKDIR "/src/FinlyticFundamentals" RUN dotnet build "./FinlyticFundamentals.csproj" -c $BUILD_CONFIGURATION -o /app/build +# ── Stage 2: Publish ────────────────────────────────────────────────────────── FROM build AS publish ARG BUILD_CONFIGURATION=Release -RUN dotnet publish "./FinlyticFundamentals.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false +# PlaywrightCopyPlaywrightFilesToOutput copies the Node driver + CLI into /app/publish/.playwright +# We only need this to get the playwright CLI script; browsers come from the base image. +RUN dotnet publish "./FinlyticFundamentals.csproj" \ + -c $BUILD_CONFIGURATION \ + -o /app/publish \ + /p:UseAppHost=false \ + /p:PlaywrightCopyPlaywrightFilesToOutput=true -FROM base AS final +# ── Stage 3: Final ──────────────────────────────────────────────────────────── +# Use the pre-built base image that already has Chromium + all OS dependencies. +# This layer is cached on Docker Desktop and NOT re-downloaded on code changes. +FROM finlytic-playwright-base:1.49.0 AS final + +USER root WORKDIR /app + +# Copy published application COPY --from=publish /app/publish . + +# The Playwright CLI + Node driver are published into .playwright by the build above. +# Verify the driver is present (sanity check — doesn't install anything). +RUN test -d /app/.playwright && \ + test -f /app/.playwright/node/linux-x64/node && \ + chmod +x /app/.playwright/node/linux-x64/node && \ + echo "✅ Playwright driver present" + +# Browsers are already in /opt/ms-playwright from the base image — nothing to download. +ENV PLAYWRIGHT_BROWSERS_PATH=/opt/ms-playwright + +# Fix ownership +RUN chown -R $APP_UID:$APP_UID /app /opt/ms-playwright + +USER $APP_UID + ENTRYPOINT ["dotnet", "FinlyticFundamentals.dll"] diff --git a/FinlyticFundamentals/FinlyticFundamentals.csproj b/FinlyticFundamentals/FinlyticFundamentals.csproj index 160b817..62a1143 100644 --- a/FinlyticFundamentals/FinlyticFundamentals.csproj +++ b/FinlyticFundamentals/FinlyticFundamentals.csproj @@ -5,9 +5,11 @@ enable enable Linux + true + all diff --git a/FinlyticFundamentals/Program.cs b/FinlyticFundamentals/Program.cs index 55550f3..6e916cb 100644 --- a/FinlyticFundamentals/Program.cs +++ b/FinlyticFundamentals/Program.cs @@ -19,12 +19,14 @@ builder.Services.AddHttpClient() .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler { UseCookies = true, - CookieContainer = new System.Net.CookieContainer() + CookieContainer = new System.Net.CookieContainer(), + AllowAutoRedirect = true }); +builder.Services.AddSingleton(); + // Register Application Services builder.Services.AddSingleton(); -builder.Services.AddTransient(); builder.Services.AddSingleton(); builder.Services.AddScoped(); diff --git a/FinlyticFundamentals/Services/FundamentalsDbService.cs b/FinlyticFundamentals/Services/FundamentalsDbService.cs index c50b977..eab1416 100644 --- a/FinlyticFundamentals/Services/FundamentalsDbService.cs +++ b/FinlyticFundamentals/Services/FundamentalsDbService.cs @@ -37,6 +37,11 @@ public interface IFundamentalsDbService /// Cancellation token. /// A list of corporate events sorted chronologically. Task> GetAllEventsAsync(CancellationToken cancellationToken = default); + + /// + /// Gets corporate events for a specific month. + /// + Task> GetEventsByMonthAsync(int year, int month, CancellationToken cancellationToken = default); } public class FundamentalsDbService : IFundamentalsDbService @@ -45,17 +50,20 @@ public class FundamentalsDbService : IFundamentalsDbService private readonly IServiceScopeFactory _scopeFactory; private readonly IYahooFinanceScraper _scraper; + private readonly IHtmlFallbackScraper _fallbackScraper; private readonly YahooFinanceClient _yahooClient; private readonly ILogger _logger; public FundamentalsDbService( IServiceScopeFactory scopeFactory, IYahooFinanceScraper scraper, + IHtmlFallbackScraper fallbackScraper, YahooFinanceClient yahooClient, ILogger logger) { _scopeFactory = scopeFactory; _scraper = scraper; + _fallbackScraper = fallbackScraper; _yahooClient = yahooClient; _logger = logger; } @@ -197,10 +205,49 @@ public class FundamentalsDbService : IFundamentalsDbService } } - if (tickers.Count == 0) return existingEntity; + if (tickers.Count == 0) + { + _logger.LogWarning("[YahooFallbackScraper] No tickers resolved for ISIN {Isin}. Fallback scraper cannot be invoked without a ticker.", isin); + return existingEntity; + } var primaryTicker = tickers[0]; + _logger.LogInformation("[YahooFallbackScraper] Primary ticker resolved: '{Ticker}' for ISIN {Isin}", primaryTicker, isin); var scraped = await _scraper.ScrapeFundamentalsAsync(isin, primaryTicker, cancellationToken); + + bool needsFallback = IsDataIncomplete(scraped, _logger); + _logger.LogInformation("[YahooFallbackScraper] Primary scrape completeness check for '{Ticker}': scrapedIsNull={ScrapedIsNull}, needsFallback={NeedsFallback}", + primaryTicker, scraped == null, needsFallback); + + if (needsFallback) + { + _logger.LogInformation("[YahooFallbackScraper] Executing Playwright Fallback Scraper for ticker '{Ticker}' (ISIN: {Isin})...", primaryTicker, isin); + var fallbackData = await _fallbackScraper.ScrapeFallbackAsync(isin, primaryTicker, cancellationToken); + if (fallbackData != null) + { + _logger.LogInformation("[YahooFallbackScraper] Fallback scraper returned data for {Ticker}. MarketCap={MarketCap}, EV={EV}, Sector='{Sector}'", + primaryTicker, fallbackData.TickerData?.MarketCapitalization, fallbackData.TickerData?.EnterpriseValue, fallbackData.Fundamentals?.Sector); + + if (scraped == null) + { + _logger.LogInformation("[YahooFallbackScraper] Primary scraped data was null. Using entirely Playwright fallback data for {Ticker}...", primaryTicker); + scraped = fallbackData; + } + else + { + _logger.LogInformation("[YahooFallbackScraper] Merging Playwright fallback data into primary scraped data for {Ticker}...", primaryTicker); + + // Merge fallback into scraped + MergeFundamentals(scraped, fallbackData); + } + } + else + { + _logger.LogWarning("[YahooFallbackScraper] Fallback scraper returned NULL for {Ticker}!", primaryTicker); + } + } + // ------------------------------ + if (scraped == null) return existingEntity; var tickerEntities = new List { scraped.TickerData }; @@ -234,7 +281,93 @@ public class FundamentalsDbService : IFundamentalsDbService return await LoadEntityGraphAsync(context, isin, cancellationToken); } + + private static void MergeFundamentals(ScrapedFundamentalsData target, ScrapedFundamentalsData source) + { + var t = target.TickerData; + var s = source.TickerData; + // Kennzahlen & Ratios + if (t.MarketCapitalization == 0 && s.MarketCapitalization > 0) t.MarketCapitalization = s.MarketCapitalization; + if ((t.EnterpriseValue == 0) && s.EnterpriseValue > 0) t.EnterpriseValue = s.EnterpriseValue; + + t.PeRatioTrailing ??= s.PeRatioTrailing; + t.PeRatioForward ??= s.PeRatioForward; + t.PegRatio ??= s.PegRatio; + t.PbRatio ??= s.PbRatio; + t.PsRatio ??= s.PsRatio; + t.EvToEbitda ??= s.EvToEbitda; + t.EvToRevenue ??= s.EvToRevenue; + + // Margen + t.GrossMargin ??= s.GrossMargin; + t.OperatingMargin ??= s.OperatingMargin; + t.NetProfitMargin ??= s.NetProfitMargin; + t.ReturnOnEquity ??= s.ReturnOnEquity; + t.ReturnOnAssets ??= s.ReturnOnAssets; + + // Preise & Dividenden + if (t.FiftyTwoWeekHigh == 0 && s.FiftyTwoWeekHigh > 0) t.FiftyTwoWeekHigh = s.FiftyTwoWeekHigh; + if (t.FiftyTwoWeekLow == 0 && s.FiftyTwoWeekLow > 0) t.FiftyTwoWeekLow = s.FiftyTwoWeekLow; + if ((!t.DividendYield.HasValue || t.DividendYield == 0) && s.DividendYield > 0) t.DividendYield = s.DividendYield; + + // Stammdaten + if (string.IsNullOrWhiteSpace(target.Fundamentals.Sector)) target.Fundamentals.Sector = source.Fundamentals.Sector; + if (string.IsNullOrWhiteSpace(target.Fundamentals.Industry)) target.Fundamentals.Industry = source.Fundamentals.Industry; + if (!target.Fundamentals.Employees.HasValue) target.Fundamentals.Employees = source.Fundamentals.Employees; + if (string.IsNullOrWhiteSpace(target.Fundamentals.BusinessSummary)) target.Fundamentals.BusinessSummary = source.Fundamentals.BusinessSummary; + } + + private static bool IsDataIncomplete(ScrapedFundamentalsData? data, ILogger logger) + { + if (data == null || data.TickerData == null) + { + logger.LogWarning("[YahooFallbackScraper] IsDataIncomplete -> TRUE (scraped data or TickerData is NULL)"); + return true; + } + + var td = data.TickerData; + var f = data.Fundamentals; + + int missingCriticalFields = 0; + + // 1. Absolute Must-Haves (sofortiger Fallback wenn 0) + if (td.MarketCapitalization == 0) + { + logger.LogWarning("[YahooFallbackScraper] IsDataIncomplete -> TRUE (MarketCapitalization is 0)"); + return true; + } + if (td.FiftyTwoWeekHigh == 0 || td.FiftyTwoWeekLow == 0) + { + logger.LogWarning("[YahooFallbackScraper] IsDataIncomplete -> TRUE (52WeekHigh={High} or 52WeekLow={Low} is 0)", td.FiftyTwoWeekHigh, td.FiftyTwoWeekLow); + return true; + } + + // 2. Bewertung & Ratios (Zähle fehlende Metriken) + // KGV: Trailing ODER Forward muss vorhanden sein, sonst zählt die KGV-Bewertung als fehlend + if ((!td.PeRatioTrailing.HasValue || td.PeRatioTrailing == 0) && (!td.PeRatioForward.HasValue || td.PeRatioForward == 0)) + missingCriticalFields++; + + if (!td.PbRatio.HasValue || td.PbRatio == 0) missingCriticalFields++; + if (!td.PsRatio.HasValue || td.PsRatio == 0) missingCriticalFields++; + if (td.EnterpriseValue == 0) missingCriticalFields++; + + // 3. Margen & Profitabilität + if (!td.GrossMargin.HasValue) missingCriticalFields++; + if (!td.OperatingMargin.HasValue) missingCriticalFields++; + if (!td.NetProfitMargin.HasValue) missingCriticalFields++; + + // 4. Stammdaten + if (string.IsNullOrWhiteSpace(f.Sector)) missingCriticalFields++; + if (string.IsNullOrWhiteSpace(f.Industry)) missingCriticalFields++; + + // Wenn 2 oder mehr der wichtigen Kennzahlen fehlen, gilt die Quelle als unvollständig + bool isIncomplete = missingCriticalFields >= 2; + logger.LogInformation("[YahooFallbackScraper] IsDataIncomplete total missingCriticalFields={Count} (threshold >= 2 -> isIncomplete={Result})", missingCriticalFields, isIncomplete); + + return isIncomplete; + } + #endregion #region Data Access & Mapping Helpers @@ -546,9 +679,14 @@ public class FundamentalsDbService : IFundamentalsDbService using var scope = _scopeFactory.CreateScope(); var context = scope.ServiceProvider.GetRequiredService(); + var now = DateTime.UtcNow; + var startOfToday = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0, DateTimeKind.Utc); + var endOfYear = new DateTime(now.Year, 12, 31, 23, 59, 59, DateTimeKind.Utc); + var entities = await context.AssetFundamentals .AsNoTracking() - .Where(f => f.NextEarningsDate.HasValue || f.ExDividendDate.HasValue) + .Where(f => (f.NextEarningsDate.HasValue && f.NextEarningsDate.Value >= startOfToday && f.NextEarningsDate.Value <= endOfYear) + || (f.ExDividendDate.HasValue && f.ExDividendDate.Value >= startOfToday && f.ExDividendDate.Value <= endOfYear)) .ToListAsync(cancellationToken); var events = new List(); @@ -585,5 +723,60 @@ public class FundamentalsDbService : IFundamentalsDbService return events.OrderBy(e => e.Date).ToList(); } + /// + public async Task> GetEventsByMonthAsync(int year, int month, CancellationToken cancellationToken = default) + { + using var scope = _scopeFactory.CreateScope(); + var context = scope.ServiceProvider.GetRequiredService(); + + var startOfMonth = new DateTime(year, month, 1, 0, 0, 0, DateTimeKind.Utc); + var startOfNextMonth = startOfMonth.AddMonths(1); + + _logger.LogInformation("[FundamentalsDbService] Querying events between {Start} and {End}", startOfMonth, startOfNextMonth); + + var entities = await context.AssetFundamentals + .AsNoTracking() + .Where(f => (f.NextEarningsDate != null && f.NextEarningsDate >= startOfMonth && f.NextEarningsDate < startOfNextMonth) + || (f.ExDividendDate != null && f.ExDividendDate >= startOfMonth && f.ExDividendDate < startOfNextMonth)) + .ToListAsync(cancellationToken); + + _logger.LogInformation("[FundamentalsDbService] Found {Count} entities.", entities.Count); + + var events = new List(); + + foreach (var entity in entities) + { + var companyName = string.IsNullOrWhiteSpace(entity.CompanyName) ? entity.PrimaryTicker : entity.CompanyName; + + if (entity.NextEarningsDate != null && entity.NextEarningsDate >= startOfMonth && entity.NextEarningsDate < startOfNextMonth) + { + events.Add(new CorporateEventDto + { + Isin = entity.Isin, + Ticker = entity.PrimaryTicker, + CompanyName = companyName, + EventType = "Quartalsergebnis", + Date = entity.NextEarningsDate.Value + }); + } + + if (entity.ExDividendDate != null && entity.ExDividendDate >= startOfMonth && entity.ExDividendDate < startOfNextMonth) + { + events.Add(new CorporateEventDto + { + Isin = entity.Isin, + Ticker = entity.PrimaryTicker, + CompanyName = companyName, + EventType = "Ex-Dividendentag", + Date = entity.ExDividendDate.Value + }); + } + } + + _logger.LogInformation("[FundamentalsDbService] Returning {Count} total events.", events.Count); + + return events.OrderBy(e => e.Date).ToList(); + } + #endregion } \ No newline at end of file diff --git a/FinlyticFundamentals/Services/HtmlFallbackScraper.cs b/FinlyticFundamentals/Services/HtmlFallbackScraper.cs new file mode 100644 index 0000000..27e27b3 --- /dev/null +++ b/FinlyticFundamentals/Services/HtmlFallbackScraper.cs @@ -0,0 +1,305 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using FinlyticFundamentals.Entities; +using Microsoft.Extensions.Logging; +using Microsoft.Playwright; + +namespace FinlyticFundamentals.Services; + +public interface IHtmlFallbackScraper +{ + Task ScrapeFallbackAsync(string isin, string ticker, CancellationToken cancellationToken = default); +} + +/// +/// Fallback scraper using Playwright (headless Chromium) to scrape Yahoo Finance pages +/// for alternative ticker symbols (e.g., APC.SG) whose data is not available via the API. +/// Targets stable data-testid selectors from the rendered Yahoo Finance SPA. +/// +public class HtmlFallbackScraper : IHtmlFallbackScraper, IAsyncDisposable +{ + private readonly ILogger _logger; + + private IPlaywright? _playwright; + private IBrowser? _browser; + private readonly SemaphoreSlim _browserLock = new(1, 1); + + public HtmlFallbackScraper(ILogger logger) + { + _logger = logger; + } + + public async Task ScrapeFallbackAsync( + string isin, + string ticker, + CancellationToken cancellationToken = default) + { + _logger.LogInformation( + "[YahooFallbackScraper] Executing Playwright Fallback Scrape for ticker '{Ticker}' (ISIN: {Isin})...", + ticker, isin); + + try + { + var browser = await GetOrInitBrowserAsync(cancellationToken); + + var fundamentals = new AssetFundamentalsEntity + { + Isin = isin, + PrimaryTicker = ticker, + LastUpdatedAt = DateTime.UtcNow, + LastStaticUpdatedAt = DateTime.UtcNow + }; + + var tickerData = new TickerFundamentalsEntity + { + Ticker = ticker, + Isin = isin, + LastUpdatedAt = DateTime.UtcNow + }; + + fundamentals.CompanyName = ticker; + // Share context for both pages so we only have to accept cookies once + await using (var ctx = await browser.NewContextAsync(BuildContextOptions())) + { + // ── 1. Key Statistics Page ───────────────────────────────────── + var statsUrl = $"https://finance.yahoo.com/quote/{Uri.EscapeDataString(ticker)}/key-statistics/"; + _logger.LogInformation("[YahooFallbackScraper] Navigating to stats page: {Url}", statsUrl); + + var statsPage = await ctx.NewPageAsync(); + try + { + await statsPage.GotoAsync(statsUrl, new PageGotoOptions + { + WaitUntil = WaitUntilState.DOMContentLoaded, + Timeout = 45_000 + }); + + await HandleConsentAsync(statsPage); + + // Wait for the statistics section to be visible + await statsPage.WaitForSelectorAsync( + "section[data-testid='qsp-statistics'], section[data-testid='stats-highlight']", + new PageWaitForSelectorOptions { Timeout = 20_000 }); + + // --- Valuation Measures Table --- + var valuationRows = await statsPage.QuerySelectorAllAsync( + "section[data-testid='qsp-statistics'] table tbody tr"); + + foreach (var row in valuationRows) + { + var cells = await row.QuerySelectorAllAsync("td"); + if (cells.Count < 2) continue; + + var label = (await cells[0].InnerTextAsync()).Trim(); + var value = (await cells[1].InnerTextAsync()).Trim(); + + if (string.IsNullOrWhiteSpace(value) || value == "N/A" || value == "--") continue; + + switch (NormalizeLabel(label)) + { + case "market cap": tickerData.MarketCapitalization = ParseSuffixNumber(value) ?? 0m; break; + case "enterprise value": tickerData.EnterpriseValue = ParseSuffixNumber(value) ?? 0m; break; + case "trailing p/e": tickerData.PeRatioTrailing = ParseDecimal(value); break; + case "forward p/e": tickerData.PeRatioForward = ParseDecimal(value); break; + case "peg ratio (5yr expected)": tickerData.PegRatio = ParseDecimal(value); break; + case "price/sales": tickerData.PsRatio = ParseDecimal(value); break; + case "price/book": tickerData.PbRatio = ParseDecimal(value); break; + case "enterprise value/revenue": tickerData.EvToRevenue = ParseDecimal(value); break; + case "enterprise value/ebitda": tickerData.EvToEbitda = ParseDecimal(value); break; + } + } + + // --- Financial Highlight Cards --- + var highlightRows = await statsPage.QuerySelectorAllAsync( + "div[data-testid='stats-highlight'] section[data-testid='card-container'] table tr"); + + foreach (var row in highlightRows) + { + var cells = await row.QuerySelectorAllAsync("td"); + if (cells.Count < 2) continue; + + var label = (await cells[0].InnerTextAsync()).Trim(); + var value = (await cells[1].InnerTextAsync()).Trim(); + + if (string.IsNullOrWhiteSpace(value) || value == "N/A" || value == "--") continue; + + switch (NormalizeLabel(label)) + { + case "profit margin": tickerData.NetProfitMargin = ParsePercent(value); break; + case "operating margin": tickerData.OperatingMargin = ParsePercent(value); break; + case "return on assets": tickerData.ReturnOnAssets = ParsePercent(value); break; + case "return on equity": tickerData.ReturnOnEquity = ParsePercent(value); break; + case "current ratio": tickerData.CurrentRatio = ParseDecimal(value); break; + case "quick ratio": tickerData.QuickRatio = ParseDecimal(value); break; + case "total debt/equity": tickerData.DebtToEquity = ParseDecimal(value); break; + case "52 week high": tickerData.FiftyTwoWeekHigh = ParseDecimal(value) ?? 0m; break; + case "52 week low": tickerData.FiftyTwoWeekLow = ParseDecimal(value) ?? 0m; break; + case "forward annual dividend yield": + case "trailing annual dividend yield": + tickerData.DividendYield ??= ParsePercent(value); break; + case "payout ratio": tickerData.PayoutRatio = ParsePercent(value); break; + } + } + + _logger.LogInformation( + "[YahooFallbackScraper] Stats parsed for '{Ticker}': MarketCap={MarketCap}, EV={EV}, TrailingPE={PE}, ForwardPE={FPE}", + ticker, tickerData.MarketCapitalization, tickerData.EnterpriseValue, + tickerData.PeRatioTrailing, tickerData.PeRatioForward); + } + catch (TimeoutException tex) + { + _logger.LogWarning(tex, + "[YahooFallbackScraper] Timeout waiting for stats page selectors for ticker '{Ticker}'. Page may not have loaded.", ticker); + } + finally + { + await statsPage.CloseAsync(); + } + + } + + // ── 2. Guard: no meaningful data ────────────────────────────── + if (tickerData.MarketCapitalization == 0) + { + _logger.LogWarning( + "[YahooFallbackScraper] Playwright scrape for '{Ticker}' produced no meaningful data (MarketCap=0). Returning NULL.", + ticker); + return null; + } + + _logger.LogInformation( + "[YahooFallbackScraper] Playwright Fallback Scrape complete for '{Ticker}'. MarketCap={MarketCap}", + ticker, tickerData.MarketCapitalization); + + return new ScrapedFundamentalsData( + fundamentals, + tickerData, + new List(), + new List(), + new List() + ); + } + catch (Exception ex) + { + _logger.LogError(ex, + "[YahooFallbackScraper] Error during Playwright Fallback Scrape for ticker '{Ticker}' (ISIN: {Isin})", + ticker, isin); + return null; + } + } + + // ── Browser Lifecycle ────────────────────────────────────────────────── + + private async Task GetOrInitBrowserAsync(CancellationToken cancellationToken = default) + { + if (_browser != null) return _browser; + + await _browserLock.WaitAsync(cancellationToken); + try + { + if (_browser != null) return _browser; + + _playwright = await Playwright.CreateAsync(); + _browser = await _playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions + { + Headless = true, + Args = new[] { "--no-sandbox", "--disable-dev-shm-usage" } + }); + + + _logger.LogInformation("[YahooFallbackScraper] Playwright Chromium browser initialized."); + return _browser; + } + finally + { + _browserLock.Release(); + } + } + + private static BrowserNewContextOptions BuildContextOptions() => new() + { + UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", + ViewportSize = new ViewportSize { Width = 1280, Height = 900 }, + Locale = "en-US", + ExtraHTTPHeaders = new Dictionary + { + ["Accept-Language"] = "en-US,en;q=0.9" + } + }; + + public async ValueTask DisposeAsync() + { + if (_browser != null) await _browser.CloseAsync(); + _playwright?.Dispose(); + } + + // ── Parse Helpers ───────────────────────────────────────────────────── + + private async Task HandleConsentAsync(IPage page) + { + try + { + if (page.Url.Contains("consent.yahoo.com")) + { + _logger.LogInformation("[YahooFallbackScraper] Redirected to consent page. Attempting to accept cookies..."); + var agreeBtn = page.Locator("button[name='agree'], button.accept-all, button[value='agree']"); + if (await agreeBtn.CountAsync() > 0) + { + await agreeBtn.First.ClickAsync(); + await page.WaitForNavigationAsync(new PageWaitForNavigationOptions { WaitUntil = WaitUntilState.DOMContentLoaded, Timeout = 20_000 }); + _logger.LogInformation("[YahooFallbackScraper] Cookie consent accepted. Navigated back to: {Url}", page.Url); + } + else + { + _logger.LogWarning("[YahooFallbackScraper] On consent page but could not find the 'agree' button."); + } + } + } + catch (Exception ex) + { + _logger.LogWarning(ex, "[YahooFallbackScraper] Error while handling cookie consent."); + } + } + + /// Lowercases, strips trailing digits, common Yahoo qualifiers like (ttm), (mrq), and extra spaces. + private static string NormalizeLabel(string label) + { + label = label.ToLowerInvariant(); + label = Regex.Replace(label, @"\s*\d+\s*$", ""); // trailing superscripts + label = label.Replace("(ttm)", "").Replace("(mrq)", "").Replace("(fye)", ""); // remove date qualifiers + label = Regex.Replace(label, @"\s+", " "); // collapse spaces + return label.Trim(); + } + + private static decimal? ParseDecimal(string? input) + { + if (string.IsNullOrWhiteSpace(input) || input == "N/A" || input == "--" || input == "-") return null; + input = Regex.Replace(input, @"[^\d.-]", ""); + return decimal.TryParse(input, NumberStyles.Any, CultureInfo.InvariantCulture, out var val) ? val : null; + } + + private static decimal? ParsePercent(string? input) + { + var val = ParseDecimal(input); + if (!val.HasValue) return null; + return val.Value > 1m ? val.Value / 100m : val.Value; + } + + private static decimal? ParseSuffixNumber(string? input) + { + if (string.IsNullOrWhiteSpace(input) || input == "N/A" || input == "--" || input == "-") return null; + input = input.Trim(); + decimal multiplier = input.EndsWith("T", StringComparison.OrdinalIgnoreCase) ? 1_000_000_000_000m + : input.EndsWith("B", StringComparison.OrdinalIgnoreCase) ? 1_000_000_000m + : input.EndsWith("M", StringComparison.OrdinalIgnoreCase) ? 1_000_000m + : input.EndsWith("K", StringComparison.OrdinalIgnoreCase) ? 1_000m + : 1m; + var numPart = Regex.Replace(input, @"[^\d.-]", ""); + var val = ParseDecimal(numPart); + return val.HasValue ? val.Value * multiplier : null; + } +} \ No newline at end of file diff --git a/FinlyticFundamentals/Util/FundamentalsMqttClient.cs b/FinlyticFundamentals/Util/FundamentalsMqttClient.cs index b20eff9..bca1def 100644 --- a/FinlyticFundamentals/Util/FundamentalsMqttClient.cs +++ b/FinlyticFundamentals/Util/FundamentalsMqttClient.cs @@ -61,6 +61,7 @@ public class FundamentalsMqttClient : ManagedMqttClient, IHostedService _logger.LogInformation("[{Channel}] Fundamentals MQTT client connected. Subscribing to RPC request topics...", "FundamentalsChannel"); await SubscribeAsync("services/request/fundamentals_Get/#"); await SubscribeAsync("services/request/events_GetAll/#"); + await SubscribeAsync("services/request/events_GetByMonth/#"); await SubscribeAsync("services/request/health_Ping/#"); await SubscribeAsync("services/config/updated/#"); } @@ -87,15 +88,19 @@ public class FundamentalsMqttClient : ManagedMqttClient, IHostedService var correlationId = topic.Substring(lastSlash + 1); // 2. Dispatch to specific channel handlers - if (topic.Contains("fundamentals_Get", StringComparison.OrdinalIgnoreCase)) + if (topic.StartsWith("services/request/fundamentals_Get", StringComparison.OrdinalIgnoreCase)) { await OnFundamentalsGetAsync(payload, correlationId); } - else if (topic.Contains("events_GetAll", StringComparison.OrdinalIgnoreCase)) + else if (topic.StartsWith("services/request/events_GetAll", StringComparison.OrdinalIgnoreCase)) { await OnEventsGetAllAsync(correlationId); } - else if (topic.Contains("health_Ping", StringComparison.OrdinalIgnoreCase)) + else if (topic.StartsWith("services/request/events_GetByMonth", StringComparison.OrdinalIgnoreCase)) + { + await OnEventsGetByMonthAsync(payload, correlationId); + } + else if (topic.StartsWith("services/request/health_Ping", StringComparison.OrdinalIgnoreCase)) { await OnHealthPingAsync(topic, correlationId); } @@ -156,6 +161,32 @@ public class FundamentalsMqttClient : ManagedMqttClient, IHostedService } } + /// + /// Handles events_GetByMonth RPC requests. + /// + private async Task OnEventsGetByMonthAsync(string payload, string correlationId) + { + if (string.IsNullOrWhiteSpace(payload)) return; + + try + { + var request = (GetEventsByMonthRequest?)JsonSerializer.Deserialize(payload, typeof(GetEventsByMonthRequest), FinlyticJsonSerializerContext.Default); + if (request == null) return; + + _logger.LogInformation("[{Channel}] [FundamentalsMqttClient] Processing RPC events_GetByMonth request for {Year}/{Month} [CorrelationId: {CorrelationId}]", "FundamentalsChannel", request.Year, request.Month, correlationId); + + var events = await _dbService.GetEventsByMonthAsync(request.Year, request.Month); + var responseTopic = $"services/response/events_GetByMonth/{correlationId}"; + + _logger.LogInformation("[{Channel}] [FundamentalsMqttClient] Publishing monthly events RPC response to '{ResponseTopic}'", "FundamentalsChannel", responseTopic); + await PublishAsync(responseTopic, events); + } + catch (Exception ex) + { + _logger.LogError(ex, "[{Channel}] [FundamentalsMqttClient] Failed to process events_GetByMonth request.", "FundamentalsChannel"); + } + } + /// /// Handles health_Ping RPC requests. /// diff --git a/FinlyticFundamentals/yahoo.html b/FinlyticFundamentals/yahoo.html new file mode 100644 index 0000000..e15fe93 Binary files /dev/null and b/FinlyticFundamentals/yahoo.html differ diff --git a/FinlyticNews/Services/N8nService.cs b/FinlyticNews/Services/N8nService.cs index b340e7d..27df6a6 100644 --- a/FinlyticNews/Services/N8nService.cs +++ b/FinlyticNews/Services/N8nService.cs @@ -61,8 +61,8 @@ public class N8nService : IN8nService if (string.IsNullOrWhiteSpace(targetUrl)) { - targetUrl = _configuration["N8N__WebhookUrl"] - ?? _configuration["N8N:WebhookUrl"]; + targetUrl = _configuration["N8N:ArticleExtractionUrl"] + ?? _configuration["N8N__ArticleExtractionUrl"]; } if (string.IsNullOrWhiteSpace(targetUrl)) diff --git a/FinlyticNews/Services/NewsDbService.cs b/FinlyticNews/Services/NewsDbService.cs index 9d5a35d..f55fc65 100644 --- a/FinlyticNews/Services/NewsDbService.cs +++ b/FinlyticNews/Services/NewsDbService.cs @@ -349,8 +349,10 @@ public class NewsDbService : INewsDbService // 2. Date Filter if (date.HasValue) { - var targetDate = DateTime.SpecifyKind(date.Value.Date, DateTimeKind.Utc); + // Erstelle ein exaktes UTC-Datum von 00:00:00 Uhr am gebuchten Tag + var targetDate = new DateTime(date.Value.Year, date.Value.Month, date.Value.Day, 0, 0, 0, DateTimeKind.Utc); var nextDate = targetDate.AddDays(1); + query = query.Where(a => a.PublishedAt >= targetDate && a.PublishedAt < nextDate); } diff --git a/FinlyticNews/Util/NewsMqttClient.cs b/FinlyticNews/Util/NewsMqttClient.cs index 05dc8c9..d3273e4 100644 --- a/FinlyticNews/Util/NewsMqttClient.cs +++ b/FinlyticNews/Util/NewsMqttClient.cs @@ -40,10 +40,12 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService { Host = _configuration["MQTT:Host"] ?? _configuration["MQTT__Host"] ?? "localhost", Port = Convert.ToInt32(_configuration["MQTT:Port"] ?? _configuration["MQTT__Port"] ?? "1883"), - ClientId = $"{(_configuration["MQTT:ClientId"] ?? _configuration["MQTT__ClientId"] ?? "FinlyticNews")}_{Guid.NewGuid()}" + ClientId = + $"{(_configuration["MQTT:ClientId"] ?? _configuration["MQTT__ClientId"] ?? "FinlyticNews")}_{Guid.NewGuid()}" }; - _logger.LogInformation("Starting News MQTT client. Host: {Host}, ClientId: {ClientId}", config.Host, config.ClientId); + _logger.LogInformation("Starting News MQTT client. Host: {Host}, ClientId: {ClientId}", config.Host, + config.ClientId); await ConnectAsync(config); } @@ -58,7 +60,7 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService protected override async Task OnConnectedAsync() { _logger.LogInformation("News MQTT client connected. Subscribing to RPC topics..."); - + // ZUSAMMENGELEGT: Unified News Fetching (news_Get deckt news_GetDaily mit ab) await SubscribeAsync("services/request/news_Get/#"); await SubscribeAsync("services/request/news_GetById/#"); @@ -99,6 +101,7 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService { await OnConfigUpdatedAsync(payload); } + return; } @@ -112,7 +115,6 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService switch (channel) { case "news_Get": - case "news_GetDaily": // Abwärtskompatibel weitergeleitet await OnGetNewsAsync(payload, correlationId); break; @@ -153,40 +155,28 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService { try { - using var doc = JsonDocument.Parse(payload); - var root = doc.RootElement; - - if (root.TryGetProperty("limit", out var limitProp) && limitProp.TryGetInt32(out var parsedLimit)) limit = parsedLimit; - if (root.TryGetProperty("offset", out var offsetProp) && offsetProp.TryGetInt32(out var parsedOffset)) offset = parsedOffset; - - if (root.TryGetProperty("isin", out var isinProp) && isinProp.ValueKind == JsonValueKind.String) isin = isinProp.GetString(); - if (root.TryGetProperty("symbol", out var symProp) && symProp.ValueKind == JsonValueKind.String && string.IsNullOrEmpty(isin)) isin = symProp.GetString(); - - if (root.TryGetProperty("status", out var stProp) && stProp.ValueKind == JsonValueKind.String) status = stProp.GetString(); - if (root.TryGetProperty("query", out var qProp) && qProp.ValueKind == JsonValueKind.String) searchQuery = qProp.GetString(); - - if (root.TryGetProperty("date", out var dProp) && dProp.ValueKind == JsonValueKind.String) - { - var dStr = dProp.GetString(); - if (!string.IsNullOrWhiteSpace(dStr)) - { - if (string.Equals(dStr, "today", StringComparison.OrdinalIgnoreCase)) - date = DateTime.UtcNow.Date; - else if (DateTime.TryParse(dStr, out var parsedDate)) - date = parsedDate.Date; - } - } + // Direktes Deserialisieren über das DailyNewsRequest-DTO + var req = JsonSerializer.Deserialize(payload, FinlyticJsonSerializerContext.Default.DailyNewsRequest); - if (root.TryGetProperty("hasSentiment", out var hsProp)) + if (req != null) { - bool isTrue = hsProp.ValueKind == JsonValueKind.True || - (hsProp.ValueKind == JsonValueKind.String && bool.TryParse(hsProp.GetString(), out var b) && b); - if (isTrue && string.IsNullOrEmpty(status)) status = "Analyzed"; + limit = req.Limit > 0 ? req.Limit : 20; + offset = req.Offset >= 0 ? req.Offset : 0; + isin = !string.IsNullOrWhiteSpace(req.Isin) ? req.Isin : null; + status = req.Status; + searchQuery = req.Query; + date = req.Date; + + // Status anpassen, falls HasSentiment gesetzt ist + if (req.HasSentiment == true && string.IsNullOrEmpty(status)) + { + status = "Analyzed"; + } } } catch (Exception ex) { - _logger.LogWarning(ex, "Failed to parse RPC payload on news_Get"); + _logger.LogWarning(ex, "Failed to parse DailyNewsRequest payload on news_Get"); } } @@ -199,12 +189,23 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService var dtos = (await Task.WhenAll(articles.Select(a => MapToDtoAsync(a)))).ToList(); string responseTopic = $"services/response/news_Get/{correlationId}"; - _logger.LogInformation("Publishing RPC response to {ResponseTopic} with {Count} articles.", responseTopic, dtos.Count); + _logger.LogInformation("Publishing RPC response to {ResponseTopic} with {Count} articles.", responseTopic, + dtos.Count); await PublishAsync(responseTopic, dtos); } catch (Exception ex) { _logger.LogError(ex, "Failed to compile RPC response for news_Get"); + + // Antworte mit leerer Liste, um RPC-Timeouts im Gateway zu vermeiden + try + { + string responseTopic = $"services/response/news_Get/{correlationId}"; + await PublishAsync(responseTopic, new List()); + } + catch + { + } } } @@ -221,7 +222,9 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService try { - var request = JsonSerializer.Deserialize(payload, FinlyticJsonSerializerContext.Default.ArticleRequest); + var request = + JsonSerializer.Deserialize(payload, + FinlyticJsonSerializerContext.Default.ArticleRequest); var targetIdStr = request?.ArticleId ?? request?.Id; if (Guid.TryParse(targetIdStr, out var articleId)) @@ -256,12 +259,15 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService try { using var doc = JsonDocument.Parse(payload); - if (doc.RootElement.TryGetProperty("limit", out var limitProp) && limitProp.TryGetInt32(out var parsedLimit)) + if (doc.RootElement.TryGetProperty("limit", out var limitProp) && + limitProp.TryGetInt32(out var parsedLimit)) { limit = Math.Min(parsedLimit, 10); } } - catch { } + catch + { + } } try @@ -273,7 +279,8 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService var dtos = (await Task.WhenAll(pendingArticles.Take(limit).Select(a => MapToDtoAsync(a)))).ToList(); string responseTopic = $"services/response/news_GetPending/{correlationId}"; - _logger.LogInformation("Publishing RPC news_GetPending response to {ResponseTopic} with {Count} articles.", responseTopic, dtos.Count); + _logger.LogInformation("Publishing RPC news_GetPending response to {ResponseTopic} with {Count} articles.", + responseTopic, dtos.Count); await PublishAsync(responseTopic, dtos); } catch (Exception ex) @@ -289,7 +296,8 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService try { - var request = JsonSerializer.Deserialize(payload, FinlyticJsonSerializerContext.Default.UpdateNewsStatusRequest); + var request = JsonSerializer.Deserialize(payload, + FinlyticJsonSerializerContext.Default.UpdateNewsStatusRequest); if (request != null && request.Id != Guid.Empty) { using var scope = _scopeFactory.CreateScope(); @@ -345,8 +353,10 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService if (isForMe) { string respTopic = $"services/response/health_Ping/{correlationId}"; - await PublishAsync(respTopic, new ServiceHealthResponse("FinlyticNews", "Online", DateTime.UtcNow, "Connected")); - _logger.LogInformation("Responded to live health_Ping RPC request [CorrelationId: {CorrelationId}].", correlationId); + await PublishAsync(respTopic, + new ServiceHealthResponse("FinlyticNews", "Online", DateTime.UtcNow, "Connected")); + _logger.LogInformation("Responded to live health_Ping RPC request [CorrelationId: {CorrelationId}].", + correlationId); } } @@ -366,15 +376,19 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService IsinAnalysisEntry? sentimentEntry = null; // 1. Snappy Local Disk Check for Article File - var articlePath = Path.Combine(Directory.GetCurrentDirectory(), "data", "summaries", "articles", $"{targetId}.json"); + var articlePath = Path.Combine(Directory.GetCurrentDirectory(), "data", "summaries", "articles", + $"{targetId}.json"); if (File.Exists(articlePath)) { try { var json = await File.ReadAllTextAsync(articlePath); - sentimentEntry = JsonSerializer.Deserialize(json, FinlyticJsonSerializerContext.Default.IsinAnalysisEntry); + sentimentEntry = JsonSerializer.Deserialize(json, + FinlyticJsonSerializerContext.Default.IsinAnalysisEntry); + } + catch + { } - catch { } } // 2. ISIN Summary File Fallback @@ -383,16 +397,19 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService foreach (var asset in a.MatchedAssets) { if (string.IsNullOrWhiteSpace(asset.Isin)) continue; - var isinPath = Path.Combine(Directory.GetCurrentDirectory(), "data", "summaries", "isin", $"{asset.Isin.Trim()}.json"); + var isinPath = Path.Combine(Directory.GetCurrentDirectory(), "data", "summaries", "isin", + $"{asset.Isin.Trim()}.json"); if (File.Exists(isinPath)) { try { var json = await File.ReadAllTextAsync(isinPath); - var isinDoc = JsonSerializer.Deserialize(json, FinlyticJsonSerializerContext.Default.IsinSentimentSummaryDto); - var match = isinDoc?.Analyses?.FirstOrDefault(entry => - string.Equals(entry.Article?.ArticleId?.Trim(), targetId, StringComparison.OrdinalIgnoreCase)); + var isinDoc = JsonSerializer.Deserialize(json, + FinlyticJsonSerializerContext.Default.IsinSentimentSummaryDto); + var match = isinDoc?.Analyses?.FirstOrDefault(entry => + string.Equals(entry.Article?.ArticleId?.Trim(), targetId, + StringComparison.OrdinalIgnoreCase)); if (match != null) { @@ -400,7 +417,9 @@ public class NewsMqttClient : ManagedMqttClient, IHostedService break; } } - catch { } + catch + { + } } } } diff --git a/FinlyticNews/appsettings.json b/FinlyticNews/appsettings.json index 2e1dcb3..7c3a64f 100644 --- a/FinlyticNews/appsettings.json +++ b/FinlyticNews/appsettings.json @@ -14,9 +14,4 @@ "Port": 1883, "ClientId": "finlytic_news" }, - "ScrapingSettings": { - "IntervalMinutes": 15, - "AssetsIndexFilePath": "../FinlyticAssets/assets/index/index.json", - "N8nWebhookUrl": "http://localhost:5678/webhook/finlytic-news" - } } diff --git a/FinlyticSentiment/Util/SentimentMqttClient.cs b/FinlyticSentiment/Util/SentimentMqttClient.cs index 8c053c8..46b6b82 100644 --- a/FinlyticSentiment/Util/SentimentMqttClient.cs +++ b/FinlyticSentiment/Util/SentimentMqttClient.cs @@ -110,19 +110,19 @@ public class SentimentMqttClient : ManagedMqttClient, IHostedService var correlationId = topic.Substring(lastSlash + 1); // 2. Dispatch to specific channel handlers - if (topic.Contains("sentiment_GetArticle", StringComparison.OrdinalIgnoreCase)) + if (topic.StartsWith("services/request/sentiment_GetArticle", StringComparison.OrdinalIgnoreCase)) { await OnSentimentGetArticleAsync(payload, correlationId); } - else if (topic.Contains("sentiment_GetIsin", StringComparison.OrdinalIgnoreCase)) + else if (topic.StartsWith("services/request/sentiment_GetIsin", StringComparison.OrdinalIgnoreCase)) { await OnSentimentGetIsinAsync(payload, correlationId); } - else if (topic.Contains("sentiment_Analyze", StringComparison.OrdinalIgnoreCase)) + else if (topic.StartsWith("services/request/sentiment_Analyze", StringComparison.OrdinalIgnoreCase)) { await OnSentimentAnalyzeAsync(payload, correlationId); } - else if (topic.Contains("health_Ping", StringComparison.OrdinalIgnoreCase)) + else if (topic.StartsWith("services/request/health_Ping", StringComparison.OrdinalIgnoreCase)) { await OnHealthPingAsync(topic, correlationId); } diff --git a/FinlyticTechnicalAnalysis/Program.cs b/FinlyticTechnicalAnalysis/Program.cs index fa55554..913f883 100644 --- a/FinlyticTechnicalAnalysis/Program.cs +++ b/FinlyticTechnicalAnalysis/Program.cs @@ -1,5 +1,6 @@ using System; using FinlyticCore.Services.TradeRepublic; +using FinlyticCore.Services.Yahoo; using FinlyticTechnicalAnalysis.Database; using FinlyticTechnicalAnalysis.Services; using FinlyticTechnicalAnalysis.Util; @@ -31,6 +32,8 @@ builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); // Register MQTT Client (as a Hosted Service) builder.Services.AddHostedService(); diff --git a/FinlyticTechnicalAnalysis/Services/TechnicalAnalysisCalculator.cs b/FinlyticTechnicalAnalysis/Services/TechnicalAnalysisCalculator.cs index b10e544..9eab27d 100644 --- a/FinlyticTechnicalAnalysis/Services/TechnicalAnalysisCalculator.cs +++ b/FinlyticTechnicalAnalysis/Services/TechnicalAnalysisCalculator.cs @@ -90,7 +90,7 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator DetectStrategySignals(sortedCandles, sma50Values, sma200Values, rsiValues, signals); // 4. Detect Geometric Chart Patterns - DetectTrianglePatterns(sortedCandles, patterns, curSym); + DetectChartPatterns(sortedCandles, patterns, curSym); return (indicators, patterns, signals); } @@ -114,7 +114,6 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator { var candle = candles[i]; - // Golden Cross / Death Cross if (sma50[i - 1].HasValue && sma200[i - 1].HasValue && sma50[i].HasValue && sma200[i].HasValue) { if (sma50[i - 1]!.Value <= sma200[i - 1]!.Value && sma50[i]!.Value > sma200[i]!.Value) @@ -139,7 +138,6 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator } } - // RSI Oversold / Overbought Rebounds if (rsi14[i].HasValue && rsi14[i - 1].HasValue) { if (rsi14[i - 1]!.Value < 30 && rsi14[i]!.Value >= 30) @@ -166,7 +164,7 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator } } - private static void DetectTrianglePatterns(List sortedCandles, List patterns, string curSym) + private static void DetectChartPatterns(List sortedCandles, List patterns, string curSym) { if (sortedCandles.Count < 20) return; @@ -210,12 +208,20 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator return true; }).ToList(); + // Gruppierung nach Typ & Auswahl des Musters mit der höchsten Confidence var distinctPatterns = filteredPatterns .GroupBy(p => p.Type) .Select(g => g.OrderByDescending(p => p.ConfidencePercent ?? 0m).First()) .OrderByDescending(p => p.ConfidencePercent ?? 0m) .ToList(); + // Wenn ein starkes Reversal-Muster (z.B. DoubleTop mit 90%+ Confidence) existiert, + // entfeuern wir konkurrierende generische Dreiecks-Formationen im selben Zeitfenster. + if (distinctPatterns.Any(p => p.Type == "DoubleTop" && (p.ConfidencePercent ?? 0) > 90m)) + { + distinctPatterns.RemoveAll(p => p.Type == "SymmetricalTriangle"); + } + patterns.Clear(); patterns.AddRange(distinctPatterns); } @@ -316,12 +322,6 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator DateTime futureTime = slice.Last().Timestamp.AddDays(14); - double daysBetweenTiefs = (slice[idx2].Timestamp - slice[idx1].Timestamp).TotalDays; - if (daysBetweenTiefs <= 0) daysBetweenTiefs = 1; - double lowerSlope = (double)(low2 - low1) / daysBetweenTiefs; - double daysToFuture = (futureTime - slice[idx1].Timestamp).TotalDays; - decimal projectedLowerPrice = low1 + (decimal)(lowerSlope * daysToFuture); - patterns.Add(new ChartPatternDto( Type: "DoubleBottom", Description: $"Doppel-Tief (W-Muster): Bullische Bodenformation. Zwei Tiefs bei ~{avgLow:F2} {curSym} getestet. {status}", @@ -333,8 +333,7 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator LowerLine: new List { new(slice[idx1].Timestamp, low1), - new(slice[idx2].Timestamp, low2), - new(futureTime, projectedLowerPrice) + new(slice[idx2].Timestamp, low2) }, ApexTime: null, BreakoutSignal: new BreakoutSignalDto( @@ -411,20 +410,13 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator DateTime futureTime = slice.Last().Timestamp.AddDays(14); - double daysBetweenHighs = (slice[idx2].Timestamp - slice[idx1].Timestamp).TotalDays; - if (daysBetweenHighs <= 0) daysBetweenHighs = 1; - double upperSlope = (double)(high2 - high1) / daysBetweenHighs; - double daysToFuture = (futureTime - slice[idx1].Timestamp).TotalDays; - decimal projectedUpperPrice = high1 + (decimal)(upperSlope * daysToFuture); - patterns.Add(new ChartPatternDto( Type: "DoubleTop", Description: $"Doppel-Top (M-Muster): Bearische Umkehrformation. Widerstand bei ~{avgHigh:F2} {curSym} zweimal abgeprallt. {status}", UpperLine: new List { new(slice[idx1].Timestamp, high1), - new(slice[idx2].Timestamp, high2), - new(futureTime, projectedUpperPrice) + new(slice[idx2].Timestamp, high2) }, LowerLine: new List { @@ -502,20 +494,14 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator DateTime futureTime = slice.Last().Timestamp.AddDays(14); - double daysBetweenShoulders = (slice[rsIdx].Timestamp - slice[lsIdx].Timestamp).TotalDays; - if (daysBetweenShoulders <= 0) daysBetweenShoulders = 1; - double upperSlope = (double)(rs - ls) / daysBetweenShoulders; - double daysToFuture = (futureTime - slice[lsIdx].Timestamp).TotalDays; - decimal projectedUpperPrice = ls + (decimal)(upperSlope * daysToFuture); - patterns.Add(new ChartPatternDto( Type: "HeadAndShoulders", Description: $"Kopf-Schulter-Formation: Bearische Trendumkehr. Kopf bei {head:F2} {curSym}, Nackenlinie bei {neckline:F2} {curSym} (Trigger). {status}", UpperLine: new List { new(slice[lsIdx].Timestamp, ls), - new(slice[rsIdx].Timestamp, rs), - new(futureTime, projectedUpperPrice) + new(slice[headIdx].Timestamp, head), + new(slice[rsIdx].Timestamp, rs) }, LowerLine: new List { @@ -536,114 +522,149 @@ public class TechnicalAnalysisCalculator : ITechnicalAnalysisCalculator private static void DetectTrianglesInSlice(List slice, List patterns, string curSym) { - if (slice.Count < 10) return; + if (slice.Count < 15) return; - var startTime = slice[0].Timestamp; - var endTime = slice[^1].Timestamp; - var lastPrice = slice[^1].Close; - var maxRecentHigh = slice.Max(c => c.High); - var minRecentLow = slice.Min(c => c.Low); + int lookback = 2; + var pHighs = FindPivotHighs(slice, lookback); + var pLows = FindPivotLows(slice, lookback); - int third = slice.Count / 3; - var first = slice.Take(third).ToList(); - var last = slice.TakeLast(third).ToList(); + if (pHighs.Count < 2 || pLows.Count < 2) return; - decimal high1 = first.Max(c => c.High); - decimal high2 = last.Max(c => c.High); - decimal low1 = first.Min(c => c.Low); - decimal low2 = last.Min(c => c.Low); + // Nutze die letzten beiden Pivot-Highs und Pivot-Lows für exakte Geradengleichungen + int hIdx1 = pHighs[^2]; + int hIdx2 = pHighs[^1]; + int lIdx1 = pLows[^2]; + int lIdx2 = pLows[^1]; - decimal triangleBaseHeight = Math.Max(0.5m, high1 - low1); + // Verhindere zu nahe beieinander liegende Pivots + if (hIdx2 - hIdx1 < 3 || lIdx2 - lIdx1 < 3) return; - double totalDays = (endTime - startTime).TotalDays; - if (totalDays <= 0) totalDays = 10; + DateTime tH1 = slice[hIdx1].Timestamp; + DateTime tH2 = slice[hIdx2].Timestamp; + DateTime tL1 = slice[lIdx1].Timestamp; + DateTime tL2 = slice[lIdx2].Timestamp; - DateTime apexTime = endTime.AddDays(10); - double mUpper = (double)(high2 - high1) / totalDays; - double mLower = (double)(low2 - low1) / totalDays; + decimal yH1 = slice[hIdx1].High; + decimal yH2 = slice[hIdx2].High; + decimal yL1 = slice[lIdx1].Low; + decimal yL2 = slice[lIdx2].Low; - if (Math.Abs(mUpper - mLower) > 0.00001) + double daysH = (tH2 - tH1).TotalDays; + double daysL = (tL2 - tL1).TotalDays; + + if (daysH <= 0 || daysL <= 0) return; + + // Steigungen in €/Tag + double mUpper = (double)(yH2 - yH1) / daysH; + double mLower = (double)(yL2 - yL1) / daysL; + + var lastCandle = slice.Last(); + var lastClose = lastCandle.Close; + + // --- 1. Steigendes Dreieck (Ascending Triangle) --- + // Obere Linie ist nahezu flach (Widerstand), Untere Linie steigt + if (Math.Abs(mUpper) < 0.05 && mLower > 0.01) { - double daysToApex = (double)(low1 - high1) / (mUpper - mLower); - if (daysToApex > 0 && daysToApex < 120) + if (!patterns.Any(p => p.Type == "AscendingTriangle")) { - apexTime = startTime.AddDays(daysToApex); + decimal resistance = (yH1 + yH2) / 2m; + decimal baseHeight = resistance - yL1; + decimal targetPrice = resistance + baseHeight; + + // Schnittpunkt (Apex) berechnen: y = mLower * x + yL1 + double daysToApex = (double)(resistance - yL1) / mLower; + DateTime apexTime = tL1.AddDays(daysToApex); + + if (apexTime > lastCandle.Timestamp) + { + var pct = lastClose > 0m ? ((targetPrice - lastClose) / lastClose) * 100m : 0m; + var conf = Math.Round(Math.Max(70m, 93m - (Math.Abs(yH1 - yH2) / yH1) * 600m), 1); + + patterns.Add(new ChartPatternDto( + Type: "AscendingTriangle", + Description: $"Steigendes Dreieck: Flacher Widerstand bei {resistance:F2} {curSym} (Trigger) mit steigenden Tiefs — bullisches Konsolidierungsmuster.", + UpperLine: new List { new(tH1, resistance), new(apexTime, resistance) }, + LowerLine: new List { new(tL1, yL1), new(tL2, yL2), new(apexTime, resistance) }, + ApexTime: apexTime, + BreakoutSignal: new BreakoutSignalDto(Time: lastCandle.Timestamp, Direction: "BUY", TriggerPrice: resistance, TargetPrice: targetPrice, PotentialPercent: pct), + ConfidencePercent: conf)); + } } } - if (high2 >= high1 * 0.97m && high2 <= high1 * 1.03m && low2 > low1 * 1.01m) + // --- 2. Fallendes Dreieck (Descending Triangle) --- + // Untere Linie ist nahezu flach (Unterstützung), Obere Linie fällt + if (Math.Abs(mLower) < 0.05 && mUpper < -0.01) { - var resistance = (high1 + high2) / 2m; - var targetPrice = resistance + triangleBaseHeight; - - bool breakoutConfirmed = maxRecentHigh >= resistance * 1.01m; - bool isValid = maxRecentHigh < targetPrice && lastPrice >= low1 * 0.97m; - if (breakoutConfirmed && lastPrice < resistance) isValid = false; - - if (isValid && !patterns.Any(p => p.Type == "AscendingTriangle")) + if (!patterns.Any(p => p.Type == "DescendingTriangle")) { - var pct = lastPrice > 0m ? ((targetPrice - lastPrice) / lastPrice) * 100m : 0m; - var conf = Math.Round(Math.Max(70m, 93m - (Math.Abs(high1 - high2) / high1) * 600m), 1); + decimal support = (yL1 + yL2) / 2m; + decimal baseHeight = yH1 - support; + decimal targetPrice = Math.Max(0.01m, support - baseHeight); - patterns.Add(new ChartPatternDto( - Type: "AscendingTriangle", - Description: $"Steigendes Dreieck: Flacher Widerstand bei {resistance:F2} {curSym} (Trigger) mit steigenden Tiefs — bullisches Konsolidierungsmuster.", - UpperLine: new List { new(startTime, resistance), new(apexTime, resistance) }, - LowerLine: new List { new(startTime, low1), new(apexTime, resistance) }, - ApexTime: apexTime, - BreakoutSignal: new BreakoutSignalDto(Time: endTime, Direction: "BUY", TriggerPrice: resistance, TargetPrice: targetPrice, PotentialPercent: pct), - ConfidencePercent: conf)); + // Schnittpunkt (Apex) berechnen: y = mUpper * x + yH1 + double daysToApex = (double)(support - yH1) / mUpper; + DateTime apexTime = tH1.AddDays(daysToApex); + + if (apexTime > lastCandle.Timestamp) + { + var pct = lastClose > 0m ? ((lastClose - targetPrice) / lastClose) * 100m : 0m; + var conf = Math.Round(Math.Max(70m, 93m - (Math.Abs(yL1 - yL2) / yL1) * 600m), 1); + + patterns.Add(new ChartPatternDto( + Type: "DescendingTriangle", + Description: $"Fallendes Dreieck: Flache Unterstützung bei {support:F2} {curSym} (Trigger) mit fallenden Hochs — bearisches Konsolidierungsmuster.", + UpperLine: new List { new(tH1, yH1), new(tH2, yH2), new(apexTime, support) }, + LowerLine: new List { new(tL1, support), new(apexTime, support) }, + ApexTime: apexTime, + BreakoutSignal: new BreakoutSignalDto(Time: lastCandle.Timestamp, Direction: "SELL", TriggerPrice: support, TargetPrice: targetPrice, PotentialPercent: pct), + ConfidencePercent: conf)); + } } } - if (low2 >= low1 * 0.97m && low2 <= low1 * 1.03m && high2 < high1 * 0.99m) - { - var support = (low1 + low2) / 2m; - var targetPrice = Math.Max(0.01m, support - triangleBaseHeight); - - bool breakdownConfirmed = minRecentLow <= support * 0.99m; - bool isValid = minRecentLow > targetPrice && lastPrice <= high1 * 1.03m; - if (breakdownConfirmed && lastPrice > support) isValid = false; - - if (isValid && !patterns.Any(p => p.Type == "DescendingTriangle")) - { - var pct = lastPrice > 0m ? ((lastPrice - targetPrice) / lastPrice) * 100m : 0m; - var conf = Math.Round(Math.Max(70m, 93m - (Math.Abs(low1 - low2) / low1) * 600m), 1); - - patterns.Add(new ChartPatternDto( - Type: "DescendingTriangle", - Description: $"Fallendes Dreieck: Flache Unterstützung bei {support:F2} {curSym} (Trigger) mit fallenden Hochs — bearisches Konsolidierungsmuster.", - UpperLine: new List { new(startTime, high1), new(apexTime, support) }, - LowerLine: new List { new(startTime, support), new(apexTime, support) }, - ApexTime: apexTime, - BreakoutSignal: new BreakoutSignalDto(Time: endTime, Direction: "SELL", TriggerPrice: support, TargetPrice: targetPrice, PotentialPercent: pct), - ConfidencePercent: conf)); - } - } - - if (high2 < high1 * 0.99m && low2 > low1 * 1.01m) + // --- 3. Symmetrisches Dreieck (Symmetrical Triangle) --- + // Obere Linie fällt (mUpper < 0) UND Untere Linie steigt (mLower > 0) -> Konvergieren! + if (mUpper < -0.005 && mLower > 0.01) { if (!patterns.Any(p => p.Type == "SymmetricalTriangle")) { - var direction = lastPrice >= (high1 + low1) / 2m ? "BUY" : "SELL"; - var targetPrice = direction == "BUY" - ? lastPrice + triangleBaseHeight - : Math.Max(0.01m, lastPrice - triangleBaseHeight); + // Präzise Berechnung des Schnittpunkts zweier Geraden in der Ebene (t, y) + // y = mUpper * (t - tH1) + yH1 + // y = mLower * (t - tL1) + yL1 + double deltaDaysT1 = (tH1 - tL1).TotalDays; + double denominator = mUpper - mLower; - var pct = lastPrice > 0m - ? (direction == "BUY" ? ((targetPrice - lastPrice) / lastPrice) : ((lastPrice - targetPrice) / lastPrice)) * 100m - : 0m; + if (Math.Abs(denominator) > 0.0001) + { + double daysFromT1ToApex = ((double)(yL1 - yH1) + (mLower * deltaDaysT1)) / denominator; + DateTime apexTime = tH1.AddDays(daysFromT1ToApex); - decimal apexPrice = (high2 + low2) / 2m; + // Apex muss in der Zukunft liegen! + if (apexTime > lastCandle.Timestamp) + { + decimal apexPrice = yH1 + (decimal)(mUpper * daysFromT1ToApex); + decimal baseHeight = Math.Abs(yH1 - yL1); - patterns.Add(new ChartPatternDto( - Type: "SymmetricalTriangle", - Description: $"Symmetrisches Dreieck: Konvergierende Hochs und Tiefs — dynamischer Ausbruch in Trendrichtung erwartet.", - UpperLine: new List { new(startTime, high1), new(apexTime, apexPrice) }, - LowerLine: new List { new(startTime, low1), new(apexTime, apexPrice) }, - ApexTime: apexTime, - BreakoutSignal: new BreakoutSignalDto(Time: endTime, Direction: direction, TriggerPrice: lastPrice, TargetPrice: targetPrice, PotentialPercent: pct), - ConfidencePercent: 85m)); + var direction = lastClose >= (yH1 + yL1) / 2m ? "BUY" : "SELL"; + var targetPrice = direction == "BUY" + ? lastClose + baseHeight + : Math.Max(0.01m, lastClose - baseHeight); + + var pct = lastClose > 0m + ? (direction == "BUY" ? ((targetPrice - lastClose) / lastClose) : ((lastClose - targetPrice) / lastClose)) * 100m + : 0m; + + patterns.Add(new ChartPatternDto( + Type: "SymmetricalTriangle", + Description: $"Symmetrisches Dreieck: Konvergierende Hochs und Tiefs — dynamischer Ausbruch in Trendrichtung erwartet.", + UpperLine: new List { new(tH1, yH1), new(tH2, yH2), new(apexTime, apexPrice) }, + LowerLine: new List { new(tL1, yL1), new(tL2, yL2), new(apexTime, apexPrice) }, + ApexTime: apexTime, + BreakoutSignal: new BreakoutSignalDto(Time: lastCandle.Timestamp, Direction: direction, TriggerPrice: lastClose, TargetPrice: targetPrice, PotentialPercent: pct), + ConfidencePercent: 85m)); + } + } } } } diff --git a/FinlyticTechnicalAnalysis/Services/TechnicalAnalysisDbService.cs b/FinlyticTechnicalAnalysis/Services/TechnicalAnalysisDbService.cs index e4d4081..37b99d9 100644 --- a/FinlyticTechnicalAnalysis/Services/TechnicalAnalysisDbService.cs +++ b/FinlyticTechnicalAnalysis/Services/TechnicalAnalysisDbService.cs @@ -17,7 +17,9 @@ namespace FinlyticTechnicalAnalysis.Services; public interface ITechnicalAnalysisDbService { - Task GetAnalysisAsync(string isin, bool forceRefresh = false, CancellationToken cancellationToken = default); + Task GetAnalysisAsync(string isin, bool forceRefresh = false, string? ticker = null, + CancellationToken cancellationToken = default); + Task GetLivePriceAsync(string isin, CancellationToken cancellationToken = default); } @@ -29,10 +31,7 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService private readonly ITechnicalAnalysisCalculator _calculator; private readonly ILogger _logger; - // Cache Layer 1: In-Memory Candles Cache (TTL: 15 Minuten) private static readonly ConcurrentDictionary Candles, string Symbol, string Currency, DateTime FetchedAt)> _candleCache = new(); - - // Per-ISIN Semaphores zur Vermeidung von Cache-Stampedes private static readonly ConcurrentDictionary _perIsinLocks = new(); private static readonly TimeSpan CandleCacheTtl = TimeSpan.FromMinutes(15); private static readonly TimeSpan DbCacheTtl = TimeSpan.FromHours(1); @@ -51,26 +50,30 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService _logger = logger; } - public async Task GetAnalysisAsync(string isin, bool forceRefresh = false, CancellationToken cancellationToken = default) + public async Task GetAnalysisAsync(string isin, bool forceRefresh = false, string? ticker = null, + CancellationToken cancellationToken = default) { if (string.IsNullOrWhiteSpace(isin)) return null; var cleanIsin = isin.Trim().ToUpperInvariant(); // 1. Layer-1: Fast-Path aus In-Memory Cache (wenn kein forceRefresh) - if (!forceRefresh && _candleCache.TryGetValue(cleanIsin, out var ramEntry) && DateTime.UtcNow - ramEntry.FetchedAt < CandleCacheTtl) + if (!forceRefresh && _candleCache.TryGetValue(cleanIsin, out var ramEntry) && + DateTime.UtcNow - ramEntry.FetchedAt < CandleCacheTtl && + (string.IsNullOrWhiteSpace(ticker) || string.Equals(ramEntry.Symbol, ticker, StringComparison.OrdinalIgnoreCase))) { _logger.LogDebug("[{Channel}] RAM-Cache Hit for ISIN {Isin}. Merging live price...", "TechnicalAnalysisChannel", cleanIsin); return await BuildAnalysisWithLivePriceAsync(cleanIsin, ramEntry.Candles, ramEntry.Symbol, ramEntry.Currency, cancellationToken); } - // Semaphor für ISIN holen (verhindert doppelte parallele Abfragen der gleichen ISIN) var semaphore = _perIsinLocks.GetOrAdd(cleanIsin, _ => new SemaphoreSlim(1, 1)); await semaphore.WaitAsync(cancellationToken); try { // Re-Check nach Lock-Erhalt - if (!forceRefresh && _candleCache.TryGetValue(cleanIsin, out ramEntry) && DateTime.UtcNow - ramEntry.FetchedAt < CandleCacheTtl) + if (!forceRefresh && _candleCache.TryGetValue(cleanIsin, out ramEntry) && + DateTime.UtcNow - ramEntry.FetchedAt < CandleCacheTtl && + (string.IsNullOrWhiteSpace(ticker) || string.Equals(ramEntry.Symbol, ticker, StringComparison.OrdinalIgnoreCase))) { return await BuildAnalysisWithLivePriceAsync(cleanIsin, ramEntry.Candles, ramEntry.Symbol, ramEntry.Currency, cancellationToken); } @@ -78,7 +81,7 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService // 2. Layer-2: Prüfen ob frische Daten in der Datenbank liegen if (!forceRefresh) { - var dbDto = await GetFromDbCacheAsync(cleanIsin, cancellationToken); + var dbDto = await GetFromDbCacheAsync(cleanIsin, ticker, cancellationToken); if (dbDto != null) { _logger.LogDebug("[{Channel}] DB-Cache Hit for ISIN {Isin}.", "TechnicalAnalysisChannel", cleanIsin); @@ -86,13 +89,11 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService } } - // 3. Cache Miss / ForceRefresh: Vollständige Neuberechnung - return await FullRefreshAsync(cleanIsin, cancellationToken); + return await FullRefreshAsync(cleanIsin, ticker, cancellationToken); } finally { semaphore.Release(); - // Speicher aufräumen, falls Lock nicht mehr genutzt wird if (semaphore.CurrentCount == 1) { _perIsinLocks.TryRemove(cleanIsin, out _); @@ -105,38 +106,41 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService if (string.IsNullOrWhiteSpace(isin)) return null; var cleanIsin = isin.Trim().ToUpperInvariant(); - var (livePrice, liveBid, liveAsk) = await FetchLivePriceAsync(cleanIsin, cancellationToken); + var (livePrice, liveBid, liveAsk, preChange) = await FetchLivePriceAsync(cleanIsin, cancellationToken); if (!livePrice.HasValue) return null; return new LivePriceDto( cleanIsin, Math.Round(livePrice.Value, 2), - 0m, // Percent change optional + preChange ?? 0m, liveBid.HasValue ? Math.Round(liveBid.Value, 2) : null, liveAsk.HasValue ? Math.Round(liveAsk.Value, 2) : null ); } - private async Task FullRefreshAsync(string cleanIsin, CancellationToken cancellationToken) + private async Task FullRefreshAsync(string cleanIsin, string? requestedTicker, CancellationToken cancellationToken) { - _logger.LogInformation("[{Channel}] Full refresh for ISIN {Isin}", "TechnicalAnalysisChannel", cleanIsin); + _logger.LogInformation("[{Channel}] Full refresh for ISIN {Isin} (RequestedTicker: {Ticker})", "TechnicalAnalysisChannel", cleanIsin, requestedTicker ?? "None"); - var tickerTask = _yahooScraper.ResolveTickerFromIsinAsync(cleanIsin, cancellationToken); var macroTask = FetchMacroDataAsync(cancellationToken); + + string? ticker = requestedTicker; + if (string.IsNullOrWhiteSpace(ticker)) + { + ticker = await _yahooScraper.ResolveTickerFromIsinAsync(cleanIsin, cancellationToken); + } - await Task.WhenAll(tickerTask, macroTask); - - var ticker = await tickerTask; var querySymbol = !string.IsNullOrEmpty(ticker) ? ticker : cleanIsin; var (vix, gspc, dxy) = await macroTask; - var yahooResult = await _yahooScraper.FetchHistoricalCandlesWithCurrencyAsync(querySymbol, "1y", "1d", cancellationToken); + // Lade 2y Daten für saubere Indikator-Aufwärmphasen + var yahooResult = await _yahooScraper.FetchHistoricalCandlesWithCurrencyAsync(querySymbol, "2y", "1d", cancellationToken); var candles = yahooResult.Candles; var currency = yahooResult.Currency; if (candles.Count == 0 && querySymbol != cleanIsin) { - yahooResult = await _yahooScraper.FetchHistoricalCandlesWithCurrencyAsync(cleanIsin, "1y", "1d", cancellationToken); + yahooResult = await _yahooScraper.FetchHistoricalCandlesWithCurrencyAsync(cleanIsin, "2y", "1d", cancellationToken); candles = yahooResult.Candles; currency = yahooResult.Currency; } @@ -147,67 +151,60 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService return null; } - // In RAM-Cache sichern _candleCache[cleanIsin] = (candles.Select(CloneCandle).ToList(), querySymbol, currency, DateTime.UtcNow); - // Live-Preis einpflegen - await MergeLivePriceAsync(cleanIsin, candles, querySymbol, cancellationToken); + await MergeLivePriceAsync(cleanIsin, candles, querySymbol, currency, cancellationToken); var resultDto = BuildDto(cleanIsin, querySymbol, currency, candles, vix, gspc, dxy); - // Synchron und sicher in DB persistieren await PersistToDbCacheAsync(cleanIsin, querySymbol, resultDto, cancellationToken); return resultDto; } private async Task BuildAnalysisWithLivePriceAsync( - string cleanIsin, List cachedCandles, string querySymbol, string currency, CancellationToken cancellationToken) + string cleanIsin, List cachedCandles, string querySymbol, string currency, + CancellationToken cancellationToken) { var candles = cachedCandles.Select(CloneCandle).ToList(); var livePriceTask = FetchLivePriceAsync(cleanIsin, cancellationToken); var macroTask = FetchMacroDataAsync(cancellationToken); + await Task.WhenAll(livePriceTask, macroTask); - var (livePrice, liveBid, liveAsk) = await livePriceTask; + var (livePrice, liveBid, liveAsk, preChange) = await livePriceTask; // Task-Result direkt nutzen var (vix, gspc, dxy) = await macroTask; - if (livePrice.HasValue && livePrice.Value > 0m) - { - var today = DateTime.UtcNow.Date; - var lastCandle = candles.LastOrDefault(c => c.Timestamp.Date == today); - if (lastCandle != null) - { - lastCandle.Close = livePrice.Value; - lastCandle.High = Math.Max(lastCandle.High, livePrice.Value); - lastCandle.Low = Math.Min(lastCandle.Low, livePrice.Value); - if (liveBid.HasValue) lastCandle.Bid = liveBid.Value; - if (liveAsk.HasValue) lastCandle.Ask = liveAsk.Value; - } - else - { - var prevClose = candles.LastOrDefault()?.Close ?? livePrice.Value; - candles.Add(new MarketCandleEntity - { - Symbol = querySymbol, Interval = "1d", Timestamp = today, - Open = prevClose, High = Math.Max(prevClose, livePrice.Value), - Low = Math.Min(prevClose, livePrice.Value), Close = livePrice.Value, - Volume = 1000, Bid = liveBid, Ask = liveAsk - }); - } - } + ApplyLivePriceToCandles(cleanIsin, candles, querySymbol, currency, livePrice, liveBid, liveAsk); return BuildDto(cleanIsin, querySymbol, currency, candles, vix, gspc, dxy); } - private async Task MergeLivePriceAsync(string cleanIsin, List candles, string querySymbol, CancellationToken cancellationToken) + private async Task MergeLivePriceAsync(string cleanIsin, List candles, string querySymbol, string currency, + CancellationToken cancellationToken) + { + var (livePrice, liveBid, liveAsk, _) = await FetchLivePriceAsync(cleanIsin, cancellationToken); + ApplyLivePriceToCandles(cleanIsin, candles, querySymbol, currency, livePrice, liveBid, liveAsk); + } + + private void ApplyLivePriceToCandles( + string cleanIsin, List candles, string querySymbol, string candleCurrency, + decimal? livePrice, decimal? liveBid, decimal? liveAsk) { - var (livePrice, liveBid, liveAsk) = await FetchLivePriceAsync(cleanIsin, cancellationToken); if (!livePrice.HasValue || livePrice.Value <= 0m) return; + // Währungsschutz: Trade Republic liefert IMMER EUR. + // Wenn die Kerzenhistorie USD ist (z.B. AAPL), darf der EUR-Livepreis NICHT direkt injiziert werden! + if (candleCurrency.Equals("USD", StringComparison.OrdinalIgnoreCase) && !cleanIsin.StartsWith("DE") && !cleanIsin.StartsWith("AT")) + { + _logger.LogDebug("[{Channel}] Skipping direct EUR live price injection for USD asset {Isin}", "TechnicalAnalysisChannel", cleanIsin); + return; + } + var today = DateTime.UtcNow.Date; - var lastCandle = candles.LastOrDefault(c => c.Timestamp.Date == today); + var lastCandle = candles.LastOrDefault(c => c.Timestamp.Date == today) ?? candles.LastOrDefault(); + if (lastCandle != null) { lastCandle.Close = livePrice.Value; @@ -216,39 +213,42 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService if (liveBid.HasValue) lastCandle.Bid = liveBid.Value; if (liveAsk.HasValue) lastCandle.Ask = liveAsk.Value; } - else - { - var prevClose = candles.LastOrDefault()?.Close ?? livePrice.Value; - candles.Add(new MarketCandleEntity - { - Symbol = querySymbol, Interval = "1d", Timestamp = today, - Open = prevClose, High = Math.Max(prevClose, livePrice.Value), - Low = Math.Min(prevClose, livePrice.Value), Close = livePrice.Value, - Volume = 1000, Bid = liveBid, Ask = liveAsk - }); - } } - private async Task<(decimal? livePrice, decimal? liveBid, decimal? liveAsk)> FetchLivePriceAsync(string cleanIsin, CancellationToken cancellationToken) + private async Task<(decimal? livePrice, decimal? liveBid, decimal? liveAsk, decimal? preChange)> FetchLivePriceAsync( + string cleanIsin, CancellationToken cancellationToken) { decimal? livePrice = null; decimal? liveBid = null; decimal? liveAsk = null; - + decimal? preChange = null; + try { using var cts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); - cts.CancelAfter(1500); // Maximal 1.5 Sekunden Wartezeit auf Ticker + cts.CancelAfter(1500); var trTask = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - + int? subId = await _trService.SubscribeRealtimeTickerAsync(cleanIsin, tick => { - if (tick.Last != null && tick.Last.PriceValue > 0m) + decimal? effectivePrice = tick.Bid?.PriceValue > 0m + ? tick.Bid.PriceValue + : (tick.Last?.PriceValue > 0m ? tick.Last.PriceValue : null); + + if (effectivePrice.HasValue) { - livePrice = tick.Last.PriceValue; + livePrice = tick.Last?.PriceValue ?? effectivePrice.Value; liveBid = tick.Bid?.PriceValue; liveAsk = tick.Ask?.PriceValue; + + decimal prePrice = tick.Pre?.PriceValue ?? 0m; + + if (prePrice > 0m) + { + preChange = Math.Round(((effectivePrice.Value - prePrice) / prePrice) * 100m, 2); + } + trTask.TrySetResult(true); } }, cts.Token); @@ -260,7 +260,7 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService await trTask.Task.WaitAsync(cts.Token); } catch (OperationCanceledException) { } - + await _trService.UnsubscribeRealtimeTickerAsync(subId.Value); } } @@ -269,10 +269,11 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService _logger.LogWarning(ex, "[{Channel}] Real-time price fetch skipped for ISIN {Isin}", "TechnicalAnalysisChannel", cleanIsin); } - return (livePrice, liveBid, liveAsk); + return (livePrice, liveBid, liveAsk, preChange); } - private async Task<(MacroDataEntity vix, MacroDataEntity gspc, MacroDataEntity dxy)> FetchMacroDataAsync(CancellationToken cancellationToken) + private async Task<(MacroDataEntity vix, MacroDataEntity gspc, MacroDataEntity dxy)> FetchMacroDataAsync( + CancellationToken cancellationToken) { var vixTask = _yahooScraper.FetchMacroTickerAsync("^VIX", cancellationToken); var gspcTask = _yahooScraper.FetchMacroTickerAsync("^GSPC", cancellationToken); @@ -287,7 +288,8 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService return (vix, gspc, dxy); } - private TechnicalAnalysisDto BuildDto(string cleanIsin, string querySymbol, string currency, List candles, MacroDataEntity vix, MacroDataEntity gspc, MacroDataEntity dxy) + private TechnicalAnalysisDto BuildDto(string cleanIsin, string querySymbol, string currency, + List candles, MacroDataEntity vix, MacroDataEntity gspc, MacroDataEntity dxy) { var vixRegime = vix.Value > 25m ? "HighVolatility" : (vix.Value > 18m ? "Moderate" : "LowVolatility"); var summaryText = $"Markt-Vola (VIX: {vix.Value:F1}) ist {vixRegime}. S&P 500 Trend ist {gspc.TrendState}. DXY: {dxy.Value:F1}."; @@ -312,7 +314,7 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService MarketRegime: marketRegime, Currency: currency); } - private async Task GetFromDbCacheAsync(string cleanIsin, CancellationToken cancellationToken) + private async Task GetFromDbCacheAsync(string cleanIsin, string? requestedTicker, CancellationToken cancellationToken) { try { @@ -324,6 +326,10 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService if (cached != null && DateTime.UtcNow - cached.CalculatedAt < DbCacheTtl) { + if (!string.IsNullOrWhiteSpace(requestedTicker) && !string.Equals(cached.Ticker, requestedTicker, StringComparison.OrdinalIgnoreCase)) + { + return null; // Ticker mismatch, force refresh required + } return JsonSerializer.Deserialize(cached.AnalysisJson); } } @@ -335,7 +341,8 @@ public class TechnicalAnalysisDbService : ITechnicalAnalysisDbService return null; } - private async Task PersistToDbCacheAsync(string cleanIsin, string querySymbol, TechnicalAnalysisDto dto, CancellationToken cancellationToken) + private async Task PersistToDbCacheAsync(string cleanIsin, string querySymbol, TechnicalAnalysisDto dto, + CancellationToken cancellationToken) { try { diff --git a/FinlyticTechnicalAnalysis/Util/TAMqttClient.cs b/FinlyticTechnicalAnalysis/Util/TAMqttClient.cs index 45abfab..e67b438 100644 --- a/FinlyticTechnicalAnalysis/Util/TAMqttClient.cs +++ b/FinlyticTechnicalAnalysis/Util/TAMqttClient.cs @@ -143,7 +143,7 @@ public class TAMqttClient( using var scope = scopeFactory.CreateScope(); var taDbService = scope.ServiceProvider.GetRequiredService(); - var analysis = await taDbService.GetAnalysisAsync(req.Isin, req.ForceRefresh); + var analysis = await taDbService.GetAnalysisAsync(req.Isin, req.ForceRefresh, req.Ticker); logger.LogInformation("[{Channel}] Publishing RPC response to {ResponseTopic}", "TechnicalAnalysisChannel", responseTopic); await PublishAsync(responseTopic, analysis); diff --git a/compose.yaml b/compose.yaml index 595f0ae..29be953 100644 --- a/compose.yaml +++ b/compose.yaml @@ -129,6 +129,7 @@ services: - Services__TradesServiceUrl=http://finlytictrades:8080/api/v1/trades/active volumes: - C:\Users\larsh\Documents\docker\finlytic\assets\index:/app/assets/index + - C:\Users\larsh\Documents\docker\finlytic\assets\logos:/app/assets/logos networks: postgres-network: external: true