Lemonldap-NG-Portal
view release on metacpan or search on metacpan
site/htdocs/static/bwr/fingerprintjs2/fingerprint2.js view on Meta::CPAN
case 5:
k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 4)], 32))
// fallthrough
case 4:
k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 3)], 24))
// fallthrough
case 3:
k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 2)], 16))
// fallthrough
case 2:
k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 1)], 8))
// fallthrough
case 1:
k1 = x64Xor(k1, [0, key.charCodeAt(i)])
k1 = x64Multiply(k1, c1)
k1 = x64Rotl(k1, 31)
k1 = x64Multiply(k1, c2)
h1 = x64Xor(h1, k1)
// fallthrough
}
h1 = x64Xor(h1, [0, key.length])
h2 = x64Xor(h2, [0, key.length])
h1 = x64Add(h1, h2)
h2 = x64Add(h2, h1)
h1 = x64Fmix(h1)
h2 = x64Fmix(h2)
h1 = x64Add(h1, h2)
h2 = x64Add(h2, h1)
return ('00000000' + (h1[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h1[1] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[1] >>> 0).toString(16)).slice(-8)
}
var defaultOptions = {
preprocessor: null,
audio: {
timeout: 1000,
// On iOS 11, audio context can only be used in response to user interaction.
// We require users to explicitly enable audio fingerprinting on iOS 11.
// See https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088
excludeIOS11: true
},
fonts: {
swfContainerId: 'fingerprintjs2',
swfPath: 'flash/compiled/FontList.swf',
userDefinedFonts: [],
extendedJsFonts: false
},
screen: {
// To ensure consistent fingerprints when users rotate their mobile devices
detectScreenOrientation: true
},
plugins: {
sortPluginsFor: [/palemoon/i],
excludeIE: false
},
extraComponents: [],
excludes: {
// Unreliable on Windows, see https://github.com/fingerprintjs/fingerprintjs/issues/375
'enumerateDevices': true,
// devicePixelRatio depends on browser zoom, and it's impossible to detect browser zoom
'pixelRatio': true,
// DNT depends on incognito mode for some browsers (Chrome) and it's impossible to detect incognito mode
'doNotTrack': true,
// uses js fonts already
'fontsFlash': true,
// Extensions (including AdBlock) are disabled by default in Incognito mod of Chrome and Firefox
// See https://github.com/fingerprintjs/fingerprintjs/issues/405
'adBlock': true
},
NOT_AVAILABLE: 'not available',
ERROR: 'error',
EXCLUDED: 'excluded'
}
var each = function (obj, iterator) {
if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) {
obj.forEach(iterator)
} else if (obj.length === +obj.length) {
for (var i = 0, l = obj.length; i < l; i++) {
iterator(obj[i], i, obj)
}
} else {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
iterator(obj[key], key, obj)
}
}
}
}
var map = function (obj, iterator) {
var results = []
// Not using strict equality so that this acts as a
// shortcut to checking for `null` and `undefined`.
if (obj == null) {
return results
}
if (Array.prototype.map && obj.map === Array.prototype.map) { return obj.map(iterator) }
each(obj, function (value, index, list) {
results.push(iterator(value, index, list))
})
return results
}
var extendSoft = function (target, source) {
if (source == null) { return target }
var value
var key
for (key in source) {
value = source[key]
if (value != null && !(Object.prototype.hasOwnProperty.call(target, key))) {
target[key] = value
}
}
return target
}
// https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices
var enumerateDevicesKey = function (done, options) {
if (!isEnumerateDevicesSupported()) {
return done(options.NOT_AVAILABLE)
}
( run in 2.196 seconds using v1.01-cache-2.11-cpan-a49fcb8fa48 )