@thumbmarkjs/thumbmarkjs 1.0.0-rc.0 → 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,11 +5,11 @@
5
5
  ![jsDelivr hits](https://img.shields.io/jsdelivr/npm/hm/%40thumbmarkjs%2Fthumbmarkjs)
6
6
 
7
7
 
8
- ThumbmarkJS is now the world's best **free** browser fingerprinting JavaScript library.
8
+ ThumbmarkJS is now the world's best **free** browser fingerprinting JavaScript library. It is used to generate over a billion thumbmarks every month.
9
9
 
10
- ThumbmarkJS is open source (MIT).
10
+ The client ThumbmarkJS library is open source (MIT). There also an API version. Learn more at [ThumbmarkJS website](https://www.thumbmarkjs.com).
11
11
 
12
- 🙏 Please don't do evil. ThumbmarkJS is meant to be used for good. Use this to prevent scammers and spammers for example. If you see this library being used for evil, contact me.
12
+ ThumbmarkJS is meant to be used for good. Use this to prevent scammers and spammers for example. If you see this library being used for evil, contact me.
13
13
 
14
14
  🕺 Join the [Thumbmark Discord channel](https://discord.gg/PAqxQ3TnDA)
15
15
 
@@ -17,11 +17,9 @@ Have a look at the [IOS](https://github.com/thumbmarkjs/thumbmark-swift) and [An
17
17
 
18
18
  ## Demo page
19
19
 
20
- You can help this project by visiting the demo page that **logs your fingerprint for analysis**. The logged fingerprint data is only used to improve this library. Visit the page from the link: [Show and log my fingerprint](https://www.thumbmarkjs.com/)
20
+ The library works quite well to distinguish common browsers.
21
21
 
22
- The library works very well to distinguish common browsers.
23
-
24
- Data collected through this demo page show an accuracy of 90.5%-95.5% (95% confidence interval) in identifying a unique visitor correctly.
22
+ Sampled data shows a uniqueness of 90.5%-95.5% (95% confidence interval).
25
23
 
26
24
  Mileage may vary though. Mac/Safari users tend to clash more than Windows users, and it does depend on your audience.
27
25
 
@@ -29,58 +27,73 @@ Mileage may vary though. Mac/Safari users tend to clash more than Windows users,
29
27
 
30
28
  Transpiled bundles are available now on [JSDelivr](https://www.jsdelivr.com/).
31
29
 
30
+ :warning: the version 1.0.0 is has a release candidate status as of 10.7.2025. I'll be publishing the official version shortly. If you have the older 0.20 version, check [the this commit instead](https://github.com/thumbmarkjs/thumbmarkjs/tree/715016a5c510a4ea3f1e20ec969c7db73786fdba).
31
+
32
32
  Supported module formats:
33
33
  - UMD: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.umd.js
34
34
  - CommonJS: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.cjs.js
35
35
  - ESM: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.esm.js
36
36
 
37
- ### And on the web page:
37
+ ### And on the web page (notice the @rc):
38
38
 
39
39
  ```javascript
40
- <script src="https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.umd.js"></script>
40
+ <script src="https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs@rc/dist/thumbmark.umd.js'"></script>
41
41
  <script>
42
- ThumbmarkJS.getFingerprint().then(
43
- function(fp) {
44
- console.log(fp);
45
- }
46
- );
42
+ const tm = new ThumbmarkJS.Thumbmark();
43
+ tm.get().then((res) => {
44
+ console.log(res)
45
+ })
47
46
  </script>
48
47
 
49
48
  <!-- or -->
50
49
 
51
50
  <script>
52
- import('https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.umd.js')
51
+ import('https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs@rc/dist/thumbmark.umd.js')
53
52
  .then(() => {
54
- ThumbmarkJS.getFingerprint().then((fp) => { console.log(fp)})
53
+ const tm = new ThumbmarkJS.Thumbmark();
54
+ tm.get().then((res) => {
55
+ console.log(res)
56
+ })
55
57
  })
56
58
  </script>
57
59
 
58
60
  ```
59
61
 
60
- You can also call `ThumbmarkJS.getFingerprintData()` to get a full JSON object with all its components.
62
+ ## Options are... optional 😉
61
63
 
62
- ## Options
64
+ Options are passed to the Thumbmark constructor so:
63
65
 
64
- You can use the `setOption` method to change the behavior of the library. Currently it takes only one option.
66
+ ```javascript
67
+ const tm = new ThumbmarkJS.Thumbmark({
68
+ option_key: option_value
69
+ })
70
+ ```
65
71
 
66
72
  | option | type | example | what it does |
67
73
  | - | - | - | - |
74
+ | api_key | string | 'ae8679607bf79f......' | Setting this to a key you've obtained from [https://thumbmarkjs.com](thumbmarkjs.com) makes thumbmarks incredibly more unique
68
75
  | exclude | string[] | ['webgl', 'system.browser.version'] | Removes components from the fingerprint hash. An excluded top-level component improves performance. |
69
76
  | include | string[] | ['webgl', 'system.browser.version'] | Only includes the listed components. exclude still excludes included components. |
70
- | timeout | integer | 1000 | Default is 1000. Component timeout in milliseconds.
71
- | logging | boolean | true | Default is true. Setting to false disables the anonymous 0.001% log sampling that is used to improve the library. |
77
+ | permissions_to_check | string[] | ['gyroscope', 'accelerometer'] | Checks only selected permissions. Like 'include', but more low-level. Permissions take the longest to resolve, so this is if you need to cut down some milliseconds. |
78
+ | timeout | integer | 5000 | Default is 5000. Component timeout in milliseconds.
79
+ | logging | boolean | true | Default is true. Some releases collect at most 0.01% logs to improve the library. This doesn't affect the user. |
80
+ | cache_api_call | boolean | false | Default is false. If using the API, this caches the API response for the current page load. |
81
+ | performance | boolean | false | Default is false. Setting to true includes millisecond performance of component resolving |
72
82
 
73
83
  example usage:
74
84
 
75
- ```
76
- ThumbmarkJS.setOption('exclude', ['webgl', 'system.browser.version'])
85
+ ```javascript
86
+ const tm_api = new ThumbmarkJS.Thumbmark({
87
+ api_key: 'ae8679607bf79faefe3373ec1a8305863abd6abf2dd94ecbf300fd25b8da7495',
88
+ exclude: ['math']
89
+ });
77
90
  ```
78
91
 
79
92
  ## Custom components
80
93
 
81
94
  You can add custom components to the hash with `includeComponent`, which takes two parameters, the `key` being the key of the component in the JSON and the function that returns the value (a string, a number or a JSON object). So for example, if you wanted to include an IP address in the components, you could do it like so:
82
95
 
83
- ```
96
+ ```javascript
84
97
  function fetchIpAddress() {
85
98
  return new Promise((resolve, reject) => {
86
99
  fetch('http://checkip.amazonaws.com')
@@ -98,32 +111,29 @@ function fetchIpAddress() {
98
111
  });
99
112
  }
100
113
 
101
- ThumbmarkJS.includeComponent('tcp', fetchIpAddress);
114
+ const tm = new ThumbmarkJS.Thumbmark();
115
+ tm.includeComponent('ip_address', fetchIpAddress)
102
116
  ```
103
117
 
104
118
  The function is expected to return a `Promise`, but it seems it works without, too.
105
119
 
106
- **NOTE** I don't recommend making calls to external websites like this, since it adds a huge lag to running the fingerprint. You can see for yourself by running `ThumbmarkJS.getFingerprintPerformance()`. But it's possible.
107
-
108
120
  ## Install with NPM
109
121
 
110
- Installing from NPM:
122
+ Installing from NPM (note the @rc tag as of 10.7.2025 before final release):
111
123
 
112
124
  ```bash
113
- npm install @thumbmarkjs/thumbmarkjs
125
+ npm install @thumbmarkjs/thumbmarkjs@rc
114
126
  ```
115
127
 
116
128
  and in your code
117
129
 
118
130
  ```javascript
119
- import { getFingerprint } from '@thumbmarkjs/thumbmarkjs'
131
+ import { Thumbmark } from '@thumbmarkjs/thumbmarkjs'
120
132
  ```
121
133
 
122
134
  To implement ThumbmarkJS in a Next.js app, you can use a component [like this](examples/nextjs.tsx).
123
135
 
124
- :warning: note, thumbmarkjs was published up to version 0.12.1 to NPM package `thumbmarkjs` and from v0.12.1 onwards will be published under `@thumbmarkjs/thumbmarkjs`. I'll occasionally update the old location, but please update your imports.
125
-
126
- But bear in mind that the library is meant to be running in the browser. Let me know if the library fails on a server side import. However, `getFingerprint()` is not meant to be called server side.
136
+ :warning: the library is meant to be running in the browser. Let me know if the library fails on a server side import, that shouldn't happen. Just you can't try to calculate the fingerprint server-side.
127
137
 
128
138
  ## Build it yourself
129
139
 
@@ -134,18 +144,6 @@ npm run install
134
144
  npm run build
135
145
  ```
136
146
 
137
- ## How you can help
138
-
139
- Simply going to the [Show and log my fingerprint](https://www.thumbmarkjs.com/)-page helps a lot. The logging is all anonymous and only used to develop this library. Let me know if you run into any errors by opening an issue. The discussion section is also open.
140
-
141
- Test cases you can try:
142
- - Check your fingerprint, then refresh the page with Ctrl + R
143
- - Refresh without cache
144
- - Move the window to another screen
145
- - Try in incognito
146
-
147
- if you see a fingerprint change when it shouldn't, you can use [this JSON Diff Finder tool](https://url-decode.com/tool/json-diff) to check what causes the diff.
148
-
149
147
  ## Components included in fingerprint
150
148
  - audio fingerprint
151
149
  - canvas fingerprint
@@ -1,2 +1,2 @@
1
- "use strict";const e={exclude:[],include:[],logging:!0,timeout:5e3,cache_api_call:!0,performance:!1};let n={...e};function t(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};const e=navigator.userAgent,n=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>samsung).*Version\/(?<version>\d+(?:\.\d+)?)/i,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/],t={edg:"Edge",opr:"Opera",samsung:"SamsungBrowser"};for(const r of n){const n=e.match(r);if(n&&n.groups){return{name:t[n.groups.name.toLowerCase()]||n.groups.name,version:n.groups.version}}}return{name:"unknown",version:"unknown"}}function r(e){let n=0;for(let t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}function o(e,n,t){let r=[];for(let n=0;n<e[0].data.length;n++){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].data[n]);r.push(a(t))}const o=new Uint8ClampedArray(r);return new ImageData(o,n,t)}function a(e){if(0===e.length)return 0;const n={};for(const t of e)n[t]=(n[t]||0)+1;let t=e[0];for(const e in n)n[e]>n[t]&&(t=parseInt(e,10));return t}function i(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const s=new Uint32Array([597399067,2869860233,951274213,2716044179]);function c(e,n){return e<<n|e>>>32-n}function l(e,n=0){var t;if(n=n?0|n:0,"string"==typeof e&&(t=e,e=(new TextEncoder).encode(t).buffer),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const r=new Uint32Array([n,n,n,n]);!function(e,n){const t=e.byteLength/16|0,r=new Uint32Array(e,0,4*t);for(let e=0;e<t;e++){const t=r.subarray(4*e,4*(e+1));t[0]=Math.imul(t[0],s[0]),t[0]=c(t[0],15),t[0]=Math.imul(t[0],s[1]),n[0]=n[0]^t[0],n[0]=c(n[0],19),n[0]=n[0]+n[1],n[0]=Math.imul(n[0],5)+1444728091,t[1]=Math.imul(t[1],s[1]),t[1]=c(t[1],16),t[1]=Math.imul(t[1],s[2]),n[1]=n[1]^t[1],n[1]=c(n[1],17),n[1]=n[1]+n[2],n[1]=Math.imul(n[1],5)+197830471,t[2]=Math.imul(t[2],s[2]),t[2]=c(t[2],17),t[2]=Math.imul(t[2],s[3]),n[2]=n[2]^t[2],n[2]=c(n[2],15),n[2]=n[2]+n[3],n[2]=Math.imul(n[2],5)+2530024501,t[3]=Math.imul(t[3],s[3]),t[3]=c(t[3],18),t[3]=Math.imul(t[3],s[0]),n[3]=n[3]^t[3],n[3]=c(n[3],13),n[3]=n[3]+n[0],n[3]=Math.imul(n[3],5)+850148119}}(e,r),function(e,n){const t=e.byteLength/16|0,r=e.byteLength%16,o=new Uint32Array(4),a=new Uint8Array(e,16*t,r);switch(r){case 15:o[3]=o[3]^a[14]<<16;case 14:o[3]=o[3]^a[13]<<8;case 13:o[3]=o[3]^a[12],o[3]=Math.imul(o[3],s[3]),o[3]=c(o[3],18),o[3]=Math.imul(o[3],s[0]),n[3]=n[3]^o[3];case 12:o[2]=o[2]^a[11]<<24;case 11:o[2]=o[2]^a[10]<<16;case 10:o[2]=o[2]^a[9]<<8;case 9:o[2]=o[2]^a[8],o[2]=Math.imul(o[2],s[2]),o[2]=c(o[2],17),o[2]=Math.imul(o[2],s[3]),n[2]=n[2]^o[2];case 8:o[1]=o[1]^a[7]<<24;case 7:o[1]=o[1]^a[6]<<16;case 6:o[1]=o[1]^a[5]<<8;case 5:o[1]=o[1]^a[4],o[1]=Math.imul(o[1],s[1]),o[1]=c(o[1],16),o[1]=Math.imul(o[1],s[2]),n[1]=n[1]^o[1];case 4:o[0]=o[0]^a[3]<<24;case 3:o[0]=o[0]^a[2]<<16;case 2:o[0]=o[0]^a[1]<<8;case 1:o[0]=o[0]^a[0],o[0]=Math.imul(o[0],s[0]),o[0]=c(o[0],15),o[0]=Math.imul(o[0],s[1]),n[0]=n[0]^o[0]}}(e,r),function(e,n){n[0]=n[0]^e.byteLength,n[1]=n[1]^e.byteLength,n[2]=n[2]^e.byteLength,n[3]=n[3]^e.byteLength,n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0,n[0]=i(n[0]),n[1]=i(n[1]),n[2]=i(n[2]),n[3]=i(n[3]),n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0}(e,r);const o=new Uint8Array(r.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,"0"))).join("")}const u=t(),d=u.name.toLowerCase(),m=u.version.split(".")[0]||"0",h=parseInt(m,10),f=280;function g(e,n){return new Promise((t=>setTimeout(t,e,n)))}const p=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],w=["monospace","sans-serif","serif"];function v(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font=`72px ${n}`,e.measureText("WwMmLli0Oo").width}function y(){var e;const n=document.createElement("canvas"),t=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");if(t&&"getParameter"in t)try{const e=(t.getParameter(t.VENDOR)||"").toString(),n=(t.getParameter(t.RENDERER)||"").toString();let r={vendor:e,renderer:n,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!n.length||!e.length){const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=(t.getParameter(e.UNMASKED_VENDOR_WEBGL)||"").toString(),o=(t.getParameter(e.UNMASKED_RENDERER_WEBGL)||"").toString();n&&(r.vendorUnmasked=n),o&&(r.rendererUnmasked=o)}}return r}catch(e){}return"undefined"}function S(){const e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}const b=(e,n,t,r)=>{const o=(t-n)/r;let a=0;for(let t=0;t<r;t++){a+=e(n+(t+.5)*o)}return a*o};function E(e,n){const t={};return n.forEach((n=>{const r=function(e){if(0===e.length)return null;const n={};e.forEach((e=>{const t=String(e);n[t]=(n[t]||0)+1}));let t=e[0],r=1;return Object.keys(n).forEach((e=>{n[e]>r&&(t=e,r=n[e])})),t}(e.map((e=>n in e?e[n]:void 0)).filter((e=>void 0!==e)));r&&(t[n]=r)})),t}let M;function P(){let e=[];const n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(n).forEach((t=>{n[t].forEach((n=>{matchMedia(`(${t}: ${n})`).matches&&e.push(`${t}: ${n}`)}))})),e}const A="SamsungBrowser"!==t().name?1:3;let C,x=null;const k={audio:async function(e){const n=t();return["SamsungBrowser","Safari"].includes(n.name)?null:async function(){return new Promise(((e,n)=>{try{const n=44100,t=5e3,o=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,t,n),a=o.createBufferSource(),i=o.createOscillator();i.frequency.value=1e3;const s=o.createDynamicsCompressor();let c;s.threshold.value=-50,s.knee.value=40,s.ratio.value=12,s.attack.value=0,s.release.value=.2,i.connect(s),s.connect(o.destination),i.start(),o.oncomplete=n=>{c=n.renderedBuffer.getChannelData(0),e({sampleHash:r(c),maxChannels:o.destination.maxChannelCount,channelCountMode:a.channelCountMode})},o.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))}()},canvas:async function(e){return t(),"firefox"===d||"safari"===d&&h>=17?null:function(){const e=document.createElement("canvas");return e.getContext("2d"),new Promise((e=>{const n=Array.from({length:3},(()=>function(){const e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=f,e.height=20;const t=n.createLinearGradient(0,0,e.width,e.height);t.addColorStop(0,"red"),t.addColorStop(1/6,"orange"),t.addColorStop(2/6,"yellow"),t.addColorStop(.5,"green"),t.addColorStop(4/6,"blue"),t.addColorStop(5/6,"indigo"),t.addColorStop(1,"violet"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();const o=n.getImageData(0,0,e.width,e.height);return o}()));e({commonPixelsHash:l(o(n,f,20).data.toString()).toString()})}))}()},fonts:async function(e){const n=t();return["Firefox"].includes(n.name)?null:new Promise(((e,n)=>{try{!async function(e){for(var n;!document.body;)await g(50);const t=document.createElement("iframe");t.setAttribute("frameBorder","0");const r=t.style;r.setProperty("position","fixed"),r.setProperty("display","block","important"),r.setProperty("visibility","visible"),r.setProperty("border","0"),r.setProperty("opacity","0"),t.src="about:blank",document.body.appendChild(t);const o=t.contentDocument||(null===(n=t.contentWindow)||void 0===n?void 0:n.document);if(!o)throw new Error("Iframe document is not accessible");e({iframe:o}),setTimeout((()=>{document.body.removeChild(t)}),0)}((async({iframe:n})=>{const t=n.createElement("canvas").getContext("2d"),r=w.map((e=>v(t,e)));let o={};p.forEach((e=>{const n=v(t,e);r.includes(n)||(o[e]=n)})),e(o)}))}catch(e){n({error:"unsupported"})}}))},hardware:function(){return new Promise(((e,n)=>{const t=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:y(),architecture:S(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:b(Math.asin,-1,1,97),cos:b(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:b(Math.sin,-Math.PI,Math.PI,97),tan:b(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(){M=(null==n?void 0:n.permissions_to_check)||["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"],"safari"===t().name.toLowerCase()&&(M=M.filter((e=>!["camera","geolocation","microphone"].includes(e))));const e=Array.from({length:(null==n?void 0:n.retries)||3},(()=>async function(){const e={};for(const n of M)try{const t=await navigator.permissions.query({name:n});e[n]=t.state.toString()}catch(e){}return e}()));return Promise.all(e).then((e=>E(e,M)))},plugins:function(){const e=[];if(navigator.plugins)for(let n=0;n<navigator.plugins.length;n++){const t=navigator.plugins[n];e.push([t.name,t.filename,t.description].join("|"))}return new Promise((n=>{n({plugins:e})}))},screen:function(){return new Promise((e=>{e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:P()})}))},system:function(){return new Promise((e=>{const n=t(),r={platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:n.name,version:n.version}};"safari"!==n.name.toLowerCase()&&(r.applePayVersion=function(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}(),r.cookieEnabled=window.navigator.cookieEnabled),e(r)}))},webgl:async function(){"undefined"!=typeof document&&(C=document.createElement("canvas"),C.width=200,C.height=100,x=C.getContext("webgl"));try{if(!x)throw new Error("WebGL not supported");const e=Array.from({length:A},(()=>function(){try{if(!x)throw new Error("WebGL not supported");const e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",t=x.createShader(x.VERTEX_SHADER),r=x.createShader(x.FRAGMENT_SHADER);if(!t||!r)throw new Error("Failed to create shaders");if(x.shaderSource(t,e),x.shaderSource(r,n),x.compileShader(t),!x.getShaderParameter(t,x.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+x.getShaderInfoLog(t));if(x.compileShader(r),!x.getShaderParameter(r,x.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+x.getShaderInfoLog(r));const o=x.createProgram();if(!o)throw new Error("Failed to create shader program");if(x.attachShader(o,t),x.attachShader(o,r),x.linkProgram(o),!x.getProgramParameter(o,x.LINK_STATUS))throw new Error("Shader program linking failed: "+x.getProgramInfoLog(o));x.useProgram(o);const a=137,i=new Float32Array(4*a),s=2*Math.PI/a;for(let e=0;e<a;e++){const n=e*s;i[4*e]=0,i[4*e+1]=0,i[4*e+2]=Math.cos(n)*(C.width/2),i[4*e+3]=Math.sin(n)*(C.height/2)}const c=x.createBuffer();x.bindBuffer(x.ARRAY_BUFFER,c),x.bufferData(x.ARRAY_BUFFER,i,x.STATIC_DRAW);const l=x.getAttribLocation(o,"position");x.enableVertexAttribArray(l),x.vertexAttribPointer(l,2,x.FLOAT,!1,0,0),x.viewport(0,0,C.width,C.height),x.clearColor(0,0,0,1),x.clear(x.COLOR_BUFFER_BIT),x.drawArrays(x.LINES,0,2*a);const u=new Uint8ClampedArray(C.width*C.height*4);x.readPixels(0,0,C.width,C.height,x.RGBA,x.UNSIGNED_BYTE,u);return new ImageData(u,C.width,C.height)}catch(e){return new ImageData(1,1)}finally{x&&(x.bindBuffer(x.ARRAY_BUFFER,null),x.useProgram(null),x.viewport(0,0,x.drawingBufferWidth,x.drawingBufferHeight),x.clearColor(0,0,0,0))}}()));return{commonPixelsHash:l(o(e,C.width,C.height).data.toString()).toString()}}catch(e){return{webgl:"unsupported"}}}},T={},_={timeout:"true"},R=(e,n,t)=>{T[e]=n};function L(e,n,t=""){const r={},o=(null==n?void 0:n.exclude)||[],a=(null==n?void 0:n.include)||[];for(const[i,s]of Object.entries(e)){const e=t+i+".";if("object"!=typeof s||Array.isArray(s)){const n=o.some((n=>e.startsWith(n))),t=a.some((n=>e.startsWith(n)));n&&!t||(r[i]=s)}else{const t=L(s,n,e);Object.keys(t).length>0&&(r[i]=t)}}return r}function I(){return"1.0.0-rc.0"}let O=null,B=null;async function D(n){const t={...e,...n},r={...k,...T},{elapsed:o,resolvedComponents:a}=await F(r,t),i=t.api_key?((e,n)=>e.cache_api_call&&B?Promise.resolve(B):O||(O=fetch("https://api-dev.thumbmarkjs.com/thumbmark",{method:"POST",headers:{"x-api-key":e.api_key,Authorization:"custom-authorized"},body:JSON.stringify({components:n,clientHash:l(JSON.stringify(n))})}).then((e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()})).then((e=>(B=e,O=null,e))).catch((e=>(console.error("Error fetching pro data",e),O=null,null))),O))(t,a):null,s=i?await i:null,c=t.performance?{elapsed:o}:{};if(s){return{components:a,info:s.info||{},version:"1.0.0-rc.0",thumbmark:s.thumbmark||"undefined",...c}}return{thumbmark:l(JSON.stringify(a)),components:a,info:{uniqueness:"api only"},version:"1.0.0-rc.0",...c}}async function F(n,t){const r={...e,...t},o=Object.entries(n).filter((([e])=>{var n;return!(null===(n=null==r?void 0:r.exclude)||void 0===n?void 0:n.includes(e))})).filter((([e])=>{var n,t,o,a;return(null===(n=null==r?void 0:r.include)||void 0===n?void 0:n.some((e=>e.includes("."))))?null===(t=null==r?void 0:r.include)||void 0===t?void 0:t.some((n=>n.startsWith(e))):0===(null===(o=null==r?void 0:r.include)||void 0===o?void 0:o.length)||(null===(a=null==r?void 0:r.include)||void 0===a?void 0:a.includes(e))})),a=o.map((([e])=>e)),i=o.map((([e,n])=>n())),s=await function(e,n,t){return Promise.all(e.map((e=>{const r=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-r}))),(o=n,a=t,new Promise((e=>{setTimeout((()=>e(a)),o)}))).then((e=>({value:e,elapsed:performance.now()-r})))]);var o,a})))}(i,(null==r?void 0:r.timeout)||1e3,_),c={},l={};s.forEach(((e,n)=>{var t;null!=e.value&&(l[a[n]]=e.value,c[a[n]]=null!==(t=e.elapsed)&&void 0!==t?t:0)}));const u=L(l,r,"");return{elapsed:c,resolvedComponents:u}}exports.Thumbmark=class{constructor(n){this.options={...e,...n}}async get(e){return D({...this.options,...e})}getVersion(){return"1.0.0-rc.0"}includeComponent(e,n){R(e,n)}},exports.getFingerprint=async function(e){try{const t=await D(n);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}},exports.getFingerprintData=async function(){return(await D(n)).components},exports.getFingerprintPerformance=async function(){try{const{elapsed:e,resolvedComponents:t}=await F(k,n);return{...t,elapsed:e}}catch(e){throw e}},exports.getThumbmark=D,exports.getVersion=I,exports.includeComponent=R,exports.setOption=function(e,t){if(!["include","exclude","permissions_to_check","retries","timeout","logging","api_key","cache_api_call"].includes(e))throw new Error("Unknown option "+e);if(["include","exclude","permissions_to_check"].includes(e)&&(!Array.isArray(t)||!t.every((e=>"string"==typeof e))))throw new Error("The value of the include, exclude and permissions_to_check must be an array of strings");if(["retries","timeout"].includes(e)&&"number"!=typeof t)throw new Error("The value of retries must be a number");n[e]=t};
1
+ "use strict";const e={exclude:[],include:[],logging:!0,timeout:5e3,cache_api_call:!0,performance:!1};let n={...e};function t(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};const e=navigator.userAgent,n=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>samsung).*Version\/(?<version>\d+(?:\.\d+)?)/i,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/],t={edg:"Edge",opr:"Opera",samsung:"SamsungBrowser"};for(const r of n){const n=e.match(r);if(n&&n.groups){return{name:t[n.groups.name.toLowerCase()]||n.groups.name,version:n.groups.version}}}return{name:"unknown",version:"unknown"}}function r(e){let n=0;for(let t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}function o(e,n,t){let r=[];for(let n=0;n<e[0].data.length;n++){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].data[n]);r.push(a(t))}const o=new Uint8ClampedArray(r);return new ImageData(o,n,t)}function a(e){if(0===e.length)return 0;const n={};for(const t of e)n[t]=(n[t]||0)+1;let t=e[0];for(const e in n)n[e]>n[t]&&(t=parseInt(e,10));return t}function i(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const s=new Uint32Array([597399067,2869860233,951274213,2716044179]);function c(e,n){return e<<n|e>>>32-n}function l(e,n=0){var t;if(n=n?0|n:0,"string"==typeof e&&(t=e,e=(new TextEncoder).encode(t).buffer),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const r=new Uint32Array([n,n,n,n]);!function(e,n){const t=e.byteLength/16|0,r=new Uint32Array(e,0,4*t);for(let e=0;e<t;e++){const t=r.subarray(4*e,4*(e+1));t[0]=Math.imul(t[0],s[0]),t[0]=c(t[0],15),t[0]=Math.imul(t[0],s[1]),n[0]=n[0]^t[0],n[0]=c(n[0],19),n[0]=n[0]+n[1],n[0]=Math.imul(n[0],5)+1444728091,t[1]=Math.imul(t[1],s[1]),t[1]=c(t[1],16),t[1]=Math.imul(t[1],s[2]),n[1]=n[1]^t[1],n[1]=c(n[1],17),n[1]=n[1]+n[2],n[1]=Math.imul(n[1],5)+197830471,t[2]=Math.imul(t[2],s[2]),t[2]=c(t[2],17),t[2]=Math.imul(t[2],s[3]),n[2]=n[2]^t[2],n[2]=c(n[2],15),n[2]=n[2]+n[3],n[2]=Math.imul(n[2],5)+2530024501,t[3]=Math.imul(t[3],s[3]),t[3]=c(t[3],18),t[3]=Math.imul(t[3],s[0]),n[3]=n[3]^t[3],n[3]=c(n[3],13),n[3]=n[3]+n[0],n[3]=Math.imul(n[3],5)+850148119}}(e,r),function(e,n){const t=e.byteLength/16|0,r=e.byteLength%16,o=new Uint32Array(4),a=new Uint8Array(e,16*t,r);switch(r){case 15:o[3]=o[3]^a[14]<<16;case 14:o[3]=o[3]^a[13]<<8;case 13:o[3]=o[3]^a[12],o[3]=Math.imul(o[3],s[3]),o[3]=c(o[3],18),o[3]=Math.imul(o[3],s[0]),n[3]=n[3]^o[3];case 12:o[2]=o[2]^a[11]<<24;case 11:o[2]=o[2]^a[10]<<16;case 10:o[2]=o[2]^a[9]<<8;case 9:o[2]=o[2]^a[8],o[2]=Math.imul(o[2],s[2]),o[2]=c(o[2],17),o[2]=Math.imul(o[2],s[3]),n[2]=n[2]^o[2];case 8:o[1]=o[1]^a[7]<<24;case 7:o[1]=o[1]^a[6]<<16;case 6:o[1]=o[1]^a[5]<<8;case 5:o[1]=o[1]^a[4],o[1]=Math.imul(o[1],s[1]),o[1]=c(o[1],16),o[1]=Math.imul(o[1],s[2]),n[1]=n[1]^o[1];case 4:o[0]=o[0]^a[3]<<24;case 3:o[0]=o[0]^a[2]<<16;case 2:o[0]=o[0]^a[1]<<8;case 1:o[0]=o[0]^a[0],o[0]=Math.imul(o[0],s[0]),o[0]=c(o[0],15),o[0]=Math.imul(o[0],s[1]),n[0]=n[0]^o[0]}}(e,r),function(e,n){n[0]=n[0]^e.byteLength,n[1]=n[1]^e.byteLength,n[2]=n[2]^e.byteLength,n[3]=n[3]^e.byteLength,n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0,n[0]=i(n[0]),n[1]=i(n[1]),n[2]=i(n[2]),n[3]=i(n[3]),n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0}(e,r);const o=new Uint8Array(r.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,"0"))).join("")}const u=t(),d=u.name.toLowerCase(),m=u.version.split(".")[0]||"0",h=parseInt(m,10),f=280;function g(e,n){return new Promise((t=>setTimeout(t,e,n)))}const p=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],w=["monospace","sans-serif","serif"];function v(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font=`72px ${n}`,e.measureText("WwMmLli0Oo").width}function y(){var e;const n=document.createElement("canvas"),t=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");if(t&&"getParameter"in t)try{const e=(t.getParameter(t.VENDOR)||"").toString(),n=(t.getParameter(t.RENDERER)||"").toString();let r={vendor:e,renderer:n,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!n.length||!e.length){const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=(t.getParameter(e.UNMASKED_VENDOR_WEBGL)||"").toString(),o=(t.getParameter(e.UNMASKED_RENDERER_WEBGL)||"").toString();n&&(r.vendorUnmasked=n),o&&(r.rendererUnmasked=o)}}return r}catch(e){}return"undefined"}function S(){const e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}const b=(e,n,t,r)=>{const o=(t-n)/r;let a=0;for(let t=0;t<r;t++){a+=e(n+(t+.5)*o)}return a*o};function P(e,n){const t={};return n.forEach((n=>{const r=function(e){if(0===e.length)return null;const n={};e.forEach((e=>{const t=String(e);n[t]=(n[t]||0)+1}));let t=e[0],r=1;return Object.keys(n).forEach((e=>{n[e]>r&&(t=e,r=n[e])})),t}(e.map((e=>n in e?e[n]:void 0)).filter((e=>void 0!==e)));r&&(t[n]=r)})),t}const E=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function M(){let e=[];const n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(n).forEach((t=>{n[t].forEach((n=>{matchMedia(`(${t}: ${n})`).matches&&e.push(`${t}: ${n}`)}))})),e}const A="SamsungBrowser"!==t().name?1:3;let C,x=null;const k={audio:async function(e){const n=t();return["SamsungBrowser","Safari"].includes(n.name)?null:async function(){return new Promise(((e,n)=>{try{const n=44100,t=5e3,o=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,t,n),a=o.createBufferSource(),i=o.createOscillator();i.frequency.value=1e3;const s=o.createDynamicsCompressor();let c;s.threshold.value=-50,s.knee.value=40,s.ratio.value=12,s.attack.value=0,s.release.value=.2,i.connect(s),s.connect(o.destination),i.start(),o.oncomplete=n=>{c=n.renderedBuffer.getChannelData(0),e({sampleHash:r(c),maxChannels:o.destination.maxChannelCount,channelCountMode:a.channelCountMode})},o.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))}()},canvas:async function(e){return t(),"firefox"===d||"safari"===d&&h>=17?null:function(){const e=document.createElement("canvas");return e.getContext("2d"),new Promise((e=>{const n=Array.from({length:3},(()=>function(){const e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=f,e.height=20;const t=n.createLinearGradient(0,0,e.width,e.height);t.addColorStop(0,"red"),t.addColorStop(1/6,"orange"),t.addColorStop(2/6,"yellow"),t.addColorStop(.5,"green"),t.addColorStop(4/6,"blue"),t.addColorStop(5/6,"indigo"),t.addColorStop(1,"violet"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();const o=n.getImageData(0,0,e.width,e.height);return o}()));e({commonPixelsHash:l(o(n,f,20).data.toString()).toString()})}))}()},fonts:async function(e){const n=t();return["Firefox"].includes(n.name)?null:new Promise(((e,n)=>{try{!async function(e){for(var n;!document.body;)await g(50);const t=document.createElement("iframe");t.setAttribute("frameBorder","0");const r=t.style;r.setProperty("position","fixed"),r.setProperty("display","block","important"),r.setProperty("visibility","visible"),r.setProperty("border","0"),r.setProperty("opacity","0"),t.src="about:blank",document.body.appendChild(t);const o=t.contentDocument||(null===(n=t.contentWindow)||void 0===n?void 0:n.document);if(!o)throw new Error("Iframe document is not accessible");e({iframe:o}),setTimeout((()=>{document.body.removeChild(t)}),0)}((async({iframe:n})=>{const t=n.createElement("canvas").getContext("2d"),r=w.map((e=>v(t,e)));let o={};p.forEach((e=>{const n=v(t,e);r.includes(n)||(o[e]=n)})),e(o)}))}catch(e){n({error:"unsupported"})}}))},hardware:function(){return new Promise(((e,n)=>{const t=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:y(),architecture:S(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:b(Math.asin,-1,1,97),cos:b(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:b(Math.sin,-Math.PI,Math.PI,97),tan:b(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){let n=(null==e?void 0:e.permissions_to_check)||E;"safari"===t().name.toLowerCase()&&(n=n.filter((e=>!["camera","geolocation","microphone"].includes(e))));const r=Array.from({length:3},(()=>async function(e){const n={};for(const t of e)try{const e=await navigator.permissions.query({name:t});n[t]=e.state.toString()}catch(e){}return n}(n)));return Promise.all(r).then((e=>P(e,n)))},plugins:function(){const e=[];if(navigator.plugins)for(let n=0;n<navigator.plugins.length;n++){const t=navigator.plugins[n];e.push([t.name,t.filename,t.description].join("|"))}return new Promise((n=>{n({plugins:e})}))},screen:function(){return new Promise((e=>{e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:M()})}))},system:function(){return new Promise((e=>{const n=t(),r={platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:n.name,version:n.version}};"safari"!==n.name.toLowerCase()&&(r.applePayVersion=function(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}(),r.cookieEnabled=window.navigator.cookieEnabled),e(r)}))},webgl:async function(){"undefined"!=typeof document&&(C=document.createElement("canvas"),C.width=200,C.height=100,x=C.getContext("webgl"));try{if(!x)throw new Error("WebGL not supported");const e=Array.from({length:A},(()=>function(){try{if(!x)throw new Error("WebGL not supported");const e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",t=x.createShader(x.VERTEX_SHADER),r=x.createShader(x.FRAGMENT_SHADER);if(!t||!r)throw new Error("Failed to create shaders");if(x.shaderSource(t,e),x.shaderSource(r,n),x.compileShader(t),!x.getShaderParameter(t,x.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+x.getShaderInfoLog(t));if(x.compileShader(r),!x.getShaderParameter(r,x.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+x.getShaderInfoLog(r));const o=x.createProgram();if(!o)throw new Error("Failed to create shader program");if(x.attachShader(o,t),x.attachShader(o,r),x.linkProgram(o),!x.getProgramParameter(o,x.LINK_STATUS))throw new Error("Shader program linking failed: "+x.getProgramInfoLog(o));x.useProgram(o);const a=137,i=new Float32Array(4*a),s=2*Math.PI/a;for(let e=0;e<a;e++){const n=e*s;i[4*e]=0,i[4*e+1]=0,i[4*e+2]=Math.cos(n)*(C.width/2),i[4*e+3]=Math.sin(n)*(C.height/2)}const c=x.createBuffer();x.bindBuffer(x.ARRAY_BUFFER,c),x.bufferData(x.ARRAY_BUFFER,i,x.STATIC_DRAW);const l=x.getAttribLocation(o,"position");x.enableVertexAttribArray(l),x.vertexAttribPointer(l,2,x.FLOAT,!1,0,0),x.viewport(0,0,C.width,C.height),x.clearColor(0,0,0,1),x.clear(x.COLOR_BUFFER_BIT),x.drawArrays(x.LINES,0,2*a);const u=new Uint8ClampedArray(C.width*C.height*4);x.readPixels(0,0,C.width,C.height,x.RGBA,x.UNSIGNED_BYTE,u);return new ImageData(u,C.width,C.height)}catch(e){return new ImageData(1,1)}finally{x&&(x.bindBuffer(x.ARRAY_BUFFER,null),x.useProgram(null),x.viewport(0,0,x.drawingBufferWidth,x.drawingBufferHeight),x.clearColor(0,0,0,0))}}()));return{commonPixelsHash:l(o(e,C.width,C.height).data.toString()).toString()}}catch(e){return{webgl:"unsupported"}}}},T={},_={timeout:"true"},R=(e,n,t)=>{T[e]=n};var L="1.0.0-rc.1";function I(e,n,t=""){const r={},o=(null==n?void 0:n.exclude)||[],a=(null==n?void 0:n.include)||[];for(const[i,s]of Object.entries(e)){const e=t+i+".";if("object"!=typeof s||Array.isArray(s)){const n=o.some((n=>e.startsWith(n))),t=a.some((n=>e.startsWith(n)));n&&!t||(r[i]=s)}else{const t=I(s,n,e);Object.keys(t).length>0&&(r[i]=t)}}return r}function O(){return L}let B=null,D=null;async function F(n){const t={...e,...n},r={...k,...T},{elapsed:o,resolvedComponents:a}=await N(r,t),i=t.api_key?((e,n)=>{if(e.cache_api_call&&D)return Promise.resolve(D);if(B)return B;const t=fetch("https://api-dev.thumbmarkjs.com/thumbmark",{method:"POST",headers:{"x-api-key":e.api_key,Authorization:"custom-authorized"},body:JSON.stringify({components:n,clientHash:l(JSON.stringify(n))})}).then((e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()})).then((e=>(D=e,B=null,e))).catch((e=>(console.error("Error fetching pro data",e),B=null,null))),r=e.timeout||5e3,o=new Promise((e=>{setTimeout((()=>{e({thumbmark:l(JSON.stringify(n)),info:{timed_out:!0},version:L})}),r)}));return B=Promise.race([t,o]),B})(t,a):null,s=i?await i:null,c=t.performance?{elapsed:o}:{};if(s){return{components:a,info:s.info||{},version:O(),thumbmark:s.thumbmark||"undefined",...c}}return{thumbmark:l(JSON.stringify(a)),components:a,info:{uniqueness:"api only"},version:O(),...c}}async function N(n,t){const r={...e,...t},o=Object.entries(n).filter((([e])=>{var n;return!(null===(n=null==r?void 0:r.exclude)||void 0===n?void 0:n.includes(e))})).filter((([e])=>{var n,t,o,a;return(null===(n=null==r?void 0:r.include)||void 0===n?void 0:n.some((e=>e.includes("."))))?null===(t=null==r?void 0:r.include)||void 0===t?void 0:t.some((n=>n.startsWith(e))):0===(null===(o=null==r?void 0:r.include)||void 0===o?void 0:o.length)||(null===(a=null==r?void 0:r.include)||void 0===a?void 0:a.includes(e))})),a=o.map((([e])=>e)),i=o.map((([e,n])=>n(t))),s=await function(e,n,t){return Promise.all(e.map((e=>{const r=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-r}))),(o=n,a=t,new Promise((e=>{setTimeout((()=>e(a)),o)}))).then((e=>({value:e,elapsed:performance.now()-r})))]);var o,a})))}(i,(null==r?void 0:r.timeout)||5e3,_),c={},l={};s.forEach(((e,n)=>{var t;null!=e.value&&(l[a[n]]=e.value,c[a[n]]=null!==(t=e.elapsed)&&void 0!==t?t:0)}));const u=I(l,r,"");return{elapsed:c,resolvedComponents:u}}exports.Thumbmark=class{constructor(n){this.options={...e,...n}}async get(e){return F({...this.options,...e})}getVersion(){return O()}includeComponent(e,n){R(e,n)}},exports.getFingerprint=async function(e){try{const t=await F(n);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}},exports.getFingerprintData=async function(){return(await F(n)).components},exports.getFingerprintPerformance=async function(){try{const{elapsed:e,resolvedComponents:t}=await N(k,n);return{...t,elapsed:e}}catch(e){throw e}},exports.getThumbmark=F,exports.getVersion=O,exports.includeComponent=R,exports.setOption=function(e,t){if(!["include","exclude","permissions_to_check","retries","timeout","logging","api_key","cache_api_call"].includes(e))throw new Error("Unknown option "+e);if(["include","exclude","permissions_to_check"].includes(e)&&(!Array.isArray(t)||!t.every((e=>"string"==typeof e))))throw new Error("The value of the include, exclude and permissions_to_check must be an array of strings");if(["retries","timeout"].includes(e)&&"number"!=typeof t)throw new Error("The value of retries must be a number");n[e]=t};
2
2
  //# sourceMappingURL=thumbmark.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thumbmark.cjs.js","sources":["../src/fingerprint/options.ts","../src/components/system/browser.ts","../src/components/audio/index.ts","../src/utils/commonPixels.ts","../src/utils/hash.ts","../src/components/canvas/index.ts","../src/utils/ephemeralIFrame.ts","../src/components/fonts/index.ts","../src/components/hardware/index.ts","../src/components/math/index.ts","../src/utils/getMostFrequent.ts","../src/components/permissions/index.ts","../src/components/screen/index.ts","../src/components/webgl/index.ts","../src/factory.ts","../src/components/locales/index.ts","../src/components/plugins/index.ts","../src/components/system/index.ts","../src/utils/filterComponents.ts","../src/fingerprint/functions.ts","../src/utils/raceAll.ts","../src/thumbmark.ts","../src/fingerprint/legacy_functions.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["defaultOptions","exclude","include","logging","timeout","cache_api_call","performance","options","getBrowser","navigator","name","version","ua","userAgent","regexes","browserNameMap","edg","opr","samsung","regex","match","groups","toLowerCase","calculateHash","samples","hash","i","length","Math","abs","getCommonPixels","images","width","height","finalData","data","indice","u","push","getMostFrequent","pixelArray","Uint8ClampedArray","ImageData","arr","frequencyMap","num","mostFrequent","parseInt","fmix","input","imul","C","Uint32Array","rotl","m","n","key","seed","text","TextEncoder","encode","buffer","ArrayBuffer","TypeError","blocks","byteLength","view32","k","subarray","body","reminder","tail","Uint8Array","finalize","byteArray","Array","from","map","byte","toString","padStart","join","browser","ver","split","majorVer","_WIDTH","wait","durationMs","resolveWith","Promise","resolve","setTimeout","availableFonts","baseFonts","measureSingleFont","ctx","font","Error","measureText","getVideoCard","canvas","document","createElement","gl","_a","getContext","undefined","vendor","getParameter","VENDOR","renderer","RENDERER","result","VERSION","shadingLanguageVersion","SHADING_LANGUAGE_VERSION","debugInfo","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","error","getArchitecture","f","Float32Array","u8","Infinity","integrate","a","b","h","sum","mostFrequentValuesInArrayOfDictionaries","keys","forEach","mostFrequentValueForKey","element","String","highestFrequency","Object","mostFrequentValue","obj","filter","val","permission_keys","matchMedias","results","mediaQueries","pointer","hover","update","scripting","value","matchMedia","matches","_RUNS","tm_component_promises","audio","async","includes","reject","sampleRate","numSamples","audioContext","window","OfflineAudioContext","webkitOfflineAudioContext","audioBuffer","createBufferSource","oscillator","createOscillator","frequency","compressor","createDynamicsCompressor","threshold","knee","ratio","attack","release","connect","destination","start","oncomplete","event","renderedBuffer","getChannelData","sampleHash","maxChannels","maxChannelCount","channelCountMode","startRendering","console","createAudioFingerprint","imageDatas","gradient","createLinearGradient","addColorStop","fillStyle","fillRect","randomText","fillText","beginPath","moveTo","lineTo","strokeStyle","lineWidth","stroke","imageData","getImageData","generateCanvasImageData","commonPixelsHash","generateCanvasFingerprint","fonts","callback","iframe","setAttribute","style","setProperty","src","appendChild","iframeDocument","contentDocument","contentWindow","removeChild","ephemeralIFrame","defaultWidths","fontWidth","hardware","deviceMemory","memoryInfo","memory","videocard","architecture","jsHeapSizeLimit","locales","languages","language","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","math","acos","asin","cos","PI","largeCos","largeSin","sin","largeTan","tan","permissions","permissions_to_check","permissionPromises","retries","permissionStatus","feature","status","query","state","getBrowserPermissionsOnce","all","then","resolvedPermissions","plugins","plugin","filename","description","screen","is_touchscreen","maxTouchPoints","colorDepth","mediaMatches","system","platform","productSub","product","useragent","hardwareConcurrency","location","protocol","ApplePaySession","versionCheck","supportsVersion","getApplePayVersion","cookieEnabled","webgl","vertexShaderSource","fragmentShaderSource","vertexShader","createShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","numSpokes","vertices","angleIncrement","angle","vertexBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","positionAttribute","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","viewport","clearColor","clear","COLOR_BUFFER_BIT","drawArrays","LINES","pixelData","readPixels","RGBA","UNSIGNED_BYTE","drawingBufferWidth","drawingBufferHeight","createWebGLImageData","customComponents","timeoutInstance","includeComponent","creationFunction","filterThumbmarkData","path","excludeList","includeList","entries","currentPath","isArray","isExcluded","some","exclusion","startsWith","isIncluded","inclusion","filtered","getVersion","currentApiPromise","apiPromiseResult","getThumbmark","_options","allComponents","elapsed","resolvedComponents","clientComponentsResult","resolveClientComponents","apiPromise","api_key","components","fetch","method","headers","Authorization","JSON","stringify","clientHash","response","ok","json","catch","getApiPromise","apiResult","maybeElapsed","info","thumbmark","uniqueness","comps","opts","e","_b","_c","_d","promises","_","fn","resolvedValues","timeoutTime","timeoutVal","p","startTime","now","race","t","raceAllPerformance","resolvedComponentsRaw","index","constructor","this","get","overrideOptions","globalIncludeComponent","includeData","thumbmarkData","every","item"],"mappings":"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"}
1
+ {"version":3,"file":"thumbmark.cjs.js","sources":["../src/options.ts","../src/components/system/browser.ts","../src/components/audio/index.ts","../src/utils/commonPixels.ts","../src/utils/hash.ts","../src/components/canvas/index.ts","../src/utils/ephemeralIFrame.ts","../src/components/fonts/index.ts","../src/components/hardware/index.ts","../src/components/math/index.ts","../src/utils/getMostFrequent.ts","../src/components/permissions/index.ts","../src/components/screen/index.ts","../src/components/webgl/index.ts","../src/factory.ts","../src/components/locales/index.ts","../src/components/plugins/index.ts","../src/components/system/index.ts","../src/functions/filterComponents.ts","../src/functions/index.ts","../src/utils/raceAll.ts","../src/thumbmark.ts","../src/functions/legacy_functions.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["defaultOptions","exclude","include","logging","timeout","cache_api_call","performance","options","getBrowser","navigator","name","version","ua","userAgent","regexes","browserNameMap","edg","opr","samsung","regex","match","groups","toLowerCase","calculateHash","samples","hash","i","length","Math","abs","getCommonPixels","images","width","height","finalData","data","indice","u","push","getMostFrequent","pixelArray","Uint8ClampedArray","ImageData","arr","frequencyMap","num","mostFrequent","parseInt","fmix","input","imul","C","Uint32Array","rotl","m","n","key","seed","text","TextEncoder","encode","buffer","ArrayBuffer","TypeError","blocks","byteLength","view32","k","subarray","body","reminder","tail","Uint8Array","finalize","byteArray","Array","from","map","byte","toString","padStart","join","browser","ver","split","majorVer","_WIDTH","wait","durationMs","resolveWith","Promise","resolve","setTimeout","availableFonts","baseFonts","measureSingleFont","ctx","font","Error","measureText","getVideoCard","canvas","document","createElement","gl","_a","getContext","undefined","vendor","getParameter","VENDOR","renderer","RENDERER","result","VERSION","shadingLanguageVersion","SHADING_LANGUAGE_VERSION","debugInfo","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","error","getArchitecture","f","Float32Array","u8","Infinity","integrate","a","b","h","sum","mostFrequentValuesInArrayOfDictionaries","keys","forEach","mostFrequentValueForKey","element","String","highestFrequency","Object","mostFrequentValue","obj","filter","val","defaultPermissionKeys","matchMedias","results","mediaQueries","pointer","hover","update","scripting","value","matchMedia","matches","_RUNS","tm_component_promises","audio","async","includes","reject","sampleRate","numSamples","audioContext","window","OfflineAudioContext","webkitOfflineAudioContext","audioBuffer","createBufferSource","oscillator","createOscillator","frequency","compressor","createDynamicsCompressor","threshold","knee","ratio","attack","release","connect","destination","start","oncomplete","event","renderedBuffer","getChannelData","sampleHash","maxChannels","maxChannelCount","channelCountMode","startRendering","console","createAudioFingerprint","imageDatas","gradient","createLinearGradient","addColorStop","fillStyle","fillRect","randomText","fillText","beginPath","moveTo","lineTo","strokeStyle","lineWidth","stroke","imageData","getImageData","generateCanvasImageData","commonPixelsHash","generateCanvasFingerprint","fonts","callback","iframe","setAttribute","style","setProperty","src","appendChild","iframeDocument","contentDocument","contentWindow","removeChild","ephemeralIFrame","defaultWidths","fontWidth","hardware","deviceMemory","memoryInfo","memory","videocard","architecture","jsHeapSizeLimit","locales","languages","language","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","math","acos","asin","cos","PI","largeCos","largeSin","sin","largeTan","tan","permissions","permission_keys","permissions_to_check","permissionPromises","permissionStatus","feature","status","query","state","getBrowserPermissionsOnce","all","then","resolvedPermissions","plugins","plugin","filename","description","screen","is_touchscreen","maxTouchPoints","colorDepth","mediaMatches","system","platform","productSub","product","useragent","hardwareConcurrency","location","protocol","ApplePaySession","versionCheck","supportsVersion","getApplePayVersion","cookieEnabled","webgl","vertexShaderSource","fragmentShaderSource","vertexShader","createShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","numSpokes","vertices","angleIncrement","angle","vertexBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","positionAttribute","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","viewport","clearColor","clear","COLOR_BUFFER_BIT","drawArrays","LINES","pixelData","readPixels","RGBA","UNSIGNED_BYTE","drawingBufferWidth","drawingBufferHeight","createWebGLImageData","customComponents","timeoutInstance","includeComponent","creationFunction","filterThumbmarkData","path","excludeList","includeList","entries","currentPath","isArray","isExcluded","some","exclusion","startsWith","isIncluded","inclusion","filtered","getVersion","packageJson.version","currentApiPromise","apiPromiseResult","getThumbmark","_options","allComponents","elapsed","resolvedComponents","clientComponentsResult","resolveClientComponents","apiPromise","api_key","components","fetchPromise","fetch","method","headers","Authorization","JSON","stringify","clientHash","response","ok","json","catch","timeoutMs","timeoutPromise","thumbmark","info","timed_out","race","getApiPromise","apiResult","maybeElapsed","uniqueness","comps","opts","e","_b","_c","_d","promises","_","fn","resolvedValues","timeoutTime","timeoutVal","p","startTime","now","t","raceAllPerformance","resolvedComponentsRaw","index","constructor","this","get","overrideOptions","globalIncludeComponent","includeData","thumbmarkData","every","item"],"mappings":"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"}
@@ -1,10 +1,7 @@
1
1
  interface optionsInterface {
2
2
  exclude?: string[];
3
3
  include?: string[];
4
- webgl_runs?: number;
5
- canvas_runs?: number;
6
4
  permissions_to_check?: PermissionName[];
7
- retries?: number;
8
5
  timeout?: number;
9
6
  logging?: boolean;
10
7
  api_key?: string;
@@ -1,2 +1,2 @@
1
- const e={exclude:[],include:[],logging:!0,timeout:5e3,cache_api_call:!0,performance:!1};let n={...e};function t(e,t){if(!["include","exclude","permissions_to_check","retries","timeout","logging","api_key","cache_api_call"].includes(e))throw new Error("Unknown option "+e);if(["include","exclude","permissions_to_check"].includes(e)&&(!Array.isArray(t)||!t.every((e=>"string"==typeof e))))throw new Error("The value of the include, exclude and permissions_to_check must be an array of strings");if(["retries","timeout"].includes(e)&&"number"!=typeof t)throw new Error("The value of retries must be a number");n[e]=t}function r(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};const e=navigator.userAgent,n=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>samsung).*Version\/(?<version>\d+(?:\.\d+)?)/i,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/],t={edg:"Edge",opr:"Opera",samsung:"SamsungBrowser"};for(const r of n){const n=e.match(r);if(n&&n.groups){return{name:t[n.groups.name.toLowerCase()]||n.groups.name,version:n.groups.version}}}return{name:"unknown",version:"unknown"}}function o(e){let n=0;for(let t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}function a(e,n,t){let r=[];for(let n=0;n<e[0].data.length;n++){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].data[n]);r.push(i(t))}const o=new Uint8ClampedArray(r);return new ImageData(o,n,t)}function i(e){if(0===e.length)return 0;const n={};for(const t of e)n[t]=(n[t]||0)+1;let t=e[0];for(const e in n)n[e]>n[t]&&(t=parseInt(e,10));return t}function s(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const c=new Uint32Array([597399067,2869860233,951274213,2716044179]);function l(e,n){return e<<n|e>>>32-n}function u(e,n=0){var t;if(n=n?0|n:0,"string"==typeof e&&(t=e,e=(new TextEncoder).encode(t).buffer),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const r=new Uint32Array([n,n,n,n]);!function(e,n){const t=e.byteLength/16|0,r=new Uint32Array(e,0,4*t);for(let e=0;e<t;e++){const t=r.subarray(4*e,4*(e+1));t[0]=Math.imul(t[0],c[0]),t[0]=l(t[0],15),t[0]=Math.imul(t[0],c[1]),n[0]=n[0]^t[0],n[0]=l(n[0],19),n[0]=n[0]+n[1],n[0]=Math.imul(n[0],5)+1444728091,t[1]=Math.imul(t[1],c[1]),t[1]=l(t[1],16),t[1]=Math.imul(t[1],c[2]),n[1]=n[1]^t[1],n[1]=l(n[1],17),n[1]=n[1]+n[2],n[1]=Math.imul(n[1],5)+197830471,t[2]=Math.imul(t[2],c[2]),t[2]=l(t[2],17),t[2]=Math.imul(t[2],c[3]),n[2]=n[2]^t[2],n[2]=l(n[2],15),n[2]=n[2]+n[3],n[2]=Math.imul(n[2],5)+2530024501,t[3]=Math.imul(t[3],c[3]),t[3]=l(t[3],18),t[3]=Math.imul(t[3],c[0]),n[3]=n[3]^t[3],n[3]=l(n[3],13),n[3]=n[3]+n[0],n[3]=Math.imul(n[3],5)+850148119}}(e,r),function(e,n){const t=e.byteLength/16|0,r=e.byteLength%16,o=new Uint32Array(4),a=new Uint8Array(e,16*t,r);switch(r){case 15:o[3]=o[3]^a[14]<<16;case 14:o[3]=o[3]^a[13]<<8;case 13:o[3]=o[3]^a[12],o[3]=Math.imul(o[3],c[3]),o[3]=l(o[3],18),o[3]=Math.imul(o[3],c[0]),n[3]=n[3]^o[3];case 12:o[2]=o[2]^a[11]<<24;case 11:o[2]=o[2]^a[10]<<16;case 10:o[2]=o[2]^a[9]<<8;case 9:o[2]=o[2]^a[8],o[2]=Math.imul(o[2],c[2]),o[2]=l(o[2],17),o[2]=Math.imul(o[2],c[3]),n[2]=n[2]^o[2];case 8:o[1]=o[1]^a[7]<<24;case 7:o[1]=o[1]^a[6]<<16;case 6:o[1]=o[1]^a[5]<<8;case 5:o[1]=o[1]^a[4],o[1]=Math.imul(o[1],c[1]),o[1]=l(o[1],16),o[1]=Math.imul(o[1],c[2]),n[1]=n[1]^o[1];case 4:o[0]=o[0]^a[3]<<24;case 3:o[0]=o[0]^a[2]<<16;case 2:o[0]=o[0]^a[1]<<8;case 1:o[0]=o[0]^a[0],o[0]=Math.imul(o[0],c[0]),o[0]=l(o[0],15),o[0]=Math.imul(o[0],c[1]),n[0]=n[0]^o[0]}}(e,r),function(e,n){n[0]=n[0]^e.byteLength,n[1]=n[1]^e.byteLength,n[2]=n[2]^e.byteLength,n[3]=n[3]^e.byteLength,n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0,n[0]=s(n[0]),n[1]=s(n[1]),n[2]=s(n[2]),n[3]=s(n[3]),n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0}(e,r);const o=new Uint8Array(r.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,"0"))).join("")}const d=r(),m=d.name.toLowerCase(),h=d.version.split(".")[0]||"0",f=parseInt(h,10),g=280;function p(e,n){return new Promise((t=>setTimeout(t,e,n)))}const w=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],v=["monospace","sans-serif","serif"];function y(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font=`72px ${n}`,e.measureText("WwMmLli0Oo").width}function S(){var e;const n=document.createElement("canvas"),t=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");if(t&&"getParameter"in t)try{const e=(t.getParameter(t.VENDOR)||"").toString(),n=(t.getParameter(t.RENDERER)||"").toString();let r={vendor:e,renderer:n,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!n.length||!e.length){const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=(t.getParameter(e.UNMASKED_VENDOR_WEBGL)||"").toString(),o=(t.getParameter(e.UNMASKED_RENDERER_WEBGL)||"").toString();n&&(r.vendorUnmasked=n),o&&(r.rendererUnmasked=o)}}return r}catch(e){}return"undefined"}function b(){const e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}const E=(e,n,t,r)=>{const o=(t-n)/r;let a=0;for(let t=0;t<r;t++){a+=e(n+(t+.5)*o)}return a*o};function M(e,n){const t={};return n.forEach((n=>{const r=function(e){if(0===e.length)return null;const n={};e.forEach((e=>{const t=String(e);n[t]=(n[t]||0)+1}));let t=e[0],r=1;return Object.keys(n).forEach((e=>{n[e]>r&&(t=e,r=n[e])})),t}(e.map((e=>n in e?e[n]:void 0)).filter((e=>void 0!==e)));r&&(t[n]=r)})),t}let P;function A(){let e=[];const n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(n).forEach((t=>{n[t].forEach((n=>{matchMedia(`(${t}: ${n})`).matches&&e.push(`${t}: ${n}`)}))})),e}const C="SamsungBrowser"!==r().name?1:3;let k,x=null;const T={audio:async function(e){const n=r();return["SamsungBrowser","Safari"].includes(n.name)?null:async function(){return new Promise(((e,n)=>{try{const n=44100,t=5e3,r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,t,n),a=r.createBufferSource(),i=r.createOscillator();i.frequency.value=1e3;const s=r.createDynamicsCompressor();let c;s.threshold.value=-50,s.knee.value=40,s.ratio.value=12,s.attack.value=0,s.release.value=.2,i.connect(s),s.connect(r.destination),i.start(),r.oncomplete=n=>{c=n.renderedBuffer.getChannelData(0),e({sampleHash:o(c),maxChannels:r.destination.maxChannelCount,channelCountMode:a.channelCountMode})},r.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))}()},canvas:async function(e){return r(),"firefox"===m||"safari"===m&&f>=17?null:function(){const e=document.createElement("canvas");return e.getContext("2d"),new Promise((e=>{const n=Array.from({length:3},(()=>function(){const e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=g,e.height=20;const t=n.createLinearGradient(0,0,e.width,e.height);t.addColorStop(0,"red"),t.addColorStop(1/6,"orange"),t.addColorStop(2/6,"yellow"),t.addColorStop(.5,"green"),t.addColorStop(4/6,"blue"),t.addColorStop(5/6,"indigo"),t.addColorStop(1,"violet"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();const o=n.getImageData(0,0,e.width,e.height);return o}()));e({commonPixelsHash:u(a(n,g,20).data.toString()).toString()})}))}()},fonts:async function(e){const n=r();return["Firefox"].includes(n.name)?null:new Promise(((e,n)=>{try{!async function(e){for(var n;!document.body;)await p(50);const t=document.createElement("iframe");t.setAttribute("frameBorder","0");const r=t.style;r.setProperty("position","fixed"),r.setProperty("display","block","important"),r.setProperty("visibility","visible"),r.setProperty("border","0"),r.setProperty("opacity","0"),t.src="about:blank",document.body.appendChild(t);const o=t.contentDocument||(null===(n=t.contentWindow)||void 0===n?void 0:n.document);if(!o)throw new Error("Iframe document is not accessible");e({iframe:o}),setTimeout((()=>{document.body.removeChild(t)}),0)}((async({iframe:n})=>{const t=n.createElement("canvas").getContext("2d"),r=v.map((e=>y(t,e)));let o={};w.forEach((e=>{const n=y(t,e);r.includes(n)||(o[e]=n)})),e(o)}))}catch(e){n({error:"unsupported"})}}))},hardware:function(){return new Promise(((e,n)=>{const t=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:S(),architecture:b(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:E(Math.asin,-1,1,97),cos:E(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:E(Math.sin,-Math.PI,Math.PI,97),tan:E(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(){P=(null==n?void 0:n.permissions_to_check)||["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"],"safari"===r().name.toLowerCase()&&(P=P.filter((e=>!["camera","geolocation","microphone"].includes(e))));const e=Array.from({length:(null==n?void 0:n.retries)||3},(()=>async function(){const e={};for(const n of P)try{const t=await navigator.permissions.query({name:n});e[n]=t.state.toString()}catch(e){}return e}()));return Promise.all(e).then((e=>M(e,P)))},plugins:function(){const e=[];if(navigator.plugins)for(let n=0;n<navigator.plugins.length;n++){const t=navigator.plugins[n];e.push([t.name,t.filename,t.description].join("|"))}return new Promise((n=>{n({plugins:e})}))},screen:function(){return new Promise((e=>{e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:A()})}))},system:function(){return new Promise((e=>{const n=r(),t={platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:n.name,version:n.version}};"safari"!==n.name.toLowerCase()&&(t.applePayVersion=function(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}(),t.cookieEnabled=window.navigator.cookieEnabled),e(t)}))},webgl:async function(){"undefined"!=typeof document&&(k=document.createElement("canvas"),k.width=200,k.height=100,x=k.getContext("webgl"));try{if(!x)throw new Error("WebGL not supported");const e=Array.from({length:C},(()=>function(){try{if(!x)throw new Error("WebGL not supported");const e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",t=x.createShader(x.VERTEX_SHADER),r=x.createShader(x.FRAGMENT_SHADER);if(!t||!r)throw new Error("Failed to create shaders");if(x.shaderSource(t,e),x.shaderSource(r,n),x.compileShader(t),!x.getShaderParameter(t,x.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+x.getShaderInfoLog(t));if(x.compileShader(r),!x.getShaderParameter(r,x.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+x.getShaderInfoLog(r));const o=x.createProgram();if(!o)throw new Error("Failed to create shader program");if(x.attachShader(o,t),x.attachShader(o,r),x.linkProgram(o),!x.getProgramParameter(o,x.LINK_STATUS))throw new Error("Shader program linking failed: "+x.getProgramInfoLog(o));x.useProgram(o);const a=137,i=new Float32Array(4*a),s=2*Math.PI/a;for(let e=0;e<a;e++){const n=e*s;i[4*e]=0,i[4*e+1]=0,i[4*e+2]=Math.cos(n)*(k.width/2),i[4*e+3]=Math.sin(n)*(k.height/2)}const c=x.createBuffer();x.bindBuffer(x.ARRAY_BUFFER,c),x.bufferData(x.ARRAY_BUFFER,i,x.STATIC_DRAW);const l=x.getAttribLocation(o,"position");x.enableVertexAttribArray(l),x.vertexAttribPointer(l,2,x.FLOAT,!1,0,0),x.viewport(0,0,k.width,k.height),x.clearColor(0,0,0,1),x.clear(x.COLOR_BUFFER_BIT),x.drawArrays(x.LINES,0,2*a);const u=new Uint8ClampedArray(k.width*k.height*4);x.readPixels(0,0,k.width,k.height,x.RGBA,x.UNSIGNED_BYTE,u);return new ImageData(u,k.width,k.height)}catch(e){return new ImageData(1,1)}finally{x&&(x.bindBuffer(x.ARRAY_BUFFER,null),x.useProgram(null),x.viewport(0,0,x.drawingBufferWidth,x.drawingBufferHeight),x.clearColor(0,0,0,0))}}()));return{commonPixelsHash:u(a(e,k.width,k.height).data.toString()).toString()}}catch(e){return{webgl:"unsupported"}}}},_={},R={timeout:"true"},L=(e,n,t)=>{_[e]=n};function I(e,n,t=""){const r={},o=(null==n?void 0:n.exclude)||[],a=(null==n?void 0:n.include)||[];for(const[i,s]of Object.entries(e)){const e=t+i+".";if("object"!=typeof s||Array.isArray(s)){const n=o.some((n=>e.startsWith(n))),t=a.some((n=>e.startsWith(n)));n&&!t||(r[i]=s)}else{const t=I(s,n,e);Object.keys(t).length>0&&(r[i]=t)}}return r}function B(){return"1.0.0-rc.0"}let O=null,D=null;async function U(n){const t={...e,...n},r={...T,..._},{elapsed:o,resolvedComponents:a}=await N(r,t),i=t.api_key?((e,n)=>e.cache_api_call&&D?Promise.resolve(D):O||(O=fetch("https://api-dev.thumbmarkjs.com/thumbmark",{method:"POST",headers:{"x-api-key":e.api_key,Authorization:"custom-authorized"},body:JSON.stringify({components:n,clientHash:u(JSON.stringify(n))})}).then((e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()})).then((e=>(D=e,O=null,e))).catch((e=>(console.error("Error fetching pro data",e),O=null,null))),O))(t,a):null,s=i?await i:null,c=t.performance?{elapsed:o}:{};if(s){return{components:a,info:s.info||{},version:"1.0.0-rc.0",thumbmark:s.thumbmark||"undefined",...c}}return{thumbmark:u(JSON.stringify(a)),components:a,info:{uniqueness:"api only"},version:"1.0.0-rc.0",...c}}async function N(n,t){const r={...e,...t},o=Object.entries(n).filter((([e])=>{var n;return!(null===(n=null==r?void 0:r.exclude)||void 0===n?void 0:n.includes(e))})).filter((([e])=>{var n,t,o,a;return(null===(n=null==r?void 0:r.include)||void 0===n?void 0:n.some((e=>e.includes("."))))?null===(t=null==r?void 0:r.include)||void 0===t?void 0:t.some((n=>n.startsWith(e))):0===(null===(o=null==r?void 0:r.include)||void 0===o?void 0:o.length)||(null===(a=null==r?void 0:r.include)||void 0===a?void 0:a.includes(e))})),a=o.map((([e])=>e)),i=o.map((([e,n])=>n())),s=await function(e,n,t){return Promise.all(e.map((e=>{const r=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-r}))),(o=n,a=t,new Promise((e=>{setTimeout((()=>e(a)),o)}))).then((e=>({value:e,elapsed:performance.now()-r})))]);var o,a})))}(i,(null==r?void 0:r.timeout)||1e3,R),c={},l={};s.forEach(((e,n)=>{var t;null!=e.value&&(l[a[n]]=e.value,c[a[n]]=null!==(t=e.elapsed)&&void 0!==t?t:0)}));const u=I(l,r,"");return{elapsed:c,resolvedComponents:u}}async function F(){return(await U(n)).components}async function G(e){try{const t=await U(n);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}}async function W(){try{const{elapsed:e,resolvedComponents:t}=await N(T,n);return{...t,elapsed:e}}catch(e){throw e}}class V{constructor(n){this.options={...e,...n}}async get(e){return U({...this.options,...e})}getVersion(){return"1.0.0-rc.0"}includeComponent(e,n){L(e,n)}}export{V as Thumbmark,G as getFingerprint,F as getFingerprintData,W as getFingerprintPerformance,U as getThumbmark,B as getVersion,L as includeComponent,t as setOption};
1
+ const e={exclude:[],include:[],logging:!0,timeout:5e3,cache_api_call:!0,performance:!1};let n={...e};function t(e,t){if(!["include","exclude","permissions_to_check","retries","timeout","logging","api_key","cache_api_call"].includes(e))throw new Error("Unknown option "+e);if(["include","exclude","permissions_to_check"].includes(e)&&(!Array.isArray(t)||!t.every((e=>"string"==typeof e))))throw new Error("The value of the include, exclude and permissions_to_check must be an array of strings");if(["retries","timeout"].includes(e)&&"number"!=typeof t)throw new Error("The value of retries must be a number");n[e]=t}function r(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};const e=navigator.userAgent,n=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>samsung).*Version\/(?<version>\d+(?:\.\d+)?)/i,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/],t={edg:"Edge",opr:"Opera",samsung:"SamsungBrowser"};for(const r of n){const n=e.match(r);if(n&&n.groups){return{name:t[n.groups.name.toLowerCase()]||n.groups.name,version:n.groups.version}}}return{name:"unknown",version:"unknown"}}function o(e){let n=0;for(let t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}function a(e,n,t){let r=[];for(let n=0;n<e[0].data.length;n++){let t=[];for(let r=0;r<e.length;r++)t.push(e[r].data[n]);r.push(i(t))}const o=new Uint8ClampedArray(r);return new ImageData(o,n,t)}function i(e){if(0===e.length)return 0;const n={};for(const t of e)n[t]=(n[t]||0)+1;let t=e[0];for(const e in n)n[e]>n[t]&&(t=parseInt(e,10));return t}function s(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const c=new Uint32Array([597399067,2869860233,951274213,2716044179]);function l(e,n){return e<<n|e>>>32-n}function u(e,n=0){var t;if(n=n?0|n:0,"string"==typeof e&&(t=e,e=(new TextEncoder).encode(t).buffer),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const r=new Uint32Array([n,n,n,n]);!function(e,n){const t=e.byteLength/16|0,r=new Uint32Array(e,0,4*t);for(let e=0;e<t;e++){const t=r.subarray(4*e,4*(e+1));t[0]=Math.imul(t[0],c[0]),t[0]=l(t[0],15),t[0]=Math.imul(t[0],c[1]),n[0]=n[0]^t[0],n[0]=l(n[0],19),n[0]=n[0]+n[1],n[0]=Math.imul(n[0],5)+1444728091,t[1]=Math.imul(t[1],c[1]),t[1]=l(t[1],16),t[1]=Math.imul(t[1],c[2]),n[1]=n[1]^t[1],n[1]=l(n[1],17),n[1]=n[1]+n[2],n[1]=Math.imul(n[1],5)+197830471,t[2]=Math.imul(t[2],c[2]),t[2]=l(t[2],17),t[2]=Math.imul(t[2],c[3]),n[2]=n[2]^t[2],n[2]=l(n[2],15),n[2]=n[2]+n[3],n[2]=Math.imul(n[2],5)+2530024501,t[3]=Math.imul(t[3],c[3]),t[3]=l(t[3],18),t[3]=Math.imul(t[3],c[0]),n[3]=n[3]^t[3],n[3]=l(n[3],13),n[3]=n[3]+n[0],n[3]=Math.imul(n[3],5)+850148119}}(e,r),function(e,n){const t=e.byteLength/16|0,r=e.byteLength%16,o=new Uint32Array(4),a=new Uint8Array(e,16*t,r);switch(r){case 15:o[3]=o[3]^a[14]<<16;case 14:o[3]=o[3]^a[13]<<8;case 13:o[3]=o[3]^a[12],o[3]=Math.imul(o[3],c[3]),o[3]=l(o[3],18),o[3]=Math.imul(o[3],c[0]),n[3]=n[3]^o[3];case 12:o[2]=o[2]^a[11]<<24;case 11:o[2]=o[2]^a[10]<<16;case 10:o[2]=o[2]^a[9]<<8;case 9:o[2]=o[2]^a[8],o[2]=Math.imul(o[2],c[2]),o[2]=l(o[2],17),o[2]=Math.imul(o[2],c[3]),n[2]=n[2]^o[2];case 8:o[1]=o[1]^a[7]<<24;case 7:o[1]=o[1]^a[6]<<16;case 6:o[1]=o[1]^a[5]<<8;case 5:o[1]=o[1]^a[4],o[1]=Math.imul(o[1],c[1]),o[1]=l(o[1],16),o[1]=Math.imul(o[1],c[2]),n[1]=n[1]^o[1];case 4:o[0]=o[0]^a[3]<<24;case 3:o[0]=o[0]^a[2]<<16;case 2:o[0]=o[0]^a[1]<<8;case 1:o[0]=o[0]^a[0],o[0]=Math.imul(o[0],c[0]),o[0]=l(o[0],15),o[0]=Math.imul(o[0],c[1]),n[0]=n[0]^o[0]}}(e,r),function(e,n){n[0]=n[0]^e.byteLength,n[1]=n[1]^e.byteLength,n[2]=n[2]^e.byteLength,n[3]=n[3]^e.byteLength,n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0,n[0]=s(n[0]),n[1]=s(n[1]),n[2]=s(n[2]),n[3]=s(n[3]),n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0}(e,r);const o=new Uint8Array(r.buffer);return Array.from(o).map((e=>e.toString(16).padStart(2,"0"))).join("")}const d=r(),m=d.name.toLowerCase(),h=d.version.split(".")[0]||"0",f=parseInt(h,10),g=280;function p(e,n){return new Promise((t=>setTimeout(t,e,n)))}const w=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],v=["monospace","sans-serif","serif"];function y(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font=`72px ${n}`,e.measureText("WwMmLli0Oo").width}function S(){var e;const n=document.createElement("canvas"),t=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");if(t&&"getParameter"in t)try{const e=(t.getParameter(t.VENDOR)||"").toString(),n=(t.getParameter(t.RENDERER)||"").toString();let r={vendor:e,renderer:n,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!n.length||!e.length){const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=(t.getParameter(e.UNMASKED_VENDOR_WEBGL)||"").toString(),o=(t.getParameter(e.UNMASKED_RENDERER_WEBGL)||"").toString();n&&(r.vendorUnmasked=n),o&&(r.rendererUnmasked=o)}}return r}catch(e){}return"undefined"}function b(){const e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}const E=(e,n,t,r)=>{const o=(t-n)/r;let a=0;for(let t=0;t<r;t++){a+=e(n+(t+.5)*o)}return a*o};function P(e,n){const t={};return n.forEach((n=>{const r=function(e){if(0===e.length)return null;const n={};e.forEach((e=>{const t=String(e);n[t]=(n[t]||0)+1}));let t=e[0],r=1;return Object.keys(n).forEach((e=>{n[e]>r&&(t=e,r=n[e])})),t}(e.map((e=>n in e?e[n]:void 0)).filter((e=>void 0!==e)));r&&(t[n]=r)})),t}const M=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function A(){let e=[];const n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(n).forEach((t=>{n[t].forEach((n=>{matchMedia(`(${t}: ${n})`).matches&&e.push(`${t}: ${n}`)}))})),e}const C="SamsungBrowser"!==r().name?1:3;let k,x=null;const T={audio:async function(e){const n=r();return["SamsungBrowser","Safari"].includes(n.name)?null:async function(){return new Promise(((e,n)=>{try{const n=44100,t=5e3,r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,t,n),a=r.createBufferSource(),i=r.createOscillator();i.frequency.value=1e3;const s=r.createDynamicsCompressor();let c;s.threshold.value=-50,s.knee.value=40,s.ratio.value=12,s.attack.value=0,s.release.value=.2,i.connect(s),s.connect(r.destination),i.start(),r.oncomplete=n=>{c=n.renderedBuffer.getChannelData(0),e({sampleHash:o(c),maxChannels:r.destination.maxChannelCount,channelCountMode:a.channelCountMode})},r.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))}()},canvas:async function(e){return r(),"firefox"===m||"safari"===m&&f>=17?null:function(){const e=document.createElement("canvas");return e.getContext("2d"),new Promise((e=>{const n=Array.from({length:3},(()=>function(){const e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=g,e.height=20;const t=n.createLinearGradient(0,0,e.width,e.height);t.addColorStop(0,"red"),t.addColorStop(1/6,"orange"),t.addColorStop(2/6,"yellow"),t.addColorStop(.5,"green"),t.addColorStop(4/6,"blue"),t.addColorStop(5/6,"indigo"),t.addColorStop(1,"violet"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();const o=n.getImageData(0,0,e.width,e.height);return o}()));e({commonPixelsHash:u(a(n,g,20).data.toString()).toString()})}))}()},fonts:async function(e){const n=r();return["Firefox"].includes(n.name)?null:new Promise(((e,n)=>{try{!async function(e){for(var n;!document.body;)await p(50);const t=document.createElement("iframe");t.setAttribute("frameBorder","0");const r=t.style;r.setProperty("position","fixed"),r.setProperty("display","block","important"),r.setProperty("visibility","visible"),r.setProperty("border","0"),r.setProperty("opacity","0"),t.src="about:blank",document.body.appendChild(t);const o=t.contentDocument||(null===(n=t.contentWindow)||void 0===n?void 0:n.document);if(!o)throw new Error("Iframe document is not accessible");e({iframe:o}),setTimeout((()=>{document.body.removeChild(t)}),0)}((async({iframe:n})=>{const t=n.createElement("canvas").getContext("2d"),r=v.map((e=>y(t,e)));let o={};w.forEach((e=>{const n=y(t,e);r.includes(n)||(o[e]=n)})),e(o)}))}catch(e){n({error:"unsupported"})}}))},hardware:function(){return new Promise(((e,n)=>{const t=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:S(),architecture:b(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:E(Math.asin,-1,1,97),cos:E(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:E(Math.sin,-Math.PI,Math.PI,97),tan:E(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){let n=(null==e?void 0:e.permissions_to_check)||M;"safari"===r().name.toLowerCase()&&(n=n.filter((e=>!["camera","geolocation","microphone"].includes(e))));const t=Array.from({length:3},(()=>async function(e){const n={};for(const t of e)try{const e=await navigator.permissions.query({name:t});n[t]=e.state.toString()}catch(e){}return n}(n)));return Promise.all(t).then((e=>P(e,n)))},plugins:function(){const e=[];if(navigator.plugins)for(let n=0;n<navigator.plugins.length;n++){const t=navigator.plugins[n];e.push([t.name,t.filename,t.description].join("|"))}return new Promise((n=>{n({plugins:e})}))},screen:function(){return new Promise((e=>{e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:A()})}))},system:function(){return new Promise((e=>{const n=r(),t={platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:n.name,version:n.version}};"safari"!==n.name.toLowerCase()&&(t.applePayVersion=function(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}(),t.cookieEnabled=window.navigator.cookieEnabled),e(t)}))},webgl:async function(){"undefined"!=typeof document&&(k=document.createElement("canvas"),k.width=200,k.height=100,x=k.getContext("webgl"));try{if(!x)throw new Error("WebGL not supported");const e=Array.from({length:C},(()=>function(){try{if(!x)throw new Error("WebGL not supported");const e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",t=x.createShader(x.VERTEX_SHADER),r=x.createShader(x.FRAGMENT_SHADER);if(!t||!r)throw new Error("Failed to create shaders");if(x.shaderSource(t,e),x.shaderSource(r,n),x.compileShader(t),!x.getShaderParameter(t,x.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+x.getShaderInfoLog(t));if(x.compileShader(r),!x.getShaderParameter(r,x.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+x.getShaderInfoLog(r));const o=x.createProgram();if(!o)throw new Error("Failed to create shader program");if(x.attachShader(o,t),x.attachShader(o,r),x.linkProgram(o),!x.getProgramParameter(o,x.LINK_STATUS))throw new Error("Shader program linking failed: "+x.getProgramInfoLog(o));x.useProgram(o);const a=137,i=new Float32Array(4*a),s=2*Math.PI/a;for(let e=0;e<a;e++){const n=e*s;i[4*e]=0,i[4*e+1]=0,i[4*e+2]=Math.cos(n)*(k.width/2),i[4*e+3]=Math.sin(n)*(k.height/2)}const c=x.createBuffer();x.bindBuffer(x.ARRAY_BUFFER,c),x.bufferData(x.ARRAY_BUFFER,i,x.STATIC_DRAW);const l=x.getAttribLocation(o,"position");x.enableVertexAttribArray(l),x.vertexAttribPointer(l,2,x.FLOAT,!1,0,0),x.viewport(0,0,k.width,k.height),x.clearColor(0,0,0,1),x.clear(x.COLOR_BUFFER_BIT),x.drawArrays(x.LINES,0,2*a);const u=new Uint8ClampedArray(k.width*k.height*4);x.readPixels(0,0,k.width,k.height,x.RGBA,x.UNSIGNED_BYTE,u);return new ImageData(u,k.width,k.height)}catch(e){return new ImageData(1,1)}finally{x&&(x.bindBuffer(x.ARRAY_BUFFER,null),x.useProgram(null),x.viewport(0,0,x.drawingBufferWidth,x.drawingBufferHeight),x.clearColor(0,0,0,0))}}()));return{commonPixelsHash:u(a(e,k.width,k.height).data.toString()).toString()}}catch(e){return{webgl:"unsupported"}}}},_={},R={timeout:"true"},L=(e,n,t)=>{_[e]=n};var I="1.0.0-rc.1";function O(e,n,t=""){const r={},o=(null==n?void 0:n.exclude)||[],a=(null==n?void 0:n.include)||[];for(const[i,s]of Object.entries(e)){const e=t+i+".";if("object"!=typeof s||Array.isArray(s)){const n=o.some((n=>e.startsWith(n))),t=a.some((n=>e.startsWith(n)));n&&!t||(r[i]=s)}else{const t=O(s,n,e);Object.keys(t).length>0&&(r[i]=t)}}return r}function B(){return I}let D=null,N=null;async function U(n){const t={...e,...n},r={...T,..._},{elapsed:o,resolvedComponents:a}=await F(r,t),i=t.api_key?((e,n)=>{if(e.cache_api_call&&N)return Promise.resolve(N);if(D)return D;const t=fetch("https://api-dev.thumbmarkjs.com/thumbmark",{method:"POST",headers:{"x-api-key":e.api_key,Authorization:"custom-authorized"},body:JSON.stringify({components:n,clientHash:u(JSON.stringify(n))})}).then((e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()})).then((e=>(N=e,D=null,e))).catch((e=>(console.error("Error fetching pro data",e),D=null,null))),r=e.timeout||5e3,o=new Promise((e=>{setTimeout((()=>{e({thumbmark:u(JSON.stringify(n)),info:{timed_out:!0},version:I})}),r)}));return D=Promise.race([t,o]),D})(t,a):null,s=i?await i:null,c=t.performance?{elapsed:o}:{};if(s){return{components:a,info:s.info||{},version:B(),thumbmark:s.thumbmark||"undefined",...c}}return{thumbmark:u(JSON.stringify(a)),components:a,info:{uniqueness:"api only"},version:B(),...c}}async function F(n,t){const r={...e,...t},o=Object.entries(n).filter((([e])=>{var n;return!(null===(n=null==r?void 0:r.exclude)||void 0===n?void 0:n.includes(e))})).filter((([e])=>{var n,t,o,a;return(null===(n=null==r?void 0:r.include)||void 0===n?void 0:n.some((e=>e.includes("."))))?null===(t=null==r?void 0:r.include)||void 0===t?void 0:t.some((n=>n.startsWith(e))):0===(null===(o=null==r?void 0:r.include)||void 0===o?void 0:o.length)||(null===(a=null==r?void 0:r.include)||void 0===a?void 0:a.includes(e))})),a=o.map((([e])=>e)),i=o.map((([e,n])=>n(t))),s=await function(e,n,t){return Promise.all(e.map((e=>{const r=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-r}))),(o=n,a=t,new Promise((e=>{setTimeout((()=>e(a)),o)}))).then((e=>({value:e,elapsed:performance.now()-r})))]);var o,a})))}(i,(null==r?void 0:r.timeout)||5e3,R),c={},l={};s.forEach(((e,n)=>{var t;null!=e.value&&(l[a[n]]=e.value,c[a[n]]=null!==(t=e.elapsed)&&void 0!==t?t:0)}));const u=O(l,r,"");return{elapsed:c,resolvedComponents:u}}async function G(){return(await U(n)).components}async function W(e){try{const t=await U(n);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}}async function V(){try{const{elapsed:e,resolvedComponents:t}=await F(T,n);return{...t,elapsed:e}}catch(e){throw e}}class j{constructor(n){this.options={...e,...n}}async get(e){return U({...this.options,...e})}getVersion(){return B()}includeComponent(e,n){L(e,n)}}export{j as Thumbmark,W as getFingerprint,G as getFingerprintData,V as getFingerprintPerformance,U as getThumbmark,B as getVersion,L as includeComponent,t as setOption};
2
2
  //# sourceMappingURL=thumbmark.esm.js.map