Skip to content

feat(Browser): remove browser error from check 360se#7852

Merged
ArgoZhang merged 1 commit intomainfrom
feat-browser
Apr 7, 2026
Merged

feat(Browser): remove browser error from check 360se#7852
ArgoZhang merged 1 commit intomainfrom
feat-browser

Conversation

@ArgoZhang
Copy link
Copy Markdown
Member

@ArgoZhang ArgoZhang commented Apr 7, 2026

Link issues

fixes #7851

Summary By Copilot

Regression?

  • Yes
  • No

Risk

  • High
  • Medium
  • Low

Verification

  • Manual (required)
  • Automated

Packaging changes reviewed?

  • Yes
  • No
  • N/A

☑️ Self Check before Merge

⚠️ Please check all items below before review. ⚠️

  • Doc is updated/provided or not needed
  • Demo is updated/provided or not needed
  • Merge the latest code from the main branch

Summary by Sourcery

Update the browser detection module to adjust handling of 360SE browser checks and refresh bundled metadata.

Bug Fixes:

  • Prevent erroneous 360SE browser detection that could trigger runtime errors when checking for 360SE-specific extensions.

Enhancements:

  • Refresh the embedded browser detection library in the minified browser module with the latest upstream changes, including updated creation metadata.

Copilot AI review requested due to automatic review settings April 7, 2026 04:12
@bb-auto bb-auto bot added the enhancement New feature or request label Apr 7, 2026
@bb-auto bb-auto bot added this to the v10.5.0 milestone Apr 7, 2026
@sourcery-ai
Copy link
Copy Markdown
Contributor

sourcery-ai bot commented Apr 7, 2026

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Updates the bundled browser detection module to a newer upstream version and simplifies 360 Secure Browser (360SE) detection logic to avoid triggering errors, while keeping the public API (export default) compatible.

Sequence diagram for updated 360SE detection flow

sequenceDiagram
    participant App
    participant BrowserModule
    participant Detector360SE

    App->>BrowserModule: getInfo()
    activate BrowserModule

    BrowserModule->>Detector360SE: is()
    activate Detector360SE
    Detector360SE-->>BrowserModule: Promise(false)
    deactivate Detector360SE

    BrowserModule-->>App: Resolved browser info
    deactivate BrowserModule
Loading

Class diagram for updated browser detection module

classDiagram
    class BrowserModule {
      +parse(userAgent)
      +getInfo(sections)
      +getFingerprint(features)
      +isSupport(featureName, option)
    }

    class BrowserDetector {
      +name
      +parse(userAgent)
      +is() Promise_bool
      +version() Promise_string
    }

    class SystemDetector {
      +name
      +parse(userAgent)
      +is() Promise_bool
      +version() Promise_string
    }

    class DeviceDetector {
      +name
      +parse(userAgent)
      +is() Promise_bool
    }

    class FeatureProvider {
      +name
      +parse(userAgent)
      +getInfo() Promise_object
    }

    class Detector360SE {
      +name
      +parse(userAgent)
      +is() Promise_bool
    }

    BrowserModule --> BrowserDetector : uses
    BrowserModule --> SystemDetector : uses
    BrowserModule --> DeviceDetector : uses
    BrowserModule --> FeatureProvider : uses

    BrowserDetector <|-- Detector360SE
Loading

File-Level Changes

Change Details Files
Update metadata header and replace the bundled browser.min.mjs implementation with a newer upstream build that includes revised browser/OS/app detection and fingerprinting logic.
  • Bump the header Created on date comment from 2025-10-30 to 2026-04-07 to reflect the new build.
  • Replace the previous minified implementation of the browser detection library with a newer upstream minified build while preserving the export default shape (Xeon).
  • Carry over and expand detection tables for browsers, systems, apps, bots, and engines (e.g., adding TikTok/Telegram/Instagram/X/Snapchat entries and refining Windows/iOS detection using navigator.userAgentData).
  • Adjust various helper functions and constants names due to re-minification (e.g., renaming helper vars/functions, but keeping equivalent behavior).
src/BootstrapBlazor/wwwroot/modules/browser.min.mjs
Modify 360 Secure Browser (360SE) detection logic so it no longer performs extension-based probing that could cause runtime errors, instead short-circuiting to a safe false value when ambiguous.
  • Change the Vivaldi.is implementation to always resolve false when major competing Chromium-based browser detections are present, instead of attempting extension URL fetches.
  • Change the 360SE.is async function to return false immediately (wrapped in a resolved Promise) when other browser detections indicate a conflicting browser, removing Promise.any extension fetches that previously attempted to access 360-specific Chrome extensions and could error.
  • Retain 360-related UA parsing and mime-type heuristics (360, 360SE, 360EE, 360ENT, 360AI) so user-agent-based detection still works where safe, but skip risky network/extension probing paths specifically for 360SE.
src/BootstrapBlazor/wwwroot/modules/browser.min.mjs

Assessment against linked issues

Issue Objective Addressed Explanation
#7851 Modify the 360SE browser detection logic to remove the browser error (likely caused by the previous extension-based check) when checking for 360SE.

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@ArgoZhang ArgoZhang merged commit d281dc4 into main Apr 7, 2026
5 checks passed
@ArgoZhang ArgoZhang deleted the feat-browser branch April 7, 2026 04:13
@ArgoZhang ArgoZhang restored the feat-browser branch April 7, 2026 04:13
Copy link
Copy Markdown
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • The module now appears to contain two complete, separate minified implementations (duplicate let e={}; and re‑declared symbols, two export default blocks, etc.); this will either fail to load or execute only the last block—please ensure only the intended single version of the browser module remains in the file.
  • Several identifiers from the first implementation (e.g. helper functions and browser lists) are shadowed or redefined in the second block; even if bundling succeeds this will change runtime behavior in non-obvious ways—please confirm which behavior is desired and remove or reconcile the obsolete definitions.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The module now appears to contain two complete, separate minified implementations (duplicate `let e={};` and re‑declared symbols, two `export default` blocks, etc.); this will either fail to load or execute only the last block—please ensure only the intended single version of the browser module remains in the file.
- Several identifiers from the first implementation (e.g. helper functions and browser lists) are shadowed or redefined in the second block; even if bundling succeeds this will change runtime behavior in non-obvious ways—please confirm which behavior is desired and remove or reconcile the obsolete definitions.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@ArgoZhang ArgoZhang deleted the feat-browser branch April 7, 2026 04:15
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (6519f31) to head (16ad8eb).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #7852   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          764       764           
  Lines        34175     34175           
  Branches      4705      4705           
=========================================
  Hits         34175     34175           
Flag Coverage Δ
BB 100.00% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the vendored browser-tool module used by BootstrapBlazor’s client-side environment detection, with the stated goal of removing browser errors triggered by 360SE detection.

Changes:

  • Updated src/BootstrapBlazor/wwwroot/modules/browser.min.mjs implementation (including removal of extension-fetch based detection paths).
  • Updated the module header “Created on” timestamp.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

* Created on: 2026-04-07
*/
let e={};"undefined"!=typeof globalThis?e=globalThis:"undefined"!=typeof self?e=self:"undefined"!=typeof window?e=window:"undefined"!=typeof global&&(e=global);var n,r=e,i=null==r||null===(n=r.navigator)||void 0===n?void 0:n.userAgent,a={name:"Safari",parse(e=i){var n;return{is:e.includes("Safari"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},o={name:"Chrome",parse(e=i){var n,r;return{is:e.includes("Chrome")||e.includes("CriOS"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/CriOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["uaFullVersion"])).uaFullVersion||""}return this.parse().version}},t={name:"Edge",parse(e=i){var n,r,a,o;return{is:e.includes("Edge")||e.includes("Edg/")||e.includes("EdgA")||e.includes("EdgiOS"),version:(null===(n=e.match(/Edge\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Edg\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/EdgA\/([\d.]+)/))||void 0===a?void 0:a[1])||(null===(o=e.match(/EdgiOS\/([\d.]+)/))||void 0===o?void 0:o[1])||""}},async version(){return await o.version.bind(this)()}},s={name:"IE",parse(e=i){var n,r;return{is:e.includes("MSIE")||e.includes("Trident"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},l={name:"Firefox",parse(e=i){var n,r;return{is:e.includes("Firefox")||e.includes("FxiOS"),version:(null===(n=e.match(/Firefox\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/FxiOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},d={name:"Firefox Focus",parse(e=i){var n;return{is:e.includes("Focus"),version:(null===(n=e.match(/Focus\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},u={name:"Chromium",parse(e=i){var n;return{is:e.includes("Chromium"),version:(null===(n=e.match(/Chromium\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},c={name:"Opera",parse(e=i){var n,r;return{is:e.includes("Opera")||e.includes("OPR"),version:(null===(n=e.match(/Opera\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OPR\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},v={name:"Opera GX",parse(e=i){var n;let r=!1;return c.parse(e).is?r=e.includes("Edition GX"):e.includes("OPX/")&&(r=!0),{is:r,version:c.parse(e).version||(null===(n=e.match(/OPX\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},m={name:"Vivaldi",parse(e=i){var n,r;return{is:e.includes("Vivaldi"),version:(null===(n=e.match(/Vivaldi\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Chrome\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;return new Promise((function(n){e||l.parse().is||t.parse().is||c.parse().is?n(!1):fetch("chrome-extension://jffbochibkahlbbmanpmndnhmeliecah/config.json").then((function(){n(!0)})).catch((function(){n(!1)}))}))},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["brands"])).brands.find((e=>"Vivaldi"==e.brand)).version||""}return this.parse().version}},p={name:"Yandex",parse(e=i){var n;return{is:e.includes("YaBrowser"),version:(null===(n=e.match(/YaBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},h={name:"Brave",parse(e=i){var n;return{is:e.includes("Brave"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},is:async function(){var e;return!!(this.parse().is||null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.brave)}},g={name:"Arora",parse(e=i){var n;return{is:e.includes("Arora"),version:(null===(n=e.match(/Arora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},f={name:"Lunascape",parse(e=i){var n;return{is:e.includes("Lunascape"),version:(null===(n=e.match(/Lunascape[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},w={name:"QupZilla",parse(e=i){var n;return{is:e.includes("QupZilla"),version:(null===(n=e.match(/QupZilla[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},b={name:"Coc Coc",parse(e=i){var n;return{is:e.includes("coc_coc_browser"),version:(null===(n=e.match(/coc_coc_browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},S={name:"Kindle",parse(e=i){var n;return{is:e.includes("Kindle")||e.includes("Silk/"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},y={name:"Iceweasel",parse(e=i){var n;return{is:e.includes("Iceweasel"),version:(null===(n=e.match(/Iceweasel\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},A={name:"Konqueror",parse(e=i){var n;return{is:e.includes("Konqueror"),version:(null===(n=e.match(/Konqueror\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},B={name:"SeaMonkey",parse(e=i){var n;return{is:e.includes("SeaMonkey"),version:(null===(n=e.match(/SeaMonkey\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},C={name:"Epiphany",parse(e=i){var n;return{is:e.includes("Epiphany"),version:(null===(n=e.match(/Epiphany\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},E={name:"Whale",parse(e=i){var n;return{is:e.includes("Whale/"),version:(null===(n=e.match(/Whale\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};function x(e,n){var i;let a=null==r||null===(i=r.navigator)||void 0===i?void 0:i.mimeTypes;for(let r in a)if(a[r][e]&&a[r][e]==n)return a[r];return null}var P={name:"360",parse(e=i){var n,r;return{is:e.includes("QihooBrowser")||e.includes("QHBrowser")||e.includes(" 360 "),version:(null===(n=e.match(/QihooBrowser(HD)?\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Browser \(v([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;if(null!=r&&r.chrome){let n=parseInt(o.parse().version);x("type","application/360softmgrplugin")||x("type","application/mozilla-npqihooquicklogin")||x("type","application/npjlgplayer3-chrome-jlp")||n>36&&null!=r&&r.showModalDialog?e=!0:n>45&&(e=x("type","application/vnd.chromium.remoting-viewer"),!e&&n>=69&&(e=x("type","application/asx")))}return e}},T={name:"360SE",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SE"),version:{132:"16.0",122:"15.3",114:"15.0",108:"14.0",86:"13.0",78:"12.0",69:"11.0",63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[n]||""}},async is(){let e=!1;var n;await P.is()&&((x("type","application/gameplugin")||null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length)&&(e=!0));return e||l.parse().is||t.parse().is||c.parse().is?e:new Promise((function(e){Promise.any([fetch("chrome-extension://fjbbmgamncjadhlpmffehlmmkdnkiadk/css/content.css"),fetch("chrome-extension://fjbbmgamncjadhlpmffehlmmkdnkiadk/css/bangs.css")]).then((function(){e(!0)})).catch((function(){e(!1)}))}))}},I={name:"360EE",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360EE"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{122:"22.3",119:"22.0",108:"14.0",95:"21.0",86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}},async is(){let e=this.parse().is;if(x("type","application/cenroll.cenroll.version.1")||x("type","application/hwepass2001.installepass2001"))e=!0;else if(await P.is()){var n;null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.find((e=>"Not A(Brand"==e.brand||"Not?A_Brand"==e.brand))&&(e=!0)}return e}},O={name:"360AI",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SEAI"),version:{114:"1.0"}[n]||""}},async is(){let e=this.parse().is;var n;await P.is()&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length&&!x("type","application/gameplugin")&&(e=!0));return e}},M={name:"360AI",parse(e=i){var n;return{is:e.includes("360EEAI"),version:(null===(n=e.match(/360EE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};const D=()=>new Promise((e=>{var n;if(null==r||null===(n=r.webkit)||void 0===n||null===(n=n.messageHandlers)||void 0===n||!n.excuteCmd)return e({});{const n=`cv_${Date.now()%1e5}${100*Math.floor(Math.random())}`,i={key:"GetDeviceInfo",data:{},callback:n},a=JSON.stringify(i);r.webkit.messageHandlers.excuteCmd.postMessage(a),r[n]=function(i){delete r[n],e(JSON.parse(i||"{}"))}}}));var k={name:"360EE",parse:()=>({is:!1,version:""}),is:async()=>D().then((function(e){return"360csexm"==(null==e?void 0:e.pid)||!1})),version:async()=>D().then((function(e){return(null==e?void 0:e.module_version)||""}))},W={name:"360ENT",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360ENT"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}}},R={name:"UC",parse(e=i){var n;return{is:e.includes("UCBrowser")||e.includes(" UBrowser")||e.includes("UCWEB"),version:(null===(n=e.match(/UC?Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},V={name:"QQBrowser",parse(e=i){var n;return{is:e.includes("QQBrowser"),version:(null===(n=e.match(/QQBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},H={name:"BaiduBrowser",parse(e=i){var n;return{is:e.includes("BIDUBrowser")||e.includes("baidubrowser"),version:(null===(n=e.match(/BIDUBrowser[\s\/]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},L={name:"Maxthon",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("Maxthon"),version:(null===(n=e.match(/Maxthon\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"7.0",78:"6.0"}[a]||""}},is(){return this.parse().is||(null==r?void 0:r.maxthon)}},F={name:"Sogou",parse(e=i){var n,r,a=parseInt(o.parse(e).version);return{is:e.includes("MetaSr")||e.includes("Sogou"),version:(null===(n=e.match(/SogouMobileBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/SogouMSE\/([\d.]+)/))||void 0===r?void 0:r[1])||{116:"13.0",94:"12.0",80:"11.0"}[a]||""}}},U={name:"Liebao",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("LBBROWSER")||e.includes("LieBaoFast"),version:(null===(n=e.match(/LieBaoFast\/([\d.]+)/))||void 0===n?void 0:n[1])||{112:"9.0",79:"8.0",57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[r]||""}},is(){return this.parse().is||(null==r?void 0:r.liebao)}},N={name:"2345Browser",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("2345Explorer")||e.includes("Mb2345Browser")||e.includes("2345chrome"),version:(null===(n=e.match(/2345Explorer\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Mb2345Browser\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"13.0",69:"10.0",55:"9.9"}[a]||""}},async is(){let e=this.parse().is;var n,i;e||(e=(null==r?void 0:r.chrome)&&((null==r||null===(n=r.chrome)||void 0===n?void 0:n.adblock2345)||(null==r||null===(i=r.chrome)||void 0===i?void 0:i.common2345)));return e}},G={name:"115Browser",parse(e=i){var n;return{is:e.includes("115Browser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},_={name:"TheWorld",parse(e=i){var n;return{is:e.includes("TheWorld"),version:(null===(n=e.match(/TheWorld ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Q={name:"Quark",parse(e=i){var n,r;return{is:e.includes("Quark"),version:(null===(n=e.match(/Quark\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/QuarkPC\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},Y={name:"Qiyu",parse(e=i){var n;return{is:e.includes("Qiyu"),version:(null===(n=e.match(/Qiyu\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},j={name:"HONOR",parse(e=i){var n,r;return{is:e.includes("HONOR")||e.includes("bdhonorbrowser/"),version:(null===(n=e.match(/bdhonorbrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},q={name:"Huawei",parse(e=i){var n,r,a;return{is:e.includes("HuaweiBrowser")||e.includes("HBPC/"),version:(null===(n=e.match(/HuaweiBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/HBPC\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/Version\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},z={name:"OPPO",parse(e=i){var n;return{is:e.includes("HeyTapBrowser")||e.includes("OPPO"),version:(null===(n=e.match(/HeyTapBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},X={name:"Vivo",parse(e=i){var n;return{is:e.includes("VivoBrowser"),version:(null===(n=e.match(/VivoBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},K={name:"Xiaomi",parse(e=i){var n;return{is:e.includes("MiuiBrowser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},$={name:"Meizu",parse(e=i){var n;return{is:e.includes("MZBrowser"),version:(null===(n=e.match(/MZBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Z={name:"OnePlus",parse:(e=i)=>({is:e.includes("ONEPLUS"),version:""})},J={name:"Samsung",parse(e=i){var n;return{is:e.includes("SamsungBrowser"),version:(null===(n=e.match(/SamsungBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ee={name:"Lenovo",parse(e=i){var n;return{is:e.includes("SLBrowser"),version:(null===(n=e.match(/SLBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ne={name:"QQ",parse(e=i){var n;return{is:e.includes("QQ/"),version:(null===(n=e.match(/QQ\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},re={name:"Baidu",parse(e=i){var n;return{is:e.includes("Baidu")||e.includes("baiduboxapp")||e.includes("BaiduD"),version:(null===(n=e.match(/baiduboxapp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ie={name:"Wechat",parse(e=i){var n;return{is:e.includes("MicroMessenger"),version:(null===(n=e.match(/MicroMessenger\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ae={name:"WechatWork",parse(e=i){var n;return{is:e.includes("wxwork"),version:(null===(n=e.match(/wxwork\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},oe={name:"Taobao",parse(e=i){var n;return{is:e.includes("AliApp(TB"),version:(null===(n=e.match(/AliApp\(TB\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},te={name:"Alipay",parse(e=i){var n;return{is:e.includes("AliApp(AP"),version:(null===(n=e.match(/AliApp\(AP\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},se={name:"Weibo",parse(e=i){var n;return{is:e.includes("Weibo"),version:(null===(n=e.match(/weibo__([\d.]+)/))||void 0===n?void 0:n[1])||""}}},le={name:"Douban",parse(e=i){var n;return{is:e.includes("com.douban.frodo"),version:(null===(n=e.match(/com.douban.frodo\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de={name:"Toutiao",parse(e=i){var n;return{is:e.includes("NewsArticle"),version:(null===(n=e.match(/NewsArticle\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ue={name:"WebKit",parse:(e=i)=>({is:e.includes("AppleWebKit")})},ce={name:"Trident",parse:(e=i)=>({is:e.includes("Trident")||e.includes("NET CLR")})},ve={name:"Gecko",parse:(e=i)=>({is:e.includes("Gecko/")})},me={name:"Servo",parse:(e=i)=>({is:e.includes("Servo/")})},pe={name:"Presto",parse:(e=i)=>({is:e.includes("Presto")})},he={name:"KHTML",parse:(e=i)=>({is:e.includes("KHTML/")})};let ge=[].concat([a,o,t,s,l,d,u,c,v,m,p,h,g,f,w,b,S,y,A,B,C,E,P,I,T,k,O,M,W,R,V,H,L,F,U,N,G,_,Q,Y],[j,q,z,X,K,$,Z,J,ee],[ne,re,ie,ae,oe,te,se,le,{name:"Suning",parse(e=i){var n;return{is:e.includes("SNEBUY-APP"),version:(null===(n=e.match(/SNEBUY-APP([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"iQIYI",parse(e=i){var n;return{is:e.includes("IqiyiApp"),version:(null===(n=e.match(/IqiyiVersion\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"DingTalk",parse(e=i){var n;return{is:e.includes("DingTalk"),version:(null===(n=e.match(/DingTalk\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Douyin",parse(e=i){var n;return{is:e.includes("aweme"),version:(null===(n=e.match(/app_version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de,{name:"Facebook",parse(e=i){var n;return{is:e.includes("Facebook")||e.includes("FBAV/"),version:(null===(n=e.match(/FBAV\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"WhatsApp",parse(e=i){var n;return{is:e.includes("WhatsApp"),version:(null===(n=e.match(/WhatsApp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Line",parse(e=i){var n;return{is:e.includes("Line/"),version:(null===(n=e.match(/Line\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}],[{name:"Twitterbot",parse:(e=i)=>({is:e.includes("Twitterbot"),version:""})},{name:"TelegramBot",parse:(e=i)=>({is:e.includes("TelegramBot"),version:""})},{name:"Googlebot",parse(e=i){var n;return{is:e.includes("Googlebot"),version:(null===(n=e.match(/Googlebot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Baiduspider",parse(e=i){var n;return{is:e.includes("Baiduspider"),version:(null===(n=e.match(/Baiduspider(-render)?\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Sogouspider",parse(e=i){var n;return{is:e.match(/Sogou (\S+) Spider\/([\d.]+)/i),version:(null===(n=e.match(/Sogou (\S+) Spider\/([\d.]+)/i))||void 0===n?void 0:n[1])||""}}},{name:"Bingbot",parse(e=i){var n;return{is:e.includes("bingbot"),version:(null===(n=e.match(/bingbot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"360Spider",parse:(e=i)=>({is:e.includes("360Spider")||e.includes("HaosouSpider"),version:""})},{name:"Bytespider",parse:(e=i)=>({is:e.includes("Bytespider"),version:""})},{name:"YisouSpider",parse(e=i){var n;return{is:e.includes("YisouSpider"),version:(null===(n=e.match(/YisouSpider\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YodaoBot",parse(e=i){var n;return{is:e.includes("YodaoBot"),version:(null===(n=e.match(/YodaoBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YandexBot",parse(e=i){var n;return{is:e.includes("YandexBot"),version:(null===(n=e.match(/YandexBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Yahoo",parse:(e=i)=>({is:e.includes("Yahoo!"),version:""})},{name:"ChatGPT",parse(e=i){var n,r,a;return{is:e.includes("OAI-SearchBot")||e.includes("ChatGPT-User")||e.includes("GPTBot"),version:(null===(n=e.match(/OAI-SearchBot\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/ChatGPT-User\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/GPTBot\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},{name:"Headless",parse(e=i){var n;return{is:e.includes("HeadlessChrome/"),version:(null===(n=e.match(/HeadlessChrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},async is(){return this.parse().is||""==(null==r?void 0:r.navigator)}}]);ge.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));let fe=[ue,ce,ve,me,pe,he];fe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));const we=function(e){let{userAgent:n,engine:r,browser:i,browserVersion:a}=e;var s,l;("Chrome"==i&&n.match(/\S+Browser/)&&(i=n.match(/\S+Browser/)[0]),"Chrome"==i&&n.match(/\S+Browser/))&&(a=(null===(s=n.replace(/^.*Browser\/([\d.]+).*$/))||void 0===s?void 0:s[1])||"");a||(a=(null===(l=n.match(/Version\/([\d.]+)/))||void 0===l?void 0:l[1])||"");return t.parse(n).is?r=parseInt(t.parse(n).version)>75?"Blink":"EdgeHTML":o.parse(n).is&&parseInt(o.parse(n).version)>27&&(r="Blink"),{userAgent:n,engine:r,browser:i,browserVersion:a}};var be={name:"browser",parse(e=i){let n="",r="";ge.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";fe.forEach((function(n){n.parse(e).is&&(a=n.name)})),({engine:a,browser:n,browserVersion:r}=we({userAgent:e,engine:a,browser:n,browserVersion:r}));let o=e.includes("; wv)"),t=["Googlebot","Baiduspider","Sogouspider","Bingbot","360Spider","Bytespider","YandexBot"].includes(n);return{browser:n,browserVersion:r,engine:a,isWebview:o,isRobot:t}},async getInfo(){var e;let{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s}=this.parse();for(let e of ge)await e.is()&&(n=e.name,a=await e.version());return({engine:o,browser:n,browserVersion:a}=we({userAgent:i,engine:o,browser:n,browserVersion:a})),{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s,cookieEnabled:null==r||null===(e=r.navigator)||void 0===e?void 0:e.cookieEnabled,userAgent:i}}},Se={name:"Windows",parse(e=i){var n;let r=(null===(n=e.match(/^Mozilla\/\d.0 \(Windows NT ([\d.]+)[;)].*$/))||void 0===n?void 0:n[1])||"";return{is:e.includes("Windows"),version:{"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"}[r]||r}},async version(){let e=this.parse().version;return new Promise((function(n){var i;null!=r&&null!==(i=r.navigator)&&void 0!==i&&i.userAgentData?r.navigator.userAgentData.getHighEntropyValues(["platformVersion"]).then((function(e){let i="";if("Windows"===r.navigator.userAgentData.platform){i=parseInt(e.platformVersion.split(".")[0])>=13?"11":"10"}n(i)})):n(e)}))}};let ye=[Se,{name:"Linux",parse:(e=i)=>({is:e.includes("Linux")||e.includes("X11"),version:""})},{name:"macOS",parse(e=i){var n;return{is:e.includes("Macintosh"),version:(null===(n=e.match(/Mac OS X -?([\d_\.]+)/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}}},{name:"Android",parse(e=i){var n;return{is:e.includes("Android")||e.includes("Adr"),version:(null===(n=e.match(/Android ([\d.]+);/))||void 0===n?void 0:n[1])||""}}},{name:"HarmonyOS",parse(e=i){var n,r;let a=(null===(n=e.match(/HarmonyOS (\d+.\d+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OpenHarmony(\d+.\d+)/))||void 0===r?void 0:r[1])||"";if(!a){var o,t;let n=+(null===(o=e.match(/HMSCore (\d+.\d+)/))||void 0===o?void 0:o[1])||0;n>=6.1?a="4.0":n>=6?a="3.0":n>=5?a="2.0":n>=4&&(a="1.0"),a={10:"3.0",12:"4.0"}[(null===(t=e.match(/Android (\d+);/))||void 0===t?void 0:t[1])||0]||a}return{is:e.includes("HarmonyOS")||e.includes("OpenHarmony")||e.includes("ArkWeb"),version:a}}},{name:"Ubuntu",parse:(e=i)=>({is:e.includes("Ubuntu"),version:""})},{name:"FreeBSD",parse:(e=i)=>({is:e.includes("FreeBSD"),version:""})},{name:"Debian",parse(e=i){var n;return{is:e.includes("Debian"),version:(null===(n=e.match(/Debian\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Deepin",parse(e=i){var n;return{is:e.includes("Deepin"),version:(null===(n=e.match(/Deepin ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"iOS",parse(e=i){var n;return{is:e.includes("like Mac OS X"),version:(null===(n=e.match(/OS ([\d_]+) like/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}}},{name:"Windows Phone",parse(e=i){var n;return{is:e.includes("IEMobile")||e.includes("Windows Phone"),version:(null===(n=e.match(/Windows Phone( OS)? ([\d.]+);/))||void 0===n?void 0:n[2])||""}}},{name:"BlackBerry",parse:(e=i)=>({is:e.includes("BlackBerry")||e.includes("RIM"),version:""})},{name:"MeeGo",parse:(e=i)=>({is:e.includes("MeeGo"),version:""})},{name:"Symbian",parse(e=i){var n;return{is:e.includes("Symbian"),version:(null===(n=e.match(/Series60\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Chrome OS",parse(e=i){var n,r;return{is:e.includes("CrOS"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},{name:"WebOS",parse(e=i){var n;return{is:e.includes("hpwOS"),version:(null===(n=e.match(/hpwOS\/([\d.]+);/))||void 0===n?void 0:n[1])||""}}},{name:"UOS",parse(e=i){var n;return{is:e.includes("UOS"),version:(null===(n=e.match(/UOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"CentOS",parse(e=i){var n;return{is:e.includes("CentOS"),version:(null===(n=e.match(/CentOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Fedora",parse(e=i){var n;return{is:e.includes("Fedora"),version:(null===(n=e.match(/Fedora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Gentoo",parse:(e=i)=>({is:e.includes("Gentoo"),version:""})},{name:"Red Hat",parse(e=i){var n;return{is:e.includes("Red Hat"),version:(null===(n=e.match(/Red Hat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"SUSE",parse(e=i){var n;return{is:e.includes("SUSE"),version:(null===(n=e.match(/SUSE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Slackware",parse(e=i){var n;return{is:e.includes("Slackware"),version:(null===(n=e.match(/Slackware\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}];ye.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));var Ae={name:"system",parse(e=i){let n="",r="";ye.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";e.match(/(Win64|x64|WOW64|x86_64)/i)?a="Win64":e.match(/(Win32|x86|WOW32)/i)?a="Win32":e.match(/aarch64|arm64/)?a="ARM64":e.match(/arm32/)?a="ARM32":e.match(/iPhone/)?a="iPhone":e.match(/iPad/)?a="iPad":e.match(/iPod/)?a="iPod":e.match(/Android/)&&(a="Android");let o="",t=e+"|"+a;o=t.match(/armv?\d+/i)||t.match(/aarch64/)?"arm":t.match(/loongarch64/)?"loongarch":"x86";let s=e.match(/Win64|x64|WOW64|x86_64|aarch64|arm64|loongarch64/i)?64:32;return{system:n,systemVersion:r,platform:a,architecture:o,bitness:s}},async getInfo(){var e,n;let{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}=this.parse();for(let e of ye)await e.is()&&(i=e.name,a=await e.version());var l,d;(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.platform&&(o=r.navigator.platform),null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)&&(t=await(null===(l=r.navigator.userAgentData)||void 0===l?void 0:l.getHighEntropyValues(["architecture"]).then((e=>e.architecture||t))),s=await(null===(d=r.navigator.userAgentData)||void 0===d?void 0:d.getHighEntropyValues(["bitness"]).then((e=>+e.bitness||s))));return{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}}};let Be=[{name:"Mobile",parse:(e=i)=>({is:e.includes("Mobi")||e.includes("iPh")||e.includes("480")})},{name:"Tablet",parse:(e=i)=>({is:e.includes("Tablet")||e.includes("Pad")||e.includes("Nexus 7")}),async is(){return this.parse().is||"MacIntel"===(null==r?void 0:r.navigator.platform)&&(null==r?void 0:r.navigator.maxTouchPoints)>1}}];Be.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));var Ce={name:"device",parse(e=i){let n="Desktop";return Be.forEach((function(r){r.parse(e).is&&(n=r.name)})),{device:n}},async getInfo(){var e;let n=(null==r?void 0:r.devicePixelRatio)||1,i=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.deviceMemory)||4;return Object.assign({devicePixelRatio:n,deviceMemory:i},this.parse())}},Ee={name:"gpu",parse:()=>({}),async getInfo(){let e="",n="";if(null!=r&&r.document){let o=r.document.createElement("canvas").getContext("experimental-webgl");if(o){var i,a;let r=o.getExtension("WEBGL_debug_renderer_info"),t=o.getParameter(r.UNMASKED_RENDERER_WEBGL);e=(null===(i=t.match(/ANGLE \((.+?),/))||void 0===i?void 0:i[1])||"",n=(null===(a=t.match(/, (.+?) (\(|vs_)/))||void 0===a?void 0:a[1])||""}}return{gpu:e,gpuModel:n}}};const xe=/\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/,Pe=/\b(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}\b/i,Te=r.RTCPeerConnection||r.mozRTCPeerConnection||r.webkitRTCPeerConnection;var Ie={name:"network",parse:()=>({}),async getInfo(){var e,n;let i="unknown",a=null==r||null===(e=r.navigator)||void 0===e?void 0:e.connection;return a&&(i=a.type||a.effectiveType,"2"!=i&&"unknown"!=i||(i="wifi")),{network:i,isOnline:(null==r||null===(n=r.navigator)||void 0===n?void 0:n.onLine)||!1,ip:await async function(){const e=new Set,n=n=>{var r;const i=null==n||null===(r=n.candidate)||void 0===r?void 0:r.candidate;if(i)for(const n of[xe,Pe]){const r=i.match(n);r&&e.add(r[0])}};return new Promise((function(r,i){if(Te){const a=new Te({iceServers:[{urls:"stun:stun.cloudflare.com:3478"},{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.services.mozilla.com"}]});a.addEventListener("icecandidate",n),a.createDataChannel(""),a.createOffer().then((e=>a.setLocalDescription(e)),i);let o=20,t=null,s=function(){try{a.removeEventListener("icecandidate",n),a.close()}catch{}t&&clearInterval(t)};t=setInterval((function(){let n=[...e];n.length?(s(),r(n[n.length-1])):o?o--:(s(),r(""))}),200)}else r("")}))}()}}},Oe={name:"battery",parse:()=>({}),async getInfo(){var e;let n=!0,i=1;return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.getBattery&&(n=await r.navigator.getBattery().then((e=>null==e?void 0:e.charging)),i=await r.navigator.getBattery().then((e=>+(null==e?void 0:e.level)||-1))),{isCharging:n,battery:i}}};var Me={name:"screen",parse:()=>({}),async getInfo(){var e,n,i,a,o,t,s,l;return{screenWidth:(null==r||null===(e=r.screen)||void 0===e?void 0:e.width)||0,screenHeight:(null==r||null===(n=r.screen)||void 0===n?void 0:n.height)||0,clientWidth:(null==r||null===(i=r.document)||void 0===i||null===(i=i.documentElement)||void 0===i?void 0:i.clientWidth)||(null==r||null===(a=r.document)||void 0===a||null===(a=a.body)||void 0===a?void 0:a.clientWidth)||0,clientHeight:(null==r||null===(o=r.document)||void 0===o||null===(o=o.documentElement)||void 0===o?void 0:o.clientHeight)||(null==r||null===(t=r.document)||void 0===t||null===(t=t.body)||void 0===t?void 0:t.clientHeight)||0,screenFPS:await async function(){return new Promise((function(e){let n=0,r=1,i=[],a=function(o){if(n>0)if(r<12)i.push(o-n),n=o,r++,requestAnimationFrame(a);else{i.sort(),i=i.slice(1,11);let n=i.reduce(((e,n)=>e+n));const r=10*Math.round(1e4/n/10);e(r)}else n=o,requestAnimationFrame(a)};requestAnimationFrame(a)}))}(),screenColorDepth:null==r?void 0:r.screen.colorDepth,screenPixelDepth:null==r?void 0:r.screen.pixelDepth,screenOrientation:(null===(s=screen.orientation)||void 0===s?void 0:s.type)||"未知",isTouch:(null==r||null===(l=r.navigator)||void 0===l?void 0:l.maxTouchPoints)>0||!1}}},De={name:"language",parse:()=>({}),async getInfo(){var e,n,i;let a=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.language)||(null==r||null===(n=r.navigator)||void 0===n?void 0:n.browserLanguage)||(null==r||null===(i=r.navigator)||void 0===i?void 0:i.systemLanguage);if("string"!=typeof a)return"Unknown language";let o=a.split("-");return o[1]&&(o[1]=o[1].toUpperCase()),{language:o.join("_")}}},ke={name:"timezone",parse:()=>({}),async getInfo(){var e;return{timezone:null===(e=Intl)||void 0===e||null===(e=e.DateTimeFormat())||void 0===e||null===(e=e.resolvedOptions())||void 0===e?void 0:e.timeZone}}};let We=function(e,n){return e<<n|e>>>32-n},Re=function(e,n){let r,i,a,o,t;return a=2147483648&e,o=2147483648&n,r=1073741824&e,i=1073741824&n,t=(1073741823&e)+(1073741823&n),r&i?2147483648^t^a^o:r|i?1073741824&t?3221225472^t^a^o:1073741824^t^a^o:t^a^o},Ve=function(e,n,r,i,a,o,t){return e=Re(e,Re(Re(function(e,n,r){return e&n|~e&r}(n,r,i),a),t)),Re(We(e,o),n)},He=function(e,n,r,i,a,o,t){return e=Re(e,Re(Re(function(e,n,r){return e&r|n&~r}(n,r,i),a),t)),Re(We(e,o),n)},Le=function(e,n,r,i,a,o,t){return e=Re(e,Re(Re(function(e,n,r){return e^n^r}(n,r,i),a),t)),Re(We(e,o),n)},Fe=function(e,n,r,i,a,o,t){return e=Re(e,Re(Re(function(e,n,r){return n^(e|~r)}(n,r,i),a),t)),Re(We(e,o),n)},Ue=function(e){let n,r,i="",a="";for(r=0;r<=3;r++)n=e>>>8*r&255,a="0"+n.toString(16),i+=a.substr(a.length-2,2);return i};function Ne(e){let n,r,i,a,o,t,s,l,d,u=Array();for(e=function(e){e=e.replace(/\x0d\x0a/g,"\n");let n="";for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i<128?n+=String.fromCharCode(i):i>127&&i<2048?(n+=String.fromCharCode(i>>6|192),n+=String.fromCharCode(63&i|128)):(n+=String.fromCharCode(i>>12|224),n+=String.fromCharCode(i>>6&63|128),n+=String.fromCharCode(63&i|128))}return n}(e),u=function(e){let n,r=e.length,i=r+8,a=16*((i-i%64)/64+1),o=Array(a-1),t=0,s=0;for(;s<r;)n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|e.charCodeAt(s)<<t,s++;return n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|128<<t,o[a-2]=r<<3,o[a-1]=r>>>29,o}(e),t=1732584193,s=4023233417,l=2562383102,d=271733878,n=0;n<u.length;n+=16)r=t,i=s,a=l,o=d,t=Ve(t,s,l,d,u[n+0],7,3614090360),d=Ve(d,t,s,l,u[n+1],12,3905402710),l=Ve(l,d,t,s,u[n+2],17,606105819),s=Ve(s,l,d,t,u[n+3],22,3250441966),t=Ve(t,s,l,d,u[n+4],7,4118548399),d=Ve(d,t,s,l,u[n+5],12,1200080426),l=Ve(l,d,t,s,u[n+6],17,2821735955),s=Ve(s,l,d,t,u[n+7],22,4249261313),t=Ve(t,s,l,d,u[n+8],7,1770035416),d=Ve(d,t,s,l,u[n+9],12,2336552879),l=Ve(l,d,t,s,u[n+10],17,4294925233),s=Ve(s,l,d,t,u[n+11],22,2304563134),t=Ve(t,s,l,d,u[n+12],7,1804603682),d=Ve(d,t,s,l,u[n+13],12,4254626195),l=Ve(l,d,t,s,u[n+14],17,2792965006),s=Ve(s,l,d,t,u[n+15],22,1236535329),t=He(t,s,l,d,u[n+1],5,4129170786),d=He(d,t,s,l,u[n+6],9,3225465664),l=He(l,d,t,s,u[n+11],14,643717713),s=He(s,l,d,t,u[n+0],20,3921069994),t=He(t,s,l,d,u[n+5],5,3593408605),d=He(d,t,s,l,u[n+10],9,38016083),l=He(l,d,t,s,u[n+15],14,3634488961),s=He(s,l,d,t,u[n+4],20,3889429448),t=He(t,s,l,d,u[n+9],5,568446438),d=He(d,t,s,l,u[n+14],9,3275163606),l=He(l,d,t,s,u[n+3],14,4107603335),s=He(s,l,d,t,u[n+8],20,1163531501),t=He(t,s,l,d,u[n+13],5,2850285829),d=He(d,t,s,l,u[n+2],9,4243563512),l=He(l,d,t,s,u[n+7],14,1735328473),s=He(s,l,d,t,u[n+12],20,2368359562),t=Le(t,s,l,d,u[n+5],4,4294588738),d=Le(d,t,s,l,u[n+8],11,2272392833),l=Le(l,d,t,s,u[n+11],16,1839030562),s=Le(s,l,d,t,u[n+14],23,4259657740),t=Le(t,s,l,d,u[n+1],4,2763975236),d=Le(d,t,s,l,u[n+4],11,1272893353),l=Le(l,d,t,s,u[n+7],16,4139469664),s=Le(s,l,d,t,u[n+10],23,3200236656),t=Le(t,s,l,d,u[n+13],4,681279174),d=Le(d,t,s,l,u[n+0],11,3936430074),l=Le(l,d,t,s,u[n+3],16,3572445317),s=Le(s,l,d,t,u[n+6],23,76029189),t=Le(t,s,l,d,u[n+9],4,3654602809),d=Le(d,t,s,l,u[n+12],11,3873151461),l=Le(l,d,t,s,u[n+15],16,530742520),s=Le(s,l,d,t,u[n+2],23,3299628645),t=Fe(t,s,l,d,u[n+0],6,4096336452),d=Fe(d,t,s,l,u[n+7],10,1126891415),l=Fe(l,d,t,s,u[n+14],15,2878612391),s=Fe(s,l,d,t,u[n+5],21,4237533241),t=Fe(t,s,l,d,u[n+12],6,1700485571),d=Fe(d,t,s,l,u[n+3],10,2399980690),l=Fe(l,d,t,s,u[n+10],15,4293915773),s=Fe(s,l,d,t,u[n+1],21,2240044497),t=Fe(t,s,l,d,u[n+8],6,1873313359),d=Fe(d,t,s,l,u[n+15],10,4264355552),l=Fe(l,d,t,s,u[n+6],15,2734768916),s=Fe(s,l,d,t,u[n+13],21,1309151649),t=Fe(t,s,l,d,u[n+4],6,4149444226),d=Fe(d,t,s,l,u[n+11],10,3174756917),l=Fe(l,d,t,s,u[n+2],15,718787259),s=Fe(s,l,d,t,u[n+9],21,3951481745),t=Re(t,r),s=Re(s,i),l=Re(l,a),d=Re(d,o);return(Ue(t)+Ue(s)+Ue(l)+Ue(d)).toUpperCase()}var Ge={name:"webgl",async getInfo(){let e=r.document.createElement("canvas");e.width=256,e.height=128;let n=e.getContext("webgl2",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl2",{preserveDrawingBuffer:!0})||e.getContext("webgl",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl",{preserveDrawingBuffer:!0})||e.getContext("moz-webgl",{preserveDrawingBuffer:!0}),i=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,i);let a=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.7321,0]);n.bufferData(n.ARRAY_BUFFER,a,n.STATIC_DRAW),i.itemSize=3,i.numItems=3;let o=n.createProgram(),t=n.createShader(n.VERTEX_SHADER);n.shaderSource(t,"attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}"),n.compileShader(t);let s=n.createShader(n.FRAGMENT_SHADER);n.shaderSource(s,"precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}"),n.compileShader(s),n.attachShader(o,t),n.attachShader(o,s),n.linkProgram(o),n.useProgram(o),o.vertexPosAttrib=n.getAttribLocation(o,"attrVertex"),o.offsetUniform=n.getUniformLocation(o,"uniformOffset"),n.enableVertexAttribArray(o.vertexPosArray),n.vertexAttribPointer(o.vertexPosAttrib,i.itemSize,n.FLOAT,!1,0,0),n.uniform2f(o.offsetUniform,1,1),n.drawArrays(n.TRIANGLE_STRIP,0,i.numItems);let l=new Uint8Array(131072);n.readPixels(0,0,256,128,n.RGBA,n.UNSIGNED_BYTE,l);let d=JSON.stringify(l).replace(/,?"[0-9]+":/g,"");return""==d.replace(/^{[0]+}$/g,"")?"n/a":Ne(d)}},_e={name:"canvas",async getInfo(){let e=r.document.createElement("canvas");e.width=1e3,e.height=200;let n=e.getContext("2d");return n.textBaseline="alphabetic",n.fillStyle="#f60",n.fillRect(150,50,100,100),n.fillStyle="#069",n.font="12pt Arial",n.fillText("😃just for test the canvas feature!",3,15),n.fillStyle="rgba(102, 204, 0, 0.2)",n.font="18pt Arial",n.fillText("😃just for test the canvas feature!",6,45),n.globalCompositeOperation="multiply",n.fillStyle="rgb(0,255,255)",n.beginPath(),n.arc(50,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,0,255)",n.beginPath(),n.arc(75,50,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,255,0)",n.beginPath(),n.arc(100,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),Ne(e.toDataURL())}},Qe={name:"font-family",is(e="Arial"){if("string"!=typeof e||null==r||!r.document)return!1;let n="Arial",i=100,a=100,o=r.document.createElement("canvas"),t=o.getContext("2d",{willReadFrequently:!0});o.width=i,o.height=a,t.textAlign="center",t.fillStyle="black",t.textBaseline="middle";let s=function(e){t.clearRect(0,0,i,a),t.font=`100px ${e}, ${n}`,t.fillText("永",50,50);let r=t.getImageData(0,0,i,a).data;return[].slice.call(r).filter((function(e){return 0!=e}))};return s(n).join("")!==s(e).join("")}},Ye={name:"font",async getInfo(){let e=[];return["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"].forEach((function(n){Qe.is(n)&&e.push(n)})),Ne(e.join(","))}},je={name:"audio",getInfo:async()=>new Promise((function(e,n){let r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,44100,44100),i=r.createOscillator();i.type="triangle",i.frequency.setValueAtTime(1e4,r.currentTime);let a=r.createDynamicsCompressor();[["threshold",-50],["knee",40],["ratio",12],["reduction",-20],["attack",0],["release",.25]].forEach((function(e){void 0!==a[e[0]]&&"function"==typeof a[e[0]].setValueAtTime&&a[e[0]].setValueAtTime(e[1],r.currentTime)})),i.connect(a),a.connect(r.destination),i.start(0),r.startRendering();let o=setTimeout((function(){r.oncomplete=function(){},r=null,e(Ne("audio Timeout"))}),1e3);r.oncomplete=function(n){o&&clearTimeout(o);let r=n.renderedBuffer.getChannelData(0).slice(4500,5e3).reduce((function(e,n){return e+Math.abs(n)}),0).toString();i.disconnect(),a.disconnect(),e(Ne(r))}}))},qe={name:"mime",async getInfo(){var e;let n=[];return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.mimeTypes&&(n=Array.from(r.navigator.mimeTypes).map((e=>e.type))),Ne(n.join(","))}},ze={name:"webgl",is(){if(null==r||!r.document)return!1;const e=r.document.createElement("canvas"),n=e.getContext("webgl")||e.getContext("experimental-webgl");return n&&n instanceof WebGLRenderingContext}},Xe={parse(e){let n={};return[be,Ae,Ce].forEach((r=>{n=Object.assign(n,r.parse(e))})),n},async getInfo(e=["browser","system","device","gpu","network","battery","screen","language","timezone"]){let n={},r=[be,Ae,Ce,Ee,Ie,Oe,Me,De,ke].filter((n=>e.includes(n.name)));for(let e of r)n=Object.assign(n,await e.getInfo());return n},async getFingerprint(e=["webgl","canvas","font","audio","mime"]){let n={},r=[Ge,_e,Ye,je,qe].filter((n=>e.includes(n.name))),{screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s}=await Me.getInfo(),l=[i,JSON.stringify({screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s})];for(let e of r)n[e.name]=await e.getInfo(),l.push(n[e.name]);return n.value=Ne(l.join(",")),n},isSupport(e,n){let r=[Qe,ze].find((n=>e==n.name));return!!r&&r.is(n)}};export{Xe as default};
let e={};"undefined"!=typeof globalThis?e=globalThis:"undefined"!=typeof self?e=self:"undefined"!=typeof window?e=window:"undefined"!=typeof global&&(e=global);var n,r=e,i=null==r||null===(n=r.navigator)||void 0===n?void 0:n.userAgent,a={name:"Safari",parse(e=i){var n;return{is:e.includes("Safari"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},o={name:"Chrome",parse(e=i){var n,r;return{is:e.includes("Chrome")||e.includes("CriOS"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/CriOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["uaFullVersion"])).uaFullVersion||""}return this.parse().version}},t={name:"Edge",parse(e=i){var n,r,a,o;return{is:e.includes("Edge")||e.includes("Edg/")||e.includes("EdgA")||e.includes("EdgiOS"),version:(null===(n=e.match(/Edge\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Edg\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/EdgA\/([\d.]+)/))||void 0===a?void 0:a[1])||(null===(o=e.match(/EdgiOS\/([\d.]+)/))||void 0===o?void 0:o[1])||""}},async version(){return await o.version.bind(this)()}},s={name:"IE",parse(e=i){var n,r;return{is:e.includes("MSIE")||e.includes("Trident"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},l={name:"Firefox",parse(e=i){var n,r;return{is:e.includes("Firefox")||e.includes("FxiOS"),version:(null===(n=e.match(/Firefox\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/FxiOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},d={name:"Firefox Focus",parse(e=i){var n;return{is:e.includes("Focus"),version:(null===(n=e.match(/Focus\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},u={name:"Chromium",parse(e=i){var n;return{is:e.includes("Chromium"),version:(null===(n=e.match(/Chromium\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},v={name:"Opera",parse(e=i){var n,r;return{is:e.includes("Opera")||e.includes("OPR"),version:(null===(n=e.match(/Opera\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OPR\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},c={name:"Opera GX",parse(e=i){var n;let r=!1;return v.parse(e).is?r=e.includes("Edition GX"):e.includes("OPX/")&&(r=!0),{is:r,version:v.parse(e).version||(null===(n=e.match(/OPX\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},m={name:"Vivaldi",parse(e=i){var n,r;return{is:e.includes("Vivaldi"),version:(null===(n=e.match(/Vivaldi\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Chrome\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;return new Promise((function(n){if(!(e||l.parse().is||t.parse().is||v.parse().is))return n(!1);n(!1)}))},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["brands"])).brands.find((e=>"Vivaldi"==e.brand)).version||""}return this.parse().version}},p={name:"Yandex",parse(e=i){var n;return{is:e.includes("YaBrowser"),version:(null===(n=e.match(/YaBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},h={name:"Brave",parse(e=i){var n;return{is:e.includes("Brave"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},is:async function(){var e;return!!(this.parse().is||null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.brave)}},g={name:"Arora",parse(e=i){var n;return{is:e.includes("Arora"),version:(null===(n=e.match(/Arora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},f={name:"Lunascape",parse(e=i){var n;return{is:e.includes("Lunascape"),version:(null===(n=e.match(/Lunascape[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},w={name:"QupZilla",parse(e=i){var n;return{is:e.includes("QupZilla"),version:(null===(n=e.match(/QupZilla[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},S={name:"Coc Coc",parse(e=i){var n;return{is:e.includes("coc_coc_browser"),version:(null===(n=e.match(/coc_coc_browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},b={name:"Kindle",parse(e=i){var n;return{is:e.includes("Kindle")||e.includes("Silk/"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},y={name:"Iceweasel",parse(e=i){var n;return{is:e.includes("Iceweasel"),version:(null===(n=e.match(/Iceweasel\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},A={name:"Konqueror",parse(e=i){var n;return{is:e.includes("Konqueror"),version:(null===(n=e.match(/Konqueror\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},B={name:"SeaMonkey",parse(e=i){var n;return{is:e.includes("SeaMonkey"),version:(null===(n=e.match(/SeaMonkey\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},C={name:"Epiphany",parse(e=i){var n;return{is:e.includes("Epiphany"),version:(null===(n=e.match(/Epiphany\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},E={name:"Whale",parse(e=i){var n;return{is:e.includes("Whale/"),version:(null===(n=e.match(/Whale\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};function T(e,n){var i;let a=null==r||null===(i=r.navigator)||void 0===i?void 0:i.mimeTypes;for(let r in a)if(a[r][e]&&a[r][e]==n)return a[r];return null}var x={name:"360",parse(e=i){var n,r;return{is:e.includes("QihooBrowser")||e.includes("QHBrowser")||e.includes(" 360 "),version:(null===(n=e.match(/QihooBrowser(HD)?\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Browser \(v([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;if(null!=r&&r.chrome){let n=parseInt(o.parse().version);T("type","application/360softmgrplugin")||T("type","application/mozilla-npqihooquicklogin")||T("type","application/npjlgplayer3-chrome-jlp")||n>36&&null!=r&&r.showModalDialog?e=!0:n>45&&(e=T("type","application/vnd.chromium.remoting-viewer"),!e&&n>=69&&(e=T("type","application/asx")))}return e}},P={name:"360SE",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SE"),version:{132:"16.0",122:"15.3",114:"15.0",108:"14.0",86:"13.0",78:"12.0",69:"11.0",63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[n]||""}},async is(){let e=!1;var n;await x.is()&&((T("type","application/gameplugin")||null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length)&&(e=!0));return e||l.parse().is||t.parse().is||v.parse().is?e:new Promise((function(e){return e(!1)}))}},I={name:"360EE",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360EE"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{122:"22.3",119:"22.0",108:"14.0",95:"21.0",86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}},async is(){let e=this.parse().is;if(T("type","application/cenroll.cenroll.version.1")||T("type","application/hwepass2001.installepass2001"))e=!0;else if(await x.is()){var n;null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.find((e=>"Not A(Brand"==e.brand||"Not?A_Brand"==e.brand))&&(e=!0)}return e}},O={name:"360AI",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SEAI"),version:{114:"1.0"}[n]||""}},async is(){let e=this.parse().is;var n;await x.is()&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length&&!T("type","application/gameplugin")&&(e=!0));return e}},M={name:"360AI",parse(e=i){var n;return{is:e.includes("360EEAI"),version:(null===(n=e.match(/360EE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};const D=()=>new Promise((e=>{var n;if(null==r||null===(n=r.webkit)||void 0===n||null===(n=n.messageHandlers)||void 0===n||!n.excuteCmd)return e({});{const n=`cv_${Date.now()%1e5}${100*Math.floor(Math.random())}`,i={key:"GetDeviceInfo",data:{},callback:n},a=JSON.stringify(i);r.webkit.messageHandlers.excuteCmd.postMessage(a),r[n]=function(i){delete r[n],e(JSON.parse(i||"{}"))}}}));var k={name:"360EE",parse:()=>({is:!1,version:""}),is:async()=>D().then((function(e){return"360csexm"==(null==e?void 0:e.pid)||!1})),version:async()=>D().then((function(e){return(null==e?void 0:e.module_version)||""}))},V={name:"360ENT",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360ENT"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}}},W={name:"UC",parse(e=i){var n;return{is:e.includes("UCBrowser")||e.includes(" UBrowser")||e.includes("UCWEB"),version:(null===(n=e.match(/UC?Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},R={name:"QQBrowser",parse(e=i){var n;return{is:e.includes("QQBrowser"),version:(null===(n=e.match(/QQBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},H={name:"BaiduBrowser",parse(e=i){var n;return{is:e.includes("BIDUBrowser")||e.includes("baidubrowser"),version:(null===(n=e.match(/BIDUBrowser[\s\/]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},L={name:"Maxthon",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("Maxthon"),version:(null===(n=e.match(/Maxthon\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"7.0",78:"6.0"}[a]||""}},is(){return this.parse().is||(null==r?void 0:r.maxthon)}},F={name:"Sogou",parse(e=i){var n,r,a=parseInt(o.parse(e).version);return{is:e.includes("MetaSr")||e.includes("Sogou"),version:(null===(n=e.match(/SogouMobileBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/SogouMSE\/([\d.]+)/))||void 0===r?void 0:r[1])||{116:"13.0",94:"12.0",80:"11.0"}[a]||""}}},U={name:"Liebao",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("LBBROWSER")||e.includes("LieBaoFast"),version:(null===(n=e.match(/LieBaoFast\/([\d.]+)/))||void 0===n?void 0:n[1])||{112:"9.0",79:"8.0",57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[r]||""}},is(){return this.parse().is||(null==r?void 0:r.liebao)}},N={name:"2345Browser",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("2345Explorer")||e.includes("Mb2345Browser")||e.includes("2345chrome"),version:(null===(n=e.match(/2345Explorer\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Mb2345Browser\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"13.0",69:"10.0",55:"9.9"}[a]||""}},async is(){let e=this.parse().is;var n,i;e||(e=(null==r?void 0:r.chrome)&&((null==r||null===(n=r.chrome)||void 0===n?void 0:n.adblock2345)||(null==r||null===(i=r.chrome)||void 0===i?void 0:i.common2345)));return e}},G={name:"115Browser",parse(e=i){var n;return{is:e.includes("115Browser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},_={name:"TheWorld",parse(e=i){var n;return{is:e.includes("TheWorld"),version:(null===(n=e.match(/TheWorld ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Q={name:"Quark",parse(e=i){var n,r;return{is:e.includes("Quark"),version:(null===(n=e.match(/Quark\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/QuarkPC\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},Y={name:"Qiyu",parse(e=i){var n;return{is:e.includes("Qiyu"),version:(null===(n=e.match(/Qiyu\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},j={name:"HONOR",parse(e=i){var n,r;return{is:e.includes("HONOR")||e.includes("bdhonorbrowser/"),version:(null===(n=e.match(/bdhonorbrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},q={name:"Huawei",parse(e=i){var n,r,a;return{is:e.includes("HuaweiBrowser")||e.includes("HBPC/"),version:(null===(n=e.match(/HuaweiBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/HBPC\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/Version\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},X={name:"OPPO",parse(e=i){var n;return{is:e.includes("HeyTapBrowser")||e.includes("OPPO"),version:(null===(n=e.match(/HeyTapBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},z={name:"Vivo",parse(e=i){var n;return{is:e.includes("VivoBrowser"),version:(null===(n=e.match(/VivoBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},K={name:"Xiaomi",parse(e=i){var n;return{is:e.includes("MiuiBrowser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},$={name:"Meizu",parse(e=i){var n;return{is:e.includes("MZBrowser"),version:(null===(n=e.match(/MZBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Z={name:"OnePlus",parse:(e=i)=>({is:e.includes("ONEPLUS"),version:""})},J={name:"Samsung",parse(e=i){var n;return{is:e.includes("SamsungBrowser"),version:(null===(n=e.match(/SamsungBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ee={name:"Lenovo",parse(e=i){var n;return{is:e.includes("SLBrowser"),version:(null===(n=e.match(/SLBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ne={name:"QQ",parse(e=i){var n;return{is:e.includes("QQ/"),version:(null===(n=e.match(/QQ\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},re={name:"Baidu",parse(e=i){var n;return{is:e.includes("Baidu")||e.includes("baiduboxapp")||e.includes("BaiduD"),version:(null===(n=e.match(/baiduboxapp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ie={name:"Wechat",parse(e=i){var n;return{is:e.includes("MicroMessenger"),version:(null===(n=e.match(/MicroMessenger\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ae={name:"WechatWork",parse(e=i){var n;return{is:e.includes("wxwork"),version:(null===(n=e.match(/wxwork\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},oe={name:"Taobao",parse(e=i){var n;return{is:e.includes("AliApp(TB"),version:(null===(n=e.match(/AliApp\(TB\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},te={name:"Alipay",parse(e=i){var n;return{is:e.includes("AliApp(AP"),version:(null===(n=e.match(/AliApp\(AP\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},se={name:"Weibo",parse(e=i){var n;return{is:e.includes("Weibo"),version:(null===(n=e.match(/weibo__([\d.]+)/))||void 0===n?void 0:n[1])||""}}},le={name:"Douban",parse(e=i){var n;return{is:e.includes("com.douban.frodo"),version:(null===(n=e.match(/com.douban.frodo\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de={name:"Toutiao",parse(e=i){var n;return{is:e.includes("NewsArticle"),version:(null===(n=e.match(/NewsArticle\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ue={name:"WebKit",parse:(e=i)=>({is:e.includes("AppleWebKit")})},ve={name:"Trident",parse:(e=i)=>({is:e.includes("Trident")||e.includes("NET CLR")})},ce={name:"Gecko",parse:(e=i)=>({is:e.includes("Gecko/")})},me={name:"Servo",parse:(e=i)=>({is:e.includes("Servo/")})},pe={name:"Presto",parse:(e=i)=>({is:e.includes("Presto")})},he={name:"KHTML",parse:(e=i)=>({is:e.includes("KHTML/")})};let ge=[].concat([a,o,t,s,l,d,u,v,c,m,p,h,g,f,w,S,b,y,A,B,C,E,x,I,P,k,O,M,V,W,R,H,L,F,U,N,G,_,Q,Y],[j,q,X,z,K,$,Z,J,ee],[ne,re,ie,ae,oe,te,se,le,{name:"Suning",parse(e=i){var n;return{is:e.includes("SNEBUY-APP"),version:(null===(n=e.match(/SNEBUY-APP([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"iQIYI",parse(e=i){var n;return{is:e.includes("IqiyiApp"),version:(null===(n=e.match(/IqiyiVersion\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"DingTalk",parse(e=i){var n;return{is:e.includes("DingTalk"),version:(null===(n=e.match(/DingTalk\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Douyin",parse(e=i){var n;return{is:e.includes("aweme"),version:(null===(n=e.match(/app_version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de,{name:"Facebook",parse(e=i){var n;return{is:e.includes("Facebook")||e.includes("FBAV/"),version:(null===(n=e.match(/FBAV\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"WhatsApp",parse(e=i){var n;return{is:e.includes("WhatsApp"),version:(null===(n=e.match(/WhatsApp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"TikTok",parse(e=i){var n;return{is:e.includes("TikTok"),version:(null===(n=e.match(/TikTok\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Line",parse(e=i){var n;return{is:e.includes("Line/"),version:(null===(n=e.match(/Line\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Telegram",parse(e=i){var n;return{is:e.includes("Telegram"),version:(null===(n=e.match(/Telegram\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Instagram",parse(e=i){var n;return{is:e.includes("Instagram"),version:(null===(n=e.match(/Instagram ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"X",parse:(e=i)=>({is:e.includes("Twitter ")||e.includes("TwitterAndroid"),version:""})},{name:"Snapchat",parse(e=i){var n;return{is:e.includes("Snapchat"),version:(null===(n=e.match(/Snapchat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}],[{name:"Twitterbot",parse:(e=i)=>({is:e.includes("Twitterbot"),version:""})},{name:"TelegramBot",parse:(e=i)=>({is:e.includes("TelegramBot"),version:""})},{name:"Googlebot",parse(e=i){var n;return{is:e.includes("Googlebot"),version:(null===(n=e.match(/Googlebot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Baiduspider",parse(e=i){var n;return{is:e.includes("Baiduspider"),version:(null===(n=e.match(/Baiduspider(-render)?\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Sogouspider",parse(e=i){var n;return{is:e.match(/Sogou (\S+) Spider\/([\d.]+)/i),version:(null===(n=e.match(/Sogou (\S+) Spider\/([\d.]+)/i))||void 0===n?void 0:n[1])||""}}},{name:"Bingbot",parse(e=i){var n;return{is:e.includes("bingbot"),version:(null===(n=e.match(/bingbot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"360Spider",parse:(e=i)=>({is:e.includes("360Spider")||e.includes("HaosouSpider"),version:""})},{name:"Bytespider",parse:(e=i)=>({is:e.includes("Bytespider"),version:""})},{name:"YisouSpider",parse(e=i){var n;return{is:e.includes("YisouSpider"),version:(null===(n=e.match(/YisouSpider\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YodaoBot",parse(e=i){var n;return{is:e.includes("YodaoBot"),version:(null===(n=e.match(/YodaoBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YandexBot",parse(e=i){var n;return{is:e.includes("YandexBot"),version:(null===(n=e.match(/YandexBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Yahoo",parse:(e=i)=>({is:e.includes("Yahoo!"),version:""})},{name:"ChatGPT",parse(e=i){var n,r,a;return{is:e.includes("OAI-SearchBot")||e.includes("ChatGPT-User")||e.includes("GPTBot"),version:(null===(n=e.match(/OAI-SearchBot\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/ChatGPT-User\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/GPTBot\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},{name:"Headless",parse(e=i){var n;return{is:e.includes("HeadlessChrome/"),version:(null===(n=e.match(/HeadlessChrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},async is(){return this.parse().is||""==(null==r?void 0:r.navigator)}}]);ge.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));let fe=[ue,ve,ce,me,pe,he];fe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));const we=function(e){let{userAgent:n,engine:r,browser:i,browserVersion:a}=e;var s,l;("Chrome"==i&&n.match(/\S+Browser/)&&(i=n.match(/\S+Browser/)[0]),"Chrome"==i&&n.match(/\S+Browser/))&&(a=(null===(s=n.replace(/^.*Browser\/([\d.]+).*$/))||void 0===s?void 0:s[1])||"");a||(a=(null===(l=n.match(/Version\/([\d.]+)/))||void 0===l?void 0:l[1])||"");return t.parse(n).is?r=parseInt(t.parse(n).version)>75?"Blink":"EdgeHTML":o.parse(n).is&&parseInt(o.parse(n).version)>27&&(r="Blink"),{userAgent:n,engine:r,browser:i,browserVersion:a}};var Se={name:"browser",parse(e=i){let n="",r="";ge.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";fe.forEach((function(n){n.parse(e).is&&(a=n.name)})),({engine:a,browser:n,browserVersion:r}=we({userAgent:e,engine:a,browser:n,browserVersion:r}));let o=e.includes("; wv)"),t=["Googlebot","Baiduspider","Sogouspider","Bingbot","360Spider","Bytespider","YandexBot"].includes(n);return{browser:n,browserVersion:r,engine:a,isWebview:o,isRobot:t}},async getInfo(){var e;let{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s}=this.parse();for(let e of ge)await e.is()&&(n=e.name,a=await e.version());return({engine:o,browser:n,browserVersion:a}=we({userAgent:i,engine:o,browser:n,browserVersion:a})),{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s,cookieEnabled:null==r||null===(e=r.navigator)||void 0===e?void 0:e.cookieEnabled,userAgent:i}}},be={name:"Windows",parse(e=i){var n;let r=(null===(n=e.match(/^Mozilla\/\d.0 \(Windows NT ([\d.]+)[;)].*$/))||void 0===n?void 0:n[1])||"";return{is:e.includes("Windows"),version:{"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"}[r]||r}},async version(){var e;let n=this.parse().version;if(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.userAgentData){const e=await r.navigator.userAgentData.getHighEntropyValues(["platformVersion"]);if("Windows"===e.platform){n=parseInt(e.platformVersion.split(".")[0])>=13?"11":"10"}}return n}},ye={name:"Linux",parse:(e=i)=>({is:e.includes("Linux")||e.includes("X11"),version:""})},Ae={name:"macOS",parse(e=i){var n;return{is:e.includes("Macintosh"),version:(null===(n=e.match(/Mac OS X -?([\d_\.]+)/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}}},Be={name:"Android",parse(e=i){var n;return{is:e.includes("Android")||e.includes("Adr"),version:(null===(n=e.match(/Android ([\d.]+);/))||void 0===n?void 0:n[1])||""}}},Ce={name:"HarmonyOS",parse(e=i){var n,r;let a=(null===(n=e.match(/HarmonyOS (\d+.\d+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OpenHarmony(\d+.\d+)/))||void 0===r?void 0:r[1])||"";if(!a){var o,t;let n=+(null===(o=e.match(/HMSCore (\d+.\d+)/))||void 0===o?void 0:o[1])||0;n>=6.1?a="4.0":n>=6?a="3.0":n>=5?a="2.0":n>=4&&(a="1.0"),a={10:"3.0",12:"4.0"}[(null===(t=e.match(/Android (\d+);/))||void 0===t?void 0:t[1])||0]||a}return{is:e.includes("HarmonyOS")||e.includes("OpenHarmony")||e.includes("ArkWeb"),version:a}}},Ee={name:"Ubuntu",parse:(e=i)=>({is:e.includes("Ubuntu"),version:""})},Te={name:"FreeBSD",parse:(e=i)=>({is:e.includes("FreeBSD"),version:""})},xe={name:"Debian",parse(e=i){var n;return{is:e.includes("Debian"),version:(null===(n=e.match(/Debian\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Pe={name:"Deepin",parse(e=i){var n;return{is:e.includes("Deepin"),version:(null===(n=e.match(/Deepin ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Ie={name:"iOS",parse(e=i){var n;return{is:e.includes("like Mac OS X"),version:(null===(n=e.match(/OS ([\d_]+) like/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}},async is(){let e=this.parse().is;var n;if(!e&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)){return"iOS"===(await r.navigator.userAgentData.getHighEntropyValues(["platform"])).platform}return e},async version(){var e;let n=this.parse().version;if(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.userAgentData){return(await r.navigator.userAgentData.getHighEntropyValues(["platformVersion"])).platformVersion}return n}};let Oe=[be,ye,Ae,Be,Ce,Ee,Te,xe,Pe,Ie,{name:"Windows Phone",parse(e=i){var n;return{is:e.includes("IEMobile")||e.includes("Windows Phone"),version:(null===(n=e.match(/Windows Phone( OS)? ([\d.]+);/))||void 0===n?void 0:n[2])||""}}},{name:"BlackBerry",parse:(e=i)=>({is:e.includes("BlackBerry")||e.includes("RIM"),version:""})},{name:"MeeGo",parse:(e=i)=>({is:e.includes("MeeGo"),version:""})},{name:"Symbian",parse(e=i){var n;return{is:e.includes("Symbian"),version:(null===(n=e.match(/Series60\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Chrome OS",parse(e=i){var n,r;return{is:e.includes("CrOS"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},{name:"WebOS",parse(e=i){var n;return{is:e.includes("hpwOS"),version:(null===(n=e.match(/hpwOS\/([\d.]+);/))||void 0===n?void 0:n[1])||""}}},{name:"UOS",parse(e=i){var n;return{is:e.includes("UOS"),version:(null===(n=e.match(/UOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"CentOS",parse(e=i){var n;return{is:e.includes("CentOS"),version:(null===(n=e.match(/CentOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Fedora",parse(e=i){var n;return{is:e.includes("Fedora"),version:(null===(n=e.match(/Fedora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Gentoo",parse:(e=i)=>({is:e.includes("Gentoo"),version:""})},{name:"Red Hat",parse(e=i){var n;return{is:e.includes("Red Hat"),version:(null===(n=e.match(/Red Hat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"SUSE",parse(e=i){var n;return{is:e.includes("SUSE"),version:(null===(n=e.match(/SUSE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Slackware",parse(e=i){var n;return{is:e.includes("Slackware"),version:(null===(n=e.match(/Slackware\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}];Oe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));var Me={name:"system",parse(e=i){let n="",r="";Oe.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";e.match(/(Win64|x64|WOW64|x86_64)/i)?a="Win64":e.match(/(Win32|x86|WOW32)/i)?a="Win32":e.match(/aarch64|arm64/)?a="ARM64":e.match(/arm32/)?a="ARM32":e.match(/iPhone/)?a="iPhone":e.match(/iPad/)?a="iPad":e.match(/iPod/)?a="iPod":e.match(/Android/)&&(a="Android");let o="",t=e+"|"+a;o=t.match(/armv?\d+/i)||t.match(/aarch64/)?"arm":t.match(/loongarch64/)?"loongarch":"x86";let s=e.match(/Win64|x64|WOW64|x86_64|aarch64|arm64|loongarch64/i)?64:32;return{system:n,systemVersion:r,platform:a,architecture:o,bitness:s}},async getInfo(){var e,n;let{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}=this.parse();for(let e of Oe)await e.is()&&(i=e.name,a=await e.version());var l,d;(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.platform&&(o=r.navigator.platform),null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)&&(t=await(null===(l=r.navigator.userAgentData)||void 0===l?void 0:l.getHighEntropyValues(["architecture"]).then((e=>e.architecture||t))),s=await(null===(d=r.navigator.userAgentData)||void 0===d?void 0:d.getHighEntropyValues(["bitness"]).then((e=>+e.bitness||s))));return{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}}};let De=[{name:"Mobile",parse:(e=i)=>({is:e.includes("Mobi")||e.includes("iPh")||e.includes("480")})},{name:"Tablet",parse:(e=i)=>({is:e.includes("Tablet")||e.includes("Pad")||e.includes("Nexus 7")}),async is(){return this.parse().is||"MacIntel"===(null==r?void 0:r.navigator.platform)&&(null==r?void 0:r.navigator.maxTouchPoints)>1}}];De.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));var ke={name:"device",parse(e=i){let n="Desktop";return De.forEach((function(r){r.parse(e).is&&(n=r.name)})),{device:n}},async getInfo(){var e;let n=(null==r?void 0:r.devicePixelRatio)||1,i=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.deviceMemory)||4;return Object.assign({devicePixelRatio:n,deviceMemory:i},this.parse())}},Ve={name:"gpu",parse:()=>({}),async getInfo(){let e="",n="";if(null!=r&&r.document){let o=r.document.createElement("canvas").getContext("experimental-webgl");if(o){var i,a;let r=o.getExtension("WEBGL_debug_renderer_info"),t=o.getParameter(r.UNMASKED_RENDERER_WEBGL);e=(null===(i=t.match(/ANGLE \((.+?),/))||void 0===i?void 0:i[1])||"",n=(null===(a=t.match(/, (.+?) (\(|vs_)/))||void 0===a?void 0:a[1])||""}}return{gpu:e,gpuModel:n}}};const We=/\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/,Re=/\b(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}\b/i,He=r.RTCPeerConnection||r.mozRTCPeerConnection||r.webkitRTCPeerConnection;var Le={name:"network",parse:()=>({}),async getInfo(){var e,n;let i="unknown",a=null==r||null===(e=r.navigator)||void 0===e?void 0:e.connection;return a&&(i=a.type||a.effectiveType,"2"!=i&&"unknown"!=i||(i="wifi")),{network:i,isOnline:(null==r||null===(n=r.navigator)||void 0===n?void 0:n.onLine)||!1,ip:await async function(){const e=new Set,n=n=>{var r;const i=null==n||null===(r=n.candidate)||void 0===r?void 0:r.candidate;if(i)for(const n of[We,Re]){const r=i.match(n);r&&e.add(r[0])}};return new Promise((function(r,i){if(He){const a=new He({iceServers:[{urls:"stun:stun.cloudflare.com:3478"},{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.services.mozilla.com"}]});a.addEventListener("icecandidate",n),a.createDataChannel(""),a.createOffer().then((e=>a.setLocalDescription(e)),i);let o=20,t=null,s=function(){try{a.removeEventListener("icecandidate",n),a.close()}catch{}t&&clearInterval(t)};t=setInterval((function(){let n=[...e];n.length?(s(),r(n[n.length-1])):o?o--:(s(),r(""))}),200)}else r("")}))}()}}},Fe={name:"battery",parse:()=>({}),async getInfo(){var e;let n=!0,i=1;return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.getBattery&&(n=await r.navigator.getBattery().then((e=>null==e?void 0:e.charging)),i=await r.navigator.getBattery().then((e=>+(null==e?void 0:e.level)||-1))),{isCharging:n,battery:i}}};var Ue={name:"screen",parse:()=>({}),async getInfo(){var e,n,i,a,o,t,s,l;return{screenWidth:(null==r||null===(e=r.screen)||void 0===e?void 0:e.width)||0,screenHeight:(null==r||null===(n=r.screen)||void 0===n?void 0:n.height)||0,clientWidth:(null==r||null===(i=r.document)||void 0===i||null===(i=i.documentElement)||void 0===i?void 0:i.clientWidth)||(null==r||null===(a=r.document)||void 0===a||null===(a=a.body)||void 0===a?void 0:a.clientWidth)||0,clientHeight:(null==r||null===(o=r.document)||void 0===o||null===(o=o.documentElement)||void 0===o?void 0:o.clientHeight)||(null==r||null===(t=r.document)||void 0===t||null===(t=t.body)||void 0===t?void 0:t.clientHeight)||0,screenFPS:await async function(){return new Promise((function(e){let n=0,r=1,i=[],a=function(o){if(n>0)if(r<12)i.push(o-n),n=o,r++,requestAnimationFrame(a);else{i.sort(),i=i.slice(1,11);let n=i.reduce(((e,n)=>e+n));const r=10*Math.round(1e4/n/10);e(r)}else n=o,requestAnimationFrame(a)};requestAnimationFrame(a)}))}(),screenColorDepth:null==r?void 0:r.screen.colorDepth,screenPixelDepth:null==r?void 0:r.screen.pixelDepth,screenOrientation:(null===(s=screen.orientation)||void 0===s?void 0:s.type)||"未知",isTouch:(null==r||null===(l=r.navigator)||void 0===l?void 0:l.maxTouchPoints)>0||!1}}},Ne={name:"language",parse:()=>({}),async getInfo(){var e,n,i;let a=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.language)||(null==r||null===(n=r.navigator)||void 0===n?void 0:n.browserLanguage)||(null==r||null===(i=r.navigator)||void 0===i?void 0:i.systemLanguage);if("string"!=typeof a)return"Unknown language";let o=a.split("-");return o[1]&&(o[1]=o[1].toUpperCase()),{language:o.join("_")}}},Ge={name:"timezone",parse:()=>({}),async getInfo(){var e;return{timezone:null===(e=Intl)||void 0===e||null===(e=e.DateTimeFormat())||void 0===e||null===(e=e.resolvedOptions())||void 0===e?void 0:e.timeZone}}};let _e=function(e,n){return e<<n|e>>>32-n},Qe=function(e,n){let r,i,a,o,t;return a=2147483648&e,o=2147483648&n,r=1073741824&e,i=1073741824&n,t=(1073741823&e)+(1073741823&n),r&i?2147483648^t^a^o:r|i?1073741824&t?3221225472^t^a^o:1073741824^t^a^o:t^a^o},Ye=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e&n|~e&r}(n,r,i),a),t)),Qe(_e(e,o),n)},je=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e&r|n&~r}(n,r,i),a),t)),Qe(_e(e,o),n)},qe=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e^n^r}(n,r,i),a),t)),Qe(_e(e,o),n)},Xe=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return n^(e|~r)}(n,r,i),a),t)),Qe(_e(e,o),n)},ze=function(e){let n,r,i="",a="";for(r=0;r<=3;r++)n=e>>>8*r&255,a="0"+n.toString(16),i+=a.substr(a.length-2,2);return i};function Ke(e){let n,r,i,a,o,t,s,l,d,u=Array();for(e=function(e){e=e.replace(/\x0d\x0a/g,"\n");let n="";for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i<128?n+=String.fromCharCode(i):i>127&&i<2048?(n+=String.fromCharCode(i>>6|192),n+=String.fromCharCode(63&i|128)):(n+=String.fromCharCode(i>>12|224),n+=String.fromCharCode(i>>6&63|128),n+=String.fromCharCode(63&i|128))}return n}(e),u=function(e){let n,r=e.length,i=r+8,a=16*((i-i%64)/64+1),o=Array(a-1),t=0,s=0;for(;s<r;)n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|e.charCodeAt(s)<<t,s++;return n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|128<<t,o[a-2]=r<<3,o[a-1]=r>>>29,o}(e),t=1732584193,s=4023233417,l=2562383102,d=271733878,n=0;n<u.length;n+=16)r=t,i=s,a=l,o=d,t=Ye(t,s,l,d,u[n+0],7,3614090360),d=Ye(d,t,s,l,u[n+1],12,3905402710),l=Ye(l,d,t,s,u[n+2],17,606105819),s=Ye(s,l,d,t,u[n+3],22,3250441966),t=Ye(t,s,l,d,u[n+4],7,4118548399),d=Ye(d,t,s,l,u[n+5],12,1200080426),l=Ye(l,d,t,s,u[n+6],17,2821735955),s=Ye(s,l,d,t,u[n+7],22,4249261313),t=Ye(t,s,l,d,u[n+8],7,1770035416),d=Ye(d,t,s,l,u[n+9],12,2336552879),l=Ye(l,d,t,s,u[n+10],17,4294925233),s=Ye(s,l,d,t,u[n+11],22,2304563134),t=Ye(t,s,l,d,u[n+12],7,1804603682),d=Ye(d,t,s,l,u[n+13],12,4254626195),l=Ye(l,d,t,s,u[n+14],17,2792965006),s=Ye(s,l,d,t,u[n+15],22,1236535329),t=je(t,s,l,d,u[n+1],5,4129170786),d=je(d,t,s,l,u[n+6],9,3225465664),l=je(l,d,t,s,u[n+11],14,643717713),s=je(s,l,d,t,u[n+0],20,3921069994),t=je(t,s,l,d,u[n+5],5,3593408605),d=je(d,t,s,l,u[n+10],9,38016083),l=je(l,d,t,s,u[n+15],14,3634488961),s=je(s,l,d,t,u[n+4],20,3889429448),t=je(t,s,l,d,u[n+9],5,568446438),d=je(d,t,s,l,u[n+14],9,3275163606),l=je(l,d,t,s,u[n+3],14,4107603335),s=je(s,l,d,t,u[n+8],20,1163531501),t=je(t,s,l,d,u[n+13],5,2850285829),d=je(d,t,s,l,u[n+2],9,4243563512),l=je(l,d,t,s,u[n+7],14,1735328473),s=je(s,l,d,t,u[n+12],20,2368359562),t=qe(t,s,l,d,u[n+5],4,4294588738),d=qe(d,t,s,l,u[n+8],11,2272392833),l=qe(l,d,t,s,u[n+11],16,1839030562),s=qe(s,l,d,t,u[n+14],23,4259657740),t=qe(t,s,l,d,u[n+1],4,2763975236),d=qe(d,t,s,l,u[n+4],11,1272893353),l=qe(l,d,t,s,u[n+7],16,4139469664),s=qe(s,l,d,t,u[n+10],23,3200236656),t=qe(t,s,l,d,u[n+13],4,681279174),d=qe(d,t,s,l,u[n+0],11,3936430074),l=qe(l,d,t,s,u[n+3],16,3572445317),s=qe(s,l,d,t,u[n+6],23,76029189),t=qe(t,s,l,d,u[n+9],4,3654602809),d=qe(d,t,s,l,u[n+12],11,3873151461),l=qe(l,d,t,s,u[n+15],16,530742520),s=qe(s,l,d,t,u[n+2],23,3299628645),t=Xe(t,s,l,d,u[n+0],6,4096336452),d=Xe(d,t,s,l,u[n+7],10,1126891415),l=Xe(l,d,t,s,u[n+14],15,2878612391),s=Xe(s,l,d,t,u[n+5],21,4237533241),t=Xe(t,s,l,d,u[n+12],6,1700485571),d=Xe(d,t,s,l,u[n+3],10,2399980690),l=Xe(l,d,t,s,u[n+10],15,4293915773),s=Xe(s,l,d,t,u[n+1],21,2240044497),t=Xe(t,s,l,d,u[n+8],6,1873313359),d=Xe(d,t,s,l,u[n+15],10,4264355552),l=Xe(l,d,t,s,u[n+6],15,2734768916),s=Xe(s,l,d,t,u[n+13],21,1309151649),t=Xe(t,s,l,d,u[n+4],6,4149444226),d=Xe(d,t,s,l,u[n+11],10,3174756917),l=Xe(l,d,t,s,u[n+2],15,718787259),s=Xe(s,l,d,t,u[n+9],21,3951481745),t=Qe(t,r),s=Qe(s,i),l=Qe(l,a),d=Qe(d,o);return(ze(t)+ze(s)+ze(l)+ze(d)).toUpperCase()}var $e={name:"webgl",async getInfo(){let e=r.document.createElement("canvas");e.width=256,e.height=128;let n=e.getContext("webgl2",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl2",{preserveDrawingBuffer:!0})||e.getContext("webgl",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl",{preserveDrawingBuffer:!0})||e.getContext("moz-webgl",{preserveDrawingBuffer:!0}),i=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,i);let a=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.7321,0]);n.bufferData(n.ARRAY_BUFFER,a,n.STATIC_DRAW),i.itemSize=3,i.numItems=3;let o=n.createProgram(),t=n.createShader(n.VERTEX_SHADER);n.shaderSource(t,"attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}"),n.compileShader(t);let s=n.createShader(n.FRAGMENT_SHADER);n.shaderSource(s,"precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}"),n.compileShader(s),n.attachShader(o,t),n.attachShader(o,s),n.linkProgram(o),n.useProgram(o),o.vertexPosAttrib=n.getAttribLocation(o,"attrVertex"),o.offsetUniform=n.getUniformLocation(o,"uniformOffset"),n.enableVertexAttribArray(o.vertexPosArray),n.vertexAttribPointer(o.vertexPosAttrib,i.itemSize,n.FLOAT,!1,0,0),n.uniform2f(o.offsetUniform,1,1),n.drawArrays(n.TRIANGLE_STRIP,0,i.numItems);let l=new Uint8Array(131072);n.readPixels(0,0,256,128,n.RGBA,n.UNSIGNED_BYTE,l);let d=JSON.stringify(l).replace(/,?"[0-9]+":/g,"");return""==d.replace(/^{[0]+}$/g,"")?"n/a":Ke(d)}},Ze={name:"canvas",async getInfo(){let e=r.document.createElement("canvas");e.width=1e3,e.height=200;let n=e.getContext("2d");return n.textBaseline="alphabetic",n.fillStyle="#f60",n.fillRect(150,50,100,100),n.fillStyle="#069",n.font="12pt Arial",n.fillText("😃just for test the canvas feature!",3,15),n.fillStyle="rgba(102, 204, 0, 0.2)",n.font="18pt Arial",n.fillText("😃just for test the canvas feature!",6,45),n.globalCompositeOperation="multiply",n.fillStyle="rgb(0,255,255)",n.beginPath(),n.arc(50,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,0,255)",n.beginPath(),n.arc(75,50,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,255,0)",n.beginPath(),n.arc(100,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),Ke(e.toDataURL())}},Je={name:"font-family",is(e="Arial"){if("string"!=typeof e||null==r||!r.document)return!1;let n="Arial",i=100,a=100,o=r.document.createElement("canvas"),t=o.getContext("2d",{willReadFrequently:!0});o.width=i,o.height=a,t.textAlign="center",t.fillStyle="black",t.textBaseline="middle";let s=function(e){t.clearRect(0,0,i,a),t.font=`100px ${e}, ${n}`,t.fillText("永",50,50);let r=t.getImageData(0,0,i,a).data;return[].slice.call(r).filter((function(e){return 0!=e}))};return s(n).join("")!==s(e).join("")}},en={name:"font",async getInfo(){let e=[];return["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"].forEach((function(n){Je.is(n)&&e.push(n)})),Ke(e.join(","))}},nn={name:"audio",getInfo:async()=>new Promise((function(e,n){let r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,44100,44100),i=r.createOscillator();i.type="triangle",i.frequency.setValueAtTime(1e4,r.currentTime);let a=r.createDynamicsCompressor();[["threshold",-50],["knee",40],["ratio",12],["reduction",-20],["attack",0],["release",.25]].forEach((function(e){void 0!==a[e[0]]&&"function"==typeof a[e[0]].setValueAtTime&&a[e[0]].setValueAtTime(e[1],r.currentTime)})),i.connect(a),a.connect(r.destination),i.start(0),r.startRendering();let o=setTimeout((function(){r.oncomplete=function(){},r=null,e(Ke("audio Timeout"))}),1e3);r.oncomplete=function(n){o&&clearTimeout(o);let r=n.renderedBuffer.getChannelData(0).slice(4500,5e3).reduce((function(e,n){return e+Math.abs(n)}),0).toString();i.disconnect(),a.disconnect(),e(Ke(r))}}))},rn={name:"mime",async getInfo(){var e;let n=[];return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.mimeTypes&&(n=Array.from(r.navigator.mimeTypes).map((e=>e.type))),Ke(n.join(","))}},an={name:"webgl",is(){if(null==r||!r.document)return!1;const e=r.document.createElement("canvas"),n=e.getContext("webgl")||e.getContext("experimental-webgl");return n&&n instanceof WebGLRenderingContext}},on={parse(e){let n={};return[Se,Me,ke].forEach((r=>{n=Object.assign(n,r.parse(e))})),n},async getInfo(e=["browser","system","device","gpu","network","battery","screen","language","timezone"]){let n={},r=[Se,Me,ke,Ve,Le,Fe,Ue,Ne,Ge].filter((n=>e.includes(n.name)));for(let e of r)n=Object.assign(n,await e.getInfo());return n},async getFingerprint(e=["webgl","canvas","font","audio","mime"]){let n={},r=[$e,Ze,en,nn,rn].filter((n=>e.includes(n.name))),{screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s}=await Ue.getInfo(),l=[i,JSON.stringify({screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s})];for(let e of r)n[e.name]=await e.getInfo(),l.push(n[e.name]);return n.value=Ke(l.join(",")),n},isSupport(e,n){let r=[Je,an].find((n=>e==n.name));return!!r&&r.is(n)}};export{on as default};
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Vivaldi browser detector’s async is() implementation currently resolves false in all cases (it calls the resolver with false regardless of this.parse().is). This breaks Vivaldi detection and may cause getInfo() to misclassify Vivaldi as Chrome/Chromium. Update is() to return the parsed UA result (or an equivalent non-extension-based detection) instead of always returning false.

Suggested change
let e={};"undefined"!=typeof globalThis?e=globalThis:"undefined"!=typeof self?e=self:"undefined"!=typeof window?e=window:"undefined"!=typeof global&&(e=global);var n,r=e,i=null==r||null===(n=r.navigator)||void 0===n?void 0:n.userAgent,a={name:"Safari",parse(e=i){var n;return{is:e.includes("Safari"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},o={name:"Chrome",parse(e=i){var n,r;return{is:e.includes("Chrome")||e.includes("CriOS"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/CriOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["uaFullVersion"])).uaFullVersion||""}return this.parse().version}},t={name:"Edge",parse(e=i){var n,r,a,o;return{is:e.includes("Edge")||e.includes("Edg/")||e.includes("EdgA")||e.includes("EdgiOS"),version:(null===(n=e.match(/Edge\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Edg\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/EdgA\/([\d.]+)/))||void 0===a?void 0:a[1])||(null===(o=e.match(/EdgiOS\/([\d.]+)/))||void 0===o?void 0:o[1])||""}},async version(){return await o.version.bind(this)()}},s={name:"IE",parse(e=i){var n,r;return{is:e.includes("MSIE")||e.includes("Trident"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},l={name:"Firefox",parse(e=i){var n,r;return{is:e.includes("Firefox")||e.includes("FxiOS"),version:(null===(n=e.match(/Firefox\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/FxiOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},d={name:"Firefox Focus",parse(e=i){var n;return{is:e.includes("Focus"),version:(null===(n=e.match(/Focus\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},u={name:"Chromium",parse(e=i){var n;return{is:e.includes("Chromium"),version:(null===(n=e.match(/Chromium\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},v={name:"Opera",parse(e=i){var n,r;return{is:e.includes("Opera")||e.includes("OPR"),version:(null===(n=e.match(/Opera\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OPR\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},c={name:"Opera GX",parse(e=i){var n;let r=!1;return v.parse(e).is?r=e.includes("Edition GX"):e.includes("OPX/")&&(r=!0),{is:r,version:v.parse(e).version||(null===(n=e.match(/OPX\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},m={name:"Vivaldi",parse(e=i){var n,r;return{is:e.includes("Vivaldi"),version:(null===(n=e.match(/Vivaldi\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Chrome\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;return new Promise((function(n){if(!(e||l.parse().is||t.parse().is||v.parse().is))return n(!1);n(!1)}))},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["brands"])).brands.find((e=>"Vivaldi"==e.brand)).version||""}return this.parse().version}},p={name:"Yandex",parse(e=i){var n;return{is:e.includes("YaBrowser"),version:(null===(n=e.match(/YaBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},h={name:"Brave",parse(e=i){var n;return{is:e.includes("Brave"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},is:async function(){var e;return!!(this.parse().is||null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.brave)}},g={name:"Arora",parse(e=i){var n;return{is:e.includes("Arora"),version:(null===(n=e.match(/Arora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},f={name:"Lunascape",parse(e=i){var n;return{is:e.includes("Lunascape"),version:(null===(n=e.match(/Lunascape[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},w={name:"QupZilla",parse(e=i){var n;return{is:e.includes("QupZilla"),version:(null===(n=e.match(/QupZilla[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},S={name:"Coc Coc",parse(e=i){var n;return{is:e.includes("coc_coc_browser"),version:(null===(n=e.match(/coc_coc_browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},b={name:"Kindle",parse(e=i){var n;return{is:e.includes("Kindle")||e.includes("Silk/"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},y={name:"Iceweasel",parse(e=i){var n;return{is:e.includes("Iceweasel"),version:(null===(n=e.match(/Iceweasel\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},A={name:"Konqueror",parse(e=i){var n;return{is:e.includes("Konqueror"),version:(null===(n=e.match(/Konqueror\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},B={name:"SeaMonkey",parse(e=i){var n;return{is:e.includes("SeaMonkey"),version:(null===(n=e.match(/SeaMonkey\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},C={name:"Epiphany",parse(e=i){var n;return{is:e.includes("Epiphany"),version:(null===(n=e.match(/Epiphany\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},E={name:"Whale",parse(e=i){var n;return{is:e.includes("Whale/"),version:(null===(n=e.match(/Whale\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};function T(e,n){var i;let a=null==r||null===(i=r.navigator)||void 0===i?void 0:i.mimeTypes;for(let r in a)if(a[r][e]&&a[r][e]==n)return a[r];return null}var x={name:"360",parse(e=i){var n,r;return{is:e.includes("QihooBrowser")||e.includes("QHBrowser")||e.includes(" 360 "),version:(null===(n=e.match(/QihooBrowser(HD)?\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Browser \(v([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;if(null!=r&&r.chrome){let n=parseInt(o.parse().version);T("type","application/360softmgrplugin")||T("type","application/mozilla-npqihooquicklogin")||T("type","application/npjlgplayer3-chrome-jlp")||n>36&&null!=r&&r.showModalDialog?e=!0:n>45&&(e=T("type","application/vnd.chromium.remoting-viewer"),!e&&n>=69&&(e=T("type","application/asx")))}return e}},P={name:"360SE",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SE"),version:{132:"16.0",122:"15.3",114:"15.0",108:"14.0",86:"13.0",78:"12.0",69:"11.0",63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[n]||""}},async is(){let e=!1;var n;await x.is()&&((T("type","application/gameplugin")||null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length)&&(e=!0));return e||l.parse().is||t.parse().is||v.parse().is?e:new Promise((function(e){return e(!1)}))}},I={name:"360EE",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360EE"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{122:"22.3",119:"22.0",108:"14.0",95:"21.0",86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}},async is(){let e=this.parse().is;if(T("type","application/cenroll.cenroll.version.1")||T("type","application/hwepass2001.installepass2001"))e=!0;else if(await x.is()){var n;null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.find((e=>"Not A(Brand"==e.brand||"Not?A_Brand"==e.brand))&&(e=!0)}return e}},O={name:"360AI",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SEAI"),version:{114:"1.0"}[n]||""}},async is(){let e=this.parse().is;var n;await x.is()&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length&&!T("type","application/gameplugin")&&(e=!0));return e}},M={name:"360AI",parse(e=i){var n;return{is:e.includes("360EEAI"),version:(null===(n=e.match(/360EE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};const D=()=>new Promise((e=>{var n;if(null==r||null===(n=r.webkit)||void 0===n||null===(n=n.messageHandlers)||void 0===n||!n.excuteCmd)return e({});{const n=`cv_${Date.now()%1e5}${100*Math.floor(Math.random())}`,i={key:"GetDeviceInfo",data:{},callback:n},a=JSON.stringify(i);r.webkit.messageHandlers.excuteCmd.postMessage(a),r[n]=function(i){delete r[n],e(JSON.parse(i||"{}"))}}}));var k={name:"360EE",parse:()=>({is:!1,version:""}),is:async()=>D().then((function(e){return"360csexm"==(null==e?void 0:e.pid)||!1})),version:async()=>D().then((function(e){return(null==e?void 0:e.module_version)||""}))},V={name:"360ENT",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360ENT"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}}},W={name:"UC",parse(e=i){var n;return{is:e.includes("UCBrowser")||e.includes(" UBrowser")||e.includes("UCWEB"),version:(null===(n=e.match(/UC?Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},R={name:"QQBrowser",parse(e=i){var n;return{is:e.includes("QQBrowser"),version:(null===(n=e.match(/QQBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},H={name:"BaiduBrowser",parse(e=i){var n;return{is:e.includes("BIDUBrowser")||e.includes("baidubrowser"),version:(null===(n=e.match(/BIDUBrowser[\s\/]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},L={name:"Maxthon",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("Maxthon"),version:(null===(n=e.match(/Maxthon\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"7.0",78:"6.0"}[a]||""}},is(){return this.parse().is||(null==r?void 0:r.maxthon)}},F={name:"Sogou",parse(e=i){var n,r,a=parseInt(o.parse(e).version);return{is:e.includes("MetaSr")||e.includes("Sogou"),version:(null===(n=e.match(/SogouMobileBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/SogouMSE\/([\d.]+)/))||void 0===r?void 0:r[1])||{116:"13.0",94:"12.0",80:"11.0"}[a]||""}}},U={name:"Liebao",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("LBBROWSER")||e.includes("LieBaoFast"),version:(null===(n=e.match(/LieBaoFast\/([\d.]+)/))||void 0===n?void 0:n[1])||{112:"9.0",79:"8.0",57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[r]||""}},is(){return this.parse().is||(null==r?void 0:r.liebao)}},N={name:"2345Browser",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("2345Explorer")||e.includes("Mb2345Browser")||e.includes("2345chrome"),version:(null===(n=e.match(/2345Explorer\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Mb2345Browser\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"13.0",69:"10.0",55:"9.9"}[a]||""}},async is(){let e=this.parse().is;var n,i;e||(e=(null==r?void 0:r.chrome)&&((null==r||null===(n=r.chrome)||void 0===n?void 0:n.adblock2345)||(null==r||null===(i=r.chrome)||void 0===i?void 0:i.common2345)));return e}},G={name:"115Browser",parse(e=i){var n;return{is:e.includes("115Browser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},_={name:"TheWorld",parse(e=i){var n;return{is:e.includes("TheWorld"),version:(null===(n=e.match(/TheWorld ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Q={name:"Quark",parse(e=i){var n,r;return{is:e.includes("Quark"),version:(null===(n=e.match(/Quark\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/QuarkPC\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},Y={name:"Qiyu",parse(e=i){var n;return{is:e.includes("Qiyu"),version:(null===(n=e.match(/Qiyu\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},j={name:"HONOR",parse(e=i){var n,r;return{is:e.includes("HONOR")||e.includes("bdhonorbrowser/"),version:(null===(n=e.match(/bdhonorbrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},q={name:"Huawei",parse(e=i){var n,r,a;return{is:e.includes("HuaweiBrowser")||e.includes("HBPC/"),version:(null===(n=e.match(/HuaweiBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/HBPC\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/Version\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},X={name:"OPPO",parse(e=i){var n;return{is:e.includes("HeyTapBrowser")||e.includes("OPPO"),version:(null===(n=e.match(/HeyTapBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},z={name:"Vivo",parse(e=i){var n;return{is:e.includes("VivoBrowser"),version:(null===(n=e.match(/VivoBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},K={name:"Xiaomi",parse(e=i){var n;return{is:e.includes("MiuiBrowser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},$={name:"Meizu",parse(e=i){var n;return{is:e.includes("MZBrowser"),version:(null===(n=e.match(/MZBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Z={name:"OnePlus",parse:(e=i)=>({is:e.includes("ONEPLUS"),version:""})},J={name:"Samsung",parse(e=i){var n;return{is:e.includes("SamsungBrowser"),version:(null===(n=e.match(/SamsungBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ee={name:"Lenovo",parse(e=i){var n;return{is:e.includes("SLBrowser"),version:(null===(n=e.match(/SLBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ne={name:"QQ",parse(e=i){var n;return{is:e.includes("QQ/"),version:(null===(n=e.match(/QQ\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},re={name:"Baidu",parse(e=i){var n;return{is:e.includes("Baidu")||e.includes("baiduboxapp")||e.includes("BaiduD"),version:(null===(n=e.match(/baiduboxapp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ie={name:"Wechat",parse(e=i){var n;return{is:e.includes("MicroMessenger"),version:(null===(n=e.match(/MicroMessenger\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ae={name:"WechatWork",parse(e=i){var n;return{is:e.includes("wxwork"),version:(null===(n=e.match(/wxwork\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},oe={name:"Taobao",parse(e=i){var n;return{is:e.includes("AliApp(TB"),version:(null===(n=e.match(/AliApp\(TB\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},te={name:"Alipay",parse(e=i){var n;return{is:e.includes("AliApp(AP"),version:(null===(n=e.match(/AliApp\(AP\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},se={name:"Weibo",parse(e=i){var n;return{is:e.includes("Weibo"),version:(null===(n=e.match(/weibo__([\d.]+)/))||void 0===n?void 0:n[1])||""}}},le={name:"Douban",parse(e=i){var n;return{is:e.includes("com.douban.frodo"),version:(null===(n=e.match(/com.douban.frodo\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de={name:"Toutiao",parse(e=i){var n;return{is:e.includes("NewsArticle"),version:(null===(n=e.match(/NewsArticle\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ue={name:"WebKit",parse:(e=i)=>({is:e.includes("AppleWebKit")})},ve={name:"Trident",parse:(e=i)=>({is:e.includes("Trident")||e.includes("NET CLR")})},ce={name:"Gecko",parse:(e=i)=>({is:e.includes("Gecko/")})},me={name:"Servo",parse:(e=i)=>({is:e.includes("Servo/")})},pe={name:"Presto",parse:(e=i)=>({is:e.includes("Presto")})},he={name:"KHTML",parse:(e=i)=>({is:e.includes("KHTML/")})};let ge=[].concat([a,o,t,s,l,d,u,v,c,m,p,h,g,f,w,S,b,y,A,B,C,E,x,I,P,k,O,M,V,W,R,H,L,F,U,N,G,_,Q,Y],[j,q,X,z,K,$,Z,J,ee],[ne,re,ie,ae,oe,te,se,le,{name:"Suning",parse(e=i){var n;return{is:e.includes("SNEBUY-APP"),version:(null===(n=e.match(/SNEBUY-APP([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"iQIYI",parse(e=i){var n;return{is:e.includes("IqiyiApp"),version:(null===(n=e.match(/IqiyiVersion\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"DingTalk",parse(e=i){var n;return{is:e.includes("DingTalk"),version:(null===(n=e.match(/DingTalk\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Douyin",parse(e=i){var n;return{is:e.includes("aweme"),version:(null===(n=e.match(/app_version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de,{name:"Facebook",parse(e=i){var n;return{is:e.includes("Facebook")||e.includes("FBAV/"),version:(null===(n=e.match(/FBAV\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"WhatsApp",parse(e=i){var n;return{is:e.includes("WhatsApp"),version:(null===(n=e.match(/WhatsApp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"TikTok",parse(e=i){var n;return{is:e.includes("TikTok"),version:(null===(n=e.match(/TikTok\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Line",parse(e=i){var n;return{is:e.includes("Line/"),version:(null===(n=e.match(/Line\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Telegram",parse(e=i){var n;return{is:e.includes("Telegram"),version:(null===(n=e.match(/Telegram\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Instagram",parse(e=i){var n;return{is:e.includes("Instagram"),version:(null===(n=e.match(/Instagram ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"X",parse:(e=i)=>({is:e.includes("Twitter ")||e.includes("TwitterAndroid"),version:""})},{name:"Snapchat",parse(e=i){var n;return{is:e.includes("Snapchat"),version:(null===(n=e.match(/Snapchat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}],[{name:"Twitterbot",parse:(e=i)=>({is:e.includes("Twitterbot"),version:""})},{name:"TelegramBot",parse:(e=i)=>({is:e.includes("TelegramBot"),version:""})},{name:"Googlebot",parse(e=i){var n;return{is:e.includes("Googlebot"),version:(null===(n=e.match(/Googlebot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Baiduspider",parse(e=i){var n;return{is:e.includes("Baiduspider"),version:(null===(n=e.match(/Baiduspider(-render)?\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Sogouspider",parse(e=i){var n;return{is:e.match(/Sogou (\S+) Spider\/([\d.]+)/i),version:(null===(n=e.match(/Sogou (\S+) Spider\/([\d.]+)/i))||void 0===n?void 0:n[1])||""}}},{name:"Bingbot",parse(e=i){var n;return{is:e.includes("bingbot"),version:(null===(n=e.match(/bingbot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"360Spider",parse:(e=i)=>({is:e.includes("360Spider")||e.includes("HaosouSpider"),version:""})},{name:"Bytespider",parse:(e=i)=>({is:e.includes("Bytespider"),version:""})},{name:"YisouSpider",parse(e=i){var n;return{is:e.includes("YisouSpider"),version:(null===(n=e.match(/YisouSpider\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YodaoBot",parse(e=i){var n;return{is:e.includes("YodaoBot"),version:(null===(n=e.match(/YodaoBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YandexBot",parse(e=i){var n;return{is:e.includes("YandexBot"),version:(null===(n=e.match(/YandexBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Yahoo",parse:(e=i)=>({is:e.includes("Yahoo!"),version:""})},{name:"ChatGPT",parse(e=i){var n,r,a;return{is:e.includes("OAI-SearchBot")||e.includes("ChatGPT-User")||e.includes("GPTBot"),version:(null===(n=e.match(/OAI-SearchBot\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/ChatGPT-User\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/GPTBot\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},{name:"Headless",parse(e=i){var n;return{is:e.includes("HeadlessChrome/"),version:(null===(n=e.match(/HeadlessChrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},async is(){return this.parse().is||""==(null==r?void 0:r.navigator)}}]);ge.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));let fe=[ue,ve,ce,me,pe,he];fe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));const we=function(e){let{userAgent:n,engine:r,browser:i,browserVersion:a}=e;var s,l;("Chrome"==i&&n.match(/\S+Browser/)&&(i=n.match(/\S+Browser/)[0]),"Chrome"==i&&n.match(/\S+Browser/))&&(a=(null===(s=n.replace(/^.*Browser\/([\d.]+).*$/))||void 0===s?void 0:s[1])||"");a||(a=(null===(l=n.match(/Version\/([\d.]+)/))||void 0===l?void 0:l[1])||"");return t.parse(n).is?r=parseInt(t.parse(n).version)>75?"Blink":"EdgeHTML":o.parse(n).is&&parseInt(o.parse(n).version)>27&&(r="Blink"),{userAgent:n,engine:r,browser:i,browserVersion:a}};var Se={name:"browser",parse(e=i){let n="",r="";ge.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";fe.forEach((function(n){n.parse(e).is&&(a=n.name)})),({engine:a,browser:n,browserVersion:r}=we({userAgent:e,engine:a,browser:n,browserVersion:r}));let o=e.includes("; wv)"),t=["Googlebot","Baiduspider","Sogouspider","Bingbot","360Spider","Bytespider","YandexBot"].includes(n);return{browser:n,browserVersion:r,engine:a,isWebview:o,isRobot:t}},async getInfo(){var e;let{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s}=this.parse();for(let e of ge)await e.is()&&(n=e.name,a=await e.version());return({engine:o,browser:n,browserVersion:a}=we({userAgent:i,engine:o,browser:n,browserVersion:a})),{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s,cookieEnabled:null==r||null===(e=r.navigator)||void 0===e?void 0:e.cookieEnabled,userAgent:i}}},be={name:"Windows",parse(e=i){var n;let r=(null===(n=e.match(/^Mozilla\/\d.0 \(Windows NT ([\d.]+)[;)].*$/))||void 0===n?void 0:n[1])||"";return{is:e.includes("Windows"),version:{"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"}[r]||r}},async version(){var e;let n=this.parse().version;if(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.userAgentData){const e=await r.navigator.userAgentData.getHighEntropyValues(["platformVersion"]);if("Windows"===e.platform){n=parseInt(e.platformVersion.split(".")[0])>=13?"11":"10"}}return n}},ye={name:"Linux",parse:(e=i)=>({is:e.includes("Linux")||e.includes("X11"),version:""})},Ae={name:"macOS",parse(e=i){var n;return{is:e.includes("Macintosh"),version:(null===(n=e.match(/Mac OS X -?([\d_\.]+)/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}}},Be={name:"Android",parse(e=i){var n;return{is:e.includes("Android")||e.includes("Adr"),version:(null===(n=e.match(/Android ([\d.]+);/))||void 0===n?void 0:n[1])||""}}},Ce={name:"HarmonyOS",parse(e=i){var n,r;let a=(null===(n=e.match(/HarmonyOS (\d+.\d+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OpenHarmony(\d+.\d+)/))||void 0===r?void 0:r[1])||"";if(!a){var o,t;let n=+(null===(o=e.match(/HMSCore (\d+.\d+)/))||void 0===o?void 0:o[1])||0;n>=6.1?a="4.0":n>=6?a="3.0":n>=5?a="2.0":n>=4&&(a="1.0"),a={10:"3.0",12:"4.0"}[(null===(t=e.match(/Android (\d+);/))||void 0===t?void 0:t[1])||0]||a}return{is:e.includes("HarmonyOS")||e.includes("OpenHarmony")||e.includes("ArkWeb"),version:a}}},Ee={name:"Ubuntu",parse:(e=i)=>({is:e.includes("Ubuntu"),version:""})},Te={name:"FreeBSD",parse:(e=i)=>({is:e.includes("FreeBSD"),version:""})},xe={name:"Debian",parse(e=i){var n;return{is:e.includes("Debian"),version:(null===(n=e.match(/Debian\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Pe={name:"Deepin",parse(e=i){var n;return{is:e.includes("Deepin"),version:(null===(n=e.match(/Deepin ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Ie={name:"iOS",parse(e=i){var n;return{is:e.includes("like Mac OS X"),version:(null===(n=e.match(/OS ([\d_]+) like/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}},async is(){let e=this.parse().is;var n;if(!e&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)){return"iOS"===(await r.navigator.userAgentData.getHighEntropyValues(["platform"])).platform}return e},async version(){var e;let n=this.parse().version;if(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.userAgentData){return(await r.navigator.userAgentData.getHighEntropyValues(["platformVersion"])).platformVersion}return n}};let Oe=[be,ye,Ae,Be,Ce,Ee,Te,xe,Pe,Ie,{name:"Windows Phone",parse(e=i){var n;return{is:e.includes("IEMobile")||e.includes("Windows Phone"),version:(null===(n=e.match(/Windows Phone( OS)? ([\d.]+);/))||void 0===n?void 0:n[2])||""}}},{name:"BlackBerry",parse:(e=i)=>({is:e.includes("BlackBerry")||e.includes("RIM"),version:""})},{name:"MeeGo",parse:(e=i)=>({is:e.includes("MeeGo"),version:""})},{name:"Symbian",parse(e=i){var n;return{is:e.includes("Symbian"),version:(null===(n=e.match(/Series60\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Chrome OS",parse(e=i){var n,r;return{is:e.includes("CrOS"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},{name:"WebOS",parse(e=i){var n;return{is:e.includes("hpwOS"),version:(null===(n=e.match(/hpwOS\/([\d.]+);/))||void 0===n?void 0:n[1])||""}}},{name:"UOS",parse(e=i){var n;return{is:e.includes("UOS"),version:(null===(n=e.match(/UOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"CentOS",parse(e=i){var n;return{is:e.includes("CentOS"),version:(null===(n=e.match(/CentOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Fedora",parse(e=i){var n;return{is:e.includes("Fedora"),version:(null===(n=e.match(/Fedora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Gentoo",parse:(e=i)=>({is:e.includes("Gentoo"),version:""})},{name:"Red Hat",parse(e=i){var n;return{is:e.includes("Red Hat"),version:(null===(n=e.match(/Red Hat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"SUSE",parse(e=i){var n;return{is:e.includes("SUSE"),version:(null===(n=e.match(/SUSE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Slackware",parse(e=i){var n;return{is:e.includes("Slackware"),version:(null===(n=e.match(/Slackware\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}];Oe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));var Me={name:"system",parse(e=i){let n="",r="";Oe.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";e.match(/(Win64|x64|WOW64|x86_64)/i)?a="Win64":e.match(/(Win32|x86|WOW32)/i)?a="Win32":e.match(/aarch64|arm64/)?a="ARM64":e.match(/arm32/)?a="ARM32":e.match(/iPhone/)?a="iPhone":e.match(/iPad/)?a="iPad":e.match(/iPod/)?a="iPod":e.match(/Android/)&&(a="Android");let o="",t=e+"|"+a;o=t.match(/armv?\d+/i)||t.match(/aarch64/)?"arm":t.match(/loongarch64/)?"loongarch":"x86";let s=e.match(/Win64|x64|WOW64|x86_64|aarch64|arm64|loongarch64/i)?64:32;return{system:n,systemVersion:r,platform:a,architecture:o,bitness:s}},async getInfo(){var e,n;let{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}=this.parse();for(let e of Oe)await e.is()&&(i=e.name,a=await e.version());var l,d;(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.platform&&(o=r.navigator.platform),null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)&&(t=await(null===(l=r.navigator.userAgentData)||void 0===l?void 0:l.getHighEntropyValues(["architecture"]).then((e=>e.architecture||t))),s=await(null===(d=r.navigator.userAgentData)||void 0===d?void 0:d.getHighEntropyValues(["bitness"]).then((e=>+e.bitness||s))));return{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}}};let De=[{name:"Mobile",parse:(e=i)=>({is:e.includes("Mobi")||e.includes("iPh")||e.includes("480")})},{name:"Tablet",parse:(e=i)=>({is:e.includes("Tablet")||e.includes("Pad")||e.includes("Nexus 7")}),async is(){return this.parse().is||"MacIntel"===(null==r?void 0:r.navigator.platform)&&(null==r?void 0:r.navigator.maxTouchPoints)>1}}];De.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));var ke={name:"device",parse(e=i){let n="Desktop";return De.forEach((function(r){r.parse(e).is&&(n=r.name)})),{device:n}},async getInfo(){var e;let n=(null==r?void 0:r.devicePixelRatio)||1,i=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.deviceMemory)||4;return Object.assign({devicePixelRatio:n,deviceMemory:i},this.parse())}},Ve={name:"gpu",parse:()=>({}),async getInfo(){let e="",n="";if(null!=r&&r.document){let o=r.document.createElement("canvas").getContext("experimental-webgl");if(o){var i,a;let r=o.getExtension("WEBGL_debug_renderer_info"),t=o.getParameter(r.UNMASKED_RENDERER_WEBGL);e=(null===(i=t.match(/ANGLE \((.+?),/))||void 0===i?void 0:i[1])||"",n=(null===(a=t.match(/, (.+?) (\(|vs_)/))||void 0===a?void 0:a[1])||""}}return{gpu:e,gpuModel:n}}};const We=/\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/,Re=/\b(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}\b/i,He=r.RTCPeerConnection||r.mozRTCPeerConnection||r.webkitRTCPeerConnection;var Le={name:"network",parse:()=>({}),async getInfo(){var e,n;let i="unknown",a=null==r||null===(e=r.navigator)||void 0===e?void 0:e.connection;return a&&(i=a.type||a.effectiveType,"2"!=i&&"unknown"!=i||(i="wifi")),{network:i,isOnline:(null==r||null===(n=r.navigator)||void 0===n?void 0:n.onLine)||!1,ip:await async function(){const e=new Set,n=n=>{var r;const i=null==n||null===(r=n.candidate)||void 0===r?void 0:r.candidate;if(i)for(const n of[We,Re]){const r=i.match(n);r&&e.add(r[0])}};return new Promise((function(r,i){if(He){const a=new He({iceServers:[{urls:"stun:stun.cloudflare.com:3478"},{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.services.mozilla.com"}]});a.addEventListener("icecandidate",n),a.createDataChannel(""),a.createOffer().then((e=>a.setLocalDescription(e)),i);let o=20,t=null,s=function(){try{a.removeEventListener("icecandidate",n),a.close()}catch{}t&&clearInterval(t)};t=setInterval((function(){let n=[...e];n.length?(s(),r(n[n.length-1])):o?o--:(s(),r(""))}),200)}else r("")}))}()}}},Fe={name:"battery",parse:()=>({}),async getInfo(){var e;let n=!0,i=1;return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.getBattery&&(n=await r.navigator.getBattery().then((e=>null==e?void 0:e.charging)),i=await r.navigator.getBattery().then((e=>+(null==e?void 0:e.level)||-1))),{isCharging:n,battery:i}}};var Ue={name:"screen",parse:()=>({}),async getInfo(){var e,n,i,a,o,t,s,l;return{screenWidth:(null==r||null===(e=r.screen)||void 0===e?void 0:e.width)||0,screenHeight:(null==r||null===(n=r.screen)||void 0===n?void 0:n.height)||0,clientWidth:(null==r||null===(i=r.document)||void 0===i||null===(i=i.documentElement)||void 0===i?void 0:i.clientWidth)||(null==r||null===(a=r.document)||void 0===a||null===(a=a.body)||void 0===a?void 0:a.clientWidth)||0,clientHeight:(null==r||null===(o=r.document)||void 0===o||null===(o=o.documentElement)||void 0===o?void 0:o.clientHeight)||(null==r||null===(t=r.document)||void 0===t||null===(t=t.body)||void 0===t?void 0:t.clientHeight)||0,screenFPS:await async function(){return new Promise((function(e){let n=0,r=1,i=[],a=function(o){if(n>0)if(r<12)i.push(o-n),n=o,r++,requestAnimationFrame(a);else{i.sort(),i=i.slice(1,11);let n=i.reduce(((e,n)=>e+n));const r=10*Math.round(1e4/n/10);e(r)}else n=o,requestAnimationFrame(a)};requestAnimationFrame(a)}))}(),screenColorDepth:null==r?void 0:r.screen.colorDepth,screenPixelDepth:null==r?void 0:r.screen.pixelDepth,screenOrientation:(null===(s=screen.orientation)||void 0===s?void 0:s.type)||"未知",isTouch:(null==r||null===(l=r.navigator)||void 0===l?void 0:l.maxTouchPoints)>0||!1}}},Ne={name:"language",parse:()=>({}),async getInfo(){var e,n,i;let a=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.language)||(null==r||null===(n=r.navigator)||void 0===n?void 0:n.browserLanguage)||(null==r||null===(i=r.navigator)||void 0===i?void 0:i.systemLanguage);if("string"!=typeof a)return"Unknown language";let o=a.split("-");return o[1]&&(o[1]=o[1].toUpperCase()),{language:o.join("_")}}},Ge={name:"timezone",parse:()=>({}),async getInfo(){var e;return{timezone:null===(e=Intl)||void 0===e||null===(e=e.DateTimeFormat())||void 0===e||null===(e=e.resolvedOptions())||void 0===e?void 0:e.timeZone}}};let _e=function(e,n){return e<<n|e>>>32-n},Qe=function(e,n){let r,i,a,o,t;return a=2147483648&e,o=2147483648&n,r=1073741824&e,i=1073741824&n,t=(1073741823&e)+(1073741823&n),r&i?2147483648^t^a^o:r|i?1073741824&t?3221225472^t^a^o:1073741824^t^a^o:t^a^o},Ye=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e&n|~e&r}(n,r,i),a),t)),Qe(_e(e,o),n)},je=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e&r|n&~r}(n,r,i),a),t)),Qe(_e(e,o),n)},qe=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e^n^r}(n,r,i),a),t)),Qe(_e(e,o),n)},Xe=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return n^(e|~r)}(n,r,i),a),t)),Qe(_e(e,o),n)},ze=function(e){let n,r,i="",a="";for(r=0;r<=3;r++)n=e>>>8*r&255,a="0"+n.toString(16),i+=a.substr(a.length-2,2);return i};function Ke(e){let n,r,i,a,o,t,s,l,d,u=Array();for(e=function(e){e=e.replace(/\x0d\x0a/g,"\n");let n="";for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i<128?n+=String.fromCharCode(i):i>127&&i<2048?(n+=String.fromCharCode(i>>6|192),n+=String.fromCharCode(63&i|128)):(n+=String.fromCharCode(i>>12|224),n+=String.fromCharCode(i>>6&63|128),n+=String.fromCharCode(63&i|128))}return n}(e),u=function(e){let n,r=e.length,i=r+8,a=16*((i-i%64)/64+1),o=Array(a-1),t=0,s=0;for(;s<r;)n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|e.charCodeAt(s)<<t,s++;return n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|128<<t,o[a-2]=r<<3,o[a-1]=r>>>29,o}(e),t=1732584193,s=4023233417,l=2562383102,d=271733878,n=0;n<u.length;n+=16)r=t,i=s,a=l,o=d,t=Ye(t,s,l,d,u[n+0],7,3614090360),d=Ye(d,t,s,l,u[n+1],12,3905402710),l=Ye(l,d,t,s,u[n+2],17,606105819),s=Ye(s,l,d,t,u[n+3],22,3250441966),t=Ye(t,s,l,d,u[n+4],7,4118548399),d=Ye(d,t,s,l,u[n+5],12,1200080426),l=Ye(l,d,t,s,u[n+6],17,2821735955),s=Ye(s,l,d,t,u[n+7],22,4249261313),t=Ye(t,s,l,d,u[n+8],7,1770035416),d=Ye(d,t,s,l,u[n+9],12,2336552879),l=Ye(l,d,t,s,u[n+10],17,4294925233),s=Ye(s,l,d,t,u[n+11],22,2304563134),t=Ye(t,s,l,d,u[n+12],7,1804603682),d=Ye(d,t,s,l,u[n+13],12,4254626195),l=Ye(l,d,t,s,u[n+14],17,2792965006),s=Ye(s,l,d,t,u[n+15],22,1236535329),t=je(t,s,l,d,u[n+1],5,4129170786),d=je(d,t,s,l,u[n+6],9,3225465664),l=je(l,d,t,s,u[n+11],14,643717713),s=je(s,l,d,t,u[n+0],20,3921069994),t=je(t,s,l,d,u[n+5],5,3593408605),d=je(d,t,s,l,u[n+10],9,38016083),l=je(l,d,t,s,u[n+15],14,3634488961),s=je(s,l,d,t,u[n+4],20,3889429448),t=je(t,s,l,d,u[n+9],5,568446438),d=je(d,t,s,l,u[n+14],9,3275163606),l=je(l,d,t,s,u[n+3],14,4107603335),s=je(s,l,d,t,u[n+8],20,1163531501),t=je(t,s,l,d,u[n+13],5,2850285829),d=je(d,t,s,l,u[n+2],9,4243563512),l=je(l,d,t,s,u[n+7],14,1735328473),s=je(s,l,d,t,u[n+12],20,2368359562),t=qe(t,s,l,d,u[n+5],4,4294588738),d=qe(d,t,s,l,u[n+8],11,2272392833),l=qe(l,d,t,s,u[n+11],16,1839030562),s=qe(s,l,d,t,u[n+14],23,4259657740),t=qe(t,s,l,d,u[n+1],4,2763975236),d=qe(d,t,s,l,u[n+4],11,1272893353),l=qe(l,d,t,s,u[n+7],16,4139469664),s=qe(s,l,d,t,u[n+10],23,3200236656),t=qe(t,s,l,d,u[n+13],4,681279174),d=qe(d,t,s,l,u[n+0],11,3936430074),l=qe(l,d,t,s,u[n+3],16,3572445317),s=qe(s,l,d,t,u[n+6],23,76029189),t=qe(t,s,l,d,u[n+9],4,3654602809),d=qe(d,t,s,l,u[n+12],11,3873151461),l=qe(l,d,t,s,u[n+15],16,530742520),s=qe(s,l,d,t,u[n+2],23,3299628645),t=Xe(t,s,l,d,u[n+0],6,4096336452),d=Xe(d,t,s,l,u[n+7],10,1126891415),l=Xe(l,d,t,s,u[n+14],15,2878612391),s=Xe(s,l,d,t,u[n+5],21,4237533241),t=Xe(t,s,l,d,u[n+12],6,1700485571),d=Xe(d,t,s,l,u[n+3],10,2399980690),l=Xe(l,d,t,s,u[n+10],15,4293915773),s=Xe(s,l,d,t,u[n+1],21,2240044497),t=Xe(t,s,l,d,u[n+8],6,1873313359),d=Xe(d,t,s,l,u[n+15],10,4264355552),l=Xe(l,d,t,s,u[n+6],15,2734768916),s=Xe(s,l,d,t,u[n+13],21,1309151649),t=Xe(t,s,l,d,u[n+4],6,4149444226),d=Xe(d,t,s,l,u[n+11],10,3174756917),l=Xe(l,d,t,s,u[n+2],15,718787259),s=Xe(s,l,d,t,u[n+9],21,3951481745),t=Qe(t,r),s=Qe(s,i),l=Qe(l,a),d=Qe(d,o);return(ze(t)+ze(s)+ze(l)+ze(d)).toUpperCase()}var $e={name:"webgl",async getInfo(){let e=r.document.createElement("canvas");e.width=256,e.height=128;let n=e.getContext("webgl2",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl2",{preserveDrawingBuffer:!0})||e.getContext("webgl",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl",{preserveDrawingBuffer:!0})||e.getContext("moz-webgl",{preserveDrawingBuffer:!0}),i=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,i);let a=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.7321,0]);n.bufferData(n.ARRAY_BUFFER,a,n.STATIC_DRAW),i.itemSize=3,i.numItems=3;let o=n.createProgram(),t=n.createShader(n.VERTEX_SHADER);n.shaderSource(t,"attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}"),n.compileShader(t);let s=n.createShader(n.FRAGMENT_SHADER);n.shaderSource(s,"precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}"),n.compileShader(s),n.attachShader(o,t),n.attachShader(o,s),n.linkProgram(o),n.useProgram(o),o.vertexPosAttrib=n.getAttribLocation(o,"attrVertex"),o.offsetUniform=n.getUniformLocation(o,"uniformOffset"),n.enableVertexAttribArray(o.vertexPosArray),n.vertexAttribPointer(o.vertexPosAttrib,i.itemSize,n.FLOAT,!1,0,0),n.uniform2f(o.offsetUniform,1,1),n.drawArrays(n.TRIANGLE_STRIP,0,i.numItems);let l=new Uint8Array(131072);n.readPixels(0,0,256,128,n.RGBA,n.UNSIGNED_BYTE,l);let d=JSON.stringify(l).replace(/,?"[0-9]+":/g,"");return""==d.replace(/^{[0]+}$/g,"")?"n/a":Ke(d)}},Ze={name:"canvas",async getInfo(){let e=r.document.createElement("canvas");e.width=1e3,e.height=200;let n=e.getContext("2d");return n.textBaseline="alphabetic",n.fillStyle="#f60",n.fillRect(150,50,100,100),n.fillStyle="#069",n.font="12pt Arial",n.fillText("😃just for test the canvas feature!",3,15),n.fillStyle="rgba(102, 204, 0, 0.2)",n.font="18pt Arial",n.fillText("😃just for test the canvas feature!",6,45),n.globalCompositeOperation="multiply",n.fillStyle="rgb(0,255,255)",n.beginPath(),n.arc(50,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,0,255)",n.beginPath(),n.arc(75,50,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,255,0)",n.beginPath(),n.arc(100,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),Ke(e.toDataURL())}},Je={name:"font-family",is(e="Arial"){if("string"!=typeof e||null==r||!r.document)return!1;let n="Arial",i=100,a=100,o=r.document.createElement("canvas"),t=o.getContext("2d",{willReadFrequently:!0});o.width=i,o.height=a,t.textAlign="center",t.fillStyle="black",t.textBaseline="middle";let s=function(e){t.clearRect(0,0,i,a),t.font=`100px ${e}, ${n}`,t.fillText("永",50,50);let r=t.getImageData(0,0,i,a).data;return[].slice.call(r).filter((function(e){return 0!=e}))};return s(n).join("")!==s(e).join("")}},en={name:"font",async getInfo(){let e=[];return["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"].forEach((function(n){Je.is(n)&&e.push(n)})),Ke(e.join(","))}},nn={name:"audio",getInfo:async()=>new Promise((function(e,n){let r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,44100,44100),i=r.createOscillator();i.type="triangle",i.frequency.setValueAtTime(1e4,r.currentTime);let a=r.createDynamicsCompressor();[["threshold",-50],["knee",40],["ratio",12],["reduction",-20],["attack",0],["release",.25]].forEach((function(e){void 0!==a[e[0]]&&"function"==typeof a[e[0]].setValueAtTime&&a[e[0]].setValueAtTime(e[1],r.currentTime)})),i.connect(a),a.connect(r.destination),i.start(0),r.startRendering();let o=setTimeout((function(){r.oncomplete=function(){},r=null,e(Ke("audio Timeout"))}),1e3);r.oncomplete=function(n){o&&clearTimeout(o);let r=n.renderedBuffer.getChannelData(0).slice(4500,5e3).reduce((function(e,n){return e+Math.abs(n)}),0).toString();i.disconnect(),a.disconnect(),e(Ke(r))}}))},rn={name:"mime",async getInfo(){var e;let n=[];return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.mimeTypes&&(n=Array.from(r.navigator.mimeTypes).map((e=>e.type))),Ke(n.join(","))}},an={name:"webgl",is(){if(null==r||!r.document)return!1;const e=r.document.createElement("canvas"),n=e.getContext("webgl")||e.getContext("experimental-webgl");return n&&n instanceof WebGLRenderingContext}},on={parse(e){let n={};return[Se,Me,ke].forEach((r=>{n=Object.assign(n,r.parse(e))})),n},async getInfo(e=["browser","system","device","gpu","network","battery","screen","language","timezone"]){let n={},r=[Se,Me,ke,Ve,Le,Fe,Ue,Ne,Ge].filter((n=>e.includes(n.name)));for(let e of r)n=Object.assign(n,await e.getInfo());return n},async getFingerprint(e=["webgl","canvas","font","audio","mime"]){let n={},r=[$e,Ze,en,nn,rn].filter((n=>e.includes(n.name))),{screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s}=await Ue.getInfo(),l=[i,JSON.stringify({screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s})];for(let e of r)n[e.name]=await e.getInfo(),l.push(n[e.name]);return n.value=Ke(l.join(",")),n},isSupport(e,n){let r=[Je,an].find((n=>e==n.name));return!!r&&r.is(n)}};export{on as default};
let e={};"undefined"!=typeof globalThis?e=globalThis:"undefined"!=typeof self?e=self:"undefined"!=typeof window?e=window:"undefined"!=typeof global&&(e=global);var n,r=e,i=null==r||null===(n=r.navigator)||void 0===n?void 0:n.userAgent,a={name:"Safari",parse(e=i){var n;return{is:e.includes("Safari"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},o={name:"Chrome",parse(e=i){var n,r;return{is:e.includes("Chrome")||e.includes("CriOS"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/CriOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["uaFullVersion"])).uaFullVersion||""}return this.parse().version}},t={name:"Edge",parse(e=i){var n,r,a,o;return{is:e.includes("Edge")||e.includes("Edg/")||e.includes("EdgA")||e.includes("EdgiOS"),version:(null===(n=e.match(/Edge\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Edg\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/EdgA\/([\d.]+)/))||void 0===a?void 0:a[1])||(null===(o=e.match(/EdgiOS\/([\d.]+)/))||void 0===o?void 0:o[1])||""}},async version(){return await o.version.bind(this)()}},s={name:"IE",parse(e=i){var n,r;return{is:e.includes("MSIE")||e.includes("Trident"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},l={name:"Firefox",parse(e=i){var n,r;return{is:e.includes("Firefox")||e.includes("FxiOS"),version:(null===(n=e.match(/Firefox\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/FxiOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},d={name:"Firefox Focus",parse(e=i){var n;return{is:e.includes("Focus"),version:(null===(n=e.match(/Focus\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},u={name:"Chromium",parse(e=i){var n;return{is:e.includes("Chromium"),version:(null===(n=e.match(/Chromium\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},v={name:"Opera",parse(e=i){var n,r;return{is:e.includes("Opera")||e.includes("OPR"),version:(null===(n=e.match(/Opera\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OPR\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},c={name:"Opera GX",parse(e=i){var n;let r=!1;return v.parse(e).is?r=e.includes("Edition GX"):e.includes("OPX/")&&(r=!0),{is:r,version:v.parse(e).version||(null===(n=e.match(/OPX\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},m={name:"Vivaldi",parse(e=i){var n,r;return{is:e.includes("Vivaldi"),version:(null===(n=e.match(/Vivaldi\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Chrome\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){return this.parse().is},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["brands"])).brands.find((e=>"Vivaldi"==e.brand)).version||""}return this.parse().version}},p={name:"Yandex",parse(e=i){var n;return{is:e.includes("YaBrowser"),version:(null===(n=e.match(/YaBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},h={name:"Brave",parse(e=i){var n;return{is:e.includes("Brave"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},is:async function(){var e;return!!(this.parse().is||null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.brave)}},g={name:"Arora",parse(e=i){var n;return{is:e.includes("Arora"),version:(null===(n=e.match(/Arora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},f={name:"Lunascape",parse(e=i){var n;return{is:e.includes("Lunascape"),version:(null===(n=e.match(/Lunascape[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},w={name:"QupZilla",parse(e=i){var n;return{is:e.includes("QupZilla"),version:(null===(n=e.match(/QupZilla[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},S={name:"Coc Coc",parse(e=i){var n;return{is:e.includes("coc_coc_browser"),version:(null===(n=e.match(/coc_coc_browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},b={name:"Kindle",parse(e=i){var n;return{is:e.includes("Kindle")||e.includes("Silk/"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},y={name:"Iceweasel",parse(e=i){var n;return{is:e.includes("Iceweasel"),version:(null===(n=e.match(/Iceweasel\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},A={name:"Konqueror",parse(e=i){var n;return{is:e.includes("Konqueror"),version:(null===(n=e.match(/Konqueror\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},B={name:"SeaMonkey",parse(e=i){var n;return{is:e.includes("SeaMonkey"),version:(null===(n=e.match(/SeaMonkey\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},C={name:"Epiphany",parse(e=i){var n;return{is:e.includes("Epiphany"),version:(null===(n=e.match(/Epiphany\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},E={name:"Whale",parse(e=i){var n;return{is:e.includes("Whale/"),version:(null===(n=e.match(/Whale\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};function T(e,n){var i;let a=null==r||null===(i=r.navigator)||void 0===i?void 0:i.mimeTypes;for(let r in a)if(a[r][e]&&a[r][e]==n)return a[r];return null}var x={name:"360",parse(e=i){var n,r;return{is:e.includes("QihooBrowser")||e.includes("QHBrowser")||e.includes(" 360 "),version:(null===(n=e.match(/QihooBrowser(HD)?\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Browser \(v([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;if(null!=r&&r.chrome){let n=parseInt(o.parse().version);T("type","application/360softmgrplugin")||T("type","application/mozilla-npqihooquicklogin")||T("type","application/npjlgplayer3-chrome-jlp")||n>36&&null!=r&&r.showModalDialog?e=!0:n>45&&(e=T("type","application/vnd.chromium.remoting-viewer"),!e&&n>=69&&(e=T("type","application/asx")))}return e}},P={name:"360SE",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SE"),version:{132:"16.0",122:"15.3",114:"15.0",108:"14.0",86:"13.0",78:"12.0",69:"11.0",63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[n]||""}},async is(){let e=!1;var n;await x.is()&&((T("type","application/gameplugin")||null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length)&&(e=!0));return e||l.parse().is||t.parse().is||v.parse().is?e:new Promise((function(e){return e(!1)}))}},I={name:"360EE",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360EE"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{122:"22.3",119:"22.0",108:"14.0",95:"21.0",86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}},async is(){let e=this.parse().is;if(T("type","application/cenroll.cenroll.version.1")||T("type","application/hwepass2001.installepass2001"))e=!0;else if(await x.is()){var n;null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.find((e=>"Not A(Brand"==e.brand||"Not?A_Brand"==e.brand))&&(e=!0)}return e}},O={name:"360AI",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SEAI"),version:{114:"1.0"}[n]||""}},async is(){let e=this.parse().is;var n;await x.is()&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length&&!T("type","application/gameplugin")&&(e=!0));return e}},M={name:"360AI",parse(e=i){var n;return{is:e.includes("360EEAI"),version:(null===(n=e.match(/360EE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};const D=()=>new Promise((e=>{var n;if(null==r||null===(n=r.webkit)||void 0===n||null===(n=n.messageHandlers)||void 0===n||!n.excuteCmd)return e({});{const n=`cv_${Date.now()%1e5}${100*Math.floor(Math.random())}`,i={key:"GetDeviceInfo",data:{},callback:n},a=JSON.stringify(i);r.webkit.messageHandlers.excuteCmd.postMessage(a),r[n]=function(i){delete r[n],e(JSON.parse(i||"{}"))}}}));var k={name:"360EE",parse:()=>({is:!1,version:""}),is:async()=>D().then((function(e){return"360csexm"==(null==e?void 0:e.pid)||!1})),version:async()=>D().then((function(e){return(null==e?void 0:e.module_version)||""}))},V={name:"360ENT",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360ENT"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}}},W={name:"UC",parse(e=i){var n;return{is:e.includes("UCBrowser")||e.includes(" UBrowser")||e.includes("UCWEB"),version:(null===(n=e.match(/UC?Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},R={name:"QQBrowser",parse(e=i){var n;return{is:e.includes("QQBrowser"),version:(null===(n=e.match(/QQBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},H={name:"BaiduBrowser",parse(e=i){var n;return{is:e.includes("BIDUBrowser")||e.includes("baidubrowser"),version:(null===(n=e.match(/BIDUBrowser[\s\/]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},L={name:"Maxthon",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("Maxthon"),version:(null===(n=e.match(/Maxthon\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"7.0",78:"6.0"}[a]||""}},is(){return this.parse().is||(null==r?void 0:r.maxthon)}},F={name:"Sogou",parse(e=i){var n,r,a=parseInt(o.parse(e).version);return{is:e.includes("MetaSr")||e.includes("Sogou"),version:(null===(n=e.match(/SogouMobileBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/SogouMSE\/([\d.]+)/))||void 0===r?void 0:r[1])||{116:"13.0",94:"12.0",80:"11.0"}[a]||""}}},U={name:"Liebao",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("LBBROWSER")||e.includes("LieBaoFast"),version:(null===(n=e.match(/LieBaoFast\/([\d.]+)/))||void 0===n?void 0:n[1])||{112:"9.0",79:"8.0",57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[r]||""}},is(){return this.parse().is||(null==r?void 0:r.liebao)}},N={name:"2345Browser",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("2345Explorer")||e.includes("Mb2345Browser")||e.includes("2345chrome"),version:(null===(n=e.match(/2345Explorer\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Mb2345Browser\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"13.0",69:"10.0",55:"9.9"}[a]||""}},async is(){let e=this.parse().is;var n,i;e||(e=(null==r?void 0:r.chrome)&&((null==r||null===(n=r.chrome)||void 0===n?void 0:n.adblock2345)||(null==r||null===(i=r.chrome)||void 0===i?void 0:i.common2345)));return e}},G={name:"115Browser",parse(e=i){var n;return{is:e.includes("115Browser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},_={name:"TheWorld",parse(e=i){var n;return{is:e.includes("TheWorld"),version:(null===(n=e.match(/TheWorld ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Q={name:"Quark",parse(e=i){var n,r;return{is:e.includes("Quark"),version:(null===(n=e.match(/Quark\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/QuarkPC\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},Y={name:"Qiyu",parse(e=i){var n;return{is:e.includes("Qiyu"),version:(null===(n=e.match(/Qiyu\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},j={name:"HONOR",parse(e=i){var n,r;return{is:e.includes("HONOR")||e.includes("bdhonorbrowser/"),version:(null===(n=e.match(/bdhonorbrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},q={name:"Huawei",parse(e=i){var n,r,a;return{is:e.includes("HuaweiBrowser")||e.includes("HBPC/"),version:(null===(n=e.match(/HuaweiBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/HBPC\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/Version\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},X={name:"OPPO",parse(e=i){var n;return{is:e.includes("HeyTapBrowser")||e.includes("OPPO"),version:(null===(n=e.match(/HeyTapBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},z={name:"Vivo",parse(e=i){var n;return{is:e.includes("VivoBrowser"),version:(null===(n=e.match(/VivoBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},K={name:"Xiaomi",parse(e=i){var n;return{is:e.includes("MiuiBrowser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},$={name:"Meizu",parse(e=i){var n;return{is:e.includes("MZBrowser"),version:(null===(n=e.match(/MZBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Z={name:"OnePlus",parse:(e=i)=>({is:e.includes("ONEPLUS"),version:""})},J={name:"Samsung",parse(e=i){var n;return{is:e.includes("SamsungBrowser"),version:(null===(n=e.match(/SamsungBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ee={name:"Lenovo",parse(e=i){var n;return{is:e.includes("SLBrowser"),version:(null===(n=e.match(/SLBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ne={name:"QQ",parse(e=i){var n;return{is:e.includes("QQ/"),version:(null===(n=e.match(/QQ\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},re={name:"Baidu",parse(e=i){var n;return{is:e.includes("Baidu")||e.includes("baiduboxapp")||e.includes("BaiduD"),version:(null===(n=e.match(/baiduboxapp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ie={name:"Wechat",parse(e=i){var n;return{is:e.includes("MicroMessenger"),version:(null===(n=e.match(/MicroMessenger\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ae={name:"WechatWork",parse(e=i){var n;return{is:e.includes("wxwork"),version:(null===(n=e.match(/wxwork\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},oe={name:"Taobao",parse(e=i){var n;return{is:e.includes("AliApp(TB"),version:(null===(n=e.match(/AliApp\(TB\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},te={name:"Alipay",parse(e=i){var n;return{is:e.includes("AliApp(AP"),version:(null===(n=e.match(/AliApp\(AP\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},se={name:"Weibo",parse(e=i){var n;return{is:e.includes("Weibo"),version:(null===(n=e.match(/weibo__([\d.]+)/))||void 0===n?void 0:n[1])||""}}},le={name:"Douban",parse(e=i){var n;return{is:e.includes("com.douban.frodo"),version:(null===(n=e.match(/com.douban.frodo\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de={name:"Toutiao",parse(e=i){var n;return{is:e.includes("NewsArticle"),version:(null===(n=e.match(/NewsArticle\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ue={name:"WebKit",parse:(e=i)=>({is:e.includes("AppleWebKit")})},ve={name:"Trident",parse:(e=i)=>({is:e.includes("Trident")||e.includes("NET CLR")})},ce={name:"Gecko",parse:(e=i)=>({is:e.includes("Gecko/")})},me={name:"Servo",parse:(e=i)=>({is:e.includes("Servo/")})},pe={name:"Presto",parse:(e=i)=>({is:e.includes("Presto")})},he={name:"KHTML",parse:(e=i)=>({is:e.includes("KHTML/")})};let ge=[].concat([a,o,t,s,l,d,u,v,c,m,p,h,g,f,w,S,b,y,A,B,C,E,x,I,P,k,O,M,V,W,R,H,L,F,U,N,G,_,Q,Y],[j,q,X,z,K,$,Z,J,ee],[ne,re,ie,ae,oe,te,se,le,{name:"Suning",parse(e=i){var n;return{is:e.includes("SNEBUY-APP"),version:(null===(n=e.match(/SNEBUY-APP([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"iQIYI",parse(e=i){var n;return{is:e.includes("IqiyiApp"),version:(null===(n=e.match(/IqiyiVersion\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"DingTalk",parse(e=i){var n;return{is:e.includes("DingTalk"),version:(null===(n=e.match(/DingTalk\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Douyin",parse(e=i){var n;return{is:e.includes("aweme"),version:(null===(n=e.match(/app_version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de,{name:"Facebook",parse(e=i){var n;return{is:e.includes("Facebook")||e.includes("FBAV/"),version:(null===(n=e.match(/FBAV\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"WhatsApp",parse(e=i){var n;return{is:e.includes("WhatsApp"),version:(null===(n=e.match(/WhatsApp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"TikTok",parse(e=i){var n;return{is:e.includes("TikTok"),version:(null===(n=e.match(/TikTok\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Line",parse(e=i){var n;return{is:e.includes("Line/"),version:(null===(n=e.match(/Line\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Telegram",parse(e=i){var n;return{is:e.includes("Telegram"),version:(null===(n=e.match(/Telegram\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Instagram",parse(e=i){var n;return{is:e.includes("Instagram"),version:(null===(n=e.match(/Instagram ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"X",parse:(e=i)=>({is:e.includes("Twitter ")||e.includes("TwitterAndroid"),version:""})},{name:"Snapchat",parse(e=i){var n;return{is:e.includes("Snapchat"),version:(null===(n=e.match(/Snapchat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}],[{name:"Twitterbot",parse:(e=i)=>({is:e.includes("Twitterbot"),version:""})},{name:"TelegramBot",parse:(e=i)=>({is:e.includes("TelegramBot"),version:""})},{name:"Googlebot",parse(e=i){var n;return{is:e.includes("Googlebot"),version:(null===(n=e.match(/Googlebot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Baiduspider",parse(e=i){var n;return{is:e.includes("Baiduspider"),version:(null===(n=e.match(/Baiduspider(-render)?\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Sogouspider",parse(e=i){var n;return{is:e.match(/Sogou (\S+) Spider\/([\d.]+)/i),version:(null===(n=e.match(/Sogou (\S+) Spider\/([\d.]+)/i))||void 0===n?void 0:n[1])||""}}},{name:"Bingbot",parse(e=i){var n;return{is:e.includes("bingbot"),version:(null===(n=e.match(/bingbot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"360Spider",parse:(e=i)=>({is:e.includes("360Spider")||e.includes("HaosouSpider"),version:""})},{name:"Bytespider",parse:(e=i)=>({is:e.includes("Bytespider"),version:""})},{name:"YisouSpider",parse(e=i){var n;return{is:e.includes("YisouSpider"),version:(null===(n=e.match(/YisouSpider\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YodaoBot",parse(e=i){var n;return{is:e.includes("YodaoBot"),version:(null===(n=e.match(/YodaoBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YandexBot",parse(e=i){var n;return{is:e.includes("YandexBot"),version:(null===(n=e.match(/YandexBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Yahoo",parse:(e=i)=>({is:e.includes("Yahoo!"),version:""})},{name:"ChatGPT",parse(e=i){var n,r,a;return{is:e.includes("OAI-SearchBot")||e.includes("ChatGPT-User")||e.includes("GPTBot"),version:(null===(n=e.match(/OAI-SearchBot\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/ChatGPT-User\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/GPTBot\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},{name:"Headless",parse(e=i){var n;return{is:e.includes("HeadlessChrome/"),version:(null===(n=e.match(/HeadlessChrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},async is(){return this.parse().is||""==(null==r?void 0:r.navigator)}}]);ge.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));let fe=[ue,ve,ce,me,pe,he];fe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));const we=function(e){let{userAgent:n,engine:r,browser:i,browserVersion:a}=e;var s,l;("Chrome"==i&&n.match(/\S+Browser/)&&(i=n.match(/\S+Browser/)[0]),"Chrome"==i&&n.match(/\S+Browser/))&&(a=(null===(s=n.replace(/^.*Browser\/([\d.]+).*$/))||void 0===s?void 0:s[1])||"");a||(a=(null===(l=n.match(/Version\/([\d.]+)/))||void 0===l?void 0:l[1])||"");return t.parse(n).is?r=parseInt(t.parse(n).version)>75?"Blink":"EdgeHTML":o.parse(n).is&&parseInt(o.parse(n).version)>27&&(r="Blink"),{userAgent:n,engine:r,browser:i,browserVersion:a}};var Se={name:"browser",parse(e=i){let n="",r="";ge.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";fe.forEach((function(n){n.parse(e).is&&(a=n.name)})),({engine:a,browser:n,browserVersion:r}=we({userAgent:e,engine:a,browser:n,browserVersion:r}));let o=e.includes("; wv)"),t=["Googlebot","Baiduspider","Sogouspider","Bingbot","360Spider","Bytespider","YandexBot"].includes(n);return{browser:n,browserVersion:r,engine:a,isWebview:o,isRobot:t}},async getInfo(){var e;let{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s}=this.parse();for(let e of ge)await e.is()&&(n=e.name,a=await e.version());return({engine:o,browser:n,browserVersion:a}=we({userAgent:i,engine:o,browser:n,browserVersion:a})),{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s,cookieEnabled:null==r||null===(e=r.navigator)||void 0===e?void 0:e.cookieEnabled,userAgent:i}}},be={name:"Windows",parse(e=i){var n;let r=(null===(n=e.match(/^Mozilla\/\d.0 \(Windows NT ([\d.]+)[;)].*$/))||void 0===n?void 0:n[1])||"";return{is:e.includes("Windows"),version:{"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"}[r]||r}},async version(){var e;let n=this.parse().version;if(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.userAgentData){const e=await r.navigator.userAgentData.getHighEntropyValues(["platformVersion"]);if("Windows"===e.platform){n=parseInt(e.platformVersion.split(".")[0])>=13?"11":"10"}}return n}},ye={name:"Linux",parse:(e=i)=>({is:e.includes("Linux")||e.includes("X11"),version:""})},Ae={name:"macOS",parse(e=i){var n;return{is:e.includes("Macintosh"),version:(null===(n=e.match(/Mac OS X -?([\d_\.]+)/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}}},Be={name:"Android",parse(e=i){var n;return{is:e.includes("Android")||e.includes("Adr"),version:(null===(n=e.match(/Android ([\d.]+);/))||void 0===n?void 0:n[1])||""}}},Ce={name:"HarmonyOS",parse(e=i){var n,r;let a=(null===(n=e.match(/HarmonyOS (\d+.\d+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OpenHarmony(\d+.\d+)/))||void 0===r?void 0:r[1])||"";if(!a){var o,t;let n=+(null===(o=e.match(/HMSCore (\d+.\d+)/))||void 0===o?void 0:o[1])||0;n>=6.1?a="4.0":n>=6?a="3.0":n>=5?a="2.0":n>=4&&(a="1.0"),a={10:"3.0",12:"4.0"}[(null===(t=e.match(/Android (\d+);/))||void 0===t?void 0:t[1])||0]||a}return{is:e.includes("HarmonyOS")||e.includes("OpenHarmony")||e.includes("ArkWeb"),version:a}}},Ee={name:"Ubuntu",parse:(e=i)=>({is:e.includes("Ubuntu"),version:""})},Te={name:"FreeBSD",parse:(e=i)=>({is:e.includes("FreeBSD"),version:""})},xe={name:"Debian",parse(e=i){var n;return{is:e.includes("Debian"),version:(null===(n=e.match(/Debian\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Pe={name:"Deepin",parse(e=i){var n;return{is:e.includes("Deepin"),version:(null===(n=e.match(/Deepin ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Ie={name:"iOS",parse(e=i){var n;return{is:e.includes("like Mac OS X"),version:(null===(n=e.match(/OS ([\d_]+) like/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}},async is(){let e=this.parse().is;var n;if(!e&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)){return"iOS"===(await r.navigator.userAgentData.getHighEntropyValues(["platform"])).platform}return e},async version(){var e;let n=this.parse().version;if(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.userAgentData){return(await r.navigator.userAgentData.getHighEntropyValues(["platformVersion"])).platformVersion}return n}};let Oe=[be,ye,Ae,Be,Ce,Ee,Te,xe,Pe,Ie,{name:"Windows Phone",parse(e=i){var n;return{is:e.includes("IEMobile")||e.includes("Windows Phone"),version:(null===(n=e.match(/Windows Phone( OS)? ([\d.]+);/))||void 0===n?void 0:n[2])||""}}},{name:"BlackBerry",parse:(e=i)=>({is:e.includes("BlackBerry")||e.includes("RIM"),version:""})},{name:"MeeGo",parse:(e=i)=>({is:e.includes("MeeGo"),version:""})},{name:"Symbian",parse(e=i){var n;return{is:e.includes("Symbian"),version:(null===(n=e.match(/Series60\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Chrome OS",parse(e=i){var n,r;return{is:e.includes("CrOS"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},{name:"WebOS",parse(e=i){var n;return{is:e.includes("hpwOS"),version:(null===(n=e.match(/hpwOS\/([\d.]+);/))||void 0===n?void 0:n[1])||""}}},{name:"UOS",parse(e=i){var n;return{is:e.includes("UOS"),version:(null===(n=e.match(/UOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"CentOS",parse(e=i){var n;return{is:e.includes("CentOS"),version:(null===(n=e.match(/CentOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Fedora",parse(e=i){var n;return{is:e.includes("Fedora"),version:(null===(n=e.match(/Fedora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Gentoo",parse:(e=i)=>({is:e.includes("Gentoo"),version:""})},{name:"Red Hat",parse(e=i){var n;return{is:e.includes("Red Hat"),version:(null===(n=e.match(/Red Hat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"SUSE",parse(e=i){var n;return{is:e.includes("SUSE"),version:(null===(n=e.match(/SUSE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Slackware",parse(e=i){var n;return{is:e.includes("Slackware"),version:(null===(n=e.match(/Slackware\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}];Oe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));var Me={name:"system",parse(e=i){let n="",r="";Oe.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";e.match(/(Win64|x64|WOW64|x86_64)/i)?a="Win64":e.match(/(Win32|x86|WOW32)/i)?a="Win32":e.match(/aarch64|arm64/)?a="ARM64":e.match(/arm32/)?a="ARM32":e.match(/iPhone/)?a="iPhone":e.match(/iPad/)?a="iPad":e.match(/iPod/)?a="iPod":e.match(/Android/)&&(a="Android");let o="",t=e+"|"+a;o=t.match(/armv?\d+/i)||t.match(/aarch64/)?"arm":t.match(/loongarch64/)?"loongarch":"x86";let s=e.match(/Win64|x64|WOW64|x86_64|aarch64|arm64|loongarch64/i)?64:32;return{system:n,systemVersion:r,platform:a,architecture:o,bitness:s}},async getInfo(){var e,n;let{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}=this.parse();for(let e of Oe)await e.is()&&(i=e.name,a=await e.version());var l,d;(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.platform&&(o=r.navigator.platform),null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)&&(t=await(null===(l=r.navigator.userAgentData)||void 0===l?void 0:l.getHighEntropyValues(["architecture"]).then((e=>e.architecture||t))),s=await(null===(d=r.navigator.userAgentData)||void 0===d?void 0:d.getHighEntropyValues(["bitness"]).then((e=>+e.bitness||s))));return{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}}};let De=[{name:"Mobile",parse:(e=i)=>({is:e.includes("Mobi")||e.includes("iPh")||e.includes("480")})},{name:"Tablet",parse:(e=i)=>({is:e.includes("Tablet")||e.includes("Pad")||e.includes("Nexus 7")}),async is(){return this.parse().is||"MacIntel"===(null==r?void 0:r.navigator.platform)&&(null==r?void 0:r.navigator.maxTouchPoints)>1}}];De.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));var ke={name:"device",parse(e=i){let n="Desktop";return De.forEach((function(r){r.parse(e).is&&(n=r.name)})),{device:n}},async getInfo(){var e;let n=(null==r?void 0:r.devicePixelRatio)||1,i=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.deviceMemory)||4;return Object.assign({devicePixelRatio:n,deviceMemory:i},this.parse())}},Ve={name:"gpu",parse:()=>({}),async getInfo(){let e="",n="";if(null!=r&&r.document){let o=r.document.createElement("canvas").getContext("experimental-webgl");if(o){var i,a;let r=o.getExtension("WEBGL_debug_renderer_info"),t=o.getParameter(r.UNMASKED_RENDERER_WEBGL);e=(null===(i=t.match(/ANGLE \((.+?),/))||void 0===i?void 0:i[1])||"",n=(null===(a=t.match(/, (.+?) (\(|vs_)/))||void 0===a?void 0:a[1])||""}}return{gpu:e,gpuModel:n}}};const We=/\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/,Re=/\b(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}\b/i,He=r.RTCPeerConnection||r.mozRTCPeerConnection||r.webkitRTCPeerConnection;var Le={name:"network",parse:()=>({}),async getInfo(){var e,n;let i="unknown",a=null==r||null===(e=r.navigator)||void 0===e?void 0:e.connection;return a&&(i=a.type||a.effectiveType,"2"!=i&&"unknown"!=i||(i="wifi")),{network:i,isOnline:(null==r||null===(n=r.navigator)||void 0===n?void 0:n.onLine)||!1,ip:await async function(){const e=new Set,n=n=>{var r;const i=null==n||null===(r=n.candidate)||void 0===r?void 0:r.candidate;if(i)for(const n of[We,Re]){const r=i.match(n);r&&e.add(r[0])}};return new Promise((function(r,i){if(He){const a=new He({iceServers:[{urls:"stun:stun.cloudflare.com:3478"},{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.services.mozilla.com"}]});a.addEventListener("icecandidate",n),a.createDataChannel(""),a.createOffer().then((e=>a.setLocalDescription(e)),i);let o=20,t=null,s=function(){try{a.removeEventListener("icecandidate",n),a.close()}catch{}t&&clearInterval(t)};t=setInterval((function(){let n=[...e];n.length?(s(),r(n[n.length-1])):o?o--:(s(),r(""))}),200)}else r("")}))}()}}},Fe={name:"battery",parse:()=>({}),async getInfo(){var e;let n=!0,i=1;return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.getBattery&&(n=await r.navigator.getBattery().then((e=>null==e?void 0:e.charging)),i=await r.navigator.getBattery().then((e=>+(null==e?void 0:e.level)||-1))),{isCharging:n,battery:i}}};var Ue={name:"screen",parse:()=>({}),async getInfo(){var e,n,i,a,o,t,s,l;return{screenWidth:(null==r||null===(e=r.screen)||void 0===e?void 0:e.width)||0,screenHeight:(null==r||null===(n=r.screen)||void 0===n?void 0:n.height)||0,clientWidth:(null==r||null===(i=r.document)||void 0===i||null===(i=i.documentElement)||void 0===i?void 0:i.clientWidth)||(null==r||null===(a=r.document)||void 0===a||null===(a=a.body)||void 0===a?void 0:a.clientWidth)||0,clientHeight:(null==r||null===(o=r.document)||void 0===o||null===(o=o.documentElement)||void 0===o?void 0:o.clientHeight)||(null==r||null===(t=r.document)||void 0===t||null===(t=t.body)||void 0===t?void 0:t.clientHeight)||0,screenFPS:await async function(){return new Promise((function(e){let n=0,r=1,i=[],a=function(o){if(n>0)if(r<12)i.push(o-n),n=o,r++,requestAnimationFrame(a);else{i.sort(),i=i.slice(1,11);let n=i.reduce(((e,n)=>e+n));const r=10*Math.round(1e4/n/10);e(r)}else n=o,requestAnimationFrame(a)};requestAnimationFrame(a)}))}(),screenColorDepth:null==r?void 0:r.screen.colorDepth,screenPixelDepth:null==r?void 0:r.screen.pixelDepth,screenOrientation:(null===(s=screen.orientation)||void 0===s?void 0:s.type)||"未知",isTouch:(null==r||null===(l=r.navigator)||void 0===l?void 0:l.maxTouchPoints)>0||!1}}},Ne={name:"language",parse:()=>({}),async getInfo(){var e,n,i;let a=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.language)||(null==r||null===(n=r.navigator)||void 0===n?void 0:n.browserLanguage)||(null==r||null===(i=r.navigator)||void 0===i?void 0:i.systemLanguage);if("string"!=typeof a)return"Unknown language";let o=a.split("-");return o[1]&&(o[1]=o[1].toUpperCase()),{language:o.join("_")}}},Ge={name:"timezone",parse:()=>({}),async getInfo(){var e;return{timezone:null===(e=Intl)||void 0===e||null===(e=e.DateTimeFormat())||void 0===e||null===(e=e.resolvedOptions())||void 0===e?void 0:e.timeZone}}};let _e=function(e,n){return e<<n|e>>>32-n},Qe=function(e,n){let r,i,a,o,t;return a=2147483648&e,o=2147483648&n,r=1073741824&e,i=1073741824&n,t=(1073741823&e)+(1073741823&n),r&i?2147483648^t^a^o:r|i?1073741824&t?3221225472^t^a^o:1073741824^t^a^o:t^a^o},Ye=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e&n|~e&r}(n,r,i),a),t)),Qe(_e(e,o),n)},je=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e&r|n&~r}(n,r,i),a),t)),Qe(_e(e,o),n)},qe=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e^n^r}(n,r,i),a),t)),Qe(_e(e,o),n)},Xe=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return n^(e|~r)}(n,r,i),a),t)),Qe(_e(e,o),n)},ze=function(e){let n,r,i="",a="";for(r=0;r<=3;r++)n=e>>>8*r&255,a="0"+n.toString(16),i+=a.substr(a.length-2,2);return i};function Ke(e){let n,r,i,a,o,t,s,l,d,u=Array();for(e=function(e){e=e.replace(/\x0d\x0a/g,"\n");let n="";for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i<128?n+=String.fromCharCode(i):i>127&&i<2048?(n+=String.fromCharCode(i>>6|192),n+=String.fromCharCode(63&i|128)):(n+=String.fromCharCode(i>>12|224),n+=String.fromCharCode(i>>6&63|128),n+=String.fromCharCode(63&i|128))}return n}(e),u=function(e){let n,r=e.length,i=r+8,a=16*((i-i%64)/64+1),o=Array(a-1),t=0,s=0;for(;s<r;)n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|e.charCodeAt(s)<<t,s++;return n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|128<<t,o[a-2]=r<<3,o[a-1]=r>>>29,o}(e),t=1732584193,s=4023233417,l=2562383102,d=271733878,n=0;n<u.length;n+=16)r=t,i=s,a=l,o=d,t=Ye(t,s,l,d,u[n+0],7,3614090360),d=Ye(d,t,s,l,u[n+1],12,3905402710),l=Ye(l,d,t,s,u[n+2],17,606105819),s=Ye(s,l,d,t,u[n+3],22,3250441966),t=Ye(t,s,l,d,u[n+4],7,4118548399),d=Ye(d,t,s,l,u[n+5],12,1200080426),l=Ye(l,d,t,s,u[n+6],17,2821735955),s=Ye(s,l,d,t,u[n+7],22,4249261313),t=Ye(t,s,l,d,u[n+8],7,1770035416),d=Ye(d,t,s,l,u[n+9],12,2336552879),l=Ye(l,d,t,s,u[n+10],17,4294925233),s=Ye(s,l,d,t,u[n+11],22,2304563134),t=Ye(t,s,l,d,u[n+12],7,1804603682),d=Ye(d,t,s,l,u[n+13],12,4254626195),l=Ye(l,d,t,s,u[n+14],17,2792965006),s=Ye(s,l,d,t,u[n+15],22,1236535329),t=je(t,s,l,d,u[n+1],5,4129170786),d=je(d,t,s,l,u[n+6],9,3225465664),l=je(l,d,t,s,u[n+11],14,643717713),s=je(s,l,d,t,u[n+0],20,3921069994),t=je(t,s,l,d,u[n+5],5,3593408605),d=je(d,t,s,l,u[n+10],9,38016083),l=je(l,d,t,s,u[n+15],14,3634488961),s=je(s,l,d,t,u[n+4],20,3889429448),t=je(t,s,l,d,u[n+9],5,568446438),d=je(d,t,s,l,u[n+14],9,3275163606),l=je(l,d,t,s,u[n+3],14,4107603335),s=je(s,l,d,t,u[n+8],20,1163531501),t=je(t,s,l,d,u[n+13],5,2850285829),d=je(d,t,s,l,u[n+2],9,4243563512),l=je(l,d,t,s,u[n+7],14,1735328473),s=je(s,l,d,t,u[n+12],20,2368359562),t=qe(t,s,l,d,u[n+5],4,4294588738),d=qe(d,t,s,l,u[n+8],11,2272392833),l=qe(l,d,t,s,u[n+11],16,1839030562),s=qe(s,l,d,t,u[n+14],23,4259657740),t=qe(t,s,l,d,u[n+1],4,2763975236),d=qe(d,t,s,l,u[n+4],11,1272893353),l=qe(l,d,t,s,u[n+7],16,4139469664),s=qe(s,l,d,t,u[n+10],23,3200236656),t=qe(t,s,l,d,u[n+13],4,681279174),d=qe(d,t,s,l,u[n+0],11,3936430074),l=qe(l,d,t,s,u[n+3],16,3572445317),s=qe(s,l,d,t,u[n+6],23,76029189),t=qe(t,s,l,d,u[n+9],4,3654602809),d=qe(d,t,s,l,u[n+12],11,3873151461),l=qe(l,d,t,s,u[n+15],16,530742520),s=qe(s,l,d,t,u[n+2],23,3299628645),t=Xe(t,s,l,d,u[n+0],6,4096336452),d=Xe(d,t,s,l,u[n+7],10,1126891415),l=Xe(l,d,t,s,u[n+14],15,2878612391),s=Xe(s,l,d,t,u[n+5],21,4237533241),t=Xe(t,s,l,d,u[n+12],6,1700485571),d=Xe(d,t,s,l,u[n+3],10,2399980690),l=Xe(l,d,t,s,u[n+10],15,4293915773),s=Xe(s,l,d,t,u[n+1],21,2240044497),t=Xe(t,s,l,d,u[n+8],6,1873313359),d=Xe(d,t,s,l,u[n+15],10,4264355552),l=Xe(l,d,t,s,u[n+6],15,2734768916),s=Xe(s,l,d,t,u[n+13],21,1309151649),t=Xe(t,s,l,d,u[n+4],6,4149444226),d=Xe(d,t,s,l,u[n+11],10,3174756917),l=Xe(l,d,t,s,u[n+2],15,718787259),s=Xe(s,l,d,t,u[n+9],21,3951481745),t=Qe(t,r),s=Qe(s,i),l=Qe(l,a),d=Qe(d,o);return(ze(t)+ze(s)+ze(l)+ze(d)).toUpperCase()}var $e={name:"webgl",async getInfo(){let e=r.document.createElement("canvas");e.width=256,e.height=128;let n=e.getContext("webgl2",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl2",{preserveDrawingBuffer:!0})||e.getContext("webgl",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl",{preserveDrawingBuffer:!0})||e.getContext("moz-webgl",{preserveDrawingBuffer:!0}),i=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,i);let a=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.7321,0]);n.bufferData(n.ARRAY_BUFFER,a,n.STATIC_DRAW),i.itemSize=3,i.numItems=3;let o=n.createProgram(),t=n.createShader(n.VERTEX_SHADER);n.shaderSource(t,"attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}"),n.compileShader(t);let s=n.createShader(n.FRAGMENT_SHADER);n.shaderSource(s,"precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}"),n.compileShader(s),n.attachShader(o,t),n.attachShader(o,s),n.linkProgram(o),n.useProgram(o),o.vertexPosAttrib=n.getAttribLocation(o,"attrVertex"),o.offsetUniform=n.getUniformLocation(o,"uniformOffset"),n.enableVertexAttribArray(o.vertexPosArray),n.vertexAttribPointer(o.vertexPosAttrib,i.itemSize,n.FLOAT,!1,0,0),n.uniform2f(o.offsetUniform,1,1),n.drawArrays(n.TRIANGLE_STRIP,0,i.numItems);let l=new Uint8Array(131072);n.readPixels(0,0,256,128,n.RGBA,n.UNSIGNED_BYTE,l);let d=JSON.stringify(l).replace(/,?"[0-9]+":/g,"");return""==d.replace(/^{[0]+}$/g,"")?"n/a":Ke(d)}},Ze={name:"canvas",async getInfo(){let e=r.document.createElement("canvas");e.width=1e3,e.height=200;let n=e.getContext("2d");return n.textBaseline="alphabetic",n.fillStyle="#f60",n.fillRect(150,50,100,100),n.fillStyle="#069",n.font="12pt Arial",n.fillText("😃just for test the canvas feature!",3,15),n.fillStyle="rgba(102, 204, 0, 0.2)",n.font="18pt Arial",n.fillText("😃just for test the canvas feature!",6,45),n.globalCompositeOperation="multiply",n.fillStyle="rgb(0,255,255)",n.beginPath(),n.arc(50,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,0,255)",n.beginPath(),n.arc(75,50,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,255,0)",n.beginPath(),n.arc(100,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),Ke(e.toDataURL())}},Je={name:"font-family",is(e="Arial"){if("string"!=typeof e||null==r||!r.document)return!1;let n="Arial",i=100,a=100,o=r.document.createElement("canvas"),t=o.getContext("2d",{willReadFrequently:!0});o.width=i,o.height=a,t.textAlign="center",t.fillStyle="black",t.textBaseline="middle";let s=function(e){t.clearRect(0,0,i,a),t.font=`100px ${e}, ${n}`,t.fillText("永",50,50);let r=t.getImageData(0,0,i,a).data;return[].slice.call(r).filter((function(e){return 0!=e}))};return s(n).join("")!==s(e).join("")}},en={name:"font",async getInfo(){let e=[];return["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"].forEach((function(n){Je.is(n)&&e.push(n)})),Ke(e.join(","))}},nn={name:"audio",getInfo:async()=>new Promise((function(e,n){let r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,44100,44100),i=r.createOscillator();i.type="triangle",i.frequency.setValueAtTime(1e4,r.currentTime);let a=r.createDynamicsCompressor();[["threshold",-50],["knee",40],["ratio",12],["reduction",-20],["attack",0],["release",.25]].forEach((function(e){void 0!==a[e[0]]&&"function"==typeof a[e[0]].setValueAtTime&&a[e[0]].setValueAtTime(e[1],r.currentTime)})),i.connect(a),a.connect(r.destination),i.start(0),r.startRendering();let o=setTimeout((function(){r.oncomplete=function(){},r=null,e(Ke("audio Timeout"))}),1e3);r.oncomplete=function(n){o&&clearTimeout(o);let r=n.renderedBuffer.getChannelData(0).slice(4500,5e3).reduce((function(e,n){return e+Math.abs(n)}),0).toString();i.disconnect(),a.disconnect(),e(Ke(r))}}))},rn={name:"mime",async getInfo(){var e;let n=[];return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.mimeTypes&&(n=Array.from(r.navigator.mimeTypes).map((e=>e.type))),Ke(n.join(","))}},an={name:"webgl",is(){if(null==r||!r.document)return!1;const e=r.document.createElement("canvas"),n=e.getContext("webgl")||e.getContext("experimental-webgl");return n&&n instanceof WebGLRenderingContext}},on={parse(e){let n={};return[Se,Me,ke].forEach((r=>{n=Object.assign(n,r.parse(e))})),n},async getInfo(e=["browser","system","device","gpu","network","battery","screen","language","timezone"]){let n={},r=[Se,Me,ke,Ve,Le,Fe,Ue,Ne,Ge].filter((n=>e.includes(n.name)));for(let e of r)n=Object.assign(n,await e.getInfo());return n},async getFingerprint(e=["webgl","canvas","font","audio","mime"]){let n={},r=[$e,Ze,en,nn,rn].filter((n=>e.includes(n.name))),{screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s}=await Ue.getInfo(),l=[i,JSON.stringify({screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s})];for(let e of r)n[e.name]=await e.getInfo(),l.push(n[e.name]);return n.value=Ke(l.join(",")),n},isSupport(e,n){let r=[Je,an].find((n=>e==n.name));return!!r&&r.is(n)}};export{on as default};

Copilot uses AI. Check for mistakes.
* Created on: 2026-04-07
*/
let e={};"undefined"!=typeof globalThis?e=globalThis:"undefined"!=typeof self?e=self:"undefined"!=typeof window?e=window:"undefined"!=typeof global&&(e=global);var n,r=e,i=null==r||null===(n=r.navigator)||void 0===n?void 0:n.userAgent,a={name:"Safari",parse(e=i){var n;return{is:e.includes("Safari"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},o={name:"Chrome",parse(e=i){var n,r;return{is:e.includes("Chrome")||e.includes("CriOS"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/CriOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["uaFullVersion"])).uaFullVersion||""}return this.parse().version}},t={name:"Edge",parse(e=i){var n,r,a,o;return{is:e.includes("Edge")||e.includes("Edg/")||e.includes("EdgA")||e.includes("EdgiOS"),version:(null===(n=e.match(/Edge\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Edg\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/EdgA\/([\d.]+)/))||void 0===a?void 0:a[1])||(null===(o=e.match(/EdgiOS\/([\d.]+)/))||void 0===o?void 0:o[1])||""}},async version(){return await o.version.bind(this)()}},s={name:"IE",parse(e=i){var n,r;return{is:e.includes("MSIE")||e.includes("Trident"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},l={name:"Firefox",parse(e=i){var n,r;return{is:e.includes("Firefox")||e.includes("FxiOS"),version:(null===(n=e.match(/Firefox\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/FxiOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},d={name:"Firefox Focus",parse(e=i){var n;return{is:e.includes("Focus"),version:(null===(n=e.match(/Focus\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},u={name:"Chromium",parse(e=i){var n;return{is:e.includes("Chromium"),version:(null===(n=e.match(/Chromium\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},c={name:"Opera",parse(e=i){var n,r;return{is:e.includes("Opera")||e.includes("OPR"),version:(null===(n=e.match(/Opera\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OPR\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},v={name:"Opera GX",parse(e=i){var n;let r=!1;return c.parse(e).is?r=e.includes("Edition GX"):e.includes("OPX/")&&(r=!0),{is:r,version:c.parse(e).version||(null===(n=e.match(/OPX\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},m={name:"Vivaldi",parse(e=i){var n,r;return{is:e.includes("Vivaldi"),version:(null===(n=e.match(/Vivaldi\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Chrome\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;return new Promise((function(n){e||l.parse().is||t.parse().is||c.parse().is?n(!1):fetch("chrome-extension://jffbochibkahlbbmanpmndnhmeliecah/config.json").then((function(){n(!0)})).catch((function(){n(!1)}))}))},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["brands"])).brands.find((e=>"Vivaldi"==e.brand)).version||""}return this.parse().version}},p={name:"Yandex",parse(e=i){var n;return{is:e.includes("YaBrowser"),version:(null===(n=e.match(/YaBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},h={name:"Brave",parse(e=i){var n;return{is:e.includes("Brave"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},is:async function(){var e;return!!(this.parse().is||null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.brave)}},g={name:"Arora",parse(e=i){var n;return{is:e.includes("Arora"),version:(null===(n=e.match(/Arora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},f={name:"Lunascape",parse(e=i){var n;return{is:e.includes("Lunascape"),version:(null===(n=e.match(/Lunascape[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},w={name:"QupZilla",parse(e=i){var n;return{is:e.includes("QupZilla"),version:(null===(n=e.match(/QupZilla[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},b={name:"Coc Coc",parse(e=i){var n;return{is:e.includes("coc_coc_browser"),version:(null===(n=e.match(/coc_coc_browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},S={name:"Kindle",parse(e=i){var n;return{is:e.includes("Kindle")||e.includes("Silk/"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},y={name:"Iceweasel",parse(e=i){var n;return{is:e.includes("Iceweasel"),version:(null===(n=e.match(/Iceweasel\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},A={name:"Konqueror",parse(e=i){var n;return{is:e.includes("Konqueror"),version:(null===(n=e.match(/Konqueror\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},B={name:"SeaMonkey",parse(e=i){var n;return{is:e.includes("SeaMonkey"),version:(null===(n=e.match(/SeaMonkey\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},C={name:"Epiphany",parse(e=i){var n;return{is:e.includes("Epiphany"),version:(null===(n=e.match(/Epiphany\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},E={name:"Whale",parse(e=i){var n;return{is:e.includes("Whale/"),version:(null===(n=e.match(/Whale\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};function x(e,n){var i;let a=null==r||null===(i=r.navigator)||void 0===i?void 0:i.mimeTypes;for(let r in a)if(a[r][e]&&a[r][e]==n)return a[r];return null}var P={name:"360",parse(e=i){var n,r;return{is:e.includes("QihooBrowser")||e.includes("QHBrowser")||e.includes(" 360 "),version:(null===(n=e.match(/QihooBrowser(HD)?\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Browser \(v([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;if(null!=r&&r.chrome){let n=parseInt(o.parse().version);x("type","application/360softmgrplugin")||x("type","application/mozilla-npqihooquicklogin")||x("type","application/npjlgplayer3-chrome-jlp")||n>36&&null!=r&&r.showModalDialog?e=!0:n>45&&(e=x("type","application/vnd.chromium.remoting-viewer"),!e&&n>=69&&(e=x("type","application/asx")))}return e}},T={name:"360SE",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SE"),version:{132:"16.0",122:"15.3",114:"15.0",108:"14.0",86:"13.0",78:"12.0",69:"11.0",63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[n]||""}},async is(){let e=!1;var n;await P.is()&&((x("type","application/gameplugin")||null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length)&&(e=!0));return e||l.parse().is||t.parse().is||c.parse().is?e:new Promise((function(e){Promise.any([fetch("chrome-extension://fjbbmgamncjadhlpmffehlmmkdnkiadk/css/content.css"),fetch("chrome-extension://fjbbmgamncjadhlpmffehlmmkdnkiadk/css/bangs.css")]).then((function(){e(!0)})).catch((function(){e(!1)}))}))}},I={name:"360EE",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360EE"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{122:"22.3",119:"22.0",108:"14.0",95:"21.0",86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}},async is(){let e=this.parse().is;if(x("type","application/cenroll.cenroll.version.1")||x("type","application/hwepass2001.installepass2001"))e=!0;else if(await P.is()){var n;null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.find((e=>"Not A(Brand"==e.brand||"Not?A_Brand"==e.brand))&&(e=!0)}return e}},O={name:"360AI",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SEAI"),version:{114:"1.0"}[n]||""}},async is(){let e=this.parse().is;var n;await P.is()&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length&&!x("type","application/gameplugin")&&(e=!0));return e}},M={name:"360AI",parse(e=i){var n;return{is:e.includes("360EEAI"),version:(null===(n=e.match(/360EE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};const D=()=>new Promise((e=>{var n;if(null==r||null===(n=r.webkit)||void 0===n||null===(n=n.messageHandlers)||void 0===n||!n.excuteCmd)return e({});{const n=`cv_${Date.now()%1e5}${100*Math.floor(Math.random())}`,i={key:"GetDeviceInfo",data:{},callback:n},a=JSON.stringify(i);r.webkit.messageHandlers.excuteCmd.postMessage(a),r[n]=function(i){delete r[n],e(JSON.parse(i||"{}"))}}}));var k={name:"360EE",parse:()=>({is:!1,version:""}),is:async()=>D().then((function(e){return"360csexm"==(null==e?void 0:e.pid)||!1})),version:async()=>D().then((function(e){return(null==e?void 0:e.module_version)||""}))},W={name:"360ENT",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360ENT"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}}},R={name:"UC",parse(e=i){var n;return{is:e.includes("UCBrowser")||e.includes(" UBrowser")||e.includes("UCWEB"),version:(null===(n=e.match(/UC?Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},V={name:"QQBrowser",parse(e=i){var n;return{is:e.includes("QQBrowser"),version:(null===(n=e.match(/QQBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},H={name:"BaiduBrowser",parse(e=i){var n;return{is:e.includes("BIDUBrowser")||e.includes("baidubrowser"),version:(null===(n=e.match(/BIDUBrowser[\s\/]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},L={name:"Maxthon",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("Maxthon"),version:(null===(n=e.match(/Maxthon\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"7.0",78:"6.0"}[a]||""}},is(){return this.parse().is||(null==r?void 0:r.maxthon)}},F={name:"Sogou",parse(e=i){var n,r,a=parseInt(o.parse(e).version);return{is:e.includes("MetaSr")||e.includes("Sogou"),version:(null===(n=e.match(/SogouMobileBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/SogouMSE\/([\d.]+)/))||void 0===r?void 0:r[1])||{116:"13.0",94:"12.0",80:"11.0"}[a]||""}}},U={name:"Liebao",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("LBBROWSER")||e.includes("LieBaoFast"),version:(null===(n=e.match(/LieBaoFast\/([\d.]+)/))||void 0===n?void 0:n[1])||{112:"9.0",79:"8.0",57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[r]||""}},is(){return this.parse().is||(null==r?void 0:r.liebao)}},N={name:"2345Browser",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("2345Explorer")||e.includes("Mb2345Browser")||e.includes("2345chrome"),version:(null===(n=e.match(/2345Explorer\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Mb2345Browser\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"13.0",69:"10.0",55:"9.9"}[a]||""}},async is(){let e=this.parse().is;var n,i;e||(e=(null==r?void 0:r.chrome)&&((null==r||null===(n=r.chrome)||void 0===n?void 0:n.adblock2345)||(null==r||null===(i=r.chrome)||void 0===i?void 0:i.common2345)));return e}},G={name:"115Browser",parse(e=i){var n;return{is:e.includes("115Browser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},_={name:"TheWorld",parse(e=i){var n;return{is:e.includes("TheWorld"),version:(null===(n=e.match(/TheWorld ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Q={name:"Quark",parse(e=i){var n,r;return{is:e.includes("Quark"),version:(null===(n=e.match(/Quark\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/QuarkPC\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},Y={name:"Qiyu",parse(e=i){var n;return{is:e.includes("Qiyu"),version:(null===(n=e.match(/Qiyu\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},j={name:"HONOR",parse(e=i){var n,r;return{is:e.includes("HONOR")||e.includes("bdhonorbrowser/"),version:(null===(n=e.match(/bdhonorbrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},q={name:"Huawei",parse(e=i){var n,r,a;return{is:e.includes("HuaweiBrowser")||e.includes("HBPC/"),version:(null===(n=e.match(/HuaweiBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/HBPC\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/Version\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},z={name:"OPPO",parse(e=i){var n;return{is:e.includes("HeyTapBrowser")||e.includes("OPPO"),version:(null===(n=e.match(/HeyTapBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},X={name:"Vivo",parse(e=i){var n;return{is:e.includes("VivoBrowser"),version:(null===(n=e.match(/VivoBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},K={name:"Xiaomi",parse(e=i){var n;return{is:e.includes("MiuiBrowser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},$={name:"Meizu",parse(e=i){var n;return{is:e.includes("MZBrowser"),version:(null===(n=e.match(/MZBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Z={name:"OnePlus",parse:(e=i)=>({is:e.includes("ONEPLUS"),version:""})},J={name:"Samsung",parse(e=i){var n;return{is:e.includes("SamsungBrowser"),version:(null===(n=e.match(/SamsungBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ee={name:"Lenovo",parse(e=i){var n;return{is:e.includes("SLBrowser"),version:(null===(n=e.match(/SLBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ne={name:"QQ",parse(e=i){var n;return{is:e.includes("QQ/"),version:(null===(n=e.match(/QQ\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},re={name:"Baidu",parse(e=i){var n;return{is:e.includes("Baidu")||e.includes("baiduboxapp")||e.includes("BaiduD"),version:(null===(n=e.match(/baiduboxapp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ie={name:"Wechat",parse(e=i){var n;return{is:e.includes("MicroMessenger"),version:(null===(n=e.match(/MicroMessenger\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ae={name:"WechatWork",parse(e=i){var n;return{is:e.includes("wxwork"),version:(null===(n=e.match(/wxwork\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},oe={name:"Taobao",parse(e=i){var n;return{is:e.includes("AliApp(TB"),version:(null===(n=e.match(/AliApp\(TB\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},te={name:"Alipay",parse(e=i){var n;return{is:e.includes("AliApp(AP"),version:(null===(n=e.match(/AliApp\(AP\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},se={name:"Weibo",parse(e=i){var n;return{is:e.includes("Weibo"),version:(null===(n=e.match(/weibo__([\d.]+)/))||void 0===n?void 0:n[1])||""}}},le={name:"Douban",parse(e=i){var n;return{is:e.includes("com.douban.frodo"),version:(null===(n=e.match(/com.douban.frodo\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de={name:"Toutiao",parse(e=i){var n;return{is:e.includes("NewsArticle"),version:(null===(n=e.match(/NewsArticle\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ue={name:"WebKit",parse:(e=i)=>({is:e.includes("AppleWebKit")})},ce={name:"Trident",parse:(e=i)=>({is:e.includes("Trident")||e.includes("NET CLR")})},ve={name:"Gecko",parse:(e=i)=>({is:e.includes("Gecko/")})},me={name:"Servo",parse:(e=i)=>({is:e.includes("Servo/")})},pe={name:"Presto",parse:(e=i)=>({is:e.includes("Presto")})},he={name:"KHTML",parse:(e=i)=>({is:e.includes("KHTML/")})};let ge=[].concat([a,o,t,s,l,d,u,c,v,m,p,h,g,f,w,b,S,y,A,B,C,E,P,I,T,k,O,M,W,R,V,H,L,F,U,N,G,_,Q,Y],[j,q,z,X,K,$,Z,J,ee],[ne,re,ie,ae,oe,te,se,le,{name:"Suning",parse(e=i){var n;return{is:e.includes("SNEBUY-APP"),version:(null===(n=e.match(/SNEBUY-APP([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"iQIYI",parse(e=i){var n;return{is:e.includes("IqiyiApp"),version:(null===(n=e.match(/IqiyiVersion\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"DingTalk",parse(e=i){var n;return{is:e.includes("DingTalk"),version:(null===(n=e.match(/DingTalk\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Douyin",parse(e=i){var n;return{is:e.includes("aweme"),version:(null===(n=e.match(/app_version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de,{name:"Facebook",parse(e=i){var n;return{is:e.includes("Facebook")||e.includes("FBAV/"),version:(null===(n=e.match(/FBAV\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"WhatsApp",parse(e=i){var n;return{is:e.includes("WhatsApp"),version:(null===(n=e.match(/WhatsApp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Line",parse(e=i){var n;return{is:e.includes("Line/"),version:(null===(n=e.match(/Line\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}],[{name:"Twitterbot",parse:(e=i)=>({is:e.includes("Twitterbot"),version:""})},{name:"TelegramBot",parse:(e=i)=>({is:e.includes("TelegramBot"),version:""})},{name:"Googlebot",parse(e=i){var n;return{is:e.includes("Googlebot"),version:(null===(n=e.match(/Googlebot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Baiduspider",parse(e=i){var n;return{is:e.includes("Baiduspider"),version:(null===(n=e.match(/Baiduspider(-render)?\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Sogouspider",parse(e=i){var n;return{is:e.match(/Sogou (\S+) Spider\/([\d.]+)/i),version:(null===(n=e.match(/Sogou (\S+) Spider\/([\d.]+)/i))||void 0===n?void 0:n[1])||""}}},{name:"Bingbot",parse(e=i){var n;return{is:e.includes("bingbot"),version:(null===(n=e.match(/bingbot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"360Spider",parse:(e=i)=>({is:e.includes("360Spider")||e.includes("HaosouSpider"),version:""})},{name:"Bytespider",parse:(e=i)=>({is:e.includes("Bytespider"),version:""})},{name:"YisouSpider",parse(e=i){var n;return{is:e.includes("YisouSpider"),version:(null===(n=e.match(/YisouSpider\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YodaoBot",parse(e=i){var n;return{is:e.includes("YodaoBot"),version:(null===(n=e.match(/YodaoBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YandexBot",parse(e=i){var n;return{is:e.includes("YandexBot"),version:(null===(n=e.match(/YandexBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Yahoo",parse:(e=i)=>({is:e.includes("Yahoo!"),version:""})},{name:"ChatGPT",parse(e=i){var n,r,a;return{is:e.includes("OAI-SearchBot")||e.includes("ChatGPT-User")||e.includes("GPTBot"),version:(null===(n=e.match(/OAI-SearchBot\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/ChatGPT-User\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/GPTBot\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},{name:"Headless",parse(e=i){var n;return{is:e.includes("HeadlessChrome/"),version:(null===(n=e.match(/HeadlessChrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},async is(){return this.parse().is||""==(null==r?void 0:r.navigator)}}]);ge.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));let fe=[ue,ce,ve,me,pe,he];fe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));const we=function(e){let{userAgent:n,engine:r,browser:i,browserVersion:a}=e;var s,l;("Chrome"==i&&n.match(/\S+Browser/)&&(i=n.match(/\S+Browser/)[0]),"Chrome"==i&&n.match(/\S+Browser/))&&(a=(null===(s=n.replace(/^.*Browser\/([\d.]+).*$/))||void 0===s?void 0:s[1])||"");a||(a=(null===(l=n.match(/Version\/([\d.]+)/))||void 0===l?void 0:l[1])||"");return t.parse(n).is?r=parseInt(t.parse(n).version)>75?"Blink":"EdgeHTML":o.parse(n).is&&parseInt(o.parse(n).version)>27&&(r="Blink"),{userAgent:n,engine:r,browser:i,browserVersion:a}};var be={name:"browser",parse(e=i){let n="",r="";ge.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";fe.forEach((function(n){n.parse(e).is&&(a=n.name)})),({engine:a,browser:n,browserVersion:r}=we({userAgent:e,engine:a,browser:n,browserVersion:r}));let o=e.includes("; wv)"),t=["Googlebot","Baiduspider","Sogouspider","Bingbot","360Spider","Bytespider","YandexBot"].includes(n);return{browser:n,browserVersion:r,engine:a,isWebview:o,isRobot:t}},async getInfo(){var e;let{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s}=this.parse();for(let e of ge)await e.is()&&(n=e.name,a=await e.version());return({engine:o,browser:n,browserVersion:a}=we({userAgent:i,engine:o,browser:n,browserVersion:a})),{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s,cookieEnabled:null==r||null===(e=r.navigator)||void 0===e?void 0:e.cookieEnabled,userAgent:i}}},Se={name:"Windows",parse(e=i){var n;let r=(null===(n=e.match(/^Mozilla\/\d.0 \(Windows NT ([\d.]+)[;)].*$/))||void 0===n?void 0:n[1])||"";return{is:e.includes("Windows"),version:{"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"}[r]||r}},async version(){let e=this.parse().version;return new Promise((function(n){var i;null!=r&&null!==(i=r.navigator)&&void 0!==i&&i.userAgentData?r.navigator.userAgentData.getHighEntropyValues(["platformVersion"]).then((function(e){let i="";if("Windows"===r.navigator.userAgentData.platform){i=parseInt(e.platformVersion.split(".")[0])>=13?"11":"10"}n(i)})):n(e)}))}};let ye=[Se,{name:"Linux",parse:(e=i)=>({is:e.includes("Linux")||e.includes("X11"),version:""})},{name:"macOS",parse(e=i){var n;return{is:e.includes("Macintosh"),version:(null===(n=e.match(/Mac OS X -?([\d_\.]+)/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}}},{name:"Android",parse(e=i){var n;return{is:e.includes("Android")||e.includes("Adr"),version:(null===(n=e.match(/Android ([\d.]+);/))||void 0===n?void 0:n[1])||""}}},{name:"HarmonyOS",parse(e=i){var n,r;let a=(null===(n=e.match(/HarmonyOS (\d+.\d+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OpenHarmony(\d+.\d+)/))||void 0===r?void 0:r[1])||"";if(!a){var o,t;let n=+(null===(o=e.match(/HMSCore (\d+.\d+)/))||void 0===o?void 0:o[1])||0;n>=6.1?a="4.0":n>=6?a="3.0":n>=5?a="2.0":n>=4&&(a="1.0"),a={10:"3.0",12:"4.0"}[(null===(t=e.match(/Android (\d+);/))||void 0===t?void 0:t[1])||0]||a}return{is:e.includes("HarmonyOS")||e.includes("OpenHarmony")||e.includes("ArkWeb"),version:a}}},{name:"Ubuntu",parse:(e=i)=>({is:e.includes("Ubuntu"),version:""})},{name:"FreeBSD",parse:(e=i)=>({is:e.includes("FreeBSD"),version:""})},{name:"Debian",parse(e=i){var n;return{is:e.includes("Debian"),version:(null===(n=e.match(/Debian\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Deepin",parse(e=i){var n;return{is:e.includes("Deepin"),version:(null===(n=e.match(/Deepin ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"iOS",parse(e=i){var n;return{is:e.includes("like Mac OS X"),version:(null===(n=e.match(/OS ([\d_]+) like/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}}},{name:"Windows Phone",parse(e=i){var n;return{is:e.includes("IEMobile")||e.includes("Windows Phone"),version:(null===(n=e.match(/Windows Phone( OS)? ([\d.]+);/))||void 0===n?void 0:n[2])||""}}},{name:"BlackBerry",parse:(e=i)=>({is:e.includes("BlackBerry")||e.includes("RIM"),version:""})},{name:"MeeGo",parse:(e=i)=>({is:e.includes("MeeGo"),version:""})},{name:"Symbian",parse(e=i){var n;return{is:e.includes("Symbian"),version:(null===(n=e.match(/Series60\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Chrome OS",parse(e=i){var n,r;return{is:e.includes("CrOS"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},{name:"WebOS",parse(e=i){var n;return{is:e.includes("hpwOS"),version:(null===(n=e.match(/hpwOS\/([\d.]+);/))||void 0===n?void 0:n[1])||""}}},{name:"UOS",parse(e=i){var n;return{is:e.includes("UOS"),version:(null===(n=e.match(/UOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"CentOS",parse(e=i){var n;return{is:e.includes("CentOS"),version:(null===(n=e.match(/CentOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Fedora",parse(e=i){var n;return{is:e.includes("Fedora"),version:(null===(n=e.match(/Fedora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Gentoo",parse:(e=i)=>({is:e.includes("Gentoo"),version:""})},{name:"Red Hat",parse(e=i){var n;return{is:e.includes("Red Hat"),version:(null===(n=e.match(/Red Hat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"SUSE",parse(e=i){var n;return{is:e.includes("SUSE"),version:(null===(n=e.match(/SUSE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Slackware",parse(e=i){var n;return{is:e.includes("Slackware"),version:(null===(n=e.match(/Slackware\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}];ye.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));var Ae={name:"system",parse(e=i){let n="",r="";ye.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";e.match(/(Win64|x64|WOW64|x86_64)/i)?a="Win64":e.match(/(Win32|x86|WOW32)/i)?a="Win32":e.match(/aarch64|arm64/)?a="ARM64":e.match(/arm32/)?a="ARM32":e.match(/iPhone/)?a="iPhone":e.match(/iPad/)?a="iPad":e.match(/iPod/)?a="iPod":e.match(/Android/)&&(a="Android");let o="",t=e+"|"+a;o=t.match(/armv?\d+/i)||t.match(/aarch64/)?"arm":t.match(/loongarch64/)?"loongarch":"x86";let s=e.match(/Win64|x64|WOW64|x86_64|aarch64|arm64|loongarch64/i)?64:32;return{system:n,systemVersion:r,platform:a,architecture:o,bitness:s}},async getInfo(){var e,n;let{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}=this.parse();for(let e of ye)await e.is()&&(i=e.name,a=await e.version());var l,d;(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.platform&&(o=r.navigator.platform),null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)&&(t=await(null===(l=r.navigator.userAgentData)||void 0===l?void 0:l.getHighEntropyValues(["architecture"]).then((e=>e.architecture||t))),s=await(null===(d=r.navigator.userAgentData)||void 0===d?void 0:d.getHighEntropyValues(["bitness"]).then((e=>+e.bitness||s))));return{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}}};let Be=[{name:"Mobile",parse:(e=i)=>({is:e.includes("Mobi")||e.includes("iPh")||e.includes("480")})},{name:"Tablet",parse:(e=i)=>({is:e.includes("Tablet")||e.includes("Pad")||e.includes("Nexus 7")}),async is(){return this.parse().is||"MacIntel"===(null==r?void 0:r.navigator.platform)&&(null==r?void 0:r.navigator.maxTouchPoints)>1}}];Be.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));var Ce={name:"device",parse(e=i){let n="Desktop";return Be.forEach((function(r){r.parse(e).is&&(n=r.name)})),{device:n}},async getInfo(){var e;let n=(null==r?void 0:r.devicePixelRatio)||1,i=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.deviceMemory)||4;return Object.assign({devicePixelRatio:n,deviceMemory:i},this.parse())}},Ee={name:"gpu",parse:()=>({}),async getInfo(){let e="",n="";if(null!=r&&r.document){let o=r.document.createElement("canvas").getContext("experimental-webgl");if(o){var i,a;let r=o.getExtension("WEBGL_debug_renderer_info"),t=o.getParameter(r.UNMASKED_RENDERER_WEBGL);e=(null===(i=t.match(/ANGLE \((.+?),/))||void 0===i?void 0:i[1])||"",n=(null===(a=t.match(/, (.+?) (\(|vs_)/))||void 0===a?void 0:a[1])||""}}return{gpu:e,gpuModel:n}}};const xe=/\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/,Pe=/\b(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}\b/i,Te=r.RTCPeerConnection||r.mozRTCPeerConnection||r.webkitRTCPeerConnection;var Ie={name:"network",parse:()=>({}),async getInfo(){var e,n;let i="unknown",a=null==r||null===(e=r.navigator)||void 0===e?void 0:e.connection;return a&&(i=a.type||a.effectiveType,"2"!=i&&"unknown"!=i||(i="wifi")),{network:i,isOnline:(null==r||null===(n=r.navigator)||void 0===n?void 0:n.onLine)||!1,ip:await async function(){const e=new Set,n=n=>{var r;const i=null==n||null===(r=n.candidate)||void 0===r?void 0:r.candidate;if(i)for(const n of[xe,Pe]){const r=i.match(n);r&&e.add(r[0])}};return new Promise((function(r,i){if(Te){const a=new Te({iceServers:[{urls:"stun:stun.cloudflare.com:3478"},{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.services.mozilla.com"}]});a.addEventListener("icecandidate",n),a.createDataChannel(""),a.createOffer().then((e=>a.setLocalDescription(e)),i);let o=20,t=null,s=function(){try{a.removeEventListener("icecandidate",n),a.close()}catch{}t&&clearInterval(t)};t=setInterval((function(){let n=[...e];n.length?(s(),r(n[n.length-1])):o?o--:(s(),r(""))}),200)}else r("")}))}()}}},Oe={name:"battery",parse:()=>({}),async getInfo(){var e;let n=!0,i=1;return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.getBattery&&(n=await r.navigator.getBattery().then((e=>null==e?void 0:e.charging)),i=await r.navigator.getBattery().then((e=>+(null==e?void 0:e.level)||-1))),{isCharging:n,battery:i}}};var Me={name:"screen",parse:()=>({}),async getInfo(){var e,n,i,a,o,t,s,l;return{screenWidth:(null==r||null===(e=r.screen)||void 0===e?void 0:e.width)||0,screenHeight:(null==r||null===(n=r.screen)||void 0===n?void 0:n.height)||0,clientWidth:(null==r||null===(i=r.document)||void 0===i||null===(i=i.documentElement)||void 0===i?void 0:i.clientWidth)||(null==r||null===(a=r.document)||void 0===a||null===(a=a.body)||void 0===a?void 0:a.clientWidth)||0,clientHeight:(null==r||null===(o=r.document)||void 0===o||null===(o=o.documentElement)||void 0===o?void 0:o.clientHeight)||(null==r||null===(t=r.document)||void 0===t||null===(t=t.body)||void 0===t?void 0:t.clientHeight)||0,screenFPS:await async function(){return new Promise((function(e){let n=0,r=1,i=[],a=function(o){if(n>0)if(r<12)i.push(o-n),n=o,r++,requestAnimationFrame(a);else{i.sort(),i=i.slice(1,11);let n=i.reduce(((e,n)=>e+n));const r=10*Math.round(1e4/n/10);e(r)}else n=o,requestAnimationFrame(a)};requestAnimationFrame(a)}))}(),screenColorDepth:null==r?void 0:r.screen.colorDepth,screenPixelDepth:null==r?void 0:r.screen.pixelDepth,screenOrientation:(null===(s=screen.orientation)||void 0===s?void 0:s.type)||"未知",isTouch:(null==r||null===(l=r.navigator)||void 0===l?void 0:l.maxTouchPoints)>0||!1}}},De={name:"language",parse:()=>({}),async getInfo(){var e,n,i;let a=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.language)||(null==r||null===(n=r.navigator)||void 0===n?void 0:n.browserLanguage)||(null==r||null===(i=r.navigator)||void 0===i?void 0:i.systemLanguage);if("string"!=typeof a)return"Unknown language";let o=a.split("-");return o[1]&&(o[1]=o[1].toUpperCase()),{language:o.join("_")}}},ke={name:"timezone",parse:()=>({}),async getInfo(){var e;return{timezone:null===(e=Intl)||void 0===e||null===(e=e.DateTimeFormat())||void 0===e||null===(e=e.resolvedOptions())||void 0===e?void 0:e.timeZone}}};let We=function(e,n){return e<<n|e>>>32-n},Re=function(e,n){let r,i,a,o,t;return a=2147483648&e,o=2147483648&n,r=1073741824&e,i=1073741824&n,t=(1073741823&e)+(1073741823&n),r&i?2147483648^t^a^o:r|i?1073741824&t?3221225472^t^a^o:1073741824^t^a^o:t^a^o},Ve=function(e,n,r,i,a,o,t){return e=Re(e,Re(Re(function(e,n,r){return e&n|~e&r}(n,r,i),a),t)),Re(We(e,o),n)},He=function(e,n,r,i,a,o,t){return e=Re(e,Re(Re(function(e,n,r){return e&r|n&~r}(n,r,i),a),t)),Re(We(e,o),n)},Le=function(e,n,r,i,a,o,t){return e=Re(e,Re(Re(function(e,n,r){return e^n^r}(n,r,i),a),t)),Re(We(e,o),n)},Fe=function(e,n,r,i,a,o,t){return e=Re(e,Re(Re(function(e,n,r){return n^(e|~r)}(n,r,i),a),t)),Re(We(e,o),n)},Ue=function(e){let n,r,i="",a="";for(r=0;r<=3;r++)n=e>>>8*r&255,a="0"+n.toString(16),i+=a.substr(a.length-2,2);return i};function Ne(e){let n,r,i,a,o,t,s,l,d,u=Array();for(e=function(e){e=e.replace(/\x0d\x0a/g,"\n");let n="";for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i<128?n+=String.fromCharCode(i):i>127&&i<2048?(n+=String.fromCharCode(i>>6|192),n+=String.fromCharCode(63&i|128)):(n+=String.fromCharCode(i>>12|224),n+=String.fromCharCode(i>>6&63|128),n+=String.fromCharCode(63&i|128))}return n}(e),u=function(e){let n,r=e.length,i=r+8,a=16*((i-i%64)/64+1),o=Array(a-1),t=0,s=0;for(;s<r;)n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|e.charCodeAt(s)<<t,s++;return n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|128<<t,o[a-2]=r<<3,o[a-1]=r>>>29,o}(e),t=1732584193,s=4023233417,l=2562383102,d=271733878,n=0;n<u.length;n+=16)r=t,i=s,a=l,o=d,t=Ve(t,s,l,d,u[n+0],7,3614090360),d=Ve(d,t,s,l,u[n+1],12,3905402710),l=Ve(l,d,t,s,u[n+2],17,606105819),s=Ve(s,l,d,t,u[n+3],22,3250441966),t=Ve(t,s,l,d,u[n+4],7,4118548399),d=Ve(d,t,s,l,u[n+5],12,1200080426),l=Ve(l,d,t,s,u[n+6],17,2821735955),s=Ve(s,l,d,t,u[n+7],22,4249261313),t=Ve(t,s,l,d,u[n+8],7,1770035416),d=Ve(d,t,s,l,u[n+9],12,2336552879),l=Ve(l,d,t,s,u[n+10],17,4294925233),s=Ve(s,l,d,t,u[n+11],22,2304563134),t=Ve(t,s,l,d,u[n+12],7,1804603682),d=Ve(d,t,s,l,u[n+13],12,4254626195),l=Ve(l,d,t,s,u[n+14],17,2792965006),s=Ve(s,l,d,t,u[n+15],22,1236535329),t=He(t,s,l,d,u[n+1],5,4129170786),d=He(d,t,s,l,u[n+6],9,3225465664),l=He(l,d,t,s,u[n+11],14,643717713),s=He(s,l,d,t,u[n+0],20,3921069994),t=He(t,s,l,d,u[n+5],5,3593408605),d=He(d,t,s,l,u[n+10],9,38016083),l=He(l,d,t,s,u[n+15],14,3634488961),s=He(s,l,d,t,u[n+4],20,3889429448),t=He(t,s,l,d,u[n+9],5,568446438),d=He(d,t,s,l,u[n+14],9,3275163606),l=He(l,d,t,s,u[n+3],14,4107603335),s=He(s,l,d,t,u[n+8],20,1163531501),t=He(t,s,l,d,u[n+13],5,2850285829),d=He(d,t,s,l,u[n+2],9,4243563512),l=He(l,d,t,s,u[n+7],14,1735328473),s=He(s,l,d,t,u[n+12],20,2368359562),t=Le(t,s,l,d,u[n+5],4,4294588738),d=Le(d,t,s,l,u[n+8],11,2272392833),l=Le(l,d,t,s,u[n+11],16,1839030562),s=Le(s,l,d,t,u[n+14],23,4259657740),t=Le(t,s,l,d,u[n+1],4,2763975236),d=Le(d,t,s,l,u[n+4],11,1272893353),l=Le(l,d,t,s,u[n+7],16,4139469664),s=Le(s,l,d,t,u[n+10],23,3200236656),t=Le(t,s,l,d,u[n+13],4,681279174),d=Le(d,t,s,l,u[n+0],11,3936430074),l=Le(l,d,t,s,u[n+3],16,3572445317),s=Le(s,l,d,t,u[n+6],23,76029189),t=Le(t,s,l,d,u[n+9],4,3654602809),d=Le(d,t,s,l,u[n+12],11,3873151461),l=Le(l,d,t,s,u[n+15],16,530742520),s=Le(s,l,d,t,u[n+2],23,3299628645),t=Fe(t,s,l,d,u[n+0],6,4096336452),d=Fe(d,t,s,l,u[n+7],10,1126891415),l=Fe(l,d,t,s,u[n+14],15,2878612391),s=Fe(s,l,d,t,u[n+5],21,4237533241),t=Fe(t,s,l,d,u[n+12],6,1700485571),d=Fe(d,t,s,l,u[n+3],10,2399980690),l=Fe(l,d,t,s,u[n+10],15,4293915773),s=Fe(s,l,d,t,u[n+1],21,2240044497),t=Fe(t,s,l,d,u[n+8],6,1873313359),d=Fe(d,t,s,l,u[n+15],10,4264355552),l=Fe(l,d,t,s,u[n+6],15,2734768916),s=Fe(s,l,d,t,u[n+13],21,1309151649),t=Fe(t,s,l,d,u[n+4],6,4149444226),d=Fe(d,t,s,l,u[n+11],10,3174756917),l=Fe(l,d,t,s,u[n+2],15,718787259),s=Fe(s,l,d,t,u[n+9],21,3951481745),t=Re(t,r),s=Re(s,i),l=Re(l,a),d=Re(d,o);return(Ue(t)+Ue(s)+Ue(l)+Ue(d)).toUpperCase()}var Ge={name:"webgl",async getInfo(){let e=r.document.createElement("canvas");e.width=256,e.height=128;let n=e.getContext("webgl2",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl2",{preserveDrawingBuffer:!0})||e.getContext("webgl",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl",{preserveDrawingBuffer:!0})||e.getContext("moz-webgl",{preserveDrawingBuffer:!0}),i=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,i);let a=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.7321,0]);n.bufferData(n.ARRAY_BUFFER,a,n.STATIC_DRAW),i.itemSize=3,i.numItems=3;let o=n.createProgram(),t=n.createShader(n.VERTEX_SHADER);n.shaderSource(t,"attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}"),n.compileShader(t);let s=n.createShader(n.FRAGMENT_SHADER);n.shaderSource(s,"precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}"),n.compileShader(s),n.attachShader(o,t),n.attachShader(o,s),n.linkProgram(o),n.useProgram(o),o.vertexPosAttrib=n.getAttribLocation(o,"attrVertex"),o.offsetUniform=n.getUniformLocation(o,"uniformOffset"),n.enableVertexAttribArray(o.vertexPosArray),n.vertexAttribPointer(o.vertexPosAttrib,i.itemSize,n.FLOAT,!1,0,0),n.uniform2f(o.offsetUniform,1,1),n.drawArrays(n.TRIANGLE_STRIP,0,i.numItems);let l=new Uint8Array(131072);n.readPixels(0,0,256,128,n.RGBA,n.UNSIGNED_BYTE,l);let d=JSON.stringify(l).replace(/,?"[0-9]+":/g,"");return""==d.replace(/^{[0]+}$/g,"")?"n/a":Ne(d)}},_e={name:"canvas",async getInfo(){let e=r.document.createElement("canvas");e.width=1e3,e.height=200;let n=e.getContext("2d");return n.textBaseline="alphabetic",n.fillStyle="#f60",n.fillRect(150,50,100,100),n.fillStyle="#069",n.font="12pt Arial",n.fillText("😃just for test the canvas feature!",3,15),n.fillStyle="rgba(102, 204, 0, 0.2)",n.font="18pt Arial",n.fillText("😃just for test the canvas feature!",6,45),n.globalCompositeOperation="multiply",n.fillStyle="rgb(0,255,255)",n.beginPath(),n.arc(50,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,0,255)",n.beginPath(),n.arc(75,50,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,255,0)",n.beginPath(),n.arc(100,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),Ne(e.toDataURL())}},Qe={name:"font-family",is(e="Arial"){if("string"!=typeof e||null==r||!r.document)return!1;let n="Arial",i=100,a=100,o=r.document.createElement("canvas"),t=o.getContext("2d",{willReadFrequently:!0});o.width=i,o.height=a,t.textAlign="center",t.fillStyle="black",t.textBaseline="middle";let s=function(e){t.clearRect(0,0,i,a),t.font=`100px ${e}, ${n}`,t.fillText("永",50,50);let r=t.getImageData(0,0,i,a).data;return[].slice.call(r).filter((function(e){return 0!=e}))};return s(n).join("")!==s(e).join("")}},Ye={name:"font",async getInfo(){let e=[];return["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"].forEach((function(n){Qe.is(n)&&e.push(n)})),Ne(e.join(","))}},je={name:"audio",getInfo:async()=>new Promise((function(e,n){let r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,44100,44100),i=r.createOscillator();i.type="triangle",i.frequency.setValueAtTime(1e4,r.currentTime);let a=r.createDynamicsCompressor();[["threshold",-50],["knee",40],["ratio",12],["reduction",-20],["attack",0],["release",.25]].forEach((function(e){void 0!==a[e[0]]&&"function"==typeof a[e[0]].setValueAtTime&&a[e[0]].setValueAtTime(e[1],r.currentTime)})),i.connect(a),a.connect(r.destination),i.start(0),r.startRendering();let o=setTimeout((function(){r.oncomplete=function(){},r=null,e(Ne("audio Timeout"))}),1e3);r.oncomplete=function(n){o&&clearTimeout(o);let r=n.renderedBuffer.getChannelData(0).slice(4500,5e3).reduce((function(e,n){return e+Math.abs(n)}),0).toString();i.disconnect(),a.disconnect(),e(Ne(r))}}))},qe={name:"mime",async getInfo(){var e;let n=[];return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.mimeTypes&&(n=Array.from(r.navigator.mimeTypes).map((e=>e.type))),Ne(n.join(","))}},ze={name:"webgl",is(){if(null==r||!r.document)return!1;const e=r.document.createElement("canvas"),n=e.getContext("webgl")||e.getContext("experimental-webgl");return n&&n instanceof WebGLRenderingContext}},Xe={parse(e){let n={};return[be,Ae,Ce].forEach((r=>{n=Object.assign(n,r.parse(e))})),n},async getInfo(e=["browser","system","device","gpu","network","battery","screen","language","timezone"]){let n={},r=[be,Ae,Ce,Ee,Ie,Oe,Me,De,ke].filter((n=>e.includes(n.name)));for(let e of r)n=Object.assign(n,await e.getInfo());return n},async getFingerprint(e=["webgl","canvas","font","audio","mime"]){let n={},r=[Ge,_e,Ye,je,qe].filter((n=>e.includes(n.name))),{screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s}=await Me.getInfo(),l=[i,JSON.stringify({screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s})];for(let e of r)n[e.name]=await e.getInfo(),l.push(n[e.name]);return n.value=Ne(l.join(",")),n},isSupport(e,n){let r=[Qe,ze].find((n=>e==n.name));return!!r&&r.is(n)}};export{Xe as default};
let e={};"undefined"!=typeof globalThis?e=globalThis:"undefined"!=typeof self?e=self:"undefined"!=typeof window?e=window:"undefined"!=typeof global&&(e=global);var n,r=e,i=null==r||null===(n=r.navigator)||void 0===n?void 0:n.userAgent,a={name:"Safari",parse(e=i){var n;return{is:e.includes("Safari"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},o={name:"Chrome",parse(e=i){var n,r;return{is:e.includes("Chrome")||e.includes("CriOS"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/CriOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["uaFullVersion"])).uaFullVersion||""}return this.parse().version}},t={name:"Edge",parse(e=i){var n,r,a,o;return{is:e.includes("Edge")||e.includes("Edg/")||e.includes("EdgA")||e.includes("EdgiOS"),version:(null===(n=e.match(/Edge\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Edg\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/EdgA\/([\d.]+)/))||void 0===a?void 0:a[1])||(null===(o=e.match(/EdgiOS\/([\d.]+)/))||void 0===o?void 0:o[1])||""}},async version(){return await o.version.bind(this)()}},s={name:"IE",parse(e=i){var n,r;return{is:e.includes("MSIE")||e.includes("Trident"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},l={name:"Firefox",parse(e=i){var n,r;return{is:e.includes("Firefox")||e.includes("FxiOS"),version:(null===(n=e.match(/Firefox\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/FxiOS\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},d={name:"Firefox Focus",parse(e=i){var n;return{is:e.includes("Focus"),version:(null===(n=e.match(/Focus\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},u={name:"Chromium",parse(e=i){var n;return{is:e.includes("Chromium"),version:(null===(n=e.match(/Chromium\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},v={name:"Opera",parse(e=i){var n,r;return{is:e.includes("Opera")||e.includes("OPR"),version:(null===(n=e.match(/Opera\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OPR\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},c={name:"Opera GX",parse(e=i){var n;let r=!1;return v.parse(e).is?r=e.includes("Edition GX"):e.includes("OPX/")&&(r=!0),{is:r,version:v.parse(e).version||(null===(n=e.match(/OPX\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},m={name:"Vivaldi",parse(e=i){var n,r;return{is:e.includes("Vivaldi"),version:(null===(n=e.match(/Vivaldi\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Chrome\/([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;return new Promise((function(n){if(!(e||l.parse().is||t.parse().is||v.parse().is))return n(!1);n(!1)}))},async version(){var e;if(null!==(e=navigator.userAgentData)&&void 0!==e&&e.getHighEntropyValues){return(await navigator.userAgentData.getHighEntropyValues(["brands"])).brands.find((e=>"Vivaldi"==e.brand)).version||""}return this.parse().version}},p={name:"Yandex",parse(e=i){var n;return{is:e.includes("YaBrowser"),version:(null===(n=e.match(/YaBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},h={name:"Brave",parse(e=i){var n;return{is:e.includes("Brave"),version:(null===(n=e.match(/Chrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},is:async function(){var e;return!!(this.parse().is||null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.brave)}},g={name:"Arora",parse(e=i){var n;return{is:e.includes("Arora"),version:(null===(n=e.match(/Arora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},f={name:"Lunascape",parse(e=i){var n;return{is:e.includes("Lunascape"),version:(null===(n=e.match(/Lunascape[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},w={name:"QupZilla",parse(e=i){var n;return{is:e.includes("QupZilla"),version:(null===(n=e.match(/QupZilla[\/\s]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},S={name:"Coc Coc",parse(e=i){var n;return{is:e.includes("coc_coc_browser"),version:(null===(n=e.match(/coc_coc_browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},b={name:"Kindle",parse(e=i){var n;return{is:e.includes("Kindle")||e.includes("Silk/"),version:(null===(n=e.match(/Version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},y={name:"Iceweasel",parse(e=i){var n;return{is:e.includes("Iceweasel"),version:(null===(n=e.match(/Iceweasel\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},A={name:"Konqueror",parse(e=i){var n;return{is:e.includes("Konqueror"),version:(null===(n=e.match(/Konqueror\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},B={name:"SeaMonkey",parse(e=i){var n;return{is:e.includes("SeaMonkey"),version:(null===(n=e.match(/SeaMonkey\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},C={name:"Epiphany",parse(e=i){var n;return{is:e.includes("Epiphany"),version:(null===(n=e.match(/Epiphany\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},E={name:"Whale",parse(e=i){var n;return{is:e.includes("Whale/"),version:(null===(n=e.match(/Whale\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};function T(e,n){var i;let a=null==r||null===(i=r.navigator)||void 0===i?void 0:i.mimeTypes;for(let r in a)if(a[r][e]&&a[r][e]==n)return a[r];return null}var x={name:"360",parse(e=i){var n,r;return{is:e.includes("QihooBrowser")||e.includes("QHBrowser")||e.includes(" 360 "),version:(null===(n=e.match(/QihooBrowser(HD)?\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Browser \(v([\d.]+)/))||void 0===r?void 0:r[1])||""}},async is(){let e=this.parse().is;if(null!=r&&r.chrome){let n=parseInt(o.parse().version);T("type","application/360softmgrplugin")||T("type","application/mozilla-npqihooquicklogin")||T("type","application/npjlgplayer3-chrome-jlp")||n>36&&null!=r&&r.showModalDialog?e=!0:n>45&&(e=T("type","application/vnd.chromium.remoting-viewer"),!e&&n>=69&&(e=T("type","application/asx")))}return e}},P={name:"360SE",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SE"),version:{132:"16.0",122:"15.3",114:"15.0",108:"14.0",86:"13.0",78:"12.0",69:"11.0",63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[n]||""}},async is(){let e=!1;var n;await x.is()&&((T("type","application/gameplugin")||null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length)&&(e=!0));return e||l.parse().is||t.parse().is||v.parse().is?e:new Promise((function(e){return e(!1)}))}},I={name:"360EE",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360EE"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{122:"22.3",119:"22.0",108:"14.0",95:"21.0",86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}},async is(){let e=this.parse().is;if(T("type","application/cenroll.cenroll.version.1")||T("type","application/hwepass2001.installepass2001"))e=!0;else if(await x.is()){var n;null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.find((e=>"Not A(Brand"==e.brand||"Not?A_Brand"==e.brand))&&(e=!0)}return e}},O={name:"360AI",parse(e=i){let n=parseInt(o.parse(e).version);return{is:e.includes("360SEAI"),version:{114:"1.0"}[n]||""}},async is(){let e=this.parse().is;var n;await x.is()&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&null!==(n=n.userAgentData)&&void 0!==n&&n.brands.filter((e=>"Not.A/Brand"==e.brand)).length&&!T("type","application/gameplugin")&&(e=!0));return e}},M={name:"360AI",parse(e=i){var n;return{is:e.includes("360EEAI"),version:(null===(n=e.match(/360EE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}};const D=()=>new Promise((e=>{var n;if(null==r||null===(n=r.webkit)||void 0===n||null===(n=n.messageHandlers)||void 0===n||!n.excuteCmd)return e({});{const n=`cv_${Date.now()%1e5}${100*Math.floor(Math.random())}`,i={key:"GetDeviceInfo",data:{},callback:n},a=JSON.stringify(i);r.webkit.messageHandlers.excuteCmd.postMessage(a),r[n]=function(i){delete r[n],e(JSON.parse(i||"{}"))}}}));var k={name:"360EE",parse:()=>({is:!1,version:""}),is:async()=>D().then((function(e){return"360csexm"==(null==e?void 0:e.pid)||!1})),version:async()=>D().then((function(e){return(null==e?void 0:e.module_version)||""}))},V={name:"360ENT",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("360ENT"),version:(null===(n=e.match(/Browser \(v([\d.]+)/))||void 0===n?void 0:n[1])||{86:"13.0",78:"12.0",69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[r]||""}}},W={name:"UC",parse(e=i){var n;return{is:e.includes("UCBrowser")||e.includes(" UBrowser")||e.includes("UCWEB"),version:(null===(n=e.match(/UC?Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},R={name:"QQBrowser",parse(e=i){var n;return{is:e.includes("QQBrowser"),version:(null===(n=e.match(/QQBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},H={name:"BaiduBrowser",parse(e=i){var n;return{is:e.includes("BIDUBrowser")||e.includes("baidubrowser"),version:(null===(n=e.match(/BIDUBrowser[\s\/]([\d.]+)/))||void 0===n?void 0:n[1])||""}}},L={name:"Maxthon",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("Maxthon"),version:(null===(n=e.match(/Maxthon\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"7.0",78:"6.0"}[a]||""}},is(){return this.parse().is||(null==r?void 0:r.maxthon)}},F={name:"Sogou",parse(e=i){var n,r,a=parseInt(o.parse(e).version);return{is:e.includes("MetaSr")||e.includes("Sogou"),version:(null===(n=e.match(/SogouMobileBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/SogouMSE\/([\d.]+)/))||void 0===r?void 0:r[1])||{116:"13.0",94:"12.0",80:"11.0"}[a]||""}}},U={name:"Liebao",parse(e=i){var n;let r=parseInt(o.parse(e).version);return{is:e.includes("LBBROWSER")||e.includes("LieBaoFast"),version:(null===(n=e.match(/LieBaoFast\/([\d.]+)/))||void 0===n?void 0:n[1])||{112:"9.0",79:"8.0",57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[r]||""}},is(){return this.parse().is||(null==r?void 0:r.liebao)}},N={name:"2345Browser",parse(e=i){var n,r;let a=parseInt(o.parse(e).version);return{is:e.includes("2345Explorer")||e.includes("Mb2345Browser")||e.includes("2345chrome"),version:(null===(n=e.match(/2345Explorer\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Mb2345Browser\/([\d.]+)/))||void 0===r?void 0:r[1])||{109:"13.0",69:"10.0",55:"9.9"}[a]||""}},async is(){let e=this.parse().is;var n,i;e||(e=(null==r?void 0:r.chrome)&&((null==r||null===(n=r.chrome)||void 0===n?void 0:n.adblock2345)||(null==r||null===(i=r.chrome)||void 0===i?void 0:i.common2345)));return e}},G={name:"115Browser",parse(e=i){var n;return{is:e.includes("115Browser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},_={name:"TheWorld",parse(e=i){var n;return{is:e.includes("TheWorld"),version:(null===(n=e.match(/TheWorld ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Q={name:"Quark",parse(e=i){var n,r;return{is:e.includes("Quark"),version:(null===(n=e.match(/Quark\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/QuarkPC\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},Y={name:"Qiyu",parse(e=i){var n;return{is:e.includes("Qiyu"),version:(null===(n=e.match(/Qiyu\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},j={name:"HONOR",parse(e=i){var n,r;return{is:e.includes("HONOR")||e.includes("bdhonorbrowser/"),version:(null===(n=e.match(/bdhonorbrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/Version\/([\d.]+)/))||void 0===r?void 0:r[1])||""}}},q={name:"Huawei",parse(e=i){var n,r,a;return{is:e.includes("HuaweiBrowser")||e.includes("HBPC/"),version:(null===(n=e.match(/HuaweiBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/HBPC\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/Version\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},X={name:"OPPO",parse(e=i){var n;return{is:e.includes("HeyTapBrowser")||e.includes("OPPO"),version:(null===(n=e.match(/HeyTapBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},z={name:"Vivo",parse(e=i){var n;return{is:e.includes("VivoBrowser"),version:(null===(n=e.match(/VivoBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},K={name:"Xiaomi",parse(e=i){var n;return{is:e.includes("MiuiBrowser"),version:(null===(n=e.match(/115Browser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},$={name:"Meizu",parse(e=i){var n;return{is:e.includes("MZBrowser"),version:(null===(n=e.match(/MZBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Z={name:"OnePlus",parse:(e=i)=>({is:e.includes("ONEPLUS"),version:""})},J={name:"Samsung",parse(e=i){var n;return{is:e.includes("SamsungBrowser"),version:(null===(n=e.match(/SamsungBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ee={name:"Lenovo",parse(e=i){var n;return{is:e.includes("SLBrowser"),version:(null===(n=e.match(/SLBrowser\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ne={name:"QQ",parse(e=i){var n;return{is:e.includes("QQ/"),version:(null===(n=e.match(/QQ\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},re={name:"Baidu",parse(e=i){var n;return{is:e.includes("Baidu")||e.includes("baiduboxapp")||e.includes("BaiduD"),version:(null===(n=e.match(/baiduboxapp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ie={name:"Wechat",parse(e=i){var n;return{is:e.includes("MicroMessenger"),version:(null===(n=e.match(/MicroMessenger\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ae={name:"WechatWork",parse(e=i){var n;return{is:e.includes("wxwork"),version:(null===(n=e.match(/wxwork\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},oe={name:"Taobao",parse(e=i){var n;return{is:e.includes("AliApp(TB"),version:(null===(n=e.match(/AliApp\(TB\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},te={name:"Alipay",parse(e=i){var n;return{is:e.includes("AliApp(AP"),version:(null===(n=e.match(/AliApp\(AP\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},se={name:"Weibo",parse(e=i){var n;return{is:e.includes("Weibo"),version:(null===(n=e.match(/weibo__([\d.]+)/))||void 0===n?void 0:n[1])||""}}},le={name:"Douban",parse(e=i){var n;return{is:e.includes("com.douban.frodo"),version:(null===(n=e.match(/com.douban.frodo\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de={name:"Toutiao",parse(e=i){var n;return{is:e.includes("NewsArticle"),version:(null===(n=e.match(/NewsArticle\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},ue={name:"WebKit",parse:(e=i)=>({is:e.includes("AppleWebKit")})},ve={name:"Trident",parse:(e=i)=>({is:e.includes("Trident")||e.includes("NET CLR")})},ce={name:"Gecko",parse:(e=i)=>({is:e.includes("Gecko/")})},me={name:"Servo",parse:(e=i)=>({is:e.includes("Servo/")})},pe={name:"Presto",parse:(e=i)=>({is:e.includes("Presto")})},he={name:"KHTML",parse:(e=i)=>({is:e.includes("KHTML/")})};let ge=[].concat([a,o,t,s,l,d,u,v,c,m,p,h,g,f,w,S,b,y,A,B,C,E,x,I,P,k,O,M,V,W,R,H,L,F,U,N,G,_,Q,Y],[j,q,X,z,K,$,Z,J,ee],[ne,re,ie,ae,oe,te,se,le,{name:"Suning",parse(e=i){var n;return{is:e.includes("SNEBUY-APP"),version:(null===(n=e.match(/SNEBUY-APP([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"iQIYI",parse(e=i){var n;return{is:e.includes("IqiyiApp"),version:(null===(n=e.match(/IqiyiVersion\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"DingTalk",parse(e=i){var n;return{is:e.includes("DingTalk"),version:(null===(n=e.match(/DingTalk\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Douyin",parse(e=i){var n;return{is:e.includes("aweme"),version:(null===(n=e.match(/app_version\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},de,{name:"Facebook",parse(e=i){var n;return{is:e.includes("Facebook")||e.includes("FBAV/"),version:(null===(n=e.match(/FBAV\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"WhatsApp",parse(e=i){var n;return{is:e.includes("WhatsApp"),version:(null===(n=e.match(/WhatsApp\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"TikTok",parse(e=i){var n;return{is:e.includes("TikTok"),version:(null===(n=e.match(/TikTok\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Line",parse(e=i){var n;return{is:e.includes("Line/"),version:(null===(n=e.match(/Line\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Telegram",parse(e=i){var n;return{is:e.includes("Telegram"),version:(null===(n=e.match(/Telegram\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Instagram",parse(e=i){var n;return{is:e.includes("Instagram"),version:(null===(n=e.match(/Instagram ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"X",parse:(e=i)=>({is:e.includes("Twitter ")||e.includes("TwitterAndroid"),version:""})},{name:"Snapchat",parse(e=i){var n;return{is:e.includes("Snapchat"),version:(null===(n=e.match(/Snapchat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}],[{name:"Twitterbot",parse:(e=i)=>({is:e.includes("Twitterbot"),version:""})},{name:"TelegramBot",parse:(e=i)=>({is:e.includes("TelegramBot"),version:""})},{name:"Googlebot",parse(e=i){var n;return{is:e.includes("Googlebot"),version:(null===(n=e.match(/Googlebot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Baiduspider",parse(e=i){var n;return{is:e.includes("Baiduspider"),version:(null===(n=e.match(/Baiduspider(-render)?\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Sogouspider",parse(e=i){var n;return{is:e.match(/Sogou (\S+) Spider\/([\d.]+)/i),version:(null===(n=e.match(/Sogou (\S+) Spider\/([\d.]+)/i))||void 0===n?void 0:n[1])||""}}},{name:"Bingbot",parse(e=i){var n;return{is:e.includes("bingbot"),version:(null===(n=e.match(/bingbot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"360Spider",parse:(e=i)=>({is:e.includes("360Spider")||e.includes("HaosouSpider"),version:""})},{name:"Bytespider",parse:(e=i)=>({is:e.includes("Bytespider"),version:""})},{name:"YisouSpider",parse(e=i){var n;return{is:e.includes("YisouSpider"),version:(null===(n=e.match(/YisouSpider\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YodaoBot",parse(e=i){var n;return{is:e.includes("YodaoBot"),version:(null===(n=e.match(/YodaoBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"YandexBot",parse(e=i){var n;return{is:e.includes("YandexBot"),version:(null===(n=e.match(/YandexBot\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Yahoo",parse:(e=i)=>({is:e.includes("Yahoo!"),version:""})},{name:"ChatGPT",parse(e=i){var n,r,a;return{is:e.includes("OAI-SearchBot")||e.includes("ChatGPT-User")||e.includes("GPTBot"),version:(null===(n=e.match(/OAI-SearchBot\/([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/ChatGPT-User\/([\d.]+)/))||void 0===r?void 0:r[1])||(null===(a=e.match(/GPTBot\/([\d.]+)/))||void 0===a?void 0:a[1])||""}}},{name:"Headless",parse(e=i){var n;return{is:e.includes("HeadlessChrome/"),version:(null===(n=e.match(/HeadlessChrome\/([\d.]+)/))||void 0===n?void 0:n[1])||""}},async is(){return this.parse().is||""==(null==r?void 0:r.navigator)}}]);ge.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));let fe=[ue,ve,ce,me,pe,he];fe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));const we=function(e){let{userAgent:n,engine:r,browser:i,browserVersion:a}=e;var s,l;("Chrome"==i&&n.match(/\S+Browser/)&&(i=n.match(/\S+Browser/)[0]),"Chrome"==i&&n.match(/\S+Browser/))&&(a=(null===(s=n.replace(/^.*Browser\/([\d.]+).*$/))||void 0===s?void 0:s[1])||"");a||(a=(null===(l=n.match(/Version\/([\d.]+)/))||void 0===l?void 0:l[1])||"");return t.parse(n).is?r=parseInt(t.parse(n).version)>75?"Blink":"EdgeHTML":o.parse(n).is&&parseInt(o.parse(n).version)>27&&(r="Blink"),{userAgent:n,engine:r,browser:i,browserVersion:a}};var Se={name:"browser",parse(e=i){let n="",r="";ge.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";fe.forEach((function(n){n.parse(e).is&&(a=n.name)})),({engine:a,browser:n,browserVersion:r}=we({userAgent:e,engine:a,browser:n,browserVersion:r}));let o=e.includes("; wv)"),t=["Googlebot","Baiduspider","Sogouspider","Bingbot","360Spider","Bytespider","YandexBot"].includes(n);return{browser:n,browserVersion:r,engine:a,isWebview:o,isRobot:t}},async getInfo(){var e;let{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s}=this.parse();for(let e of ge)await e.is()&&(n=e.name,a=await e.version());return({engine:o,browser:n,browserVersion:a}=we({userAgent:i,engine:o,browser:n,browserVersion:a})),{browser:n,browserVersion:a,engine:o,isWebview:t,isRobot:s,cookieEnabled:null==r||null===(e=r.navigator)||void 0===e?void 0:e.cookieEnabled,userAgent:i}}},be={name:"Windows",parse(e=i){var n;let r=(null===(n=e.match(/^Mozilla\/\d.0 \(Windows NT ([\d.]+)[;)].*$/))||void 0===n?void 0:n[1])||"";return{is:e.includes("Windows"),version:{"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"}[r]||r}},async version(){var e;let n=this.parse().version;if(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.userAgentData){const e=await r.navigator.userAgentData.getHighEntropyValues(["platformVersion"]);if("Windows"===e.platform){n=parseInt(e.platformVersion.split(".")[0])>=13?"11":"10"}}return n}},ye={name:"Linux",parse:(e=i)=>({is:e.includes("Linux")||e.includes("X11"),version:""})},Ae={name:"macOS",parse(e=i){var n;return{is:e.includes("Macintosh"),version:(null===(n=e.match(/Mac OS X -?([\d_\.]+)/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}}},Be={name:"Android",parse(e=i){var n;return{is:e.includes("Android")||e.includes("Adr"),version:(null===(n=e.match(/Android ([\d.]+);/))||void 0===n?void 0:n[1])||""}}},Ce={name:"HarmonyOS",parse(e=i){var n,r;let a=(null===(n=e.match(/HarmonyOS (\d+.\d+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/OpenHarmony(\d+.\d+)/))||void 0===r?void 0:r[1])||"";if(!a){var o,t;let n=+(null===(o=e.match(/HMSCore (\d+.\d+)/))||void 0===o?void 0:o[1])||0;n>=6.1?a="4.0":n>=6?a="3.0":n>=5?a="2.0":n>=4&&(a="1.0"),a={10:"3.0",12:"4.0"}[(null===(t=e.match(/Android (\d+);/))||void 0===t?void 0:t[1])||0]||a}return{is:e.includes("HarmonyOS")||e.includes("OpenHarmony")||e.includes("ArkWeb"),version:a}}},Ee={name:"Ubuntu",parse:(e=i)=>({is:e.includes("Ubuntu"),version:""})},Te={name:"FreeBSD",parse:(e=i)=>({is:e.includes("FreeBSD"),version:""})},xe={name:"Debian",parse(e=i){var n;return{is:e.includes("Debian"),version:(null===(n=e.match(/Debian\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Pe={name:"Deepin",parse(e=i){var n;return{is:e.includes("Deepin"),version:(null===(n=e.match(/Deepin ([\d.]+)/))||void 0===n?void 0:n[1])||""}}},Ie={name:"iOS",parse(e=i){var n;return{is:e.includes("like Mac OS X"),version:(null===(n=e.match(/OS ([\d_]+) like/))||void 0===n?void 0:n[1].replace(/_/g,"."))||""}},async is(){let e=this.parse().is;var n;if(!e&&(null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)){return"iOS"===(await r.navigator.userAgentData.getHighEntropyValues(["platform"])).platform}return e},async version(){var e;let n=this.parse().version;if(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.userAgentData){return(await r.navigator.userAgentData.getHighEntropyValues(["platformVersion"])).platformVersion}return n}};let Oe=[be,ye,Ae,Be,Ce,Ee,Te,xe,Pe,Ie,{name:"Windows Phone",parse(e=i){var n;return{is:e.includes("IEMobile")||e.includes("Windows Phone"),version:(null===(n=e.match(/Windows Phone( OS)? ([\d.]+);/))||void 0===n?void 0:n[2])||""}}},{name:"BlackBerry",parse:(e=i)=>({is:e.includes("BlackBerry")||e.includes("RIM"),version:""})},{name:"MeeGo",parse:(e=i)=>({is:e.includes("MeeGo"),version:""})},{name:"Symbian",parse(e=i){var n;return{is:e.includes("Symbian"),version:(null===(n=e.match(/Series60\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Chrome OS",parse(e=i){var n,r;return{is:e.includes("CrOS"),version:(null===(n=e.match(/MSIE ([\d.]+)/))||void 0===n?void 0:n[1])||(null===(r=e.match(/rv:([\d.]+)/))||void 0===r?void 0:r[1])||""}}},{name:"WebOS",parse(e=i){var n;return{is:e.includes("hpwOS"),version:(null===(n=e.match(/hpwOS\/([\d.]+);/))||void 0===n?void 0:n[1])||""}}},{name:"UOS",parse(e=i){var n;return{is:e.includes("UOS"),version:(null===(n=e.match(/UOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"CentOS",parse(e=i){var n;return{is:e.includes("CentOS"),version:(null===(n=e.match(/CentOS\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Fedora",parse(e=i){var n;return{is:e.includes("Fedora"),version:(null===(n=e.match(/Fedora\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Gentoo",parse:(e=i)=>({is:e.includes("Gentoo"),version:""})},{name:"Red Hat",parse(e=i){var n;return{is:e.includes("Red Hat"),version:(null===(n=e.match(/Red Hat\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"SUSE",parse(e=i){var n;return{is:e.includes("SUSE"),version:(null===(n=e.match(/SUSE\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}},{name:"Slackware",parse(e=i){var n;return{is:e.includes("Slackware"),version:(null===(n=e.match(/Slackware\/([\d.]+)/))||void 0===n?void 0:n[1])||""}}}];Oe.forEach((e=>{e.is||(e.is=async function(){return e.parse().is}),e.version||(e.version=async function(){return e.parse().version})}));var Me={name:"system",parse(e=i){let n="",r="";Oe.forEach((function(i){i.parse(e).is&&(n=i.name,r=i.parse(e).version)}));let a="";e.match(/(Win64|x64|WOW64|x86_64)/i)?a="Win64":e.match(/(Win32|x86|WOW32)/i)?a="Win32":e.match(/aarch64|arm64/)?a="ARM64":e.match(/arm32/)?a="ARM32":e.match(/iPhone/)?a="iPhone":e.match(/iPad/)?a="iPad":e.match(/iPod/)?a="iPod":e.match(/Android/)&&(a="Android");let o="",t=e+"|"+a;o=t.match(/armv?\d+/i)||t.match(/aarch64/)?"arm":t.match(/loongarch64/)?"loongarch":"x86";let s=e.match(/Win64|x64|WOW64|x86_64|aarch64|arm64|loongarch64/i)?64:32;return{system:n,systemVersion:r,platform:a,architecture:o,bitness:s}},async getInfo(){var e,n;let{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}=this.parse();for(let e of Oe)await e.is()&&(i=e.name,a=await e.version());var l,d;(null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.platform&&(o=r.navigator.platform),null!=r&&null!==(n=r.navigator)&&void 0!==n&&n.userAgentData)&&(t=await(null===(l=r.navigator.userAgentData)||void 0===l?void 0:l.getHighEntropyValues(["architecture"]).then((e=>e.architecture||t))),s=await(null===(d=r.navigator.userAgentData)||void 0===d?void 0:d.getHighEntropyValues(["bitness"]).then((e=>+e.bitness||s))));return{system:i,systemVersion:a,platform:o,architecture:t,bitness:s}}};let De=[{name:"Mobile",parse:(e=i)=>({is:e.includes("Mobi")||e.includes("iPh")||e.includes("480")})},{name:"Tablet",parse:(e=i)=>({is:e.includes("Tablet")||e.includes("Pad")||e.includes("Nexus 7")}),async is(){return this.parse().is||"MacIntel"===(null==r?void 0:r.navigator.platform)&&(null==r?void 0:r.navigator.maxTouchPoints)>1}}];De.forEach((e=>{e.is||(e.is=async function(){return e.parse().is})}));var ke={name:"device",parse(e=i){let n="Desktop";return De.forEach((function(r){r.parse(e).is&&(n=r.name)})),{device:n}},async getInfo(){var e;let n=(null==r?void 0:r.devicePixelRatio)||1,i=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.deviceMemory)||4;return Object.assign({devicePixelRatio:n,deviceMemory:i},this.parse())}},Ve={name:"gpu",parse:()=>({}),async getInfo(){let e="",n="";if(null!=r&&r.document){let o=r.document.createElement("canvas").getContext("experimental-webgl");if(o){var i,a;let r=o.getExtension("WEBGL_debug_renderer_info"),t=o.getParameter(r.UNMASKED_RENDERER_WEBGL);e=(null===(i=t.match(/ANGLE \((.+?),/))||void 0===i?void 0:i[1])||"",n=(null===(a=t.match(/, (.+?) (\(|vs_)/))||void 0===a?void 0:a[1])||""}}return{gpu:e,gpuModel:n}}};const We=/\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/,Re=/\b(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}\b/i,He=r.RTCPeerConnection||r.mozRTCPeerConnection||r.webkitRTCPeerConnection;var Le={name:"network",parse:()=>({}),async getInfo(){var e,n;let i="unknown",a=null==r||null===(e=r.navigator)||void 0===e?void 0:e.connection;return a&&(i=a.type||a.effectiveType,"2"!=i&&"unknown"!=i||(i="wifi")),{network:i,isOnline:(null==r||null===(n=r.navigator)||void 0===n?void 0:n.onLine)||!1,ip:await async function(){const e=new Set,n=n=>{var r;const i=null==n||null===(r=n.candidate)||void 0===r?void 0:r.candidate;if(i)for(const n of[We,Re]){const r=i.match(n);r&&e.add(r[0])}};return new Promise((function(r,i){if(He){const a=new He({iceServers:[{urls:"stun:stun.cloudflare.com:3478"},{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.services.mozilla.com"}]});a.addEventListener("icecandidate",n),a.createDataChannel(""),a.createOffer().then((e=>a.setLocalDescription(e)),i);let o=20,t=null,s=function(){try{a.removeEventListener("icecandidate",n),a.close()}catch{}t&&clearInterval(t)};t=setInterval((function(){let n=[...e];n.length?(s(),r(n[n.length-1])):o?o--:(s(),r(""))}),200)}else r("")}))}()}}},Fe={name:"battery",parse:()=>({}),async getInfo(){var e;let n=!0,i=1;return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.getBattery&&(n=await r.navigator.getBattery().then((e=>null==e?void 0:e.charging)),i=await r.navigator.getBattery().then((e=>+(null==e?void 0:e.level)||-1))),{isCharging:n,battery:i}}};var Ue={name:"screen",parse:()=>({}),async getInfo(){var e,n,i,a,o,t,s,l;return{screenWidth:(null==r||null===(e=r.screen)||void 0===e?void 0:e.width)||0,screenHeight:(null==r||null===(n=r.screen)||void 0===n?void 0:n.height)||0,clientWidth:(null==r||null===(i=r.document)||void 0===i||null===(i=i.documentElement)||void 0===i?void 0:i.clientWidth)||(null==r||null===(a=r.document)||void 0===a||null===(a=a.body)||void 0===a?void 0:a.clientWidth)||0,clientHeight:(null==r||null===(o=r.document)||void 0===o||null===(o=o.documentElement)||void 0===o?void 0:o.clientHeight)||(null==r||null===(t=r.document)||void 0===t||null===(t=t.body)||void 0===t?void 0:t.clientHeight)||0,screenFPS:await async function(){return new Promise((function(e){let n=0,r=1,i=[],a=function(o){if(n>0)if(r<12)i.push(o-n),n=o,r++,requestAnimationFrame(a);else{i.sort(),i=i.slice(1,11);let n=i.reduce(((e,n)=>e+n));const r=10*Math.round(1e4/n/10);e(r)}else n=o,requestAnimationFrame(a)};requestAnimationFrame(a)}))}(),screenColorDepth:null==r?void 0:r.screen.colorDepth,screenPixelDepth:null==r?void 0:r.screen.pixelDepth,screenOrientation:(null===(s=screen.orientation)||void 0===s?void 0:s.type)||"未知",isTouch:(null==r||null===(l=r.navigator)||void 0===l?void 0:l.maxTouchPoints)>0||!1}}},Ne={name:"language",parse:()=>({}),async getInfo(){var e,n,i;let a=(null==r||null===(e=r.navigator)||void 0===e?void 0:e.language)||(null==r||null===(n=r.navigator)||void 0===n?void 0:n.browserLanguage)||(null==r||null===(i=r.navigator)||void 0===i?void 0:i.systemLanguage);if("string"!=typeof a)return"Unknown language";let o=a.split("-");return o[1]&&(o[1]=o[1].toUpperCase()),{language:o.join("_")}}},Ge={name:"timezone",parse:()=>({}),async getInfo(){var e;return{timezone:null===(e=Intl)||void 0===e||null===(e=e.DateTimeFormat())||void 0===e||null===(e=e.resolvedOptions())||void 0===e?void 0:e.timeZone}}};let _e=function(e,n){return e<<n|e>>>32-n},Qe=function(e,n){let r,i,a,o,t;return a=2147483648&e,o=2147483648&n,r=1073741824&e,i=1073741824&n,t=(1073741823&e)+(1073741823&n),r&i?2147483648^t^a^o:r|i?1073741824&t?3221225472^t^a^o:1073741824^t^a^o:t^a^o},Ye=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e&n|~e&r}(n,r,i),a),t)),Qe(_e(e,o),n)},je=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e&r|n&~r}(n,r,i),a),t)),Qe(_e(e,o),n)},qe=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return e^n^r}(n,r,i),a),t)),Qe(_e(e,o),n)},Xe=function(e,n,r,i,a,o,t){return e=Qe(e,Qe(Qe(function(e,n,r){return n^(e|~r)}(n,r,i),a),t)),Qe(_e(e,o),n)},ze=function(e){let n,r,i="",a="";for(r=0;r<=3;r++)n=e>>>8*r&255,a="0"+n.toString(16),i+=a.substr(a.length-2,2);return i};function Ke(e){let n,r,i,a,o,t,s,l,d,u=Array();for(e=function(e){e=e.replace(/\x0d\x0a/g,"\n");let n="";for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i<128?n+=String.fromCharCode(i):i>127&&i<2048?(n+=String.fromCharCode(i>>6|192),n+=String.fromCharCode(63&i|128)):(n+=String.fromCharCode(i>>12|224),n+=String.fromCharCode(i>>6&63|128),n+=String.fromCharCode(63&i|128))}return n}(e),u=function(e){let n,r=e.length,i=r+8,a=16*((i-i%64)/64+1),o=Array(a-1),t=0,s=0;for(;s<r;)n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|e.charCodeAt(s)<<t,s++;return n=(s-s%4)/4,t=s%4*8,o[n]=o[n]|128<<t,o[a-2]=r<<3,o[a-1]=r>>>29,o}(e),t=1732584193,s=4023233417,l=2562383102,d=271733878,n=0;n<u.length;n+=16)r=t,i=s,a=l,o=d,t=Ye(t,s,l,d,u[n+0],7,3614090360),d=Ye(d,t,s,l,u[n+1],12,3905402710),l=Ye(l,d,t,s,u[n+2],17,606105819),s=Ye(s,l,d,t,u[n+3],22,3250441966),t=Ye(t,s,l,d,u[n+4],7,4118548399),d=Ye(d,t,s,l,u[n+5],12,1200080426),l=Ye(l,d,t,s,u[n+6],17,2821735955),s=Ye(s,l,d,t,u[n+7],22,4249261313),t=Ye(t,s,l,d,u[n+8],7,1770035416),d=Ye(d,t,s,l,u[n+9],12,2336552879),l=Ye(l,d,t,s,u[n+10],17,4294925233),s=Ye(s,l,d,t,u[n+11],22,2304563134),t=Ye(t,s,l,d,u[n+12],7,1804603682),d=Ye(d,t,s,l,u[n+13],12,4254626195),l=Ye(l,d,t,s,u[n+14],17,2792965006),s=Ye(s,l,d,t,u[n+15],22,1236535329),t=je(t,s,l,d,u[n+1],5,4129170786),d=je(d,t,s,l,u[n+6],9,3225465664),l=je(l,d,t,s,u[n+11],14,643717713),s=je(s,l,d,t,u[n+0],20,3921069994),t=je(t,s,l,d,u[n+5],5,3593408605),d=je(d,t,s,l,u[n+10],9,38016083),l=je(l,d,t,s,u[n+15],14,3634488961),s=je(s,l,d,t,u[n+4],20,3889429448),t=je(t,s,l,d,u[n+9],5,568446438),d=je(d,t,s,l,u[n+14],9,3275163606),l=je(l,d,t,s,u[n+3],14,4107603335),s=je(s,l,d,t,u[n+8],20,1163531501),t=je(t,s,l,d,u[n+13],5,2850285829),d=je(d,t,s,l,u[n+2],9,4243563512),l=je(l,d,t,s,u[n+7],14,1735328473),s=je(s,l,d,t,u[n+12],20,2368359562),t=qe(t,s,l,d,u[n+5],4,4294588738),d=qe(d,t,s,l,u[n+8],11,2272392833),l=qe(l,d,t,s,u[n+11],16,1839030562),s=qe(s,l,d,t,u[n+14],23,4259657740),t=qe(t,s,l,d,u[n+1],4,2763975236),d=qe(d,t,s,l,u[n+4],11,1272893353),l=qe(l,d,t,s,u[n+7],16,4139469664),s=qe(s,l,d,t,u[n+10],23,3200236656),t=qe(t,s,l,d,u[n+13],4,681279174),d=qe(d,t,s,l,u[n+0],11,3936430074),l=qe(l,d,t,s,u[n+3],16,3572445317),s=qe(s,l,d,t,u[n+6],23,76029189),t=qe(t,s,l,d,u[n+9],4,3654602809),d=qe(d,t,s,l,u[n+12],11,3873151461),l=qe(l,d,t,s,u[n+15],16,530742520),s=qe(s,l,d,t,u[n+2],23,3299628645),t=Xe(t,s,l,d,u[n+0],6,4096336452),d=Xe(d,t,s,l,u[n+7],10,1126891415),l=Xe(l,d,t,s,u[n+14],15,2878612391),s=Xe(s,l,d,t,u[n+5],21,4237533241),t=Xe(t,s,l,d,u[n+12],6,1700485571),d=Xe(d,t,s,l,u[n+3],10,2399980690),l=Xe(l,d,t,s,u[n+10],15,4293915773),s=Xe(s,l,d,t,u[n+1],21,2240044497),t=Xe(t,s,l,d,u[n+8],6,1873313359),d=Xe(d,t,s,l,u[n+15],10,4264355552),l=Xe(l,d,t,s,u[n+6],15,2734768916),s=Xe(s,l,d,t,u[n+13],21,1309151649),t=Xe(t,s,l,d,u[n+4],6,4149444226),d=Xe(d,t,s,l,u[n+11],10,3174756917),l=Xe(l,d,t,s,u[n+2],15,718787259),s=Xe(s,l,d,t,u[n+9],21,3951481745),t=Qe(t,r),s=Qe(s,i),l=Qe(l,a),d=Qe(d,o);return(ze(t)+ze(s)+ze(l)+ze(d)).toUpperCase()}var $e={name:"webgl",async getInfo(){let e=r.document.createElement("canvas");e.width=256,e.height=128;let n=e.getContext("webgl2",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl2",{preserveDrawingBuffer:!0})||e.getContext("webgl",{preserveDrawingBuffer:!0})||e.getContext("experimental-webgl",{preserveDrawingBuffer:!0})||e.getContext("moz-webgl",{preserveDrawingBuffer:!0}),i=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,i);let a=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.7321,0]);n.bufferData(n.ARRAY_BUFFER,a,n.STATIC_DRAW),i.itemSize=3,i.numItems=3;let o=n.createProgram(),t=n.createShader(n.VERTEX_SHADER);n.shaderSource(t,"attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}"),n.compileShader(t);let s=n.createShader(n.FRAGMENT_SHADER);n.shaderSource(s,"precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}"),n.compileShader(s),n.attachShader(o,t),n.attachShader(o,s),n.linkProgram(o),n.useProgram(o),o.vertexPosAttrib=n.getAttribLocation(o,"attrVertex"),o.offsetUniform=n.getUniformLocation(o,"uniformOffset"),n.enableVertexAttribArray(o.vertexPosArray),n.vertexAttribPointer(o.vertexPosAttrib,i.itemSize,n.FLOAT,!1,0,0),n.uniform2f(o.offsetUniform,1,1),n.drawArrays(n.TRIANGLE_STRIP,0,i.numItems);let l=new Uint8Array(131072);n.readPixels(0,0,256,128,n.RGBA,n.UNSIGNED_BYTE,l);let d=JSON.stringify(l).replace(/,?"[0-9]+":/g,"");return""==d.replace(/^{[0]+}$/g,"")?"n/a":Ke(d)}},Ze={name:"canvas",async getInfo(){let e=r.document.createElement("canvas");e.width=1e3,e.height=200;let n=e.getContext("2d");return n.textBaseline="alphabetic",n.fillStyle="#f60",n.fillRect(150,50,100,100),n.fillStyle="#069",n.font="12pt Arial",n.fillText("😃just for test the canvas feature!",3,15),n.fillStyle="rgba(102, 204, 0, 0.2)",n.font="18pt Arial",n.fillText("😃just for test the canvas feature!",6,45),n.globalCompositeOperation="multiply",n.fillStyle="rgb(0,255,255)",n.beginPath(),n.arc(50,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,0,255)",n.beginPath(),n.arc(75,50,50,0,2*Math.PI,!0),n.closePath(),n.fill(),n.fillStyle="rgb(255,255,0)",n.beginPath(),n.arc(100,100,50,0,2*Math.PI,!0),n.closePath(),n.fill(),Ke(e.toDataURL())}},Je={name:"font-family",is(e="Arial"){if("string"!=typeof e||null==r||!r.document)return!1;let n="Arial",i=100,a=100,o=r.document.createElement("canvas"),t=o.getContext("2d",{willReadFrequently:!0});o.width=i,o.height=a,t.textAlign="center",t.fillStyle="black",t.textBaseline="middle";let s=function(e){t.clearRect(0,0,i,a),t.font=`100px ${e}, ${n}`,t.fillText("永",50,50);let r=t.getImageData(0,0,i,a).data;return[].slice.call(r).filter((function(e){return 0!=e}))};return s(n).join("")!==s(e).join("")}},en={name:"font",async getInfo(){let e=[];return["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"].forEach((function(n){Je.is(n)&&e.push(n)})),Ke(e.join(","))}},nn={name:"audio",getInfo:async()=>new Promise((function(e,n){let r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,44100,44100),i=r.createOscillator();i.type="triangle",i.frequency.setValueAtTime(1e4,r.currentTime);let a=r.createDynamicsCompressor();[["threshold",-50],["knee",40],["ratio",12],["reduction",-20],["attack",0],["release",.25]].forEach((function(e){void 0!==a[e[0]]&&"function"==typeof a[e[0]].setValueAtTime&&a[e[0]].setValueAtTime(e[1],r.currentTime)})),i.connect(a),a.connect(r.destination),i.start(0),r.startRendering();let o=setTimeout((function(){r.oncomplete=function(){},r=null,e(Ke("audio Timeout"))}),1e3);r.oncomplete=function(n){o&&clearTimeout(o);let r=n.renderedBuffer.getChannelData(0).slice(4500,5e3).reduce((function(e,n){return e+Math.abs(n)}),0).toString();i.disconnect(),a.disconnect(),e(Ke(r))}}))},rn={name:"mime",async getInfo(){var e;let n=[];return null!=r&&null!==(e=r.navigator)&&void 0!==e&&e.mimeTypes&&(n=Array.from(r.navigator.mimeTypes).map((e=>e.type))),Ke(n.join(","))}},an={name:"webgl",is(){if(null==r||!r.document)return!1;const e=r.document.createElement("canvas"),n=e.getContext("webgl")||e.getContext("experimental-webgl");return n&&n instanceof WebGLRenderingContext}},on={parse(e){let n={};return[Se,Me,ke].forEach((r=>{n=Object.assign(n,r.parse(e))})),n},async getInfo(e=["browser","system","device","gpu","network","battery","screen","language","timezone"]){let n={},r=[Se,Me,ke,Ve,Le,Fe,Ue,Ne,Ge].filter((n=>e.includes(n.name)));for(let e of r)n=Object.assign(n,await e.getInfo());return n},async getFingerprint(e=["webgl","canvas","font","audio","mime"]){let n={},r=[$e,Ze,en,nn,rn].filter((n=>e.includes(n.name))),{screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s}=await Ue.getInfo(),l=[i,JSON.stringify({screenWidth:a,screenHeight:o,screenColorDepth:t,isTouch:s})];for(let e of r)n[e.name]=await e.getInfo(),l.push(n[e.name]);return n.value=Ke(l.join(",")),n},isSupport(e,n){let r=[Je,an].find((n=>e==n.name));return!!r&&r.is(n)}};export{on as default};
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the Windows version() logic, the code checks if ("Windows"===e.platform) where e is the result of navigator.userAgentData.getHighEntropyValues(["platformVersion"]). That result does not include a platform property, so this branch will never run and Windows 11 detection via platformVersion won’t work. Use navigator.userAgentData.platform for the platform check (or request platform in the high entropy values) before mapping platformVersion to 10/11.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(Browser): remove browser error from check 360se

2 participants