@oila/0account 3.4.7 → 3.4.9

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.
Files changed (68) hide show
  1. package/dist/cjs/{index-1e526aba.js → index-ef57218a.js} +370 -67
  2. package/dist/cjs/index-ef57218a.js.map +1 -0
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/loader.cjs.js.map +1 -1
  5. package/dist/cjs/qr-code_2.cjs.entry.js +358 -1278
  6. package/dist/cjs/qr-code_2.cjs.entry.js.map +1 -1
  7. package/dist/cjs/zero-account.cjs.js +2 -2
  8. package/dist/cjs/zero-account.cjs.js.map +1 -1
  9. package/dist/collection/collection-manifest.json +2 -2
  10. package/dist/collection/components/zero-account/enums.js +8 -8
  11. package/dist/collection/components/zero-account/enums.js.map +1 -1
  12. package/dist/collection/components/zero-account/logo.js +1 -1
  13. package/dist/collection/components/zero-account/logo.js.map +1 -1
  14. package/dist/collection/components/zero-account/qrcode.js +103 -103
  15. package/dist/collection/components/zero-account/qrcode.js.map +1 -1
  16. package/dist/collection/components/zero-account/websocket.js +149 -148
  17. package/dist/collection/components/zero-account/websocket.js.map +1 -1
  18. package/dist/collection/components/zero-account/zero-account.css +7 -0
  19. package/dist/collection/components/zero-account/zero-account.e2e.js +22 -22
  20. package/dist/collection/components/zero-account/zero-account.e2e.js.map +1 -1
  21. package/dist/collection/components/zero-account/zero-account.js +380 -379
  22. package/dist/collection/components/zero-account/zero-account.js.map +1 -1
  23. package/dist/collection/components/zero-account/zero-account.spec.js +13 -13
  24. package/dist/collection/components/zero-account/zero-account.spec.js.map +1 -1
  25. package/dist/collection/utils/request.js +37 -30
  26. package/dist/collection/utils/request.js.map +1 -1
  27. package/dist/collection/utils/utils.js +10 -10
  28. package/dist/collection/utils/utils.js.map +1 -1
  29. package/dist/collection/utils/utils.spec.js +6 -6
  30. package/dist/collection/utils/utils.spec.js.map +1 -1
  31. package/dist/components/index.d.ts +6 -0
  32. package/dist/components/index.js +1 -1
  33. package/dist/components/qr-code.d.ts +2 -2
  34. package/dist/components/qrcode.js +48 -48
  35. package/dist/components/qrcode.js.map +1 -1
  36. package/dist/components/zero-account.d.ts +2 -2
  37. package/dist/components/zero-account.js +359 -1279
  38. package/dist/components/zero-account.js.map +1 -1
  39. package/dist/esm/{index-09024c20.js → index-798be1d4.js} +370 -67
  40. package/dist/esm/index-798be1d4.js.map +1 -0
  41. package/dist/esm/loader.js +3 -3
  42. package/dist/esm/loader.js.map +1 -1
  43. package/dist/esm/qr-code_2.entry.js +358 -1278
  44. package/dist/esm/qr-code_2.entry.js.map +1 -1
  45. package/dist/esm/zero-account.js +3 -3
  46. package/dist/esm/zero-account.js.map +1 -1
  47. package/dist/types/components/zero-account/enums.d.ts +8 -8
  48. package/dist/types/components/zero-account/logo.d.ts +2 -2
  49. package/dist/types/components/zero-account/qrcode.d.ts +5 -5
  50. package/dist/types/components/zero-account/websocket.d.ts +27 -25
  51. package/dist/types/components/zero-account/zero-account.d.ts +39 -39
  52. package/dist/types/stencil-public-runtime.d.ts +46 -5
  53. package/dist/types/utils/request.d.ts +5 -5
  54. package/dist/types/utils/utils.d.ts +3 -3
  55. package/dist/zero-account/p-3b6bbcf5.js +3 -0
  56. package/dist/zero-account/p-3b6bbcf5.js.map +1 -0
  57. package/dist/zero-account/p-b6f591cf.entry.js +2 -0
  58. package/dist/zero-account/p-b6f591cf.entry.js.map +1 -0
  59. package/dist/zero-account/zero-account.esm.js +1 -1
  60. package/dist/zero-account/zero-account.esm.js.map +1 -1
  61. package/loader/index.d.ts +1 -1
  62. package/package.json +10 -10
  63. package/dist/cjs/index-1e526aba.js.map +0 -1
  64. package/dist/esm/index-09024c20.js.map +0 -1
  65. package/dist/zero-account/p-21f4994d.js +0 -3
  66. package/dist/zero-account/p-21f4994d.js.map +0 -1
  67. package/dist/zero-account/p-a29dc444.entry.js +0 -2
  68. package/dist/zero-account/p-a29dc444.entry.js.map +0 -1
@@ -3,941 +3,15 @@ import { E as Environment, a as ErrorCorrectionLevel, T as ThemePreset, d as def
3
3
 
4
4
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
5
5
 
6
- function createCommonjsModule(fn, basedir, module) {
7
- return module = {
8
- path: basedir,
9
- exports: {},
10
- require: function (path, base) {
11
- return commonjsRequire();
12
- }
13
- }, fn(module, module.exports), module.exports;
14
- }
15
-
16
- function commonjsRequire () {
17
- throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
18
- }
19
-
20
- var uaParser = createCommonjsModule(function (module, exports) {
21
- /////////////////////////////////////////////////////////////////////////////////
22
- /* UAParser.js v1.0.35
23
- Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
24
- MIT License *//*
25
- Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
26
- Supports browser & node.js environment.
27
- Demo : https://faisalman.github.io/ua-parser-js
28
- Source : https://github.com/faisalman/ua-parser-js */
29
- /////////////////////////////////////////////////////////////////////////////////
30
-
31
- (function (window, undefined$1) {
32
-
33
- //////////////
34
- // Constants
35
- /////////////
36
-
37
-
38
- var LIBVERSION = '1.0.35',
39
- EMPTY = '',
40
- UNKNOWN = '?',
41
- FUNC_TYPE = 'function',
42
- UNDEF_TYPE = 'undefined',
43
- OBJ_TYPE = 'object',
44
- STR_TYPE = 'string',
45
- MAJOR = 'major',
46
- MODEL = 'model',
47
- NAME = 'name',
48
- TYPE = 'type',
49
- VENDOR = 'vendor',
50
- VERSION = 'version',
51
- ARCHITECTURE= 'architecture',
52
- CONSOLE = 'console',
53
- MOBILE = 'mobile',
54
- TABLET = 'tablet',
55
- SMARTTV = 'smarttv',
56
- WEARABLE = 'wearable',
57
- EMBEDDED = 'embedded',
58
- UA_MAX_LENGTH = 350;
59
-
60
- var AMAZON = 'Amazon',
61
- APPLE = 'Apple',
62
- ASUS = 'ASUS',
63
- BLACKBERRY = 'BlackBerry',
64
- BROWSER = 'Browser',
65
- CHROME = 'Chrome',
66
- EDGE = 'Edge',
67
- FIREFOX = 'Firefox',
68
- GOOGLE = 'Google',
69
- HUAWEI = 'Huawei',
70
- LG = 'LG',
71
- MICROSOFT = 'Microsoft',
72
- MOTOROLA = 'Motorola',
73
- OPERA = 'Opera',
74
- SAMSUNG = 'Samsung',
75
- SHARP = 'Sharp',
76
- SONY = 'Sony',
77
- XIAOMI = 'Xiaomi',
78
- ZEBRA = 'Zebra',
79
- FACEBOOK = 'Facebook',
80
- CHROMIUM_OS = 'Chromium OS',
81
- MAC_OS = 'Mac OS';
82
-
83
- ///////////
84
- // Helper
85
- //////////
86
-
87
- var extend = function (regexes, extensions) {
88
- var mergedRegexes = {};
89
- for (var i in regexes) {
90
- if (extensions[i] && extensions[i].length % 2 === 0) {
91
- mergedRegexes[i] = extensions[i].concat(regexes[i]);
92
- } else {
93
- mergedRegexes[i] = regexes[i];
94
- }
95
- }
96
- return mergedRegexes;
97
- },
98
- enumerize = function (arr) {
99
- var enums = {};
100
- for (var i=0; i<arr.length; i++) {
101
- enums[arr[i].toUpperCase()] = arr[i];
102
- }
103
- return enums;
104
- },
105
- has = function (str1, str2) {
106
- return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
107
- },
108
- lowerize = function (str) {
109
- return str.toLowerCase();
110
- },
111
- majorize = function (version) {
112
- return typeof(version) === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split('.')[0] : undefined$1;
113
- },
114
- trim = function (str, len) {
115
- if (typeof(str) === STR_TYPE) {
116
- str = str.replace(/^\s\s*/, EMPTY);
117
- return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
118
- }
119
- };
120
-
121
- ///////////////
122
- // Map helper
123
- //////////////
124
-
125
- var rgxMapper = function (ua, arrays) {
126
-
127
- var i = 0, j, k, p, q, matches, match;
128
-
129
- // loop through all regexes maps
130
- while (i < arrays.length && !matches) {
131
-
132
- var regex = arrays[i], // even sequence (0,2,4,..)
133
- props = arrays[i + 1]; // odd sequence (1,3,5,..)
134
- j = k = 0;
135
-
136
- // try matching uastring with regexes
137
- while (j < regex.length && !matches) {
138
-
139
- if (!regex[j]) { break; }
140
- matches = regex[j++].exec(ua);
141
-
142
- if (!!matches) {
143
- for (p = 0; p < props.length; p++) {
144
- match = matches[++k];
145
- q = props[p];
146
- // check if given property is actually array
147
- if (typeof q === OBJ_TYPE && q.length > 0) {
148
- if (q.length === 2) {
149
- if (typeof q[1] == FUNC_TYPE) {
150
- // assign modified match
151
- this[q[0]] = q[1].call(this, match);
152
- } else {
153
- // assign given value, ignore regex match
154
- this[q[0]] = q[1];
155
- }
156
- } else if (q.length === 3) {
157
- // check whether function or regex
158
- if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
159
- // call function (usually string mapper)
160
- this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined$1;
161
- } else {
162
- // sanitize match using given regex
163
- this[q[0]] = match ? match.replace(q[1], q[2]) : undefined$1;
164
- }
165
- } else if (q.length === 4) {
166
- this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined$1;
167
- }
168
- } else {
169
- this[q] = match ? match : undefined$1;
170
- }
171
- }
172
- }
173
- }
174
- i += 2;
175
- }
176
- },
177
-
178
- strMapper = function (str, map) {
179
-
180
- for (var i in map) {
181
- // check if current value is array
182
- if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
183
- for (var j = 0; j < map[i].length; j++) {
184
- if (has(map[i][j], str)) {
185
- return (i === UNKNOWN) ? undefined$1 : i;
186
- }
187
- }
188
- } else if (has(map[i], str)) {
189
- return (i === UNKNOWN) ? undefined$1 : i;
190
- }
191
- }
192
- return str;
193
- };
194
-
195
- ///////////////
196
- // String map
197
- //////////////
198
-
199
- // Safari < 3.0
200
- var oldSafariMap = {
201
- '1.0' : '/8',
202
- '1.2' : '/1',
203
- '1.3' : '/3',
204
- '2.0' : '/412',
205
- '2.0.2' : '/416',
206
- '2.0.3' : '/417',
207
- '2.0.4' : '/419',
208
- '?' : '/'
209
- },
210
- windowsVersionMap = {
211
- 'ME' : '4.90',
212
- 'NT 3.11' : 'NT3.51',
213
- 'NT 4.0' : 'NT4.0',
214
- '2000' : 'NT 5.0',
215
- 'XP' : ['NT 5.1', 'NT 5.2'],
216
- 'Vista' : 'NT 6.0',
217
- '7' : 'NT 6.1',
218
- '8' : 'NT 6.2',
219
- '8.1' : 'NT 6.3',
220
- '10' : ['NT 6.4', 'NT 10.0'],
221
- 'RT' : 'ARM'
222
- };
223
-
224
- //////////////
225
- // Regex map
226
- /////////////
227
-
228
- var regexes = {
229
-
230
- browser : [[
231
-
232
- /\b(?:crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
233
- ], [VERSION, [NAME, 'Chrome']], [
234
- /edg(?:e|ios|a)?\/([\w\.]+)/i // Microsoft Edge
235
- ], [VERSION, [NAME, 'Edge']], [
236
-
237
- // Presto based
238
- /(opera mini)\/([-\w\.]+)/i, // Opera Mini
239
- /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, // Opera Mobi/Tablet
240
- /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i // Opera
241
- ], [NAME, VERSION], [
242
- /opios[\/ ]+([\w\.]+)/i // Opera mini on iphone >= 8.0
243
- ], [VERSION, [NAME, OPERA+' Mini']], [
244
- /\bopr\/([\w\.]+)/i // Opera Webkit
245
- ], [VERSION, [NAME, OPERA]], [
246
-
247
- // Mixed
248
- /(kindle)\/([\w\.]+)/i, // Kindle
249
- /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer
250
- // Trident based
251
- /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser
252
- /(ba?idubrowser)[\/ ]?([\w\.]+)/i, // Baidu Browser
253
- /(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
254
-
255
- // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
256
- /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
257
- // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
258
- /(heytap|ovi)browser\/([\d\.]+)/i, // Heytap/Ovi
259
- /(weibo)__([\d\.]+)/i // Weibo
260
- ], [NAME, VERSION], [
261
- /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
262
- ], [VERSION, [NAME, 'UC'+BROWSER]], [
263
- /microm.+\bqbcore\/([\w\.]+)/i, // WeChat Desktop for Windows Built-in Browser
264
- /\bqbcore\/([\w\.]+).+microm/i
265
- ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [
266
- /micromessenger\/([\w\.]+)/i // WeChat
267
- ], [VERSION, [NAME, 'WeChat']], [
268
- /konqueror\/([\w\.]+)/i // Konqueror
269
- ], [VERSION, [NAME, 'Konqueror']], [
270
- /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
271
- ], [VERSION, [NAME, 'IE']], [
272
- /ya(?:search)?browser\/([\w\.]+)/i // Yandex
273
- ], [VERSION, [NAME, 'Yandex']], [
274
- /(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
275
- ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [
276
- /\bfocus\/([\w\.]+)/i // Firefox Focus
277
- ], [VERSION, [NAME, FIREFOX+' Focus']], [
278
- /\bopt\/([\w\.]+)/i // Opera Touch
279
- ], [VERSION, [NAME, OPERA+' Touch']], [
280
- /coc_coc\w+\/([\w\.]+)/i // Coc Coc Browser
281
- ], [VERSION, [NAME, 'Coc Coc']], [
282
- /dolfin\/([\w\.]+)/i // Dolphin
283
- ], [VERSION, [NAME, 'Dolphin']], [
284
- /coast\/([\w\.]+)/i // Opera Coast
285
- ], [VERSION, [NAME, OPERA+' Coast']], [
286
- /miuibrowser\/([\w\.]+)/i // MIUI Browser
287
- ], [VERSION, [NAME, 'MIUI '+BROWSER]], [
288
- /fxios\/([-\w\.]+)/i // Firefox for iOS
289
- ], [VERSION, [NAME, FIREFOX]], [
290
- /\bqihu|(qi?ho?o?|360)browser/i // 360
291
- ], [[NAME, '360 '+BROWSER]], [
292
- /(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i
293
- ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish/Huawei Browser
294
- /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
295
- ], [[NAME, /_/g, ' '], VERSION], [
296
- /(electron)\/([\w\.]+) safari/i, // Electron-based App
297
- /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, // Tesla
298
- /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i // QQBrowser/Baidu App/2345 Browser
299
- ], [NAME, VERSION], [
300
- /(metasr)[\/ ]?([\w\.]+)/i, // SouGouBrowser
301
- /(lbbrowser)/i, // LieBao Browser
302
- /\[(linkedin)app\]/i // LinkedIn App for iOS & Android
303
- ], [NAME], [
304
-
305
- // WebView
306
- /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
307
- ], [[NAME, FACEBOOK], VERSION], [
308
- /(kakao(?:talk|story))[\/ ]([\w\.]+)/i, // Kakao App
309
- /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, // Naver InApp
310
- /safari (line)\/([\w\.]+)/i, // Line App for iOS
311
- /\b(line)\/([\w\.]+)\/iab/i, // Line App for Android
312
- /(chromium|instagram)[\/ ]([-\w\.]+)/i // Chromium/Instagram
313
- ], [NAME, VERSION], [
314
- /\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
315
- ], [VERSION, [NAME, 'GSA']], [
316
- /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
317
- ], [VERSION, [NAME, 'TikTok']], [
318
-
319
- /headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
320
- ], [VERSION, [NAME, CHROME+' Headless']], [
321
-
322
- / wv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
323
- ], [[NAME, CHROME+' WebView'], VERSION], [
324
-
325
- /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i // Android Browser
326
- ], [VERSION, [NAME, 'Android '+BROWSER]], [
327
-
328
- /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia
329
- ], [NAME, VERSION], [
330
-
331
- /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i // Mobile Safari
332
- ], [VERSION, [NAME, 'Mobile Safari']], [
333
- /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile
334
- ], [VERSION, NAME], [
335
- /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
336
- ], [NAME, [VERSION, strMapper, oldSafariMap]], [
337
-
338
- /(webkit|khtml)\/([\w\.]+)/i
339
- ], [NAME, VERSION], [
340
-
341
- // Gecko based
342
- /(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
343
- ], [[NAME, 'Netscape'], VERSION], [
344
- /mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
345
- ], [VERSION, [NAME, FIREFOX+' Reality']], [
346
- /ekiohf.+(flow)\/([\w\.]+)/i, // Flow
347
- /(swiftfox)/i, // Swiftfox
348
- /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
349
- // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
350
- /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
351
- // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
352
- /(firefox)\/([\w\.]+)/i, // Other Firefox-based
353
- /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, // Mozilla
354
-
355
- // Other
356
- /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
357
- // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
358
- /(links) \(([\w\.]+)/i, // Links
359
- /panasonic;(viera)/i // Panasonic Viera
360
- ], [NAME, VERSION], [
361
-
362
- /(cobalt)\/([\w\.]+)/i // Cobalt
363
- ], [NAME, [VERSION, /master.|lts./, ""]]
364
- ],
365
-
366
- cpu : [[
367
-
368
- /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i // AMD64 (x64)
369
- ], [[ARCHITECTURE, 'amd64']], [
370
-
371
- /(ia32(?=;))/i // IA32 (quicktime)
372
- ], [[ARCHITECTURE, lowerize]], [
373
-
374
- /((?:i[346]|x)86)[;\)]/i // IA32 (x86)
375
- ], [[ARCHITECTURE, 'ia32']], [
376
-
377
- /\b(aarch64|arm(v?8e?l?|_?64))\b/i // ARM64
378
- ], [[ARCHITECTURE, 'arm64']], [
379
-
380
- /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i // ARMHF
381
- ], [[ARCHITECTURE, 'armhf']], [
382
-
383
- // PocketPC mistakenly identified as PowerPC
384
- /windows (ce|mobile); ppc;/i
385
- ], [[ARCHITECTURE, 'arm']], [
386
-
387
- /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i // PowerPC
388
- ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [
389
-
390
- /(sun4\w)[;\)]/i // SPARC
391
- ], [[ARCHITECTURE, 'sparc']], [
392
-
393
- /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
394
- // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
395
- ], [[ARCHITECTURE, lowerize]]
396
- ],
397
-
398
- device : [[
399
-
400
- //////////////////////////
401
- // MOBILES & TABLETS
402
- /////////////////////////
403
-
404
- // Samsung
405
- /\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
406
- ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
407
- /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
408
- /samsung[- ]([-\w]+)/i,
409
- /sec-(sgh\w+)/i
410
- ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
411
-
412
- // Apple
413
- /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone
414
- ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [
415
- /\((ipad);[-\w\),; ]+apple/i, // iPad
416
- /applecoremedia\/[\w\.]+ \((ipad)/i,
417
- /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
418
- ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [
419
- /(macintosh);/i
420
- ], [MODEL, [VENDOR, APPLE]], [
421
-
422
- // Sharp
423
- /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
424
- ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
425
-
426
- // Huawei
427
- /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
428
- ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
429
- /(?:huawei|honor)([-\w ]+)[;\)]/i,
430
- /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
431
- ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
432
-
433
- // Xiaomi
434
- /\b(poco[\w ]+)(?: bui|\))/i, // Xiaomi POCO
435
- /\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
436
- /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
437
- /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
438
- /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi
439
- ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
440
- /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets
441
- ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [
442
-
443
- // OPPO
444
- /; (\w+) bui.+ oppo/i,
445
- /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
446
- ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [
447
-
448
- // Vivo
449
- /vivo (\w+)(?: bui|\))/i,
450
- /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
451
- ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
452
-
453
- // Realme
454
- /\b(rmx[12]\d{3})(?: bui|;|\))/i
455
- ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [
456
-
457
- // Motorola
458
- /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
459
- /\bmot(?:orola)?[- ](\w*)/i,
460
- /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
461
- ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [
462
- /\b(mz60\d|xoom[2 ]{0,2}) build\//i
463
- ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [
464
-
465
- // LG
466
- /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
467
- ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [
468
- /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
469
- /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
470
- /\blg-?([\d\w]+) bui/i
471
- ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
472
-
473
- // Lenovo
474
- /(ideatab[-\w ]+)/i,
475
- /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
476
- ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [
477
-
478
- // Nokia
479
- /(?:maemo|nokia).*(n900|lumia \d+)/i,
480
- /nokia[-_ ]?([-\w\.]*)/i
481
- ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [
482
-
483
- // Google
484
- /(pixel c)\b/i // Google Pixel C
485
- ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [
486
- /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i // Google Pixel
487
- ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
488
-
489
- // Sony
490
- /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
491
- ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [
492
- /sony tablet [ps]/i,
493
- /\b(?:sony)?sgp\w+(?: bui|\))/i
494
- ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [
495
-
496
- // OnePlus
497
- / (kb2005|in20[12]5|be20[12][59])\b/i,
498
- /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
499
- ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [
500
-
501
- // Amazon
502
- /(alexa)webm/i,
503
- /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, // Kindle Fire without Silk / Echo Show
504
- /(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
505
- ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
506
- /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
507
- ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [
508
-
509
- // BlackBerry
510
- /(playbook);[-\w\),; ]+(rim)/i // BlackBerry PlayBook
511
- ], [MODEL, VENDOR, [TYPE, TABLET]], [
512
- /\b((?:bb[a-f]|st[hv])100-\d)/i,
513
- /\(bb10; (\w+)/i // BlackBerry 10
514
- ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [
515
-
516
- // Asus
517
- /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
518
- ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [
519
- / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
520
- ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [
521
-
522
- // HTC
523
- /(nexus 9)/i // HTC Nexus 9
524
- ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [
525
- /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, // HTC
526
-
527
- // ZTE
528
- /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
529
- /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
530
- ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
531
-
532
- // Acer
533
- /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
534
- ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
535
-
536
- // Meizu
537
- /droid.+; (m[1-5] note) bui/i,
538
- /\bmz-([-\w]{2,})/i
539
- ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
540
-
541
- // MIXED
542
- /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,
543
- // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
544
- /(hp) ([\w ]+\w)/i, // HP iPAQ
545
- /(asus)-?(\w+)/i, // Asus
546
- /(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
547
- /(lenovo)[-_ ]?([-\w]+)/i, // Lenovo
548
- /(jolla)/i, // Jolla
549
- /(oppo) ?([\w ]+) bui/i // OPPO
550
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
551
-
552
- /(kobo)\s(ereader|touch)/i, // Kobo
553
- /(archos) (gamepad2?)/i, // Archos
554
- /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
555
- /(kindle)\/([\w\.]+)/i, // Kindle
556
- /(nook)[\w ]+build\/(\w+)/i, // Nook
557
- /(dell) (strea[kpr\d ]*[\dko])/i, // Dell Streak
558
- /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, // Le Pan Tablets
559
- /(trinity)[- ]*(t\d{3}) bui/i, // Trinity Tablets
560
- /(gigaset)[- ]+(q\w{1,9}) bui/i, // Gigaset Tablets
561
- /(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone
562
- ], [VENDOR, MODEL, [TYPE, TABLET]], [
563
-
564
- /(surface duo)/i // Surface Duo
565
- ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [
566
- /droid [\d\.]+; (fp\du?)(?: b|\))/i // Fairphone
567
- ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [
568
- /(u304aa)/i // AT&T
569
- ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [
570
- /\bsie-(\w*)/i // Siemens
571
- ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [
572
- /\b(rct\w+) b/i // RCA Tablets
573
- ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
574
- /\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets
575
- ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
576
- /\b(q(?:mv|ta)\w+) b/i // Verizon Tablet
577
- ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
578
- /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet
579
- ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [
580
- /\b(tm\d{3}\w+) b/i
581
- ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
582
- /\b(k88) b/i // ZTE K Series Tablet
583
- ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [
584
- /\b(nx\d{3}j) b/i // ZTE Nubia
585
- ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [
586
- /\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile
587
- ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
588
- /\b(zur\d{3}) b/i // Swiss ZUR Tablet
589
- ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
590
- /\b((zeki)?tb.*\b) b/i // Zeki Tablets
591
- ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
592
- /\b([yr]\d{2}) b/i,
593
- /\b(dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet
594
- ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [
595
- /\b(ns-?\w{0,9}) b/i // Insignia Tablets
596
- ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
597
- /\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets
598
- ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
599
- /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones
600
- ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [
601
- /\b(lvtel\-)?(v1[12]) b/i // LvTel Phones
602
- ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
603
- /\b(ph-1) /i // Essential PH-1
604
- ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [
605
- /\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets
606
- ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
607
- /\b(trio[-\w\. ]+) b/i // MachSpeed Tablets
608
- ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
609
- /\btu_(1491) b/i // Rotor Tablets
610
- ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [
611
- /(shield[\w ]+) b/i // Nvidia Shield Tablets
612
- ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [
613
- /(sprint) (\w+)/i // Sprint Phones
614
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
615
- /(kin\.[onetw]{3})/i // Microsoft Kin
616
- ], [[MODEL, /\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [
617
- /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i // Zebra
618
- ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [
619
- /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
620
- ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
621
-
622
- ///////////////////
623
- // SMARTTVS
624
- ///////////////////
625
-
626
- /smart-tv.+(samsung)/i // Samsung
627
- ], [VENDOR, [TYPE, SMARTTV]], [
628
- /hbbtv.+maple;(\d+)/i
629
- ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
630
- /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
631
- ], [[VENDOR, LG], [TYPE, SMARTTV]], [
632
- /(apple) ?tv/i // Apple TV
633
- ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
634
- /crkey/i // Google Chromecast
635
- ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
636
- /droid.+aft(\w)( bui|\))/i // Fire TV
637
- ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
638
- /\(dtv[\);].+(aquos)/i,
639
- /(aquos-tv[\w ]+)\)/i // Sharp
640
- ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[
641
- /(bravia[\w ]+)( bui|\))/i // Sony
642
- ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [
643
- /(mitv-\w{5}) bui/i // Xiaomi
644
- ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [
645
- /Hbbtv.*(technisat) (.*);/i // TechniSAT
646
- ], [VENDOR, MODEL, [TYPE, SMARTTV]], [
647
- /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku
648
- /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
649
- ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
650
- /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors
651
- ], [[TYPE, SMARTTV]], [
652
-
653
- ///////////////////
654
- // CONSOLES
655
- ///////////////////
656
-
657
- /(ouya)/i, // Ouya
658
- /(nintendo) ([wids3utch]+)/i // Nintendo
659
- ], [VENDOR, MODEL, [TYPE, CONSOLE]], [
660
- /droid.+; (shield) bui/i // Nvidia
661
- ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [
662
- /(playstation [345portablevi]+)/i // Playstation
663
- ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [
664
- /\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
665
- ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
666
-
667
- ///////////////////
668
- // WEARABLES
669
- ///////////////////
670
-
671
- /((pebble))app/i // Pebble
672
- ], [VENDOR, MODEL, [TYPE, WEARABLE]], [
673
- /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
674
- ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [
675
- /droid.+; (glass) \d/i // Google Glass
676
- ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
677
- /droid.+; (wt63?0{2,3})\)/i
678
- ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
679
- /(quest( 2| pro)?)/i // Oculus Quest
680
- ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
681
-
682
- ///////////////////
683
- // EMBEDDED
684
- ///////////////////
685
-
686
- /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
687
- ], [VENDOR, [TYPE, EMBEDDED]], [
688
- /(aeobc)\b/i // Echo Dot
689
- ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [
690
-
691
- ////////////////////
692
- // MIXED (GENERIC)
693
- ///////////////////
694
-
695
- /droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors
696
- ], [MODEL, [TYPE, MOBILE]], [
697
- /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors
698
- ], [MODEL, [TYPE, TABLET]], [
699
- /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i // Unidentifiable Tablet
700
- ], [[TYPE, TABLET]], [
701
- /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile
702
- ], [[TYPE, MOBILE]], [
703
- /(android[-\w\. ]{0,9});.+buil/i // Generic Android Device
704
- ], [MODEL, [VENDOR, 'Generic']]
705
- ],
706
-
707
- engine : [[
708
-
709
- /windows.+ edge\/([\w\.]+)/i // EdgeHTML
710
- ], [VERSION, [NAME, EDGE+'HTML']], [
711
-
712
- /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
713
- ], [VERSION, [NAME, 'Blink']], [
714
-
715
- /(presto)\/([\w\.]+)/i, // Presto
716
- /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
717
- /ekioh(flow)\/([\w\.]+)/i, // Flow
718
- /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
719
- /(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
720
- /\b(libweb)/i
721
- ], [NAME, VERSION], [
722
-
723
- /rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
724
- ], [VERSION, NAME]
725
- ],
726
-
727
- os : [[
728
-
729
- // Windows
730
- /microsoft (windows) (vista|xp)/i // Windows (iTunes)
731
- ], [NAME, VERSION], [
732
- /(windows) nt 6\.2; (arm)/i, // Windows RT
733
- /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, // Windows Phone
734
- /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i
735
- ], [NAME, [VERSION, strMapper, windowsVersionMap]], [
736
- /(win(?=3|9|n)|win 9x )([nt\d\.]+)/i
737
- ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [
738
-
739
- // iOS/macOS
740
- /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
741
- /ios;fbsv\/([\d\.]+)/i,
742
- /cfnetwork\/.+darwin/i
743
- ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
744
- /(mac os x) ?([\w\. ]*)/i,
745
- /(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
746
- ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [
747
-
748
- // Mobile OSes
749
- /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
750
- ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
751
- /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
752
- /(blackberry)\w*\/([\w\.]*)/i, // Blackberry
753
- /(tizen|kaios)[\/ ]([\w\.]+)/i, // Tizen/KaiOS
754
- /\((series40);/i // Series 40
755
- ], [NAME, VERSION], [
756
- /\(bb(10);/i // BlackBerry 10
757
- ], [VERSION, [NAME, BLACKBERRY]], [
758
- /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i // Symbian
759
- ], [VERSION, [NAME, 'Symbian']], [
760
- /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i // Firefox OS
761
- ], [VERSION, [NAME, FIREFOX+' OS']], [
762
- /web0s;.+rt(tv)/i,
763
- /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
764
- ], [VERSION, [NAME, 'webOS']], [
765
- /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
766
- ], [VERSION, [NAME, 'watchOS']], [
767
-
768
- // Google Chromecast
769
- /crkey\/([\d\.]+)/i // Google Chromecast
770
- ], [VERSION, [NAME, CHROME+'cast']], [
771
- /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
772
- ], [[NAME, CHROMIUM_OS], VERSION],[
773
-
774
- // Smart TVs
775
- /panasonic;(viera)/i, // Panasonic Viera
776
- /(netrange)mmh/i, // Netrange
777
- /(nettv)\/(\d+\.[\w\.]+)/i, // NetTV
778
-
779
- // Console
780
- /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation
781
- /(xbox); +xbox ([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)
782
-
783
- // Other
784
- /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, // Joli/Palm
785
- /(mint)[\/\(\) ]?(\w*)/i, // Mint
786
- /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux
787
- /([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,
788
- // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
789
- /(hurd|linux) ?([\w\.]*)/i, // Hurd/Linux
790
- /(gnu) ?([\w\.]*)/i, // GNU
791
- /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
792
- /(haiku) (\w+)/i // Haiku
793
- ], [NAME, VERSION], [
794
- /(sunos) ?([\w\.\d]*)/i // Solaris
795
- ], [[NAME, 'Solaris'], VERSION], [
796
- /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris
797
- /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, // AIX
798
- /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
799
- /(unix) ?([\w\.]*)/i // UNIX
800
- ], [NAME, VERSION]
801
- ]
802
- };
803
-
804
- /////////////////
805
- // Constructor
806
- ////////////////
807
-
808
- var UAParser = function (ua, extensions) {
809
-
810
- if (typeof ua === OBJ_TYPE) {
811
- extensions = ua;
812
- ua = undefined$1;
813
- }
814
-
815
- if (!(this instanceof UAParser)) {
816
- return new UAParser(ua, extensions).getResult();
817
- }
818
-
819
- var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined$1;
820
- var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);
821
- var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined$1;
822
- var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
823
- var _isSelfNav = _navigator && _navigator.userAgent == _ua;
824
-
825
- this.getBrowser = function () {
826
- var _browser = {};
827
- _browser[NAME] = undefined$1;
828
- _browser[VERSION] = undefined$1;
829
- rgxMapper.call(_browser, _ua, _rgxmap.browser);
830
- _browser[MAJOR] = majorize(_browser[VERSION]);
831
- // Brave-specific detection
832
- if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
833
- _browser[NAME] = 'Brave';
834
- }
835
- return _browser;
836
- };
837
- this.getCPU = function () {
838
- var _cpu = {};
839
- _cpu[ARCHITECTURE] = undefined$1;
840
- rgxMapper.call(_cpu, _ua, _rgxmap.cpu);
841
- return _cpu;
842
- };
843
- this.getDevice = function () {
844
- var _device = {};
845
- _device[VENDOR] = undefined$1;
846
- _device[MODEL] = undefined$1;
847
- _device[TYPE] = undefined$1;
848
- rgxMapper.call(_device, _ua, _rgxmap.device);
849
- if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {
850
- _device[TYPE] = MOBILE;
851
- }
852
- // iPadOS-specific detection: identified as Mac, but has some iOS-only properties
853
- if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
854
- _device[MODEL] = 'iPad';
855
- _device[TYPE] = TABLET;
856
- }
857
- return _device;
858
- };
859
- this.getEngine = function () {
860
- var _engine = {};
861
- _engine[NAME] = undefined$1;
862
- _engine[VERSION] = undefined$1;
863
- rgxMapper.call(_engine, _ua, _rgxmap.engine);
864
- return _engine;
865
- };
866
- this.getOS = function () {
867
- var _os = {};
868
- _os[NAME] = undefined$1;
869
- _os[VERSION] = undefined$1;
870
- rgxMapper.call(_os, _ua, _rgxmap.os);
871
- if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {
872
- _os[NAME] = _uach.platform
873
- .replace(/chrome os/i, CHROMIUM_OS)
874
- .replace(/macos/i, MAC_OS); // backward compatibility
875
- }
876
- return _os;
877
- };
878
- this.getResult = function () {
879
- return {
880
- ua : this.getUA(),
881
- browser : this.getBrowser(),
882
- engine : this.getEngine(),
883
- os : this.getOS(),
884
- device : this.getDevice(),
885
- cpu : this.getCPU()
886
- };
887
- };
888
- this.getUA = function () {
889
- return _ua;
890
- };
891
- this.setUA = function (ua) {
892
- _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;
893
- return this;
894
- };
895
- this.setUA(_ua);
896
- return this;
897
- };
898
-
899
- UAParser.VERSION = LIBVERSION;
900
- UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);
901
- UAParser.CPU = enumerize([ARCHITECTURE]);
902
- UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
903
- UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);
904
-
905
- ///////////
906
- // Export
907
- //////////
908
-
909
- // check js environment
910
- {
911
- // nodejs env
912
- if (module.exports) {
913
- exports = module.exports = UAParser;
914
- }
915
- exports.UAParser = UAParser;
916
- }
6
+ var uaParser_pack = {exports: {}};
917
7
 
918
- // jQuery/Zepto specific (optional)
919
- // Note:
920
- // In AMD env the global scope should be kept clean, but jQuery is an exception.
921
- // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
922
- // and we should catch that.
923
- var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);
924
- if ($ && !$.ua) {
925
- var parser = new UAParser();
926
- $.ua = parser.getResult();
927
- $.ua.get = function () {
928
- return parser.getUA();
929
- };
930
- $.ua.set = function (ua) {
931
- parser.setUA(ua);
932
- var result = parser.getResult();
933
- for (var prop in result) {
934
- $.ua[prop] = result[prop];
935
- }
936
- };
937
- }
8
+ /* UAParser.js v2.0.0-beta.2
9
+ Copyright © 2012-2023 Faisal Salman <f@faisalman.com>
10
+ AGPLv3 License */
938
11
 
939
- })(typeof window === 'object' ? window : commonjsGlobal);
940
- });
12
+ (function (module, exports) {
13
+ !function(i,u){function e(i){for(var e={},t=0;t<i.length;t++)e[i[t].toUpperCase()]=i[t];return e}function n(i,e){if(!(typeof i===d&&0<i.length))return !!gi(i)&&-1!==xi(e).indexOf(xi(i));for(var t in i)if(xi(i[t])==xi(e))return 1}var w="",c="function",b="undefined",d="object",s="string",p="major",h="model",f="name",m="type",g="vendor",v="version",x="architecture",k="console",y="mobile",r="tablet",t="smarttv",o="wearable",a="embedded",l="user-agent",_=500,S="brands",T="formFactor",C="fullVersionList",q="platform",A="platformVersion",O="bitness",z="sec-ch-ua",N=z+"-full-version-list",I=z+"-arch",P=z+"-"+O,U=z+"-form-factor",H=z+"-"+y,E=z+"-"+h,M=z+"-"+q,R=M+"-version",j=[S,C,y,h,q,A,x,T,O],V="browser",B="cpu",F="device",X="engine",D="os",G="result",$="Amazon",L="Apple",W="ASUS",K="BlackBerry",Z="Google",Q="Huawei",Y="Lenovo",J="LG",ii="Microsoft",ei="Motorola",ti="Samsung",oi="Sony",ri="Xiaomi",ai="Zebra",si="Mobile ",ni=" Browser",wi="Chrome",bi="Firefox",li="Opera",ui="Facebook",ci="Windows",di=typeof i!==b,pi=di&&i.navigator?i.navigator:u,hi=pi&&pi.userAgentData?pi.userAgentData:u,fi=function(i,e){var t,o={};for(t in i)o[t]=e[t]&&e[t].length%2==0?e[t].concat(i[t]):i[t];return o},mi=function(i){for(var e in i)return /^(browser|cpu|device|engine|os)$/.test(e)},gi=function(i){return typeof i===s},vi=function(i){if(!i)return u;for(var e,t=[],o=_i(/\\?\"/g,i).split(","),r=0;r<o.length;r++)-1<o[r].indexOf(";")?(e=Ti(o[r]).split(";v="),t[r]={brand:e[0],version:e[1]}):t[r]=Ti(o[r]);return t},xi=function(i){return gi(i)?i.toLowerCase():i},ki=function(i){return gi(i)?_i(/[^\d\.]/g,i).split(".")[0]:u},yi=function(i){for(var e in i){e=i[e];typeof e==d&&2==e.length?this[e[0]]=e[1]:this[e]=u;}return this},_i=function(i,e){return gi(e)?e.replace(i,w):e},Si=function(i){return _i(/\\?\"/g,i)},Ti=function(i,e){if(gi(i))return i=_i(/^\s\s*/,i),typeof e===b?i:i.substring(0,_)},Ci=function(i,e){if(i&&e)for(var t,o,r,a,s,n=0;n<e.length&&!a;){for(var w=e[n],b=e[n+1],l=t=0;l<w.length&&!a&&w[l];)if(a=w[l++].exec(i))for(o=0;o<b.length;o++)s=a[++t],typeof(r=b[o])===d&&0<r.length?2===r.length?typeof r[1]==c?this[r[0]]=r[1].call(this,s):this[r[0]]=r[1]:3===r.length?typeof r[1]!==c||r[1].exec&&r[1].test?this[r[0]]=s?s.replace(r[1],r[2]):u:this[r[0]]=s?r[1].call(this,s,r[2]):u:4===r.length&&(this[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):u):this[r]=s||u;n+=2;}},qi=function(i,e){for(var t in e)if(typeof e[t]===d&&0<e[t].length){for(var o=0;o<e[t].length;o++)if(n(e[t][o],i))return "?"===t?u:t}else if(n(e[t],i))return "?"===t?u:t;return e.hasOwnProperty("*")?e["*"]:i},Ai={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Oi={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:["VR","XR","Watch"],"?":["Desktop","Unknown"],"*":u},zi={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[v,[f,si+"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[v,[f,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[f,v],[/opios[\/ ]+([\w\.]+)/i],[v,[f,li+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[v,[f,li+" GX"]],[/\bopr\/([\w\.]+)/i],[v,[f,li]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[v,[f,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[f,v],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[v,[f,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[v,[f,"WeChat"]],[/konqueror\/([\w\.]+)/i],[v,[f,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[v,[f,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[v,[f,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[v,[f,"Smart "+Y+ni]],[/(avast|avg)\/([\w\.]+)/i],[[f,/(.+)/,"$1 Secure"+ni],v],[/\bfocus\/([\w\.]+)/i],[v,[f,bi+" Focus"]],[/\bopt\/([\w\.]+)/i],[v,[f,li+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[v,[f,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[v,[f,"Dolphin"]],[/coast\/([\w\.]+)/i],[v,[f,li+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[v,[f,"MIUI"+ni]],[/fxios\/([\w\.-]+)/i],[v,[f,si+bi]],[/\bqihu|(qi?ho?o?|360)browser/i],[[f,"360"+ni]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[f,/(.+)/,"$1"+ni],v],[/samsungbrowser\/([\w\.]+)/i],[v,[f,ti+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[f,/_/g," "],v],[/metasr[\/ ]?([\d\.]+)/i],[v,[f,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[f,"Sogou Mobile"],v],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[f,v],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[f],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[f,ui],v],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[f,v],[/\bgsa\/([\w\.]+) .*safari\//i],[v,[f,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[v,[f,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[v,[f,wi+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[f,wi+" WebView"],v],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[v,[f,"Android"+ni]],[/chrome\/([\w\.]+) mobile/i],[v,[f,si+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[f,v],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[v,[f,si+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[f,si+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[v,f],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[f,[v,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[f,v],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[f,si+bi],v],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[f,"Netscape"],v],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[v,[f,bi+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[f,v],[/(cobalt)\/([\w\.]+)/i],[f,[v,/[^\d\.]+./,w]]],cpu:[[/\b(?:(amd|x|x86[-_]?|wow|win)64)\b/i],[[x,"amd64"]],[/(ia32(?=;))/i,/((?:i[346]|x)86)[;\)]/i],[[x,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[x,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[x,"armhf"]],[/windows (ce|mobile); ppc;/i],[[x,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[x,/ower/,w,xi]],[/(sun4\w)[;\)]/i],[[x,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[x,xi]]],device:[[/\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],[h,[g,ti],[m,r]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[h,[g,ti],[m,y]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[h,[g,L],[m,y]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[h,[g,L],[m,r]],[/(macintosh);/i],[h,[g,L]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[h,[g,"Sharp"],[m,y]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[h,[g,Q],[m,r]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[h,[g,Q],[m,y]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[h,/_/g," "],[g,ri],[m,y]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[h,/_/g," "],[g,ri],[m,r]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[h,[g,"OPPO"],[m,y]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[h,[g,"Vivo"],[m,y]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[h,[g,"Realme"],[m,y]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[h,[g,ei],[m,y]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[h,[g,ei],[m,r]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[h,[g,J],[m,r]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[h,[g,J],[m,y]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[h,[g,Y],[m,r]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[h,/_/g," "],[g,"Nokia"],[m,y]],[/(pixel c)\b/i],[h,[g,Z],[m,r]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[h,[g,Z],[m,y]],[/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],[h,[g,oi],[m,y]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[h,"Xperia Tablet"],[g,oi],[m,r]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[h,[g,"OnePlus"],[m,y]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[h,[g,$],[m,r]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[h,/(.+)/g,"Fire Phone $1"],[g,$],[m,y]],[/(playbook);[-\w\),; ]+(rim)/i],[h,g,[m,r]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[h,[g,K],[m,y]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[h,[g,W],[m,r]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[h,[g,W],[m,y]],[/(nexus 9)/i],[h,[g,"HTC"],[m,r]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[g,[h,/_/g," "],[m,y]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[h,[g,"Acer"],[m,r]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[h,[g,"Meizu"],[m,y]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[h,[g,"Ulefone"],[m,y]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[g,h,[m,y]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[g,h,[m,r]],[/(surface duo)/i],[h,[g,ii],[m,r]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[h,[g,"Fairphone"],[m,y]],[/(shield[\w ]+) b/i],[h,[g,"Nvidia"],[m,r]],[/(sprint) (\w+)/i],[g,h,[m,y]],[/(kin\.[onetw]{3})/i],[[h,/\./g," "],[g,ii],[m,y]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[h,[g,ai],[m,r]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[h,[g,ai],[m,y]],[/smart-tv.+(samsung)/i],[g,[m,t]],[/hbbtv.+maple;(\d+)/i],[[h,/^/,"SmartTV"],[g,ti],[m,t]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[g,J],[m,t]],[/(apple) ?tv/i],[g,[h,L+" TV"],[m,t]],[/crkey/i],[[h,wi+"cast"],[g,Z],[m,t]],[/droid.+aft(\w+)( bui|\))/i],[h,[g,$],[m,t]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[h,[g,"Sharp"],[m,t]],[/(bravia[\w ]+)( bui|\))/i],[h,[g,oi],[m,t]],[/(mitv-\w{5}) bui/i],[h,[g,ri],[m,t]],[/Hbbtv.*(technisat) (.*);/i],[g,h,[m,t]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[g,Ti],[h,Ti],[m,t]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[m,t]],[/(ouya)/i,/(nintendo) (\w+)/i],[g,h,[m,k]],[/droid.+; (shield) bui/i],[h,[g,"Nvidia"],[m,k]],[/(playstation \w+)/i],[h,[g,oi],[m,k]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[h,[g,ii],[m,k]],[/((pebble))app/i],[g,h,[m,o]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[h,[g,L],[m,o]],[/droid.+; (glass) \d/i],[h,[g,Z],[m,o]],[/droid.+; (wt63?0{2,3})\)/i],[h,[g,ai],[m,o]],[/(quest( 2| pro)?)/i],[h,[g,ui],[m,o]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[g,[m,a]],[/(aeobc)\b/i],[h,[g,$],[m,a]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[h,[m,y]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[h,[m,r]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[m,r]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[m,y]],[/(android[-\w\. ]{0,9});.+buil/i],[h,[g,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[v,[f,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[v,[f,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[f,v],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[v,f]],os:[[/microsoft (windows) (vista|xp)/i],[f,v],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[f,[v,qi,Ai]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[v,qi,Ai],[f,ci]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[v,/_/g,"."],[f,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[f,"macOS"],[v,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[v,f],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[f,v],[/\(bb(10);/i],[v,[f,K]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[v,[f,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[v,[f,bi+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[v,[f,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[v,[f,"watchOS"]],[/crkey\/([\d\.]+)/i],[v,[f,wi+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[f,"Chrome OS"],v],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([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,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[f,v],[/(sunos) ?([\w\.\d]*)/i],[[f,"Solaris"],v],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[f,v]]},Ni=(wi={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},yi.call(wi.init,[[V,[f,v,p]],[B,[x]],[F,[m,h,g]],[X,[f,v]],[D,[f,v]]]),yi.call(wi.isIgnore,[[V,[v,p]],[X,[v]],[D,[v]]]),yi.call(wi.isIgnoreRgx,[[V,/ ?browser$/i],[D,/ ?os$/i]]),yi.call(wi.toString,[[V,[f,v]],[B,[x]],[F,[g,h]],[X,[f,v]],[D,[f,v]]]),wi),Ii=function(e,i){var t=Ni.init[i],o=Ni.isIgnore[i]||0,r=Ni.isIgnoreRgx[i]||0,a=Ni.toString[i]||0;function s(){yi.call(this,t);}return s.prototype.getItem=function(){return e},s.prototype.withClientHints=function(){return hi?hi.getHighEntropyValues(j).then(function(i){return e.setCH(new Pi(i,!1)).parseCH().get()}):e.parseCH().get()},s.prototype.withFeatureCheck=function(){return e.detectFeature().get()},i!=G&&(s.prototype.is=function(i){var e,t=!1;for(e in this)if(this.hasOwnProperty(e)&&!n(o,e)&&xi(r?_i(r,this[e]):this[e])==xi(r?_i(r,i):i)){if(t=!0,i!=b)break}else if(i==b&&t){t=!t;break}return t},s.prototype.toString=function(){var i,e=w;for(i in a)typeof this[a[i]]!==b&&(e+=(e?" ":w)+this[a[i]]);return e||b}),hi||(s.prototype.then=function(i){var e=this,t=function(){for(var i in e)e.hasOwnProperty(i)&&(this[i]=e[i]);};t.prototype={is:s.prototype.is,toString:s.prototype.toString};t=new t;return i(t),t}),new s};function Pi(i,e){if(i=i||{},yi.call(this,j),e)yi.call(this,[[S,vi(i[z])],[C,vi(i[N])],[y,/\?1/.test(i[H])],[h,Si(i[E])],[q,Si(i[M])],[A,Si(i[R])],[x,Si(i[I])],[T,vi(i[U])],[O,Si(i[P])]]);else for(var t in i)this.hasOwnProperty(t)&&typeof i[t]!==b&&(this[t]=i[t]);}function Ui(i,e,t,o){return this.get=function(i){return i?this.data.hasOwnProperty(i)?this.data[i]:u:this.data},this.set=function(i,e){return this.data[i]=e,this},this.setCH=function(i){return this.uaCH=i,this},this.detectFeature=function(){if(pi&&pi.userAgent==this.ua)switch(this.itemType){case V:pi.brave&&typeof pi.brave.isBrave==c&&this.set(f,"Brave");break;case F:!this.get(m)&&hi&&hi[y]&&this.set(m,y),"Macintosh"==this.get(h)&&pi&&typeof pi.standalone!==b&&pi.maxTouchPoints&&2<pi.maxTouchPoints&&this.set(h,"iPad").set(m,r);break;case D:!this.get(f)&&hi&&hi[q]&&this.set(f,hi[q]);break;case G:var e=this.data,i=function(i){return e[i].getItem().detectFeature().get()};this.set(V,i(V)).set(B,i(B)).set(F,i(F)).set(X,i(X)).set(D,i(D));}return this},this.parseUA=function(){return this.itemType!=G&&Ci.call(this.data,this.ua,this.rgxMap),this.itemType==V&&this.set(p,ki(this.get(v))),this},this.parseCH=function(){var i,e=this.uaCH,t=this.rgxMap;switch(this.itemType){case V:var o,r=e[C]||e[S];if(r)for(var a in r){var s=_i(/(Google|Microsoft) /,r[a].brand||r[a]),a=r[a].version;/not.a.brand/i.test(s)||o&&(!/chrom/i.test(o)||/chromi/i.test(s))||(this.set(f,s).set(v,a).set(p,ki(a)),o=s);}break;case B:var n=e[x];n&&(n&&"64"==e[O]&&(n+="64"),Ci.call(this.data,n+";",t));break;case F:if(e[y]&&this.set(m,y),e[h]&&this.set(h,e[h]),"Xbox"==e[h]&&this.set(m,k).set(g,ii),e[T]){if("string"!=typeof e[T])for(var w=0;!i&&w<e[T].length;)i=qi(e[T][w++],Oi);else i=qi(e[T],Oi);this.set(m,i);}break;case D:n=e[q];n&&(l=e[A],n==ci&&(l=13<=parseInt(ki(l),10)?"11":"10"),this.set(f,n).set(v,l)),this.get(f)==ci&&"Xbox"==e[h]&&this.set(f,"Xbox").set(v,u);break;case G:var b=this.data,l=function(i){return b[i].getItem().setCH(e).parseCH().get()};this.set(V,l(V)).set(B,l(B)).set(F,l(F)).set(X,l(X)).set(D,l(D));}return this},yi.call(this,[["itemType",i],["ua",e],["uaCH",o],["rgxMap",t],["data",Ii(this,i)]]),this}function Hi(i,e,t){if(typeof i===d?(e=mi(i)?(typeof e===d&&(t=e),i):(t=i,u),i=u):typeof i!==s||mi(e)||(t=e,e=u),!(this instanceof Hi))return new Hi(i,e,t).getResult();var o=typeof i===s?i:pi&&pi.userAgent?pi.userAgent:t&&t[l]?t[l]:w,r=new Pi(t,!0),a=e?fi(zi,e):zi,e=function(i){return i==G?function(){return new Ui(i,o,a,r).set("ua",o).set(V,this.getBrowser()).set(B,this.getCPU()).set(F,this.getDevice()).set(X,this.getEngine()).set(D,this.getOS()).get()}:function(){return new Ui(i,o,a[i],r).parseUA().get()}};return yi.call(this,[["getBrowser",e(V)],["getCPU",e(B)],["getDevice",e(F)],["getEngine",e(X)],["getOS",e(D)],["getResult",e(G)],["getUA",function(){return o}],["setUA",function(i){return gi(i)&&(o=i.length>_?Ti(i,_):i),this}]]).setUA(o),this}Hi.VERSION="2.0.0-beta.2",Hi.BROWSER=e([f,v,p]),Hi.CPU=e([x]),Hi.DEVICE=e([h,g,m,k,y,t,r,o,a]),Hi.ENGINE=Hi.OS=e([f,v]),(module.exports&&(exports=module.exports=Hi),exports.UAParser=Hi);var Ei,Mi=di&&(i.jQuery||i.Zepto);Mi&&!Mi.ua&&(Ei=new Hi,Mi.ua=Ei.getResult(),Mi.ua.get=function(){return Ei.getUA()},Mi.ua.set=function(i){Ei.setUA(i);var e,t=Ei.getResult();for(e in t)Mi.ua[e]=t[e];});}("object"==typeof window?window:commonjsGlobal);
14
+ }(uaParser_pack, uaParser_pack.exports));
941
15
 
942
16
  // Unique ID creation requires a high quality random # generator. In the browser we therefore
943
17
  // require the crypto API and do not support built-in fallback to lower quality random number
@@ -972,7 +46,7 @@ for (let i = 0; i < 256; ++i) {
972
46
  function unsafeStringify(arr, offset = 0) {
973
47
  // Note: Be careful editing this code! It's been tuned for performance
974
48
  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
975
- return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
49
+ return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
976
50
  }
977
51
 
978
52
  const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
@@ -1005,15 +79,15 @@ function v4(options, buf, offset) {
1005
79
  }
1006
80
 
1007
81
  class Logger {
1008
- constructor(environment) {
1009
- this.log = (...args) => {
1010
- if (this.environment !== 'production' && Build.isDev) {
1011
- console.clear();
1012
- console.log(...args);
1013
- }
1014
- };
1015
- this.environment = environment;
1016
- }
82
+ constructor(environment) {
83
+ this.log = (...args) => {
84
+ if (this.environment !== 'production' && Build.isDev) {
85
+ console.clear();
86
+ console.log(...args);
87
+ }
88
+ };
89
+ this.environment = environment;
90
+ }
1017
91
  }
1018
92
 
1019
93
  function appendToParams(url, getParamsToUpdate) {
@@ -1061,49 +135,52 @@ function appendToParams(url, getParamsToUpdate) {
1061
135
  }
1062
136
 
1063
137
  const Logo = ({ className = '', color = '#7263FA' }) => {
1064
- return (h("svg", { class: className, xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 256 256' },
1065
- h("g", { fill: color, "clip-path": 'url(#a)' },
1066
- h("path", { d: 'M128 185h57v57h-57zM128 14h57v57h-57zM71 185h57v57H71zM71 14h57v57H71zM14 71h57v57H14zM185 71h57v57h-57zM71 14v57H14l57-57ZM14 128h57v57H14zM185 128h57v57h-57zM14 185h57v57l-57-57ZM185 14l57 57h-57V14Z' })),
1067
- h("defs", null,
1068
- h("clipPath", { id: 'a' },
1069
- h("path", { fill: '#fff', d: 'M14 14h228v228H14z' })))));
138
+ return (h("svg", { class: className, xmlns: "http://www.w3.org/2000/svg", viewBox: '0 0 256 256', fill: "none" },
139
+ h("path", { fill: color, d: "M128 185h57v57h-57v-57ZM128 14h57v57h-57V14ZM71 185h57v57H71v-57ZM71 14h57v57H71V14ZM14 71h57v57H14V71ZM185 71h57v57h-57V71ZM71 14v57H14l57-57ZM14 128h57v57H14v-57ZM185 128h57v57h-57v-57ZM14 185h57v57l-57-57ZM185 14l57 57h-57V14Z" })));
1070
140
  };
1071
141
 
142
+ const maxRetries = 30;
1072
143
  const send = (url, opts, request, errorCount) => {
1073
- let limit = errorCount
1074
- ? Math.pow(2, errorCount - 1) * opts.startLimit
1075
- : 0;
1076
- limit = limit < opts.maxLimit ? limit : opts.maxLimit;
1077
- const pause = Math.random() * limit;
1078
- setTimeout(function () {
1079
- request.open('POST', url, true);
1080
- for (const k in opts.headers) {
1081
- if (Object.prototype.hasOwnProperty.call(opts.headers, k)) {
1082
- request.setRequestHeader(k, opts.headers[k]);
1083
- }
144
+ if (errorCount >= maxRetries) {
145
+ request.abort();
146
+ request = null;
147
+ return;
1084
148
  }
1085
- request.send();
1086
- }, pause);
149
+ let limit = errorCount
150
+ ? Math.pow(2, errorCount - 1) * opts.startLimit
151
+ : 0;
152
+ limit = limit < opts.maxLimit ? limit : opts.maxLimit;
153
+ const pause = Math.random() * limit;
154
+ setTimeout(function () {
155
+ request.open('POST', url, true);
156
+ for (const k in opts.headers) {
157
+ if (Object.prototype.hasOwnProperty.call(opts.headers, k)) {
158
+ request.setRequestHeader(k, opts.headers[k]);
159
+ }
160
+ }
161
+ request.send();
162
+ }, pause);
1087
163
  };
1088
- const xhr = (url, opts = { startLimit: 100, maxLimit: 3 * 1000, enableWithCredentials: false }, callback) => {
1089
- let errorCount = 0;
1090
- const request = new XMLHttpRequest();
1091
- if (opts.enableWithCredentials)
1092
- request.withCredentials = true;
1093
- const retry = () => send(url, opts, request, ++errorCount);
1094
- request.addEventListener('error', retry);
1095
- request.addEventListener('timeout', retry);
1096
- request.addEventListener('load', () => {
1097
- if (request.status >= 200 && request.status < 300) {
1098
- return callback(request.responseText);
1099
- }
1100
- retry();
1101
- });
1102
- send(url, opts, request, errorCount);
1103
- return request;
164
+ const xhr = (url, opts, callback) => {
165
+ opts = Object.assign({ startLimit: 100, maxLimit: 3 * 1000, enableWithCredentials: false }, opts);
166
+ let errorCount = 0;
167
+ const request = new XMLHttpRequest();
168
+ if (opts.enableWithCredentials)
169
+ request.withCredentials = true;
170
+ const retry = () => send(url, opts, request, ++errorCount);
171
+ request.addEventListener('error', retry);
172
+ request.addEventListener('timeout', retry);
173
+ request.addEventListener('load', () => {
174
+ if (request.status >= 200 && request.status < 300) {
175
+ return callback(request.responseText);
176
+ }
177
+ retry();
178
+ });
179
+ send(url, opts, request, errorCount);
180
+ return request;
1104
181
  };
1105
182
  const http = {
1106
- send: xhr,
183
+ send: xhr,
1107
184
  };
1108
185
 
1109
186
  const DEFAULT_CALLBACK_URL$1 = window.location.origin + '/zero/auth';
@@ -1123,328 +200,331 @@ const zeroLogout = '0account-logout';
1123
200
  const zeroAuthenticated = '0account-authenticated';
1124
201
  // const zeroAuthenticationFailed = '0account-authentication-failed';
1125
202
  function debounce(func, timeout = 300) {
1126
- let timer;
1127
- return (...args) => {
1128
- clearTimeout(timer);
1129
- timer = setTimeout(() => {
1130
- func.apply(this, args);
1131
- }, timeout);
1132
- };
203
+ let timer;
204
+ return (...args) => {
205
+ clearTimeout(timer);
206
+ timer = setTimeout(() => {
207
+ func.apply(this, args);
208
+ }, timeout);
209
+ };
1133
210
  }
1134
211
  class WS {
1135
- constructor(appId, opts) {
1136
- this.wsURL = API_URL;
1137
- this.callbackURL = DEFAULT_CALLBACK_URL$1;
1138
- if (!opts.env)
1139
- opts.env = Environment.production;
1140
- this.appId = appId;
1141
- this.uaParser = opts.uaParser;
1142
- this.callbackURL = opts.callbackURL;
1143
- this.updateInterval = opts.updateInterval;
1144
- this.log = opts.log;
1145
- if (opts.env !== Environment.production)
1146
- this.wsURL = API_URL_STAGING;
1147
- this.init();
1148
- }
1149
- deviceInfo() {
1150
- return {
1151
- appId: this.appId,
1152
- browser: this.uaParser.getBrowser().name,
1153
- os: this.uaParser.getOS().name,
1154
- // TODO: handle these on backend:
1155
- // device: `${this.uaParser.getDevice().vendor} ${this.uaParser.getDevice().model}`,
1156
- // all: this.uaParser.getResult()
1157
- };
1158
- }
1159
- reinit() {
1160
- const retry = debounce(this.init.bind(this), 1000);
1161
- retry();
1162
- }
1163
- init() {
1164
- const onopen = (_) => {
1165
- this.send(fromWidgetEnsureSession, this.deviceInfo());
1166
- };
1167
- const onmessage = (event) => {
1168
- try {
1169
- const data = JSON.parse(event.data);
1170
- this.handleMessage(data);
1171
- }
1172
- catch (e) {
1173
- this.log(e);
1174
- }
1175
- };
1176
- const onerror = (_) => {
1177
- if (this.socket && (this.socket.readyState !== WebSocket.CLOSED
1178
- && this.socket.readyState !== WebSocket.CLOSING)) {
1179
- this.socket.close();
1180
- }
1181
- };
1182
- const onclose = (_) => {
1183
- if (this.socket) {
1184
- this.socket.removeEventListener('open', onopen);
1185
- this.socket.removeEventListener('message', onmessage);
1186
- this.socket.removeEventListener('error', onerror);
1187
- this.socket.removeEventListener('close', onclose);
1188
- delete this.socket;
1189
- }
1190
- this.reinit();
1191
- };
1192
- if (this.socket) {
1193
- this.socket.removeEventListener('open', onopen);
1194
- this.socket.removeEventListener('message', onmessage);
1195
- this.socket.removeEventListener('error', onerror);
1196
- this.socket.removeEventListener('close', onclose);
212
+ constructor(appId, opts) {
213
+ this.wsURL = API_URL;
214
+ this.callbackURL = DEFAULT_CALLBACK_URL$1;
215
+ if (!opts.env)
216
+ opts.env = Environment.production;
217
+ this.appId = appId;
218
+ this.uaParser = opts.uaParser;
219
+ this.callbackURL = opts.callbackURL;
220
+ this.updateInterval = opts.updateInterval;
221
+ this.enableWithCredentials = opts.enableWithCredentials;
222
+ this.log = opts.log;
223
+ if (opts.env !== Environment.production)
224
+ this.wsURL = API_URL_STAGING;
225
+ this.init();
1197
226
  }
1198
- this.socket = new WebSocket(this.wsURL);
1199
- this.socket.addEventListener('open', onopen);
1200
- this.socket.addEventListener('message', onmessage);
1201
- this.socket.addEventListener('error', onerror);
1202
- this.socket.addEventListener('close', onclose);
1203
- }
1204
- updateUUID(uuid) {
1205
- this.uuid = uuid;
1206
- this.send(fromWidgetUUIDUpdated, this.deviceInfo());
1207
- }
1208
- send(action, data) {
1209
- if (!this.socket || !this.socket.readyState || this.socket.readyState !== WebSocket.OPEN) {
1210
- const retry = debounce(this.send.bind(this), 1000);
1211
- return retry();
227
+ deviceInfo() {
228
+ return {
229
+ appId: this.appId,
230
+ browser: this.uaParser.getBrowser().withFeatureCheck().name,
231
+ os: this.uaParser.getOS().withFeatureCheck().name,
232
+ // TODO: handle these on backend:
233
+ // device: `${this.uaParser.getDevice().vendor} ${this.uaParser.getDevice().model}`,
234
+ // all: this.uaParser.getResult()
235
+ };
1212
236
  }
1213
- const msg = {
1214
- action: action,
1215
- timeout: `${this.updateInterval}ms`,
1216
- uuid: this.uuid,
1217
- appId: `${this.appId}`,
1218
- message: {},
1219
- };
1220
- if (action === fromWidgetEnsureSession) {
1221
- const sessionId = localStorage.getItem(`${PREFIX}_${SESSION_ID}`);
1222
- const sessionToken = localStorage.getItem(`${PREFIX}_${SESSION_TOKEN}`);
1223
- if (!sessionId || !sessionToken)
1224
- return;
1225
- msg.sessionId = sessionId;
1226
- msg.sessionToken = sessionToken;
237
+ reinit() {
238
+ const retry = debounce(this.init.bind(this), 1000);
239
+ retry();
1227
240
  }
1228
- if (data)
1229
- msg.message = data;
1230
- this.socket.send(JSON.stringify(msg));
1231
- }
1232
- onZeroAuth() {
1233
- if (this.request)
1234
- this.request.abort();
1235
- this.request = http.send(this.callbackURL, {
1236
- enableWithCredentials: true,
1237
- headers: {
1238
- 'x-0account-uuid': this.uuid,
1239
- 'x-0account-auth': 'true',
1240
- },
1241
- }, (responseText) => {
1242
- try {
1243
- const data = JSON.parse(responseText);
1244
- this.dispatchEventAndWsSend(zeroAuthenticated, data);
1245
- }
1246
- catch (err) {
1247
- this.log(err);
1248
- }
1249
- });
1250
- }
1251
- handleMessage(msg) {
1252
- switch (msg.action) {
1253
- case toWidgetApproved:
1254
- this.onZeroAuth();
1255
- localStorage.setItem(`${PREFIX}_${SESSION_ID}`, msg.sessionId);
1256
- localStorage.setItem(`${PREFIX}_${SESSION_TOKEN}`, msg.message);
1257
- break;
1258
- case toWidgetLogout:
1259
- localStorage.removeItem(`${PREFIX}_${SESSION_ID}`);
1260
- localStorage.removeItem(`${PREFIX}_${SESSION_TOKEN}`);
1261
- this.dispatchEvent(zeroLogout);
1262
- break;
1263
- case toAnyError:
1264
- this.log('ws error', msg);
1265
- break;
1266
- default:
1267
- this.log('incorrect action', msg.action, msg);
241
+ init() {
242
+ const onopen = (_) => {
243
+ this.send(fromWidgetEnsureSession, this.deviceInfo());
244
+ };
245
+ const onmessage = (event) => {
246
+ try {
247
+ const data = JSON.parse(event.data);
248
+ this.handleMessage(data);
249
+ }
250
+ catch (e) {
251
+ this.log(e);
252
+ }
253
+ };
254
+ const onerror = (_) => {
255
+ if (this.socket && (this.socket.readyState !== WebSocket.CLOSED
256
+ && this.socket.readyState !== WebSocket.CLOSING)) {
257
+ this.socket.close();
258
+ }
259
+ };
260
+ const onclose = (_) => {
261
+ if (this.socket) {
262
+ this.socket.removeEventListener('open', onopen);
263
+ this.socket.removeEventListener('message', onmessage);
264
+ this.socket.removeEventListener('error', onerror);
265
+ this.socket.removeEventListener('close', onclose);
266
+ delete this.socket;
267
+ }
268
+ this.reinit();
269
+ };
270
+ if (this.socket) {
271
+ this.socket.removeEventListener('open', onopen);
272
+ this.socket.removeEventListener('message', onmessage);
273
+ this.socket.removeEventListener('error', onerror);
274
+ this.socket.removeEventListener('close', onclose);
275
+ }
276
+ this.socket = new WebSocket(this.wsURL);
277
+ this.socket.addEventListener('open', onopen);
278
+ this.socket.addEventListener('message', onmessage);
279
+ this.socket.addEventListener('error', onerror);
280
+ this.socket.addEventListener('close', onclose);
281
+ }
282
+ updateUUID(uuid) {
283
+ this.uuid = uuid;
284
+ this.send(fromWidgetUUIDUpdated, this.deviceInfo());
285
+ }
286
+ send(action, data) {
287
+ if (!this.socket || !this.socket.readyState || this.socket.readyState !== WebSocket.OPEN) {
288
+ const retry = debounce(this.send.bind(this), 1000);
289
+ return retry();
290
+ }
291
+ const msg = {
292
+ action: action,
293
+ timeout: `${this.updateInterval}ms`,
294
+ uuid: this.uuid,
295
+ appId: `${this.appId}`,
296
+ message: {},
297
+ };
298
+ if (action === fromWidgetEnsureSession) {
299
+ const sessionId = localStorage.getItem(`${PREFIX}_${SESSION_ID}`);
300
+ const sessionToken = localStorage.getItem(`${PREFIX}_${SESSION_TOKEN}`);
301
+ if (!sessionId || !sessionToken)
302
+ return;
303
+ msg.sessionId = sessionId;
304
+ msg.sessionToken = sessionToken;
305
+ }
306
+ if (data)
307
+ msg.message = data;
308
+ this.socket.send(JSON.stringify(msg));
309
+ }
310
+ onZeroAuth() {
311
+ if (this.request)
312
+ this.request.abort();
313
+ this.request = http.send(this.callbackURL, {
314
+ enableWithCredentials: this.enableWithCredentials,
315
+ headers: {
316
+ 'x-0account-uuid': this.uuid,
317
+ 'x-0account-auth': 'true',
318
+ },
319
+ }, (responseText) => {
320
+ try {
321
+ const data = JSON.parse(responseText);
322
+ this.dispatchEventAndWsSend(zeroAuthenticated, data);
323
+ }
324
+ catch (err) {
325
+ this.log(err);
326
+ }
327
+ });
328
+ }
329
+ handleMessage(msg) {
330
+ switch (msg.action) {
331
+ case toWidgetApproved:
332
+ this.onZeroAuth();
333
+ localStorage.setItem(`${PREFIX}_${SESSION_ID}`, msg.sessionId);
334
+ localStorage.setItem(`${PREFIX}_${SESSION_TOKEN}`, msg.message);
335
+ break;
336
+ case toWidgetLogout:
337
+ localStorage.removeItem(`${PREFIX}_${SESSION_ID}`);
338
+ localStorage.removeItem(`${PREFIX}_${SESSION_TOKEN}`);
339
+ this.dispatchEvent(zeroLogout);
340
+ break;
341
+ case toAnyError:
342
+ this.log('ws error', msg);
343
+ break;
344
+ default:
345
+ this.log('incorrect action', msg.action, msg);
346
+ }
347
+ }
348
+ dispatchEventAndWsSend(name, data) {
349
+ this.dispatchEvent(name, data);
350
+ this.send('from-widget-' + name, data);
351
+ }
352
+ dispatchEvent(name, data) {
353
+ let event = new CustomEvent(name);
354
+ if (data)
355
+ event = new CustomEvent(name, { detail: data });
356
+ document.dispatchEvent(event);
1268
357
  }
1269
- }
1270
- dispatchEventAndWsSend(name, data) {
1271
- this.dispatchEvent(name, data);
1272
- this.send('from-widget-' + name, data);
1273
- }
1274
- dispatchEvent(name, data) {
1275
- let event = new CustomEvent(name);
1276
- if (data)
1277
- event = new CustomEvent(name, { detail: data });
1278
- document.dispatchEvent(event);
1279
- }
1280
358
  }
1281
359
 
1282
- const zeroAccountCss = ":host{--primary-color:#7263FA;--primary-background-color:#FFF;--button-animation-duration:200ms;--text-color:#000;--button-border-color:#B2D4FF;--button-border-radius:9999px;--button-background-color:var(--primary-background-color);--modal-logo-border-color:var(--primary-color);--modal-animation-duration:350ms;--easing:cubic-bezier(0.16, 1, 0.3, 1);font-family:sans-serif}.dark{--button-background-color:rgb(30, 41, 59);--primary-background-color:rgb(30, 41, 59);--button-border-color:#FFFFF9;--text-color:#FFFFF9;--modal-logo-border-color:#CCC}.button{font-size:16px;color:var(--text-color);cursor:pointer;padding:8px 12px 8px 10px;display:flex;flex-direction:row;align-items:center;gap:6px;border:1px solid var(--button-border-color);background-color:var(--button-background-color);border-radius:var(--button-border-radius)}.button:hover{transition:box-shadow var(--button-animation-duration);box-shadow:0 0 3px rgba(0, 0, 0, 0.3);background:linear-gradient(\n to top,\n rgba(200, 200, 200, 0.1),\n rgba(200, 200, 200, 0.1)\n ) var(--button-background-color)}.button:active{transition:box-shadow var(--button-animation-duration);box-shadow:0 0 0 rgba(0, 0, 0, 0)}.button__logo{width:1.3rem}.modal{display:flex;z-index:9999;justify-content:center;align-items:center;position:fixed;top:0;left:0;width:100%;height:100%;opacity:1;background-color:rgba(0, 0, 0, 0.3);transition:opacity var(--modal-animation-duration) var(--easing)}.modal--hidden{opacity:0;pointer-events:none}.modal__content{max-width:240px;border-radius:4px;position:relative;display:flex;flex-direction:column;align-items:center;padding:16px;background-color:var(--primary-background-color);transform:scale(1);transition:transform var(--modal-animation-duration) var(--easing)}.modal--hidden .modal__content{transform:scale(0.5)}.modal__qrcode__container{position:relative}.modal__qrcode{border-radius:4px;width:100%;height:auto}.modal__logo{padding:8px;border:2px var(--modal-logo-border-color) solid;border-radius:var(--button-border-radius);background-color:var(--primary-background-color);position:absolute;width:16%;top:50%;left:50%;transform:translate3d(-50%, -50%, 0)}.modal-animated .circle__overlay{width:100%;height:100%}.modal-animated .modal__qrcode{filter:blur(2px)}.modal-animated .modal__logo{border:none;animation:spin 2.5s var(--easing) infinite}@keyframes spin{0%{transform:translate3d(-50%, -50%, 0) rotate(0deg)}50%{transform:translate3d(-50%, -50%, 0) rotate(180deg)}100%{transform:translate3d(-50%, -50%, 0) rotate(360deg)}}.modal__buttons{width:100%;flex-direction:column;align-items:center;margin-top:14px;display:flex;text-align:center}.modal:not(.modal--hidden) .modal__button{transform:scale(1) translate3d(0, 0, 0)}.modal:not(.modal--hidden) .modal__link{transform:scale(1) translate3d(0, 0, 0)}.modal__button{transform:scale(0) translate3d(0, 150px, 0);transition:calc(var(--modal-animation-duration) + 50ms) var(--easing);transition-property:scale, transform, background-color;cursor:pointer;padding:12px;font-size:14px;background-color:var(--primary-color);color:white;border:none;border-radius:6px;width:100%}.modal__button:hover{background:linear-gradient(\n to top,\n rgba(0, 0, 0, 0.1),\n rgba(0, 0, 0, 0.1)\n ) var(--primary-color)}.modal__link{transform:scale(0) translate3d(0, 150px, 0);transition:calc(var(--modal-animation-duration) + 150ms) var(--easing);transition-property:scale, transform;font-size:0.8rem;padding:10px 20px 0;color:var(--primary-color);width:100%;text-decoration:underline rgba(0, 0, 0, 0)}.modal__link:hover{text-decoration-color:var(--primary-color)}.modal__close-button{position:absolute;top:-26px;right:-26px;width:24px;height:24px;background-color:rgba(0, 0, 0, 0.1);border-radius:10px;cursor:pointer;transition:background-color var(--modal-animation-duration) var(--easing)}.modal__close-button:hover{background-color:rgba(0, 0, 0, 0.3)}.modal__close-button:before,.modal__close-button:after{content:\"\";position:absolute;top:50%;left:50%;width:50%;height:1px;background-color:rgba(255, 255, 255, 0.8);transform:translate(-50%, -50%) rotate(45deg)}.modal__close-button:after{transform:translate(-50%, -50%) rotate(-45deg)}.circle__overlay{overflow:hidden;top:50%;left:50%;transform:translate(-50%, -50%);position:absolute;background-color:var(--primary-background-color);border-radius:var(--button-border-radius);width:10%;height:10%;border:2px var(--modal-logo-border-color) solid;transition:calc(var(--modal-animation-duration) + 200ms) var(--easing);transition-property:width, height, opacity}.circle{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:100px;height:100px;border-radius:50%;background-color:#E0E0E0;animation:circle__ripple 2s linear infinite}.circle--medium{width:150px;height:150px;animation-duration:2.5s}.circle--large{width:200px;height:200px;animation-duration:3s}@keyframes circle__ripple{0%{transform:translate(-50%, -50%) scale(0);opacity:1}100%{transform:translate(-50%, -50%) scale(1.5);opacity:0}}";
360
+ const zeroAccountCss = ":host{--primary-color:#7263FA;--primary-background-color:#FFF;--theme-based-radius:0px;--theme-based-padding:0px;--button-animation-duration:200ms;--text-color:#000;--button-border-color:#B2D4FF;--button-border-radius:9999px;--button-background-color:var(--primary-background-color);--modal-logo-border-color:var(--primary-color);--modal-animation-duration:350ms;--easing:cubic-bezier(0.16, 1, 0.3, 1);font-family:sans-serif}.dark{--button-background-color:rgb(30, 41, 59);--primary-background-color:rgb(30, 41, 59);--button-border-color:#FFFFF9;--text-color:#FFFFF9;--modal-logo-border-color:#CCC;--theme-based-radius:4px;--theme-based-padding:8px}.button{font-size:16px;color:var(--text-color);cursor:pointer;padding:8px 12px 8px 10px;display:flex;flex-direction:row;align-items:center;gap:6px;border:1px solid var(--button-border-color);background-color:var(--button-background-color);border-radius:var(--button-border-radius)}.button:hover{transition:box-shadow var(--button-animation-duration);box-shadow:0 0 3px rgba(0, 0, 0, 0.3);background:linear-gradient(\n to top,\n rgba(200, 200, 200, 0.1),\n rgba(200, 200, 200, 0.1)\n ) var(--button-background-color)}.button:active{transition:box-shadow var(--button-animation-duration);box-shadow:0 0 0 rgba(0, 0, 0, 0)}.button__logo{width:1.3rem}.modal{display:flex;z-index:9999;justify-content:center;align-items:center;position:fixed;top:0;left:0;width:100%;height:100%;opacity:1;background-color:rgba(0, 0, 0, 0.3);transition:opacity var(--modal-animation-duration) var(--easing)}.modal--hidden{opacity:0;pointer-events:none}.modal__content{max-width:240px;border-radius:4px;position:relative;display:flex;flex-direction:column;align-items:center;padding:16px;background-color:var(--primary-background-color);transform:scale(1);transition:transform var(--modal-animation-duration) var(--easing)}.modal--hidden .modal__content{transform:scale(0.5)}.modal__qrcode__container{position:relative;background-color:white;border-radius:var(--theme-based-radius);padding:var(--theme-based-padding)}.modal__qrcode{border-radius:4px;width:100%;height:auto}.modal__logo{padding:8px;border:2px var(--modal-logo-border-color) solid;border-radius:var(--button-border-radius);background-color:var(--primary-background-color);position:absolute;width:16%;top:50%;left:50%;transform:translate3d(-50%, -50%, 0)}.modal-animated .circle__overlay{width:100%;height:100%}.modal-animated .modal__qrcode{filter:blur(2px)}.modal-animated .modal__logo{border:none;animation:spin 2.5s var(--easing) infinite}@keyframes spin{0%{transform:translate3d(-50%, -50%, 0) rotate(0deg)}50%{transform:translate3d(-50%, -50%, 0) rotate(180deg)}100%{transform:translate3d(-50%, -50%, 0) rotate(360deg)}}.modal__buttons{width:100%;flex-direction:column;align-items:center;margin-top:14px;display:flex;text-align:center}.modal:not(.modal--hidden) .modal__button{transform:scale(1) translate3d(0, 0, 0)}.modal:not(.modal--hidden) .modal__link{transform:scale(1) translate3d(0, 0, 0)}.modal__button{transform:scale(0) translate3d(0, 150px, 0);transition:calc(var(--modal-animation-duration) + 50ms) var(--easing);transition-property:scale, transform, background-color;cursor:pointer;padding:12px;font-size:14px;background-color:var(--primary-color);color:white;border:none;border-radius:6px;width:100%}.modal__button:hover{background:linear-gradient(\n to top,\n rgba(0, 0, 0, 0.1),\n rgba(0, 0, 0, 0.1)\n ) var(--primary-color)}.modal__link{transform:scale(0) translate3d(0, 150px, 0);transition:calc(var(--modal-animation-duration) + 150ms) var(--easing);transition-property:scale, transform;font-size:0.8rem;padding:10px 20px 0;color:var(--primary-color);width:100%;text-decoration:underline rgba(0, 0, 0, 0)}.modal__link:hover{text-decoration-color:var(--primary-color)}.modal__close-button{position:absolute;top:-26px;right:-26px;width:24px;height:24px;background-color:rgba(0, 0, 0, 0.1);border-radius:10px;cursor:pointer;transition:background-color var(--modal-animation-duration) var(--easing)}.modal__close-button:hover{background-color:rgba(0, 0, 0, 0.3)}.modal__close-button:before,.modal__close-button:after{content:\"\";position:absolute;top:50%;left:50%;width:50%;height:1px;background-color:rgba(255, 255, 255, 0.8);transform:translate(-50%, -50%) rotate(45deg)}.modal__close-button:after{transform:translate(-50%, -50%) rotate(-45deg)}.circle__overlay{overflow:hidden;top:50%;left:50%;transform:translate(-50%, -50%);position:absolute;background-color:var(--primary-background-color);border-radius:var(--button-border-radius);width:10%;height:10%;border:2px var(--modal-logo-border-color) solid;transition:calc(var(--modal-animation-duration) + 200ms) var(--easing);transition-property:width, height, opacity}.circle{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:100px;height:100px;border-radius:50%;background-color:#E0E0E0;animation:circle__ripple 2s linear infinite}.circle--medium{width:150px;height:150px;animation-duration:2.5s}.circle--large{width:200px;height:200px;animation-duration:3s}@keyframes circle__ripple{0%{transform:translate(-50%, -50%) scale(0);opacity:1}100%{transform:translate(-50%, -50%) scale(1.5);opacity:0}}";
361
+ const ZeroAccountStyle0 = zeroAccountCss;
1283
362
 
1284
363
  const maxInterval = 59 * 60 * 1000;
1285
364
  const minInterval = 10 * 1000;
1286
365
  const DEFAULT_CALLBACK_URL = window.location.origin + '/zero/auth';
1287
366
  const ANIMATION_DURATION = 3000;
1288
367
  const ZeroAccount$1 = /*@__PURE__*/ proxyCustomElement(class ZeroAccount extends HTMLElement {
1289
- constructor() {
1290
- super();
1291
- this.__registerHost();
1292
- this.__attachShadow();
1293
- this.refreshQR = (ignoreAnimate = false) => {
1294
- const update = () => {
1295
- this.restartTimer();
1296
- this.updateURL();
1297
- };
1298
- if (ignoreAnimate)
1299
- return update();
1300
- this.isAnimating = true;
1301
- this.animationTimer = window.setTimeout(() => {
1302
- update();
368
+ constructor() {
369
+ super();
370
+ this.__registerHost();
371
+ this.__attachShadow();
372
+ this.refreshQR = (ignoreAnimate = false) => {
373
+ const update = () => {
374
+ this.restartTimer();
375
+ this.updateURL();
376
+ };
377
+ if (ignoreAnimate)
378
+ return update();
379
+ this.isAnimating = true;
380
+ this.animationTimer = window.setTimeout(() => {
381
+ update();
382
+ this.isAnimating = false;
383
+ }, ANIMATION_DURATION);
384
+ };
385
+ this.hideOnEsc = (e) => {
386
+ if ((e.key === 'Escape' || e.key === 'Esc')) {
387
+ this.modalOpen = false;
388
+ }
389
+ };
390
+ this.log = (...args) => this.logger.log(...args);
391
+ this.appId = undefined;
392
+ this.updateInterval = 3 * 60 * 1000;
393
+ this.callbackURL = DEFAULT_CALLBACK_URL;
394
+ this.modal = true;
395
+ this.level = ErrorCorrectionLevel.M;
396
+ this.primaryColor = '#3C444F';
397
+ this.secondaryColor = undefined;
398
+ this.environment = Environment.production;
399
+ this.enableWithCredentials = false;
400
+ this.themePreset = ThemePreset.light;
401
+ this.autoStartApp = true;
402
+ this.modalOpen = false;
1303
403
  this.isAnimating = false;
1304
- }, ANIMATION_DURATION);
1305
- };
1306
- this.hideOnEsc = (e) => {
1307
- if ((e.key === 'Escape' || e.key === 'Esc')) {
404
+ this.url = '';
405
+ }
406
+ getUpdateInterval() {
407
+ // make sure the provided value is within bounds
408
+ return Math.min(Math.max(this.updateInterval, minInterval), maxInterval);
409
+ }
410
+ toggleModal() {
411
+ this.modalOpen = !this.modalOpen;
412
+ if (this.modalOpen)
413
+ this.refreshQR(true);
414
+ if ((this.modalOpen && this.autoStartApp) || this.isMobile())
415
+ this.openApp();
416
+ }
417
+ _closeModal() {
1308
418
  this.modalOpen = false;
1309
- }
1310
- };
1311
- this.log = (...args) => this.logger.log(...args);
1312
- this.appId = undefined;
1313
- this.updateInterval = 3 * 60 * 1000;
1314
- this.callbackURL = DEFAULT_CALLBACK_URL;
1315
- this.modal = true;
1316
- this.level = ErrorCorrectionLevel.M;
1317
- this.primaryColor = '#3C444F';
1318
- this.secondaryColor = undefined;
1319
- this.environment = Environment.production;
1320
- this.enableWithCredentials = false;
1321
- this.themePreset = ThemePreset.light;
1322
- this.autoStartApp = true;
1323
- this.modalOpen = false;
1324
- this.isAnimating = false;
1325
- this.url = '';
1326
- }
1327
- getUpdateInterval() {
1328
- // make sure the provided value is within bounds
1329
- return Math.min(Math.max(this.updateInterval, minInterval), maxInterval);
1330
- }
1331
- toggleModal() {
1332
- this.modalOpen = !this.modalOpen;
1333
- if (this.modalOpen)
1334
- this.refreshQR(true);
1335
- if ((this.modalOpen && this.autoStartApp) || this.isMobile())
1336
- this.openApp();
1337
- }
1338
- _closeModal() {
1339
- this.modalOpen = false;
1340
- this.stopTimer();
1341
- }
1342
- closeModal(e) {
1343
- if (e.target !== this.modalEl && e.target !== this.closeButtonEl) {
1344
- return e.stopPropagation();
419
+ this.stopTimer();
1345
420
  }
1346
- this._closeModal();
1347
- }
1348
- openApp() {
1349
- if (this.modalOpen) {
1350
- window.location.href = this.url;
421
+ closeModal(e) {
422
+ if (e.target !== this.modalEl && e.target !== this.closeButtonEl) {
423
+ return e.stopPropagation();
424
+ }
425
+ this._closeModal();
1351
426
  }
1352
- }
1353
- render() {
1354
- const logoColor = this.themePreset === ThemePreset.light ? '#7263FA' : '#FFFFF9';
1355
- const qrColor = this.themePreset === ThemePreset.light ? '#000' : '#FFFFF9';
1356
- return (h(Host, null, h("slot", null), this.host.childNodes.length === 0 &&
1357
- h("button", { class: `button ${this.themePreset}`, onClick: () => this.toggleModal() }, h(Logo, { className: 'button__logo', color: logoColor }), "use 0account"), h("div", { ref: el => this.modalEl = el, onClick: (e) => this.closeModal(e), class: `modal ${this.themePreset} ${this.isAnimating ? 'modal-animated' : ''} ${this.modalOpen ? '' : 'modal--hidden'}` }, h("div", { class: 'modal__content' }, h("div", { ref: el => this.closeButtonEl = el, class: 'modal__close-button' }), h("div", { class: 'modal__qrcode__container' }, h("qr-code", { url: this.url, class: `modal__qrcode`, level: this.level, color: qrColor }), h("div", { class: 'circle__overlay' }, h("div", { class: 'circle' }), h("div", { class: 'circle circle--medium' }), h("div", { class: 'circle circle--large' })), h(Logo, { className: 'modal__logo', color: logoColor })), h("div", { class: 'modal__buttons' }, h("button", { onClick: () => this.openApp(), class: 'modal__button' }, "Open the desktop app"), h("a", { href: '#', class: 'modal__link' }, "Download the app"))))));
1358
- }
1359
- // called only once
1360
- componentWillLoad() {
1361
- this.logger = new Logger(this.environment);
1362
- this.uaParser = new uaParser.UAParser();
1363
- this.ws = new WS(this.appId, {
1364
- updateInterval: this.getUpdateInterval(),
1365
- callbackURL: this.callbackURL,
1366
- uaParser: this.uaParser,
1367
- env: this.environment,
1368
- log: this.log,
1369
- });
1370
- // make sure we initQR
1371
- this.refreshQR(true);
1372
- document.addEventListener('keydown', this.hideOnEsc);
1373
- }
1374
- updateURL() {
1375
- const expires = new Date().getTime() + this.getUpdateInterval();
1376
- const uuid = v4();
1377
- this.ws.updateUUID(uuid);
1378
- const params = appendToParams('', {
1379
- appId: this.appId,
1380
- uuid: uuid,
1381
- expires: expires,
1382
- });
1383
- if (this.isMobile()) {
1384
- this.url = 'https://launch.0account.com/auth?' + params;
427
+ openApp() {
428
+ if (this.modalOpen) {
429
+ window.location.href = this.url;
430
+ }
1385
431
  }
1386
- else {
1387
- this.url = 'zero-account://auth?' + params;
432
+ render() {
433
+ const logoColor = this.themePreset === ThemePreset.light ? '#7263FA' : '#FFFFF9';
434
+ const qrColor = '#000';
435
+ return (h(Host, { key: '1dc3610232166249e09861006f22ad43a58d208d' }, h("slot", { key: '5c510d06b9423a2540e494c57eebda16ac2f3fe6' }), this.host.childNodes.length === 0 &&
436
+ h("button", { class: `button ${this.themePreset}`, onClick: () => this.toggleModal() }, h(Logo, { className: 'button__logo', color: logoColor }), "use 0account"), h("div", { key: '1ccab237f88fe77eb22f0c0b82b9612b536a6eb2', ref: el => this.modalEl = el, onClick: (e) => this.closeModal(e), class: `modal ${this.themePreset} ${this.isAnimating ? 'modal-animated' : ''} ${this.modalOpen ? '' : 'modal--hidden'}` }, h("div", { key: 'cca5693c98f2dbf7aa5584e62862e90783c24bdb', class: 'modal__content' }, h("div", { key: 'fa239e9bb2f618a7d0067c74d6c599f1482aa0ce', ref: el => this.closeButtonEl = el, class: 'modal__close-button' }), h("div", { key: '3d8e206fbbb7a45f0b634fc1ac5cda0a3434d6d9', class: 'modal__qrcode__container' }, h("qr-code", { key: 'a2f7f00f7926c7994c79098b4f386e4e60f16bc4', url: this.url, class: `modal__qrcode`, level: this.level, color: qrColor }), h("div", { key: '5819116a32e44341a408b79d5ed48a31c0be17d9', class: 'circle__overlay' }, h("div", { key: '67220c1757145e3263fdf8b265730a9b50628034', class: 'circle' }), h("div", { key: '2d43067a7a3e0fad60670a92f026925b7b2141f0', class: 'circle circle--medium' }), h("div", { key: 'c6cc6df2fcfd06b895e185f5b818150ea031c15e', class: 'circle circle--large' })), h(Logo, { key: '1e5b5f9687d0629cacd3c2524bb271824c03f102', className: 'modal__logo', color: logoColor })), h("div", { key: '13e998689e3b8942c39f94c8d67b1d6908ea63de', class: 'modal__buttons' }, h("button", { key: '879631b5e37bd0b9f440023edbef542d3628142c', onClick: () => this.openApp(), class: 'modal__button' }, "Open the desktop app"), h("a", { key: '3be4413c520f42982546535badf4aa133a25ee78', href: 'https://0account.com/downloads', class: 'modal__link' }, "Download the app"))))));
1388
437
  }
1389
- }
1390
- isMobile() {
1391
- const device = this.uaParser.getDevice();
1392
- return device.type === 'tablet' || device.type === 'mobile';
1393
- }
1394
- connectedCallback() {
1395
- this.startTimer();
1396
- }
1397
- disconnectedCallback() {
1398
- this.stopTimer();
1399
- document.removeEventListener('keydown', this.hideOnEsc);
1400
- }
1401
- restartTimer() {
1402
- this.stopTimer();
1403
- this.startTimer();
1404
- }
1405
- startTimer() {
1406
- this.timer = window.setInterval(this.refreshQR, this.getUpdateInterval());
1407
- }
1408
- stopTimer() {
1409
- window.clearInterval(this.timer);
1410
- window.clearTimeout(this.animationTimer);
1411
- this.isAnimating = false;
1412
- }
1413
- get host() { return this; }
1414
- static get style() { return zeroAccountCss; }
438
+ // called only once
439
+ componentWillLoad() {
440
+ this.logger = new Logger(this.environment);
441
+ this.uaParser = new uaParser_pack.exports.UAParser();
442
+ this.ws = new WS(this.appId, {
443
+ updateInterval: this.getUpdateInterval(),
444
+ enableWithCredentials: this.enableWithCredentials,
445
+ callbackURL: this.callbackURL,
446
+ uaParser: this.uaParser,
447
+ env: this.environment,
448
+ log: this.log,
449
+ });
450
+ // make sure we initQR
451
+ this.refreshQR(true);
452
+ document.addEventListener('keydown', this.hideOnEsc);
453
+ }
454
+ updateURL() {
455
+ const expires = new Date().getTime() + this.getUpdateInterval();
456
+ const uuid = v4();
457
+ this.ws.updateUUID(uuid);
458
+ const params = appendToParams('', {
459
+ appId: this.appId,
460
+ uuid: uuid,
461
+ expires: expires,
462
+ });
463
+ if (this.isMobile()) {
464
+ this.url = 'https://launch.0account.com/auth?' + params;
465
+ }
466
+ else {
467
+ this.url = 'zero-account://auth?' + params;
468
+ }
469
+ }
470
+ isMobile() {
471
+ const device = this.uaParser.getDevice();
472
+ return device.type === 'tablet' || device.type === 'mobile';
473
+ }
474
+ connectedCallback() {
475
+ this.startTimer();
476
+ }
477
+ disconnectedCallback() {
478
+ this.stopTimer();
479
+ document.removeEventListener('keydown', this.hideOnEsc);
480
+ }
481
+ restartTimer() {
482
+ this.stopTimer();
483
+ this.startTimer();
484
+ }
485
+ startTimer() {
486
+ this.timer = window.setInterval(this.refreshQR, this.getUpdateInterval());
487
+ }
488
+ stopTimer() {
489
+ window.clearInterval(this.timer);
490
+ window.clearTimeout(this.animationTimer);
491
+ this.isAnimating = false;
492
+ }
493
+ get host() { return this; }
494
+ static get style() { return ZeroAccountStyle0; }
1415
495
  }, [1, "zero-account", {
1416
- "appId": [1, "app-id"],
1417
- "updateInterval": [2, "update-interval"],
1418
- "callbackURL": [1, "callback-url"],
1419
- "modal": [4],
1420
- "level": [1],
1421
- "primaryColor": [1, "primary-color"],
1422
- "secondaryColor": [1, "secondary-color"],
1423
- "environment": [1],
1424
- "enableWithCredentials": [4, "enable-with-credentials"],
1425
- "themePreset": [1, "theme-preset"],
1426
- "autoStartApp": [4, "auto-start-app"],
1427
- "modalOpen": [32],
1428
- "isAnimating": [32],
1429
- "url": [32]
1430
- }, [[4, "0account-toggle-modal", "toggleModal"], [4, "0account-close-modal", "_closeModal"], [4, "0account-authenticated", "_closeModal"], [4, "0account-open-app", "openApp"]]]);
496
+ "appId": [1, "app-id"],
497
+ "updateInterval": [2, "update-interval"],
498
+ "callbackURL": [1, "callback-url"],
499
+ "modal": [4],
500
+ "level": [1],
501
+ "primaryColor": [1, "primary-color"],
502
+ "secondaryColor": [1, "secondary-color"],
503
+ "environment": [1],
504
+ "enableWithCredentials": [4, "enable-with-credentials"],
505
+ "themePreset": [1, "theme-preset"],
506
+ "autoStartApp": [4, "auto-start-app"],
507
+ "modalOpen": [32],
508
+ "isAnimating": [32],
509
+ "url": [32]
510
+ }, [[4, "0account-toggle-modal", "toggleModal"], [4, "0account-close-modal", "_closeModal"], [4, "0account-authenticated", "_closeModal"], [4, "0account-open-app", "openApp"]]]);
1431
511
  function defineCustomElement$1() {
1432
- if (typeof customElements === "undefined") {
1433
- return;
1434
- }
1435
- const components = ["zero-account", "qr-code"];
1436
- components.forEach(tagName => { switch (tagName) {
1437
- case "zero-account":
1438
- if (!customElements.get(tagName)) {
1439
- customElements.define(tagName, ZeroAccount$1);
1440
- }
1441
- break;
1442
- case "qr-code":
1443
- if (!customElements.get(tagName)) {
1444
- defineCustomElement$2();
1445
- }
1446
- break;
1447
- } });
512
+ if (typeof customElements === "undefined") {
513
+ return;
514
+ }
515
+ const components = ["zero-account", "qr-code"];
516
+ components.forEach(tagName => { switch (tagName) {
517
+ case "zero-account":
518
+ if (!customElements.get(tagName)) {
519
+ customElements.define(tagName, ZeroAccount$1);
520
+ }
521
+ break;
522
+ case "qr-code":
523
+ if (!customElements.get(tagName)) {
524
+ defineCustomElement$2();
525
+ }
526
+ break;
527
+ } });
1448
528
  }
1449
529
 
1450
530
  const ZeroAccount = ZeroAccount$1;