{"mappings":"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","names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","options","exclude","include","logging","timeout","setOption","key","value","includes","Error","Array","isArray","every","item","components","timeoutInstance","includeComponent","name","creationFunction","window","getComponentPromises","Object","fromEntries","entries","filter","_a","_b","some","e","_c","startsWith","_d","length","_e","map","fmix","input","Math","imul","C","Uint32Array","rotl","m","n","hash","seed","text","TextEncoder","encode","buffer","ArrayBuffer","TypeError","blocks","byteLength","view32","i","k","subarray","reminder","tail","Uint8Array","byteArray","from","byte","toString","padStart","join","delay","t","val","Promise","resolve","setTimeout","raceAllPerformance","promises","timeoutTime","timeoutVal","all","p","startTime","performance","now","race","then","elapsed","raceAll","getVersion","getFingerprintData","promiseMap","keys_1","keys","values","resolvedValues","sent","validValues","resolvedComponents_1","forEach","index","filterFingerprintData","obj","excludeList","includeList","path","result","_loop_1","currentPath","isExcluded","exclusion","isIncluded","inclusion","filtered","_i","getFingerprint","includeData","fingerprintData","thisHash","JSON","stringify","random","url","payload","thumbmark","version","sessionStorage","getItem","setItem","fetch","method","headers","body","data","getFingerprintPerformance","keys_2","resolvedComponents_2","getBrowser","navigator","ua","userAgent","browserNameMap","edg","opr","samsung","regexes_1","regex","match","groups","toLowerCase","calculateHash","samples","abs","browser","getCommonPixels","images","width","height","finalData","indice","u","push","getMostFrequent","pixelArray","Uint8ClampedArray","ImageData","arr","frequencyMap","arr_1","num","mostFrequent","parseInt","reject","audioContext_1","OfflineAudioContext","webkitOfflineAudioContext","audioBuffer_1","createBufferSource","oscillator_1","createOscillator","frequency","samples_1","compressor","createDynamicsCompressor","threshold","knee","ratio","attack","release","connect","destination","start","oncomplete","event","renderedBuffer","getChannelData","sampleHash","oscillator","type","maxChannels","maxChannelCount","channelCountMode","startRendering","error","console","ver","split","majorVer","document","createElement","getContext","imageDatas","canvas","ctx","gradient","createLinearGradient","addColorStop","fillStyle","fillRect","randomText","font","fillText","beginPath","moveTo","lineTo","strokeStyle","lineWidth","stroke","getImageData","generateCanvasImageData","commonImageDataHash","permission_keys","availableFonts","baseFonts","measureSingleFont","concat","measureText","getVideoCard","gl","vendor","getParameter","VENDOR","renderer","RENDERER","VERSION","shadingLanguageVersion","SHADING_LANGUAGE_VERSION","debugInfo","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","getArchitecture","f","Float32Array","u8","Infinity","mostFrequentValuesInArrayOfDictionaries","mostFrequentValueForKey","element","String","highestFrequency","undefined","matchMedias","results","mediaQueries","pointer","hover","update","scripting","matchMedia","matches","_this","this","callback","durationMs","resolveWith","iframe","setAttribute","style","setProperty","src","appendChild","iframeDocument","contentDocument","contentWindow","removeChild","defaultWidths","fontWidth","deviceMemory","memoryInfo","memory","videocard","architecture","jsHeapSizeLimit","languages","language","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","o","permissions_to_check","permissionPromises","retries","r","a","permissionStatus","permission_keys_1","feature","permissions","query","status_1","state","getBrowserPermissionsOnce","resolvedPermissions","plugins","plugin","filename","description","is_touchscreen","maxTouchPoints","colorDepth","screen","mediaMatches","platform","productSub","product","useragent","hardwareConcurrency","location","protocol","ApplePaySession","versionCheck","supportsVersion","getApplePayVersion","cookieEnabled","_RUNS","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","PI","angle","cos","sin","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","commonImageHash","webgl","integrate","b","h","sum","__awaiter","acos","asin","atan","cosh","E","largeCos","largeSin","largeTan","tan","log","pi","sinh","sqrt","tanh"],"sources":["../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/node_modules/tslib/tslib.es6.js","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/fingerprint/options.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/factory.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/utils/hash.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/utils/raceAll.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/fingerprint/functions.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/system/browser.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/audio/audio.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/utils/commonPixels.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/canvas/canvas.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/fonts/fonts.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/permissions/permissions.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/hardware/hardware.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/utils/getMostFrequent.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/screen/screen.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/utils/ephemeralIFrame.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/locales/locales.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/plugins/plugins.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/system/system.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/webgl/webgl.ts","../esm/npm/@thumbmarkjs/thumbmarkjs@0.20.6/node_modules/@thumbmarkjs/thumbmarkjs/src/components/math/math.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array \u0026\u0026 function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" \u0026\u0026 b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i \u003c n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) \u0026\u0026 e.indexOf(p) \u003c 0)\r\n        t[p] = s[p];\r\n    if (s != null \u0026\u0026 typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i \u003c p.length; i++) {\r\n            if (e.indexOf(p[i]) \u003c 0 \u0026\u0026 Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c \u003c 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" \u0026\u0026 typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i \u003e= 0; i--) if (d = decorators[i]) r = (c \u003c 3 ? d(r) : c \u003e 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c \u003e 3 \u0026\u0026 r \u0026\u0026 Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n    function accept(f) { if (f !== void 0 \u0026\u0026 typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n    var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n    var target = !descriptorIn \u0026\u0026 ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n    var _, done = false;\r\n    for (var i = decorators.length - 1; i \u003e= 0; i--) {\r\n        var context = {};\r\n        for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n        context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n        var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n        if (kind === \"accessor\") {\r\n            if (result === void 0) continue;\r\n            if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n            if (_ = accept(result.get)) descriptor.get = _;\r\n            if (_ = accept(result.set)) descriptor.set = _;\r\n            if (_ = accept(result.init)) initializers.unshift(_);\r\n        }\r\n        else if (_ = accept(result)) {\r\n            if (kind === \"field\") initializers.unshift(_);\r\n            else descriptor[key] = _;\r\n        }\r\n    }\r\n    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n    done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n    var useValue = arguments.length \u003e 2;\r\n    for (var i = 0; i \u003c initializers.length; i++) {\r\n        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n    }\r\n    return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n    return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n    if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n    return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" \u0026\u0026 typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] \u0026 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" \u0026\u0026 (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g \u0026\u0026 (g = 0, op[0] \u0026\u0026 (_ = 0)), _) try {\r\n            if (f = 1, y \u0026\u0026 (t = op[0] \u0026 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) \u0026\u0026 t.call(y), 0) : y.next) \u0026\u0026 !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] \u0026 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length \u003e 0 \u0026\u0026 t[t.length - 1]) \u0026\u0026 (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 \u0026\u0026 (!t || (op[1] \u003e t[0] \u0026\u0026 op[1] \u003c t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 \u0026\u0026 _.label \u003c t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t \u0026\u0026 _.label \u003c t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] \u0026 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" \u0026\u0026 !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" \u0026\u0026 Symbol.iterator, m = s \u0026\u0026 o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o \u0026\u0026 typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o \u0026\u0026 i \u003e= o.length) o = void 0;\r\n            return { value: o \u0026\u0026 o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" \u0026\u0026 o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- \u003e 0) \u0026\u0026 !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r \u0026\u0026 !r.done \u0026\u0026 (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i \u003c arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i \u003c il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i \u003c il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j \u003c jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i \u003c l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) \u003e 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] \u0026\u0026 function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod \u0026\u0026 mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" \u0026\u0026 Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod \u0026\u0026 mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" \u0026\u0026 !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" \u0026\u0026 !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" \u0026\u0026 typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n    if (value !== null \u0026\u0026 value !== void 0) {\r\n        if (typeof value !== \"object\" \u0026\u0026 typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n        var dispose;\r\n        if (async) {\r\n            if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n            dispose = value[Symbol.asyncDispose];\r\n        }\r\n        if (dispose === void 0) {\r\n            if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n            dispose = value[Symbol.dispose];\r\n        }\r\n        if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n        env.stack.push({ value: value, dispose: dispose, async: async });\r\n    }\r\n    else if (async) {\r\n        env.stack.push({ async: true });\r\n    }\r\n    return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n    function fail(e) {\r\n        env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n        env.hasError = true;\r\n    }\r\n    function next() {\r\n        while (env.stack.length) {\r\n            var rec = env.stack.pop();\r\n            try {\r\n                var result = rec.dispose \u0026\u0026 rec.dispose.call(rec.value);\r\n                if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n            }\r\n            catch (e) {\r\n                fail(e);\r\n            }\r\n        }\r\n        if (env.hasError) throw env.error;\r\n    }\r\n    return next();\r\n}\r\n\r\nexport default {\r\n    __extends: __extends,\r\n    __assign: __assign,\r\n    __rest: __rest,\r\n    __decorate: __decorate,\r\n    __param: __param,\r\n    __metadata: __metadata,\r\n    __awaiter: __awaiter,\r\n    __generator: __generator,\r\n    __createBinding: __createBinding,\r\n    __exportStar: __exportStar,\r\n    __values: __values,\r\n    __read: __read,\r\n    __spread: __spread,\r\n    __spreadArrays: __spreadArrays,\r\n    __spreadArray: __spreadArray,\r\n    __await: __await,\r\n    __asyncGenerator: __asyncGenerator,\r\n    __asyncDelegator: __asyncDelegator,\r\n    __asyncValues: __asyncValues,\r\n    __makeTemplateObject: __makeTemplateObject,\r\n    __importStar: __importStar,\r\n    __importDefault: __importDefault,\r\n    __classPrivateFieldGet: __classPrivateFieldGet,\r\n    __classPrivateFieldSet: __classPrivateFieldSet,\r\n    __classPrivateFieldIn: __classPrivateFieldIn,\r\n    __addDisposableResource: __addDisposableResource,\r\n    __disposeResources: __disposeResources,\r\n};\r\n","export interface optionsInterface {\n    exclude: string[],\n    include: string[],\n    webgl_runs?: number,\n    canvas_runs?: number,\n    permissions_to_check?: PermissionName[], // new option\n    retries?: number, // new option\n    timeout: number, // new option\n    logging: boolean\n}\n\nexport let options: optionsInterface = {\n    exclude: [],\n    include: [],\n    logging: true,\n    timeout: 1000\n}\n\nexport function setOption\u003cK extends keyof optionsInterface\u003e(key: K, value: optionsInterface[K]) {\n    if (!['include', 'exclude', 'permissions_to_check', 'retries', 'timeout', 'logging'].includes(key))\n        throw new Error('Unknown option ' + key)\n    if (['include', 'exclude', 'permissions_to_check'].includes(key) \u0026\u0026 !(Array.isArray(value) \u0026\u0026 value.every(item =\u003e typeof item === 'string')) )\n        throw new Error('The value of the include, exclude and permissions_to_check must be an array of strings');\n    if ([ 'retries', 'timeout'].includes(key) \u0026\u0026 typeof value !== 'number')\n        throw new Error('The value of retries must be a number');\n    options[key] = value;\n}\n","/**\r\n * This file is used to create the includeComponent function as well as the interfaces each of the\r\n * fingerprint components must implement.\r\n * \r\n */\r\n\r\nimport { options, optionsInterface } from './fingerprint/options';\r\n\r\n// the component interface is the form of the JSON object the function's promise must return\r\nexport interface componentInterface {\r\n    [key: string]: string | string[] | number | boolean | componentInterface;\r\n}\r\n\r\n\r\n// The component function's interface is simply the promise of the above\r\nexport interface componentFunctionInterface {\r\n    (): Promise\u003ccomponentInterface\u003e;\r\n}\r\n\r\n// components include a dictionary of name: function.\r\n export const components: {[name: string]: componentFunctionInterface} = {};\r\n\r\n//In case a promise time-outs, this is what we use as the value in place\r\nexport const timeoutInstance: componentInterface = {\r\n    'timeout': \"true\"\r\n}\r\n\r\n/** \r\n * includeComponent is the function each component function needs to call in order for the component to be included\r\n * in the fingerprint.\r\n * @param {string} name - the name identifier of the component\r\n * @param {componentFunctionInterface} creationFunction - the function that implements the component\r\n * @returns \r\n */ \r\nexport const includeComponent = (name:string, creationFunction: componentFunctionInterface) =\u003e {\r\n    if (typeof window !== 'undefined')\r\n        components[name] = creationFunction;\r\n}\r\n\r\n/**\r\n * The function turns the map of component functions to a map of Promises when called\r\n * @returns {[name: string]: \u003cPromise\u003ecomponentInterface} \r\n */\r\nexport const getComponentPromises = () =\u003e {\r\n    return Object.fromEntries(\r\n        Object.entries(components)\r\n            .filter(([key]) =\u003e {\r\n                return !options?.exclude?.includes(key)}\r\n                )\r\n            .filter(([key]) =\u003e {\r\n                return options?.include?.some(e =\u003e e.includes('.'))\r\n                    ? options?.include?.some(e =\u003e e.startsWith(key))\r\n                    : options?.include?.length === 0 || options?.include?.includes(key)\r\n            }\r\n                    )\r\n            .map(([key, value]) =\u003e [key, value()])\r\n    );\r\n}\r\n","/**\n * This code is taken from https://github.com/LinusU/murmur-128/blob/master/index.js\n * But instead of dependencies to encode-utf8 and fmix, I've implemented them here.\n */\n\nfunction encodeUtf8(text: string): ArrayBuffer {\n  const encoder = new TextEncoder();\n  return encoder.encode(text).buffer;\n}\n\nfunction fmix (input : number) : number {\n  input ^= (input \u003e\u003e\u003e 16)\n  input = Math.imul(input, 0x85ebca6b)\n  input ^= (input \u003e\u003e\u003e 13)\n  input = Math.imul(input, 0xc2b2ae35)\n  input ^= (input \u003e\u003e\u003e 16)\n\n  return (input \u003e\u003e\u003e 0)\n}\n\nconst C = new Uint32Array([\n  0x239b961b,\n  0xab0e9789,\n  0x38b34ae5,\n  0xa1e38b93\n])\n\nfunction rotl (m : number, n : number) : number {\n  return (m \u003c\u003c n) | (m \u003e\u003e\u003e (32 - n))\n}\n\nfunction body (key : ArrayBuffer, hash : Uint32Array) {\n  const blocks = (key.byteLength / 16) | 0\n  const view32 = new Uint32Array(key, 0, blocks * 4)\n\n  for (let i = 0; i \u003c blocks; i++) {\n    const k = view32.subarray(i * 4, (i + 1) * 4)\n\n    k[0] = Math.imul(k[0], C[0])\n    k[0] = rotl(k[0], 15)\n    k[0] = Math.imul(k[0], C[1])\n\n    hash[0] = (hash[0] ^ k[0])\n    hash[0] = rotl(hash[0], 19)\n    hash[0] = (hash[0] + hash[1])\n    hash[0] = Math.imul(hash[0], 5) + 0x561ccd1b\n\n    k[1] = Math.imul(k[1], C[1])\n    k[1] = rotl(k[1], 16)\n    k[1] = Math.imul(k[1], C[2])\n\n    hash[1] = (hash[1] ^ k[1])\n    hash[1] = rotl(hash[1], 17)\n    hash[1] = (hash[1] + hash[2])\n    hash[1] = Math.imul(hash[1], 5) + 0x0bcaa747\n\n    k[2] = Math.imul(k[2], C[2])\n    k[2] = rotl(k[2], 17)\n    k[2] = Math.imul(k[2], C[3])\n\n    hash[2] = (hash[2] ^ k[2])\n    hash[2] = rotl(hash[2], 15)\n    hash[2] = (hash[2] + hash[3])\n    hash[2] = Math.imul(hash[2], 5) + 0x96cd1c35\n\n    k[3] = Math.imul(k[3], C[3])\n    k[3] = rotl(k[3], 18)\n    k[3] = Math.imul(k[3], C[0])\n\n    hash[3] = (hash[3] ^ k[3])\n    hash[3] = rotl(hash[3], 13)\n    hash[3] = (hash[3] + hash[0])\n    hash[3] = Math.imul(hash[3], 5) + 0x32ac3b17\n  }\n}\n\nfunction tail (key : ArrayBuffer, hash : Uint32Array) {\n  const blocks = (key.byteLength / 16) | 0\n  const reminder = (key.byteLength % 16)\n\n  const k = new Uint32Array(4)\n  const tail = new Uint8Array(key, blocks * 16, reminder)\n\n  switch (reminder) {\n    case 15:\n      k[3] = (k[3] ^ (tail[14] \u003c\u003c 16))\n      // fallthrough\n    case 14:\n      k[3] = (k[3] ^ (tail[13] \u003c\u003c 8))\n      // fallthrough\n    case 13:\n      k[3] = (k[3] ^ (tail[12] \u003c\u003c 0))\n\n      k[3] = Math.imul(k[3], C[3])\n      k[3] = rotl(k[3], 18)\n      k[3] = Math.imul(k[3], C[0])\n      hash[3] = (hash[3] ^ k[3])\n      // fallthrough\n    case 12:\n      k[2] = (k[2] ^ (tail[11] \u003c\u003c 24))\n      // fallthrough\n    case 11:\n      k[2] = (k[2] ^ (tail[10] \u003c\u003c 16))\n      // fallthrough\n    case 10:\n      k[2] = (k[2] ^ (tail[9] \u003c\u003c 8))\n      // fallthrough\n    case 9:\n      k[2] = (k[2] ^ (tail[8] \u003c\u003c 0))\n\n      k[2] = Math.imul(k[2], C[2])\n      k[2] = rotl(k[2], 17)\n      k[2] = Math.imul(k[2], C[3])\n      hash[2] = (hash[2] ^ k[2])\n      // fallthrough\n    case 8:\n      k[1] = (k[1] ^ (tail[7] \u003c\u003c 24))\n      // fallthrough\n    case 7:\n      k[1] = (k[1] ^ (tail[6] \u003c\u003c 16))\n      // fallthrough\n    case 6:\n      k[1] = (k[1] ^ (tail[5] \u003c\u003c 8))\n      // fallthrough\n    case 5:\n      k[1] = (k[1] ^ (tail[4] \u003c\u003c 0))\n\n      k[1] = Math.imul(k[1], C[1])\n      k[1] = rotl(k[1], 16)\n      k[1] = Math.imul(k[1], C[2])\n      hash[1] = (hash[1] ^ k[1])\n      // fallthrough\n    case 4:\n      k[0] = (k[0] ^ (tail[3] \u003c\u003c 24))\n      // fallthrough\n    case 3:\n      k[0] = (k[0] ^ (tail[2] \u003c\u003c 16))\n      // fallthrough\n    case 2:\n      k[0] = (k[0] ^ (tail[1] \u003c\u003c 8))\n      // fallthrough\n    case 1:\n      k[0] = (k[0] ^ (tail[0] \u003c\u003c 0))\n\n      k[0] = Math.imul(k[0], C[0])\n      k[0] = rotl(k[0], 15)\n      k[0] = Math.imul(k[0], C[1])\n      hash[0] = (hash[0] ^ k[0])\n  }\n}\n\nfunction finalize (key : ArrayBuffer, hash : Uint32Array) {\n  hash[0] = (hash[0] ^ key.byteLength)\n  hash[1] = (hash[1] ^ key.byteLength)\n  hash[2] = (hash[2] ^ key.byteLength)\n  hash[3] = (hash[3] ^ key.byteLength)\n\n  hash[0] = (hash[0] + hash[1]) | 0\n  hash[0] = (hash[0] + hash[2]) | 0\n  hash[0] = (hash[0] + hash[3]) | 0\n\n  hash[1] = (hash[1] + hash[0]) | 0\n  hash[2] = (hash[2] + hash[0]) | 0\n  hash[3] = (hash[3] + hash[0]) | 0\n\n  hash[0] = fmix(hash[0])\n  hash[1] = fmix(hash[1])\n  hash[2] = fmix(hash[2])\n  hash[3] = fmix(hash[3])\n\n  hash[0] = (hash[0] + hash[1]) | 0\n  hash[0] = (hash[0] + hash[2]) | 0\n  hash[0] = (hash[0] + hash[3]) | 0\n\n  hash[1] = (hash[1] + hash[0]) | 0\n  hash[2] = (hash[2] + hash[0]) | 0\n  hash[3] = (hash[3] + hash[0]) | 0\n}\n\nexport function hash (key : ArrayBuffer | string, seed = 0) : string {\n  seed = (seed ? (seed | 0) : 0)\n\n  if (typeof key === 'string') {\n    key = encodeUtf8(key)\n  }\n\n  if (!(key instanceof ArrayBuffer)) {\n    throw new TypeError('Expected key to be ArrayBuffer or string')\n  }\n\n  const hash = new Uint32Array([seed, seed, seed, seed])\n\n  body(key, hash)\n  tail(key, hash)\n  finalize(key, hash)\n  const byteArray = new Uint8Array(hash.buffer);\n  return Array.from(byteArray).map(byte =\u003e byte.toString(16).padStart(2, '0')).join('');\n}","import { componentInterface } from '../factory'\n\ntype DelayedPromise\u003cT\u003e = Promise\u003cT\u003e;\n\nexport function delay\u003cT\u003e(t: number, val: T): DelayedPromise\u003cT\u003e {\n  return new Promise\u003cT\u003e((resolve) =\u003e {\n    setTimeout(() =\u003e resolve(val), t);\n  });\n}\n\n\nexport interface RaceResult\u003cT\u003e {\n  value: T;\n  elapsed?: number;\n}\n\nexport function raceAllPerformance\u003cT\u003e(\n  promises: Promise\u003cT\u003e[],\n  timeoutTime: number,\n  timeoutVal: T\n): Promise\u003cRaceResult\u003cT\u003e[]\u003e {\n  return Promise.all(\n    promises.map((p) =\u003e {\n      const startTime = performance.now();\n      return Promise.race([\n        p.then((value) =\u003e ({\n          value,\n          elapsed: performance.now() - startTime,\n        })),\n        delay(timeoutTime, timeoutVal).then((value) =\u003e ({\n          value,\n          elapsed: performance.now() - startTime,\n        })),\n      ]);\n    })\n  );\n}\n\n\n\nexport function raceAll\u003cT\u003e(promises: Promise\u003cT\u003e[], timeoutTime: number, timeoutVal: T): Promise\u003c(T | undefined)[]\u003e {\n  return Promise.all(promises.map((p) =\u003e {\n    return Promise.race([p, delay(timeoutTime, timeoutVal)]);\n  }));\n}","import {componentInterface, getComponentPromises, timeoutInstance} from '../factory'\r\nimport {hash} from '../utils/hash'\r\nimport {raceAll, raceAllPerformance} from '../utils/raceAll'\r\nimport {options} from './options'\r\nimport * as packageJson from '../../package.json'\r\n\r\nexport function getVersion(): string {\r\n    return packageJson.version\r\n}\r\n\r\nexport async function getFingerprintData(): Promise\u003ccomponentInterface\u003e  {\r\n    try {\r\n        const promiseMap: Record\u003cstring, Promise\u003ccomponentInterface\u003e\u003e = getComponentPromises()\r\n        const keys: string[] = Object.keys(promiseMap)\r\n        const promises: Promise\u003ccomponentInterface\u003e[] = Object.values(promiseMap)\r\n        const resolvedValues: (componentInterface | undefined)[] = await raceAll(promises, options?.timeout || 1000, timeoutInstance);\r\n        const validValues: componentInterface[] = resolvedValues.filter((value): value is componentInterface =\u003e value !== undefined);\r\n        const resolvedComponents: Record\u003cstring, componentInterface\u003e = {};\r\n        validValues.forEach((value, index) =\u003e {\r\n            resolvedComponents[keys[index]] = value\r\n        })\r\n        return filterFingerprintData(resolvedComponents, options.exclude || [], options.include || [], \"\")\r\n    }\r\n    catch (error) {\r\n        throw error\r\n    }\r\n}\r\n\r\n/** \r\n * This function filters the fingerprint data based on the exclude and include list\r\n * @param {componentInterface} obj - components objects from main componentInterface\r\n * @param {string[]} excludeList - elements to exclude from components objects (e.g : 'canvas', 'system.browser')\r\n * @param {string[]} includeList - elements to only include from components objects (e.g : 'canvas', 'system.browser')\r\n * @param {string} path - auto-increment path iterating on key objects from components objects\r\n * @returns {componentInterface} result - returns the final object before hashing in order to get fingerprint\r\n */\r\nexport function filterFingerprintData(obj: componentInterface, excludeList: string[], includeList: string[], path: string = \"\"): componentInterface {\r\n    const result: componentInterface = {};\r\n\r\n    for (const [key, value] of Object.entries(obj)) {\r\n        const currentPath = path + key + \".\";\r\n\r\n        if (typeof value === \"object\" \u0026\u0026 !Array.isArray(value)) {\r\n            const filtered = filterFingerprintData(value, excludeList, includeList, currentPath);\r\n            if (Object.keys(filtered).length \u003e 0) {\r\n                result[key] = filtered;\r\n            }\r\n        } else {\r\n            const isExcluded = excludeList.some(exclusion =\u003e currentPath.startsWith(exclusion));\r\n            const isIncluded = includeList.some(inclusion =\u003e currentPath.startsWith(inclusion));\r\n\r\n            if (!isExcluded || isIncluded) {\r\n                result[key] = value;\r\n            }\r\n        }\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nexport async function getFingerprint(includeData?: false): Promise\u003cstring\u003e\r\nexport async function getFingerprint(includeData: true): Promise\u003c{ hash: string, data: componentInterface }\u003e\r\nexport async function getFingerprint(includeData?: boolean): Promise\u003cstring | { hash: string, data: componentInterface }\u003e {\r\n    try {\r\n        const fingerprintData = await getFingerprintData()\r\n        const thisHash = hash(JSON.stringify(fingerprintData))\r\n        if (Math.random() \u003c 0.00001 \u0026\u0026 options.logging) logFingerprintData(thisHash, fingerprintData)\r\n        if (includeData) {\r\n            return { hash: thisHash.toString(), data: fingerprintData}\r\n        } else {\r\n            return thisHash.toString()\r\n        }\r\n    } catch (error) {\r\n        throw error\r\n    }\r\n}\r\n\r\nexport async function getFingerprintPerformance() {\r\n    try {\r\n        const promiseMap = getComponentPromises()\r\n        const keys = Object.keys(promiseMap)\r\n        const promises = Object.values(promiseMap)\r\n        const resolvedValues = await raceAllPerformance(promises, options?.timeout || 1000, timeoutInstance )\r\n        const resolvedComponents: { [key: string]: any } = {\r\n            elapsed: {}\r\n        }\r\n        resolvedValues.forEach((value, index) =\u003e {\r\n            resolvedComponents[keys[index]] = value.value\r\n            resolvedComponents[\"elapsed\"][keys[index]] = value.elapsed\r\n        });\r\n        return resolvedComponents\r\n    }\r\n    catch (error) {\r\n        throw error\r\n    }\r\n}\r\n\r\n// Function to log the fingerprint data\r\nasync function logFingerprintData(thisHash: string, fingerprintData: componentInterface) {\r\n    const url = 'https://logging.thumbmarkjs.com/v1/log'\r\n    const payload = {\r\n        thumbmark: thisHash,\r\n        components: fingerprintData,\r\n        version: getVersion()\r\n    };\r\n    if (!sessionStorage.getItem(\"_tmjs_l\")) {\r\n        sessionStorage.setItem(\"_tmjs_l\", \"1\")\r\n        try {\r\n            await fetch(url, {\r\n                method: 'POST',\r\n                headers: {\r\n                    'Content-Type': 'application/json'\r\n                },\r\n                body: JSON.stringify(payload)\r\n            });\r\n        } catch { } // do nothing\r\n    }\r\n}","// Define an interface for the browser result\r\ninterface BrowserResult {\r\n    name: string;\r\n    version: string;\r\n  }\r\n\r\n  // Define a function to parse the user agent string and return the browser name and version\r\nexport function getBrowser(): BrowserResult {\r\n  if (typeof navigator === 'undefined') {\r\n    return {\r\n      name: \"unknown\",\r\n      version: \"unknown\"\r\n    }\r\n  }\r\n    const ua = navigator.userAgent\r\n    // Define some regular expressions to match different browsers and their versions\r\n    const regexes = [\r\n      // Samsung internet browser\r\n      /(?\u003cname\u003eSamsungBrowser)\\/(?\u003cversion\u003e\\d+(?:\\.\\d+)?)/,\r\n      // Edge\r\n      /(?\u003cname\u003eEdge|Edg)\\/(?\u003cversion\u003e\\d+(?:\\.\\d+)?)/,\r\n      // Chrome, Chromium, Opera, Vivaldi, Brave, etc.\r\n      /(?\u003cname\u003e(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\\/(?\u003cversion\u003e\\d+(?:\\.\\d+)?)/,\r\n      // Firefox, Waterfox, etc.\r\n      /(?\u003cname\u003e(?:Firefox|Waterfox|Iceweasel|IceCat))\\/(?\u003cversion\u003e\\d+(?:\\.\\d+)?)/,\r\n      // Safari, Mobile Safari, etc.\r\n      /(?\u003cname\u003eSafari)\\/(?\u003cversion\u003e\\d+(?:\\.\\d+)?)/,\r\n      // Internet Explorer, IE Mobile, etc.\r\n      /(?\u003cname\u003eMSIE|Trident|IEMobile).+?(?\u003cversion\u003e\\d+(?:\\.\\d+)?)/,\r\n      // Samsung browser (Tizen format)\r\n      /(?\u003cname\u003esamsung).*Version\\/(?\u003cversion\u003e\\d+(?:\\.\\d+)?)/i,\r\n      // Other browsers that use the format \"BrowserName/version\"\r\n      /(?\u003cname\u003e[A-Za-z]+)\\/(?\u003cversion\u003e\\d+(?:\\.\\d+)?)/,\r\n    ];\r\n  \r\n    // Define a map for browser name translations\r\n    const browserNameMap: { [key: string]: string } = {\r\n      'edg': 'Edge',\r\n      'opr': 'Opera',\r\n      'samsung': 'SamsungBrowser'\r\n    };\r\n\r\n    // Loop through the regexes and try to find a match\r\n    for (const regex of regexes) {\r\n      const match = ua.match(regex);\r\n      if (match \u0026\u0026 match.groups) {\r\n        // Translate the browser name if necessary\r\n        const name = browserNameMap[match.groups.name.toLowerCase()] || match.groups.name;\r\n        // Return the browser name and version\r\n        return {\r\n          name: name,\r\n          version: match.groups.version\r\n        };\r\n      }\r\n    }\r\n  \r\n    // If no match is found, return unknown\r\n    return {\r\n      name: \"unknown\",\r\n      version: \"unknown\"\r\n    };\r\n  }\r\n  \r\n","import { componentInterface, includeComponent } from '../../factory'\r\nimport { getBrowser } from '../system/browser'\r\n\r\nasync function createAudioFingerprint(): Promise\u003ccomponentInterface\u003e {\r\n  const resultPromise = new Promise\u003ccomponentInterface\u003e((resolve, reject) =\u003e {\r\n    try {\r\n      // Set up audio parameters\r\n      const sampleRate = 44100;\r\n      const numSamples = 5000;\r\n      const audioContext = new (window.OfflineAudioContext || window.webkitOfflineAudioContext)(1, numSamples, sampleRate );\r\n      const audioBuffer = audioContext.createBufferSource();\r\n      \r\n      const oscillator = audioContext.createOscillator();\r\n      oscillator.frequency.value = 1000;\r\n      const compressor = audioContext.createDynamicsCompressor();\r\n      compressor.threshold.value = -50;\r\n      compressor.knee.value = 40;\r\n      compressor.ratio.value = 12;\r\n      compressor.attack.value = 0;\r\n      compressor.release.value = 0.2;\r\n      oscillator.connect(compressor);\r\n      compressor.connect(audioContext.destination);\r\n      oscillator.start();\r\n      let samples: Float32Array;\r\n  \r\n      audioContext.oncomplete = event =\u003e {\r\n        samples = event.renderedBuffer.getChannelData(0);\r\n        resolve(\r\n            {\r\n                'sampleHash': calculateHash(samples),\r\n                'oscillator': oscillator.type,\r\n                'maxChannels': audioContext.destination.maxChannelCount,\r\n                'channelCountMode': audioBuffer.channelCountMode,\r\n\r\n            }    \r\n          );\r\n      };\r\n  \r\n      audioContext.startRendering();\r\n      \r\n  \r\n    } catch (error) {\r\n      console.error('Error creating audio fingerprint:', error);\r\n      reject(error);\r\n    }\r\n  \r\n  });\r\n  \r\n  return resultPromise;\r\n\r\n}\r\n\r\n\r\nfunction calculateHash(samples: Float32Array) {\r\n  let hash = 0;\r\n  for (let i = 0; i \u003c samples.length; ++i) {\r\n    hash += Math.abs(samples[i]);\r\n  }\r\n  return hash;\r\n}\r\n\r\nconst browser = getBrowser()\r\nif (!['SamsungBrowser', 'Safari'].includes(browser.name))\r\n  includeComponent('audio', createAudioFingerprint);","export function getCommonPixels(images: ImageData[], width: number, height: number ): ImageData {\r\n    let finalData: number[] = [];\r\n    for (let i = 0; i \u003c images[0].data.length; i++) {\r\n        let indice: number[] = [];\r\n        for (let u = 0; u \u003c images.length; u++) {\r\n            indice.push(images[u].data[i]);\r\n        }\r\n        finalData.push(getMostFrequent(indice));\r\n    }\r\n\r\n    const pixelData = finalData;\r\n    const pixelArray = new Uint8ClampedArray(pixelData);\r\n    return new ImageData(pixelArray, width, height);\r\n}\r\n\r\nfunction getMostFrequent(arr: number[]): number {\r\n    if (arr.length === 0) {\r\n      return 0; // Handle empty array case\r\n    }\r\n  \r\n    const frequencyMap: { [key: number]: number } = {};\r\n    \r\n    // Count occurrences of each number in the array\r\n    for (const num of arr) {\r\n      frequencyMap[num] = (frequencyMap[num] || 0) + 1;\r\n    }\r\n  \r\n    let mostFrequent: number = arr[0];\r\n    \r\n    // Find the number with the highest frequency\r\n    for (const num in frequencyMap) {\r\n      if (frequencyMap[num] \u003e frequencyMap[mostFrequent]) {\r\n        mostFrequent = parseInt(num, 10);\r\n      }\r\n    }\r\n  \r\n    return mostFrequent;\r\n  }","import { componentInterface, includeComponent } from '../../factory';\nimport { getCommonPixels } from '../../utils/commonPixels';\nimport { hash } from '../../utils/hash';\nimport { getBrowser } from '../system/browser';\n\nconst browser = getBrowser();\nconst name = browser.name.toLowerCase();\nconst ver = browser.version.split('.')[0] || '0';\nconst majorVer = parseInt(ver, 10);\n\nconst _RUNS = 3;\n\n/**\n * A simple canvas finger printing function\n *\n * @returns a CanvasInfo JSON object\n */\n\nconst _WIDTH = 280;\nconst _HEIGHT = 20;\n\nexport default function generateCanvasFingerprint(): Promise\u003ccomponentInterface\u003e {\n  const canvas = document.createElement('canvas');\n  const ctx = canvas.getContext('2d');\n\n  return new Promise((resolve) =\u003e {\n    /**\n     * Since some browsers fudge with the canvas pixels to prevent fingerprinting, the following\n     * creates the canvas three times and getCommonPixels picks the most common byte for each\n     * channel of each pixel.\n     */\n    const imageDatas: ImageData[] = Array.from({ length: _RUNS }, () =\u003e generateCanvasImageData());\n    const commonImageData = getCommonPixels(imageDatas, _WIDTH, _HEIGHT);\n\n    resolve({\n      commonImageDataHash: hash(commonImageData.data.toString()).toString(),\n    });\n  });\n}\n\nfunction generateCanvasImageData(): ImageData {\n  const canvas = document.createElement('canvas');\n  const ctx = canvas.getContext('2d');\n\n  if (!ctx) {\n    return new ImageData(1, 1);\n  }\n\n  // Set canvas dimensions\n  canvas.width = _WIDTH;\n  canvas.height = _HEIGHT;\n\n  // Create rainbow gradient for the background rectangle\n  const gradient = ctx.createLinearGradient(0, 0, canvas.width, canvas.height);\n  gradient.addColorStop(0, 'red');\n  gradient.addColorStop(1 / 6, 'orange');\n  gradient.addColorStop(2 / 6, 'yellow');\n  gradient.addColorStop(3 / 6, 'green');\n  gradient.addColorStop(4 / 6, 'blue');\n  gradient.addColorStop(5 / 6, 'indigo');\n  gradient.addColorStop(1, 'violet');\n\n  // Draw background rectangle with the rainbow gradient\n  ctx.fillStyle = gradient;\n  ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n  // Draw some random text\n  const randomText = 'Random Text WMwmil10Oo';\n  ctx.font = '23.123px Arial';\n  ctx.fillStyle = 'black';\n  ctx.fillText(randomText, -5, 15);\n\n  // Draw the same text with an offset, different color, and slight transparency\n  ctx.fillStyle = 'rgba(0, 0, 255, 0.5)';\n  ctx.fillText(randomText, -3.3, 17.7);\n\n  // Draw a line crossing the image at an arbitrary angle\n  ctx.beginPath();\n  ctx.moveTo(0, 0);\n  ctx.lineTo((canvas.width * 2) / 7, canvas.height);\n  ctx.strokeStyle = 'white';\n  ctx.lineWidth = 2;\n  ctx.stroke();\n\n  const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n  // Return data URL of the canvas\n  return imageData;\n}\n\n// In Safari from version 17 in private and normal modes canvas differs\nif (name !== 'firefox' \u0026\u0026 !(name === 'safari' \u0026\u0026 majorVer === 17)) {\n  includeComponent('canvas', generateCanvasFingerprint);\n}\n","import { componentInterface, includeComponent } from '../../factory'\r\nimport { ephemeralIFrame } from '../../utils/ephemeralIFrame'\r\nimport { getBrowser } from '../system/browser'\r\n\r\ninterface FontMetrics {[k: string]: number}\r\n\r\nconst availableFonts = [\r\n    'Arial',\r\n    'Arial Black',\r\n    'Arial Narrow',\r\n    'Arial Rounded MT',\r\n    'Arimo',\r\n    'Archivo',\r\n    'Barlow',\r\n    'Bebas Neue',\r\n    'Bitter',\r\n    'Bookman',\r\n    'Calibri',\r\n    'Cabin',\r\n    'Candara',\r\n    'Century',\r\n    'Century Gothic',\r\n    'Comic Sans MS',\r\n    'Constantia',\r\n    'Courier',\r\n    'Courier New',\r\n    'Crimson Text',\r\n    'DM Mono',\r\n    'DM Sans',\r\n    'DM Serif Display',\r\n    'DM Serif Text',\r\n    'Dosis',\r\n    'Droid Sans',\r\n    'Exo',\r\n    'Fira Code',\r\n    'Fira Sans',\r\n    'Franklin Gothic Medium',\r\n    'Garamond',\r\n    'Geneva',\r\n    'Georgia',\r\n    'Gill Sans',\r\n    'Helvetica',\r\n    'Impact',\r\n    'Inconsolata',\r\n    'Indie Flower',\r\n    'Inter',\r\n    'Josefin Sans',\r\n    'Karla',\r\n    'Lato',\r\n    'Lexend',\r\n    'Lucida Bright',\r\n    'Lucida Console',\r\n    'Lucida Sans Unicode',\r\n    'Manrope',\r\n    'Merriweather',\r\n    'Merriweather Sans',\r\n    'Montserrat',\r\n    'Myriad',\r\n    'Noto Sans',\r\n    'Nunito',\r\n    'Nunito Sans',\r\n    'Open Sans',\r\n    'Optima',\r\n    'Orbitron',\r\n    'Oswald',\r\n    'Pacifico',\r\n    'Palatino',\r\n    'Perpetua',\r\n    'PT Sans',\r\n    'PT Serif',\r\n    'Poppins',\r\n    'Prompt',\r\n    'Public Sans',\r\n    'Quicksand',\r\n    'Rajdhani',\r\n    'Recursive',\r\n    'Roboto',\r\n    'Roboto Condensed',\r\n    'Rockwell',\r\n    'Rubik',\r\n    'Segoe Print',\r\n    'Segoe Script',\r\n    'Segoe UI',\r\n    'Sora',\r\n    'Source Sans Pro',\r\n    'Space Mono',\r\n    'Tahoma',\r\n    'Taviraj',\r\n    'Times',\r\n    'Times New Roman',\r\n    'Titillium Web',\r\n    'Trebuchet MS',\r\n    'Ubuntu',\r\n    'Varela Round',\r\n    'Verdana',\r\n    'Work Sans',\r\n  ];\r\n\r\n  const baseFonts = ['monospace', 'sans-serif', 'serif'];\r\n\r\nexport default function getFontMetrics(): Promise\u003ccomponentInterface\u003e {\r\n    \r\n    return new Promise((resolve, reject) =\u003e {\r\n        try {\r\n\r\n            ephemeralIFrame(async ({ iframe }) =\u003e {\r\n                const textToRender = 'Hello, world!';\r\n\r\n                const canvas = iframe.createElement('canvas');\r\n                const ctx = canvas.getContext('2d');\r\n\r\n                const defaultWidths: number[] = baseFonts.map((font) =\u003e {\r\n                    return measureSingleFont(ctx, font)\r\n                })\r\n\r\n                let results: {[k: string]: any} = {};\r\n                availableFonts.forEach((font) =\u003e {\r\n                    const fontWidth = measureSingleFont(ctx, font);\r\n                    if (!defaultWidths.includes(fontWidth))\r\n                        results[font] = fontWidth;\r\n                });\r\n    \r\n                resolve(results);\r\n            })\r\n\r\n\r\n        } catch (error) {\r\n            reject({'error': 'unsupported'})\r\n        }\r\n    });\r\n};\r\n\r\n\r\nfunction measureSingleFont(ctx: CanvasRenderingContext2D | null, font: string): number {\r\n    if (!ctx) {\r\n        throw new Error('Canvas context not supported');\r\n    }\r\n    const text: string = \"WwMmLli0Oo\";\r\n    const defaultFont = ctx.font; // Store default font\r\n    ctx.font = `72px ${font}`; // Set a default font size\r\n    return ctx.measureText(text).width;\r\n}\r\n\r\nif (getBrowser().name != 'Firefox')\r\n    includeComponent('fonts', getFontMetrics);","import { componentInterface, includeComponent } from '../../factory';\r\nimport { mostFrequentValuesInArrayOfDictionaries } from '../../utils/getMostFrequent';\r\nimport { options } from '../../fingerprint/options';\r\nimport { getBrowser } from '../system/browser';\r\n\r\nlet permission_keys: PermissionName[];\r\nfunction initializePermissionKeys() {\r\n    permission_keys = options?.permissions_to_check || [\r\n        'accelerometer',\r\n        'accessibility', 'accessibility-events',\r\n        'ambient-light-sensor',\r\n        'background-fetch', 'background-sync', 'bluetooth',\r\n        'camera',\r\n        'clipboard-read',\r\n        'clipboard-write',\r\n        'device-info', 'display-capture',\r\n        'gyroscope', 'geolocation',\r\n        'local-fonts',\r\n        'magnetometer', 'microphone', 'midi',\r\n        'nfc', 'notifications',\r\n        'payment-handler',\r\n        'persistent-storage',\r\n        'push',\r\n        'speaker', 'storage-access',\r\n        'top-level-storage-access',\r\n        'window-management',\r\n        'query',\r\n    ] as PermissionName[];\r\n}\r\n\r\nexport default async function getBrowserPermissions(): Promise\u003ccomponentInterface\u003e {\r\n    initializePermissionKeys();\r\n    const browser = getBrowser();\r\n    if (browser.name.toLowerCase() === 'safari') { // removing from Safari due to iFrame handling\r\n        permission_keys = permission_keys.filter((key) =\u003e !['camera', 'geolocation', 'microphone'].includes(key));\r\n    }\r\n    const permissionPromises: Promise\u003ccomponentInterface\u003e[] = Array.from({length: options?.retries || 3}, () =\u003e getBrowserPermissionsOnce() );\r\n    return Promise.all(permissionPromises).then((resolvedPermissions) =\u003e {\r\n        const permission = mostFrequentValuesInArrayOfDictionaries(resolvedPermissions, permission_keys);\r\n        return permission;\r\n    });\r\n}\r\n\r\nasync function getBrowserPermissionsOnce(): Promise\u003ccomponentInterface\u003e {\r\n\r\n    const permissionStatus: { [key: string]: string } = {};\r\n\r\n    for (const feature of permission_keys) {\r\n        try {\r\n            // Request permission status for each feature\r\n            const status = await navigator.permissions.query({ name: feature });\r\n\r\n            // Assign permission status to the object\r\n            permissionStatus[feature] = status.state.toString();\r\n        } catch (error) {\r\n            // In case of errors (unsupported features, etc.), do nothing. Not listing them is the same as not supported\r\n        }\r\n    }\r\n\r\n    return permissionStatus;\r\n}\r\n\r\nincludeComponent(\"permissions\", getBrowserPermissions);","import { componentInterface, includeComponent } from '../../factory'\r\n\r\nfunction getHardwareInfo(): Promise\u003ccomponentInterface\u003e {\r\n  return new Promise((resolve, reject) =\u003e {\r\n    const deviceMemory = (navigator.deviceMemory !== undefined) ? navigator.deviceMemory : 0\r\n    const memoryInfo = (window.performance \u0026\u0026 (window.performance as any).memory ) ? (window.performance as any).memory : 0\r\n    resolve(\r\n      {\r\n        'videocard': getVideoCard(),\r\n        'architecture': getArchitecture(),\r\n        'deviceMemory': deviceMemory.toString() || 'undefined',\r\n        'jsHeapSizeLimit': memoryInfo.jsHeapSizeLimit || 0,\r\n      }\r\n    )\r\n  });\r\n}\r\n\r\nfunction getVideoCard(): componentInterface | string {\r\n    const canvas = document.createElement('canvas');\r\n    const gl = canvas.getContext('webgl') ?? canvas.getContext('experimental-webgl');\r\n    \r\n    if (gl \u0026\u0026 'getParameter' in gl) {\r\n        try {\r\n            // Try standard parameters first\r\n            const vendor = (gl.getParameter(gl.VENDOR) || '').toString();\r\n            const renderer = (gl.getParameter(gl.RENDERER) || '').toString();\r\n            \r\n            let result: componentInterface = {\r\n                vendor: vendor,\r\n                renderer: renderer,\r\n                version: (gl.getParameter(gl.VERSION) || '').toString(),\r\n                shadingLanguageVersion: (gl.getParameter(gl.SHADING_LANGUAGE_VERSION) || '').toString(),\r\n            };\r\n            \r\n            // Only try debug info if needed and available\r\n            if (!renderer.length || !vendor.length) {\r\n                const debugInfo = gl.getExtension(\"WEBGL_debug_renderer_info\");\r\n                if (debugInfo) {\r\n                    const vendorUnmasked = (gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) || '').toString();\r\n                    const rendererUnmasked = (gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) || '').toString();\r\n                    \r\n                    // Only add unmasked values if they exist\r\n                    if (vendorUnmasked) {\r\n                        result.vendorUnmasked = vendorUnmasked;\r\n                    }\r\n                    if (rendererUnmasked) {\r\n                        result.rendererUnmasked = rendererUnmasked;\r\n                    }\r\n                }\r\n            }\r\n            \r\n            return result;\r\n        } catch (error) {\r\n            // fail silently\r\n        }\r\n    }\r\n    return \"undefined\";\r\n}\r\n\r\nfunction getArchitecture(): number {\r\n  const f = new Float32Array(1);\r\n  const u8 = new Uint8Array(f.buffer);\r\n  f[0] = Infinity;\r\n  f[0] = f[0] - f[0];\r\n\r\n  return u8[3];\r\n}\r\n\r\nincludeComponent('hardware', getHardwareInfo);","function mostFrequentValue(arr: any[]): any | null {\r\n    if (arr.length === 0) {\r\n      return null; // Return null for an empty array\r\n    }\r\n  \r\n    const frequencyMap: { [key: string]: number } = {};\r\n  \r\n    // Count occurrences of each element in the array\r\n    arr.forEach((element) =\u003e {\r\n      const key = String(element);\r\n      frequencyMap[key] = (frequencyMap[key] || 0) + 1;\r\n    });\r\n  \r\n    let mostFrequent: any = arr[0]; // Assume the first element is the most frequent\r\n    let highestFrequency = 1; // Frequency of the assumed most frequent element\r\n  \r\n    // Find the element with the highest frequency\r\n    Object.keys(frequencyMap).forEach((key) =\u003e {\r\n      if (frequencyMap[key] \u003e highestFrequency) {\r\n        mostFrequent = key;\r\n        highestFrequency = frequencyMap[key];\r\n      }\r\n    });\r\n  \r\n    return mostFrequent;\r\n  }\r\n\r\nexport function mostFrequentValuesInArrayOfDictionaries(arr: { [key: string]: any }[], keys: string[]): { [key: string]: any } {\r\n    const result: { [key: string]: any } = {};\r\n  \r\n    keys.forEach((key) =\u003e {\r\n      const valuesForKey = arr.map((obj) =\u003e (key in obj ? obj[key] : undefined)).filter((val) =\u003e val !== undefined);\r\n      const mostFrequentValueForKey = mostFrequentValue(valuesForKey);\r\n      if (mostFrequentValueForKey)\r\n        result[key] = mostFrequentValueForKey;\r\n    });\r\n  \r\n    return result;\r\n  }","import { componentInterface, includeComponent } from '../../factory';\r\n\r\nfunction screenDetails(): Promise\u003ccomponentInterface\u003e {\r\n    return new Promise((resolve) =\u003e {\r\n        resolve(\r\n            {\r\n                'is_touchscreen': navigator.maxTouchPoints \u003e 0,\r\n                'maxTouchPoints': navigator.maxTouchPoints,\r\n                'colorDepth': screen.colorDepth,\r\n                'mediaMatches': matchMedias(),\r\n            }\r\n        );\r\n    });\r\n}\r\n\r\nfunction matchMedias(): string[] {\r\n    let results: string[] = [];\r\n\r\n    /**\r\n     * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries\r\n     */\r\n\r\n    const mediaQueries: { [k: string]: string[] } = {\r\n        'prefers-contrast': ['high', 'more', 'low', 'less', 'forced', 'no-preference'],\r\n        'any-hover': ['hover', 'none'],\r\n        'any-pointer': ['none', 'coarse', 'fine'],\r\n        'pointer': ['none', 'coarse', 'fine'],\r\n        'hover': ['hover', 'none'],\r\n        'update': ['fast', 'slow'],\r\n        'inverted-colors': ['inverted', 'none'],\r\n        'prefers-reduced-motion': ['reduce', 'no-preference'],\r\n        'prefers-reduced-transparency': ['reduce', 'no-preference'],\r\n        'scripting': ['none', 'initial-only', 'enabled'],\r\n        'forced-colors': ['active', 'none'],\r\n      };\r\n\r\n    Object.keys(mediaQueries).forEach((key) =\u003e {\r\n        mediaQueries[key].forEach((value) =\u003e {\r\n            if (matchMedia(`(${key}: ${value})`).matches)\r\n                results.push(`${key}: ${value}`);\r\n        })\r\n    });\r\n    return results;\r\n}\r\n\r\nincludeComponent('screen', screenDetails);","export async function ephemeralIFrame(callback: ({ iframe }: { iframe: Document }) =\u003e void): Promise\u003cany\u003e {\r\n\r\n    while (!document.body) {\r\n      await wait(50)\r\n    }\r\n    const iframe = document.createElement('iframe')\r\n    iframe.setAttribute('frameBorder', '0')\r\n\r\n    const style = iframe.style\r\n    style.setProperty('position','fixed');\r\n    style.setProperty('display', 'block', 'important')\r\n    style.setProperty('visibility', 'visible')\r\n    style.setProperty('border', '0');\r\n    style.setProperty('opacity','0');\r\n    \r\n    iframe.src = 'about:blank'\r\n    document.body.appendChild(iframe)\r\n  \r\n    const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;\r\n    if (!iframeDocument) {\r\n      throw new Error('Iframe document is not accessible');\r\n    }\r\n  \r\n    // Execute the callback function with access to the iframe's document\r\n    callback({ iframe: iframeDocument });\r\n  \r\n    // Clean up after running the callback\r\n    setTimeout(() =\u003e {\r\n      document.body.removeChild(iframe);\r\n    }, 0);\r\n  }\r\n\r\n  export function wait\u003cT = void\u003e(durationMs: number, resolveWith?: T): Promise\u003cT\u003e {\r\n    return new Promise((resolve) =\u003e setTimeout(resolve, durationMs, resolveWith))\r\n  }","import { componentInterface, includeComponent } from '../../factory'\n\nfunction getLocales(): Promise\u003ccomponentInterface\u003e {\n  return new Promise((resolve) =\u003e {\n    resolve(\n      {\n        'languages': getUserLanguage(),\n        'timezone': getUserTimezone()\n      });\n    });\n}\n\nfunction getUserLanguage(): string {\n    const userLanguages: string[] = [];\n\n    return navigator.language;\n  }\n\n  function getUserTimezone(): string {\n    return Intl.DateTimeFormat().resolvedOptions().timeZone;\n  }\n\n  includeComponent('locales', getLocales);","import { componentInterface, includeComponent } from '../../factory'\n\nexport default function getInstalledPlugins(): Promise\u003ccomponentInterface\u003e {\n    const plugins: string[] = [];\n  \n    if (navigator.plugins) {\n      for (let i = 0; i \u003c navigator.plugins.length; i++) {\n        const plugin = navigator.plugins[i];\n        plugins.push([plugin.name, plugin.filename, plugin.description ].join(\"|\"));\n      }\n    }\n  \n    return new Promise((resolve) =\u003e {\n      resolve(\n        {\n          'plugins': plugins\n        }\n      );\n  });\n  }\n  \n  includeComponent('plugins', getInstalledPlugins);","import { componentInterface, includeComponent } from '../../factory';\r\nimport { getBrowser } from './browser'\r\n\r\nfunction getSystemDetails(): Promise\u003ccomponentInterface\u003e {\r\n    return new Promise((resolve) =\u003e {\r\n        const browser = getBrowser()\r\n\r\n        const result: componentInterface = {\r\n        'platform': window.navigator.platform,\r\n        'productSub': navigator.productSub,\r\n        'product': navigator.product,\r\n        'useragent': navigator.userAgent,\r\n        'hardwareConcurrency': navigator.hardwareConcurrency,\r\n        'browser': {'name': browser.name, 'version': browser.version },\r\n        }\r\n        // Safari handles these differently in an iFrame so removing them from components\r\n        if (browser.name.toLowerCase() !== 'safari') {\r\n            result['applePayVersion'] = getApplePayVersion();\r\n            result['cookieEnabled'] = window.navigator.cookieEnabled;\r\n        }\r\n        resolve(result);\r\n    });\r\n};\r\n\r\n/**\r\n * @returns applePayCanMakePayments: boolean, applePayMaxSupportedVersion: number\r\n */\r\nfunction getApplePayVersion(): number {\r\n    if (window.location.protocol === 'https:' \u0026\u0026 typeof (window as any).ApplePaySession === 'function') {\r\n        try {\r\n            const versionCheck = (window as any).ApplePaySession.supportsVersion;\r\n            for (let i = 15; i \u003e 0; i--) {\r\n                if (versionCheck(i)) {\r\n                    return i;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            return 0\r\n        }\r\n    }\r\n    return 0\r\n}\r\n\r\nincludeComponent('system', getSystemDetails);\r\n\r\n","import { componentInterface, includeComponent } from '../../factory'\r\nimport { hash } from '../../utils/hash'\r\nimport { getCommonPixels } from '../../utils/commonPixels';\r\nimport { getBrowser } from '../system/browser';\r\n\r\nconst _RUNS = (getBrowser().name !== 'SamsungBrowser') ? 1 : 3;\r\nlet canvas: HTMLCanvasElement\r\nlet gl: WebGLRenderingContext | null = null;\r\n\r\nfunction initializeCanvasAndWebGL() {\r\n  if (typeof document !== 'undefined') {\r\n    canvas = document.createElement('canvas');\r\n    canvas.width = 200;\r\n    canvas.height = 100;\r\n    gl = canvas.getContext('webgl');\r\n  }\r\n}\r\n\r\nasync function createWebGLFingerprint(): Promise\u003ccomponentInterface\u003e {\r\n  initializeCanvasAndWebGL();\r\n  \r\n  try {\r\n\r\n    if (!gl) {\r\n        throw new Error('WebGL not supported');\r\n    }\r\n\r\n\r\n    const imageDatas: ImageData[] = Array.from({length: _RUNS}, () =\u003e createWebGLImageData() );\r\n    // and then checking the most common bytes for each channel of each pixel\r\n    const commonImageData = getCommonPixels(imageDatas, canvas.width, canvas.height);\r\n    //const imageData = createWebGLImageData()\r\n\r\n    return {\r\n      'commonImageHash': hash(commonImageData.data.toString()).toString(),\r\n    }\r\n  } catch (error) {\r\n    return {\r\n      'webgl': 'unsupported'\r\n    }\r\n  }\r\n}\r\n\r\nfunction createWebGLImageData(): ImageData {\r\n  try {\r\n\r\n      if (!gl) {\r\n          throw new Error('WebGL not supported');\r\n      }\r\n\r\n      const vertexShaderSource = `\r\n          attribute vec2 position;\r\n          void main() {\r\n              gl_Position = vec4(position, 0.0, 1.0);\r\n          }\r\n      `;\r\n\r\n      const fragmentShaderSource = `\r\n          precision mediump float;\r\n          void main() {\r\n              gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\r\n          }\r\n      `;\r\n\r\n      const vertexShader = gl.createShader(gl.VERTEX_SHADER);\r\n      const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\r\n\r\n      if (!vertexShader || !fragmentShader) {\r\n          throw new Error('Failed to create shaders');\r\n      }\r\n\r\n      gl.shaderSource(vertexShader, vertexShaderSource);\r\n      gl.shaderSource(fragmentShader, fragmentShaderSource);\r\n\r\n      gl.compileShader(vertexShader);\r\n      if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\r\n          throw new Error('Vertex shader compilation failed: ' + gl.getShaderInfoLog(vertexShader));\r\n      }\r\n\r\n      gl.compileShader(fragmentShader);\r\n      if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\r\n          throw new Error('Fragment shader compilation failed: ' + gl.getShaderInfoLog(fragmentShader));\r\n      }\r\n\r\n      const shaderProgram = gl.createProgram();\r\n\r\n      if (!shaderProgram) {\r\n          throw new Error('Failed to create shader program');\r\n      }\r\n\r\n      gl.attachShader(shaderProgram, vertexShader);\r\n      gl.attachShader(shaderProgram, fragmentShader);\r\n      gl.linkProgram(shaderProgram);\r\n      if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {\r\n          throw new Error('Shader program linking failed: ' + gl.getProgramInfoLog(shaderProgram));\r\n      }\r\n\r\n      gl.useProgram(shaderProgram);\r\n\r\n      // Set up vertices to form lines\r\n      const numSpokes: number = 137;\r\n      const vertices = new Float32Array(numSpokes * 4);\r\n      const angleIncrement = (2 * Math.PI) / numSpokes;\r\n\r\n      for (let i = 0; i \u003c numSpokes; i++) {\r\n          const angle = i * angleIncrement;\r\n\r\n          // Define two points for each line (spoke)\r\n          vertices[i * 4] = 0; // Center X\r\n          vertices[i * 4 + 1] = 0; // Center Y\r\n          vertices[i * 4 + 2] = Math.cos(angle) * (canvas.width / 2); // Endpoint X\r\n          vertices[i * 4 + 3] = Math.sin(angle) * (canvas.height / 2); // Endpoint Y\r\n      }\r\n\r\n      const vertexBuffer = gl.createBuffer();\r\n      gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);\r\n      gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\r\n\r\n      const positionAttribute = gl.getAttribLocation(shaderProgram, 'position');\r\n      gl.enableVertexAttribArray(positionAttribute);\r\n      gl.vertexAttribPointer(positionAttribute, 2, gl.FLOAT, false, 0, 0);\r\n\r\n      // Render\r\n      gl.viewport(0, 0, canvas.width, canvas.height);\r\n      gl.clearColor(0.0, 0.0, 0.0, 1.0);\r\n      gl.clear(gl.COLOR_BUFFER_BIT);\r\n      gl.drawArrays(gl.LINES, 0, numSpokes * 2);\r\n\r\n      const pixelData = new Uint8ClampedArray(canvas.width * canvas.height * 4);\r\n      gl.readPixels(0, 0, canvas.width, canvas.height, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);\r\n      const imageData = new ImageData(pixelData, canvas.width, canvas.height);\r\n\r\n      return imageData;\r\n  } catch (error) {\r\n      //console.error(error);\r\n      return new ImageData(1, 1);\r\n  } finally {\r\n    if (gl) {\r\n      // Reset WebGL state\r\n      gl.bindBuffer(gl.ARRAY_BUFFER, null);\r\n      gl.useProgram(null);\r\n      gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\r\n      gl.clearColor(0.0, 0.0, 0.0, 0.0);\r\n    }\r\n  }\r\n}\r\n\r\n  includeComponent('webgl', createWebGLFingerprint);","import { componentInterface, includeComponent } from '../../factory'\r\n\r\nconst getMathInfo = async (): Promise\u003ccomponentInterface\u003e =\u003e {\r\n    return {\r\n        acos: Math.acos(0.5),\r\n        asin: integrate(Math.asin, -1, 1, 97),\r\n        atan: integrate(Math.atan, -1, 1, 97),\r\n        cos: integrate(Math.cos, 0, Math.PI, 97),\r\n        cosh: Math.cosh(9/7),\r\n        e: Math.E,\r\n        largeCos: Math.cos(1e20),\r\n        largeSin: Math.sin(1e20),\r\n        largeTan: Math.tan(1e20),\r\n        log: Math.log(1000),\r\n        pi: Math.PI,\r\n        sin: integrate(Math.sin, -Math.PI, Math.PI, 97),\r\n        sinh: integrate(Math.sinh, -9/7, 7/9, 97),\r\n        sqrt: Math.sqrt(2),\r\n        tan: integrate(Math.tan, 0, 2 * Math.PI, 97),\r\n        tanh: integrate(Math.tanh, -9/7, 7/9, 97),\r\n    }\r\n}\r\n\r\n/** This might be a little excessive, but I wasn't sure what number to pick for some of the\r\n * trigonometric functions. Using an integral here, so a few numbers are calculated. However,\r\n * I do this mainly for those integrals that sum up to a small value, otherwise there's no point.\r\n*/ \r\n\r\nconst integrate = (f: (x: number) =\u003e number, a: number, b: number, n: number): number =\u003e {\r\n    const h = (b - a) / n;\r\n    let sum = 0;\r\n    for (let i = 0; i \u003c n; i++) {\r\n        const x = a + (i + 0.5) * h;\r\n        sum += f(x);\r\n    }\r\n    return sum * h;\r\n};\r\n\r\nincludeComponent('math', getMathInfo);"],"version":3}
