@kalamba/sdk 0.23.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/plugins.js CHANGED
@@ -2,33 +2,33 @@
2
2
  * BSD 3-Clause License
3
3
  * Copyright (c) 2025, Kalamba Games Limited
4
4
  */
5
- var as = Object.defineProperty;
6
- var wt = (i) => {
5
+ var ns = Object.defineProperty;
6
+ var bt = (i) => {
7
7
  throw TypeError(i);
8
8
  };
9
- var ns = (i, t, e) => t in i ? as(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
10
- var b = (i, t, e) => ns(i, typeof t != "symbol" ? t + "" : t, e), mt = (i, t, e) => t.has(i) || wt("Cannot " + e);
11
- var k = (i, t, e) => (mt(i, t, "read from private field"), e ? e.call(i) : t.get(i)), M = (i, t, e) => t.has(i) ? wt("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(i) : t.set(i, e), v = (i, t, e, s) => (mt(i, t, "write to private field"), s ? s.call(i, e) : t.set(i, e), e);
12
- import { a as He } from "./errors-NnLrKjTz.js";
13
- import { d as bt, e as os } from "./encoders-BDr7fjKQ.js";
14
- import { r as rs, g as cs, v as ds } from "./v4-BfzDHJEo.js";
9
+ var os = (i, t, e) => t in i ? ns(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
10
+ var b = (i, t, e) => os(i, typeof t != "symbol" ? t + "" : t, e), ft = (i, t, e) => t.has(i) || bt("Cannot " + e);
11
+ var k = (i, t, e) => (ft(i, t, "read from private field"), e ? e.call(i) : t.get(i)), M = (i, t, e) => t.has(i) ? bt("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(i) : t.set(i, e), v = (i, t, e, s) => (ft(i, t, "write to private field"), s ? s.call(i, e) : t.set(i, e), e);
12
+ import { a as se } from "./errors-NnLrKjTz.js";
13
+ import { d as yt, e as rs } from "./encoders-BDr7fjKQ.js";
14
+ import { r as cs, g as ds, v as ls } from "./v4-85TkMtXc.js";
15
15
  function P(i, t) {
16
16
  return (e, ...s) => {
17
17
  console.log(`[%c${i}\x1B[m] %s`, t, e, ...s);
18
18
  };
19
19
  }
20
- function jt(i, t) {
20
+ function $t(i, t) {
21
21
  return Math.round(i * 100 / t);
22
22
  }
23
- class B {
23
+ class _ {
24
24
  constructor(t, e) {
25
25
  b(this, "config");
26
26
  b(this, "sdkConfig");
27
27
  this.config = t, this.sdkConfig = e;
28
28
  }
29
29
  on(t, e, s) {
30
- const a = function(c) {
31
- c.data.message !== `kalamba:wrapper-casino:${t}` && c.data.message !== `kalamba:wrapper:${t}` || e(c.data.payload);
30
+ const a = function(o) {
31
+ o.data.message !== `kalamba:wrapper-casino:${t}` && o.data.message !== `kalamba:wrapper:${t}` || e(o.data.payload);
32
32
  };
33
33
  window.addEventListener("message", a, s);
34
34
  }
@@ -39,10 +39,10 @@ class B {
39
39
  });
40
40
  }
41
41
  }
42
- const ls = P("BasicPlugin", "color:#000000;font-weight:bold;");
43
- class Xs extends B {
42
+ const us = P("BasicPlugin", "color:#000000;font-weight:bold;");
43
+ class Js extends _ {
44
44
  constructor(...t) {
45
- super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), ls("configured");
45
+ super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), us("configured");
46
46
  }
47
47
  registerToSdkEvents() {
48
48
  window.addEventListener("message", (t) => {
@@ -53,8 +53,8 @@ class Xs extends B {
53
53
  this.send("settings", { music: s == null ? void 0 : s.musicEnabled, sounds: s == null ? void 0 : s.soundEnabled });
54
54
  return;
55
55
  case "doBalanceUpdate":
56
- const { currency: a, coinValueInCents: r } = this.sdkConfig.api;
57
- s.currency === a && typeof s.balanceInCurrency == "number" ? this.send("balance", { balance: jt(s.balanceInCurrency, r) }) : (s.balanceInCoins, this.send("balance", { balance: s.balanceInCoins }));
56
+ const { currency: a, coinValueInCents: c } = this.sdkConfig.api;
57
+ s.currency === a && typeof s.balanceInCurrency == "number" ? this.send("balance", { balance: $t(s.balanceInCurrency, c) }) : (s.balanceInCoins, this.send("balance", { balance: s.balanceInCoins }));
58
58
  return;
59
59
  case "doGamePause":
60
60
  this.send("freeze");
@@ -89,8 +89,8 @@ class Xs extends B {
89
89
  });
90
90
  }
91
91
  }
92
- const E = P("▼ DebuggingPlugin IN ▼", "color:#444444;font-weight:bold;"), us = P("▲ DebuggingPlugin OUT ▲", "color:#444444;font-weight:bold;");
93
- class Js extends B {
92
+ const C = P("▼ DebuggingPlugin IN ▼", "color:#444444;font-weight:bold;"), hs = P("▲ DebuggingPlugin OUT ▲", "color:#444444;font-weight:bold;");
93
+ class Ys extends _ {
94
94
  constructor(...t) {
95
95
  super(...t), this.registerDebugToSdkEvents(), this.registerSdkToDebugEvents();
96
96
  }
@@ -111,20 +111,20 @@ class Js extends B {
111
111
  };
112
112
  }
113
113
  registerSdkToDebugEvents() {
114
- this.on("autoplay", (t) => E("autoplay", t)), this.on("balance", (t) => E("balance", t)), this.on("bet", (t) => E("bet", t)), this.on("cashier", (t) => E("cashier", t)), this.on("choice", (t) => E("choice", t)), this.on("close", (t) => E("close", t)), this.on("error", (t) => E("error", t)), this.on("loadEnd", (t) => E("loadEnd", t)), this.on("loadProgress", (t) => E("loadProgress", t)), this.on("loadStart", (t) => E("loadStart", t)), this.on("playCycleStart", (t) => E("playCycleStart", t)), this.on("playCycleEnd", (t) => E("playCycleEnd", t)), this.on("playEnd", (t) => E("playEnd", t)), this.on("playError", (t) => E("playError", t)), this.on("playReady", (t) => E("playReady", t)), this.on("playStart", (t) => E("playStart", t)), this.on("settings", (t) => E("settings", t));
114
+ this.on("autoplay", (t) => C("autoplay", t)), this.on("balance", (t) => C("balance", t)), this.on("bet", (t) => C("bet", t)), this.on("cashier", (t) => C("cashier", t)), this.on("choice", (t) => C("choice", t)), this.on("close", (t) => C("close", t)), this.on("error", (t) => C("error", t)), this.on("loadEnd", (t) => C("loadEnd", t)), this.on("loadProgress", (t) => C("loadProgress", t)), this.on("loadStart", (t) => C("loadStart", t)), this.on("playCycleStart", (t) => C("playCycleStart", t)), this.on("playCycleEnd", (t) => C("playCycleEnd", t)), this.on("playEnd", (t) => C("playEnd", t)), this.on("playError", (t) => C("playError", t)), this.on("playReady", (t) => C("playReady", t)), this.on("playStart", (t) => C("playStart", t)), this.on("settings", (t) => C("settings", t));
115
115
  }
116
116
  _send(...t) {
117
- us.apply(null, t), this.send.apply(this, t);
117
+ hs.apply(null, t), this.send.apply(this, t);
118
118
  }
119
119
  }
120
- const ft = P("GigPlugin", "color:#000000;font-weight:bold;");
121
- class Ys extends B {
120
+ const kt = P("GigPlugin", "color:#000000;font-weight:bold;");
121
+ class Zs extends _ {
122
122
  constructor(...t) {
123
- super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), ft("configured");
123
+ super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), kt("configured");
124
124
  }
125
125
  postMessage(t) {
126
126
  const e = { event: t };
127
- ft("postMessage", e), window.top.postMessage(e, "*");
127
+ kt("postMessage", e), window.top.postMessage(e, "*");
128
128
  }
129
129
  registerToSdkEvents() {
130
130
  window.addEventListener("message", (t) => {
@@ -166,10 +166,10 @@ class Ys extends B {
166
166
  });
167
167
  }
168
168
  }
169
- const hs = P("OryxPlugin", "color:#000000;font-weight:bold;");
170
- class Zs extends B {
169
+ const ps = P("OryxPlugin", "color:#000000;font-weight:bold;");
170
+ class ei extends _ {
171
171
  constructor(...t) {
172
- super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), hs("configured");
172
+ super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), ps("configured");
173
173
  }
174
174
  registerToSdkEvents() {
175
175
  window.addEventListener("message", (t) => {
@@ -221,54 +221,54 @@ class Zs extends B {
221
221
  });
222
222
  }
223
223
  }
224
- const qe = P("PariplayPlugin", "color:#000000;font-weight:bold;");
225
- function We(i) {
224
+ const je = P("PariplayPlugin", "color:#000000;font-weight:bold;");
225
+ function $e(i) {
226
226
  try {
227
227
  window.top.location = i;
228
228
  } catch {
229
229
  window.location = i;
230
230
  }
231
231
  }
232
- function je(i, t) {
232
+ function Ke(i, t) {
233
233
  return new Promise(function(s, a) {
234
- const r = new XMLHttpRequest();
235
- r.onload = function() {
236
- r.status >= 200 && r.status < 300 ? s(r.responseText) : a(r.responseText);
237
- }, r.open(i, t), r.send();
234
+ const c = new XMLHttpRequest();
235
+ c.onload = function() {
236
+ c.status >= 200 && c.status < 300 ? s(c.responseText) : a(c.responseText);
237
+ }, c.open(i, t), c.send();
238
238
  });
239
239
  }
240
- function $e() {
240
+ function Qe() {
241
241
  }
242
242
  function gs(i) {
243
243
  return i.filter(function(e) {
244
244
  return e.messageType.toUpperCase() === "DATA";
245
245
  });
246
246
  }
247
- function Ke(i) {
247
+ function Xe(i) {
248
248
  return i.filter(function(e) {
249
249
  return ["NOTIFICATION", "POPUP"].includes(e.messageType.toUpperCase());
250
250
  });
251
251
  }
252
- function $t(i) {
252
+ function Kt(i) {
253
253
  try {
254
254
  return JSON.parse(i.text);
255
255
  } catch {
256
256
  return {};
257
257
  }
258
258
  }
259
- function ps(i) {
260
- return i.map($t).filter(Boolean).find(function(e) {
259
+ function ws(i) {
260
+ return i.map(Kt).filter(Boolean).find(function(e) {
261
261
  return e.betId != null && e.winId != null;
262
262
  }) || {};
263
263
  }
264
- function ws(i) {
265
- return i.map($t).filter(Boolean).find(function(e) {
264
+ function ms(i) {
265
+ return i.map(Kt).filter(Boolean).find(function(e) {
266
266
  return e.TotalBet != null && e.TotalWin != null;
267
267
  }) || {};
268
268
  }
269
- class ei extends B {
269
+ class ti extends _ {
270
270
  constructor(...t) {
271
- super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), qe("configured");
271
+ super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), je("configured");
272
272
  }
273
273
  postMessage(t, e) {
274
274
  const s = {
@@ -276,26 +276,26 @@ class ei extends B {
276
276
  sender: this.sdkConfig.api.game,
277
277
  type: t
278
278
  };
279
- e != null && (s.data = e), qe("postMessage", s), window.parent.postMessage(s, "*");
279
+ e != null && (s.data = e), je("postMessage", s), window.parent.postMessage(s, "*");
280
280
  }
281
281
  coinsToCurrency(t) {
282
282
  return t * this.sdkConfig.api.coinValueInCents / 100;
283
283
  }
284
284
  handleContinueButton(t, e) {
285
- t.link && je("GET", t.link), e();
285
+ t.link && Ke("GET", t.link), e();
286
286
  }
287
287
  handleLinkButton(t, e) {
288
288
  switch (t.linkType.toUpperCase()) {
289
289
  case "AJAX":
290
- je("GET", t.link), e();
290
+ Ke("GET", t.link), e();
291
291
  return;
292
292
  case "AJAXRESPONSE":
293
- je("GET", t.link).then(() => {
293
+ Ke("GET", t.link).then(() => {
294
294
  e();
295
295
  });
296
296
  return;
297
297
  case "REDIRECT":
298
- We(t.link), e();
298
+ $e(t.link), e();
299
299
  return;
300
300
  }
301
301
  }
@@ -319,17 +319,17 @@ class ei extends B {
319
319
  }
320
320
  processInfoUiMessages(t) {
321
321
  return t.reduce((e, s) => e.then(() => new Promise((a) => {
322
- const r = Object.assign({}, s, {
323
- buttons: s.buttons.filter((c) => c.action.toUpperCase() === "CASHIER" ? !!this.sdkConfig.api.cashierUrl : !0).map((c) => Object.assign({}, c, {
322
+ const c = Object.assign({}, s, {
323
+ buttons: s.buttons.filter((o) => o.action.toUpperCase() === "CASHIER" ? !!this.sdkConfig.api.cashierUrl : !0).map((o) => Object.assign({}, o, {
324
324
  onRelease: () => {
325
- const g = s.messageType.toUpperCase() === "POPUP" ? $e : a, h = this.buttonActions[c.action.toUpperCase()];
326
- h ? h(c, g) : g();
325
+ const p = s.messageType.toUpperCase() === "POPUP" ? Qe : a, h = this.buttonActions[o.action.toUpperCase()];
326
+ h ? h(o, p) : p();
327
327
  }
328
328
  }))
329
329
  });
330
- qe("showMessage", r);
331
- }).catch($e)), Promise.resolve()).then(() => {
332
- }).catch($e);
330
+ je("showMessage", c);
331
+ }).catch(Qe)), Promise.resolve()).then(() => {
332
+ }).catch(Qe);
333
333
  }
334
334
  registerToSdkEvents() {
335
335
  window.addEventListener("message", (t) => {
@@ -361,12 +361,12 @@ class ei extends B {
361
361
  try {
362
362
  const a = JSON.parse(
363
363
  JSON.parse(atob(this.sdkConfig.api.integrationData.token.split(".")[1])).token
364
- ), r = JSON.parse(a.integrationSpecificAttributes.sessionData || "{}");
364
+ ), c = JSON.parse(a.integrationSpecificAttributes.sessionData || "{}");
365
365
  s = {
366
366
  ClientToken: a.integrationSpecificAttributes.clientToken,
367
367
  CurrencyCode: a.currency,
368
368
  PlayerTokenId: a.user,
369
- SessionData: r
369
+ SessionData: c
370
370
  };
371
371
  } catch {
372
372
  s = void 0;
@@ -376,7 +376,7 @@ class ei extends B {
376
376
  success: !0
377
377
  });
378
378
  try {
379
- const a = Ke(e.contract.uiMessages);
379
+ const a = Xe(e.contract.uiMessages);
380
380
  this.processInfoUiMessages(a);
381
381
  } catch {
382
382
  }
@@ -392,14 +392,14 @@ class ei extends B {
392
392
  } catch {
393
393
  window.history.back();
394
394
  }
395
- else this.sdkConfig.api.homeUrl === "(api)" ? this.postMessage("quit") : We(this.sdkConfig.api.homeUrl);
395
+ else this.sdkConfig.api.homeUrl === "(api)" ? this.postMessage("quit") : $e(this.sdkConfig.api.homeUrl);
396
396
  }), this.on("playEnd", (e) => {
397
397
  this.postMessage("roundEnded", {
398
398
  balanceAfter: this.coinsToCurrency(e.contract.balance.coins),
399
399
  win: this.coinsToCurrency(e.contract.win.round)
400
400
  });
401
401
  try {
402
- const s = Ke(e.contract.uiMessages);
402
+ const s = Xe(e.contract.uiMessages);
403
403
  this.processInfoUiMessages(s);
404
404
  } catch {
405
405
  }
@@ -418,14 +418,14 @@ class ei extends B {
418
418
  e.contract.balance.coins + e.contract.bet.lastPaid.base * e.contract.bet.lastPaid.multiplier
419
419
  )
420
420
  });
421
- const s = ["BaseGame", "PaidSpin"].includes(e.contract.stateType.thisRound), a = gs(e.contract.uiMessages), r = Ke(e.contract.uiMessages), c = ps(a), g = ws(a);
421
+ const s = ["BaseGame", "PaidSpin"].includes(e.contract.stateType.thisRound), a = gs(e.contract.uiMessages), c = Xe(e.contract.uiMessages), o = ws(a), p = ms(a);
422
422
  this.postMessage("ticketReceived", {
423
423
  Balance: this.coinsToCurrency(e.contract.balance.coins),
424
424
  BetAmount: s ? this.coinsToCurrency(e.contract.bet.lastPaid.base * e.contract.bet.lastPaid.multiplier) : 0,
425
- CreditTransactionId: c.betId,
426
- DebitTransactionId: c.winId,
427
- Message: r,
428
- SessionData: g,
425
+ CreditTransactionId: o.betId,
426
+ DebitTransactionId: o.winId,
427
+ Message: c,
428
+ SessionData: p,
429
429
  Status: {
430
430
  ErrCode: 0
431
431
  },
@@ -440,18 +440,18 @@ class ei extends B {
440
440
  }), this.on("loadStart", () => {
441
441
  this.postMessage("onAppFrameReady");
442
442
  }), this.on("cashier", () => {
443
- this.sdkConfig.api.cashierUrl && (this.sdkConfig.api.cashierUrl === "(api)" ? this.postMessage("cashier") : We(this.sdkConfig.api.cashierUrl));
443
+ this.sdkConfig.api.cashierUrl && (this.sdkConfig.api.cashierUrl === "(api)" ? this.postMessage("cashier") : $e(this.sdkConfig.api.cashierUrl));
444
444
  });
445
445
  }
446
446
  }
447
- const we = P("RelaxFEIMPlugin", "color:#000000;font-weight:bold;");
448
- class ti extends B {
447
+ const be = P("RelaxFEIMPlugin", "color:#000000;font-weight:bold;");
448
+ class si extends _ {
449
449
  constructor(...e) {
450
450
  super(...e);
451
451
  b(this, "VERSION", "1.17.0");
452
452
  const s = document.createElement("script");
453
453
  s.src = `https://d3nsdzdtjbr5ml.cloudfront.net/casino/relaxlibs/feim/${this.VERSION}/rlxfeim.min.js`, s.onload = () => {
454
- we("loaded"), window.FEIM.configure({
454
+ be("loaded"), window.FEIM.configure({
455
455
  p2pConfig: {
456
456
  currency: this.sdkConfig.api.currency,
457
457
  launchParams: {
@@ -459,11 +459,11 @@ class ti extends B {
459
459
  homeurl: "homeUrl"
460
460
  }
461
461
  }
462
- }), we("configured"), this.registerToSdkEvents(), this.registerFromSdkEvents();
462
+ }), be("configured"), this.registerToSdkEvents(), this.registerFromSdkEvents();
463
463
  }, document.body.appendChild(s);
464
464
  }
465
465
  registerToSdkEvents() {
466
- window.FEIM.on.errorMessageDismissed(() => this.send("unfreeze")), window.FEIM.on.errorMessageDisplayed(() => this.send("freeze")), window.FEIM.on.exitingGame(() => we("!!! NOT IMPLEMENTED: exitingGame !!!")), window.FEIM.on.freeze(() => this.send("freeze")), window.FEIM.on.initialized(() => we("!!! NOT IMPLEMENTED: initialized !!!")), window.FEIM.on.pauseAutoPlay(() => this.send("suspend")), window.FEIM.on.refreshBalance(() => we("!!! NOT IMPLEMENTED: refreshBalance !!!")), window.FEIM.on.toggleGameHelp(() => {
466
+ window.FEIM.on.errorMessageDismissed(() => this.send("unfreeze")), window.FEIM.on.errorMessageDisplayed(() => this.send("freeze")), window.FEIM.on.exitingGame(() => be("!!! NOT IMPLEMENTED: exitingGame !!!")), window.FEIM.on.freeze(() => this.send("freeze")), window.FEIM.on.initialized(() => be("!!! NOT IMPLEMENTED: initialized !!!")), window.FEIM.on.pauseAutoPlay(() => this.send("suspend")), window.FEIM.on.refreshBalance(() => be("!!! NOT IMPLEMENTED: refreshBalance !!!")), window.FEIM.on.toggleGameHelp(() => {
467
467
  this.send("help");
468
468
  }), window.FEIM.on.togglePaytable(() => {
469
469
  this.send("paytable");
@@ -520,20 +520,20 @@ class ti extends B {
520
520
  });
521
521
  }
522
522
  }
523
- const Qe = P("TukoPlugin", "color:#000000;font-weight:bold;");
524
- class si extends B {
523
+ const Je = P("TukoPlugin", "color:#000000;font-weight:bold;");
524
+ class ii extends _ {
525
525
  constructor(...e) {
526
526
  super(...e);
527
527
  b(this, "PING_INTERVAL", 1e4);
528
528
  const a = new URLSearchParams(window.location.search).get("pingCallbackUrl");
529
529
  a && window.setInterval(() => {
530
530
  this.ping(a);
531
- }, this.PING_INTERVAL), this.registerToSdkEvents(), this.registerFromSdkEvents(), Qe("configured");
531
+ }, this.PING_INTERVAL), this.registerToSdkEvents(), this.registerFromSdkEvents(), Je("configured");
532
532
  }
533
533
  ping(e) {
534
534
  const s = new XMLHttpRequest();
535
535
  s.onreadystatechange = function() {
536
- s.readyState === XMLHttpRequest.DONE && (s.status === 0 || s.status >= 200 && s.status < 400 ? Qe("ping ok", s) : Qe("ping error", s));
536
+ s.readyState === XMLHttpRequest.DONE && (s.status === 0 || s.status >= 200 && s.status < 400 ? Je("ping ok", s) : Je("ping error", s));
537
537
  }, s.open("GET", e), s.send();
538
538
  }
539
539
  registerToSdkEvents() {
@@ -545,8 +545,8 @@ class si extends B {
545
545
  this.send("settings", { music: a == null ? void 0 : a.musicEnabled, sounds: a == null ? void 0 : a.soundEnabled });
546
546
  return;
547
547
  case "doBalanceUpdate":
548
- const { currency: r, coinValueInCents: c } = this.sdkConfig.api;
549
- a.currency === r && typeof a.balanceInCurrency == "number" ? this.send("balance", { balance: jt(a.balanceInCurrency, c) }) : (a.balanceInCoins, this.send("balance", { balance: a.balanceInCoins }));
548
+ const { currency: c, coinValueInCents: o } = this.sdkConfig.api;
549
+ a.currency === c && typeof a.balanceInCurrency == "number" ? this.send("balance", { balance: $t(a.balanceInCurrency, o) }) : (a.balanceInCoins, this.send("balance", { balance: a.balanceInCoins }));
550
550
  return;
551
551
  case "doGamePause":
552
552
  this.send("freeze");
@@ -581,14 +581,14 @@ class si extends B {
581
581
  });
582
582
  }
583
583
  }
584
- const yt = P("QuantaPlugin", "color:#000000;font-weight:bold;");
585
- class ii extends B {
584
+ const vt = P("QuantaPlugin", "color:#000000;font-weight:bold;");
585
+ class ai extends _ {
586
586
  constructor(...t) {
587
- super(...t), this.registerFromSdkEvents(), yt("configured");
587
+ super(...t), this.registerFromSdkEvents(), vt("configured");
588
588
  }
589
589
  postMessage(t) {
590
590
  const e = { event: t };
591
- yt("postMessage", e), window.parent.postMessage(e, "*");
591
+ vt("postMessage", e), window.parent.postMessage(e, "*");
592
592
  }
593
593
  registerFromSdkEvents() {
594
594
  this.on("close", () => {
@@ -604,14 +604,14 @@ class ii extends B {
604
604
  });
605
605
  }
606
606
  }
607
- const kt = P("SoftSwissPlugin", "color:#000000;font-weight:bold;");
608
- class ai extends B {
607
+ const Et = P("SoftSwissPlugin", "color:#000000;font-weight:bold;");
608
+ class ni extends _ {
609
609
  constructor(...t) {
610
- super(...t), this.registerFromSdkEvents(), kt("configured");
610
+ super(...t), this.registerFromSdkEvents(), Et("configured");
611
611
  }
612
612
  postMessage(t, e) {
613
613
  const s = { event: t, payload: e };
614
- kt("postMessage", s), window.top.postMessage(s, "*");
614
+ Et("postMessage", s), window.top.postMessage(s, "*");
615
615
  }
616
616
  registerFromSdkEvents() {
617
617
  this.on("loadStart", () => {
@@ -633,14 +633,14 @@ class ai extends B {
633
633
  });
634
634
  }
635
635
  }
636
- const vt = P("EveryMatrixPlugin", "color:#000000;font-weight:bold;");
637
- class ni extends B {
636
+ const Ct = P("EveryMatrixPlugin", "color:#000000;font-weight:bold;");
637
+ class oi extends _ {
638
638
  constructor(...t) {
639
- super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), vt("configured");
639
+ super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), Ct("configured");
640
640
  }
641
641
  postMessage(t, e) {
642
642
  const s = { name: t, sender: "game", data: e };
643
- vt("postMessage", s), window.top.postMessage(s, "*");
643
+ Ct("postMessage", s), window.top.postMessage(s, "*");
644
644
  }
645
645
  registerToSdkEvents() {
646
646
  window.addEventListener("message", (t) => {
@@ -692,92 +692,93 @@ class ni extends B {
692
692
  });
693
693
  }
694
694
  }
695
- var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function", j = "undefined", ue = "object", dt = "string", S = "browser", F = "cpu", R = "device", x = "engine", O = "os", te = "result", l = "name", n = "type", d = "vendor", u = "version", T = "architecture", Se = "major", o = "model", Ce = "console", w = "mobile", f = "tablet", y = "smarttv", U = "wearable", Xe = "xr", Me = "embedded", me = "inapp", ht = "brands", Y = "formFactors", gt = "fullVersionList", se = "platform", pt = "platformVersion", Ve = "bitness", $ = "sec-ch-ua", bs = $ + "-full-version-list", fs = $ + "-arch", ys = $ + "-" + Ve, ks = $ + "-form-factors", vs = $ + "-" + w, Es = $ + "-" + o, Kt = $ + "-" + se, Cs = Kt + "-version", Qt = [ht, gt, w, o, se, pt, T, Y, Ve], xe = "Amazon", Z = "Apple", Mt = "ASUS", St = "BlackBerry", J = "Google", Tt = "Huawei", It = "Lenovo", At = "Honor", Ue = "LG", Je = "Microsoft", Ye = "Motorola", Ze = "Nvidia", Pt = "OnePlus", et = "OPPO", be = "Samsung", Ot = "Sharp", fe = "Sony", tt = "Xiaomi", st = "Zebra", xt = "Chrome", Ut = "Chromium", V = "Chromecast", Ms = "Edge", ye = "Firefox", ke = "Opera", it = "Facebook", Rt = "Sogou", ee = "Mobile ", ve = " Browser", lt = "Windows", Ss = typeof window !== j, I = Ss && window.navigator ? window.navigator : void 0, z = I && I.userAgentData ? I.userAgentData : void 0, Ts = function(i, t) {
695
+ var bs = "2.0.5", lt = 500, Mt = "user-agent", he = "", St = "?", Fe = "function", W = "undefined", pe = "object", ut = "string", S = "browser", D = "cpu", R = "device", O = "engine", x = "os", ie = "result", l = "name", n = "type", d = "vendor", u = "version", I = "architecture", Ie = "major", r = "model", Me = "console", m = "mobile", f = "tablet", y = "smarttv", U = "wearable", Oe = "xr", Se = "embedded", Z = "inapp", gt = "brands", J = "formFactors", wt = "fullVersionList", ae = "platform", mt = "platformVersion", qe = "bitness", $ = "sec-ch-ua", fs = $ + "-full-version-list", ys = $ + "-arch", ks = $ + "-" + qe, vs = $ + "-form-factors", Es = $ + "-" + m, Cs = $ + "-" + r, Qt = $ + "-" + ae, Ms = Qt + "-version", Xt = [gt, wt, m, r, ae, mt, I, J, qe], Ue = "Amazon", ee = "Apple", It = "ASUS", Tt = "BlackBerry", X = "Google", At = "Huawei", Ye = "Lenovo", Pt = "Honor", Le = "LG", Ze = "Microsoft", et = "Motorola", tt = "Nvidia", xt = "OnePlus", st = "OPPO", fe = "Samsung", Ot = "Sharp", ye = "Sony", it = "Xiaomi", at = "Zebra", Ut = "Chrome", Lt = "Chromium", V = "Chromecast", _e = "Edge", ke = "Firefox", ve = "Opera", nt = "Facebook", Rt = "Sogou", te = "Mobile ", Ee = " Browser", ht = "Windows", Ss = typeof window !== W, T = Ss && window.navigator ? window.navigator : void 0, z = T && T.userAgentData ? T.userAgentData : void 0, Is = function(i, t) {
696
696
  var e = {}, s = t;
697
- if (!_e(t)) {
697
+ if (!De(t)) {
698
698
  s = {};
699
699
  for (var a in t)
700
- for (var r in t[a])
701
- s[r] = t[a][r].concat(s[r] ? s[r] : []);
700
+ for (var c in t[a])
701
+ s[c] = t[a][c].concat(s[c] ? s[c] : []);
702
702
  }
703
- for (var c in i)
704
- e[c] = s[c] && s[c].length % 2 === 0 ? s[c].concat(i[c]) : i[c];
703
+ for (var o in i)
704
+ e[o] = s[o] && s[o].length % 2 === 0 ? s[o].concat(i[o]) : i[o];
705
705
  return e;
706
- }, ze = function(i) {
706
+ }, We = function(i) {
707
707
  for (var t = {}, e = 0; e < i.length; e++)
708
708
  t[i[e].toUpperCase()] = i[e];
709
709
  return t;
710
- }, ut = function(i, t) {
711
- if (typeof i === ue && i.length > 0) {
710
+ }, pt = function(i, t) {
711
+ if (typeof i === pe && i.length > 0) {
712
712
  for (var e in i)
713
- if (N(i[e]) == N(t)) return !0;
713
+ if (j(t) == j(i[e])) return !0;
714
714
  return !1;
715
715
  }
716
- return ge(i) ? N(t).indexOf(N(i)) !== -1 : !1;
717
- }, _e = function(i, t) {
716
+ return we(i) ? j(t) == j(i) : !1;
717
+ }, De = function(i, t) {
718
718
  for (var e in i)
719
- return /^(browser|cpu|device|engine|os)$/.test(e) || (t ? _e(i[e]) : !1);
720
- }, ge = function(i) {
721
- return typeof i === dt;
722
- }, at = function(i) {
719
+ return /^(browser|cpu|device|engine|os)$/.test(e) || (t ? De(i[e]) : !1);
720
+ }, we = function(i) {
721
+ return typeof i === ut;
722
+ }, ot = function(i) {
723
723
  if (i) {
724
- for (var t = [], e = he(/\\?\"/g, i).split(","), s = 0; s < e.length; s++)
724
+ for (var t = [], e = ge(/\\?\"/g, i).split(","), s = 0; s < e.length; s++)
725
725
  if (e[s].indexOf(";") > -1) {
726
- var a = Te(e[s]).split(";v=");
726
+ var a = Ne(e[s]).split(";v=");
727
727
  t[s] = { brand: a[0], version: a[1] };
728
728
  } else
729
- t[s] = Te(e[s]);
729
+ t[s] = Ne(e[s]);
730
730
  return t;
731
731
  }
732
+ }, j = function(i) {
733
+ return we(i) ? i.toLowerCase() : i;
734
+ }, rt = function(i) {
735
+ return we(i) ? ge(/[^\d\.]/g, i).split(".")[0] : void 0;
732
736
  }, N = function(i) {
733
- return ge(i) ? i.toLowerCase() : i;
734
- }, nt = function(i) {
735
- return ge(i) ? he(/[^\d\.]/g, i).split(".")[0] : void 0;
736
- }, D = function(i) {
737
- for (var t in i) {
738
- var e = i[t];
739
- typeof e == ue && e.length == 2 ? this[e[0]] = e[1] : this[e] = void 0;
740
- }
737
+ for (var t in i)
738
+ if (i.hasOwnProperty(t)) {
739
+ var e = i[t];
740
+ typeof e == pe && e.length == 2 ? this[e[0]] = e[1] : this[e] = void 0;
741
+ }
741
742
  return this;
742
- }, he = function(i, t) {
743
- return ge(t) ? t.replace(i, le) : t;
744
- }, Ee = function(i) {
745
- return he(/\\?\"/g, i);
746
- }, Te = function(i, t) {
747
- if (ge(i))
748
- return i = he(/^\s\s*/, i), typeof t === j ? i : i.substring(0, ct);
749
- }, ot = function(i, t) {
743
+ }, ge = function(i, t) {
744
+ return we(t) ? t.replace(i, he) : t;
745
+ }, Ce = function(i) {
746
+ return ge(/\\?\"/g, i);
747
+ }, Ne = function(i, t) {
748
+ if (we(i))
749
+ return i = ge(/^\s\s*/, i), typeof t === W ? i : i.substring(0, lt);
750
+ }, ct = function(i, t) {
750
751
  if (!(!i || !t))
751
- for (var e = 0, s, a, r, c, g, h; e < t.length && !g; ) {
752
- var p = t[e], m = t[e + 1];
753
- for (s = a = 0; s < p.length && !g && p[s]; )
754
- if (g = p[s++].exec(i), g)
755
- for (r = 0; r < m.length; r++)
756
- h = g[++a], c = m[r], typeof c === ue && c.length > 0 ? c.length === 2 ? typeof c[1] == Be ? this[c[0]] = c[1].call(this, h) : this[c[0]] = c[1] : c.length === 3 ? typeof c[1] === Be && !(c[1].exec && c[1].test) ? this[c[0]] = h ? c[1].call(this, h, c[2]) : void 0 : this[c[0]] = h ? h.replace(c[1], c[2]) : void 0 : c.length === 4 && (this[c[0]] = h ? c[3].call(this, h.replace(c[1], c[2])) : void 0) : this[c] = h || void 0;
752
+ for (var e = 0, s, a, c, o, p, h; e < t.length && !p; ) {
753
+ var w = t[e], g = t[e + 1];
754
+ for (s = a = 0; s < w.length && !p && w[s]; )
755
+ if (p = w[s++].exec(i), p)
756
+ for (c = 0; c < g.length; c++)
757
+ h = p[++a], o = g[c], typeof o === pe && o.length > 0 ? o.length === 2 ? typeof o[1] == Fe ? this[o[0]] = o[1].call(this, h) : this[o[0]] = o[1] : o.length >= 3 && (typeof o[1] === Fe && !(o[1].exec && o[1].test) ? o.length > 3 ? this[o[0]] = h ? o[1].apply(this, o.slice(2)) : void 0 : this[o[0]] = h ? o[1].call(this, h, o[2]) : void 0 : o.length == 3 ? this[o[0]] = h ? h.replace(o[1], o[2]) : void 0 : o.length == 4 ? this[o[0]] = h ? o[3].call(this, h.replace(o[1], o[2])) : void 0 : o.length > 4 && (this[o[0]] = h ? o[3].apply(this, [h.replace(o[1], o[2])].concat(o.slice(4))) : void 0)) : this[o] = h || void 0;
757
758
  e += 2;
758
759
  }
759
- }, q = function(i, t) {
760
+ }, L = function(i, t) {
760
761
  for (var e in t)
761
- if (typeof t[e] === ue && t[e].length > 0) {
762
+ if (typeof t[e] === pe && t[e].length > 0) {
762
763
  for (var s = 0; s < t[e].length; s++)
763
- if (ut(t[e][s], i))
764
- return e === Ct ? void 0 : e;
765
- } else if (ut(t[e], i))
766
- return e === Ct ? void 0 : e;
764
+ if (pt(t[e][s], i))
765
+ return e === St ? void 0 : e;
766
+ } else if (pt(t[e], i))
767
+ return e === St ? void 0 : e;
767
768
  return t.hasOwnProperty("*") ? t["*"] : i;
768
- }, Lt = {
769
- ME: "4.90",
770
- "NT 3.11": "NT3.51",
771
- "NT 4.0": "NT4.0",
772
- 2e3: "NT 5.0",
773
- XP: ["NT 5.1", "NT 5.2"],
774
- Vista: "NT 6.0",
775
- 7: "NT 6.1",
776
- 8: "NT 6.2",
777
- "8.1": "NT 6.3",
778
- 10: ["NT 6.4", "NT 10.0"],
779
- RT: "ARM"
780
769
  }, Bt = {
770
+ ME: "4.90",
771
+ "NT 3.51": "3.51",
772
+ "NT 4.0": "4.0",
773
+ 2e3: ["5.0", "5.01"],
774
+ XP: ["5.1", "5.2"],
775
+ Vista: "6.0",
776
+ 7: "6.1",
777
+ 8: "6.2",
778
+ "8.1": "6.3",
779
+ 10: ["6.4", "10.0"],
780
+ NT: ""
781
+ }, _t = {
781
782
  embedded: "Automotive",
782
783
  mobile: "Mobile",
783
784
  tablet: ["Tablet", "EInk"],
@@ -786,18 +787,32 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
786
787
  xr: ["VR", "XR"],
787
788
  "?": ["Desktop", "Unknown"],
788
789
  "*": void 0
789
- }, _t = {
790
+ }, Ts = {
791
+ Chrome: "Google Chrome",
792
+ Edge: "Microsoft Edge",
793
+ "Edge WebView2": "Microsoft Edge WebView2",
794
+ "Chrome WebView": "Android WebView",
795
+ "Chrome Headless": "HeadlessChrome",
796
+ "Huawei Browser": "HuaweiBrowser",
797
+ "MIUI Browser": "Miui Browser",
798
+ "Opera Mobi": "OperaMobile",
799
+ Yandex: "YaBrowser"
800
+ }, Ft = {
790
801
  browser: [
791
802
  [
792
803
  // Most common regardless engine
793
804
  /\b(?:crmo|crios)\/([\w\.]+)/i
794
805
  // Chrome for Android/iOS
795
806
  ],
796
- [u, [l, ee + "Chrome"]],
807
+ [u, [l, te + "Chrome"]],
797
808
  [
798
- /edg(?:e|ios|a)?\/([\w\.]+)/i
809
+ /webview.+edge\/([\w\.]+)/i
799
810
  // Microsoft Edge
800
811
  ],
812
+ [u, [l, _e + " WebView"]],
813
+ [
814
+ /edg(?:e|ios|a)?\/([\w\.]+)/i
815
+ ],
801
816
  [u, [l, "Edge"]],
802
817
  [
803
818
  // Presto based
@@ -813,17 +828,17 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
813
828
  /opios[\/ ]+([\w\.]+)/i
814
829
  // Opera mini on iphone >= 8.0
815
830
  ],
816
- [u, [l, ke + " Mini"]],
831
+ [u, [l, ve + " Mini"]],
817
832
  [
818
833
  /\bop(?:rg)?x\/([\w\.]+)/i
819
834
  // Opera GX
820
835
  ],
821
- [u, [l, ke + " GX"]],
836
+ [u, [l, ve + " GX"]],
822
837
  [
823
838
  /\bopr\/([\w\.]+)/i
824
839
  // Opera Webkit
825
840
  ],
826
- [u, [l, ke]],
841
+ [u, [l, ve]],
827
842
  [
828
843
  // Mixed
829
844
  /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i
@@ -896,22 +911,22 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
896
911
  /slbrowser\/([\w\.]+)/i
897
912
  // Smart Lenovo Browser
898
913
  ],
899
- [u, [l, "Smart " + It + ve]],
914
+ [u, [l, "Smart " + Ye + Ee]],
900
915
  [
901
916
  /(avast|avg)\/([\w\.]+)/i
902
917
  // Avast/AVG Secure Browser
903
918
  ],
904
- [[l, /(.+)/, "$1 Secure" + ve], u],
919
+ [[l, /(.+)/, "$1 Secure" + Ee], u],
905
920
  [
906
921
  /\bfocus\/([\w\.]+)/i
907
922
  // Firefox Focus
908
923
  ],
909
- [u, [l, ye + " Focus"]],
924
+ [u, [l, ke + " Focus"]],
910
925
  [
911
926
  /\bopt\/([\w\.]+)/i
912
927
  // Opera Touch
913
928
  ],
914
- [u, [l, ke + " Touch"]],
929
+ [u, [l, ve + " Touch"]],
915
930
  [
916
931
  /coc_coc\w+\/([\w\.]+)/i
917
932
  // Coc Coc Browser
@@ -926,17 +941,17 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
926
941
  /coast\/([\w\.]+)/i
927
942
  // Opera Coast
928
943
  ],
929
- [u, [l, ke + " Coast"]],
944
+ [u, [l, ve + " Coast"]],
930
945
  [
931
946
  /miuibrowser\/([\w\.]+)/i
932
947
  // MIUI Browser
933
948
  ],
934
- [u, [l, "MIUI" + ve]],
949
+ [u, [l, "MIUI" + Ee]],
935
950
  [
936
951
  /fxios\/([\w\.-]+)/i
937
952
  // Firefox for iOS
938
953
  ],
939
- [u, [l, ee + ye]],
954
+ [u, [l, te + ke]],
940
955
  [
941
956
  /\bqihoobrowser\/?([\w\.]*)/i
942
957
  // 360
@@ -950,13 +965,13 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
950
965
  [
951
966
  /(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i
952
967
  ],
953
- [[l, /(.+)/, "$1" + ve], u],
968
+ [[l, /(.+)/, "$1" + Ee], u],
954
969
  [
955
970
  // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
956
971
  /samsungbrowser\/([\w\.]+)/i
957
972
  // Samsung Internet
958
973
  ],
959
- [u, [l, be + " Internet"]],
974
+ [u, [l, fe + " Internet"]],
960
975
  [
961
976
  /metasr[\/ ]?([\d\.]+)/i
962
977
  // Sogou Explorer
@@ -993,10 +1008,8 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
993
1008
  /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
994
1009
  // Facebook App for iOS & Android
995
1010
  ],
996
- [[l, it], u, [n, me]],
1011
+ [[l, nt], u, [n, Z]],
997
1012
  [
998
- /(Klarna)\/([\w\.]+)/i,
999
- // Klarna Shopping Browser for iOS & Android
1000
1013
  /(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
1001
1014
  // Kakao App
1002
1015
  /(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
@@ -1011,25 +1024,30 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1011
1024
  // Alipay
1012
1025
  /(twitter)(?:and| f.+e\/([\w\.]+))/i,
1013
1026
  // Twitter
1014
- /(instagram|snapchat)[\/ ]([-\w\.]+)/i
1015
- // Instagram/Snapchat
1027
+ /(instagram|snapchat|klarna)[\/ ]([-\w\.]+)/i
1028
+ // Instagram/Snapchat/Klarna
1016
1029
  ],
1017
- [l, u, [n, me]],
1030
+ [l, u, [n, Z]],
1018
1031
  [
1019
1032
  /\bgsa\/([\w\.]+) .*safari\//i
1020
1033
  // Google Search Appliance on iOS
1021
1034
  ],
1022
- [u, [l, "GSA"], [n, me]],
1035
+ [u, [l, "GSA"], [n, Z]],
1023
1036
  [
1024
1037
  /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i
1025
1038
  // TikTok
1026
1039
  ],
1027
- [u, [l, "TikTok"], [n, me]],
1040
+ [u, [l, "TikTok"], [n, Z]],
1028
1041
  [
1029
1042
  /\[(linkedin)app\]/i
1030
1043
  // LinkedIn App for iOS & Android
1031
1044
  ],
1032
- [l, [n, me]],
1045
+ [l, [n, Z]],
1046
+ [
1047
+ /(zalo(?:app)?)[\/\sa-z]*([\w\.-]+)/i
1048
+ // Zalo
1049
+ ],
1050
+ [[l, /(.+)/, "Zalo"], u, [n, Z]],
1033
1051
  [
1034
1052
  /(chromium)[\/ ]([-\w\.]+)/i
1035
1053
  // Chromium
@@ -1039,22 +1057,27 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1039
1057
  /headlesschrome(?:\/([\w\.]+)| )/i
1040
1058
  // Chrome Headless
1041
1059
  ],
1042
- [u, [l, xt + " Headless"]],
1060
+ [u, [l, Ut + " Headless"]],
1061
+ [
1062
+ /wv\).+chrome\/([\w\.]+).+edgw\//i
1063
+ // Edge WebView2
1064
+ ],
1065
+ [u, [l, _e + " WebView2"]],
1043
1066
  [
1044
1067
  / wv\).+(chrome)\/([\w\.]+)/i
1045
1068
  // Chrome WebView
1046
1069
  ],
1047
- [[l, xt + " WebView"], u],
1070
+ [[l, Ut + " WebView"], u],
1048
1071
  [
1049
1072
  /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
1050
1073
  // Android Browser
1051
1074
  ],
1052
- [u, [l, "Android" + ve]],
1075
+ [u, [l, "Android" + Ee]],
1053
1076
  [
1054
1077
  /chrome\/([\w\.]+) mobile/i
1055
1078
  // Chrome Mobile
1056
1079
  ],
1057
- [u, [l, ee + "Chrome"]],
1080
+ [u, [l, te + "Chrome"]],
1058
1081
  [
1059
1082
  /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
1060
1083
  // Chrome/OmniWeb/Arora/Tizen/Nokia
@@ -1064,11 +1087,11 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1064
1087
  /version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i
1065
1088
  // Safari Mobile
1066
1089
  ],
1067
- [u, [l, ee + "Safari"]],
1090
+ [u, [l, te + "Safari"]],
1068
1091
  [
1069
1092
  /iphone .*mobile(?:\/\w+ | ?)safari/i
1070
1093
  ],
1071
- [[l, ee + "Safari"]],
1094
+ [[l, te + "Safari"]],
1072
1095
  [
1073
1096
  /version\/([\w\.\,]+) .*(safari)/i
1074
1097
  // Safari
@@ -1088,7 +1111,7 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1088
1111
  /(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i
1089
1112
  // Firefox Mobile
1090
1113
  ],
1091
- [[l, ee + ye], u],
1114
+ [[l, te + ke], u],
1092
1115
  [
1093
1116
  /(navigator|netscape\d?)\/([-\w\.]+)/i
1094
1117
  // Netscape
@@ -1103,7 +1126,7 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1103
1126
  /mobile vr; rv:([\w\.]+)\).+firefox/i
1104
1127
  // Firefox Reality
1105
1128
  ],
1106
- [u, [l, ye + " Reality"]],
1129
+ [u, [l, ke + " Reality"]],
1107
1130
  [
1108
1131
  /ekiohf.+(flow)\/([\w\.]+)/i,
1109
1132
  // Flow
@@ -1128,51 +1151,54 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1128
1151
  /(cobalt)\/([\w\.]+)/i
1129
1152
  // Cobalt
1130
1153
  ],
1131
- [l, [u, /[^\d\.]+./, le]]
1154
+ [l, [u, /[^\d\.]+./, he]]
1132
1155
  ],
1133
1156
  cpu: [
1134
1157
  [
1135
1158
  /\b((amd|x|x86[-_]?|wow|win)64)\b/i
1136
1159
  // AMD64 (x64)
1137
1160
  ],
1138
- [[T, "amd64"]],
1161
+ [[I, "amd64"]],
1139
1162
  [
1140
1163
  /(ia32(?=;))/i,
1141
1164
  // IA32 (quicktime)
1142
1165
  /\b((i[346]|x)86)(pc)?\b/i
1143
1166
  // IA32 (x86)
1144
1167
  ],
1145
- [[T, "ia32"]],
1168
+ [[I, "ia32"]],
1146
1169
  [
1147
1170
  /\b(aarch64|arm(v?[89]e?l?|_?64))\b/i
1148
1171
  // ARM64
1149
1172
  ],
1150
- [[T, "arm64"]],
1173
+ [[I, "arm64"]],
1151
1174
  [
1152
1175
  /\b(arm(v[67])?ht?n?[fl]p?)\b/i
1153
1176
  // ARMHF
1154
1177
  ],
1155
- [[T, "armhf"]],
1178
+ [[I, "armhf"]],
1156
1179
  [
1157
1180
  // PocketPC mistakenly identified as PowerPC
1158
1181
  /( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i
1159
1182
  ],
1160
- [[T, "arm"]],
1161
- [
1162
- /((ppc|powerpc)(64)?)( mac|;|\))/i
1163
- // PowerPC
1164
- ],
1165
- [[T, /ower/, le, N]],
1183
+ [[I, "arm"]],
1166
1184
  [
1167
1185
  / sun4\w[;\)]/i
1168
1186
  // SPARC
1169
1187
  ],
1170
- [[T, "sparc"]],
1188
+ [[I, "sparc"]],
1171
1189
  [
1172
- /\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i
1173
1190
  // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
1191
+ /\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i,
1192
+ /((ppc|powerpc)(64)?)( mac|;|\))/i,
1193
+ // PowerPC
1194
+ /(?:osf1|[freopnt]{3,4}bsd) (alpha)/i
1195
+ // Alpha
1174
1196
  ],
1175
- [[T, N]]
1197
+ [[I, /ower/, he, j]],
1198
+ [
1199
+ /winnt.+\[axp/i
1200
+ ],
1201
+ [[I, "alpha"]]
1176
1202
  ],
1177
1203
  device: [
1178
1204
  [
@@ -1182,61 +1208,61 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1182
1208
  // Samsung
1183
1209
  /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
1184
1210
  ],
1185
- [o, [d, be], [n, f]],
1211
+ [r, [d, fe], [n, f]],
1186
1212
  [
1187
1213
  /\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
1188
- /samsung[- ]((?!sm-[lr])[-\w]+)/i,
1214
+ /samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,
1189
1215
  /sec-(sgh\w+)/i
1190
1216
  ],
1191
- [o, [d, be], [n, w]],
1217
+ [r, [d, fe], [n, m]],
1192
1218
  [
1193
1219
  // Apple
1194
1220
  /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i
1195
1221
  // iPod/iPhone
1196
1222
  ],
1197
- [o, [d, Z], [n, w]],
1223
+ [r, [d, ee], [n, m]],
1198
1224
  [
1199
1225
  /\((ipad);[-\w\),; ]+apple/i,
1200
1226
  // iPad
1201
1227
  /applecoremedia\/[\w\.]+ \((ipad)/i,
1202
1228
  /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
1203
1229
  ],
1204
- [o, [d, Z], [n, f]],
1230
+ [r, [d, ee], [n, f]],
1205
1231
  [
1206
1232
  /(macintosh);/i
1207
1233
  ],
1208
- [o, [d, Z]],
1234
+ [r, [d, ee]],
1209
1235
  [
1210
1236
  // Sharp
1211
1237
  /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
1212
1238
  ],
1213
- [o, [d, Ot], [n, w]],
1239
+ [r, [d, Ot], [n, m]],
1214
1240
  [
1215
1241
  // Honor
1216
1242
  /\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i
1217
1243
  ],
1218
- [o, [d, At], [n, f]],
1244
+ [r, [d, Pt], [n, f]],
1219
1245
  [
1220
1246
  /honor([-\w ]+)[;\)]/i
1221
1247
  ],
1222
- [o, [d, At], [n, w]],
1248
+ [r, [d, Pt], [n, m]],
1223
1249
  [
1224
1250
  // Huawei
1225
1251
  /\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i
1226
1252
  ],
1227
- [o, [d, Tt], [n, f]],
1253
+ [r, [d, At], [n, f]],
1228
1254
  [
1229
1255
  /(?:huawei)([-\w ]+)[;\)]/i,
1230
1256
  /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
1231
1257
  ],
1232
- [o, [d, Tt], [n, w]],
1258
+ [r, [d, At], [n, m]],
1233
1259
  [
1234
1260
  // Xiaomi
1235
1261
  /oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,
1236
1262
  /\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i
1237
1263
  // Mi Pad tablets
1238
1264
  ],
1239
- [[o, /_/g, " "], [d, tt], [n, f]],
1265
+ [[r, /_/g, " "], [d, it], [n, f]],
1240
1266
  [
1241
1267
  /\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
1242
1268
  // Xiaomi POCO
@@ -1252,98 +1278,107 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1252
1278
  // Xiaomi Mi
1253
1279
  / ([\w ]+) miui\/v?\d/i
1254
1280
  ],
1255
- [[o, /_/g, " "], [d, tt], [n, w]],
1281
+ [[r, /_/g, " "], [d, it], [n, m]],
1282
+ [
1283
+ // OnePlus
1284
+ /droid.+; (cph2[3-6]\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\d|p[g-k]\w[1m]10)\b/i,
1285
+ /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
1286
+ ],
1287
+ [r, [d, xt], [n, m]],
1256
1288
  [
1257
1289
  // OPPO
1258
1290
  /; (\w+) bui.+ oppo/i,
1259
1291
  /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
1260
1292
  ],
1261
- [o, [d, et], [n, w]],
1293
+ [r, [d, st], [n, m]],
1262
1294
  [
1263
1295
  /\b(opd2(\d{3}a?))(?: bui|\))/i
1264
1296
  ],
1265
- [o, [d, q, { OnePlus: ["304", "403", "203"], "*": et }], [n, f]],
1297
+ [r, [d, L, { OnePlus: ["203", "304", "403", "404", "413", "415"], "*": st }], [n, f]],
1266
1298
  [
1267
- // BLU Vivo Series
1299
+ // BLU
1268
1300
  /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i
1301
+ // Vivo series
1269
1302
  ],
1270
- [o, [d, "BLU"], [n, w]],
1303
+ [r, [d, "BLU"], [n, m]],
1271
1304
  [
1272
1305
  // Vivo
1273
1306
  /; vivo (\w+)(?: bui|\))/i,
1274
1307
  /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
1275
1308
  ],
1276
- [o, [d, "Vivo"], [n, w]],
1309
+ [r, [d, "Vivo"], [n, m]],
1277
1310
  [
1278
1311
  // Realme
1279
1312
  /\b(rmx[1-3]\d{3})(?: bui|;|\))/i
1280
1313
  ],
1281
- [o, [d, "Realme"], [n, w]],
1314
+ [r, [d, "Realme"], [n, m]],
1315
+ [
1316
+ // Lenovo
1317
+ /(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,
1318
+ /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i
1319
+ ],
1320
+ [r, [d, Ye], [n, f]],
1321
+ [
1322
+ /lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i
1323
+ ],
1324
+ [r, [d, Ye], [n, m]],
1282
1325
  [
1283
1326
  // Motorola
1284
1327
  /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
1285
- /\bmot(?:orola)?[- ](\w*)/i,
1286
- /((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
1328
+ /\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,
1329
+ /((?:moto(?! 360)[-\w\(\) ]+|xt\d{3,4}[cgkosw\+]?[-\d]*|nexus 6)(?= bui|\)))/i
1287
1330
  ],
1288
- [o, [d, Ye], [n, w]],
1331
+ [r, [d, et], [n, m]],
1289
1332
  [
1290
1333
  /\b(mz60\d|xoom[2 ]{0,2}) build\//i
1291
1334
  ],
1292
- [o, [d, Ye], [n, f]],
1335
+ [r, [d, et], [n, f]],
1293
1336
  [
1294
1337
  // LG
1295
1338
  /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
1296
1339
  ],
1297
- [o, [d, Ue], [n, f]],
1340
+ [r, [d, Le], [n, f]],
1298
1341
  [
1299
1342
  /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
1300
- /\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\w+)/i,
1343
+ /\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,
1301
1344
  /\blg-?([\d\w]+) bui/i
1302
1345
  ],
1303
- [o, [d, Ue], [n, w]],
1304
- [
1305
- // Lenovo
1306
- /(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,
1307
- /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i
1308
- ],
1309
- [o, [d, It], [n, f]],
1346
+ [r, [d, Le], [n, m]],
1310
1347
  [
1311
1348
  // Nokia
1312
1349
  /(nokia) (t[12][01])/i
1313
1350
  ],
1314
- [d, o, [n, f]],
1351
+ [d, r, [n, f]],
1315
1352
  [
1316
1353
  /(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,
1317
1354
  /nokia[-_ ]?(([-\w\. ]*))/i
1318
1355
  ],
1319
- [[o, /_/g, " "], [n, w], [d, "Nokia"]],
1356
+ [[r, /_/g, " "], [n, m], [d, "Nokia"]],
1320
1357
  [
1321
1358
  // Google
1322
1359
  /(pixel (c|tablet))\b/i
1323
1360
  // Google Pixel C/Tablet
1324
1361
  ],
1325
- [o, [d, J], [n, f]],
1362
+ [r, [d, X], [n, f]],
1326
1363
  [
1327
- /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i
1328
1364
  // Google Pixel
1365
+ /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\d ]*a?( pro)?( xl)?( fold)?( \(5g\))?)( bui|\))/i
1366
+ ],
1367
+ [r, [d, X], [n, m]],
1368
+ [
1369
+ /(google) (pixelbook( go)?)/i
1329
1370
  ],
1330
- [o, [d, J], [n, w]],
1371
+ [d, r],
1331
1372
  [
1332
1373
  // Sony
1333
- /droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
1374
+ /droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-\w\w\d\d)(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
1334
1375
  ],
1335
- [o, [d, fe], [n, w]],
1376
+ [r, [d, ye], [n, m]],
1336
1377
  [
1337
1378
  /sony tablet [ps]/i,
1338
1379
  /\b(?:sony)?sgp\w+(?: bui|\))/i
1339
1380
  ],
1340
- [[o, "Xperia Tablet"], [d, fe], [n, f]],
1341
- [
1342
- // OnePlus
1343
- / (kb2005|in20[12]5|be20[12][59])\b/i,
1344
- /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
1345
- ],
1346
- [o, [d, Pt], [n, w]],
1381
+ [[r, "Xperia Tablet"], [d, ye], [n, f]],
1347
1382
  [
1348
1383
  // Amazon
1349
1384
  /(alexa)webm/i,
@@ -1352,39 +1387,39 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1352
1387
  /(kf[a-z]+)( bui|\)).+silk\//i
1353
1388
  // Kindle Fire HD
1354
1389
  ],
1355
- [o, [d, xe], [n, f]],
1390
+ [r, [d, Ue], [n, f]],
1356
1391
  [
1357
1392
  /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
1358
1393
  // Fire Phone
1359
1394
  ],
1360
- [[o, /(.+)/g, "Fire Phone $1"], [d, xe], [n, w]],
1395
+ [[r, /(.+)/g, "Fire Phone $1"], [d, Ue], [n, m]],
1361
1396
  [
1362
1397
  // BlackBerry
1363
1398
  /(playbook);[-\w\),; ]+(rim)/i
1364
1399
  // BlackBerry PlayBook
1365
1400
  ],
1366
- [o, d, [n, f]],
1401
+ [r, d, [n, f]],
1367
1402
  [
1368
1403
  /\b((?:bb[a-f]|st[hv])100-\d)/i,
1369
1404
  /\(bb10; (\w+)/i
1370
1405
  // BlackBerry 10
1371
1406
  ],
1372
- [o, [d, St], [n, w]],
1407
+ [r, [d, Tt], [n, m]],
1373
1408
  [
1374
1409
  // Asus
1375
1410
  /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
1376
1411
  ],
1377
- [o, [d, Mt], [n, f]],
1412
+ [r, [d, It], [n, f]],
1378
1413
  [
1379
1414
  / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
1380
1415
  ],
1381
- [o, [d, Mt], [n, w]],
1416
+ [r, [d, It], [n, m]],
1382
1417
  [
1383
1418
  // HTC
1384
1419
  /(nexus 9)/i
1385
1420
  // HTC Nexus 9
1386
1421
  ],
1387
- [o, [d, "HTC"], [n, f]],
1422
+ [r, [d, "HTC"], [n, f]],
1388
1423
  [
1389
1424
  /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
1390
1425
  // HTC
@@ -1393,94 +1428,99 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1393
1428
  /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
1394
1429
  // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
1395
1430
  ],
1396
- [d, [o, /_/g, " "], [n, w]],
1431
+ [d, [r, /_/g, " "], [n, m]],
1397
1432
  [
1398
1433
  // TCL
1399
1434
  /tcl (xess p17aa)/i,
1400
1435
  /droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i
1401
1436
  ],
1402
- [o, [d, "TCL"], [n, f]],
1437
+ [r, [d, "TCL"], [n, f]],
1403
1438
  [
1404
1439
  /droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i
1405
1440
  ],
1406
- [o, [d, "TCL"], [n, w]],
1441
+ [r, [d, "TCL"], [n, m]],
1407
1442
  [
1408
1443
  // itel
1409
1444
  /(itel) ((\w+))/i
1410
1445
  ],
1411
- [[d, N], o, [n, q, { tablet: ["p10001l", "w7001"], "*": "mobile" }]],
1446
+ [[d, j], r, [n, L, { tablet: ["p10001l", "w7001"], "*": "mobile" }]],
1412
1447
  [
1413
1448
  // Acer
1414
1449
  /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
1415
1450
  ],
1416
- [o, [d, "Acer"], [n, f]],
1451
+ [r, [d, "Acer"], [n, f]],
1417
1452
  [
1418
1453
  // Meizu
1419
1454
  /droid.+; (m[1-5] note) bui/i,
1420
1455
  /\bmz-([-\w]{2,})/i
1421
1456
  ],
1422
- [o, [d, "Meizu"], [n, w]],
1457
+ [r, [d, "Meizu"], [n, m]],
1423
1458
  [
1424
1459
  // Ulefone
1425
1460
  /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
1426
1461
  ],
1427
- [o, [d, "Ulefone"], [n, w]],
1462
+ [r, [d, "Ulefone"], [n, m]],
1428
1463
  [
1429
1464
  // Energizer
1430
1465
  /; (energy ?\w+)(?: bui|\))/i,
1431
1466
  /; energizer ([\w ]+)(?: bui|\))/i
1432
1467
  ],
1433
- [o, [d, "Energizer"], [n, w]],
1468
+ [r, [d, "Energizer"], [n, m]],
1434
1469
  [
1435
1470
  // Cat
1436
1471
  /; cat (b35);/i,
1437
1472
  /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i
1438
1473
  ],
1439
- [o, [d, "Cat"], [n, w]],
1474
+ [r, [d, "Cat"], [n, m]],
1440
1475
  [
1441
1476
  // Smartfren
1442
1477
  /((?:new )?andromax[\w- ]+)(?: bui|\))/i
1443
1478
  ],
1444
- [o, [d, "Smartfren"], [n, w]],
1479
+ [r, [d, "Smartfren"], [n, m]],
1445
1480
  [
1446
1481
  // Nothing
1447
- /droid.+; (a(?:015|06[35]|142p?))/i
1482
+ /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i
1448
1483
  ],
1449
- [o, [d, "Nothing"], [n, w]],
1484
+ [r, [d, "Nothing"], [n, m]],
1450
1485
  [
1451
1486
  // Archos
1452
1487
  /; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,
1453
1488
  /archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i
1454
1489
  ],
1455
- [o, [d, "Archos"], [n, f]],
1490
+ [r, [d, "Archos"], [n, f]],
1456
1491
  [
1457
1492
  /archos ([\w ]+)( b|\))/i,
1458
1493
  /; (ac[3-6]\d\w{2,8})( b|\))/i
1459
1494
  ],
1460
- [o, [d, "Archos"], [n, w]],
1495
+ [r, [d, "Archos"], [n, m]],
1496
+ [
1497
+ // HMD
1498
+ /; (n159v)/i
1499
+ ],
1500
+ [r, [d, "HMD"], [n, m]],
1461
1501
  [
1462
1502
  // MIXED
1463
1503
  /(imo) (tab \w+)/i,
1464
1504
  // IMO
1465
- /(infinix) (x1101b?)/i
1466
- // Infinix XPad
1505
+ /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i
1506
+ // Infinix XPad / Tecno
1467
1507
  ],
1468
- [d, o, [n, f]],
1508
+ [d, r, [n, f]],
1469
1509
  [
1470
- /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
1471
- // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
1472
- /; (blu|hmd|imo|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,
1473
- // BLU/HMD/IMO/TCL
1510
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
1511
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan
1512
+ /; (blu|hmd|imo|infinix|lava|oneplus|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,
1513
+ // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL
1474
1514
  /(hp) ([\w ]+\w)/i,
1475
1515
  // HP iPAQ
1476
1516
  /(microsoft); (lumia[\w ]+)/i,
1477
1517
  // Microsoft Lumia
1478
- /(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,
1479
- // Lenovo
1480
- /(oppo) ?([\w ]+) bui/i
1518
+ /(oppo) ?([\w ]+) bui/i,
1481
1519
  // OPPO
1520
+ /droid[^;]+; (philips)[_ ]([sv-x][\d]{3,4}[xz]?)/i
1521
+ // Philips
1482
1522
  ],
1483
- [d, o, [n, w]],
1523
+ [d, r, [n, m]],
1484
1524
  [
1485
1525
  /(kobo)\s(ereader|touch)/i,
1486
1526
  // Kobo
@@ -1489,45 +1529,47 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1489
1529
  /(kindle)\/([\w\.]+)/i
1490
1530
  // Kindle
1491
1531
  ],
1492
- [d, o, [n, f]],
1532
+ [d, r, [n, f]],
1493
1533
  [
1494
1534
  /(surface duo)/i
1495
1535
  // Surface Duo
1496
1536
  ],
1497
- [o, [d, Je], [n, f]],
1537
+ [r, [d, Ze], [n, f]],
1498
1538
  [
1499
1539
  /droid [\d\.]+; (fp\du?)(?: b|\))/i
1500
1540
  // Fairphone
1501
1541
  ],
1502
- [o, [d, "Fairphone"], [n, w]],
1542
+ [r, [d, "Fairphone"], [n, m]],
1503
1543
  [
1504
1544
  /((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i
1505
1545
  // Nvidia Tablets
1506
1546
  ],
1507
- [o, [d, Ze], [n, f]],
1547
+ [r, [d, tt], [n, f]],
1508
1548
  [
1509
1549
  /(sprint) (\w+)/i
1510
1550
  // Sprint Phones
1511
1551
  ],
1512
- [d, o, [n, w]],
1552
+ [d, r, [n, m]],
1513
1553
  [
1514
1554
  /(kin\.[onetw]{3})/i
1515
1555
  // Microsoft Kin
1516
1556
  ],
1517
- [[o, /\./g, " "], [d, Je], [n, w]],
1557
+ [[r, /\./g, " "], [d, Ze], [n, m]],
1518
1558
  [
1519
1559
  /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
1520
1560
  // Zebra
1521
1561
  ],
1522
- [o, [d, st], [n, f]],
1562
+ [r, [d, at], [n, f]],
1523
1563
  [
1524
1564
  /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
1525
1565
  ],
1526
- [o, [d, st], [n, w]],
1566
+ [r, [d, at], [n, m]],
1527
1567
  [
1528
1568
  ///////////////////
1529
1569
  // SMARTTVS
1530
1570
  ///////////////////
1571
+ /(philips)[\w ]+tv/i,
1572
+ // Philips
1531
1573
  /smart-tv.+(samsung)/i
1532
1574
  // Samsung
1533
1575
  ],
@@ -1535,118 +1577,113 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1535
1577
  [
1536
1578
  /hbbtv.+maple;(\d+)/i
1537
1579
  ],
1538
- [[o, /^/, "SmartTV"], [d, be], [n, y]],
1580
+ [[r, /^/, "SmartTV"], [d, fe], [n, y]],
1539
1581
  [
1582
+ /(vizio)(?: |.+model\/)(\w+-\w+)/i,
1583
+ // Vizio
1540
1584
  /tcast.+(lg)e?. ([-\w]+)/i
1541
1585
  // LG SmartTV
1542
1586
  ],
1543
- [d, o, [n, y]],
1587
+ [d, r, [n, y]],
1544
1588
  [
1545
1589
  /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
1546
1590
  ],
1547
- [[d, Ue], [n, y]],
1591
+ [[d, Le], [n, y]],
1548
1592
  [
1549
1593
  /(apple) ?tv/i
1550
1594
  // Apple TV
1551
1595
  ],
1552
- [d, [o, Z + " TV"], [n, y]],
1596
+ [d, [r, ee + " TV"], [n, y]],
1553
1597
  [
1554
1598
  /crkey.*devicetype\/chromecast/i
1555
1599
  // Google Chromecast Third Generation
1556
1600
  ],
1557
- [[o, V + " Third Generation"], [d, J], [n, y]],
1601
+ [[r, V + " Third Generation"], [d, X], [n, y]],
1558
1602
  [
1559
1603
  /crkey.*devicetype\/([^/]*)/i
1560
1604
  // Google Chromecast with specific device type
1561
1605
  ],
1562
- [[o, /^/, "Chromecast "], [d, J], [n, y]],
1606
+ [[r, /^/, "Chromecast "], [d, X], [n, y]],
1563
1607
  [
1564
1608
  /fuchsia.*crkey/i
1565
1609
  // Google Chromecast Nest Hub
1566
1610
  ],
1567
- [[o, V + " Nest Hub"], [d, J], [n, y]],
1611
+ [[r, V + " Nest Hub"], [d, X], [n, y]],
1568
1612
  [
1569
1613
  /crkey/i
1570
1614
  // Google Chromecast, Linux-based or unknown
1571
1615
  ],
1572
- [[o, V], [d, J], [n, y]],
1616
+ [[r, V], [d, X], [n, y]],
1573
1617
  [
1574
1618
  /(portaltv)/i
1575
1619
  // Facebook Portal TV
1576
1620
  ],
1577
- [o, [d, it], [n, y]],
1621
+ [r, [d, nt], [n, y]],
1578
1622
  [
1579
1623
  /droid.+aft(\w+)( bui|\))/i
1580
1624
  // Fire TV
1581
1625
  ],
1582
- [o, [d, xe], [n, y]],
1626
+ [r, [d, Ue], [n, y]],
1583
1627
  [
1584
1628
  /(shield \w+ tv)/i
1585
1629
  // Nvidia Shield TV
1586
1630
  ],
1587
- [o, [d, Ze], [n, y]],
1631
+ [r, [d, tt], [n, y]],
1588
1632
  [
1589
1633
  /\(dtv[\);].+(aquos)/i,
1590
1634
  /(aquos-tv[\w ]+)\)/i
1591
1635
  // Sharp
1592
1636
  ],
1593
- [o, [d, Ot], [n, y]],
1637
+ [r, [d, Ot], [n, y]],
1594
1638
  [
1595
1639
  /(bravia[\w ]+)( bui|\))/i
1596
1640
  // Sony
1597
1641
  ],
1598
- [o, [d, fe], [n, y]],
1642
+ [r, [d, ye], [n, y]],
1599
1643
  [
1600
1644
  /(mi(tv|box)-?\w+) bui/i
1601
1645
  // Xiaomi
1602
1646
  ],
1603
- [o, [d, tt], [n, y]],
1647
+ [r, [d, it], [n, y]],
1604
1648
  [
1605
1649
  /Hbbtv.*(technisat) (.*);/i
1606
1650
  // TechniSAT
1607
1651
  ],
1608
- [d, o, [n, y]],
1652
+ [d, r, [n, y]],
1609
1653
  [
1610
1654
  /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
1611
1655
  // Roku
1612
1656
  /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i
1613
1657
  // HbbTV devices
1614
1658
  ],
1615
- [[d, Te], [o, Te], [n, y]],
1659
+ [[d, /.+\/(\w+)/, "$1", L, { LG: "lge" }], [r, Ne], [n, y]],
1616
1660
  [
1617
- // SmartTV from Unidentified Vendors
1618
- /droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i
1661
+ ///////////////////
1662
+ // CONSOLES
1663
+ ///////////////////
1664
+ /(playstation \w+)/i
1665
+ // Playstation
1619
1666
  ],
1620
- [o, [n, y]],
1667
+ [r, [d, ye], [n, Me]],
1621
1668
  [
1622
- /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i
1669
+ /\b(xbox(?: one)?(?!; xbox))[\); ]/i
1670
+ // Microsoft Xbox
1623
1671
  ],
1624
- [[n, y]],
1672
+ [r, [d, Ze], [n, Me]],
1625
1673
  [
1626
- ///////////////////
1627
- // CONSOLES
1628
- ///////////////////
1629
1674
  /(ouya)/i,
1630
1675
  // Ouya
1631
- /(nintendo) (\w+)/i
1676
+ /(nintendo) (\w+)/i,
1632
1677
  // Nintendo
1678
+ /(retroid) (pocket ([^\)]+))/i
1679
+ // Retroid Pocket
1633
1680
  ],
1634
- [d, o, [n, Ce]],
1681
+ [d, r, [n, Me]],
1635
1682
  [
1636
1683
  /droid.+; (shield)( bui|\))/i
1637
1684
  // Nvidia Portable
1638
1685
  ],
1639
- [o, [d, Ze], [n, Ce]],
1640
- [
1641
- /(playstation \w+)/i
1642
- // Playstation
1643
- ],
1644
- [o, [d, fe], [n, Ce]],
1645
- [
1646
- /\b(xbox(?: one)?(?!; xbox))[\); ]/i
1647
- // Microsoft Xbox
1648
- ],
1649
- [o, [d, Je], [n, Ce]],
1686
+ [r, [d, tt], [n, Me]],
1650
1687
  [
1651
1688
  ///////////////////
1652
1689
  // WEARABLES
@@ -1654,48 +1691,48 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1654
1691
  /\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i
1655
1692
  // Samsung Galaxy Watch
1656
1693
  ],
1657
- [o, [d, be], [n, U]],
1694
+ [r, [d, fe], [n, U]],
1658
1695
  [
1659
1696
  /((pebble))app/i,
1660
1697
  // Pebble
1661
1698
  /(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i
1662
1699
  // Asus ZenWatch / LG Watch / Pixel Watch
1663
1700
  ],
1664
- [d, o, [n, U]],
1701
+ [d, r, [n, U]],
1665
1702
  [
1666
1703
  /(ow(?:19|20)?we?[1-3]{1,3})/i
1667
1704
  // Oppo Watch
1668
1705
  ],
1669
- [o, [d, et], [n, U]],
1706
+ [r, [d, st], [n, U]],
1670
1707
  [
1671
1708
  /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i
1672
1709
  // Apple Watch
1673
1710
  ],
1674
- [o, [d, Z], [n, U]],
1711
+ [r, [d, ee], [n, U]],
1675
1712
  [
1676
1713
  /(opwwe\d{3})/i
1677
1714
  // OnePlus Watch
1678
1715
  ],
1679
- [o, [d, Pt], [n, U]],
1716
+ [r, [d, xt], [n, U]],
1680
1717
  [
1681
1718
  /(moto 360)/i
1682
1719
  // Motorola 360
1683
1720
  ],
1684
- [o, [d, Ye], [n, U]],
1721
+ [r, [d, et], [n, U]],
1685
1722
  [
1686
1723
  /(smartwatch 3)/i
1687
1724
  // Sony SmartWatch
1688
1725
  ],
1689
- [o, [d, fe], [n, U]],
1726
+ [r, [d, ye], [n, U]],
1690
1727
  [
1691
1728
  /(g watch r)/i
1692
1729
  // LG G Watch R
1693
1730
  ],
1694
- [o, [d, Ue], [n, U]],
1731
+ [r, [d, Le], [n, U]],
1695
1732
  [
1696
1733
  /droid.+; (wt63?0{2,3})\)/i
1697
1734
  ],
1698
- [o, [d, st], [n, U]],
1735
+ [r, [d, at], [n, U]],
1699
1736
  [
1700
1737
  ///////////////////
1701
1738
  // XR
@@ -1703,17 +1740,22 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1703
1740
  /droid.+; (glass) \d/i
1704
1741
  // Google Glass
1705
1742
  ],
1706
- [o, [d, J], [n, Xe]],
1743
+ [r, [d, X], [n, Oe]],
1707
1744
  [
1708
- /(pico) (4|neo3(?: link|pro)?)/i
1745
+ /(pico) ([\w ]+) os\d/i
1709
1746
  // Pico
1710
1747
  ],
1711
- [d, o, [n, Xe]],
1748
+ [d, r, [n, Oe]],
1712
1749
  [
1713
1750
  /(quest( \d| pro)?s?).+vr/i
1714
1751
  // Meta Quest
1715
1752
  ],
1716
- [o, [d, it], [n, Xe]],
1753
+ [r, [d, nt], [n, Oe]],
1754
+ [
1755
+ /mobile vr; rv.+firefox/i
1756
+ // Unidentifiable VR device using Firefox Reality / Wolvic
1757
+ ],
1758
+ [[n, Oe]],
1717
1759
  [
1718
1760
  ///////////////////
1719
1761
  // EMBEDDED
@@ -1721,28 +1763,38 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1721
1763
  /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
1722
1764
  // Tesla
1723
1765
  ],
1724
- [d, [n, Me]],
1766
+ [d, [n, Se]],
1725
1767
  [
1726
1768
  /(aeobc)\b/i
1727
1769
  // Echo Dot
1728
1770
  ],
1729
- [o, [d, xe], [n, Me]],
1771
+ [r, [d, Ue], [n, Se]],
1730
1772
  [
1731
1773
  /(homepod).+mac os/i
1732
1774
  // Apple HomePod
1733
1775
  ],
1734
- [o, [d, Z], [n, Me]],
1776
+ [r, [d, ee], [n, Se]],
1735
1777
  [
1736
1778
  /windows iot/i
1779
+ // Unidentifiable embedded device using Windows IoT
1737
1780
  ],
1738
- [[n, Me]],
1781
+ [[n, Se]],
1739
1782
  [
1740
1783
  ////////////////////
1741
1784
  // MIXED (GENERIC)
1742
1785
  ///////////////////
1786
+ /droid.+; ([\w- ]+) (4k|android|smart|google)[- ]?tv/i
1787
+ // Unidentifiable SmartTV
1788
+ ],
1789
+ [r, [n, y]],
1790
+ [
1791
+ /\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\w ]+safari)\b/i
1792
+ ],
1793
+ [[n, y]],
1794
+ [
1743
1795
  /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+?(mobile|vr|\d) safari/i
1744
1796
  ],
1745
- [o, [n, q, { mobile: "Mobile", xr: "VR", "*": f }]],
1797
+ [r, [n, L, { mobile: "Mobile", xr: "VR", "*": f }]],
1746
1798
  [
1747
1799
  /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
1748
1800
  // Unidentifiable Tablet
@@ -1752,19 +1804,19 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1752
1804
  /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
1753
1805
  // Unidentifiable Mobile
1754
1806
  ],
1755
- [[n, w]],
1807
+ [[n, m]],
1756
1808
  [
1757
1809
  /droid .+?; ([\w\. -]+)( bui|\))/i
1758
1810
  // Generic Android Device
1759
1811
  ],
1760
- [o, [d, "Generic"]]
1812
+ [r, [d, "Generic"]]
1761
1813
  ],
1762
1814
  engine: [
1763
1815
  [
1764
1816
  /windows.+ edge\/([\w\.]+)/i
1765
1817
  // EdgeHTML
1766
1818
  ],
1767
- [u, [l, Ms + "HTML"]],
1819
+ [u, [l, _e + "HTML"]],
1768
1820
  [
1769
1821
  /(arkweb)\/([\w\.]+)/i
1770
1822
  // ArkWeb
@@ -1803,22 +1855,27 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1803
1855
  os: [
1804
1856
  [
1805
1857
  // Windows
1806
- /microsoft (windows) (vista|xp)/i
1807
- // Windows (iTunes)
1858
+ /(windows nt) (6\.[23]); arm/i
1859
+ // Windows RT
1860
+ ],
1861
+ [[l, /N/, "R"], [u, L, Bt]],
1862
+ [
1863
+ /(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i,
1864
+ // Windows IoT/Mobile/Phone
1865
+ // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11
1866
+ /(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i
1808
1867
  ],
1809
1868
  [l, u],
1810
1869
  [
1811
- /(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i
1812
- // Windows Phone
1870
+ /windows nt ?([\d\.\)]*)(?!.+xbox)/i,
1871
+ /\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i
1813
1872
  ],
1814
- [l, [u, q, Lt]],
1873
+ [[u, /(;|\))/g, "", L, Bt], [l, ht]],
1815
1874
  [
1816
- /windows nt 6\.2; (arm)/i,
1817
- // Windows RT
1818
- /windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,
1819
- /(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
1875
+ /(windows ce)\/?([\d\.]*)/i
1876
+ // Windows CE
1820
1877
  ],
1821
- [[u, q, Lt], [l, lt]],
1878
+ [l, u],
1822
1879
  [
1823
1880
  // iOS/macOS
1824
1881
  /[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,
@@ -1829,7 +1886,7 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1829
1886
  [[u, /_/g, "."], [l, "iOS"]],
1830
1887
  [
1831
1888
  /(mac os x) ?([\w\. ]*)/i,
1832
- /(macintosh|mac_powerpc\b)(?!.+haiku)/i
1889
+ /(macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i
1833
1890
  // Mac OS
1834
1891
  ],
1835
1892
  [[l, "macOS"], [u, /_/g, "."]],
@@ -1861,8 +1918,8 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1861
1918
  [u, [l, V]],
1862
1919
  [
1863
1920
  // Mobile OSes
1864
- /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i
1865
- // Android-x86/HarmonyOS
1921
+ /droid ([\w\.]+)\b.+(android[- ]x86)/i
1922
+ // Android-x86
1866
1923
  ],
1867
1924
  [u, l],
1868
1925
  [
@@ -1871,15 +1928,17 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1871
1928
  ],
1872
1929
  [[l, /(.+)/, "$1 Touch"], u],
1873
1930
  [
1931
+ /(harmonyos)[\/ ]?([\d\.]*)/i,
1932
+ // HarmonyOS
1874
1933
  // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
1875
- /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/\.; ]?([\d\.]*)/i
1934
+ /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\w*[-\/\.; ]?([\d\.]*)/i
1876
1935
  ],
1877
1936
  [l, u],
1878
1937
  [
1879
1938
  /\(bb(10);/i
1880
1939
  // BlackBerry 10
1881
1940
  ],
1882
- [u, [l, St]],
1941
+ [u, [l, Tt]],
1883
1942
  [
1884
1943
  /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i
1885
1944
  // Symbian
@@ -1889,13 +1948,18 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1889
1948
  /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i
1890
1949
  // Firefox OS
1891
1950
  ],
1892
- [u, [l, ye + " OS"]],
1951
+ [u, [l, ke + " OS"]],
1893
1952
  [
1894
- /web0s;.+rt(tv)/i,
1895
- /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i
1953
+ /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i,
1896
1954
  // WebOS
1955
+ /webos(?:[ \/]?|\.tv-20(?=2[2-9]))(\d[\d\.]*)/i
1897
1956
  ],
1898
1957
  [u, [l, "webOS"]],
1958
+ [
1959
+ /web0s;.+?(?:chr[o0]me|safari)\/(\d+)/i
1960
+ // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine
1961
+ ],
1962
+ [[u, L, { 25: "120", 24: "108", 23: "94", 22: "87", 6: "79", 5: "68", 4: "53", 3: "38", 2: "538", 1: "537", "*": "TV" }], [l, "webOS"]],
1899
1963
  [
1900
1964
  /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i
1901
1965
  // watchOS
@@ -1925,34 +1989,34 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1925
1989
  // Other
1926
1990
  /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
1927
1991
  // Joli/Palm
1928
- /(mint)[\/\(\) ]?(\w*)/i,
1992
+ /linux.+(mint)[\/\(\) ]?([\w\.]*)/i,
1929
1993
  // Mint
1930
- /(mageia|vectorlinux)[; ]/i,
1931
- // Mageia/VectorLinux
1932
- /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
1933
- // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
1934
- /(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,
1935
- // Hurd/Linux
1994
+ /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i,
1995
+ // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch
1996
+ /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
1997
+ // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix
1998
+ /((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
1999
+ // Solaris
2000
+ /\b(aix)[; ]([1-9\.]{0,4})/i,
2001
+ // AIX
2002
+ /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i,
2003
+ // Hurd/Linux/MorphOS
1936
2004
  /(gnu) ?([\w\.]*)/i,
1937
2005
  // GNU
1938
2006
  /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
1939
2007
  // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
1940
- /(haiku) (\w+)/i
2008
+ /(haiku) ?(r\d)?/i
1941
2009
  // Haiku
1942
2010
  ],
1943
2011
  [l, u],
1944
2012
  [
1945
- /(sunos) ?([\w\.\d]*)/i
2013
+ /(sunos) ?([\d\.]*)/i
1946
2014
  // Solaris
1947
2015
  ],
1948
2016
  [[l, "Solaris"], u],
1949
2017
  [
1950
- /((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
1951
- // Solaris
1952
- /(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
1953
- // AIX
1954
- /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
1955
- // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
2018
+ /\b(beos|os\/2|amigaos|openvms|hp-ux|serenityos)/i,
2019
+ // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS
1956
2020
  /(unix) ?([\w\.]*)/i
1957
2021
  // UNIX
1958
2022
  ],
@@ -1960,229 +2024,258 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
1960
2024
  ]
1961
2025
  }, Re = function() {
1962
2026
  var i = { init: {}, isIgnore: {}, isIgnoreRgx: {}, toString: {} };
1963
- return D.call(i.init, [
1964
- [S, [l, u, Se, n]],
1965
- [F, [T]],
1966
- [R, [n, o, d]],
1967
- [x, [l, u]],
1968
- [O, [l, u]]
1969
- ]), D.call(i.isIgnore, [
1970
- [S, [u, Se]],
1971
- [x, [u]],
1972
- [O, [u]]
1973
- ]), D.call(i.isIgnoreRgx, [
2027
+ return N.call(i.init, [
2028
+ [S, [l, u, Ie, n]],
2029
+ [D, [I]],
2030
+ [R, [n, r, d]],
2031
+ [O, [l, u]],
2032
+ [x, [l, u]]
2033
+ ]), N.call(i.isIgnore, [
2034
+ [S, [u, Ie]],
2035
+ [O, [u]],
2036
+ [x, [u]]
2037
+ ]), N.call(i.isIgnoreRgx, [
1974
2038
  [S, / ?browser$/i],
1975
- [O, / ?os$/i]
1976
- ]), D.call(i.toString, [
2039
+ [x, / ?os$/i]
2040
+ ]), N.call(i.toString, [
1977
2041
  [S, [l, u]],
1978
- [F, [T]],
1979
- [R, [d, o]],
1980
- [x, [l, u]],
1981
- [O, [l, u]]
2042
+ [D, [I]],
2043
+ [R, [d, r]],
2044
+ [O, [l, u]],
2045
+ [x, [l, u]]
1982
2046
  ]), i;
1983
- }(), Is = function(i, t) {
1984
- var e = Re.init[t], s = Re.isIgnore[t] || 0, a = Re.isIgnoreRgx[t] || 0, r = Re.toString[t] || 0;
1985
- function c() {
1986
- D.call(this, e);
2047
+ }(), As = function(i, t) {
2048
+ var e = Re.init[t], s = Re.isIgnore[t] || 0, a = Re.isIgnoreRgx[t] || 0, c = Re.toString[t] || 0;
2049
+ function o() {
2050
+ N.call(this, e);
1987
2051
  }
1988
- return c.prototype.getItem = function() {
2052
+ return o.prototype.getItem = function() {
1989
2053
  return i;
1990
- }, c.prototype.withClientHints = function() {
1991
- return z ? z.getHighEntropyValues(Qt).then(function(g) {
1992
- return i.setCH(new Xt(g, !1)).parseCH().get();
2054
+ }, o.prototype.withClientHints = function() {
2055
+ return z ? z.getHighEntropyValues(Xt).then(function(p) {
2056
+ return i.setCH(new Jt(p, !1)).parseCH().get();
1993
2057
  }) : i.parseCH().get();
1994
- }, c.prototype.withFeatureCheck = function() {
2058
+ }, o.prototype.withFeatureCheck = function() {
1995
2059
  return i.detectFeature().get();
1996
- }, t != te && (c.prototype.is = function(g) {
2060
+ }, t != ie && (o.prototype.is = function(p) {
1997
2061
  var h = !1;
1998
- for (var p in this)
1999
- if (this.hasOwnProperty(p) && !ut(s, p) && N(a ? he(a, this[p]) : this[p]) == N(a ? he(a, g) : g)) {
2000
- if (h = !0, g != j) break;
2001
- } else if (g == j && h) {
2062
+ for (var w in this)
2063
+ if (this.hasOwnProperty(w) && !pt(s, w) && j(a ? ge(a, this[w]) : this[w]) == j(a ? ge(a, p) : p)) {
2064
+ if (h = !0, p != W) break;
2065
+ } else if (p == W && h) {
2002
2066
  h = !h;
2003
2067
  break;
2004
2068
  }
2005
2069
  return h;
2006
- }, c.prototype.toString = function() {
2007
- var g = le;
2008
- for (var h in r)
2009
- typeof this[r[h]] !== j && (g += (g ? " " : le) + this[r[h]]);
2010
- return g || j;
2011
- }), z || (c.prototype.then = function(g) {
2012
- var h = this, p = function() {
2013
- for (var C in h)
2014
- h.hasOwnProperty(C) && (this[C] = h[C]);
2070
+ }, o.prototype.toString = function() {
2071
+ var p = he;
2072
+ for (var h in c)
2073
+ typeof this[c[h]] !== W && (p += (p ? " " : he) + this[c[h]]);
2074
+ return p || W;
2075
+ }), z || (o.prototype.then = function(p) {
2076
+ var h = this, w = function() {
2077
+ for (var E in h)
2078
+ h.hasOwnProperty(E) && (this[E] = h[E]);
2015
2079
  };
2016
- p.prototype = {
2017
- is: c.prototype.is,
2018
- toString: c.prototype.toString
2080
+ w.prototype = {
2081
+ is: o.prototype.is,
2082
+ toString: o.prototype.toString
2019
2083
  };
2020
- var m = new p();
2021
- return g(m), m;
2022
- }), new c();
2084
+ var g = new w();
2085
+ return p(g), g;
2086
+ }), new o();
2023
2087
  };
2024
- function Xt(i, t) {
2025
- if (i = i || {}, D.call(this, Qt), t)
2026
- D.call(this, [
2027
- [ht, at(i[$])],
2028
- [gt, at(i[bs])],
2029
- [w, /\?1/.test(i[vs])],
2030
- [o, Ee(i[Es])],
2031
- [se, Ee(i[Kt])],
2032
- [pt, Ee(i[Cs])],
2033
- [T, Ee(i[fs])],
2034
- [Y, at(i[ks])],
2035
- [Ve, Ee(i[ys])]
2088
+ function Jt(i, t) {
2089
+ if (i = i || {}, N.call(this, Xt), t)
2090
+ N.call(this, [
2091
+ [gt, ot(i[$])],
2092
+ [wt, ot(i[fs])],
2093
+ [m, /\?1/.test(i[Es])],
2094
+ [r, Ce(i[Cs])],
2095
+ [ae, Ce(i[Qt])],
2096
+ [mt, Ce(i[Ms])],
2097
+ [I, Ce(i[ys])],
2098
+ [J, ot(i[vs])],
2099
+ [qe, Ce(i[ks])]
2036
2100
  ]);
2037
2101
  else
2038
2102
  for (var e in i)
2039
- this.hasOwnProperty(e) && typeof i[e] !== j && (this[e] = i[e]);
2103
+ this.hasOwnProperty(e) && typeof i[e] !== W && (this[e] = i[e]);
2040
2104
  }
2041
- function Ft(i, t, e, s) {
2105
+ function Dt(i, t, e, s) {
2042
2106
  return this.get = function(a) {
2043
2107
  return a ? this.data.hasOwnProperty(a) ? this.data[a] : void 0 : this.data;
2044
- }, this.set = function(a, r) {
2045
- return this.data[a] = r, this;
2108
+ }, this.set = function(a, c) {
2109
+ return this.data[a] = c, this;
2046
2110
  }, this.setCH = function(a) {
2047
2111
  return this.uaCH = a, this;
2048
2112
  }, this.detectFeature = function() {
2049
- if (I && I.userAgent == this.ua)
2113
+ if (T && T.userAgent == this.ua)
2050
2114
  switch (this.itemType) {
2051
2115
  case S:
2052
- I.brave && typeof I.brave.isBrave == Be && this.set(l, "Brave");
2116
+ T.brave && typeof T.brave.isBrave == Fe && this.set(l, "Brave");
2053
2117
  break;
2054
2118
  case R:
2055
- !this.get(n) && z && z[w] && this.set(n, w), this.get(o) == "Macintosh" && I && typeof I.standalone !== j && I.maxTouchPoints && I.maxTouchPoints > 2 && this.set(o, "iPad").set(n, f);
2119
+ !this.get(n) && z && z[m] && this.set(n, m), this.get(r) == "Macintosh" && T && typeof T.standalone !== W && T.maxTouchPoints && T.maxTouchPoints > 2 && this.set(r, "iPad").set(n, f);
2056
2120
  break;
2057
- case O:
2058
- !this.get(l) && z && z[se] && this.set(l, z[se]);
2121
+ case x:
2122
+ !this.get(l) && z && z[ae] && this.set(l, z[ae]);
2059
2123
  break;
2060
- case te:
2061
- var a = this.data, r = function(c) {
2062
- return a[c].getItem().detectFeature().get();
2124
+ case ie:
2125
+ var a = this.data, c = function(o) {
2126
+ return a[o].getItem().detectFeature().get();
2063
2127
  };
2064
- this.set(S, r(S)).set(F, r(F)).set(R, r(R)).set(x, r(x)).set(O, r(O));
2128
+ this.set(S, c(S)).set(D, c(D)).set(R, c(R)).set(O, c(O)).set(x, c(x));
2065
2129
  }
2066
2130
  return this;
2067
2131
  }, this.parseUA = function() {
2068
- return this.itemType != te && ot.call(this.data, this.ua, this.rgxMap), this.itemType == S && this.set(Se, nt(this.get(u))), this;
2132
+ return this.itemType != ie && ct.call(this.data, this.ua, this.rgxMap), this.itemType == S && this.set(Ie, rt(this.get(u))), this;
2069
2133
  }, this.parseCH = function() {
2070
- var a = this.uaCH, r = this.rgxMap;
2134
+ var a = this.uaCH, c = this.rgxMap;
2071
2135
  switch (this.itemType) {
2072
2136
  case S:
2073
- case x:
2074
- var c = a[gt] || a[ht], g;
2075
- if (c)
2076
- for (var h in c) {
2077
- var p = c[h].brand || c[h], m = c[h].version;
2078
- this.itemType == S && !/not.a.brand/i.test(p) && (!g || /chrom/i.test(g) && p != Ut) && (p = q(p, {
2079
- Chrome: "Google Chrome",
2080
- Edge: "Microsoft Edge",
2081
- "Chrome WebView": "Android WebView",
2082
- "Chrome Headless": "HeadlessChrome",
2083
- "Huawei Browser": "HuaweiBrowser",
2084
- "MIUI Browser": "Miui Browser",
2085
- "Opera Mobi": "OperaMobile",
2086
- Yandex: "YaBrowser"
2087
- }), this.set(l, p).set(u, m).set(Se, nt(m)), g = p), this.itemType == x && p == Ut && this.set(u, m);
2137
+ case O:
2138
+ var o = a[wt] || a[gt], p;
2139
+ if (o)
2140
+ for (var h = 0; h < o.length; h++) {
2141
+ var w = o[h].brand || o[h], g = o[h].version;
2142
+ this.itemType == S && !/not.a.brand/i.test(w) && (!p || /Chrom/.test(p) && w != Lt || p == _e && /WebView2/.test(w)) && (w = L(w, Ts), p = this.get(l), p && !/Chrom/.test(p) && /Chrom/.test(w) || this.set(l, w).set(u, g).set(Ie, rt(g)), p = w), this.itemType == O && w == Lt && this.set(u, g);
2088
2143
  }
2089
2144
  break;
2090
- case F:
2091
- var C = a[T];
2092
- C && (C && a[Ve] == "64" && (C += "64"), ot.call(this.data, C + ";", r));
2145
+ case D:
2146
+ var E = a[I];
2147
+ E && (E && a[qe] == "64" && (E += "64"), ct.call(this.data, E + ";", c));
2093
2148
  break;
2094
2149
  case R:
2095
- if (a[w] && this.set(n, w), a[o] && (this.set(o, a[o]), !this.get(n) || !this.get(d))) {
2150
+ if (a[m] && this.set(n, m), a[r] && (this.set(r, a[r]), !this.get(n) || !this.get(d))) {
2096
2151
  var A = {};
2097
- ot.call(A, "droid 9; " + a[o] + ")", r), !this.get(n) && A.type && this.set(n, A.type), !this.get(d) && A.vendor && this.set(d, A.vendor);
2152
+ ct.call(A, "droid 9; " + a[r] + ")", c), !this.get(n) && A.type && this.set(n, A.type), !this.get(d) && A.vendor && this.set(d, A.vendor);
2098
2153
  }
2099
- if (a[Y]) {
2154
+ if (a[J]) {
2100
2155
  var G;
2101
- if (typeof a[Y] != "string")
2102
- for (var pe = 0; !G && pe < a[Y].length; )
2103
- G = q(a[Y][pe++], Bt);
2156
+ if (typeof a[J] != "string")
2157
+ for (var me = 0; !G && me < a[J].length; )
2158
+ G = L(a[J][me++], _t);
2104
2159
  else
2105
- G = q(a[Y], Bt);
2160
+ G = L(a[J], _t);
2106
2161
  this.set(n, G);
2107
2162
  }
2108
2163
  break;
2109
- case O:
2110
- var _ = a[se];
2111
- if (_) {
2112
- var K = a[pt];
2113
- _ == lt && (K = parseInt(nt(K), 10) >= 13 ? "11" : "10"), this.set(l, _).set(u, K);
2164
+ case x:
2165
+ var F = a[ae];
2166
+ if (F) {
2167
+ var Y = a[mt];
2168
+ F == ht && (Y = parseInt(rt(Y), 10) >= 13 ? "11" : "10"), this.set(l, F).set(u, Y);
2114
2169
  }
2115
- this.get(l) == lt && a[o] == "Xbox" && this.set(l, "Xbox").set(u, void 0);
2170
+ this.get(l) == ht && a[r] == "Xbox" && this.set(l, "Xbox").set(u, void 0);
2116
2171
  break;
2117
- case te:
2118
- var Q = this.data, H = function(Oe) {
2119
- return Q[Oe].getItem().setCH(a).parseCH().get();
2172
+ case ie:
2173
+ var K = this.data, H = function(xe) {
2174
+ return K[xe].getItem().setCH(a).parseCH().get();
2120
2175
  };
2121
- this.set(S, H(S)).set(F, H(F)).set(R, H(R)).set(x, H(x)).set(O, H(O));
2176
+ this.set(S, H(S)).set(D, H(D)).set(R, H(R)).set(O, H(O)).set(x, H(x));
2122
2177
  }
2123
2178
  return this;
2124
- }, D.call(this, [
2179
+ }, N.call(this, [
2125
2180
  ["itemType", i],
2126
2181
  ["ua", t],
2127
2182
  ["uaCH", s],
2128
2183
  ["rgxMap", e],
2129
- ["data", Is(this, i)]
2184
+ ["data", As(this, i)]
2130
2185
  ]), this;
2131
2186
  }
2132
- function L(i, t, e) {
2133
- if (typeof i === ue ? (_e(i, !0) ? (typeof t === ue && (e = t), t = i) : (e = i, t = void 0), i = void 0) : typeof i === dt && !_e(t, !0) && (e = t, t = void 0), e && typeof e.append === Be) {
2134
- var s = {};
2135
- e.forEach(function(h, p) {
2136
- s[p] = h;
2137
- }), e = s;
2138
- }
2139
- if (!(this instanceof L))
2140
- return new L(i, t, e).getResult();
2141
- var a = typeof i === dt ? i : (
2187
+ function B(i, t, e) {
2188
+ if (typeof i === pe ? (De(i, !0) ? (typeof t === pe && (e = t), t = i) : (e = i, t = void 0), i = void 0) : typeof i === ut && !De(t, !0) && (e = t, t = void 0), e)
2189
+ if (typeof e.append === Fe) {
2190
+ var s = {};
2191
+ e.forEach(function(g, E) {
2192
+ s[String(E).toLowerCase()] = g;
2193
+ }), e = s;
2194
+ } else {
2195
+ var a = {};
2196
+ for (var c in e)
2197
+ e.hasOwnProperty(c) && (a[String(c).toLowerCase()] = e[c]);
2198
+ e = a;
2199
+ }
2200
+ if (!(this instanceof B))
2201
+ return new B(i, t, e).getResult();
2202
+ var o = typeof i === ut ? i : (
2142
2203
  // Passed user-agent string
2143
- e && e[Et] ? e[Et] : (
2204
+ e && e[Mt] ? e[Mt] : (
2144
2205
  // User-Agent from passed headers
2145
- I && I.userAgent ? I.userAgent : (
2206
+ T && T.userAgent ? T.userAgent : (
2146
2207
  // navigator.userAgent
2147
- le
2208
+ he
2148
2209
  )
2149
2210
  )
2150
- ), r = new Xt(e, !0), c = t ? Ts(_t, t) : _t, g = function(h) {
2151
- return h == te ? function() {
2152
- return new Ft(h, a, c, r).set("ua", a).set(S, this.getBrowser()).set(F, this.getCPU()).set(R, this.getDevice()).set(x, this.getEngine()).set(O, this.getOS()).get();
2211
+ ), p = new Jt(e, !0), h = t ? Is(Ft, t) : Ft, w = function(g) {
2212
+ return g == ie ? function() {
2213
+ return new Dt(g, o, h, p).set("ua", o).set(S, this.getBrowser()).set(D, this.getCPU()).set(R, this.getDevice()).set(O, this.getEngine()).set(x, this.getOS()).get();
2153
2214
  } : function() {
2154
- return new Ft(h, a, c[h], r).parseUA().get();
2215
+ return new Dt(g, o, h[g], p).parseUA().get();
2155
2216
  };
2156
2217
  };
2157
- return D.call(this, [
2158
- ["getBrowser", g(S)],
2159
- ["getCPU", g(F)],
2160
- ["getDevice", g(R)],
2161
- ["getEngine", g(x)],
2162
- ["getOS", g(O)],
2163
- ["getResult", g(te)],
2218
+ return N.call(this, [
2219
+ ["getBrowser", w(S)],
2220
+ ["getCPU", w(D)],
2221
+ ["getDevice", w(R)],
2222
+ ["getEngine", w(O)],
2223
+ ["getOS", w(x)],
2224
+ ["getResult", w(ie)],
2164
2225
  ["getUA", function() {
2165
- return a;
2226
+ return o;
2166
2227
  }],
2167
- ["setUA", function(h) {
2168
- return ge(h) && (a = h.length > ct ? Te(h, ct) : h), this;
2228
+ ["setUA", function(g) {
2229
+ return we(g) && (o = g.length > lt ? Ne(g, lt) : g), this;
2169
2230
  }]
2170
- ]).setUA(a), this;
2231
+ ]).setUA(o), this;
2171
2232
  }
2172
- L.VERSION = ms;
2173
- L.BROWSER = ze([l, u, Se, n]);
2174
- L.CPU = ze([T]);
2175
- L.DEVICE = ze([o, d, n, Ce, w, y, f, U, Me]);
2176
- L.ENGINE = L.OS = ze([l, u]);
2177
- class As {
2233
+ B.VERSION = bs;
2234
+ B.BROWSER = We([l, u, Ie, n]);
2235
+ B.CPU = We([I]);
2236
+ B.DEVICE = We([r, d, n, Me, m, y, f, U, Se]);
2237
+ B.ENGINE = B.OS = We([l, u]);
2238
+ class Ps {
2178
2239
  constructor(t, e) {
2179
2240
  b(this, "config");
2180
2241
  b(this, "sdkConfig");
2181
- this.config = t, this.sdkConfig = e;
2242
+ b(this, "error");
2243
+ this.config = t, this.sdkConfig = e, this.on("openGame", async () => {
2244
+ try {
2245
+ this.error = void 0;
2246
+ const s = await this.openGame();
2247
+ this.send("openGameResponse", s);
2248
+ } catch (s) {
2249
+ this.error = s, this.send("openGameError", this.error);
2250
+ }
2251
+ }), this.on("play", async (s) => {
2252
+ try {
2253
+ this.error = void 0;
2254
+ const a = await this.play(s);
2255
+ this.send("playResponse", a);
2256
+ } catch (a) {
2257
+ this.error = a, this.send("playError", this.error);
2258
+ }
2259
+ }), this.on("freeRounds", async (s) => {
2260
+ try {
2261
+ this.error = void 0;
2262
+ const a = await this.freeRounds(s);
2263
+ this.send("freeRoundsResponse", a);
2264
+ } catch (a) {
2265
+ this.error = a, this.send("freeRoundsError", this.error);
2266
+ }
2267
+ }), this.on("getBalance", async () => {
2268
+ try {
2269
+ this.error = void 0;
2270
+ const s = await this.getBalance();
2271
+ this.send("balance", s);
2272
+ } catch {
2273
+ }
2274
+ }), this.showHistory = this.showHistory.bind(this), this.on("history", this.showHistory);
2182
2275
  }
2183
2276
  on(t, e, s) {
2184
- const a = function(c) {
2185
- c.data.message !== `kalamba:wrapper-rgs:${t}` && c.data.message !== `kalamba:wrapper:${t}` || e(c.data.payload);
2277
+ const a = function(o) {
2278
+ o.data.message !== `kalamba:wrapper-rgs:${t}` && o.data.message !== `kalamba:wrapper:${t}` || e(o.data.payload);
2186
2279
  };
2187
2280
  window.addEventListener("message", a, s);
2188
2281
  }
@@ -2192,8 +2285,25 @@ class As {
2192
2285
  payload: e
2193
2286
  });
2194
2287
  }
2288
+ async openGame() {
2289
+ throw new Error("Not implemented");
2290
+ }
2291
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2292
+ async play(t) {
2293
+ throw new Error("Not implemented");
2294
+ }
2295
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2296
+ async freeRounds(t) {
2297
+ throw new Error("Not implemented");
2298
+ }
2299
+ async getBalance() {
2300
+ throw new Error("Not implemented");
2301
+ }
2302
+ async showHistory() {
2303
+ throw new Error("Not implemented");
2304
+ }
2195
2305
  }
2196
- class Ps {
2306
+ class xs {
2197
2307
  constructor(t) {
2198
2308
  b(this, "socket", null);
2199
2309
  b(this, "webSocketUrl");
@@ -2253,7 +2363,7 @@ class Ps {
2253
2363
  s !== -1 && this.eventListeners[t].splice(s, 1);
2254
2364
  }
2255
2365
  }
2256
- function Le(i) {
2366
+ function Be(i) {
2257
2367
  return JSON.parse(i == null ? void 0 : i.data);
2258
2368
  }
2259
2369
  function Os(i) {
@@ -2264,20 +2374,20 @@ function Nt(i) {
2264
2374
  var t;
2265
2375
  return ((t = i == null ? void 0 : i.header) == null ? void 0 : t.name) === "RealityCheck";
2266
2376
  }
2267
- function Fe(i) {
2377
+ function Ge(i) {
2268
2378
  return i.header.name === "GameEvent";
2269
2379
  }
2270
- function xs(i) {
2271
- return Fe(i) && i.body.event === "OPEN_GAME";
2380
+ function Us(i) {
2381
+ return Ge(i) && i.body.event === "OPEN_GAME";
2272
2382
  }
2273
- function Dt(i) {
2383
+ function Gt(i) {
2274
2384
  return i.header.code !== 1;
2275
2385
  }
2276
- function Us(i) {
2277
- return Fe(i) && i.body.event.includes("_RESULT");
2386
+ function Ls(i) {
2387
+ return Ge(i) && i.body.event.includes("_RESULT");
2278
2388
  }
2279
- var ie, Ie;
2280
- class Rs extends Ps {
2389
+ var ne, Te;
2390
+ class Rs extends xs {
2281
2391
  constructor(e, s) {
2282
2392
  const a = new URL(e.apiUrl);
2283
2393
  a.searchParams.set("cageCode", e.cageCode), a.searchParams.set("gameCode", e.gameCode), a.searchParams.set("operatorCode", e.operatorCode), a.searchParams.set("playMode", e.playMode), a.searchParams.set("token", e.token), a.searchParams.set("username", e.username);
@@ -2311,13 +2421,13 @@ class Rs extends Ps {
2311
2421
  */
2312
2422
  b(this, "seqId", 0);
2313
2423
  b(this, "gameCode");
2314
- M(this, ie);
2315
- M(this, Ie);
2424
+ M(this, ne);
2425
+ M(this, Te);
2316
2426
  b(this, "onMessage", (e) => {
2317
- const s = Le(e);
2318
- (Fe(s) || Os(s) || Nt(s)) && this.sendAcknowledgement(s), Nt(s) && this.handleRealityCheck(s);
2427
+ const s = Be(e);
2428
+ (Ge(s) || Os(s) || Nt(s)) && this.sendAcknowledgement(s), Nt(s) && this.handleRealityCheck(s);
2319
2429
  });
2320
- this.eventListeners.realityCheck = [], this.gameCode = e.gameCode, v(this, ie, s.requestTimeoutMs), v(this, Ie, s.gameVersion ?? "unknown"), this.addEventListener("message", this.onMessage);
2430
+ this.eventListeners.realityCheck = [], this.gameCode = e.gameCode, v(this, ne, s.requestTimeoutMs), v(this, Te, s.gameVersion ?? "unknown"), this.addEventListener("message", this.onMessage);
2321
2431
  }
2322
2432
  handleRealityCheck(e) {
2323
2433
  this.eventListeners.realityCheck.forEach((s) => {
@@ -2354,89 +2464,89 @@ class Rs extends Ps {
2354
2464
  }
2355
2465
  request(e, s) {
2356
2466
  const a = this.buildPayload(e, s);
2357
- return new Promise((r, c) => {
2358
- setTimeout(() => c({ type: "timeout" }), k(this, ie));
2359
- const g = (h) => {
2360
- const p = Le(h);
2467
+ return new Promise((c, o) => {
2468
+ setTimeout(() => o({ type: "timeout" }), k(this, ne));
2469
+ const p = (h) => {
2470
+ const w = Be(h);
2361
2471
  try {
2362
- e.cId === p.header.cId && (this.removeEventListener("message", g), p.header.code === 1 ? r(p) : c({ message: p, type: "error" }));
2472
+ e.cId === w.header.cId && (this.removeEventListener("message", p), w.header.code === 1 ? c(w) : o({ message: w, type: "error" }));
2363
2473
  } catch {
2364
- c({ message: p, type: "error" });
2474
+ o({ message: w, type: "error" });
2365
2475
  }
2366
2476
  };
2367
- this.addEventListener("message", g), this.send(a);
2477
+ this.addEventListener("message", p), this.send(a);
2368
2478
  });
2369
2479
  }
2370
2480
  freeRounds(e) {
2371
2481
  const s = this.buildHeader("ActivateFreeRound");
2372
2482
  return this.request(s, e).then((a) => a.body).catch((a) => {
2373
- var r;
2374
- throw { data: (r = a == null ? void 0 : a.message) == null ? void 0 : r.body, type: a.type };
2483
+ var c;
2484
+ throw { data: (c = a == null ? void 0 : a.message) == null ? void 0 : c.body, type: a.type };
2375
2485
  });
2376
2486
  }
2377
2487
  async authenticate(e = !1) {
2378
2488
  const s = this.buildHeader("Authenticate"), a = {
2379
2489
  clientType: 3,
2380
- version: k(this, Ie),
2490
+ version: k(this, Te),
2381
2491
  reconnect: e
2382
2492
  };
2383
- return this.request(s, a).then((r) => r.body).catch((r) => {
2384
- var c;
2385
- throw { data: (c = r == null ? void 0 : r.message) == null ? void 0 : c.body, type: r.type };
2493
+ return this.request(s, a).then((c) => c.body).catch((c) => {
2494
+ var o;
2495
+ throw { data: (o = c == null ? void 0 : c.message) == null ? void 0 : o.body, type: c.type };
2386
2496
  });
2387
2497
  }
2388
2498
  async getBalance() {
2389
2499
  const e = this.buildHeader("GetBalance"), s = {};
2390
2500
  return this.request(e, s).then((a) => a.body).catch((a) => {
2391
- var r;
2392
- throw { data: (r = a == null ? void 0 : a.message) == null ? void 0 : r.body, type: a.type };
2501
+ var c;
2502
+ throw { data: (c = a == null ? void 0 : a.message) == null ? void 0 : c.body, type: a.type };
2393
2503
  });
2394
2504
  }
2395
2505
  async openGame() {
2396
2506
  const e = this.buildHeader("OpenGame"), s = {
2397
2507
  gameCode: this.gameCode
2398
2508
  };
2399
- return new Promise((a, r) => {
2400
- const c = (g) => {
2401
- const h = Le(g);
2402
- xs(h) ? (this.removeEventListener("message", c), a(h.body)) : Dt(h) && r({ data: h.body, type: "error" });
2509
+ return new Promise((a, c) => {
2510
+ const o = (p) => {
2511
+ const h = Be(p);
2512
+ Us(h) ? (this.removeEventListener("message", o), a(h.body)) : Gt(h) && c({ data: h.body, type: "error" });
2403
2513
  };
2404
- this.addEventListener("message", c), this.request(e, s).catch(
2405
- (g) => {
2514
+ this.addEventListener("message", o), this.request(e, s).catch(
2515
+ (p) => {
2406
2516
  var h;
2407
- return r({ data: (h = g == null ? void 0 : g.message) == null ? void 0 : h.body, type: g.type });
2517
+ return c({ data: (h = p == null ? void 0 : p.message) == null ? void 0 : h.body, type: p.type });
2408
2518
  }
2409
2519
  );
2410
2520
  });
2411
2521
  }
2412
2522
  sendAcknowledgement(e) {
2413
- const { name: s, cId: a } = e.header, r = this.buildHeader(s, a), c = this.buildPayload(r, {});
2414
- this.send(c);
2523
+ const { name: s, cId: a } = e.header, c = this.buildHeader(s, a), o = this.buildPayload(c, {});
2524
+ this.send(o);
2415
2525
  }
2416
2526
  sendAction(e, s) {
2417
- const a = this.buildHeader("GameAction"), r = {
2527
+ const a = this.buildHeader("GameAction"), c = {
2418
2528
  ...this.getBodyExtras(e),
2419
2529
  data: s
2420
2530
  };
2421
- return new Promise((c, g) => {
2422
- const h = (p) => {
2423
- const m = Le(p);
2424
- Fe(m) && r.seqId === m.body.correlationSeqId && (this.removeEventListener("message", h), Us(m) ? c(m.body) : Dt(m) && g({ data: m.body, type: "error" }));
2531
+ return new Promise((o, p) => {
2532
+ const h = (w) => {
2533
+ const g = Be(w);
2534
+ Ge(g) && c.seqId === g.body.correlationSeqId && (this.removeEventListener("message", h), Ls(g) ? o(g.body) : Gt(g) && p({ data: g.body, type: "error" }));
2425
2535
  };
2426
- this.addEventListener("message", h), this.request(a, r).catch(
2427
- (p) => {
2428
- var m;
2429
- return g({ data: (m = p == null ? void 0 : p.message) == null ? void 0 : m.body, type: p.type });
2536
+ this.addEventListener("message", h), this.request(a, c).catch(
2537
+ (w) => {
2538
+ var g;
2539
+ return p({ data: (g = w == null ? void 0 : w.message) == null ? void 0 : g.body, type: w.type });
2430
2540
  }
2431
2541
  );
2432
2542
  });
2433
2543
  }
2434
2544
  setRequestTimeoutMs(e) {
2435
- v(this, ie, e);
2545
+ v(this, ne, e);
2436
2546
  }
2437
2547
  }
2438
- ie = new WeakMap(), Ie = new WeakMap();
2439
- const Ls = {
2548
+ ne = new WeakMap(), Te = new WeakMap();
2549
+ const Bs = {
2440
2550
  CA_BC: "CA",
2441
2551
  CA_ON: "CA",
2442
2552
  GER: "DE",
@@ -2445,10 +2555,10 @@ const Ls = {
2445
2555
  US_NJ: "US",
2446
2556
  USA: "US"
2447
2557
  };
2448
- function Gt(i) {
2449
- return !i || i === "NOT_APPLICABLE" ? null : Ls[i] ?? i;
2558
+ function Ht(i) {
2559
+ return !i || i === "NOT_APPLICABLE" ? null : Bs[i] ?? i;
2450
2560
  }
2451
- function Jt(i) {
2561
+ function Yt(i) {
2452
2562
  const t = i.contract;
2453
2563
  return t ? {
2454
2564
  contract: {
@@ -2459,7 +2569,7 @@ function Jt(i) {
2459
2569
  coinValueInCents: t.coinValueInCents,
2460
2570
  country: t.countryCode,
2461
2571
  currency: t.currencyCode,
2462
- jurisdiction: Gt(t.jurisdictionCode),
2572
+ jurisdiction: Ht(t.jurisdictionCode),
2463
2573
  uiMessages: t.uiMessages,
2464
2574
  username: t.username
2465
2575
  }
@@ -2472,21 +2582,21 @@ function Jt(i) {
2472
2582
  coinValueInCents: i.coinValueInCents,
2473
2583
  country: i.countryCode,
2474
2584
  currency: i.currencyCode,
2475
- jurisdiction: Gt(i.jurisdictionCode),
2585
+ jurisdiction: Ht(i.jurisdictionCode),
2476
2586
  uiMessages: i.uiMessages,
2477
2587
  username: i.username
2478
2588
  }
2479
2589
  };
2480
2590
  }
2481
- function Yt(i) {
2591
+ function Zt(i) {
2482
2592
  var t, e;
2483
2593
  return {
2484
2594
  // SDK error codes are the same as RGS error codes so we don't need any mapping here
2485
- code: ((t = i.data) == null ? void 0 : t.code) ?? He.UNKNOWN,
2595
+ code: ((t = i.data) == null ? void 0 : t.code) ?? se.UNKNOWN,
2486
2596
  details: (e = i.data) == null ? void 0 : e.details
2487
2597
  };
2488
2598
  }
2489
- function Zt(i, t, e) {
2599
+ function es(i, t, e) {
2490
2600
  const s = t.contract;
2491
2601
  if (!s) {
2492
2602
  const a = t.data;
@@ -2512,22 +2622,22 @@ function Zt(i, t, e) {
2512
2622
  coins: t.balance,
2513
2623
  version: t.balanceVersion
2514
2624
  },
2515
- freeRounds: (a.FREE_ROUNDS ?? []).map((r) => ({
2625
+ freeRounds: (a.FREE_ROUNDS ?? []).map((c) => ({
2516
2626
  conf: {
2517
- base: r.conf.baseBet,
2518
- multiplier: r.conf.betMultiplier,
2519
- numAwarded: r.conf.numAwarded
2627
+ base: c.conf.baseBet,
2628
+ multiplier: c.conf.betMultiplier,
2629
+ numAwarded: c.conf.numAwarded
2520
2630
  },
2521
2631
  data: {
2522
- numPlayed: r.data.numPlayed,
2523
- win: r.data.winAmount,
2524
- numLeft: r.data.numLeft
2632
+ numPlayed: c.data.numPlayed,
2633
+ win: c.data.winAmount,
2634
+ numLeft: c.data.numLeft
2525
2635
  },
2526
- id: r.id,
2527
- rejectable: r.rejectable,
2528
- skippable: r.skippable,
2529
- status: r.status,
2530
- type: r.type
2636
+ id: c.id,
2637
+ rejectable: c.rejectable,
2638
+ skippable: c.skippable,
2639
+ status: c.status,
2640
+ type: c.type
2531
2641
  })),
2532
2642
  gameModel: a.additionalConfigData.gameModelFile,
2533
2643
  metaData: a.gameConfigData.metaData,
@@ -2606,15 +2716,15 @@ function Zt(i, t, e) {
2606
2716
  data: e ? e(t.opaqueGameServerToUi) : t.opaqueGameServerToUi
2607
2717
  };
2608
2718
  }
2609
- function es(i) {
2719
+ function ts(i) {
2610
2720
  var t, e;
2611
2721
  return {
2612
2722
  // SDK error codes are the same as RGS error codes so we don't need any mapping here
2613
- code: ((t = i.data) == null ? void 0 : t.code) ?? He.UNKNOWN,
2723
+ code: ((t = i.data) == null ? void 0 : t.code) ?? se.UNKNOWN,
2614
2724
  details: (e = i.data) == null ? void 0 : e.details
2615
2725
  };
2616
2726
  }
2617
- function ts(i, t) {
2727
+ function ss(i, t) {
2618
2728
  const e = i.contract;
2619
2729
  if (!e) {
2620
2730
  const s = i.data;
@@ -2714,22 +2824,22 @@ function ts(i, t) {
2714
2824
  data: t ? t(i.opaqueGameServerToUi) : i.opaqueGameServerToUi
2715
2825
  };
2716
2826
  }
2717
- function ss(i) {
2827
+ function is(i) {
2718
2828
  var t, e;
2719
2829
  return {
2720
2830
  // SDK error codes are the same as RGS error codes so we don't need any mapping here
2721
- code: ((t = i.data) == null ? void 0 : t.code) ?? He.UNKNOWN,
2831
+ code: ((t = i.data) == null ? void 0 : t.code) ?? se.UNKNOWN,
2722
2832
  details: (e = i.data) == null ? void 0 : e.details
2723
2833
  };
2724
2834
  }
2725
- const oi = {
2726
- parseAuthenticateResponse: Jt,
2727
- parseAuthenticateError: Yt,
2728
- parseOpenGameResponse: Zt,
2729
- parseOpenGameError: es,
2730
- parsePlayResponse: ts,
2731
- parsePlayError: ss
2732
- }, Bs = {
2835
+ const ri = {
2836
+ parseAuthenticateResponse: Yt,
2837
+ parseAuthenticateError: Zt,
2838
+ parseOpenGameResponse: es,
2839
+ parseOpenGameError: ts,
2840
+ parsePlayResponse: ss,
2841
+ parsePlayError: is
2842
+ }, _s = {
2733
2843
  aze: "az",
2734
2844
  bul: "bg",
2735
2845
  chi: "zh",
@@ -2762,46 +2872,16 @@ const oi = {
2762
2872
  tur: "tr",
2763
2873
  ukr: "uk",
2764
2874
  vie: "vi"
2765
- }, { device: _s } = L(navigator.userAgent), Fs = P("KalambaBullseyePlugin", "color:#000000;font-weight:bold;");
2766
- class ri extends As {
2875
+ }, { device: Fs } = B(navigator.userAgent), Ds = P("KalambaBullseyePlugin", "color:#000000;font-weight:bold;");
2876
+ class ci extends Ps {
2767
2877
  constructor(...e) {
2768
2878
  super(...e);
2769
2879
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2770
2880
  // @ts-ignore
2771
2881
  b(this, "socket");
2772
- b(this, "error");
2773
- this.on("openGame", async () => {
2774
- try {
2775
- this.error = void 0;
2776
- const s = await this.openGame();
2777
- this.send("openGameResponse", s);
2778
- } catch (s) {
2779
- this.error = s, this.send("openGameError", s);
2780
- }
2781
- }), this.on("play", async (s) => {
2782
- try {
2783
- this.error = void 0;
2784
- const a = await this.play(s);
2785
- this.send("playResponse", a);
2786
- } catch (a) {
2787
- this.error = a, this.send("playError", a);
2788
- }
2789
- }), this.on("freeRounds", async (s) => {
2790
- try {
2791
- this.error = void 0, await this.socket.freeRounds(s), this.send("freeRoundsResponse", s);
2792
- } catch (a) {
2793
- this.error = a, this.send("freeRoundsError", a);
2794
- }
2795
- }), this.on("getBalance", async () => {
2796
- try {
2797
- this.error = void 0;
2798
- const s = await this.socket.getBalance();
2799
- this.send("balance", { balance: s.balance });
2800
- } catch {
2801
- }
2802
- }), this.on("configured", (s) => {
2882
+ this.on("configured", (s) => {
2803
2883
  this.socket.setRequestTimeoutMs(s.ui.requestTimeoutMs);
2804
- }), this.registerFromSdkEvents();
2884
+ });
2805
2885
  }
2806
2886
  initialize(e) {
2807
2887
  this.socket = new Rs(e, {
@@ -2813,9 +2893,9 @@ class ri extends As {
2813
2893
  messageCode: "TOO_MANY_OPEN_GAMES",
2814
2894
  messageKey: "RgsError.TOO_MANY_OPEN_GAMES"
2815
2895
  }) : s.code === 1011 ? this.error || this.send("error", { type: "CLOSE", messageCode: "UNKNOWN", messageKey: "RgsError.UNKNOWN" }) : this.reconnect();
2816
- }), ["mobile", "tablet"].includes(_s.type ?? "") && document.addEventListener("visibilitychange", async () => {
2896
+ }), ["mobile", "tablet"].includes(Fs.type ?? "") && document.addEventListener("visibilitychange", async () => {
2817
2897
  document.hidden || (this.socket.socket ? this.socket.socket && [WebSocket.CONNECTING, WebSocket.OPEN].includes(this.socket.socket.readyState) && this.socket.close() : this.reconnect());
2818
- })), this.socket.addEventListener("error", (s) => Fs("error", s)), this.socket.addEventListener("realityCheck", (s) => {
2898
+ })), this.socket.addEventListener("error", (s) => Ds("error", s)), this.socket.addEventListener("realityCheck", (s) => {
2819
2899
  this.send("realityCheck", s);
2820
2900
  });
2821
2901
  }
@@ -2827,86 +2907,97 @@ class ri extends As {
2827
2907
  }
2828
2908
  }
2829
2909
  async openGame() {
2830
- var H, Oe;
2831
- const e = new URLSearchParams(window.location.search), s = e.get("apiUrl"), a = e.get("cageCode"), r = e.get("gameCode"), c = e.get("operatorCode"), g = e.get("playMode"), h = e.get("token"), p = e.get("username"), m = e.get("gameHistoryUrl"), C = e.get("homeUrl") ?? void 0, A = e.get("cashierUrl") ?? void 0;
2832
- this.initialize({ apiUrl: s, cageCode: a, gameCode: r, operatorCode: c, playMode: g, token: h, username: p });
2910
+ var H, xe;
2911
+ const e = new URLSearchParams(window.location.search), s = e.get("apiUrl"), a = e.get("cageCode"), c = e.get("gameCode"), o = e.get("operatorCode"), p = e.get("playMode"), h = e.get("token"), w = e.get("username"), g = e.get("gameHistoryUrl"), E = e.get("homeUrl") ?? void 0, A = e.get("cashierUrl") ?? void 0;
2912
+ this.initialize({ apiUrl: s, cageCode: a, gameCode: c, operatorCode: o, playMode: p, token: h, username: w });
2833
2913
  try {
2834
2914
  await this.socket.connect();
2835
2915
  } catch {
2836
- throw { type: "error", data: { code: He.CONNECTION_ERROR } };
2916
+ throw { type: "error", data: { code: se.CONNECTION_ERROR } };
2837
2917
  }
2838
2918
  let G;
2839
2919
  try {
2840
2920
  G = await this.socket.authenticate();
2841
- } catch (X) {
2842
- throw { type: X.type, data: X.type === "error" ? Yt(X.data) : void 0 };
2921
+ } catch (Q) {
2922
+ throw { type: Q.type, data: Q.type === "error" ? Zt(Q.data) : void 0 };
2843
2923
  }
2844
- let pe;
2924
+ let me;
2845
2925
  try {
2846
- pe = await this.socket.openGame();
2847
- } catch (X) {
2848
- throw { type: X.type, data: X.type === "error" ? es(X.data) : void 0 };
2926
+ me = await this.socket.openGame();
2927
+ } catch (Q) {
2928
+ throw { type: Q.type, data: Q.type === "error" ? ts(Q.data) : void 0 };
2849
2929
  }
2850
- const _ = Jt(G), K = Zt(
2930
+ const F = Yt(G), Y = es(
2851
2931
  G,
2852
- pe,
2853
- this.config.dataDecoder && bt[this.config.dataDecoder]
2932
+ me,
2933
+ this.config.dataDecoder && yt[this.config.dataDecoder]
2854
2934
  );
2855
2935
  this.sdkConfig.api = {
2856
2936
  ...this.sdkConfig.api,
2857
2937
  brand: a,
2858
- game: r,
2859
- integration: c,
2860
- jurisdiction: _.contract.jurisdiction,
2861
- playMode: g,
2862
- user: _.contract.username,
2938
+ game: c,
2939
+ integration: o,
2940
+ jurisdiction: F.contract.jurisdiction,
2941
+ playMode: p,
2942
+ user: F.contract.username,
2863
2943
  integrationData: {
2864
2944
  token: h
2865
2945
  },
2866
- country: _.contract.country,
2867
- currency: _.contract.currency,
2868
- coinValueInCents: _.contract.coinValueInCents,
2869
- gameHistoryUrl: m,
2870
- homeUrl: C,
2946
+ country: F.contract.country,
2947
+ currency: F.contract.currency,
2948
+ coinValueInCents: F.contract.coinValueInCents,
2949
+ gameHistoryUrl: g,
2950
+ homeUrl: E,
2871
2951
  cashierUrl: A,
2872
- backendSessionId: K.contract.sessionId,
2873
- lastRoundId: K.contract.roundId
2952
+ backendSessionId: Y.contract.sessionId
2874
2953
  };
2875
- const Q = (Oe = (H = e.get("languageCode")) == null ? void 0 : H.split("_")) == null ? void 0 : Oe[0];
2876
- return Q && (this.sdkConfig.ui.language = Q.length === 3 ? Bs[Q] ?? Q : Q), K;
2954
+ const K = (xe = (H = e.get("languageCode")) == null ? void 0 : H.split("_")) == null ? void 0 : xe[0];
2955
+ return K && (this.sdkConfig.ui.language = K.length === 3 ? _s[K] ?? K : K), Y;
2877
2956
  }
2878
2957
  async play(e) {
2879
2958
  for (; !this.socket.socket; )
2880
2959
  await new Promise((A) => setTimeout(() => A(), 500));
2881
2960
  const {
2882
- contract: { bet: s, forcedOutcomes: a, ...r },
2883
- extra: c,
2884
- payloadToInject: g,
2885
- actionType: h
2886
- } = e, p = this.config.dataEncoder && os[this.config.dataEncoder], m = {
2961
+ contract: { bet: s, forcedOutcomes: a, ...c },
2962
+ extra: o,
2963
+ payloadToInject: p
2964
+ } = e, h = this.config.dataEncoder && rs[this.config.dataEncoder], w = s === null ? "BG_ACTION" : "SPIN", g = {
2887
2965
  bet: s ? { baseBet: s.base, betMultiplier: s.multiplier } : void 0,
2888
2966
  forcedOutcomes: a,
2889
2967
  // TODO: get rid of contractRest - it' a legacy from old RGS
2890
- ...r,
2891
- ...g,
2892
- opaqueUiToGameServer: p ? p(c) : c
2968
+ ...c,
2969
+ ...p,
2970
+ opaqueUiToGameServer: h ? h(o) : o
2893
2971
  };
2894
- let C;
2972
+ let E;
2895
2973
  try {
2896
- C = await this.socket.sendAction(h, m);
2974
+ E = await this.socket.sendAction(w, g);
2897
2975
  } catch (A) {
2898
- throw { type: A.type, data: A.type === "error" ? ss(A.data) : void 0 };
2976
+ throw { type: A.type, data: A.type === "error" ? is(A.data) : void 0 };
2899
2977
  }
2900
- return ts(C, this.config.dataDecoder && bt[this.config.dataDecoder]);
2978
+ return ss(E, this.config.dataDecoder && yt[this.config.dataDecoder]);
2901
2979
  }
2902
- registerFromSdkEvents() {
2903
- this.on("history", () => {
2904
- const {
2905
- api: { game: e, integration: s, integrationData: a, jurisdiction: r, user: c, gameHistoryUrl: g },
2906
- ui: { language: h }
2907
- } = this.sdkConfig, p = c.replace(/^user_/, "").replace(new RegExp(`_${s}$`), ""), m = new URL(window.location.href);
2908
- m.hostname = m.hostname.replace(/^v\./, "").replace(/^play\./, "history."), m.pathname = m.pathname.replace(/(\/[0-9]+\.[0-9]+\.[0-9]+)?\/wrapper\.html/, "/list/index.html"), m.search = "", m.searchParams.set("apiUrl", new URL(g).origin), m.searchParams.set("gameCode", e), r && m.searchParams.set("jurisdiction", r), m.searchParams.set("operatorCode", s), m.searchParams.set("token", a.token), m.searchParams.set("username", p), m.searchParams.set("languageCode", h), this.config.gameHistoryUrl && m.searchParams.set("gameHistoryUrl", this.config.gameHistoryUrl), window.open(m.toString(), "_blank");
2909
- });
2980
+ async freeRounds(e) {
2981
+ try {
2982
+ await this.socket.freeRounds(e);
2983
+ } catch {
2984
+ throw { type: "error", data: { code: se.UNKNOWN } };
2985
+ }
2986
+ return e;
2987
+ }
2988
+ async getBalance() {
2989
+ try {
2990
+ return { balance: (await this.socket.getBalance()).balance };
2991
+ } catch {
2992
+ throw { type: "error", data: { code: se.UNKNOWN } };
2993
+ }
2994
+ }
2995
+ async showHistory() {
2996
+ const {
2997
+ api: { game: e, integration: s, integrationData: a, jurisdiction: c, user: o, gameHistoryUrl: p },
2998
+ ui: { language: h }
2999
+ } = this.sdkConfig, w = o.replace(/^user_/, "").replace(new RegExp(`_${s}$`), ""), g = new URL(window.location.href);
3000
+ g.hostname = g.hostname.replace(/^v\./, "").replace(/^play\./, "history."), g.pathname = g.pathname.replace(/(\/[0-9]+\.[0-9]+\.[0-9]+)?\/wrapper\.html/, "/list/index.html"), g.search = "", g.searchParams.set("apiUrl", new URL(p).origin), g.searchParams.set("gameCode", e), c && g.searchParams.set("jurisdiction", c), g.searchParams.set("operatorCode", s), g.searchParams.set("token", a.token), g.searchParams.set("username", w), g.searchParams.set("languageCode", h), this.config.gameHistoryUrl && g.searchParams.set("gameHistoryUrl", this.config.gameHistoryUrl), window.open(g.toString(), "_blank");
2910
3001
  }
2911
3002
  }
2912
3003
  class Ns {
@@ -2917,8 +3008,8 @@ class Ns {
2917
3008
  this.trackers = t, this.config = e, this.sdkConfig = s;
2918
3009
  }
2919
3010
  on(t, e, s) {
2920
- const a = function(c) {
2921
- c.data.message !== `kalamba:wrapper-telemetry:${t}` && c.data.message !== `kalamba:wrapper:${t}` || e(c.data.payload);
3011
+ const a = function(o) {
3012
+ o.data.message !== `kalamba:wrapper-telemetry:${t}` && o.data.message !== `kalamba:wrapper:${t}` || e(o.data.payload);
2922
3013
  };
2923
3014
  window.addEventListener("message", a, s);
2924
3015
  }
@@ -2926,14 +3017,14 @@ class Ns {
2926
3017
  this.trackers.forEach((s) => s.track(t, e));
2927
3018
  }
2928
3019
  }
2929
- function Ht(i) {
3020
+ function Vt(i) {
2930
3021
  return i.reduce((t, e) => t + e, 0);
2931
3022
  }
2932
- function Ds(i) {
2933
- const t = i.length, e = Ht(i) / t, s = i.map((r) => Math.pow(r - e, 2)), a = Ht(s) / t;
3023
+ function Gs(i) {
3024
+ const t = i.length, e = Vt(i) / t, s = i.map((c) => Math.pow(c - e, 2)), a = Vt(s) / t;
2934
3025
  return Math.sqrt(a);
2935
3026
  }
2936
- class Vt {
3027
+ class zt {
2937
3028
  constructor() {
2938
3029
  b(this, "rafId", -1);
2939
3030
  b(this, "startTime", 0);
@@ -2941,11 +3032,11 @@ class Vt {
2941
3032
  b(this, "frames", []);
2942
3033
  b(this, "calculateFPS", () => {
2943
3034
  const t = Math.floor((this.stopTime - this.startTime) / 1e3);
2944
- return this.frames.map((e) => Math.floor((e - this.startTime) / 1e3)).reduce((e, s, a, r) => (r[a] !== r[a - 1] ? e.push(1) : e[e.length - 1]++, e), []).slice(0, t);
3035
+ return this.frames.map((e) => Math.floor((e - this.startTime) / 1e3)).reduce((e, s, a, c) => (c[a] !== c[a - 1] ? e.push(1) : e[e.length - 1]++, e), []).slice(0, t);
2945
3036
  });
2946
3037
  b(this, "getReport", () => {
2947
- const t = this.calculateFPS(), e = Math.floor(this.frames.length / ((this.stopTime - this.startTime) / 1e3)), s = t.length > 0 ? Math.max(...t) : e, a = t.length > 0 ? Math.min(...t) : e, r = t.length > 0 ? Ds(t) : 0;
2948
- return { fpsAvg: e, fpsMax: s, fpsMin: a, fpsStdDev: r };
3038
+ const t = this.calculateFPS(), e = Math.floor(this.frames.length / ((this.stopTime - this.startTime) / 1e3)), s = t.length > 0 ? Math.max(...t) : e, a = t.length > 0 ? Math.min(...t) : e, c = t.length > 0 ? Gs(t) : 0;
3039
+ return { fpsAvg: e, fpsMax: s, fpsMin: a, fpsStdDev: c };
2949
3040
  });
2950
3041
  b(this, "start", () => {
2951
3042
  this.startTime = Date.now(), this.frames = [], this.trackFrames();
@@ -2958,8 +3049,8 @@ class Vt {
2958
3049
  });
2959
3050
  }
2960
3051
  }
2961
- const Gs = "landscape", Hs = "portrait";
2962
- function Vs() {
3052
+ const Hs = "landscape", Vs = "portrait";
3053
+ function zs() {
2963
3054
  try {
2964
3055
  const i = document.createElement("canvas");
2965
3056
  return !!window.WebGLRenderingContext && (i.getContext("webgl") || i.getContext("experimental-webgl")) instanceof WebGLRenderingContext;
@@ -2967,7 +3058,7 @@ function Vs() {
2967
3058
  return !1;
2968
3059
  }
2969
3060
  }
2970
- async function zs() {
3061
+ async function qs() {
2971
3062
  if (!window.createImageBitmap)
2972
3063
  return !1;
2973
3064
  const e = await (await fetch("data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAEAAQAcJaQAA3AA/v3AgAA=")).blob();
@@ -2977,33 +3068,33 @@ async function zs() {
2977
3068
  return !1;
2978
3069
  }
2979
3070
  }
2980
- function rt() {
2981
- return window.innerWidth >= window.innerHeight ? Gs : Hs;
3071
+ function dt() {
3072
+ return window.innerWidth >= window.innerHeight ? Hs : Vs;
2982
3073
  }
2983
- var Ne, ae, ne, oe, Ae, De, Pe, Ge;
2984
- class ci extends Ns {
3074
+ var He, oe, re, ce, Ae, Ve, Pe, ze;
3075
+ class di extends Ns {
2985
3076
  constructor(...e) {
2986
3077
  super(...e);
2987
3078
  b(this, "FPS_SAMPLE_INTERVAL", 1e4);
2988
3079
  // wrapper state
2989
- M(this, Ne, 0);
2990
- M(this, ae);
2991
- M(this, ne);
3080
+ M(this, He, 0);
2992
3081
  M(this, oe);
3082
+ M(this, re);
3083
+ M(this, ce);
2993
3084
  M(this, Ae, !1);
2994
- M(this, De, !1);
3085
+ M(this, Ve, !1);
2995
3086
  M(this, Pe, "");
2996
- M(this, Ge, []);
2997
- v(this, ne, {}), v(this, oe, this.deviceInfo()), v(this, ae, this.config.gameVersion), this.on("state", ({ balance: s }) => {
2998
- v(this, Ne, s);
3087
+ M(this, ze, []);
3088
+ v(this, re, {}), v(this, ce, this.deviceInfo()), v(this, oe, this.config.gameVersion), this.on("state", ({ balance: s }) => {
3089
+ v(this, He, s);
2999
3090
  }), this.on("autoplay", ({ action: s }) => {
3000
3091
  ["start", "resume"].includes(s) ? v(this, Ae, !0) : v(this, Ae, !1);
3001
3092
  }), this.on("settings", ({ fastPlay: s }) => {
3002
- s !== void 0 && v(this, De, s);
3093
+ s !== void 0 && v(this, Ve, s);
3003
3094
  }), this.registerEvents();
3004
3095
  }
3005
3096
  async registerEvents() {
3006
- k(this, oe).then((e) => {
3097
+ k(this, ce).then((e) => {
3007
3098
  this.track("Device Information", e);
3008
3099
  }), this.on("loadStart", () => {
3009
3100
  this.track("Game Loading", { progress: 0, step: "initial" });
@@ -3017,9 +3108,9 @@ class ci extends Ns {
3017
3108
  systemMessageType: e.type
3018
3109
  });
3019
3110
  }), this.on("openGameResponse", async (e) => {
3020
- v(this, Pe, e.contract.stateType.nextRound), v(this, ne, {
3111
+ v(this, Pe, e.contract.stateType.nextRound), v(this, re, {
3021
3112
  balanceInCoins: e.contract.balance.coins,
3022
- clientVersion: k(this, ae),
3113
+ clientVersion: k(this, oe),
3023
3114
  coinValueInCents: this.sdkConfig.api.coinValueInCents,
3024
3115
  coinValueInCentsFloat: this.sdkConfig.api.coinValueInCents,
3025
3116
  currency: this.sdkConfig.api.currency,
@@ -3042,17 +3133,17 @@ class ci extends Ns {
3042
3133
  // rtpVariant: 'unknown',
3043
3134
  serverVersion: e.contract.metaData.version
3044
3135
  // testVariants: '',
3045
- }), this.track("Game Open", k(this, ne));
3136
+ }), this.track("Game Open", k(this, re));
3046
3137
  }), this.on("playCycleEnd", async (e) => {
3047
- const s = await k(this, oe), { base: a, multiplier: r } = e.contract.bet.lastPaid ?? {}, c = e.contract.balance.coins, g = e.contract.bet.lastPaid.base * e.contract.bet.lastPaid.multiplier, h = e.contract.win.total, p = h - g, m = "spin", C = e.contract.roundId;
3138
+ const s = await k(this, ce), { base: a, multiplier: c } = e.contract.bet.lastPaid ?? {}, o = e.contract.balance.coins, p = e.contract.bet.lastPaid.base * e.contract.bet.lastPaid.multiplier, h = e.contract.win.total, w = h - p, g = "spin", E = e.contract.roundId;
3048
3139
  this.track("Betting Activity", {
3049
- balance: c - p,
3050
- balanceAfter: c,
3140
+ balance: o - w,
3141
+ balanceAfter: o,
3051
3142
  baseBet: a,
3052
3143
  // baseBetIndex,
3053
- betMultiplier: r,
3054
- betType: m,
3055
- gameVersion: k(this, ae),
3144
+ betMultiplier: c,
3145
+ betType: g,
3146
+ gameVersion: k(this, oe),
3056
3147
  coinValueInCents: this.sdkConfig.api.coinValueInCents,
3057
3148
  coinValueInCentsFloat: this.sdkConfig.api.coinValueInCents,
3058
3149
  currency: this.sdkConfig.api.currency,
@@ -3060,20 +3151,20 @@ class ci extends Ns {
3060
3151
  gameCode: this.sdkConfig.api.game,
3061
3152
  gameCodeServer: this.sdkConfig.api.game,
3062
3153
  isMobile: s.isMobile,
3063
- netResult: p,
3154
+ netResult: w,
3064
3155
  operatorName: "kalamba",
3065
- orientation: rt(),
3156
+ orientation: dt(),
3066
3157
  partnerId: this.sdkConfig.api.brand,
3067
3158
  partnerParentId: this.sdkConfig.api.integration,
3068
3159
  platform: "WEB",
3069
3160
  playMode: this.sdkConfig.api.playMode,
3070
- roundId: C,
3161
+ roundId: E,
3071
3162
  // TODO: uncomment when tracking TrackingEvent.GameSpin is implemented
3072
3163
  // roundTypes: [...this.#roundTypes],
3073
3164
  roundTypes: ["BaseGame"],
3074
- totalBet: g,
3165
+ totalBet: p,
3075
3166
  totalWin: h
3076
- }), v(this, Ge, []);
3167
+ }), v(this, ze, []);
3077
3168
  }), this.on("telemetry.click", (e) => {
3078
3169
  this.track("UI Interaction", {
3079
3170
  action: "click",
@@ -3088,17 +3179,17 @@ class ci extends Ns {
3088
3179
  }), this.reportFpsSample(), this.reportFpsRound();
3089
3180
  }
3090
3181
  reportFpsSample() {
3091
- const e = new Vt(), s = () => {
3182
+ const e = new zt(), s = () => {
3092
3183
  e.stop();
3093
- const r = e.getReport();
3094
- this.track("FPS Performance", { ...r, fpsType: "sample" }), a();
3184
+ const c = e.getReport();
3185
+ this.track("FPS Performance", { ...c, fpsType: "sample" }), a();
3095
3186
  }, a = async () => {
3096
3187
  e.start(), setTimeout(s, this.FPS_SAMPLE_INTERVAL);
3097
3188
  };
3098
3189
  a();
3099
3190
  }
3100
3191
  reportFpsRound() {
3101
- const e = new Vt();
3192
+ const e = new zt();
3102
3193
  this.on("playCycleStart", () => {
3103
3194
  e.start();
3104
3195
  }), this.on("playCycleEnd", () => {
@@ -3109,26 +3200,26 @@ class ci extends Ns {
3109
3200
  }
3110
3201
  getExtraUiInteractionData() {
3111
3202
  return {
3112
- orientation: rt(),
3203
+ orientation: dt(),
3113
3204
  stateType: k(this, Pe)
3114
3205
  };
3115
3206
  }
3116
3207
  async deviceInfo() {
3117
- var g;
3118
- const { browser: e, device: s, os: a } = L(navigator.userAgent), r = Vs(), c = await zs();
3208
+ var p;
3209
+ const { browser: e, device: s, os: a } = B(navigator.userAgent), c = zs(), o = await qs();
3119
3210
  return {
3120
3211
  browserName: e.name,
3121
3212
  browserVersion: e.version,
3122
- connection: (g = navigator.connection) == null ? void 0 : g.effectiveType,
3213
+ connection: (p = navigator.connection) == null ? void 0 : p.effectiveType,
3123
3214
  deviceName: s.model,
3124
3215
  deviceType: s.type,
3125
3216
  isMobile: ["mobile", "tablet"].includes(s.type ?? ""),
3126
- isWebGLSupported: r,
3127
- isWebPSupported: c,
3217
+ isWebGLSupported: c,
3218
+ isWebPSupported: o,
3128
3219
  manufacturer: s.vendor,
3129
3220
  operatingSystem: a.name,
3130
3221
  operatingSystemVersion: a.version,
3131
- orientation: rt(),
3222
+ orientation: dt(),
3132
3223
  pixelRatio: window.devicePixelRatio,
3133
3224
  screenHeight: window.screen.height,
3134
3225
  screenSize: `${window.screen.width}x${window.screen.height}`,
@@ -3140,59 +3231,59 @@ class ci extends Ns {
3140
3231
  };
3141
3232
  }
3142
3233
  }
3143
- Ne = new WeakMap(), ae = new WeakMap(), ne = new WeakMap(), oe = new WeakMap(), Ae = new WeakMap(), De = new WeakMap(), Pe = new WeakMap(), Ge = new WeakMap();
3144
- var qs = rs();
3145
- const zt = /* @__PURE__ */ cs(qs);
3146
- class is {
3234
+ He = new WeakMap(), oe = new WeakMap(), re = new WeakMap(), ce = new WeakMap(), Ae = new WeakMap(), Ve = new WeakMap(), Pe = new WeakMap(), ze = new WeakMap();
3235
+ var Ws = cs();
3236
+ const qt = /* @__PURE__ */ ds(Ws);
3237
+ class as {
3147
3238
  constructor(t, e) {
3148
3239
  b(this, "config");
3149
3240
  b(this, "sdkConfig");
3150
3241
  this.config = t, this.sdkConfig = e;
3151
3242
  }
3152
3243
  }
3153
- const qt = 25, Wt = 1e4;
3154
- var re, ce, de, W;
3155
- class di extends is {
3244
+ const Wt = 25, jt = 1e4;
3245
+ var de, le, ue, q;
3246
+ class li extends as {
3156
3247
  constructor(...e) {
3157
3248
  super(...e);
3158
- M(this, re, "https://europe-west3-stargazer-328808.cloudfunctions.net/collect-events");
3159
- M(this, ce);
3160
- M(this, de);
3161
- M(this, W, []);
3249
+ M(this, de, "https://europe-west3-stargazer-328808.cloudfunctions.net/collect-events");
3250
+ M(this, le);
3251
+ M(this, ue);
3252
+ M(this, q, []);
3162
3253
  b(this, "processQueueForced");
3163
- v(this, ce, (/* @__PURE__ */ new Date()).getTime()), v(this, W, []), this.processQueueForced = this.processQueue.bind(this, !0), this.schedule(), fetch(k(this, re), {
3254
+ v(this, le, (/* @__PURE__ */ new Date()).getTime()), v(this, q, []), this.processQueueForced = this.processQueue.bind(this, !0), this.schedule(), fetch(k(this, de), {
3164
3255
  method: "OPTIONS"
3165
- }).catch(zt), this.subscribe();
3256
+ }).catch(qt), this.subscribe();
3166
3257
  }
3167
3258
  subscribe() {
3168
3259
  window.addEventListener("beforeunload", this.processQueueForced, !1), window.addEventListener("pagehide", this.processQueueForced, !1), window.addEventListener("visibilitychange", this.processQueueForced, !1);
3169
3260
  }
3170
3261
  schedule() {
3171
- k(this, de) && clearTimeout(k(this, de)), v(this, de, window.setTimeout(() => this.processQueue(), Wt));
3262
+ k(this, ue) && clearTimeout(k(this, ue)), v(this, ue, window.setTimeout(() => this.processQueue(), jt));
3172
3263
  }
3173
3264
  send(e) {
3174
- v(this, ce, (/* @__PURE__ */ new Date()).getTime());
3265
+ v(this, le, (/* @__PURE__ */ new Date()).getTime());
3175
3266
  try {
3176
- navigator.sendBeacon(k(this, re), JSON.stringify(e));
3267
+ navigator.sendBeacon(k(this, de), JSON.stringify(e));
3177
3268
  } catch {
3178
- fetch(k(this, re), {
3269
+ fetch(k(this, de), {
3179
3270
  body: JSON.stringify(e),
3180
3271
  method: "POST",
3181
3272
  headers: {
3182
3273
  "Content-Type": "application/json"
3183
3274
  },
3184
3275
  keepalive: !0
3185
- }).catch(zt);
3276
+ }).catch(qt);
3186
3277
  }
3187
3278
  this.schedule();
3188
3279
  }
3189
3280
  addToQueue(e) {
3190
- k(this, W).push(e), this.processQueue();
3281
+ k(this, q).push(e), this.processQueue();
3191
3282
  }
3192
3283
  processQueue(e = !1) {
3193
- if (!(this.sdkConfig == null || !this.sdkConfig.ui.feature.allowTelemetry) && !(!e && k(this, W).length < qt && (/* @__PURE__ */ new Date()).getTime() - k(this, ce) < Wt))
3194
- for (; k(this, W).length; ) {
3195
- const s = k(this, W).splice(0, qt).map((a) => ({
3284
+ if (!(this.sdkConfig == null || !this.sdkConfig.ui.feature.allowTelemetry) && !(!e && k(this, q).length < Wt && (/* @__PURE__ */ new Date()).getTime() - k(this, le) < jt))
3285
+ for (; k(this, q).length; ) {
3286
+ const s = k(this, q).splice(0, Wt).map((a) => ({
3196
3287
  ...a,
3197
3288
  sessionID: this.sdkConfig.api.sessionId,
3198
3289
  userID: this.sdkConfig.api.user
@@ -3205,35 +3296,35 @@ class di extends is {
3205
3296
  eventName: e,
3206
3297
  eventParams: s,
3207
3298
  eventTimestamp: (/* @__PURE__ */ new Date()).getTime(),
3208
- eventUUID: ds()
3299
+ eventUUID: ls()
3209
3300
  });
3210
3301
  }
3211
3302
  }
3212
- re = new WeakMap(), ce = new WeakMap(), de = new WeakMap(), W = new WeakMap();
3213
- const Ws = P("LoggingTracker", "color:#000000;font-weight:bold;");
3214
- class li extends is {
3303
+ de = new WeakMap(), le = new WeakMap(), ue = new WeakMap(), q = new WeakMap();
3304
+ const js = P("LoggingTracker", "color:#000000;font-weight:bold;");
3305
+ class ui extends as {
3215
3306
  track(t, e) {
3216
- Ws(`@${this.sdkConfig.api.user}`, `[${t}]`, e);
3307
+ js(`@${this.sdkConfig.api.user}`, `[${t}]`, e);
3217
3308
  }
3218
3309
  }
3219
3310
  export {
3220
- Xs as BasicPlugin,
3221
- B as CasinoPlugin,
3222
- Js as DebuggingPlugin,
3223
- ni as EveryMatrixPlugin,
3224
- Ys as GigPlugin,
3225
- oi as KalambaBullseyeParsers,
3226
- ri as KalambaBullseyePlugin,
3227
- ci as KalambaStargazerPlugin,
3228
- di as KalambaStargazerTracker,
3229
- li as LoggingTracker,
3230
- Zs as OryxPlugin,
3231
- ei as PariplayPlugin,
3232
- ii as QuantaPlugin,
3233
- ti as RelaxFEIMPlugin,
3234
- As as RgsPlugin,
3235
- ai as SoftSwissPlugin,
3311
+ Js as BasicPlugin,
3312
+ _ as CasinoPlugin,
3313
+ Ys as DebuggingPlugin,
3314
+ oi as EveryMatrixPlugin,
3315
+ Zs as GigPlugin,
3316
+ ri as KalambaBullseyeParsers,
3317
+ ci as KalambaBullseyePlugin,
3318
+ di as KalambaStargazerPlugin,
3319
+ li as KalambaStargazerTracker,
3320
+ ui as LoggingTracker,
3321
+ ei as OryxPlugin,
3322
+ ti as PariplayPlugin,
3323
+ ai as QuantaPlugin,
3324
+ si as RelaxFEIMPlugin,
3325
+ Ps as RgsPlugin,
3326
+ ni as SoftSwissPlugin,
3236
3327
  Ns as TelemetryPlugin,
3237
- is as Tracker,
3238
- si as TukoPlugin
3328
+ as as Tracker,
3329
+ ii as TukoPlugin
3239
3330
  };