hc-web-log-mon
Version:
基于 JS 跨平台插件,为前端项目提供【 行为、性能、异常、请求、资源、路由、曝光、录屏 】监控手段
1,615 lines (1,614 loc) • 63.8 kB
text/typescript
// @ts-nocheck
/**
* 获取设备id
* 在用户未登录的情况下最大限度标明用户唯一身份
* 注:此文件为 fingerprintjs[https://github.com/fingerprintjs/fingerprintjs] v3.4.1 离线版本
*/
/**
* FingerprintJS v3.4.1 - Copyright (c) FingerprintJS, Inc, 2023 (https://fingerprint.com)
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
*
* This software contains code from open-source projects:
* MurmurHash3 by Karan Lyons (https://github.com/karanlyons/murmurHash3.js)
*/
let e = function () {
return (
(e =
Object.assign ||
function (e) {
for (var n, t = 1, r = arguments.length; t < r; t++)
for (const o in (n = arguments[t]))
Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o])
return e
}),
e.apply(this, arguments)
)
}
function n(e, n, t, r) {
return new (t || (t = Promise))(function (o, a) {
function i(e) {
try {
u(r.next(e))
} catch (n) {
a(n)
}
}
function c(e) {
try {
u(r.throw(e))
} catch (n) {
a(n)
}
}
function u(e) {
let n
e.done
? o(e.value)
: ((n = e.value),
n instanceof t
? n
: new t(function (e) {
e(n)
})).then(i, c)
}
u((r = r.apply(e, n || [])).next())
})
}
function t(e, n) {
let t,
r,
o,
a,
i = {
label: 0,
sent: function () {
if (1 & o[0]) throw o[1]
return o[1]
},
trys: [],
ops: []
}
return (
(a = { next: c(0), throw: c(1), return: c(2) }),
'function' == typeof Symbol &&
(a[Symbol.iterator] = function () {
return this
}),
a
)
function c(c) {
return function (u) {
return (function (c) {
if (t) throw new TypeError('Generator is already executing.')
for (; a && ((a = 0), c[0] && (i = 0)), i; )
try {
if (
((t = 1),
r &&
(o =
2 & c[0]
? r.return
: c[0]
? r.throw || ((o = r.return) && o.call(r), 0)
: r.next) &&
!(o = o.call(r, c[1])).done)
)
return o
switch (((r = 0), o && (c = [2 & c[0], o.value]), c[0])) {
case 0:
case 1:
o = c
break
case 4:
return i.label++, { value: c[1], done: !1 }
case 5:
i.label++, (r = c[1]), (c = [0])
continue
case 7:
;(c = i.ops.pop()), i.trys.pop()
continue
default:
if (
!((o = i.trys),
(o = o.length > 0 && o[o.length - 1]) ||
(6 !== c[0] && 2 !== c[0]))
) {
i = 0
continue
}
if (3 === c[0] && (!o || (c[1] > o[0] && c[1] < o[3]))) {
i.label = c[1]
break
}
if (6 === c[0] && i.label < o[1]) {
;(i.label = o[1]), (o = c)
break
}
if (o && i.label < o[2]) {
;(i.label = o[2]), i.ops.push(c)
break
}
o[2] && i.ops.pop(), i.trys.pop()
continue
}
c = n.call(e, i)
} catch (u) {
;(c = [6, u]), (r = 0)
} finally {
t = o = 0
}
if (5 & c[0]) throw c[1]
return { value: c[0] ? c[1] : void 0, done: !0 }
})([c, u])
}
}
}
function r(e, n, t) {
if (t || 2 === arguments.length)
for (var r, o = 0, a = n.length; o < a; o++)
(!r && o in n) ||
(r || (r = Array.prototype.slice.call(n, 0, o)), (r[o] = n[o]))
return e.concat(r || Array.prototype.slice.call(n))
}
function o(e, n) {
return new Promise(function (t) {
return setTimeout(t, e, n)
})
}
function a(e) {
return !!e && 'function' == typeof e.then
}
function i(e, n) {
try {
const t = e()
a(t)
? t.then(
function (e) {
return n(!0, e)
},
function (e) {
return n(!1, e)
}
)
: n(!0, t)
} catch (r) {
n(!1, r)
}
}
function c(e, r, a) {
return (
void 0 === a && (a = 16),
n(this, void 0, void 0, function () {
let n, i, c
return t(this, function (t) {
switch (t.label) {
case 0:
;(n = Date.now()), (i = 0), (t.label = 1)
case 1:
return i < e.length
? (r(e[i], i),
(c = Date.now()) >= n + a ? ((n = c), [4, o(0)]) : [3, 3])
: [3, 4]
case 2:
t.sent(), (t.label = 3)
case 3:
return ++i, [3, 1]
case 4:
return [2]
}
})
})
)
}
function u(e) {
e.then(void 0, function () {})
}
function l(e, n) {
;(e = [e[0] >>> 16, 65535 & e[0], e[1] >>> 16, 65535 & e[1]]),
(n = [n[0] >>> 16, 65535 & n[0], n[1] >>> 16, 65535 & n[1]])
const t = [0, 0, 0, 0]
return (
(t[3] += e[3] + n[3]),
(t[2] += t[3] >>> 16),
(t[3] &= 65535),
(t[2] += e[2] + n[2]),
(t[1] += t[2] >>> 16),
(t[2] &= 65535),
(t[1] += e[1] + n[1]),
(t[0] += t[1] >>> 16),
(t[1] &= 65535),
(t[0] += e[0] + n[0]),
(t[0] &= 65535),
[(t[0] << 16) | t[1], (t[2] << 16) | t[3]]
)
}
function s(e, n) {
;(e = [e[0] >>> 16, 65535 & e[0], e[1] >>> 16, 65535 & e[1]]),
(n = [n[0] >>> 16, 65535 & n[0], n[1] >>> 16, 65535 & n[1]])
const t = [0, 0, 0, 0]
return (
(t[3] += e[3] * n[3]),
(t[2] += t[3] >>> 16),
(t[3] &= 65535),
(t[2] += e[2] * n[3]),
(t[1] += t[2] >>> 16),
(t[2] &= 65535),
(t[2] += e[3] * n[2]),
(t[1] += t[2] >>> 16),
(t[2] &= 65535),
(t[1] += e[1] * n[3]),
(t[0] += t[1] >>> 16),
(t[1] &= 65535),
(t[1] += e[2] * n[2]),
(t[0] += t[1] >>> 16),
(t[1] &= 65535),
(t[1] += e[3] * n[1]),
(t[0] += t[1] >>> 16),
(t[1] &= 65535),
(t[0] += e[0] * n[3] + e[1] * n[2] + e[2] * n[1] + e[3] * n[0]),
(t[0] &= 65535),
[(t[0] << 16) | t[1], (t[2] << 16) | t[3]]
)
}
function d(e, n) {
return 32 === (n %= 64)
? [e[1], e[0]]
: n < 32
? [(e[0] << n) | (e[1] >>> (32 - n)), (e[1] << n) | (e[0] >>> (32 - n))]
: ((n -= 32),
[(e[1] << n) | (e[0] >>> (32 - n)), (e[0] << n) | (e[1] >>> (32 - n))])
}
function m(e, n) {
return 0 === (n %= 64)
? e
: n < 32
? [(e[0] << n) | (e[1] >>> (32 - n)), e[1] << n]
: [e[1] << (n - 32), 0]
}
function f(e, n) {
return [e[0] ^ n[0], e[1] ^ n[1]]
}
function v(e) {
return (
(e = f(e, [0, e[0] >>> 1])),
(e = f((e = s(e, [4283543511, 3981806797])), [0, e[0] >>> 1])),
(e = f((e = s(e, [3301882366, 444984403])), [0, e[0] >>> 1]))
)
}
function h(e, n) {
n = n || 0
let t,
r = (e = e || '').length % 16,
o = e.length - r,
a = [0, n],
i = [0, n],
c = [0, 0],
u = [0, 0],
h = [2277735313, 289559509],
b = [1291169091, 658871167]
for (t = 0; t < o; t += 16)
(c = [
(255 & e.charCodeAt(t + 4)) |
((255 & e.charCodeAt(t + 5)) << 8) |
((255 & e.charCodeAt(t + 6)) << 16) |
((255 & e.charCodeAt(t + 7)) << 24),
(255 & e.charCodeAt(t)) |
((255 & e.charCodeAt(t + 1)) << 8) |
((255 & e.charCodeAt(t + 2)) << 16) |
((255 & e.charCodeAt(t + 3)) << 24)
]),
(u = [
(255 & e.charCodeAt(t + 12)) |
((255 & e.charCodeAt(t + 13)) << 8) |
((255 & e.charCodeAt(t + 14)) << 16) |
((255 & e.charCodeAt(t + 15)) << 24),
(255 & e.charCodeAt(t + 8)) |
((255 & e.charCodeAt(t + 9)) << 8) |
((255 & e.charCodeAt(t + 10)) << 16) |
((255 & e.charCodeAt(t + 11)) << 24)
]),
(c = d((c = s(c, h)), 31)),
(a = l((a = d((a = f(a, (c = s(c, b)))), 27)), i)),
(a = l(s(a, [0, 5]), [0, 1390208809])),
(u = d((u = s(u, b)), 33)),
(i = l((i = d((i = f(i, (u = s(u, h)))), 31)), a)),
(i = l(s(i, [0, 5]), [0, 944331445]))
switch (((c = [0, 0]), (u = [0, 0]), r)) {
case 15:
u = f(u, m([0, e.charCodeAt(t + 14)], 48))
case 14:
u = f(u, m([0, e.charCodeAt(t + 13)], 40))
case 13:
u = f(u, m([0, e.charCodeAt(t + 12)], 32))
case 12:
u = f(u, m([0, e.charCodeAt(t + 11)], 24))
case 11:
u = f(u, m([0, e.charCodeAt(t + 10)], 16))
case 10:
u = f(u, m([0, e.charCodeAt(t + 9)], 8))
case 9:
;(u = s((u = f(u, [0, e.charCodeAt(t + 8)])), b)),
(i = f(i, (u = s((u = d(u, 33)), h))))
case 8:
c = f(c, m([0, e.charCodeAt(t + 7)], 56))
case 7:
c = f(c, m([0, e.charCodeAt(t + 6)], 48))
case 6:
c = f(c, m([0, e.charCodeAt(t + 5)], 40))
case 5:
c = f(c, m([0, e.charCodeAt(t + 4)], 32))
case 4:
c = f(c, m([0, e.charCodeAt(t + 3)], 24))
case 3:
c = f(c, m([0, e.charCodeAt(t + 2)], 16))
case 2:
c = f(c, m([0, e.charCodeAt(t + 1)], 8))
case 1:
;(c = s((c = f(c, [0, e.charCodeAt(t)])), h)),
(a = f(a, (c = s((c = d(c, 31)), b))))
}
return (
(a = l((a = f(a, [0, e.length])), (i = f(i, [0, e.length])))),
(i = l(i, a)),
(a = l((a = v(a)), (i = v(i)))),
(i = l(i, a)),
('00000000' + (a[0] >>> 0).toString(16)).slice(-8) +
('00000000' + (a[1] >>> 0).toString(16)).slice(-8) +
('00000000' + (i[0] >>> 0).toString(16)).slice(-8) +
('00000000' + (i[1] >>> 0).toString(16)).slice(-8)
)
}
function b(e) {
return parseInt(e)
}
function p(e) {
return parseFloat(e)
}
function y(e, n) {
return 'number' == typeof e && isNaN(e) ? n : e
}
function g(e) {
return e.reduce(function (e, n) {
return e + (n ? 1 : 0)
}, 0)
}
function w(e, n) {
if ((void 0 === n && (n = 1), Math.abs(n) >= 1)) return Math.round(e / n) * n
const t = 1 / n
return Math.round(e * t) / t
}
function L(e) {
return e && 'object' == typeof e && 'message' in e ? e : { message: e }
}
function k(e) {
return 'function' != typeof e
}
function V(e, r, a) {
const l = Object.keys(e).filter(function (e) {
return !(function (e, n) {
for (let t = 0, r = e.length; t < r; ++t) if (e[t] === n) return !0
return !1
})(a, e)
}),
s = Array(l.length)
return (
c(l, function (n, t) {
s[t] = (function (e, n) {
const t = new Promise(function (t) {
const r = Date.now()
i(e.bind(null, n), function () {
for (var e = [], n = 0; n < arguments.length; n++)
e[n] = arguments[n]
const o = Date.now() - r
if (!e[0])
return t(function () {
return { error: L(e[1]), duration: o }
})
const a = e[1]
if (k(a))
return t(function () {
return { value: a, duration: o }
})
t(function () {
return new Promise(function (e) {
const n = Date.now()
i(a, function () {
for (var t = [], r = 0; r < arguments.length; r++)
t[r] = arguments[r]
const a = o + Date.now() - n
if (!t[0]) return e({ error: L(t[1]), duration: a })
e({ value: t[1], duration: a })
})
})
})
})
})
return (
u(t),
function () {
return t.then(function (e) {
return e()
})
}
)
})(e[n], r)
}),
function () {
return n(this, void 0, void 0, function () {
let e, n, r, a, i, d
return t(this, function (m) {
switch (m.label) {
case 0:
for (e = {}, n = 0, r = l; n < r.length; n++)
(a = r[n]), (e[a] = void 0)
;(i = Array(l.length)),
(d = function () {
let n
return t(this, function (t) {
switch (t.label) {
case 0:
return (
(n = !0),
[
4,
c(l, function (t, r) {
if (!i[r])
if (s[r]) {
const o = s[r]().then(function (n) {
return (e[t] = n)
})
u(o), (i[r] = o)
} else n = !1
})
]
)
case 1:
return t.sent(), n ? [2, 'break'] : [4, o(1)]
case 2:
return t.sent(), [2]
}
})
}),
(m.label = 1)
case 1:
return [5, d()]
case 2:
if ('break' === m.sent()) return [3, 4]
m.label = 3
case 3:
return [3, 1]
case 4:
return [4, Promise.all(i)]
case 5:
return m.sent(), [2, e]
}
})
})
}
)
}
function W(e, n) {
const t = function (e) {
return k(e)
? n(e)
: function () {
const t = e()
return a(t) ? t.then(n) : n(t)
}
}
return function (n) {
const r = e(n)
return a(r) ? r.then(t) : t(r)
}
}
function Z() {
const e = window,
n = navigator
return (
g([
'MSCSSMatrix' in e,
'msSetImmediate' in e,
'msIndexedDB' in e,
'msMaxTouchPoints' in n,
'msPointerEnabled' in n
]) >= 4
)
}
function S() {
const e = window,
n = navigator
return (
g([
'msWriteProfilerMark' in e,
'MSStream' in e,
'msLaunchUri' in n,
'msSaveBlob' in n
]) >= 3 && !Z()
)
}
function X() {
const e = window,
n = navigator
return (
g([
'webkitPersistentStorage' in n,
'webkitTemporaryStorage' in n,
0 === n.vendor.indexOf('Google'),
'webkitResolveLocalFileSystemURL' in e,
'BatteryManager' in e,
'webkitMediaStream' in e,
'webkitSpeechGrammar' in e
]) >= 5
)
}
function x() {
const e = window,
n = navigator
return (
g([
'ApplePayError' in e,
'CSSPrimitiveValue' in e,
'Counter' in e,
0 === n.vendor.indexOf('Apple'),
'getStorageUpdates' in n,
'WebKitMediaKeys' in e
]) >= 4
)
}
function F() {
const e = window
return (
g([
'safari' in e,
!('DeviceMotionEvent' in e),
!('ongestureend' in e),
!('standalone' in navigator)
]) >= 3
)
}
function Y() {
let e,
n,
t = window
return (
g([
'buildID' in navigator,
'MozAppearance' in
(null !==
(n =
null === (e = document.documentElement) || void 0 === e
? void 0
: e.style) && void 0 !== n
? n
: {}),
'onmozfullscreenchange' in t,
'mozInnerScreenX' in t,
'CSSMozDocumentRule' in t,
'CanvasCaptureMediaStream' in t
]) >= 4
)
}
function C() {
const e = document
return (
e.fullscreenElement ||
e.msFullscreenElement ||
e.mozFullScreenElement ||
e.webkitFullscreenElement ||
null
)
}
function R() {
const e = X(),
n = Y()
if (!e && !n) return !1
const t = window
return (
g([
'onorientationchange' in t,
'orientation' in t,
e && !('SharedWorker' in t),
n && /android/i.test(navigator.appVersion)
]) >= 2
)
}
function G(e) {
const n = new Error(e)
return (n.name = e), n
}
function M(e, r, a) {
let i, c, u
return (
void 0 === a && (a = 50),
n(this, void 0, void 0, function () {
let n, l
return t(this, function (t) {
switch (t.label) {
case 0:
;(n = document), (t.label = 1)
case 1:
return n.body ? [3, 3] : [4, o(a)]
case 2:
return t.sent(), [3, 1]
case 3:
;(l = n.createElement('iframe')), (t.label = 4)
case 4:
return (
t.trys.push([4, , 10, 11]),
[
4,
new Promise(function (e, t) {
let o = !1,
a = function () {
;(o = !0), e()
}
;(l.onload = a),
(l.onerror = function (e) {
;(o = !0), t(e)
})
const i = l.style
i.setProperty('display', 'block', 'important'),
(i.position = 'absolute'),
(i.top = '0'),
(i.left = '0'),
(i.visibility = 'hidden'),
r && 'srcdoc' in l
? (l.srcdoc = r)
: (l.src = 'about:blank'),
n.body.appendChild(l)
const c = function () {
let e, n
o ||
('complete' ===
(null ===
(n =
null === (e = l.contentWindow) || void 0 === e
? void 0
: e.document) || void 0 === n
? void 0
: n.readyState)
? a()
: setTimeout(c, 10))
}
c()
})
]
)
case 5:
t.sent(), (t.label = 6)
case 6:
return (
null ===
(c =
null === (i = l.contentWindow) || void 0 === i
? void 0
: i.document) || void 0 === c
? void 0
: c.body
)
? [3, 8]
: [4, o(a)]
case 7:
return t.sent(), [3, 6]
case 8:
return [4, e(l, l.contentWindow)]
case 9:
return [2, t.sent()]
case 10:
return (
null === (u = l.parentNode) || void 0 === u || u.removeChild(l),
[7]
)
case 11:
return [2]
}
})
})
)
}
function I(e) {
for (
var n = (function (e) {
for (
var n,
t,
r = "Unexpected syntax '".concat(e, "'"),
o = /^\s*([a-z-]*)(.*)$/i.exec(e),
a = o[1] || void 0,
i = {},
c = /([.:#][\w-]+|\[.+?\])/gi,
u = function (e, n) {
;(i[e] = i[e] || []), i[e].push(n)
};
;
) {
const l = c.exec(o[2])
if (!l) break
const s = l[0]
switch (s[0]) {
case '.':
u('class', s.slice(1))
break
case '#':
u('id', s.slice(1))
break
case '[':
var d =
/^\[([\w-]+)([~|^$*]?=("(.*?)"|([\w-]+)))?(\s+[is])?\]$/.exec(s)
if (!d) throw new Error(r)
u(
d[1],
null !== (t = null !== (n = d[4]) && void 0 !== n ? n : d[5]) &&
void 0 !== t
? t
: ''
)
break
default:
throw new Error(r)
}
}
return [a, i]
})(e),
t = n[0],
r = n[1],
o = document.createElement(null != t ? t : 'div'),
a = 0,
i = Object.keys(r);
a < i.length;
a++
) {
const c = i[a],
u = r[c].join(' ')
'style' === c ? j(o.style, u) : o.setAttribute(c, u)
}
return o
}
function j(e, n) {
for (let t = 0, r = n.split(';'); t < r.length; t++) {
const o = r[t],
a = /^\s*([\w-]+)\s*:\s*(.+?)(\s*!([\w-]+))?\s*$/.exec(o)
if (a) {
const i = a[1],
c = a[2],
u = a[4]
e.setProperty(i, c, u || '')
}
}
}
const A = ['monospace', 'sans-serif', 'serif'],
J = [
'sans-serif-thin',
'ARNO PRO',
'Agency FB',
'Arabic Typesetting',
'Arial Unicode MS',
'AvantGarde Bk BT',
'BankGothic Md BT',
'Batang',
'Bitstream Vera Sans Mono',
'Calibri',
'Century',
'Century Gothic',
'Clarendon',
'EUROSTILE',
'Franklin Gothic',
'Futura Bk BT',
'Futura Md BT',
'GOTHAM',
'Gill Sans',
'HELV',
'Haettenschweiler',
'Helvetica Neue',
'Humanst521 BT',
'Leelawadee',
'Letter Gothic',
'Levenim MT',
'Lucida Bright',
'Lucida Sans',
'Menlo',
'MS Mincho',
'MS Outlook',
'MS Reference Specialty',
'MS UI Gothic',
'MT Extra',
'MYRIAD PRO',
'Marlett',
'Meiryo UI',
'Microsoft Uighur',
'Minion Pro',
'Monotype Corsiva',
'PMingLiU',
'Pristina',
'SCRIPTINA',
'Segoe UI Light',
'Serifa',
'SimHei',
'Small Fonts',
'Staccato222 BT',
'TRAJAN PRO',
'Univers CE 55 Medium',
'Vrinda',
'ZWAdobeF'
]
function H(e) {
return e.toDataURL()
}
let N, P
function z() {
const e = this
return (
(function () {
if (void 0 === P) {
const e = function () {
const n = D()
E(n) ? (P = setTimeout(e, 2500)) : ((N = n), (P = void 0))
}
e()
}
})(),
function () {
return n(e, void 0, void 0, function () {
let e
return t(this, function (n) {
switch (n.label) {
case 0:
return E((e = D()))
? N
? [2, r([], N, !0)]
: C()
? [
4,
((t = document),
(
t.exitFullscreen ||
t.msExitFullscreen ||
t.mozCancelFullScreen ||
t.webkitExitFullscreen
).call(t))
]
: [3, 2]
: [3, 2]
case 1:
n.sent(), (e = D()), (n.label = 2)
case 2:
return E(e) || (N = e), [2, e]
}
let t
})
})
}
)
}
function D() {
const e = screen
return [
y(p(e.availTop), null),
y(p(e.width) - p(e.availWidth) - y(p(e.availLeft), 0), null),
y(p(e.height) - p(e.availHeight) - y(p(e.availTop), 0), null),
y(p(e.availLeft), null)
]
}
function E(e) {
for (let n = 0; n < 4; ++n) if (e[n]) return !1
return !0
}
function B(e) {
let r
return n(this, void 0, void 0, function () {
let n, a, i, c, u, l, s
return t(this, function (t) {
switch (t.label) {
case 0:
for (
n = document,
a = n.createElement('div'),
i = new Array(e.length),
c = {},
T(a),
s = 0;
s < e.length;
++s
)
(u = I(e[s])),
T((l = n.createElement('div'))),
l.appendChild(u),
a.appendChild(l),
(i[s] = u)
t.label = 1
case 1:
return n.body ? [3, 3] : [4, o(50)]
case 2:
return t.sent(), [3, 1]
case 3:
n.body.appendChild(a)
try {
for (s = 0; s < e.length; ++s) i[s].offsetParent || (c[e[s]] = !0)
} finally {
null === (r = a.parentNode) || void 0 === r || r.removeChild(a)
}
return [2, c]
}
})
})
}
function T(e) {
e.style.setProperty('display', 'block', 'important')
}
function O(e) {
return matchMedia('(inverted-colors: '.concat(e, ')')).matches
}
function _(e) {
return matchMedia('(forced-colors: '.concat(e, ')')).matches
}
function Q(e) {
return matchMedia('(prefers-contrast: '.concat(e, ')')).matches
}
function U(e) {
return matchMedia('(prefers-reduced-motion: '.concat(e, ')')).matches
}
function K(e) {
return matchMedia('(dynamic-range: '.concat(e, ')')).matches
}
const q = Math,
$ = function () {
return 0
}
const ee = {
default: [],
apple: [{ font: '-apple-system-body' }],
serif: [{ fontFamily: 'serif' }],
sans: [{ fontFamily: 'sans-serif' }],
mono: [{ fontFamily: 'monospace' }],
min: [{ fontSize: '1px' }],
system: [{ fontFamily: 'system-ui' }]
}
const ne = {
fonts: function () {
return M(function (e, n) {
const t = n.document,
r = t.body
r.style.fontSize = '48px'
const o = t.createElement('div'),
a = {},
i = {},
c = function (e) {
const n = t.createElement('span'),
r = n.style
return (
(r.position = 'absolute'),
(r.top = '0'),
(r.left = '0'),
(r.fontFamily = e),
(n.textContent = 'mmMwWLliI0O&1'),
o.appendChild(n),
n
)
},
u = A.map(c),
l = (function () {
for (
var e = {},
n = function (n) {
e[n] = A.map(function (e) {
return (function (e, n) {
return c("'".concat(e, "',").concat(n))
})(n, e)
})
},
t = 0,
r = J;
t < r.length;
t++
) {
n(r[t])
}
return e
})()
r.appendChild(o)
for (let s = 0; s < A.length; s++)
(a[A[s]] = u[s].offsetWidth), (i[A[s]] = u[s].offsetHeight)
return J.filter(function (e) {
return (
(n = l[e]),
A.some(function (e, t) {
return n[t].offsetWidth !== a[e] || n[t].offsetHeight !== i[e]
})
)
})
})
},
domBlockers: function (e) {
const r = (void 0 === e ? {} : e).debug
return n(this, void 0, void 0, function () {
let e, n, o, a, i
return t(this, function (t) {
switch (t.label) {
case 0:
return x() || R()
? ((c = atob),
(e = {
abpIndo: [
'#Iklan-Melayang',
'#Kolom-Iklan-728',
'#SidebarIklan-wrapper',
c('YVt0aXRsZT0iN25hZ2EgcG9rZXIiIGld'),
'[title="ALIENBOLA" i]'
],
abpvn: [
'#quangcaomb',
c('Lmlvc0Fkc2lvc0Fkcy1sYXlvdXQ='),
'.quangcao',
c('W2hyZWZePSJodHRwczovL3I4OC52bi8iXQ=='),
c('W2hyZWZePSJodHRwczovL3piZXQudm4vIl0=')
],
adBlockFinland: [
'.mainostila',
c('LnNwb25zb3JpdA=='),
'.ylamainos',
c('YVtocmVmKj0iL2NsaWNrdGhyZ2guYXNwPyJd'),
c('YVtocmVmXj0iaHR0cHM6Ly9hcHAucmVhZHBlYWsuY29tL2FkcyJd')
],
adBlockPersian: [
'#navbar_notice_50',
'.kadr',
'TABLE[width="140px"]',
'#divAgahi',
c('I2FkMl9pbmxpbmU=')
],
adBlockWarningRemoval: [
'#adblock-honeypot',
'.adblocker-root',
'.wp_adblock_detect',
c('LmhlYWRlci1ibG9ja2VkLWFk'),
c('I2FkX2Jsb2NrZXI=')
],
adGuardAnnoyances: [
'amp-embed[type="zen"]',
'.hs-sosyal',
'#cookieconsentdiv',
'div[class^="app_gdpr"]',
'.as-oil'
],
adGuardBase: [
'.BetterJsPopOverlay',
c('I2FkXzMwMFgyNTA='),
c('I2Jhbm5lcmZsb2F0MjI='),
c('I2FkLWJhbm5lcg=='),
c('I2NhbXBhaWduLWJhbm5lcg==')
],
adGuardChinese: [
c('LlppX2FkX2FfSA=='),
c('YVtocmVmKj0iL29kMDA1LmNvbSJd'),
c('YVtocmVmKj0iLmh0aGJldDM0LmNvbSJd'),
'.qq_nr_lad',
'#widget-quan'
],
adGuardFrench: [
c('I2Jsb2NrLXZpZXdzLWFkcy1zaWRlYmFyLWJsb2NrLWJsb2Nr'),
'#pavePub',
c('LmFkLWRlc2t0b3AtcmVjdGFuZ2xl'),
'.mobile_adhesion',
'.widgetadv'
],
adGuardGerman: [
c('LmJhbm5lcml0ZW13ZXJidW5nX2hlYWRfMQ=='),
c('LmJveHN0YXJ0d2VyYnVuZw=='),
c('LndlcmJ1bmcz'),
c(
'YVtocmVmXj0iaHR0cDovL3d3dy5laXMuZGUvaW5kZXgucGh0bWw/cmVmaWQ9Il0='
),
c(
'YVtocmVmXj0iaHR0cHM6Ly93d3cudGlwaWNvLmNvbS8/YWZmaWxpYXRlSWQ9Il0='
)
],
adGuardJapanese: [
'#kauli_yad_1',
c('YVtocmVmXj0iaHR0cDovL2FkMi50cmFmZmljZ2F0ZS5uZXQvIl0='),
c('Ll9wb3BJbl9pbmZpbml0ZV9hZA=='),
c('LmFkZ29vZ2xl'),
c('LmFkX3JlZ3VsYXIz')
],
adGuardMobile: [
c('YW1wLWF1dG8tYWRz'),
c('LmFtcF9hZA=='),
'amp-embed[type="24smi"]',
'#mgid_iframe1',
c('I2FkX2ludmlld19hcmVh')
],
adGuardRussian: [
c('YVtocmVmXj0iaHR0cHM6Ly9hZC5sZXRtZWFkcy5jb20vIl0='),
c('LnJlY2xhbWE='),
'div[id^="smi2adblock"]',
c('ZGl2W2lkXj0iQWRGb3hfYmFubmVyXyJd'),
c('I2FkX3NxdWFyZQ==')
],
adGuardSocial: [
c(
'YVtocmVmXj0iLy93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9Il0='
),
c('YVtocmVmXj0iLy90ZWxlZ3JhbS5tZS9zaGFyZS91cmw/Il0='),
'.etsy-tweet',
'#inlineShare',
'.popup-social'
],
adGuardSpanishPortuguese: [
'#barraPublicidade',
'#Publicidade',
'#publiEspecial',
'#queTooltip',
c('W2hyZWZePSJodHRwOi8vYWRzLmdsaXNwYS5jb20vIl0=')
],
adGuardTrackingProtection: [
'#qoo-counter',
c('YVtocmVmXj0iaHR0cDovL2NsaWNrLmhvdGxvZy5ydS8iXQ=='),
c(
'YVtocmVmXj0iaHR0cDovL2hpdGNvdW50ZXIucnUvdG9wL3N0YXQucGhwIl0='
),
c('YVtocmVmXj0iaHR0cDovL3RvcC5tYWlsLnJ1L2p1bXAiXQ=='),
'#top100counter'
],
adGuardTurkish: [
'#backkapat',
c('I3Jla2xhbWk='),
c('YVtocmVmXj0iaHR0cDovL2Fkc2Vydi5vbnRlay5jb20udHIvIl0='),
c('YVtocmVmXj0iaHR0cDovL2l6bGVuemkuY29tL2NhbXBhaWduLyJd'),
c('YVtocmVmXj0iaHR0cDovL3d3dy5pbnN0YWxsYWRzLm5ldC8iXQ==')
],
bulgarian: [
c('dGQjZnJlZW5ldF90YWJsZV9hZHM='),
'#ea_intext_div',
'.lapni-pop-over',
'#xenium_hot_offers',
c('I25ld0Fk')
],
easyList: [
c('I0FEX0NPTlRST0xfMjg='),
c('LnNlY29uZC1wb3N0LWFkcy13cmFwcGVy'),
'.universalboxADVBOX03',
c('LmFkdmVydGlzZW1lbnQtNzI4eDkw'),
c('LnNxdWFyZV9hZHM=')
],
easyListChina: [
c('YVtocmVmKj0iLndlbnNpeHVldGFuZy5jb20vIl0='),
c('LmFwcGd1aWRlLXdyYXBbb25jbGljayo9ImJjZWJvcy5jb20iXQ=='),
c('LmZyb250cGFnZUFkdk0='),
'#taotaole',
'#aafoot.top_box'
],
easyListCookie: [
'#AdaCompliance.app-notice',
'.text-center.rgpd',
'.panel--cookie',
'.js-cookies-andromeda',
'.elxtr-consent'
],
easyListCzechSlovak: [
'#onlajny-stickers',
c('I3Jla2xhbW5pLWJveA=='),
c('LnJla2xhbWEtbWVnYWJvYXJk'),
'.sklik',
c('W2lkXj0ic2tsaWtSZWtsYW1hIl0=')
],
easyListDutch: [
c('I2FkdmVydGVudGll'),
c('I3ZpcEFkbWFya3RCYW5uZXJCbG9jaw=='),
'.adstekst',
c('YVtocmVmXj0iaHR0cHM6Ly94bHR1YmUubmwvY2xpY2svIl0='),
'#semilo-lrectangle'
],
easyListGermany: [
c('I0FkX1dpbjJkYXk='),
c('I3dlcmJ1bmdzYm94MzAw'),
c(
'YVtocmVmXj0iaHR0cDovL3d3dy5yb3RsaWNodGthcnRlaS5jb20vP3NjPSJd'
),
c('I3dlcmJ1bmdfd2lkZXNreXNjcmFwZXJfc2NyZWVu'),
c(
'YVtocmVmXj0iaHR0cDovL2xhbmRpbmcucGFya3BsYXR6a2FydGVpLmNvbS8/YWc9Il0='
)
],
easyListItaly: [
c('LmJveF9hZHZfYW5udW5jaQ=='),
'.sb-box-pubbliredazionale',
c(
'YVtocmVmXj0iaHR0cDovL2FmZmlsaWF6aW9uaWFkcy5zbmFpLml0LyJd'
),
c('YVtocmVmXj0iaHR0cHM6Ly9hZHNlcnZlci5odG1sLml0LyJd'),
c(
'YVtocmVmXj0iaHR0cHM6Ly9hZmZpbGlhemlvbmlhZHMuc25haS5pdC8iXQ=='
)
],
easyListLithuania: [
c('LnJla2xhbW9zX3RhcnBhcw=='),
c('LnJla2xhbW9zX251b3JvZG9z'),
c('aW1nW2FsdD0iUmVrbGFtaW5pcyBza3lkZWxpcyJd'),
c('aW1nW2FsdD0iRGVkaWt1b3RpLmx0IHNlcnZlcmlhaSJd'),
c('aW1nW2FsdD0iSG9zdGluZ2FzIFNlcnZlcmlhaS5sdCJd')
],
estonian: [
c('QVtocmVmKj0iaHR0cDovL3BheTRyZXN1bHRzMjQuZXUiXQ==')
],
fanboyAnnoyances: [
'#feedback-tab',
'#taboola-below-article',
'.feedburnerFeedBlock',
'.widget-feedburner-counter',
'[title="Subscribe to our blog"]'
],
fanboyAntiFacebook: ['.util-bar-module-firefly-visible'],
fanboyEnhancedTrackers: [
'.open.pushModal',
'#issuem-leaky-paywall-articles-zero-remaining-nag',
'#sovrn_container',
'div[class$="-hide"][zoompage-fontsize][style="display: block;"]',
'.BlockNag__Card'
],
fanboySocial: [
'.td-tags-and-social-wrapper-box',
'.twitterContainer',
'.youtube-social',
'a[title^="Like us on Facebook"]',
'img[alt^="Share on Digg"]'
],
frellwitSwedish: [
c(
'YVtocmVmKj0iY2FzaW5vcHJvLnNlIl1bdGFyZ2V0PSJfYmxhbmsiXQ=='
),
c('YVtocmVmKj0iZG9rdG9yLXNlLm9uZWxpbmsubWUiXQ=='),
'article.category-samarbete',
c('ZGl2LmhvbGlkQWRz'),
'ul.adsmodern'
],
greekAdBlock: [
c('QVtocmVmKj0iYWRtYW4ub3RlbmV0LmdyL2NsaWNrPyJd'),
c(
'QVtocmVmKj0iaHR0cDovL2F4aWFiYW5uZXJzLmV4b2R1cy5nci8iXQ=='
),
c(
'QVtocmVmKj0iaHR0cDovL2ludGVyYWN0aXZlLmZvcnRobmV0LmdyL2NsaWNrPyJd'
),
'DIV.agores300',
'TABLE.advright'
],
hungarian: [
'#cemp_doboz',
'.optimonk-iframe-container',
c('LmFkX19tYWlu'),
c('W2NsYXNzKj0iR29vZ2xlQWRzIl0='),
'#hirdetesek_box'
],
iDontCareAboutCookies: [
'.alert-info[data-block-track*="CookieNotice"]',
'.ModuleTemplateCookieIndicator',
'.o--cookies--container',
'.cookie-msg-info-container',
'#cookies-policy-sticky'
],
icelandicAbp: [
c(
'QVtocmVmXj0iL2ZyYW1ld29yay9yZXNvdXJjZXMvZm9ybXMvYWRzLmFzcHgiXQ=='
)
],
latvian: [
c(
'YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMjBweDsgaGVpZ2h0OiA0MHB4OyBvdmVyZmxvdzogaGlkZGVuOyBwb3NpdGlvbjogcmVsYXRpdmU7Il0='
),
c(
'YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiA4OHB4OyBoZWlnaHQ6IDMxcHg7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsiXQ=='
)
],
listKr: [
c('YVtocmVmKj0iLy9hZC5wbGFuYnBsdXMuY28ua3IvIl0='),
c('I2xpdmVyZUFkV3JhcHBlcg=='),
c('YVtocmVmKj0iLy9hZHYuaW1hZHJlcC5jby5rci8iXQ=='),
c('aW5zLmZhc3R2aWV3LWFk'),
'.revenue_unit_item.dable'
],
listeAr: [
c('LmdlbWluaUxCMUFk'),
'.right-and-left-sponsers',
c('YVtocmVmKj0iLmFmbGFtLmluZm8iXQ=='),
c('YVtocmVmKj0iYm9vcmFxLm9yZyJd'),
c('YVtocmVmKj0iZHViaXp6bGUuY29tL2FyLz91dG1fc291cmNlPSJd')
],
listeFr: [
c('YVtocmVmXj0iaHR0cDovL3Byb21vLnZhZG9yLmNvbS8iXQ=='),
c('I2FkY29udGFpbmVyX3JlY2hlcmNoZQ=='),
c('YVtocmVmKj0id2Vib3JhbWEuZnIvZmNnaS1iaW4vIl0='),
'.site-pub-interstitiel',
'div[id^="crt-"][data-criteo-id]'
],
officialPolish: [
'#ceneo-placeholder-ceneo-12',
c('W2hyZWZePSJodHRwczovL2FmZi5zZW5kaHViLnBsLyJd'),
c(
'YVtocmVmXj0iaHR0cDovL2Fkdm1hbmFnZXIudGVjaGZ1bi5wbC9yZWRpcmVjdC8iXQ=='
),
c(
'YVtocmVmXj0iaHR0cDovL3d3dy50cml6ZXIucGwvP3V0bV9zb3VyY2UiXQ=='
),
c('ZGl2I3NrYXBpZWNfYWQ=')
],
ro: [
c(
'YVtocmVmXj0iLy9hZmZ0cmsuYWx0ZXgucm8vQ291bnRlci9DbGljayJd'
),
'a[href^="/magazin/"]',
c(
'YVtocmVmXj0iaHR0cHM6Ly9ibGFja2ZyaWRheXNhbGVzLnJvL3Ryay9zaG9wLyJd'
),
c(
'YVtocmVmXj0iaHR0cHM6Ly9ldmVudC4ycGVyZm9ybWFudC5jb20vZXZlbnRzL2NsaWNrIl0='
),
c('YVtocmVmXj0iaHR0cHM6Ly9sLnByb2ZpdHNoYXJlLnJvLyJd')
],
ruAd: [
c('YVtocmVmKj0iLy9mZWJyYXJlLnJ1LyJd'),
c('YVtocmVmKj0iLy91dGltZy5ydS8iXQ=='),
c('YVtocmVmKj0iOi8vY2hpa2lkaWtpLnJ1Il0='),
'#pgeldiz',
'.yandex-rtb-block'
],
thaiAds: [
'a[href*=macau-uta-popup]',
c('I2Fkcy1nb29nbGUtbWlkZGxlX3JlY3RhbmdsZS1ncm91cA=='),
c('LmFkczMwMHM='),
'.bumq',
'.img-kosana'
],
webAnnoyancesUltralist: [
'#mod-social-share-2',
'#social-tools',
c('LmN0cGwtZnVsbGJhbm5lcg=='),
'.zergnet-recommend',
'.yt.btn-link.btn-md.btn'
]
}),
(n = Object.keys(e)),
[
4,
B(
(i = []).concat.apply(
i,
n.map(function (n) {
return e[n]
})
)
)
])
: [2, void 0]
case 1:
return (
(o = t.sent()),
r &&
(function (e, n) {
for (
var t = 'DOM blockers debug:\n```',
r = 0,
o = Object.keys(e);
r < o.length;
r++
) {
const a = o[r]
t += '\n'.concat(a, ':')
for (let i = 0, c = e[a]; i < c.length; i++) {
const u = c[i]
t += '\n '.concat(n[u] ? '🚫' : '➡️', ' ').concat(u)
}
}
console.log(''.concat(t, '\n```'))
})(e, o),
(a = n.filter(function (n) {
const t = e[n]
return (
g(
t.map(function (e) {
return o[e]
})
) >
0.6 * t.length
)
})).sort(),
[2, a]
)
}
let c
})
})
},
fontPreferences: function () {
return (function (e, n) {
void 0 === n && (n = 4e3)
return M(function (t, o) {
const a = o.document,
i = a.body,
c = i.style
;(c.width = ''.concat(n, 'px')),
(c.webkitTextSizeAdjust = c.textSizeAdjust = 'none'),
X()
? (i.style.zoom = ''.concat(1 / o.devicePixelRatio))
: x() && (i.style.zoom = 'reset')
const u = a.createElement('div')
return (
(u.textContent = r([], Array((n / 20) << 0), !0)
.map(function () {
return 'word'
})
.join(' ')),
i.appendChild(u),
e(a, i)
)
})
// 不能添加这个 head,否则会在延迟手动加载中报错
// }, '<!doctype html><html><head><meta name="viewport" content="width=device-width, initial-scale=1">')
})(function (e, n) {
for (var t = {}, r = {}, o = 0, a = Object.keys(ee); o < a.length; o++) {
var i = a[o],
c = ee[i],
u = c[0],
l = void 0 === u ? {} : u,
s = c[1],
d = void 0 === s ? 'mmMwWLliI0fiflO&1' : s,
m = e.createElement('span')
;(m.textContent = d), (m.style.whiteSpace = 'nowrap')
for (let f = 0, v = Object.keys(l); f < v.length; f++) {
const h = v[f],
b = l[h]
void 0 !== b && (m.style[h] = b)
}
;(t[i] = m), n.appendChild(e.createElement('br')), n.appendChild(m)
}
for (let p = 0, y = Object.keys(ee); p < y.length; p++) {
r[(i = y[p])] = t[i].getBoundingClientRect().width
}
return r
})
},
audio: function () {
const e = window,
n = e.OfflineAudioContext || e.webkitOfflineAudioContext
if (!n) return -2
if (
x() &&
!F() &&
!(function () {
const e = window
return (
g([
'DOMRectList' in e,
'RTCPeerConnectionIceEvent' in e,
'SVGGeometryElement' in e,
'ontransitioncancel' in e
]) >= 3
)
})()
)
return -1
const t = new n(1, 5e3, 44100),
r = t.createOscillator()
;(r.type = 'triangle'), (r.frequency.value = 1e4)
const o = t.createDynamicsCompressor()
;(o.threshold.value = -50),
(o.knee.value = 40),
(o.ratio.value = 12),
(o.attack.value = 0),
(o.release.value = 0.25),
r.connect(o),
o.connect(t.destination),
r.start(0)
const i = (function (e) {
let n = 3,
t = 500,
r = 500,
o = 5e3,
i = function () {}
return [
new Promise(function (c, l) {
let s = !1,
d = 0,
m = 0
e.oncomplete = function (e) {
return c(e.renderedBuffer)
}
const f = function () {
setTimeout(function () {
return l(G('timeout'))
}, Math.min(r, m + o - Date.now()))
},
v = function () {
try {
const r = e.startRendering()
switch ((a(r) && u(r), e.state)) {
case 'running':
;(m = Date.now()), s && f()
break
case 'suspended':
document.hidden || d++,
s && d >= n ? l(G('suspended')) : setTimeout(v, t)
}
} catch (o) {
l(o)
}
}
v(),
(i = function () {
s || ((s = !0), m > 0 && f())
})
}),
i
]
})(t),
c = i[0],
l = i[1],
s = c.then(
function (e) {
return (function (e) {
for (var n = 0, t = 0; t < e.length; ++t) n += Math.abs(e[t])
return n
})(e.getChannelData(0).subarray(4500))
},
function (e) {
if ('timeout' === e.name || 'suspended' === e.name) return -3
throw e
}
)
return (
u(s),
function () {
return l(), s
}
)
},
screenFrame: function () {
const e = this,
r = z()
return function () {
return n(e, void 0, void 0, function () {
let e, n
return t(this, function (t) {
switch (t.label) {
case 0:
return [4, r()]
case 1:
return (
(e = t.sent()),
[
2,
[
(n = function (e) {
return null === e ? null : w(e, 10)
})(e[0]),
n(e[1]),
n(e[2]),
n(e[3])
]
]
)
}
})
})
}
},
osCpu: function () {
return navigator.oscpu
},
languages: function () {
let e,
n = navigator,
t = [],
r = n.language || n.userLanguage || n.browserLanguage || n.systemLanguage
if ((void 0 !== r && t.push([r]), Array.isArray(n.languages)))
(X() &&
g([
!('MediaSettingsRange' in (e = window)),
'RTCEncodedAudioFrame' in e,
'' + e.Intl == '[object Intl]',
'' + e.Reflect == '[object Reflect]'
]) >= 3) ||
t.push(n.languages)
else if ('string' == typeof n.languages) {
const o = n.languages
o && t.push(o.split(','))
}
retu