· 5 years ago · Jul 23, 2020, 06:32 PM
1var hcaptcha = function() {
2 "use strict";
3 function t(t) {
4 var e = this.constructor;
5 return this.then(function(n) {
6 return e.resolve(t()).then(function() {
7 return n
8 })
9 }, function(n) {
10 return e.resolve(t()).then(function() {
11 return e.reject(n)
12 })
13 })
14 }
15 var e = setTimeout;
16 function n() {}
17 function i(t) {
18 if (!(this instanceof i))
19 throw new TypeError("Promises must be constructed via new");
20 if ("function" != typeof t)
21 throw new TypeError("not a function");
22 this._state = 0,
23 this._handled = !1,
24 this._value = undefined,
25 this._deferreds = [],
26 h(t, this)
27 }
28 function s(t, e) {
29 for (; 3 === t._state; )
30 t = t._value;
31 0 !== t._state ? (t._handled = !0,
32 i._immediateFn(function() {
33 var n = 1 === t._state ? e.onFulfilled : e.onRejected;
34 if (null !== n) {
35 var i;
36 try {
37 i = n(t._value)
38 } catch (s) {
39 return void o(e.promise, s)
40 }
41 r(e.promise, i)
42 } else
43 (1 === t._state ? r : o)(e.promise, t._value)
44 })) : t._deferreds.push(e)
45 }
46 function r(t, e) {
47 try {
48 if (e === t)
49 throw new TypeError("A promise cannot be resolved with itself.");
50 if (e && ("object" == typeof e || "function" == typeof e)) {
51 var n = e.then;
52 if (e instanceof i)
53 return t._state = 3,
54 t._value = e,
55 void a(t);
56 if ("function" == typeof n)
57 return void h((s = n,
58 r = e,
59 function() {
60 s.apply(r, arguments)
61 }
62 ), t)
63 }
64 t._state = 1,
65 t._value = e,
66 a(t)
67 } catch (l) {
68 o(t, l)
69 }
70 var s, r
71 }
72 function o(t, e) {
73 t._state = 2,
74 t._value = e,
75 a(t)
76 }
77 function a(t) {
78 2 === t._state && 0 === t._deferreds.length && i._immediateFn(function() {
79 t._handled || i._unhandledRejectionFn(t._value)
80 });
81 for (var e = 0, n = t._deferreds.length; e < n; e++)
82 s(t, t._deferreds[e]);
83 t._deferreds = null
84 }
85 function l(t, e, n) {
86 this.onFulfilled = "function" == typeof t ? t : null,
87 this.onRejected = "function" == typeof e ? e : null,
88 this.promise = n
89 }
90 function h(t, e) {
91 var n = !1;
92 try {
93 t(function(t) {
94 n || (n = !0,
95 r(e, t))
96 }, function(t) {
97 n || (n = !0,
98 o(e, t))
99 })
100 } catch (i) {
101 if (n)
102 return;
103 n = !0,
104 o(e, i)
105 }
106 }
107 i.prototype["catch"] = function(t) {
108 return this.then(null, t)
109 }
110 ,
111 i.prototype.then = function(t, e) {
112 var i = new this.constructor(n);
113 return s(this, new l(t,e,i)),
114 i
115 }
116 ,
117 i.prototype["finally"] = t,
118 i.all = function(t) {
119 return new i(function(e, n) {
120 if (!t || "undefined" == typeof t.length)
121 throw new TypeError("Promise.all accepts an array");
122 var i = Array.prototype.slice.call(t);
123 if (0 === i.length)
124 return e([]);
125 var s = i.length;
126 function r(t, o) {
127 try {
128 if (o && ("object" == typeof o || "function" == typeof o)) {
129 var a = o.then;
130 if ("function" == typeof a)
131 return void a.call(o, function(e) {
132 r(t, e)
133 }, n)
134 }
135 i[t] = o,
136 0 == --s && e(i)
137 } catch (l) {
138 n(l)
139 }
140 }
141 for (var o = 0; o < i.length; o++)
142 r(o, i[o])
143 }
144 )
145 }
146 ,
147 i.resolve = function(t) {
148 return t && "object" == typeof t && t.constructor === i ? t : new i(function(e) {
149 e(t)
150 }
151 )
152 }
153 ,
154 i.reject = function(t) {
155 return new i(function(e, n) {
156 n(t)
157 }
158 )
159 }
160 ,
161 i.race = function(t) {
162 return new i(function(e, n) {
163 for (var i = 0, s = t.length; i < s; i++)
164 t[i].then(e, n)
165 }
166 )
167 }
168 ,
169 i._immediateFn = "function" == typeof setImmediate && function(t) {
170 setImmediate(t)
171 }
172 || function(t) {
173 e(t, 0)
174 }
175 ,
176 i._unhandledRejectionFn = function(t) {
177 "undefined" != typeof console && console && console.warn("Possible Unhandled Promise Rejection:", t)
178 }
179 ;
180 var c, u = function() {
181 if ("undefined" != typeof self)
182 return self;
183 if ("undefined" != typeof window)
184 return window;
185 if ("undefined" != typeof global)
186 return global;
187 throw new Error("unable to locate global object")
188 }();
189 "Promise"in u ? u.Promise.prototype["finally"] || (u.Promise.prototype["finally"] = t) : u.Promise = i,
190 Array.prototype.indexOf || (Array.prototype.indexOf = function(t) {
191 return function(e, n) {
192 if (null === this || this === undefined)
193 throw TypeError("Array.prototype.indexOf called on null or undefined");
194 var i = t(this)
195 , s = i.length >>> 0
196 , r = Math.min(0 | n, s);
197 if (r < 0)
198 r = Math.max(0, s + r);
199 else if (r >= s)
200 return -1;
201 if (void 0 === e) {
202 for (; r !== s; ++r)
203 if (void 0 === i[r] && r in i)
204 return r
205 } else if (e != e) {
206 for (; r !== s; ++r)
207 if (i[r] != i[r])
208 return r
209 } else
210 for (; r !== s; ++r)
211 if (i[r] === e)
212 return r;
213 return -1
214 }
215 }(Object)),
216 Array.isArray || (Array.isArray = function(t) {
217 return "[object Array]" === Object.prototype.toString.call(t)
218 }
219 ),
220 document.getElementsByClassName || (window.Element.prototype.getElementsByClassName = document.constructor.prototype.getElementsByClassName = function(t) {
221 if (document.querySelectorAll)
222 return document.querySelectorAll("." + t);
223 for (var e = document.getElementsByTagName("*"), n = new RegExp("(^|\\s)" + t + "(\\s|$)"), i = [], s = 0; s < e.length; s++)
224 n.test(e[s].className) && i.push(e[s]);
225 return i
226 }
227 ),
228 String.prototype.startsWith || (String.prototype.startsWith = function(t, e) {
229 return this.substr(!e || e < 0 ? 0 : +e, t.length) === t
230 }
231 ),
232 String.prototype.endsWith || (String.prototype.endsWith = function(t, e) {
233 return (e === undefined || e > this.length) && (e = this.length),
234 this.substring(e - t.length, e) === t
235 }
236 );
237 try {
238 if (Object.defineProperty && Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(Element.prototype, "textContent") && !Object.getOwnPropertyDescriptor(Element.prototype, "textContent").get) {
239 var d = Object.getOwnPropertyDescriptor(Element.prototype, "innerText");
240 Object.defineProperty(Element.prototype, "textContent", {
241 get: function() {
242 return d.get.call(this)
243 },
244 set: function(t) {
245 return d.set.call(this, t)
246 }
247 })
248 }
249 } catch ($n) {}
250 Function.prototype.bind || (Function.prototype.bind = function(t) {
251 if ("function" != typeof this)
252 throw new TypeError("Function.prototype.bind: Item Can Not Be Bound.");
253 var e = Array.prototype.slice.call(arguments, 1)
254 , n = this
255 , i = function() {}
256 , s = function() {
257 return n.apply(this instanceof i ? this : t, e.concat(Array.prototype.slice.call(arguments)))
258 };
259 return this.prototype && (i.prototype = this.prototype),
260 s.prototype = new i,
261 s
262 }
263 ),
264 "function" != typeof Object.create && (Object.create = function(t, e) {
265 function n() {}
266 if (n.prototype = t,
267 "object" == typeof e)
268 for (var i in e)
269 e.hasOwnProperty(i) && (n[i] = e[i]);
270 return new n
271 }
272 ),
273 Date.now || (Date.now = function() {
274 return (new Date).getTime()
275 }
276 ),
277 window.console || (window.console = {});
278 for (var p = ["error", "info", "log", "show", "table", "trace", "warn"], f = function(t) {}, m = p.length; --m > -1; )
279 c = p[m],
280 window.console[c] || (window.console[c] = f);
281 if (window.atob)
282 try {
283 window.atob(" ")
284 } catch (An) {
285 window.atob = function(t) {
286 var e = function(e) {
287 return t(String(e).replace(/[\t\n\f\r ]+/g, ""))
288 };
289 return e.original = t,
290 e
291 }(window.atob)
292 }
293 else {
294 var g = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
295 , y = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
296 window.atob = function(t) {
297 if (t = String(t).replace(/[\t\n\f\r ]+/g, ""),
298 !y.test(t))
299 throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
300 var e, n, i;
301 t += "==".slice(2 - (3 & t.length));
302 for (var s = "", r = 0; r < t.length; )
303 e = g.indexOf(t.charAt(r++)) << 18 | g.indexOf(t.charAt(r++)) << 12 | (n = g.indexOf(t.charAt(r++))) << 6 | (i = g.indexOf(t.charAt(r++))),
304 s += 64 === n ? String.fromCharCode(e >> 16 & 255) : 64 === i ? String.fromCharCode(e >> 16 & 255, e >> 8 & 255) : String.fromCharCode(e >> 16 & 255, e >> 8 & 255, 255 & e);
305 return s
306 }
307 }
308 !function(t) {
309 if ("object" == typeof exports && "undefined" != typeof module)
310 module.exports = t();
311 else if ("function" == typeof define && define.amd)
312 define([], t);
313 else {
314 ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).Raven = t()
315 }
316 }(function() {
317 return function t(e, n, i) {
318 function s(o, a) {
319 if (!n[o]) {
320 if (!e[o]) {
321 var l = "function" == typeof require && require;
322 if (!a && l)
323 return l(o, !0);
324 if (r)
325 return r(o, !0);
326 var h = new Error("Cannot find module '" + o + "'");
327 throw h.code = "MODULE_NOT_FOUND",
328 h
329 }
330 var c = n[o] = {
331 exports: {}
332 };
333 e[o][0].call(c.exports, function(t) {
334 var n = e[o][1][t];
335 return s(n || t)
336 }, c, c.exports, t, e, n, i)
337 }
338 return n[o].exports
339 }
340 for (var r = "function" == typeof require && require, o = 0; o < i.length; o++)
341 s(i[o]);
342 return s
343 }({
344 1: [function(t, e, n) {
345 function i(t) {
346 this.name = "RavenConfigError",
347 this.message = t
348 }
349 i.prototype = new Error,
350 i.prototype.constructor = i,
351 e.exports = i
352 }
353 , {}],
354 2: [function(t, e, n) {
355 var i = t(5);
356 e.exports = {
357 wrapMethod: function(t, e, n) {
358 var s = t[e]
359 , r = t;
360 if (e in t) {
361 var o = "warn" === e ? "warning" : e;
362 t[e] = function() {
363 var t = [].slice.call(arguments)
364 , a = i.safeJoin(t, " ")
365 , l = {
366 level: o,
367 logger: "console",
368 extra: {
369 arguments: t
370 }
371 };
372 "assert" === e ? !1 === t[0] && (a = "Assertion failed: " + (i.safeJoin(t.slice(1), " ") || "console.assert"),
373 l.extra.arguments = t.slice(1),
374 n && n(a, l)) : n && n(a, l),
375 s && Function.prototype.apply.call(s, r, t)
376 }
377 }
378 }
379 }
380 }
381 , {
382 5: 5
383 }],
384 3: [function(t, e, n) {
385 (function(n) {
386 function i() {
387 return +new Date
388 }
389 function s(t, e) {
390 return v(e) ? function(n) {
391 return e(n, t)
392 }
393 : e
394 }
395 function r() {
396 for (var t in this.a = !("object" != typeof JSON || !JSON.stringify),
397 this.b = !y(H),
398 this.c = !y(q),
399 this.d = null,
400 this.e = null,
401 this.f = null,
402 this.g = null,
403 this.h = null,
404 this.i = null,
405 this.j = {},
406 this.k = {
407 release: U.SENTRY_RELEASE && U.SENTRY_RELEASE.id,
408 logger: "javascript",
409 ignoreErrors: [],
410 ignoreUrls: [],
411 whitelistUrls: [],
412 includePaths: [],
413 headers: null,
414 collectWindowErrors: !0,
415 captureUnhandledRejections: !0,
416 maxMessageLength: 0,
417 maxUrlLength: 250,
418 stackTraceLimit: 50,
419 autoBreadcrumbs: !0,
420 instrument: !0,
421 sampleRate: 1,
422 sanitizeKeys: []
423 },
424 this.l = {
425 method: "POST",
426 referrerPolicy: R() ? "origin" : ""
427 },
428 this.m = 0,
429 this.n = !1,
430 this.o = Error.stackTraceLimit,
431 this.p = U.console || {},
432 this.q = {},
433 this.r = [],
434 this.s = i(),
435 this.t = [],
436 this.u = [],
437 this.v = null,
438 this.w = U.location,
439 this.x = this.w && this.w.href,
440 this.y(),
441 this.p)
442 this.q[t] = this.p[t]
443 }
444 var o = t(6)
445 , a = t(7)
446 , l = t(8)
447 , h = t(1)
448 , c = t(5)
449 , u = c.isErrorEvent
450 , d = c.isDOMError
451 , p = c.isDOMException
452 , f = c.isError
453 , m = c.isObject
454 , g = c.isPlainObject
455 , y = c.isUndefined
456 , v = c.isFunction
457 , b = c.isString
458 , w = c.isArray
459 , k = c.isEmptyObject
460 , x = c.each
461 , _ = c.objectMerge
462 , E = c.truncate
463 , C = c.objectFrozen
464 , S = c.hasKey
465 , O = c.joinRegExp
466 , $ = c.urlencode
467 , A = c.uuid4
468 , T = c.htmlTreeAsString
469 , P = c.isSameException
470 , L = c.isSameStacktrace
471 , j = c.parseUrl
472 , I = c.fill
473 , M = c.supportsFetch
474 , R = c.supportsReferrerPolicy
475 , B = c.serializeKeysForMessage
476 , z = c.serializeException
477 , D = c.sanitize
478 , F = t(2).wrapMethod
479 , N = "source protocol user pass host port path".split(" ")
480 , W = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/
481 , U = "undefined" != typeof window ? window : void 0 !== n ? n : "undefined" != typeof self ? self : {}
482 , H = U.document
483 , q = U.navigator;
484 r.prototype = {
485 VERSION: "3.27.2",
486 debug: !1,
487 TraceKit: o,
488 config: function(t, e) {
489 var n = this;
490 if (n.g)
491 return this.z("error", "Error: Raven has already been configured"),
492 n;
493 if (!t)
494 return n;
495 var i = n.k;
496 e && x(e, function(t, e) {
497 "tags" === t || "extra" === t || "user" === t ? n.j[t] = e : i[t] = e
498 }),
499 n.setDSN(t),
500 i.ignoreErrors.push(/^Script error\.?$/),
501 i.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),
502 i.ignoreErrors = O(i.ignoreErrors),
503 i.ignoreUrls = !!i.ignoreUrls.length && O(i.ignoreUrls),
504 i.whitelistUrls = !!i.whitelistUrls.length && O(i.whitelistUrls),
505 i.includePaths = O(i.includePaths),
506 i.maxBreadcrumbs = Math.max(0, Math.min(i.maxBreadcrumbs || 100, 100));
507 var s = {
508 xhr: !0,
509 console: !0,
510 dom: !0,
511 location: !0,
512 sentry: !0
513 }
514 , r = i.autoBreadcrumbs;
515 "[object Object]" === {}.toString.call(r) ? r = _(s, r) : !1 !== r && (r = s),
516 i.autoBreadcrumbs = r;
517 var a = {
518 tryCatch: !0
519 }
520 , l = i.instrument;
521 return "[object Object]" === {}.toString.call(l) ? l = _(a, l) : !1 !== l && (l = a),
522 i.instrument = l,
523 o.collectWindowErrors = !!i.collectWindowErrors,
524 n
525 },
526 install: function() {
527 var t = this;
528 return t.isSetup() && !t.n && (o.report.subscribe(function() {
529 t.A.apply(t, arguments)
530 }),
531 t.k.captureUnhandledRejections && t.B(),
532 t.C(),
533 t.k.instrument && t.k.instrument.tryCatch && t.D(),
534 t.k.autoBreadcrumbs && t.E(),
535 t.F(),
536 t.n = !0),
537 Error.stackTraceLimit = t.k.stackTraceLimit,
538 this
539 },
540 setDSN: function(t) {
541 var e = this
542 , n = e.G(t)
543 , i = n.path.lastIndexOf("/")
544 , s = n.path.substr(1, i);
545 e.H = t,
546 e.h = n.user,
547 e.I = n.pass && n.pass.substr(1),
548 e.i = n.path.substr(i + 1),
549 e.g = e.J(n),
550 e.K = e.g + "/" + s + "api/" + e.i + "/store/",
551 this.y()
552 },
553 context: function(t, e, n) {
554 return v(t) && (n = e || [],
555 e = t,
556 t = {}),
557 this.wrap(t, e).apply(this, n)
558 },
559 wrap: function(t, e, n) {
560 function i() {
561 var i = []
562 , r = arguments.length
563 , o = !t || t && !1 !== t.deep;
564 for (n && v(n) && n.apply(this, arguments); r--; )
565 i[r] = o ? s.wrap(t, arguments[r]) : arguments[r];
566 try {
567 return e.apply(this, i)
568 } catch (a) {
569 throw s.L(),
570 s.captureException(a, t),
571 a
572 }
573 }
574 var s = this;
575 if (y(e) && !v(t))
576 return t;
577 if (v(t) && (e = t,
578 t = void 0),
579 !v(e))
580 return e;
581 try {
582 if (e.M)
583 return e;
584 if (e.N)
585 return e.N
586 } catch (r) {
587 return e
588 }
589 for (var o in e)
590 S(e, o) && (i[o] = e[o]);
591 return i.prototype = e.prototype,
592 e.N = i,
593 i.M = !0,
594 i.O = e,
595 i
596 },
597 uninstall: function() {
598 return o.report.uninstall(),
599 this.P(),
600 this.Q(),
601 this.R(),
602 this.S(),
603 Error.stackTraceLimit = this.o,
604 this.n = !1,
605 this
606 },
607 T: function(t) {
608 this.z("debug", "Raven caught unhandled promise rejection:", t),
609 this.captureException(t.reason, {
610 mechanism: {
611 type: "onunhandledrejection",
612 handled: !1
613 }
614 })
615 },
616 B: function() {
617 return this.T = this.T.bind(this),
618 U.addEventListener && U.addEventListener("unhandledrejection", this.T),
619 this
620 },
621 P: function() {
622 return U.removeEventListener && U.removeEventListener("unhandledrejection", this.T),
623 this
624 },
625 captureException: function(t, e) {
626 if (e = _({
627 trimHeadFrames: 0
628 }, e || {}),
629 u(t) && t.error)
630 t = t.error;
631 else {
632 if (d(t) || p(t)) {
633 var n = t.name || (d(t) ? "DOMError" : "DOMException")
634 , i = t.message ? n + ": " + t.message : n;
635 return this.captureMessage(i, _(e, {
636 stacktrace: !0,
637 trimHeadFrames: e.trimHeadFrames + 1
638 }))
639 }
640 if (f(t))
641 t = t;
642 else {
643 if (!g(t))
644 return this.captureMessage(t, _(e, {
645 stacktrace: !0,
646 trimHeadFrames: e.trimHeadFrames + 1
647 }));
648 e = this.U(e, t),
649 t = new Error(e.message)
650 }
651 }
652 this.d = t;
653 try {
654 var s = o.computeStackTrace(t);
655 this.V(s, e)
656 } catch (r) {
657 if (t !== r)
658 throw r
659 }
660 return this
661 },
662 U: function(t, e) {
663 var n = Object.keys(e).sort()
664 , i = _(t, {
665 message: "Non-Error exception captured with keys: " + B(n),
666 fingerprint: [l(n)],
667 extra: t.extra || {}
668 });
669 return i.extra.W = z(e),
670 i
671 },
672 captureMessage: function(t, e) {
673 if (!this.k.ignoreErrors.test || !this.k.ignoreErrors.test(t)) {
674 var n, i = _({
675 message: t += ""
676 }, e = e || {});
677 try {
678 throw new Error(t)
679 } catch (s) {
680 n = s
681 }
682 n.name = null;
683 var r = o.computeStackTrace(n)
684 , a = w(r.stack) && r.stack[1];
685 a && "Raven.captureException" === a.func && (a = r.stack[2]);
686 var l = a && a.url || "";
687 if ((!this.k.ignoreUrls.test || !this.k.ignoreUrls.test(l)) && (!this.k.whitelistUrls.test || this.k.whitelistUrls.test(l))) {
688 if (this.k.stacktrace || e.stacktrace || "" === i.message) {
689 i.fingerprint = null == i.fingerprint ? t : i.fingerprint,
690 (e = _({
691 trimHeadFrames: 0
692 }, e)).trimHeadFrames += 1;
693 var h = this.X(r, e);
694 i.stacktrace = {
695 frames: h.reverse()
696 }
697 }
698 return i.fingerprint && (i.fingerprint = w(i.fingerprint) ? i.fingerprint : [i.fingerprint]),
699 this.Y(i),
700 this
701 }
702 }
703 },
704 captureBreadcrumb: function(t) {
705 var e = _({
706 timestamp: i() / 1e3
707 }, t);
708 if (v(this.k.breadcrumbCallback)) {
709 var n = this.k.breadcrumbCallback(e);
710 if (m(n) && !k(n))
711 e = n;
712 else if (!1 === n)
713 return this
714 }
715 return this.u.push(e),
716 this.u.length > this.k.maxBreadcrumbs && this.u.shift(),
717 this
718 },
719 addPlugin: function(t) {
720 var e = [].slice.call(arguments, 1);
721 return this.r.push([t, e]),
722 this.n && this.F(),
723 this
724 },
725 setUserContext: function(t) {
726 return this.j.user = t,
727 this
728 },
729 setExtraContext: function(t) {
730 return this.Z("extra", t),
731 this
732 },
733 setTagsContext: function(t) {
734 return this.Z("tags", t),
735 this
736 },
737 clearContext: function() {
738 return this.j = {},
739 this
740 },
741 getContext: function() {
742 return JSON.parse(a(this.j))
743 },
744 setEnvironment: function(t) {
745 return this.k.environment = t,
746 this
747 },
748 setRelease: function(t) {
749 return this.k.release = t,
750 this
751 },
752 setDataCallback: function(t) {
753 var e = this.k.dataCallback;
754 return this.k.dataCallback = s(e, t),
755 this
756 },
757 setBreadcrumbCallback: function(t) {
758 var e = this.k.breadcrumbCallback;
759 return this.k.breadcrumbCallback = s(e, t),
760 this
761 },
762 setShouldSendCallback: function(t) {
763 var e = this.k.shouldSendCallback;
764 return this.k.shouldSendCallback = s(e, t),
765 this
766 },
767 setTransport: function(t) {
768 return this.k.transport = t,
769 this
770 },
771 lastException: function() {
772 return this.d
773 },
774 lastEventId: function() {
775 return this.f
776 },
777 isSetup: function() {
778 return !(!this.a || !this.g && (this.ravenNotConfiguredError || (this.ravenNotConfiguredError = !0,
779 this.z("error", "Error: Raven has not been configured.")),
780 1))
781 },
782 afterLoad: function() {
783 var t = U.RavenConfig;
784 t && this.config(t.dsn, t.config).install()
785 },
786 showReportDialog: function(t) {
787 if (H) {
788 if (!(t = _({
789 eventId: this.lastEventId(),
790 dsn: this.H,
791 user: this.j.user || {}
792 }, t)).eventId)
793 throw new h("Missing eventId");
794 if (!t.dsn)
795 throw new h("Missing DSN");
796 var e = encodeURIComponent
797 , n = [];
798 for (var i in t)
799 if ("user" === i) {
800 var s = t.user;
801 s.name && n.push("name=" + e(s.name)),
802 s.email && n.push("email=" + e(s.email))
803 } else
804 n.push(e(i) + "=" + e(t[i]));
805 var r = this.J(this.G(t.dsn))
806 , o = H.createElement("script");
807 o.async = !0,
808 o.src = r + "/api/embed/error-page/?" + n.join("&"),
809 (H.head || H.body).appendChild(o)
810 }
811 },
812 L: function() {
813 var t = this;
814 this.m += 1,
815 setTimeout(function() {
816 t.m -= 1
817 })
818 },
819 $: function(t, e) {
820 var n, i;
821 if (this.b) {
822 for (i in e = e || {},
823 t = "raven" + t.substr(0, 1).toUpperCase() + t.substr(1),
824 H.createEvent ? (n = H.createEvent("HTMLEvents")).initEvent(t, !0, !0) : (n = H.createEventObject()).eventType = t,
825 e)
826 S(e, i) && (n[i] = e[i]);
827 if (H.createEvent)
828 H.dispatchEvent(n);
829 else
830 try {
831 H.fireEvent("on" + n.eventType.toLowerCase(), n)
832 } catch (s) {}
833 }
834 },
835 _: function(t) {
836 var e = this;
837 return function(n) {
838 if (e.aa = null,
839 e.v !== n) {
840 var i;
841 e.v = n;
842 try {
843 i = T(n.target)
844 } catch (s) {
845 i = "<unknown>"
846 }
847 e.captureBreadcrumb({
848 category: "ui." + t,
849 message: i
850 })
851 }
852 }
853 },
854 ba: function() {
855 var t = this;
856 return function(e) {
857 var n;
858 try {
859 n = e.target
860 } catch (s) {
861 return
862 }
863 var i = n && n.tagName;
864 if (i && ("INPUT" === i || "TEXTAREA" === i || n.isContentEditable)) {
865 var r = t.aa;
866 r || t._("input")(e),
867 clearTimeout(r),
868 t.aa = setTimeout(function() {
869 t.aa = null
870 }, 1e3)
871 }
872 }
873 },
874 ca: function(t, e) {
875 var n = j(this.w.href)
876 , i = j(e)
877 , s = j(t);
878 this.x = e,
879 n.protocol === i.protocol && n.host === i.host && (e = i.relative),
880 n.protocol === s.protocol && n.host === s.host && (t = s.relative),
881 this.captureBreadcrumb({
882 category: "navigation",
883 data: {
884 to: e,
885 from: t
886 }
887 })
888 },
889 C: function() {
890 var t = this;
891 t.da = Function.prototype.toString,
892 Function.prototype.toString = function() {
893 return "function" == typeof this && this.M ? t.da.apply(this.O, arguments) : t.da.apply(this, arguments)
894 }
895 },
896 Q: function() {
897 this.da && (Function.prototype.toString = this.da)
898 },
899 D: function() {
900 function t(t) {
901 return function(e, i) {
902 for (var s = new Array(arguments.length), r = 0; r < s.length; ++r)
903 s[r] = arguments[r];
904 var o = s[0];
905 return v(o) && (s[0] = n.wrap({
906 mechanism: {
907 type: "instrument",
908 data: {
909 "function": t.name || "<anonymous>"
910 }
911 }
912 }, o)),
913 t.apply ? t.apply(this, s) : t(s[0], s[1])
914 }
915 }
916 function e(t) {
917 var e = U[t] && U[t].prototype;
918 e && e.hasOwnProperty && e.hasOwnProperty("addEventListener") && (I(e, "addEventListener", function(e) {
919 return function(i, r, o, a) {
920 try {
921 r && r.handleEvent && (r.handleEvent = n.wrap({
922 mechanism: {
923 type: "instrument",
924 data: {
925 target: t,
926 "function": "handleEvent",
927 handler: r && r.name || "<anonymous>"
928 }
929 }
930 }, r.handleEvent))
931 } catch (l) {}
932 var h, c, u;
933 return s && s.dom && ("EventTarget" === t || "Node" === t) && (c = n._("click"),
934 u = n.ba(),
935 h = function(t) {
936 if (t) {
937 var e;
938 try {
939 e = t.type
940 } catch (n) {
941 return
942 }
943 return "click" === e ? c(t) : "keypress" === e ? u(t) : void 0
944 }
945 }
946 ),
947 e.call(this, i, n.wrap({
948 mechanism: {
949 type: "instrument",
950 data: {
951 target: t,
952 "function": "addEventListener",
953 handler: r && r.name || "<anonymous>"
954 }
955 }
956 }, r, h), o, a)
957 }
958 }, i),
959 I(e, "removeEventListener", function(t) {
960 return function(e, n, i, s) {
961 try {
962 n = n && (n.N ? n.N : n)
963 } catch (r) {}
964 return t.call(this, e, n, i, s)
965 }
966 }, i))
967 }
968 var n = this
969 , i = n.t
970 , s = this.k.autoBreadcrumbs;
971 I(U, "setTimeout", t, i),
972 I(U, "setInterval", t, i),
973 U.requestAnimationFrame && I(U, "requestAnimationFrame", function(t) {
974 return function(e) {
975 return t(n.wrap({
976 mechanism: {
977 type: "instrument",
978 data: {
979 "function": "requestAnimationFrame",
980 handler: t && t.name || "<anonymous>"
981 }
982 }
983 }, e))
984 }
985 }, i);
986 for (var r = ["EventTarget", "Window", "Node", "ApplicationCache", "AudioTrackList", "ChannelMergerNode", "CryptoOperation", "EventSource", "FileReader", "HTMLUnknownElement", "IDBDatabase", "IDBRequest", "IDBTransaction", "KeyOperation", "MediaController", "MessagePort", "ModalWindow", "Notification", "SVGElementInstance", "Screen", "TextTrack", "TextTrackCue", "TextTrackList", "WebSocket", "WebSocketWorker", "Worker", "XMLHttpRequest", "XMLHttpRequestEventTarget", "XMLHttpRequestUpload"], o = 0; o < r.length; o++)
987 e(r[o])
988 },
989 E: function() {
990 function t(t, n) {
991 t in n && v(n[t]) && I(n, t, function(n) {
992 return e.wrap({
993 mechanism: {
994 type: "instrument",
995 data: {
996 "function": t,
997 handler: n && n.name || "<anonymous>"
998 }
999 }
1000 }, n)
1001 })
1002 }
1003 var e = this
1004 , n = this.k.autoBreadcrumbs
1005 , i = e.t;
1006 if (n.xhr && "XMLHttpRequest"in U) {
1007 var s = U.XMLHttpRequest && U.XMLHttpRequest.prototype;
1008 I(s, "open", function(t) {
1009 return function(n, i) {
1010 return b(i) && -1 === i.indexOf(e.h) && (this.ea = {
1011 method: n,
1012 url: i,
1013 status_code: null
1014 }),
1015 t.apply(this, arguments)
1016 }
1017 }, i),
1018 I(s, "send", function(n) {
1019 return function() {
1020 function i() {
1021 if (s.ea && 4 === s.readyState) {
1022 try {
1023 s.ea.status_code = s.status
1024 } catch (t) {}
1025 e.captureBreadcrumb({
1026 type: "http",
1027 category: "xhr",
1028 data: s.ea
1029 })
1030 }
1031 }
1032 for (var s = this, r = ["onload", "onerror", "onprogress"], o = 0; o < r.length; o++)
1033 t(r[o], s);
1034 return "onreadystatechange"in s && v(s.onreadystatechange) ? I(s, "onreadystatechange", function(t) {
1035 return e.wrap({
1036 mechanism: {
1037 type: "instrument",
1038 data: {
1039 "function": "onreadystatechange",
1040 handler: t && t.name || "<anonymous>"
1041 }
1042 }
1043 }, t, i)
1044 }) : s.onreadystatechange = i,
1045 n.apply(this, arguments)
1046 }
1047 }, i)
1048 }
1049 n.xhr && M() && I(U, "fetch", function(t) {
1050 return function() {
1051 for (var n = new Array(arguments.length), i = 0; i < n.length; ++i)
1052 n[i] = arguments[i];
1053 var s, r = n[0], o = "GET";
1054 if ("string" == typeof r ? s = r : "Request"in U && r instanceof U.Request ? (s = r.url,
1055 r.method && (o = r.method)) : s = "" + r,
1056 -1 !== s.indexOf(e.h))
1057 return t.apply(this, n);
1058 n[1] && n[1].method && (o = n[1].method);
1059 var a = {
1060 method: o,
1061 url: s,
1062 status_code: null
1063 };
1064 return t.apply(this, n).then(function(t) {
1065 return a.status_code = t.status,
1066 e.captureBreadcrumb({
1067 type: "http",
1068 category: "fetch",
1069 data: a
1070 }),
1071 t
1072 })["catch"](function(t) {
1073 throw e.captureBreadcrumb({
1074 type: "http",
1075 category: "fetch",
1076 data: a,
1077 level: "error"
1078 }),
1079 t
1080 })
1081 }
1082 }, i),
1083 n.dom && this.b && (H.addEventListener ? (H.addEventListener("click", e._("click"), !1),
1084 H.addEventListener("keypress", e.ba(), !1)) : H.attachEvent && (H.attachEvent("onclick", e._("click")),
1085 H.attachEvent("onkeypress", e.ba())));
1086 var r = U.chrome
1087 , o = !(r && r.app && r.app.runtime) && U.history && U.history.pushState && U.history.replaceState;
1088 if (n.location && o) {
1089 var a = U.onpopstate;
1090 U.onpopstate = function() {
1091 var t = e.w.href;
1092 if (e.ca(e.x, t),
1093 a)
1094 return a.apply(this, arguments)
1095 }
1096 ;
1097 var l = function(t) {
1098 return function() {
1099 var n = arguments.length > 2 ? arguments[2] : void 0;
1100 return n && e.ca(e.x, n + ""),
1101 t.apply(this, arguments)
1102 }
1103 };
1104 I(U.history, "pushState", l, i),
1105 I(U.history, "replaceState", l, i)
1106 }
1107 if (n.console && "console"in U && console.log) {
1108 var h = function(t, n) {
1109 e.captureBreadcrumb({
1110 message: t,
1111 level: n.level,
1112 category: "console"
1113 })
1114 };
1115 x(["debug", "info", "warn", "error", "log"], function(t, e) {
1116 F(console, e, h)
1117 })
1118 }
1119 },
1120 R: function() {
1121 for (var t; this.t.length; ) {
1122 var e = (t = this.t.shift())[0]
1123 , n = t[1]
1124 , i = t[2];
1125 e[n] = i
1126 }
1127 },
1128 S: function() {
1129 for (var t in this.q)
1130 this.p[t] = this.q[t]
1131 },
1132 F: function() {
1133 var t = this;
1134 x(this.r, function(e, n) {
1135 var i = n[0]
1136 , s = n[1];
1137 i.apply(t, [t].concat(s))
1138 })
1139 },
1140 G: function(t) {
1141 var e = W.exec(t)
1142 , n = {}
1143 , i = 7;
1144 try {
1145 for (; i--; )
1146 n[N[i]] = e[i] || ""
1147 } catch (s) {
1148 throw new h("Invalid DSN: " + t)
1149 }
1150 if (n.pass && !this.k.allowSecretKey)
1151 throw new h("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");
1152 return n
1153 },
1154 J: function(t) {
1155 var e = "//" + t.host + (t.port ? ":" + t.port : "");
1156 return t.protocol && (e = t.protocol + ":" + e),
1157 e
1158 },
1159 A: function(t, e) {
1160 (e = e || {}).mechanism = e.mechanism || {
1161 type: "onerror",
1162 handled: !1
1163 },
1164 this.m || this.V(t, e)
1165 },
1166 V: function(t, e) {
1167 var n = this.X(t, e);
1168 this.$("handle", {
1169 stackInfo: t,
1170 options: e
1171 }),
1172 this.fa(t.name, t.message, t.url, t.lineno, n, e)
1173 },
1174 X: function(t, e) {
1175 var n = this
1176 , i = [];
1177 if (t.stack && t.stack.length && (x(t.stack, function(e, s) {
1178 var r = n.ga(s, t.url);
1179 r && i.push(r)
1180 }),
1181 e && e.trimHeadFrames))
1182 for (var s = 0; s < e.trimHeadFrames && s < i.length; s++)
1183 i[s].in_app = !1;
1184 return i = i.slice(0, this.k.stackTraceLimit)
1185 },
1186 ga: function(t, e) {
1187 var n = {
1188 filename: t.url,
1189 lineno: t.line,
1190 colno: t.column,
1191 "function": t.func || "?"
1192 };
1193 return t.url || (n.filename = e),
1194 n.in_app = !(this.k.includePaths.test && !this.k.includePaths.test(n.filename) || /(Raven|TraceKit)\./.test(n["function"]) || /raven\.(min\.)?js$/.test(n.filename)),
1195 n
1196 },
1197 fa: function(t, e, n, i, s, r) {
1198 var o, a = (t ? t + ": " : "") + (e || "");
1199 if ((!this.k.ignoreErrors.test || !this.k.ignoreErrors.test(e) && !this.k.ignoreErrors.test(a)) && (s && s.length ? (n = s[0].filename || n,
1200 s.reverse(),
1201 o = {
1202 frames: s
1203 }) : n && (o = {
1204 frames: [{
1205 filename: n,
1206 lineno: i,
1207 in_app: !0
1208 }]
1209 }),
1210 (!this.k.ignoreUrls.test || !this.k.ignoreUrls.test(n)) && (!this.k.whitelistUrls.test || this.k.whitelistUrls.test(n)))) {
1211 var l = _({
1212 exception: {
1213 values: [{
1214 type: t,
1215 value: e,
1216 stacktrace: o
1217 }]
1218 },
1219 transaction: n
1220 }, r)
1221 , h = l.exception.values[0];
1222 null == h.type && "" === h.value && (h.value = "Unrecoverable error caught"),
1223 !l.exception.mechanism && l.mechanism && (l.exception.mechanism = l.mechanism,
1224 delete l.mechanism),
1225 l.exception.mechanism = _({
1226 type: "generic",
1227 handled: !0
1228 }, l.exception.mechanism || {}),
1229 this.Y(l)
1230 }
1231 },
1232 ha: function(t) {
1233 var e = this.k.maxMessageLength;
1234 if (t.message && (t.message = E(t.message, e)),
1235 t.exception) {
1236 var n = t.exception.values[0];
1237 n.value = E(n.value, e)
1238 }
1239 var i = t.request;
1240 return i && (i.url && (i.url = E(i.url, this.k.maxUrlLength)),
1241 i.Referer && (i.Referer = E(i.Referer, this.k.maxUrlLength))),
1242 t.breadcrumbs && t.breadcrumbs.values && this.ia(t.breadcrumbs),
1243 t
1244 },
1245 ia: function(t) {
1246 for (var e, n, i, s = ["to", "from", "url"], r = 0; r < t.values.length; ++r)
1247 if ((n = t.values[r]).hasOwnProperty("data") && m(n.data) && !C(n.data)) {
1248 i = _({}, n.data);
1249 for (var o = 0; o < s.length; ++o)
1250 e = s[o],
1251 i.hasOwnProperty(e) && i[e] && (i[e] = E(i[e], this.k.maxUrlLength));
1252 t.values[r].data = i
1253 }
1254 },
1255 ja: function() {
1256 if (this.c || this.b) {
1257 var t = {};
1258 return this.c && q.userAgent && (t.headers = {
1259 "User-Agent": q.userAgent
1260 }),
1261 U.location && U.location.href && (t.url = U.location.href),
1262 this.b && H.referrer && (t.headers || (t.headers = {}),
1263 t.headers.Referer = H.referrer),
1264 t
1265 }
1266 },
1267 y: function() {
1268 this.ka = 0,
1269 this.la = null
1270 },
1271 ma: function() {
1272 return this.ka && i() - this.la < this.ka
1273 },
1274 na: function(t) {
1275 var e = this.e;
1276 return !(!e || t.message !== e.message || t.transaction !== e.transaction) && (t.stacktrace || e.stacktrace ? L(t.stacktrace, e.stacktrace) : t.exception || e.exception ? P(t.exception, e.exception) : !t.fingerprint && !e.fingerprint || Boolean(t.fingerprint && e.fingerprint) && JSON.stringify(t.fingerprint) === JSON.stringify(e.fingerprint))
1277 },
1278 oa: function(t) {
1279 if (!this.ma()) {
1280 var e = t.status;
1281 if (400 === e || 401 === e || 429 === e) {
1282 var n;
1283 try {
1284 n = M() ? t.headers.get("Retry-After") : t.getResponseHeader("Retry-After"),
1285 n = 1e3 * parseInt(n, 10)
1286 } catch (s) {}
1287 this.ka = n || (2 * this.ka || 1e3),
1288 this.la = i()
1289 }
1290 }
1291 },
1292 Y: function(t) {
1293 var e = this.k
1294 , n = {
1295 project: this.i,
1296 logger: e.logger,
1297 platform: "javascript"
1298 }
1299 , s = this.ja();
1300 if (s && (n.request = s),
1301 t.trimHeadFrames && delete t.trimHeadFrames,
1302 (t = _(n, t)).tags = _(_({}, this.j.tags), t.tags),
1303 t.extra = _(_({}, this.j.extra), t.extra),
1304 t.extra["session:duration"] = i() - this.s,
1305 this.u && this.u.length > 0 && (t.breadcrumbs = {
1306 values: [].slice.call(this.u, 0)
1307 }),
1308 this.j.user && (t.user = this.j.user),
1309 e.environment && (t.environment = e.environment),
1310 e.release && (t.release = e.release),
1311 e.serverName && (t.server_name = e.serverName),
1312 t = this.pa(t),
1313 Object.keys(t).forEach(function(e) {
1314 (null == t[e] || "" === t[e] || k(t[e])) && delete t[e]
1315 }),
1316 v(e.dataCallback) && (t = e.dataCallback(t) || t),
1317 t && !k(t) && (!v(e.shouldSendCallback) || e.shouldSendCallback(t)))
1318 return this.ma() ? void this.z("warn", "Raven dropped error due to backoff: ", t) : void ("number" == typeof e.sampleRate ? Math.random() < e.sampleRate && this.qa(t) : this.qa(t))
1319 },
1320 pa: function(t) {
1321 return D(t, this.k.sanitizeKeys)
1322 },
1323 ra: function() {
1324 return A()
1325 },
1326 qa: function(t, e) {
1327 var n = this
1328 , i = this.k;
1329 if (this.isSetup()) {
1330 if (t = this.ha(t),
1331 !this.k.allowDuplicates && this.na(t))
1332 return void this.z("warn", "Raven dropped repeat event: ", t);
1333 this.f = t.event_id || (t.event_id = this.ra()),
1334 this.e = t,
1335 this.z("debug", "Raven about to send:", t);
1336 var s = {
1337 sentry_version: "7",
1338 sentry_client: "raven-js/" + this.VERSION,
1339 sentry_key: this.h
1340 };
1341 this.I && (s.sentry_secret = this.I);
1342 var r = t.exception && t.exception.values[0];
1343 this.k.autoBreadcrumbs && this.k.autoBreadcrumbs.sentry && this.captureBreadcrumb({
1344 category: "sentry",
1345 message: r ? (r.type ? r.type + ": " : "") + r.value : t.message,
1346 event_id: t.event_id,
1347 level: t.level || "error"
1348 });
1349 var o = this.K;
1350 (i.transport || this._makeRequest).call(this, {
1351 url: o,
1352 auth: s,
1353 data: t,
1354 options: i,
1355 onSuccess: function() {
1356 n.y(),
1357 n.$("success", {
1358 data: t,
1359 src: o
1360 }),
1361 e && e()
1362 },
1363 onError: function(i) {
1364 n.z("error", "Raven transport failed to send: ", i),
1365 i.request && n.oa(i.request),
1366 n.$("failure", {
1367 data: t,
1368 src: o
1369 }),
1370 i = i || new Error("Raven send failed (no additional details provided)"),
1371 e && e(i)
1372 }
1373 })
1374 }
1375 },
1376 _makeRequest: function(t) {
1377 var e = t.url + "?" + $(t.auth)
1378 , n = null
1379 , i = {};
1380 if (t.options.headers && (n = this.sa(t.options.headers)),
1381 t.options.fetchParameters && (i = this.sa(t.options.fetchParameters)),
1382 M()) {
1383 i.body = a(t.data);
1384 var s = _({}, this.l)
1385 , r = _(s, i);
1386 return n && (r.headers = n),
1387 U.fetch(e, r).then(function(e) {
1388 if (e.ok)
1389 t.onSuccess && t.onSuccess();
1390 else {
1391 var n = new Error("Sentry error code: " + e.status);
1392 n.request = e,
1393 t.onError && t.onError(n)
1394 }
1395 })["catch"](function() {
1396 t.onError && t.onError(new Error("Sentry error code: network unavailable"))
1397 })
1398 }
1399 var o = U.XMLHttpRequest && new U.XMLHttpRequest;
1400 o && (("withCredentials"in o || "undefined" != typeof XDomainRequest) && ("withCredentials"in o ? o.onreadystatechange = function() {
1401 if (4 === o.readyState)
1402 if (200 === o.status)
1403 t.onSuccess && t.onSuccess();
1404 else if (t.onError) {
1405 var e = new Error("Sentry error code: " + o.status);
1406 e.request = o,
1407 t.onError(e)
1408 }
1409 }
1410 : (o = new XDomainRequest,
1411 e = e.replace(/^https?:/, ""),
1412 t.onSuccess && (o.onload = t.onSuccess),
1413 t.onError && (o.onerror = function() {
1414 var e = new Error("Sentry error code: XDomainRequest");
1415 e.request = o,
1416 t.onError(e)
1417 }
1418 )),
1419 o.open("POST", e),
1420 n && x(n, function(t, e) {
1421 o.setRequestHeader(t, e)
1422 }),
1423 o.send(a(t.data))))
1424 },
1425 sa: function(t) {
1426 var e = {};
1427 for (var n in t)
1428 if (t.hasOwnProperty(n)) {
1429 var i = t[n];
1430 e[n] = "function" == typeof i ? i() : i
1431 }
1432 return e
1433 },
1434 z: function(t) {
1435 this.q[t] && (this.debug || this.k.debug) && Function.prototype.apply.call(this.q[t], this.p, [].slice.call(arguments, 1))
1436 },
1437 Z: function(t, e) {
1438 y(e) ? delete this.j[t] : this.j[t] = _(this.j[t] || {}, e)
1439 }
1440 },
1441 r.prototype.setUser = r.prototype.setUserContext,
1442 r.prototype.setReleaseContext = r.prototype.setRelease,
1443 e.exports = r
1444 }
1445 ).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
1446 }
1447 , {
1448 1: 1,
1449 2: 2,
1450 5: 5,
1451 6: 6,
1452 7: 7,
1453 8: 8
1454 }],
1455 4: [function(t, e, n) {
1456 (function(n) {
1457 var i = t(3)
1458 , s = "undefined" != typeof window ? window : void 0 !== n ? n : "undefined" != typeof self ? self : {}
1459 , r = s.Raven
1460 , o = new i;
1461 o.noConflict = function() {
1462 return s.Raven = r,
1463 o
1464 }
1465 ,
1466 o.afterLoad(),
1467 e.exports = o,
1468 e.exports.Client = i
1469 }
1470 ).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
1471 }
1472 , {
1473 3: 3
1474 }],
1475 5: [function(t, e, n) {
1476 (function(n) {
1477 function i(t) {
1478 switch (Object.prototype.toString.call(t)) {
1479 case "[object Error]":
1480 case "[object Exception]":
1481 case "[object DOMException]":
1482 return !0;
1483 default:
1484 return t instanceof Error
1485 }
1486 }
1487 function s(t) {
1488 return "[object DOMError]" === Object.prototype.toString.call(t)
1489 }
1490 function r(t) {
1491 return void 0 === t
1492 }
1493 function o(t) {
1494 return "[object Object]" === Object.prototype.toString.call(t)
1495 }
1496 function a(t) {
1497 return "[object String]" === Object.prototype.toString.call(t)
1498 }
1499 function l(t) {
1500 return "[object Array]" === Object.prototype.toString.call(t)
1501 }
1502 function h() {
1503 if (!("fetch"in w))
1504 return !1;
1505 try {
1506 return new Headers,
1507 new Request(""),
1508 new Response,
1509 !0
1510 } catch (t) {
1511 return !1
1512 }
1513 }
1514 function c(t, e) {
1515 var n, i;
1516 if (r(t.length))
1517 for (n in t)
1518 d(t, n) && e.call(null, n, t[n]);
1519 else if (i = t.length)
1520 for (n = 0; n < i; n++)
1521 e.call(null, n, t[n])
1522 }
1523 function u(t, e) {
1524 if ("number" != typeof e)
1525 throw new Error("2nd argument to `truncate` function should be a number");
1526 return "string" != typeof t || 0 === e ? t : t.length <= e ? t : t.substr(0, e) + "…"
1527 }
1528 function d(t, e) {
1529 return Object.prototype.hasOwnProperty.call(t, e)
1530 }
1531 function p(t) {
1532 for (var e, n = [], i = 0, s = t.length; i < s; i++)
1533 a(e = t[i]) ? n.push(e.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1")) : e && e.source && n.push(e.source);
1534 return new RegExp(n.join("|"),"i")
1535 }
1536 function f(t) {
1537 var e, n, i, s, r, o = [];
1538 if (!t || !t.tagName)
1539 return "";
1540 if (o.push(t.tagName.toLowerCase()),
1541 t.id && o.push("#" + t.id),
1542 (e = t.className) && a(e))
1543 for (n = e.split(/\s+/),
1544 r = 0; r < n.length; r++)
1545 o.push("." + n[r]);
1546 var l = ["type", "name", "title", "alt"];
1547 for (r = 0; r < l.length; r++)
1548 i = l[r],
1549 (s = t.getAttribute(i)) && o.push("[" + i + '="' + s + '"]');
1550 return o.join("")
1551 }
1552 function m(t, e) {
1553 return !!(!!t ^ !!e)
1554 }
1555 function g(t, e) {
1556 if (m(t, e))
1557 return !1;
1558 var n = t.frames
1559 , i = e.frames;
1560 if (void 0 === n || void 0 === i)
1561 return !1;
1562 if (n.length !== i.length)
1563 return !1;
1564 for (var s, r, o = 0; o < n.length; o++)
1565 if (s = n[o],
1566 r = i[o],
1567 s.filename !== r.filename || s.lineno !== r.lineno || s.colno !== r.colno || s["function"] !== r["function"])
1568 return !1;
1569 return !0
1570 }
1571 function y(t) {
1572 return function(t) {
1573 return ~-encodeURI(t).split(/%..|./).length
1574 }(JSON.stringify(t))
1575 }
1576 function v(t) {
1577 if ("string" == typeof t) {
1578 return u(t, 40)
1579 }
1580 if ("number" == typeof t || "boolean" == typeof t || void 0 === t)
1581 return t;
1582 var e = Object.prototype.toString.call(t);
1583 return "[object Object]" === e ? "[Object]" : "[object Array]" === e ? "[Array]" : "[object Function]" === e ? t.name ? "[Function: " + t.name + "]" : "[Function]" : t
1584 }
1585 var b = t(7)
1586 , w = "undefined" != typeof window ? window : void 0 !== n ? n : "undefined" != typeof self ? self : {}
1587 , k = 3
1588 , x = 51200
1589 , _ = 40;
1590 e.exports = {
1591 isObject: function(t) {
1592 return "object" == typeof t && null !== t
1593 },
1594 isError: i,
1595 isErrorEvent: function(t) {
1596 return "[object ErrorEvent]" === Object.prototype.toString.call(t)
1597 },
1598 isDOMError: s,
1599 isDOMException: function(t) {
1600 return "[object DOMException]" === Object.prototype.toString.call(t)
1601 },
1602 isUndefined: r,
1603 isFunction: function(t) {
1604 return "function" == typeof t
1605 },
1606 isPlainObject: o,
1607 isString: a,
1608 isArray: l,
1609 isEmptyObject: function(t) {
1610 if (!o(t))
1611 return !1;
1612 for (var e in t)
1613 if (t.hasOwnProperty(e))
1614 return !1;
1615 return !0
1616 },
1617 supportsErrorEvent: function() {
1618 try {
1619 return new ErrorEvent(""),
1620 !0
1621 } catch (t) {
1622 return !1
1623 }
1624 },
1625 supportsDOMError: function() {
1626 try {
1627 return new DOMError(""),
1628 !0
1629 } catch (t) {
1630 return !1
1631 }
1632 },
1633 supportsDOMException: function() {
1634 try {
1635 return new DOMException(""),
1636 !0
1637 } catch (t) {
1638 return !1
1639 }
1640 },
1641 supportsFetch: h,
1642 supportsReferrerPolicy: function() {
1643 if (!h())
1644 return !1;
1645 try {
1646 return new Request("pickleRick",{
1647 referrerPolicy: "origin"
1648 }),
1649 !0
1650 } catch (t) {
1651 return !1
1652 }
1653 },
1654 supportsPromiseRejectionEvent: function() {
1655 return "function" == typeof PromiseRejectionEvent
1656 },
1657 wrappedCallback: function(t) {
1658 return function(e, n) {
1659 var i = t(e) || e;
1660 return n && n(i) || i
1661 }
1662 },
1663 each: c,
1664 objectMerge: function(t, e) {
1665 return e ? (c(e, function(e, n) {
1666 t[e] = n
1667 }),
1668 t) : t
1669 },
1670 truncate: u,
1671 objectFrozen: function(t) {
1672 return !!Object.isFrozen && Object.isFrozen(t)
1673 },
1674 hasKey: d,
1675 joinRegExp: p,
1676 urlencode: function(t) {
1677 var e = [];
1678 return c(t, function(t, n) {
1679 e.push(encodeURIComponent(t) + "=" + encodeURIComponent(n))
1680 }),
1681 e.join("&")
1682 },
1683 uuid4: function() {
1684 var t = w.crypto || w.msCrypto;
1685 if (!r(t) && t.getRandomValues) {
1686 var e = new Uint16Array(8);
1687 t.getRandomValues(e),
1688 e[3] = 4095 & e[3] | 16384,
1689 e[4] = 16383 & e[4] | 32768;
1690 var n = function(t) {
1691 for (var e = t.toString(16); e.length < 4; )
1692 e = "0" + e;
1693 return e
1694 };
1695 return n(e[0]) + n(e[1]) + n(e[2]) + n(e[3]) + n(e[4]) + n(e[5]) + n(e[6]) + n(e[7])
1696 }
1697 return "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g, function(t) {
1698 var e = 16 * Math.random() | 0;
1699 return ("x" === t ? e : 3 & e | 8).toString(16)
1700 })
1701 },
1702 htmlTreeAsString: function(t) {
1703 for (var e, n = [], i = 0, s = 0, r = " > ".length; t && i++ < 5 && !("html" === (e = f(t)) || i > 1 && s + n.length * r + e.length >= 80); )
1704 n.push(e),
1705 s += e.length,
1706 t = t.parentNode;
1707 return n.reverse().join(" > ")
1708 },
1709 htmlElementAsString: f,
1710 isSameException: function(t, e) {
1711 return !m(t, e) && (t = t.values[0],
1712 e = e.values[0],
1713 t.type === e.type && t.value === e.value && !function(t, e) {
1714 return r(t) && r(e)
1715 }(t.stacktrace, e.stacktrace) && g(t.stacktrace, e.stacktrace))
1716 },
1717 isSameStacktrace: g,
1718 parseUrl: function(t) {
1719 if ("string" != typeof t)
1720 return {};
1721 var e = t.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/)
1722 , n = e[6] || ""
1723 , i = e[8] || "";
1724 return {
1725 protocol: e[2],
1726 host: e[4],
1727 path: e[5],
1728 relative: e[5] + n + i
1729 }
1730 },
1731 fill: function(t, e, n, i) {
1732 if (null != t) {
1733 var s = t[e];
1734 t[e] = n(s),
1735 t[e].M = !0,
1736 t[e].O = s,
1737 i && i.push([t, e, s])
1738 }
1739 },
1740 safeJoin: function(t, e) {
1741 if (!l(t))
1742 return "";
1743 for (var n = [], s = 0; s < t.length; s++)
1744 try {
1745 n.push(String(t[s]))
1746 } catch (i) {
1747 n.push("[value cannot be serialized]")
1748 }
1749 return n.join(e)
1750 },
1751 serializeException: function E(t, e, n) {
1752 if (!o(t))
1753 return t;
1754 n = "number" != typeof (e = "number" != typeof e ? k : e) ? x : n;
1755 var i = function s(t, e) {
1756 return 0 === e ? v(t) : o(t) ? Object.keys(t).reduce(function(n, i) {
1757 return n[i] = s(t[i], e - 1),
1758 n
1759 }, {}) : Array.isArray(t) ? t.map(function(t) {
1760 return s(t, e - 1)
1761 }) : v(t)
1762 }(t, e);
1763 return y(b(i)) > n ? E(t, e - 1) : i
1764 },
1765 serializeKeysForMessage: function(t, e) {
1766 if ("number" == typeof t || "string" == typeof t)
1767 return t.toString();
1768 if (!Array.isArray(t))
1769 return "";
1770 if (0 === (t = t.filter(function(t) {
1771 return "string" == typeof t
1772 })).length)
1773 return "[object has no keys]";
1774 if (e = "number" != typeof e ? _ : e,
1775 t[0].length >= e)
1776 return t[0];
1777 for (var n = t.length; n > 0; n--) {
1778 var i = t.slice(0, n).join(", ");
1779 if (!(i.length > e))
1780 return n === t.length ? i : i + "…"
1781 }
1782 return ""
1783 },
1784 sanitize: function(t, e) {
1785 if (!l(e) || l(e) && 0 === e.length)
1786 return t;
1787 var n, i = p(e), r = "********";
1788 try {
1789 n = JSON.parse(b(t))
1790 } catch (s) {
1791 return t
1792 }
1793 return function a(t) {
1794 return l(t) ? t.map(function(t) {
1795 return a(t)
1796 }) : o(t) ? Object.keys(t).reduce(function(e, n) {
1797 return e[n] = i.test(n) ? r : a(t[n]),
1798 e
1799 }, {}) : t
1800 }(n)
1801 }
1802 }
1803 }
1804 ).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
1805 }
1806 , {
1807 7: 7
1808 }],
1809 6: [function(t, e, n) {
1810 (function(n) {
1811 function i() {
1812 return "undefined" == typeof document || null == document.location ? "" : document.location.href
1813 }
1814 var s = t(5)
1815 , r = {
1816 collectWindowErrors: !0,
1817 debug: !1
1818 }
1819 , o = "undefined" != typeof window ? window : void 0 !== n ? n : "undefined" != typeof self ? self : {}
1820 , a = [].slice
1821 , l = "?"
1822 , h = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;
1823 r.report = function() {
1824 function t(e, n) {
1825 var i = null;
1826 if (!n || r.collectWindowErrors) {
1827 for (var s in p)
1828 if (p.hasOwnProperty(s))
1829 try {
1830 p[s].apply(null, [e].concat(a.call(arguments, 2)))
1831 } catch (t) {
1832 i = t
1833 }
1834 if (i)
1835 throw i
1836 }
1837 }
1838 function e(e, o, a, c, d) {
1839 var p = s.isErrorEvent(d) ? d.error : d
1840 , f = s.isErrorEvent(e) ? e.message : e;
1841 if (g)
1842 r.computeStackTrace.augmentStackTraceWithInitialElement(g, o, a, f),
1843 n();
1844 else if (p && s.isError(p))
1845 t(r.computeStackTrace(p), !0);
1846 else {
1847 var m, y = {
1848 url: o,
1849 line: a,
1850 column: c
1851 }, v = void 0;
1852 if ("[object String]" === {}.toString.call(f))
1853 (m = f.match(h)) && (v = m[1],
1854 f = m[2]);
1855 y.func = l,
1856 t({
1857 name: v,
1858 message: f,
1859 url: i(),
1860 stack: [y]
1861 }, !0)
1862 }
1863 return !!u && u.apply(this, arguments)
1864 }
1865 function n() {
1866 var e = g
1867 , n = f;
1868 f = null,
1869 g = null,
1870 m = null,
1871 t.apply(null, [e, !1].concat(n))
1872 }
1873 function c(t, e) {
1874 var i = a.call(arguments, 1);
1875 if (g) {
1876 if (m === t)
1877 return;
1878 n()
1879 }
1880 var s = r.computeStackTrace(t);
1881 if (g = s,
1882 m = t,
1883 f = i,
1884 setTimeout(function() {
1885 m === t && n()
1886 }, s.incomplete ? 2e3 : 0),
1887 !1 !== e)
1888 throw t
1889 }
1890 var u, d, p = [], f = null, m = null, g = null;
1891 return c.subscribe = function(t) {
1892 d || (u = o.onerror,
1893 o.onerror = e,
1894 d = !0),
1895 p.push(t)
1896 }
1897 ,
1898 c.unsubscribe = function(t) {
1899 for (var e = p.length - 1; e >= 0; --e)
1900 p[e] === t && p.splice(e, 1)
1901 }
1902 ,
1903 c.uninstall = function() {
1904 d && (o.onerror = u,
1905 d = !1,
1906 u = void 0),
1907 p = []
1908 }
1909 ,
1910 c
1911 }(),
1912 r.computeStackTrace = function() {
1913 function t(t) {
1914 if ("undefined" != typeof t.stack && t.stack) {
1915 for (var e, n, s, r = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, o = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, a = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i, h = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, c = /\((\S*)(?::(\d+))(?::(\d+))\)/, u = t.stack.split("\n"), d = [], p = (/^(.*) is undefined$/.exec(t.message),
1916 0), f = u.length; p < f; ++p) {
1917 if (n = r.exec(u[p])) {
1918 var m = n[2] && 0 === n[2].indexOf("native");
1919 n[2] && 0 === n[2].indexOf("eval") && (e = c.exec(n[2])) && (n[2] = e[1],
1920 n[3] = e[2],
1921 n[4] = e[3]),
1922 s = {
1923 url: m ? null : n[2],
1924 func: n[1] || l,
1925 args: m ? [n[2]] : [],
1926 line: n[3] ? +n[3] : null,
1927 column: n[4] ? +n[4] : null
1928 }
1929 } else if (n = o.exec(u[p]))
1930 s = {
1931 url: n[2],
1932 func: n[1] || l,
1933 args: [],
1934 line: +n[3],
1935 column: n[4] ? +n[4] : null
1936 };
1937 else {
1938 if (!(n = a.exec(u[p])))
1939 continue;
1940 n[3] && n[3].indexOf(" > eval") > -1 && (e = h.exec(n[3])) ? (n[3] = e[1],
1941 n[4] = e[2],
1942 n[5] = null) : 0 !== p || n[5] || "undefined" == typeof t.columnNumber || (d[0].column = t.columnNumber + 1),
1943 s = {
1944 url: n[3],
1945 func: n[1] || l,
1946 args: n[2] ? n[2].split(",") : [],
1947 line: n[4] ? +n[4] : null,
1948 column: n[5] ? +n[5] : null
1949 }
1950 }
1951 if (!s.func && s.line && (s.func = l),
1952 s.url && "blob:" === s.url.substr(0, 5)) {
1953 var g = new XMLHttpRequest;
1954 if (g.open("GET", s.url, !1),
1955 g.send(null),
1956 200 === g.status) {
1957 var y = g.responseText || ""
1958 , v = (y = y.slice(-300)).match(/\/\/# sourceMappingURL=(.*)$/);
1959 if (v) {
1960 var b = v[1];
1961 "~" === b.charAt(0) && (b = ("undefined" == typeof document || null == document.location ? "" : document.location.origin ? document.location.origin : document.location.protocol + "//" + document.location.hostname + (document.location.port ? ":" + document.location.port : "")) + b.slice(1)),
1962 s.url = b.slice(0, -4)
1963 }
1964 }
1965 }
1966 d.push(s)
1967 }
1968 return d.length ? {
1969 name: t.name,
1970 message: t.message,
1971 url: i(),
1972 stack: d
1973 } : null
1974 }
1975 }
1976 function e(t, e, n, i) {
1977 var s = {
1978 url: e,
1979 line: n
1980 };
1981 if (s.url && s.line) {
1982 if (t.incomplete = !1,
1983 s.func || (s.func = l),
1984 t.stack.length > 0 && t.stack[0].url === s.url) {
1985 if (t.stack[0].line === s.line)
1986 return !1;
1987 if (!t.stack[0].line && t.stack[0].func === s.func)
1988 return t.stack[0].line = s.line,
1989 !1
1990 }
1991 return t.stack.unshift(s),
1992 t.partial = !0,
1993 !0
1994 }
1995 return t.incomplete = !0,
1996 !1
1997 }
1998 function n(t, o) {
1999 for (var a, h, c = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, u = [], d = {}, p = !1, f = n.caller; f && !p; f = f.caller)
2000 if (f !== s && f !== r.report) {
2001 if (h = {
2002 url: null,
2003 func: l,
2004 line: null,
2005 column: null
2006 },
2007 f.name ? h.func = f.name : (a = c.exec(f.toString())) && (h.func = a[1]),
2008 "undefined" == typeof h.func)
2009 try {
2010 h.func = a.input.substring(0, a.input.indexOf("{"))
2011 } catch (g) {}
2012 d["" + f] ? p = !0 : d["" + f] = !0,
2013 u.push(h)
2014 }
2015 o && u.splice(0, o);
2016 var m = {
2017 name: t.name,
2018 message: t.message,
2019 url: i(),
2020 stack: u
2021 };
2022 return e(m, t.sourceURL || t.fileName, t.line || t.lineNumber, t.message || t.description),
2023 m
2024 }
2025 function s(e, s) {
2026 var a = null;
2027 s = null == s ? 0 : +s;
2028 try {
2029 if (a = t(e))
2030 return a
2031 } catch (o) {
2032 if (r.debug)
2033 throw o
2034 }
2035 try {
2036 if (a = n(e, s + 1))
2037 return a
2038 } catch (o) {
2039 if (r.debug)
2040 throw o
2041 }
2042 return {
2043 name: e.name,
2044 message: e.message,
2045 url: i()
2046 }
2047 }
2048 return s.augmentStackTraceWithInitialElement = e,
2049 s.computeStackTraceFromStackProp = t,
2050 s
2051 }(),
2052 e.exports = r
2053 }
2054 ).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
2055 }
2056 , {
2057 5: 5
2058 }],
2059 7: [function(t, e, n) {
2060 function i(t, e) {
2061 for (var n = 0; n < t.length; ++n)
2062 if (t[n] === e)
2063 return n;
2064 return -1
2065 }
2066 function s(t, e) {
2067 var n = []
2068 , s = [];
2069 return null == e && (e = function(t, e) {
2070 return n[0] === e ? "[Circular ~]" : "[Circular ~." + s.slice(0, i(n, e)).join(".") + "]"
2071 }
2072 ),
2073 function(r, o) {
2074 if (n.length > 0) {
2075 var a = i(n, this);
2076 ~a ? n.splice(a + 1) : n.push(this),
2077 ~a ? s.splice(a, 1 / 0, r) : s.push(r),
2078 ~i(n, o) && (o = e.call(this, r, o))
2079 } else
2080 n.push(o);
2081 return null == t ? o instanceof Error ? function(t) {
2082 var e = {
2083 stack: t.stack,
2084 message: t.message,
2085 name: t.name
2086 };
2087 for (var n in t)
2088 Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
2089 return e
2090 }(o) : o : t.call(this, r, o)
2091 }
2092 }
2093 (e.exports = function(t, e, n, i) {
2094 return JSON.stringify(t, s(e, i), n)
2095 }
2096 ).getSerialize = s
2097 }
2098 , {}],
2099 8: [function(t, e, n) {
2100 function i(t, e) {
2101 var n = (65535 & t) + (65535 & e);
2102 return (t >> 16) + (e >> 16) + (n >> 16) << 16 | 65535 & n
2103 }
2104 function s(t, e, n, s, r, o) {
2105 return i(function(t, e) {
2106 return t << e | t >>> 32 - e
2107 }(i(i(e, t), i(s, o)), r), n)
2108 }
2109 function r(t, e, n, i, r, o, a) {
2110 return s(e & n | ~e & i, t, e, r, o, a)
2111 }
2112 function o(t, e, n, i, r, o, a) {
2113 return s(e & i | n & ~i, t, e, r, o, a)
2114 }
2115 function a(t, e, n, i, r, o, a) {
2116 return s(e ^ n ^ i, t, e, r, o, a)
2117 }
2118 function l(t, e, n, i, r, o, a) {
2119 return s(n ^ (e | ~i), t, e, r, o, a)
2120 }
2121 function h(t, e) {
2122 t[e >> 5] |= 128 << e % 32,
2123 t[14 + (e + 64 >>> 9 << 4)] = e;
2124 var n, s, h, c, u, d = 1732584193, p = -271733879, f = -1732584194, m = 271733878;
2125 for (n = 0; n < t.length; n += 16)
2126 s = d,
2127 h = p,
2128 c = f,
2129 u = m,
2130 d = r(d, p, f, m, t[n], 7, -680876936),
2131 m = r(m, d, p, f, t[n + 1], 12, -389564586),
2132 f = r(f, m, d, p, t[n + 2], 17, 606105819),
2133 p = r(p, f, m, d, t[n + 3], 22, -1044525330),
2134 d = r(d, p, f, m, t[n + 4], 7, -176418897),
2135 m = r(m, d, p, f, t[n + 5], 12, 1200080426),
2136 f = r(f, m, d, p, t[n + 6], 17, -1473231341),
2137 p = r(p, f, m, d, t[n + 7], 22, -45705983),
2138 d = r(d, p, f, m, t[n + 8], 7, 1770035416),
2139 m = r(m, d, p, f, t[n + 9], 12, -1958414417),
2140 f = r(f, m, d, p, t[n + 10], 17, -42063),
2141 p = r(p, f, m, d, t[n + 11], 22, -1990404162),
2142 d = r(d, p, f, m, t[n + 12], 7, 1804603682),
2143 m = r(m, d, p, f, t[n + 13], 12, -40341101),
2144 f = r(f, m, d, p, t[n + 14], 17, -1502002290),
2145 d = o(d, p = r(p, f, m, d, t[n + 15], 22, 1236535329), f, m, t[n + 1], 5, -165796510),
2146 m = o(m, d, p, f, t[n + 6], 9, -1069501632),
2147 f = o(f, m, d, p, t[n + 11], 14, 643717713),
2148 p = o(p, f, m, d, t[n], 20, -373897302),
2149 d = o(d, p, f, m, t[n + 5], 5, -701558691),
2150 m = o(m, d, p, f, t[n + 10], 9, 38016083),
2151 f = o(f, m, d, p, t[n + 15], 14, -660478335),
2152 p = o(p, f, m, d, t[n + 4], 20, -405537848),
2153 d = o(d, p, f, m, t[n + 9], 5, 568446438),
2154 m = o(m, d, p, f, t[n + 14], 9, -1019803690),
2155 f = o(f, m, d, p, t[n + 3], 14, -187363961),
2156 p = o(p, f, m, d, t[n + 8], 20, 1163531501),
2157 d = o(d, p, f, m, t[n + 13], 5, -1444681467),
2158 m = o(m, d, p, f, t[n + 2], 9, -51403784),
2159 f = o(f, m, d, p, t[n + 7], 14, 1735328473),
2160 d = a(d, p = o(p, f, m, d, t[n + 12], 20, -1926607734), f, m, t[n + 5], 4, -378558),
2161 m = a(m, d, p, f, t[n + 8], 11, -2022574463),
2162 f = a(f, m, d, p, t[n + 11], 16, 1839030562),
2163 p = a(p, f, m, d, t[n + 14], 23, -35309556),
2164 d = a(d, p, f, m, t[n + 1], 4, -1530992060),
2165 m = a(m, d, p, f, t[n + 4], 11, 1272893353),
2166 f = a(f, m, d, p, t[n + 7], 16, -155497632),
2167 p = a(p, f, m, d, t[n + 10], 23, -1094730640),
2168 d = a(d, p, f, m, t[n + 13], 4, 681279174),
2169 m = a(m, d, p, f, t[n], 11, -358537222),
2170 f = a(f, m, d, p, t[n + 3], 16, -722521979),
2171 p = a(p, f, m, d, t[n + 6], 23, 76029189),
2172 d = a(d, p, f, m, t[n + 9], 4, -640364487),
2173 m = a(m, d, p, f, t[n + 12], 11, -421815835),
2174 f = a(f, m, d, p, t[n + 15], 16, 530742520),
2175 d = l(d, p = a(p, f, m, d, t[n + 2], 23, -995338651), f, m, t[n], 6, -198630844),
2176 m = l(m, d, p, f, t[n + 7], 10, 1126891415),
2177 f = l(f, m, d, p, t[n + 14], 15, -1416354905),
2178 p = l(p, f, m, d, t[n + 5], 21, -57434055),
2179 d = l(d, p, f, m, t[n + 12], 6, 1700485571),
2180 m = l(m, d, p, f, t[n + 3], 10, -1894986606),
2181 f = l(f, m, d, p, t[n + 10], 15, -1051523),
2182 p = l(p, f, m, d, t[n + 1], 21, -2054922799),
2183 d = l(d, p, f, m, t[n + 8], 6, 1873313359),
2184 m = l(m, d, p, f, t[n + 15], 10, -30611744),
2185 f = l(f, m, d, p, t[n + 6], 15, -1560198380),
2186 p = l(p, f, m, d, t[n + 13], 21, 1309151649),
2187 d = l(d, p, f, m, t[n + 4], 6, -145523070),
2188 m = l(m, d, p, f, t[n + 11], 10, -1120210379),
2189 f = l(f, m, d, p, t[n + 2], 15, 718787259),
2190 p = l(p, f, m, d, t[n + 9], 21, -343485551),
2191 d = i(d, s),
2192 p = i(p, h),
2193 f = i(f, c),
2194 m = i(m, u);
2195 return [d, p, f, m]
2196 }
2197 function c(t) {
2198 var e, n = "", i = 32 * t.length;
2199 for (e = 0; e < i; e += 8)
2200 n += String.fromCharCode(t[e >> 5] >>> e % 32 & 255);
2201 return n
2202 }
2203 function u(t) {
2204 var e, n = [];
2205 for (n[(t.length >> 2) - 1] = void 0,
2206 e = 0; e < n.length; e += 1)
2207 n[e] = 0;
2208 var i = 8 * t.length;
2209 for (e = 0; e < i; e += 8)
2210 n[e >> 5] |= (255 & t.charCodeAt(e / 8)) << e % 32;
2211 return n
2212 }
2213 function d(t) {
2214 var e, n, i = "0123456789abcdef", s = "";
2215 for (n = 0; n < t.length; n += 1)
2216 e = t.charCodeAt(n),
2217 s += i.charAt(e >>> 4 & 15) + i.charAt(15 & e);
2218 return s
2219 }
2220 function p(t) {
2221 return unescape(encodeURIComponent(t))
2222 }
2223 function f(t) {
2224 return function(t) {
2225 return c(h(u(t), 8 * t.length))
2226 }(p(t))
2227 }
2228 function m(t, e) {
2229 return function(t, e) {
2230 var n, i, s = u(t), r = [], o = [];
2231 for (r[15] = o[15] = void 0,
2232 s.length > 16 && (s = h(s, 8 * t.length)),
2233 n = 0; n < 16; n += 1)
2234 r[n] = 909522486 ^ s[n],
2235 o[n] = 1549556828 ^ s[n];
2236 return i = h(r.concat(u(e)), 512 + 8 * e.length),
2237 c(h(o.concat(i), 640))
2238 }(p(t), p(e))
2239 }
2240 e.exports = function(t, e, n) {
2241 return e ? n ? m(e, t) : function(t, e) {
2242 return d(m(t, e))
2243 }(e, t) : n ? f(t) : function(t) {
2244 return d(f(t))
2245 }(t)
2246 }
2247 }
2248 , {}]
2249 }, {}, [4])(4)
2250 });
2251 var v = [{
2252 family: "UC Browser",
2253 patterns: ["(UC? ?Browser|UCWEB|U3)[ /]?(\\d+)\\.(\\d+)\\.(\\d+)"]
2254 }, {
2255 family: "Opera",
2256 name_replace: "Opera Mobile",
2257 patterns: ["(Opera)/.+Opera Mobi.+Version/(\\d+)\\.(\\d+)", "(Opera)/(\\d+)\\.(\\d+).+Opera Mobi", "Opera Mobi.+(Opera)(?:/|\\s+)(\\d+)\\.(\\d+)", "Opera Mobi", "(?:Mobile Safari).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)"]
2258 }, {
2259 family: "Opera",
2260 name_replace: "Opera Mini",
2261 patterns: ["(Opera Mini)(?:/att|)/?(\\d+|)(?:\\.(\\d+)|)(?:\\.(\\d+)|)", "(OPiOS)/(\\d+).(\\d+).(\\d+)"]
2262 }, {
2263 family: "Opera",
2264 name_replace: "Opera Neon",
2265 patterns: ["Chrome/.+( MMS)/(\\d+).(\\d+).(\\d+)"]
2266 }, {
2267 name_replace: "Opera",
2268 patterns: ["(Opera)/9.80.*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)", "(?:Chrome).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)"]
2269 }, {
2270 family: "Firefox",
2271 name_replace: "Firefox Mobile",
2272 patterns: ["(Fennec)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)", "(Fennec)/(\\d+)\\.(\\d+)(pre)", "(Fennec)/(\\d+)\\.(\\d+)", "(?:Mobile|Tablet);.*(Firefox)/(\\d+)\\.(\\d+)", "(FxiOS)/(\\d+)\\.(\\d+)(\\.(\\d+)|)(\\.(\\d+)|)"]
2273 }, {
2274 name_replace: "Coc Coc",
2275 patterns: ["(coc_coc_browser)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)"]
2276 }, {
2277 family: "QQ",
2278 name_replace: "QQ Mini",
2279 patterns: ["(MQQBrowser/Mini)(?:(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"]
2280 }, {
2281 family: "QQ",
2282 name_replace: "QQ Mobile",
2283 patterns: ["(MQQBrowser)(?:/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"]
2284 }, {
2285 name_replace: "QQ",
2286 patterns: ["(QQBrowser)(?:/(\\d+)(?:\\.(\\d+)\\.(\\d+)(?:\\.(\\d+)|)|)|)"]
2287 }, {
2288 family: "Edge",
2289 name: "Edge Mobile",
2290 patterns: ["Windows Phone .*(Edge)/(\\d+)\\.(\\d+)", "(EdgiOS|EdgA)/(\\d+)\\.(\\d+).(\\d+).(\\d+)"]
2291 }, {
2292 name_replace: "Edge",
2293 patterns: ["(Edge|Edg)/(\\d+)(?:\\.(\\d+)|)"]
2294 }, {
2295 patterns: ["(Puffin)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)"]
2296 }, {
2297 family: "Chrome",
2298 name_replace: "Chrome Mobile",
2299 patterns: ["Version/.+(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)", "; wv\\).+(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)", "(CriOS)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)", "(CrMo)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)", "(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) Mobile(?:[ /]|$)", " Mobile .*(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"]
2300 }, {
2301 family: "Yandex",
2302 name_replace: "Yandex Mobile",
2303 patterns: ["(YaBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+).*Mobile"]
2304 }, {
2305 name_replace: "Yandex",
2306 patterns: ["(YaBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)"]
2307 }, {
2308 patterns: ["(Vivaldi)/(\\d+)\\.(\\d+)", "(Vivaldi)/(\\d+)\\.(\\d+)\\.(\\d+)"]
2309 }, {
2310 name_replace: "Brave",
2311 patterns: ["(brave)/(\\d+)\\.(\\d+)\\.(\\d+) Chrome"]
2312 }, {
2313 family: "Chrome",
2314 patterns: ["(Chromium|Chrome)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)"]
2315 }, {
2316 name_replace: "Internet Explorer Mobile",
2317 patterns: ["(IEMobile)[ /](\\d+)\\.(\\d+)"]
2318 }, {
2319 family: "Safari",
2320 name_replace: "Safari Mobile",
2321 patterns: ["(iPod|iPhone|iPad).+Version/(d+).(d+)(?:.(d+)|).*[ +]Safari", "(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+)|).* AppleNews\\/\\d+\\.\\d+\\.\\d+?", "(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)", "(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+)|).*Mobile.*[ +]Safari", "(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+)|).*Mobile", "(iPod|iPod touch|iPhone|iPad).* Safari", "(iPod|iPod touch|iPhone|iPad)"]
2322 }, {
2323 name_replace: "Safari",
2324 patterns: ["(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|).*Safari/"]
2325 }, {
2326 name_replace: "Internet Explorer",
2327 patterns: ["(Trident)/(7|8).(0)"],
2328 major_replace: "11"
2329 }, {
2330 name_replace: "Internet Explorer",
2331 patterns: ["(Trident)/(6)\\.(0)"],
2332 major_replace: "10"
2333 }, {
2334 name_replace: "Internet Explorer",
2335 patterns: ["(Trident)/(5)\\.(0)"],
2336 major_replace: "9"
2337 }, {
2338 name_replace: "Internet Explorer",
2339 patterns: ["(Trident)/(4)\\.(0)"],
2340 major_replace: "8"
2341 }, {
2342 family: "Firefox",
2343 patterns: ["(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+)", "(Firefox)/(\\d+)\\.(\\d+)(pre|[ab]\\d+[a-z]*|)"]
2344 }]
2345 , b = [{
2346 family: "Windows",
2347 name_replace: "Windows Phone",
2348 patterns: ["(Windows Phone) (?:OS[ /])?(\\d+)\\.(\\d+)", "^UCWEB.*; (wds) (\\d+)\\.(d+)(?:\\.(\\d+)|);", "^UCWEB.*; (wds) (\\d+)\\.(\\d+)(?:\\.(\\d+)|);"]
2349 }, {
2350 family: "Windows",
2351 name_replace: "Windows Mobile",
2352 patterns: ["(Windows ?Mobile)"]
2353 }, {
2354 name_replace: "Android",
2355 patterns: ["(Android)[ \\-/](\\d+)(?:\\.(\\d+)|)(?:[.\\-]([a-z0-9]+)|)", "(Android) (d+);", "^UCWEB.*; (Adr) (\\d+)\\.(\\d+)(?:[.\\-]([a-z0-9]+)|);", "^(JUC).*; ?U; ?(?:Android|)(\\d+)\\.(\\d+)(?:[\\.\\-]([a-z0-9]+)|)", "(android)\\s(?:mobile\\/)(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)", "(Silk-Accelerated=[a-z]{4,5})", "Puffin/[\\d\\.]+AT", "Puffin/[\\d\\.]+AP"]
2356 }, {
2357 name_replace: "Chrome OS",
2358 patterns: ["(x86_64|aarch64)\\ (\\d+)\\.(\\d+)\\.(\\d+).*Chrome.*(?:CitrixChromeApp)$", "(CrOS) [a-z0-9_]+ (\\d+)\\.(\\d+)(?:\\.(\\d+)|)"]
2359 }, {
2360 name_replace: "Windows",
2361 patterns: ["(Windows 10)", "(Windows NT 6\\.4)", "(Windows NT 10\\.0)"],
2362 major_replace: "10"
2363 }, {
2364 name_replace: "Windows",
2365 patterns: ["(Windows NT 6\\.3; ARM;)", "(Windows NT 6.3)"],
2366 major_replace: "8",
2367 minor_replace: "1"
2368 }, {
2369 name_replace: "Windows",
2370 patterns: ["(Windows NT 6\\.2)"],
2371 major_replace: "8"
2372 }, {
2373 name_replace: "Windows",
2374 patterns: ["(Windows NT 6\\.1)"],
2375 major_replace: "7"
2376 }, {
2377 name_replace: "Windows",
2378 patterns: ["(Windows NT 6\\.0)"],
2379 major_replace: "Vista"
2380 }, {
2381 name_replace: "Windows",
2382 patterns: ["(Windows (?:NT 5\\.2|NT 5\\.1))"],
2383 major_replace: "XP"
2384 }, {
2385 name_replace: "Mac OS X",
2386 patterns: ["((?:Mac[ +]?|; )OS[ +]X)[\\s+/](?:(\\d+)[_.](\\d+)(?:[_.](\\d+)|)|Mach-O)", "\\w+\\s+Mac OS X\\s+\\w+\\s+(\\d+).(\\d+).(\\d+).*", "(?:PPC|Intel) (Mac OS X)"]
2387 }, {
2388 name_replace: "Mac OS X",
2389 patterns: [" (Dar)(win)/(10).(d+).*((?:i386|x86_64))"],
2390 major_replace: "10",
2391 minor_replace: "6"
2392 }, {
2393 name_replace: "Mac OS X",
2394 patterns: [" (Dar)(win)/(11).(\\d+).*\\((?:i386|x86_64)\\)"],
2395 major_replace: "10",
2396 minor_replace: "7"
2397 }, {
2398 name_replace: "Mac OS X",
2399 patterns: [" (Dar)(win)/(12).(\\d+).*\\((?:i386|x86_64)\\)"],
2400 major_replace: "10",
2401 minor_replace: "8"
2402 }, {
2403 name_replace: "Mac OS X",
2404 patterns: [" (Dar)(win)/(13).(\\d+).*\\((?:i386|x86_64)\\)"],
2405 major_replace: "10",
2406 minor_replace: "9"
2407 }, {
2408 name_replace: "iOS",
2409 patterns: ["^UCWEB.*; (iPad|iPh|iPd) OS (\\d+)_(\\d+)(?:_(\\d+)|);", "(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(\\d+)[_\\.](\\d+)(?:[_\\.](\\d+)|)", "(iPhone|iPad|iPod); Opera", "(iPhone|iPad|iPod).*Mac OS X.*Version/(\\d+)\\.(\\d+)", "\\b(iOS[ /]|iOS; |iPhone(?:/| v|[ _]OS[/,]|; | OS : |\\d,\\d/|\\d,\\d; )|iPad/)(\\d{1,2})[_\\.](\\d{1,2})(?:[_\\.](\\d+)|)", "\\((iOS);", "(iPod|iPhone|iPad)", "Puffin/[\\d\\.]+IT", "Puffin/[\\d\\.]+IP"]
2410 }, {
2411 family: "Chrome",
2412 name_replace: "Chromecast",
2413 patterns: ["(CrKey -)(?:[ /](\\d+)\\.(\\d+)(?:\\.(\\d+)|)|)", "(CrKey[ +]armv7l)(?:[ /](\\d+)\\.(\\d+)(?:\\.(\\d+)|)|)", "(CrKey)(?:[/](\\d+)\\.(\\d+)(?:\\.(\\d+)|)|)"]
2414 }, {
2415 name_replace: "Debian",
2416 patterns: ["([Dd]ebian)"]
2417 }, {
2418 family: "Linux",
2419 name_replace: "Linux",
2420 patterns: ["(Linux Mint)(?:/(\\d+)|)"]
2421 }, {
2422 family: "Linux",
2423 patterns: ["(Ubuntu|Kubuntu|Arch Linux|CentOS|Slackware|Gentoo|openSUSE|SUSE|Red Hat|Fedora|PCLinuxOS|Mageia|(?:Free|Open|Net|\\b)BSD)", "(Mandriva)(?: Linux|)/(?:[\\d.-]+m[a-z]{2}(\\d+).(\\d)|)", "(Linux)(?:[ /](\\d+)\\.(\\d+)(?:\\.(\\d+)|)|)", "\\(linux-gnu\\)"]
2424 }, {
2425 family: "BlackBerry",
2426 name_replace: "BlackBerry OS",
2427 patterns: ["(BB10);.+Version/(\\d+)\\.(\\d+)\\.(\\d+)", "(Black[Bb]erry)[0-9a-z]+/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+)|)", "(Black[Bb]erry).+Version/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+)|)", "(Black[Bb]erry)"]
2428 }, {
2429 patterns: ["(Fedora|Red Hat|PCLinuxOS|Puppy|Ubuntu|Kindle|Bada|Sailfish|Lubuntu|BackTrack|Slackware|(?:Free|Open|Net|\\b)BSD)[/ ](\\d+)\\.(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)"]
2430 }]
2431 , w = navigator.userAgent
2432 , k = {
2433 getAgent: function() {
2434 return w
2435 },
2436 getBrowser: function(t) {
2437 return _(t || w, v)
2438 },
2439 getOS: function(t) {
2440 return _(t || w, b)
2441 }
2442 };
2443 function x(t, e) {
2444 try {
2445 var n = new RegExp(e).exec(t);
2446 return n ? {
2447 name: n[1] || "Other",
2448 major: n[2] || "0",
2449 minor: n[3] || "0",
2450 patch: n[4] || "0"
2451 } : null
2452 } catch (An) {
2453 return null
2454 }
2455 }
2456 function _(t, e) {
2457 for (var n = null, i = null, s = -1, r = !1; ++s < e.length && !r; ) {
2458 n = e[s];
2459 for (var o = -1; ++o < n.patterns.length && !r; )
2460 r = null !== (i = x(t, n.patterns[o]))
2461 }
2462 return r ? (i.family = n.family || n.name_replace || i.name,
2463 n.name_replace && (i.name = n.name_replace),
2464 n.major_replace && (i.major = n.major_replace),
2465 n.minor_replace && (i.minor = n.minor_replace),
2466 n.patch_replace && (i.minor = n.patch_replace),
2467 i) : {
2468 family: "Other",
2469 name: "Other",
2470 major: "0",
2471 minor: "0",
2472 patch: "0"
2473 }
2474 }
2475 function E() {
2476 var t = this
2477 , e = k.getBrowser()
2478 , n = k.getAgent();
2479 this.agent = n.toLowerCase(),
2480 this.language = window.navigator.userLanguage || window.navigator.language,
2481 this.isCSS1 = "CSS1Compat" === (document.compatMode || ""),
2482 this.width = function() {
2483 return window.innerWidth && window.document.documentElement.clientWidth ? Math.min(window.innerWidth, document.documentElement.clientWidth) : window.innerWidth || window.document.documentElement.clientWidth || document.body.clientWidth
2484 }
2485 ,
2486 this.height = function() {
2487 return window.innerHeight || window.document.documentElement.clientHeight || document.body.clientHeight
2488 }
2489 ,
2490 this.scrollX = function() {
2491 return window.pageXOffset !== undefined ? window.pageXOffset : t.isCSS1 ? document.documentElement.scrollLeft : document.body.scrollLeft
2492 }
2493 ,
2494 this.scrollY = function() {
2495 return window.pageYOffset !== undefined ? window.pageYOffset : t.isCSS1 ? document.documentElement.scrollTop : document.body.scrollTop
2496 }
2497 ,
2498 this.type = "Edge" === e.family ? "edge" : "Internet Explorer" === e.family ? "ie" : "Chrome" === e.family ? "chrome" : "Safari" === e.family ? "safari" : "Firefox" === e.family ? "firefox" : e.family.toLowerCase(),
2499 this.version = 1 * (e.major + "." + e.minor) || 0,
2500 this.hasPostMessage = !!window.postMessage
2501 }
2502 E.prototype.hasEvent = function(t, e) {
2503 return "on" + t in (e || document.createElement("div"))
2504 }
2505 ,
2506 E.prototype.getScreenDimensions = function() {
2507 var t = {};
2508 for (var e in window.screen)
2509 t[e] = window.screen[e];
2510 return delete t.orientation,
2511 t
2512 }
2513 ,
2514 E.prototype.interrogateNavigator = function() {
2515 var t = {};
2516 for (var e in window.navigator)
2517 t[e] = window.navigator[e];
2518 if (delete t.plugins,
2519 delete t.mimeTypes,
2520 t.plugins = [],
2521 window.navigator.plugins)
2522 for (var n = 0; n < window.navigator.plugins.length; n++)
2523 t.plugins[n] = window.navigator.plugins[n].filename;
2524 return t
2525 }
2526 ,
2527 E.prototype.supportsCanvas = function() {
2528 var t = document.createElement("canvas");
2529 return !(!t.getContext || !t.getContext("2d"))
2530 }
2531 ,
2532 E.prototype.supportsWebAssembly = function() {
2533 try {
2534 if ("object" == typeof WebAssembly && "function" == typeof WebAssembly.instantiate) {
2535 var t = new WebAssembly.Module(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0));
2536 if (t instanceof WebAssembly.Module)
2537 return new WebAssembly.Instance(t)instanceof WebAssembly.Instance
2538 }
2539 } catch (An) {
2540 return !1
2541 }
2542 }
2543 ;
2544 var C = {
2545 Browser: new E,
2546 System: new function() {
2547 var t, e, n = k.getOS(), i = k.getAgent();
2548 this.mobile = (t = !!("ontouchstart"in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0),
2549 e = !1,
2550 n && (e = ["iOS", "Windows Phone", "Windows Mobile", "Android", "BlackBerry OS"].indexOf(n.name) >= 0),
2551 t && e),
2552 this.dpr = function() {
2553 return window.devicePixelRatio || 1
2554 }
2555 ,
2556 this.mobile && n && "Windows" === n.family && i.indexOf("touch") < 0 && (this.mobile = !1),
2557 this.os = "iOS" === n.family ? "ios" : "Android" === n.family ? "android" : "Mac OS X" === n.family ? "mac" : "Windows" === n.family ? "windows" : "Linux" === n.family ? "linux" : n.family.toLowerCase(),
2558 this.version = function() {
2559 if (!n)
2560 return "unknown";
2561 var t = n.major;
2562 return n.minor && (t += "." + n.minor),
2563 n.patch && (t += "." + n.patch),
2564 t
2565 }()
2566 }
2567 }
2568 , S = {
2569 host: null,
2570 file: null,
2571 sitekey: null,
2572 pingdom: "safari" === C.Browser.type && "windows" !== C.System.os && "mac" !== C.System.os && "ios" !== C.System.os && "android" !== C.System.os,
2573 assetDomain: "https://assets.hcaptcha.com",
2574 assetUrl: "https://assets.hcaptcha.com/captcha/v1/baea443/static",
2575 width: null,
2576 height: null,
2577 mobile: null
2578 }
2579 , O = {
2580 text: "#555555",
2581 accent: "#926FC1",
2582 warn: {
2583 base: "#EB5757",
2584 hover: "#DE3F3F"
2585 },
2586 link: {
2587 base: "#33D1CB",
2588 hover: "#2EB0AB"
2589 },
2590 white: "#fff",
2591 grey: {
2592 base: "#333",
2593 placeholder: "#f0eff0"
2594 },
2595 purple: "#65549b",
2596 hoverOff: "#00bcb7",
2597 hoverOn: "#009490",
2598 error: "#fc481e"
2599 }
2600 , $ = {
2601 language: null,
2602 reportapi: "https://accounts.hcaptcha.com",
2603 endpoint: "https://hcaptcha.com",
2604 size: "normal",
2605 theme: "light",
2606 assethost: null,
2607 imghost: null,
2608 recaptchacompat: "true"
2609 };
2610 function A() {
2611 var t = this;
2612 this._bottom = 0,
2613 this._top = 0,
2614 this.storage = {},
2615 this.add = function(e) {
2616 return t.storage[t._top] = e,
2617 t._top++,
2618 e
2619 }
2620 ,
2621 this.remove = function() {
2622 if (!t.empty()) {
2623 var e = t._bottom
2624 , n = t.storage[e];
2625 return t.storage[e] = null,
2626 t._bottom++,
2627 n
2628 }
2629 }
2630 ,
2631 this.empty = function() {
2632 return t._top === t._bottom
2633 }
2634 ,
2635 this.size = function() {
2636 return t._top - t._bottom
2637 }
2638 }
2639 var T = {
2640 queue: A,
2641 depth: function Tn(t, e, n) {
2642 if ("object" == typeof t && t[e] && t[e].length > 0)
2643 for (var i = t[e].length; --i > -1; )
2644 Tn(t[e][i], e, n);
2645 t !== undefined && n(t)
2646 },
2647 breathe: function(t, e, n) {
2648 var i = new A
2649 , s = null;
2650 for (i.add(t),
2651 s = i.remove(); s; ) {
2652 for (var r = 0; r < s[e].length; r++)
2653 i.add(s[e][r]);
2654 n(s),
2655 s = i.remove()
2656 }
2657 }
2658 };
2659 function P() {
2660 this.children = [],
2661 this._events = []
2662 }
2663 P.prototype.initComponent = function(t, e) {
2664 var n = new t(e);
2665 return n._parent = this,
2666 this.children.push(n),
2667 n
2668 }
2669 ,
2670 P.prototype.destroy = function() {
2671 var t = this;
2672 try {
2673 T.depth(this, "children", function(e) {
2674 if (t !== e)
2675 for (var n = t.children.length; --n > -1; )
2676 t.children[n] === e && t.children.splice(n, 1);
2677 e._destroy && e._destroy(),
2678 e = null
2679 })
2680 } catch (An) {
2681 throw new Error("Trouble destroying nodes: " + An)
2682 }
2683 return null
2684 }
2685 ,
2686 P.prototype._destroy = function() {
2687 this.onDestroy && this.onDestroy();
2688 for (var t = this._events.length || 0; --t > -1; )
2689 this._events.splice(t, 1);
2690 this.children = null,
2691 this._destroy = null,
2692 this._events = null,
2693 this.destroy = null,
2694 this.emit = null,
2695 this.on = null,
2696 this.off = null,
2697 this.initComponent = null
2698 }
2699 ,
2700 P.prototype.on = function(t, e) {
2701 for (var n = this._events.length, i = !1; --n > -1 && !1 === i; )
2702 this._events[n].event === t && (i = this._events[n]);
2703 !1 === i && (i = {
2704 event: t,
2705 listeners: []
2706 },
2707 this._events.push(i)),
2708 i.listeners.push(e)
2709 }
2710 ,
2711 P.prototype.off = function(t, e) {
2712 for (var n = this._events.length; --n > -1; )
2713 if (this._events[n].event === t) {
2714 for (var i = this._events[n].listeners.length; --i > -1; )
2715 this._events[n].listeners[i] === e && this._events[n].listeners[i].splice(i, 1);
2716 0 === this._events[n].listeners.length && this._events[n].splice(n, 1)
2717 }
2718 }
2719 ,
2720 P.prototype.emit = function(t) {
2721 for (var e = Array.prototype.slice.call(arguments, 1), n = this._events.length; --n > -1; )
2722 if (this._events[n].event === t)
2723 for (var i = this._events[n].listeners.length; --i > -1; )
2724 this._events[n].listeners[i].apply(this, e)
2725 }
2726 ;
2727 var L = !0;
2728 function j(t) {
2729 var e = {
2730 message: t.name + ": " + t.message
2731 };
2732 t.stack && (e.stack_trace = {
2733 trace: t.stack
2734 }),
2735 M("report error", "internal", "debug", e),
2736 I("internal error", "error", S.file)
2737 }
2738 function I(t, e, n, i) {
2739 L && window.Raven && Raven.captureMessage(t, {
2740 level: e,
2741 logger: n
2742 })
2743 }
2744 function M(t, e, n, i) {
2745 L && window.Raven && Raven.captureBreadcrumb({
2746 message: t,
2747 category: e,
2748 level: n,
2749 data: i
2750 })
2751 }
2752 var R = {
2753 eventName: function(t) {
2754 var e = t;
2755 return "down" === t || "up" === t || "move" === t || "over" === t || "out" === t ? e = !C.System.mobile || "down" !== t && "up" !== t && "move" !== t ? "mouse" + t : "down" === t ? "touchstart" : "up" === t ? "touchend" : "touchmove" : "enter" === t && (e = "keydown"),
2756 e
2757 },
2758 actionName: function(t) {
2759 var e = t;
2760 return "touchstart" === e || "mousedown" === e ? e = "down" : "touchmove" === e || "mousemove" === e ? e = "move" : "touchend" === e || "mouseup" === e ? e = "up" : "mouseover" === e ? e = "over" : "mouseout" === e && (e = "out"),
2761 e
2762 },
2763 eventCallback: function(t, e, n) {
2764 var i = R.actionName(t);
2765 return function(s) {
2766 if (s = s || window.event,
2767 "down" === i || "move" === i || "up" === i || "over" === i || "out" === i || "click" === i) {
2768 var r = R.eventCoords(s)
2769 , o = n.getBoundingClientRect();
2770 s.windowX = r.x,
2771 s.windowY = r.y,
2772 s.elementX = s.windowX - (o.x || o.left),
2773 s.elementY = s.windowY - (o.y || o.top)
2774 }
2775 s.keyNum = s.which || s.keyCode || 0,
2776 "enter" === t && 13 !== s.keyNum && 32 !== s.keyNum || (s.action = i,
2777 s.targetElement = n,
2778 e(s))
2779 }
2780 },
2781 eventCoords: function(t) {
2782 var e = {
2783 x: 0,
2784 y: 0
2785 };
2786 if (t.windowsPointer)
2787 return t;
2788 if (!t)
2789 return e;
2790 if (t.touches || t.changedTouches) {
2791 var n = (t.touches && t.touches.length >= 1 ? t.touches : t.changedTouches)[0];
2792 e.x = n.pageX || n.clientX,
2793 e.y = n.pageY || n.clientY
2794 } else
2795 e.x = t.pageX || t.clientX,
2796 e.y = t.pageY || t.clientY;
2797 return e
2798 }
2799 };
2800 function B(t, e, n) {
2801 if (this.dom = null,
2802 this._clss = [],
2803 this._nodes = [],
2804 this._listeners = [],
2805 this._frag = null,
2806 "object" == typeof t) {
2807 this.dom = t;
2808 var i = []
2809 , s = [];
2810 t.className && (s = t.className.split(" "));
2811 for (var r = 0; r < s.length; r++)
2812 "" !== s[r] && " " !== s[r] && i.push(s[r]);
2813 this._clss = i
2814 } else
2815 n !== undefined && null !== n || (n = !0),
2816 (t === undefined || "string" == typeof t && (t.indexOf("#") >= 0 || t.indexOf(".") >= 0)) && (t && (e = t),
2817 t = "div"),
2818 this.dom = document.createElement(t),
2819 e && (e.indexOf("#") >= 0 ? this.dom.id = e.split("#")[1] : (e.indexOf(".") >= 0 && (e = e.split(".")[1]),
2820 this.addClass.call(this, e)));
2821 !0 === n && (this._frag = document.createDocumentFragment(),
2822 this._frag.appendChild(this.dom))
2823 }
2824 B.prototype.createElement = function(t, e) {
2825 var n = new B(t,e,!1);
2826 return this.appendElement.call(this, n),
2827 this._nodes.push(n),
2828 n
2829 }
2830 ,
2831 B.prototype.appendElement = function(t) {
2832 return t === undefined ? j({
2833 name: "DomElement Add Child",
2834 message: "Child Element is undefined"
2835 }) : (t._frag !== undefined && null !== t._frag ? this.dom.appendChild(t._frag) : t.dom !== undefined ? this.dom.appendChild(t.dom) : this.dom.appendChild(t),
2836 t._parent = this,
2837 this)
2838 }
2839 ,
2840 B.prototype.removeElement = function(t) {
2841 var e = t;
2842 if (t.dom) {
2843 e = e.dom;
2844 for (var n = t._nodes.length; --n > -1; )
2845 t.dom.removeChild(t._nodes[n].dom || t._nodes[n]),
2846 t._nodes.splice(n, 1)
2847 } else
2848 for (var i = this._nodes.length; --i > -1; )
2849 this._nodes[i] === e && this._nodes.splice(i, 1);
2850 this.dom.removeChild(e)
2851 }
2852 ,
2853 B.prototype.addClass = function(t) {
2854 return !1 === this.hasClass.call(this, t) && (this._clss.push(t),
2855 this.dom.className = this._clss.join(" ")),
2856 this
2857 }
2858 ,
2859 B.prototype.hasClass = function(t) {
2860 for (var e = !1, n = 0; n < this._clss.length; n++)
2861 this._clss[n] === t && (e = !0);
2862 return e
2863 }
2864 ,
2865 B.prototype.removeClass = function(t) {
2866 for (var e = this._clss.length; --e > -1; )
2867 this._clss[e] === t && this._clss.splice(e, 1);
2868 return this.dom.className = this._clss.join(" "),
2869 this
2870 }
2871 ,
2872 B.prototype.text = function(t) {
2873 if (this && this.dom && void 0 !== t) {
2874 for (var e, n, i, s, r = /&(.*?);/g, o = /<[a-z][\s\S]*>/i; null !== (e = r.exec(t)); ) {
2875 !1 === o.test(e[0]) ? (i = e[0],
2876 s = void 0,
2877 (s = document.createElement("div")).innerHTML = i,
2878 n = s.textContent,
2879 t = t.replace(new RegExp(e[0],"g"), n)) : t = t.replace(e[0], "")
2880 }
2881 return this.dom.textContent = t,
2882 this
2883 }
2884 }
2885 ,
2886 B.prototype.css = function(t) {
2887 var e;
2888 for (var n in t) {
2889 e = t[n];
2890 try {
2891 "opacity" !== n && "zIndex" !== n && "fontWeight" !== n && isFinite(e) && parseFloat(e) === e && (e += "px"),
2892 "ie" === C.Browser.type && 8 === C.Browser.version && "opacity" === n ? this.dom.style.filter = "alpha(opacity=" + 100 * e + ")" : this.dom.style[n] = e
2893 } catch ($n) {}
2894 }
2895 return this
2896 }
2897 ,
2898 B.prototype.backgroundImage = function(t, e, n, i) {
2899 var s = e !== undefined && n !== undefined
2900 , r = {};
2901 if ("object" == typeof e && (i = e),
2902 i === undefined && (i = {}),
2903 s) {
2904 var o = t.width / t.height
2905 , a = e
2906 , l = a / o;
2907 i.cover && l < n && (a = (l = n) * o),
2908 i.contain && l > n && (a = (l = n) * o),
2909 r.width = a,
2910 r.height = l,
2911 i.center && (r.marginLeft = -a / 2,
2912 r.marginTop = -l / 2,
2913 r.position = "absolute",
2914 r.left = "50%",
2915 r.top = "50%"),
2916 (i.left || i.right) && (r.left = i.left || 0,
2917 r.top = i.top || 0)
2918 }
2919 "ie" === C.Browser.type && 8 === C.Browser.version ? r.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + t.src + "',sizingMethod='scale')" : (r.background = "url(" + t.src + ")",
2920 r.backgroundPosition = "50% 50%",
2921 r.backgroundRepeat = "no-repeat",
2922 r.backgroundSize = s ? a + "px " + l + "px" : i.cover ? "cover" : i.contain ? "contain" : "100%"),
2923 this.css.call(this, r)
2924 }
2925 ,
2926 B.prototype.setAttribute = function(t, e) {
2927 var n;
2928 if ("object" == typeof t)
2929 for (var i in t)
2930 n = t[i],
2931 this.dom.setAttribute(i, n);
2932 else
2933 this.dom.setAttribute(t, e)
2934 }
2935 ,
2936 B.prototype.addEventListener = function(t, e) {
2937 var n = {
2938 event: R.eventName(t),
2939 handler: R.eventCallback(t, e, this.dom),
2940 callback: e
2941 };
2942 this._listeners.push(n),
2943 this.dom.addEventListener ? this.dom.addEventListener(n.event, n.handler) : this.dom.attachEvent("on" + n.event, n.handler)
2944 }
2945 ,
2946 B.prototype.removeEventListener = function(t, e) {
2947 for (var n, i = this._listeners.length; --i > -1; )
2948 (n = this._listeners[i]).event === t && n.callback === e && (this._listeners.splice(i, 1),
2949 this.dom.removeEventListener ? this.dom.removeEventListener(n.event, n.handler) : this.dom.detachEvent("on" + n.event, n.handler))
2950 }
2951 ,
2952 B.prototype.focus = function() {
2953 this.dom.focus()
2954 }
2955 ,
2956 B.prototype.__destroy = function() {
2957 for (var t, e = this._listeners.length; --e > -1; )
2958 t = this._listeners[e],
2959 this._listeners.splice(e, 1),
2960 this.dom.removeEventListener ? this.dom.removeEventListener(t.event, t.handler) : this.dom.detachEvent("on" + t.event, t.handler);
2961 return this.dom = null,
2962 this._clss = [],
2963 this._nodes = [],
2964 this._listeners = [],
2965 this._frag = null,
2966 t = null,
2967 null
2968 }
2969 ;
2970 var z = {
2971 self: function(t, e) {
2972 var n = {}
2973 , i = Array.prototype.slice.call(arguments, 2);
2974 for (var s in e.apply(t, i),
2975 t)
2976 n[s] = t[s]
2977 },
2978 proto: function(t, e) {
2979 t.prototype = Object.create(e.prototype),
2980 t.prototype.constructor = t
2981 }
2982 };
2983 function D(t, e) {
2984 z.self(this, B, e || "div", t),
2985 this.children = [],
2986 this._events = []
2987 }
2988 z.proto(D, B),
2989 D.prototype.initComponent = function(t, e, n) {
2990 var i = new t(e);
2991 return i._parent = this,
2992 this.children.push(i),
2993 i.dom && (n !== undefined ? n.appendElement && n.appendElement(i) : this.appendElement(i)),
2994 i
2995 }
2996 ,
2997 D.prototype.destroy = function() {
2998 var t = this;
2999 try {
3000 T.depth(this, "children", function(e) {
3001 if (t !== e)
3002 for (var n = t.children.length; --n > -1; )
3003 t.children[n] === e && t.children.splice(n, 1);
3004 e._destroy && e._destroy(),
3005 e = null
3006 })
3007 } catch (An) {
3008 throw new Error("Trouble destroying nodes: " + An)
3009 }
3010 return null
3011 }
3012 ,
3013 D.prototype._destroy = function() {
3014 this.onDestroy && this.onDestroy(),
3015 this._parent.removeElement(this);
3016 for (var t = this._events.length; --t > -1; )
3017 this._events.splice(t, 1);
3018 this.children = null,
3019 this._destroy = null,
3020 this._events = null,
3021 this.destroy = null,
3022 this.emit = null,
3023 this.on = null,
3024 this.off = null,
3025 this.initComponent = null
3026 }
3027 ,
3028 D.prototype.on = function(t, e) {
3029 for (var n = this._events.length, i = !1; --n > -1 && !1 === i; )
3030 this._events[n].event === t && (i = this._events[n]);
3031 !1 === i && (i = {
3032 event: t,
3033 listeners: []
3034 },
3035 this._events.push(i)),
3036 i.listeners.push(e)
3037 }
3038 ,
3039 D.prototype.off = function(t, e) {
3040 for (var n = this._events.length; --n > -1; )
3041 if (this._events[n].event === t) {
3042 for (var i = this._events[n].listeners.length; --i > -1; )
3043 this._events[n].listeners[i] === e && this._events[n].listeners.splice(i, 1);
3044 0 === this._events[n].listeners.length && this._events.splice(n, 1)
3045 }
3046 }
3047 ,
3048 D.prototype.emit = function(t) {
3049 for (var e = Array.prototype.slice.call(arguments, 1), n = this._events.length; --n > -1 && this._events; )
3050 if (this._events[n].event === t)
3051 for (var i = this._events[n].listeners.length; --i > -1; )
3052 this._events[n].listeners[i].apply(this, e)
3053 }
3054 ;
3055 var F = {
3056 af: "Afrikaans",
3057 sq: "Arabic",
3058 am: "Amharic",
3059 hy: "Armenian",
3060 az: "Azerbaijani",
3061 eu: "Basque",
3062 be: "Belarusian",
3063 bn: "Bengali",
3064 bg: "Bulgarian",
3065 bs: "Bosnian",
3066 my: "Burmese",
3067 ca: "Catalan",
3068 ceb: "Cebuano",
3069 zh: "Chinese",
3070 "zh-CN": "Chinese_PRC",
3071 "zh-TW": "Chinese_Taiwan",
3072 co: "Corsican",
3073 hr: "Croatian",
3074 cs: "Czech",
3075 da: "Danish",
3076 nl: "Dutch",
3077 eo: "Esperanto",
3078 et: "Estonian",
3079 fa: "Persian",
3080 fi: "Finnish",
3081 fr: "French",
3082 fy: "Frisian",
3083 gd: "Gaelic",
3084 gl: "Galacian",
3085 ka: "Georgian",
3086 de: "German",
3087 el: "Greek",
3088 gu: "Gujurati",
3089 ht: "Haitian",
3090 ha: "Hausa",
3091 haw: "Hawaiian",
3092 he: "Hebrew",
3093 hi: "Hindi",
3094 hmn: "Hmong",
3095 hu: "Hungarian",
3096 is: "Icelandic",
3097 ig: "Igbo",
3098 id: "Indonesian",
3099 ga: "Irish",
3100 it: "Italian",
3101 ja: "Japanese",
3102 jw: "Javanese",
3103 kn: "Kannada",
3104 kk: "Kazakh",
3105 km: "Khmer",
3106 rw: "Kinyarwanda",
3107 ky: "Kirghiz",
3108 ko: "Korean",
3109 ku: "Kurdish",
3110 lo: "Lao",
3111 la: "Latin",
3112 lv: "Latvian",
3113 lt: "Lithuanian",
3114 lb: "Luxembourgish",
3115 mk: "Macedonian",
3116 mg: "Malagasy",
3117 ms: "Malay",
3118 ml: "Malayalam",
3119 mt: "Maltese",
3120 mi: "Maori",
3121 mr: "Marathi",
3122 mn: "Mongolian",
3123 ne: "Nepali",
3124 no: "Norwegian",
3125 ny: "Nyanja",
3126 or: "Oriya",
3127 pl: "Polish",
3128 pt: "Portuguese",
3129 ps: "Pashto",
3130 pa: "Punjabi",
3131 ro: "Romanian",
3132 ru: "Russian",
3133 sm: "Samoan",
3134 sn: "Shona",
3135 sd: "Sindhi",
3136 si: "Singhalese",
3137 sr: "Serbian",
3138 sk: "Slovak",
3139 sl: "Slovenian",
3140 so: "Somani",
3141 st: "Sotho_Southern",
3142 es: "Spanish",
3143 su: "Sundanese",
3144 sw: "Swahili",
3145 sv: "Swedish",
3146 tl: "Tagalog",
3147 tg: "Tajik",
3148 ta: "Tamil",
3149 tt: "Tatar",
3150 te: "Teluga",
3151 th: "Thai",
3152 tr: "Turkish",
3153 tk: "Turkmen",
3154 ug: "Uyghur",
3155 uk: "Ukrainian",
3156 ur: "Urdu",
3157 uz: "Uzbek",
3158 vi: "Vietnamese",
3159 cy: "Welsh",
3160 xh: "Xhosa",
3161 yi: "Yiddish",
3162 yo: "Yoruba",
3163 zu: "Zulu"
3164 }
3165 , N = {
3166 zh: {
3167 "I am human": "我是人"
3168 },
3169 ar: {
3170 "I am human": "أنا الإنسان"
3171 },
3172 af: {
3173 "I am human": "Ek is menslike"
3174 },
3175 am: {
3176 "I am human": "እኔ ሰው ነኝ"
3177 },
3178 hy: {
3179 "I am human": "Ես մարդ եմ"
3180 },
3181 az: {
3182 "I am human": "Mən insanam"
3183 },
3184 eu: {
3185 "I am human": "Gizakia naiz"
3186 },
3187 bn: {
3188 "I am human": "আমি মানব নই"
3189 },
3190 bg: {
3191 "I am human": "Аз съм човек"
3192 },
3193 ca: {
3194 "I am human": "Sóc humà"
3195 },
3196 hr: {
3197 "I am human": "Ja sam čovjek"
3198 },
3199 cs: {
3200 "I am human": "Jsem člověk"
3201 },
3202 da: {
3203 "I am human": "Jeg er et menneske"
3204 },
3205 nl: {
3206 "I am human": "Ik ben een mens"
3207 },
3208 et: {
3209 "I am human": "Ma olen inimeste"
3210 },
3211 fi: {
3212 "I am human": "Olen ihminen"
3213 },
3214 fr: {
3215 "I am human": "Je suis humain"
3216 },
3217 gl: {
3218 "I am human": "Eu son humano"
3219 },
3220 ka: {
3221 "I am human": "მე ვარ ადამიანი"
3222 },
3223 de: {
3224 "I am human": "Ich bin ein Mensch"
3225 },
3226 el: {
3227 "I am human": "Είμαι άνθρωπος"
3228 },
3229 gu: {
3230 "I am human": "હું માનવ છું"
3231 },
3232 iw: {
3233 "I am human": ". אני אנושי"
3234 },
3235 hi: {
3236 "I am human": "मैं मानव हूं"
3237 },
3238 hu: {
3239 "I am human": "Nem vagyok robot"
3240 },
3241 is: {
3242 "I am human": "Ég er manneskja"
3243 },
3244 id: {
3245 "I am human": "Aku manusia"
3246 },
3247 it: {
3248 "I am human": "Sono un essere umano"
3249 },
3250 ja: {
3251 "I am human": "私は人間です"
3252 },
3253 kn: {
3254 "I am human": "ನಾನು ಮಾನವನು"
3255 },
3256 ko: {
3257 "I am human": "사람입니다"
3258 },
3259 lo: {
3260 "I am human": "ຂ້ອຍເປັນມະນຸດ"
3261 },
3262 lv: {
3263 "I am human": "Es esmu cilvēks"
3264 },
3265 lt: {
3266 "I am human": "Aš esu žmogaus"
3267 },
3268 ms: {
3269 "I am human": "Saya manusia"
3270 },
3271 ml: {
3272 "I am human": "ഞാൻ മനുഷ്യനാണ്"
3273 },
3274 mr: {
3275 "I am human": "मी मानवी आहे"
3276 },
3277 mn: {
3278 "I am human": "Би бол хүн"
3279 },
3280 no: {
3281 "I am human": "Jeg er menneskelig"
3282 },
3283 fa: {
3284 "I am human": "من انسانی هستم"
3285 },
3286 pl: {
3287 "I am human": "Jestem człowiekiem"
3288 },
3289 pt: {
3290 "I am human": "Sou humano"
3291 },
3292 ro: {
3293 "I am human": "Eu sunt om"
3294 },
3295 ru: {
3296 "I am human": "Я человек"
3297 },
3298 sr: {
3299 "I am human": "Ja sam ljudski"
3300 },
3301 si: {
3302 "I am human": "මම මිනිස්සු"
3303 },
3304 sk: {
3305 "I am human": "Ja som človek"
3306 },
3307 sl: {
3308 "I am human": "Jaz sem človeški"
3309 },
3310 es: {
3311 "I am human": "Soy humano"
3312 },
3313 sw: {
3314 "I am human": "Mimi ni binadamu"
3315 },
3316 sv: {
3317 "I am human": "Jag är människa"
3318 },
3319 ta: {
3320 "I am human": "நான் மனித"
3321 },
3322 te: {
3323 "I am human": "నేను మనిషిని"
3324 },
3325 th: {
3326 "I am human": "ผมมนุษย์"
3327 },
3328 tr: {
3329 "I am human": "Ben bir insanım"
3330 },
3331 uk: {
3332 "I am human": "Я людини"
3333 },
3334 ur: {
3335 "I am human": "میں انسان ہوں"
3336 },
3337 vi: {
3338 "I am human": "Tôi là con người"
3339 },
3340 zu: {
3341 "I am human": "Ngingumuntu"
3342 }
3343 }
3344 , W = null
3345 , U = {
3346 translate: function(t) {
3347 var e = U.getBestTrans(N);
3348 return e && e[t] || t
3349 },
3350 getBestTrans: function(t) {
3351 var e = U.getLocale();
3352 return e in t ? t[e] : U.getShortLocale(e)in t ? t[U.getShortLocale(e)] : "en"in t ? t.en : null
3353 },
3354 getLocale: function() {
3355 var t = W || window.navigator.userLanguage || window.navigator.language
3356 , e = U.getShortLocale(t);
3357 return "in" === e && (t = "id"),
3358 "iw" === e && (t = "he"),
3359 "nb" === e && (t = "no"),
3360 "ji" === e && (t = "yi"),
3361 "zh-CN" === t && (t = "zh"),
3362 "jv" === e && (t = "jw"),
3363 F[t] ? t : F[e] ? e : "en"
3364 },
3365 setLocale: function(t) {
3366 W = t
3367 },
3368 getShortLocale: function(t) {
3369 return t.substring(0, 2)
3370 },
3371 isShortLocale: function(t) {
3372 return 2 === t.length
3373 },
3374 addTable: function(t, e) {
3375 if (e || (e = Object.create(null)),
3376 N[t]) {
3377 var n = N[t];
3378 for (var i in e)
3379 n[i] = e[i]
3380 } else
3381 N[t] = e;
3382 return N[t]
3383 },
3384 getTable: function(t) {
3385 return N[t]
3386 },
3387 addTables: function(t) {
3388 for (var e in t)
3389 U.addTable(e, t[e]);
3390 return N
3391 },
3392 getTables: function() {
3393 return N
3394 }
3395 }
3396 , H = {
3397 touchstart: "ts",
3398 touchend: "te",
3399 touchmove: "tm",
3400 touchcancel: "tc"
3401 }
3402 , q = {
3403 mousedown: "md",
3404 mouseup: "mu",
3405 mousemove: "mm"
3406 }
3407 , J = {
3408 keydown: "kd",
3409 keyup: "ku"
3410 }
3411 , X = {
3412 devicemotion: "dm"
3413 }
3414 , V = function(t, e) {
3415 var n = q[t]
3416 , i = null;
3417 return function(t) {
3418 i = function(t) {
3419 return [t.windowX, t.windowY, Date.now()]
3420 }(t),
3421 e(n, i)
3422 }
3423 }
3424 , K = function(t, e) {
3425 var n = H[t]
3426 , i = null;
3427 return function(t) {
3428 i = function(t) {
3429 for (var e, n = t.touches && t.touches.length >= 1 ? t.touches : t.changedTouches, i = [], s = 0; s < n.length; s++)
3430 e = R.eventCoords(n[s]),
3431 i.push([n[s].identifier, e.x, e.y]);
3432 return i.push(Date.now()),
3433 i
3434 }(t),
3435 e(n, i)
3436 }
3437 }
3438 , Y = function(t, e) {
3439 var n = J[t]
3440 , i = null;
3441 return function(t) {
3442 i = function(t) {
3443 return [t.keyNum, Date.now()]
3444 }(t),
3445 e(n, i)
3446 }
3447 }
3448 , G = function(t, e) {
3449 var n = X[t]
3450 , i = null
3451 , s = [];
3452 return function(t) {
3453 null !== (i = function(t, e) {
3454 (t.acceleration === undefined || t.acceleration && t.acceleration.x === undefined) && (t.acceleration = {
3455 x: 0,
3456 y: 0,
3457 z: 0
3458 });
3459 (t.rotationRate === undefined || t.rotationRate && t.rotationRate.alpha === undefined) && (t.rotationRate = {
3460 alpha: 0,
3461 beta: 0,
3462 gamma: 0
3463 });
3464 var n = [t.acceleration.x, t.acceleration.y, t.acceleration.z, t.rotationRate.alpha, t.rotationRate.beta, t.rotationRate.gamma, Date.now()]
3465 , i = [];
3466 if (0 === e.length)
3467 e = n,
3468 i = n;
3469 else {
3470 for (var s, r = 0, o = 0; o < 6; o++)
3471 s = e[o] - n[o],
3472 i.push(n[o]),
3473 r += Math.abs(s);
3474 if (i.push(Date.now()),
3475 e = n,
3476 r <= 0)
3477 return null
3478 }
3479 return {
3480 motion: i,
3481 prevmotion: e
3482 }
3483 }(t, s)) && (s = i.prevmotion,
3484 i = i.motion,
3485 e(n, i))
3486 }
3487 };
3488 var Q = {}
3489 , Z = {}
3490 , tt = 500
3491 , et = 5e3
3492 , nt = Date.now()
3493 , it = !1
3494 , st = !1
3495 , rt = null
3496 , ot = !0
3497 , at = !0
3498 , lt = !1
3499 , ht = !0
3500 , ct = {
3501 record: function(t, e, n, i) {
3502 ot = t === undefined ? ot : t,
3503 at = n === undefined ? at : n,
3504 lt = e === undefined ? lt : e,
3505 ht = i === undefined ? ht : i,
3506 !1 === st && (rt = new B(document.body),
3507 ot && (rt.addEventListener("mousedown", V("mousedown", ut)),
3508 rt.addEventListener("mousemove", V("mousemove", ut)),
3509 rt.addEventListener("mouseup", V("mouseup", ut))),
3510 !0 === lt && (rt.addEventListener("keyup", Y("keyup", ut)),
3511 rt.addEventListener("keydown", Y("keydown", ut))),
3512 at && !0 === C.Browser.hasEvent("touchstart", document.body) && (rt.addEventListener("touchstart", K("touchstart", ut)),
3513 rt.addEventListener("touchmove", K("touchmove", ut)),
3514 rt.addEventListener("touchend", K("touchend", ut))),
3515 ht && !0 === C.Browser.hasEvent("devicemotion", window) && rt.addEventListener("devicemotion", G("devicemotion", ut)),
3516 st = !0),
3517 Q.st = Date.now(),
3518 it = !0
3519 },
3520 stop: function() {
3521 !1 !== it && (it = !1)
3522 },
3523 time: function() {
3524 return nt
3525 },
3526 getData: function() {
3527 return Q
3528 },
3529 setData: function(t, e) {
3530 Q[t] || (Q[t] = null),
3531 Array.isArray(Q[t]) ? Q[t].push(e) : Q[t] = e
3532 },
3533 resetData: function() {
3534 Q = {},
3535 Z = {}
3536 },
3537 circBuffPush: ut
3538 };
3539 function ut(t, e, n, i) {
3540 if (!1 !== it)
3541 if (Q[t]) {
3542 var s = n || tt
3543 , r = i || et;
3544 if (Q[t].length < r)
3545 Q[t].push(e);
3546 else {
3547 var o = Z[t];
3548 0 === o && (o = s);
3549 var a = (o + 1) % r;
3550 Z[t] = a,
3551 Q[t][o] = e
3552 }
3553 } else
3554 Q[t] = [e],
3555 Z[t] = 0
3556 }
3557 var dt = []
3558 , pt = !1
3559 , ft = !1;
3560 function mt(t) {
3561 var e = Array.prototype.slice.call(arguments, 1);
3562 !0 !== ft && "interactive" !== document.readyState && "loaded" !== document.readyState && "complete" !== document.readyState ? (dt.push({
3563 fn: t,
3564 args: e
3565 }),
3566 !1 === pt && function() {
3567 document.addEventListener ? (document.addEventListener("DOMContentLoaded", yt),
3568 window.addEventListener("load", yt)) : (document.attachEvent("onreadystatechange", gt),
3569 window.attachEvent("onload", yt));
3570 pt = !0
3571 }()) : setTimeout(function() {
3572 t(e)
3573 }, 1)
3574 }
3575 function gt() {
3576 "interactive" !== document.readyState && "loaded" !== document.readyState && "complete" !== document.readyState || yt()
3577 }
3578 function yt() {
3579 if (!1 === ft) {
3580 for (var t = 0; t < dt.length; t++)
3581 dt[t].fn.apply(null, dt[t].args);
3582 dt = []
3583 }
3584 ft = !0,
3585 document.removeEventListener ? (document.removeEventListener("DOMContentLoaded", yt),
3586 window.removeEventListener("load", yt)) : (document.detachEvent("onreadystatechange", gt),
3587 window.detachEvent("onload", yt))
3588 }
3589 var vt = new B(document)
3590 , bt = new B(window)
3591 , wt = {
3592 __proto__: null,
3593 BaseComponent: P,
3594 DomComponent: D,
3595 Device: C,
3596 Extend: z,
3597 Motion: ct,
3598 Language: U,
3599 Dom: {
3600 __proto__: null,
3601 Window: bt,
3602 Document: vt,
3603 Element: B,
3604 Ready: mt,
3605 Find: function(t) {
3606 for (var e, n, i = null, s = !1, r = t.split(" "), o = 0; o < r.length; o++)
3607 if ((e = r[o]).indexOf("#") >= 0 && (i = document.getElementById(e.replace("#", ""))),
3608 e.indexOf(".") >= 0)
3609 if (null === i && (i = document),
3610 s) {
3611 for (var a = [], l = 0; l < i.length; l++) {
3612 n = i[l].getElementsByClassName(e.replace(".", ""));
3613 for (var h = 0; h < n.length; h++)
3614 a.push(n[h])
3615 }
3616 i = a,
3617 a = []
3618 } else
3619 i = i.getElementsByClassName(e.replace(".", "")),
3620 s = !0;
3621 if (!0 === s) {
3622 if (1 === i.length)
3623 return i[0];
3624 for (var c = [], u = 0; u < i.length; u++)
3625 c.push(i[u]);
3626 return c
3627 }
3628 return i
3629 }
3630 }
3631 };
3632 function kt() {
3633 z.self(this, B, "canvas");
3634 var t = this;
3635 this.element = this.dom,
3636 this.ctx = this.element.getContext("2d"),
3637 this.scale = 1,
3638 this.dpr = window.devicePixelRatio || 1,
3639 this.clearColor = "#fff",
3640 this.ctx.roundedRect = function(e, n, i, s, r) {
3641 var o = i > 0 ? r : -r
3642 , a = s > 0 ? r : -r;
3643 t.ctx.beginPath(),
3644 t.ctx.moveTo(e + o, n),
3645 t.ctx.lineTo(e + i - o, n),
3646 t.ctx.quadraticCurveTo(e + i, n, e + i, n + a),
3647 t.ctx.lineTo(e + i, n + s - a),
3648 t.ctx.quadraticCurveTo(e + i, n + s, e + i - o, n + s),
3649 t.ctx.lineTo(e + o, n + s),
3650 t.ctx.quadraticCurveTo(e, n + s, e, n + s - a),
3651 t.ctx.lineTo(e, n + a),
3652 t.ctx.quadraticCurveTo(e, n, e + o, n),
3653 t.ctx.closePath()
3654 }
3655 }
3656 function xt(t, e, n) {
3657 return Math.min(Math.max(t, e), n)
3658 }
3659 function _t(t, e, n, i, s, r) {
3660 var o = (t - e) * (s - i) / (n - e) + i;
3661 return !1 === r ? o : xt(o, Math.min(i, s), Math.max(i, s))
3662 }
3663 function Et(t) {
3664 return t * (Math.PI / 180)
3665 }
3666 function Ct(t) {
3667 return 180 * t / Math.PI
3668 }
3669 z.proto(kt, B),
3670 kt.prototype.dimensions = function(t, e) {
3671 this.css({
3672 width: t,
3673 height: e
3674 }),
3675 this.element.width = Math.round(t / this.scale) * this.dpr,
3676 this.element.height = Math.round(e / this.scale) * this.dpr,
3677 this.ctx.scale(this.dpr, this.dpr),
3678 this.width = Math.round(t / this.scale),
3679 this.height = Math.round(e / this.scale)
3680 }
3681 ,
3682 kt.prototype.clear = function() {
3683 this.ctx && this.ctx.clearRect(0, 0, this.element.width, this.element.height)
3684 }
3685 ,
3686 kt.prototype.draw = function() {
3687 this.ctx && (this.ctx.fillStyle = this.clearColor,
3688 this.ctx.fillRect(0, 0, this.element.width, this.element.height))
3689 }
3690 ,
3691 kt.prototype._destroy = function() {
3692 this.__destroy(),
3693 this.element = null,
3694 this.ctx = null,
3695 this.width = null,
3696 this.height = null
3697 }
3698 ;
3699 var St = {
3700 __proto__: null,
3701 clamp: xt,
3702 range: _t,
3703 toRadians: Et,
3704 toDegrees: Ct
3705 };
3706 function Ot(t) {
3707 t = t || {},
3708 this.x = t.x || 0,
3709 this.y = t.y || 0,
3710 this.rotate = this.rotate.bind(this),
3711 this.getDistance = this.getDistance.bind(this),
3712 this.radius = 0,
3713 this.tolerance = 0,
3714 this.fill = !1,
3715 this.stroke = !1,
3716 this.fillColor = "#fff",
3717 this.strokeColor = "#fff",
3718 this.strokeWidth = 1
3719 }
3720 function $t(t, e, n) {
3721 z.self(this, Ot, t),
3722 this.handleIn = new Ot(e),
3723 this.handleOut = new Ot(n),
3724 this.prev = null,
3725 this.next = null,
3726 this.index = 0
3727 }
3728 function At(t) {
3729 this._closed = !1,
3730 this.stroke = !1,
3731 this.fill = !1,
3732 this.fillColor = "#fff",
3733 this.strokeColor = "#fff",
3734 this.strokeWidth = 1,
3735 this.showPoints = !1,
3736 this.pointRadius = 0,
3737 this._head = null,
3738 this._tail = null,
3739 this.segments = [],
3740 this.addPoint = this.addPoint.bind(this),
3741 this.removePoint = this.removePoint.bind(this),
3742 this.forEachPoint = this.forEachPoint.bind(this),
3743 this.getBounding = this.getBounding.bind(this),
3744 this.getCenter = this.getCenter.bind(this),
3745 this.destroy = this.destroy.bind(this),
3746 t && t.length && this.addPoints(t)
3747 }
3748 function Tt(t, e) {
3749 if (e.y <= t.y) {
3750 if (e.next.y > t.y && Pt(e, e.next, t) > 0)
3751 return 1
3752 } else if (e.next.y <= t.y && Pt(e, e.next, t) < 0)
3753 return -1;
3754 return 0
3755 }
3756 function Pt(t, e, n) {
3757 return (e.x - t.x) * (n.y - t.y) - (n.x - t.x) * (e.y - t.y)
3758 }
3759 Ot.prototype.rotate = function(t, e) {
3760 var n = Et(e)
3761 , i = Math.sin(n)
3762 , s = Math.cos(n)
3763 , r = this.x - t.x
3764 , o = this.y - t.y;
3765 this.x = r * s - o * i + t.x,
3766 this.y = r * i + o * s + t.y
3767 }
3768 ,
3769 Ot.prototype.getDistance = function(t) {
3770 return Math.sqrt(Math.pow(this.x - t.x, 2) + Math.pow(this.y - t.y, 2))
3771 }
3772 ,
3773 Ot.prototype.getAngle = function(t) {
3774 var e = t.x - this.x
3775 , n = t.y - this.y
3776 , i = Ct(Math.atan2(n, e));
3777 return i < 0 && (i += 360),
3778 i
3779 }
3780 ,
3781 Ot.prototype.hitTest = function(t) {
3782 return this.radius + this.tolerance >= this.getDistance(t)
3783 }
3784 ,
3785 Ot.prototype.restrict = function(t, e, n, i) {
3786 if ("x" !== t && "y" !== t)
3787 throw new Error("Point.restrict requires a value: x or y");
3788 return e + this[t] < n ? e = this[t] - n : e + this[t] > i && (e = i - this[t]),
3789 this[t] + e
3790 }
3791 ,
3792 Ot.prototype.draw = function(t) {
3793 t.ctx.beginPath(),
3794 t.ctx.arc(this.x, this.y, this.radius / t.scale, 0, 2 * Math.PI, !1),
3795 this.fill && (t.ctx.fillStyle = this.fillColor,
3796 t.ctx.fill()),
3797 this.stroke && (t.ctx.strokeStyle = this.strokeColor,
3798 t.ctx.lineWidth = this.strokeWidth / t.scale,
3799 t.ctx.stroke())
3800 }
3801 ,
3802 z.proto($t, Ot),
3803 $t.prototype.set = function(t, e, n) {
3804 this.x = t.x || this.x,
3805 this.y = t.y || this.y,
3806 e === undefined ? (this.handleIn.x = this.x,
3807 this.handleIn.y = this.y) : (this.handleIn.x = e.x,
3808 this.handleIn.y = e.y),
3809 n === undefined ? (this.handleOut.x = this.x,
3810 this.handleOut.y = this.y) : (this.handleOut.x = n.x,
3811 this.handleOut.y = n.y)
3812 }
3813 ,
3814 $t.prototype.clone = function() {
3815 var t = {
3816 x: this.x,
3817 y: this.y
3818 }
3819 , e = {
3820 x: this.handleIn.x,
3821 y: this.handleIn.y
3822 }
3823 , n = {
3824 x: this.handleOut.x,
3825 y: this.handleOut.y
3826 }
3827 , i = new $t;
3828 return e.x === n.x && e.y === n.y ? i.set(t) : i.set(t, e, n),
3829 i.index = this.index,
3830 i.prev = this.prev,
3831 i.next = this.next,
3832 i.radius = this.radius,
3833 i.tolerance = this.tolerance,
3834 i.fill = this.fill,
3835 i.stroke = this.stroke,
3836 i.fillColor = this.fillColor,
3837 i.strokeColor = this.strokeColor,
3838 i.strokeWidth = this.strokeWidth,
3839 i
3840 }
3841 ,
3842 $t.prototype.move = function(t, e) {
3843 this.x += t,
3844 this.y += e,
3845 this.handleIn.x += t,
3846 this.handleIn.y += e,
3847 this.handleOut.x += t,
3848 this.handleOut.y += e
3849 }
3850 ,
3851 $t.prototype.render = function(t) {
3852 this.handleIn.x !== this.x && this.handleIn.y !== this.y && this.handleIn.draw(t),
3853 this.handleOut.x !== this.x && this.handleOut.y !== this.y && this.handleOut.draw(t),
3854 this.draw(t)
3855 }
3856 ,
3857 At.prototype.addPoint = function(t) {
3858 var e;
3859 return t instanceof $t ? e = t.clone() : ((e = new $t).set(t),
3860 e.radius = this.pointRadius),
3861 e.index = this.segments.length,
3862 null === this._head ? (this._head = e,
3863 this._tail = e) : (e.prev = this._tail,
3864 this._tail.next = e,
3865 this._tail = e),
3866 this._head.prev = this._tail,
3867 this._tail.next = this._head,
3868 this.segments.push(e),
3869 e
3870 }
3871 ,
3872 At.prototype.addPoints = function(t) {
3873 for (var e = 0; e < t.length; e++)
3874 this.addPoint(t[e]);
3875 t = null
3876 }
3877 ,
3878 At.prototype.setPoints = function(t, e) {
3879 e === undefined && (e = 0);
3880 for (var n = e; n < t.length; n++)
3881 this.segments[n] === undefined ? this.addPoint(t[n]) : this.segments[n].set(t[n]);
3882 t = null,
3883 e = null
3884 }
3885 ,
3886 At.prototype.setPointRadius = function(t) {
3887 for (var e = -1; ++e < this.segments.length; )
3888 (void 0).radius = t
3889 }
3890 ,
3891 At.prototype.removePoint = function(t) {
3892 for (var e = this.segments.length, n = null; --e > -1 && null === n; )
3893 n = this.segments[e],
3894 t.x === n.x && t.y === n.y && (this.segments.splice(e, 1),
3895 n === this._head && n === this._tail ? (this._head = null,
3896 this._tail = null) : n === this.head ? (this._head = this._head.next,
3897 this._head.prev = null) : n === this._tail ? (this._tail = this._tail.prev,
3898 this._tail.next = null) : (n.prev.next = n.next,
3899 n.next.prev = n.prev));
3900 return n
3901 }
3902 ,
3903 At.prototype.forEachPoint = function(t, e) {
3904 if (0 !== this.segments.length && this.segments)
3905 for (var n, i = !1, s = this.segments.length; --s > -1 && !i; )
3906 n = this.segments[e ? this.segments.length - 1 - s : s],
3907 t && (i = t(n))
3908 }
3909 ,
3910 At.prototype.close = function(t) {
3911 this._closed = t
3912 }
3913 ,
3914 At.prototype.isClosed = function() {
3915 return this._closed
3916 }
3917 ,
3918 At.prototype.start = function() {
3919 return this._head
3920 }
3921 ,
3922 At.prototype.end = function() {
3923 return this._tail
3924 }
3925 ,
3926 At.prototype.rotate = function(t, e) {
3927 e === undefined && (e = this.getCenter());
3928 for (var n, i = -1; ++i < this.segments.length; )
3929 (n = this.segments[i]).handleIn.rotate(e, t),
3930 n.rotate(e, t),
3931 n.handleOut.rotate(e, t)
3932 }
3933 ,
3934 At.prototype.move = function(t, e) {
3935 for (var n = -1; ++n < this.segments.length; )
3936 this.segments[n].move(t, e)
3937 }
3938 ,
3939 At.prototype.getPoint = function(t) {
3940 return this.segments[t]
3941 }
3942 ,
3943 At.prototype.getLength = function() {
3944 return this.segments.length
3945 }
3946 ,
3947 At.prototype.getCenter = function() {
3948 var t = this.getBounding();
3949 return {
3950 x: (t.right - t.left) / 2 + t.left,
3951 y: (t.bottom - t.top) / 2 + t.top
3952 }
3953 }
3954 ,
3955 At.prototype.getDimensions = function() {
3956 var t = this.getBounding();
3957 return {
3958 width: t.right - t.left,
3959 height: t.bottom - t.top
3960 }
3961 }
3962 ,
3963 At.prototype.getBounding = function() {
3964 for (var t, e = null, n = null, i = null, s = null, r = -1; ++r < this.segments.length; )
3965 t = this.segments[r],
3966 (null === e || t.x < e) && (e = t.x),
3967 (null === n || t.x > n) && (n = t.x),
3968 (null === i || t.y < i) && (i = t.y),
3969 (null === s || t.y > s) && (s = t.y);
3970 return {
3971 left: e,
3972 top: i,
3973 bottom: s,
3974 right: n
3975 }
3976 }
3977 ,
3978 At.prototype.draw = function(t) {
3979 t.ctx.beginPath();
3980 for (var e = -1, n = this.segments.length; ++e < n; ) {
3981 var i = this.segments[e]
3982 , s = i.x !== i.handleIn.x || i.y !== i.handleIn.y || i.prev.x !== i.prev.handleOut.x || i.prev.y !== i.prev.handleOut.y;
3983 if (0 === i.index)
3984 t.ctx.moveTo(i.x, i.y);
3985 else if (s) {
3986 t.ctx.bezierCurveTo(i.prev.handleOut.x, i.prev.handleOut.y, i.handleIn.x, i.handleIn.y, i.x, i.y),
3987 (i.next.x !== i.next.handleIn.x || i.next.y !== i.next.handleIn.y) && this._closed && this._tail === i && t.ctx.bezierCurveTo(i.handleOut.x, i.handleOut.y, i.next.handleIn.x, i.next.handleIn.y, i.next.x, i.next.y)
3988 } else
3989 t.ctx.lineTo(i.x, i.y)
3990 }
3991 this._closed && t.ctx.closePath(),
3992 this.fill && (t.ctx.fillStyle = this.fillColor,
3993 t.ctx.fill()),
3994 this.stroke && (t.ctx.strokeStyle = this.strokeColor,
3995 t.ctx.lineWidth = this.strokeWidth / t.scale,
3996 t.ctx.stroke()),
3997 !0 === this.showPoints && this.forEachPoint(function(e) {
3998 e.fill = !0,
3999 e.render(t)
4000 })
4001 }
4002 ,
4003 At.prototype.hitTest = function(t, e) {
4004 e === undefined && (e = {});
4005 var n, i = !1, s = 0, r = !1;
4006 e.segment = e.segment === undefined || e.segment,
4007 e.path = e.path === undefined || e.path;
4008 for (var o = -1; ++o < this.segments.length; )
4009 n = this.segments[o],
4010 e.path && this._closed && (s += Tt(t, n)),
4011 e.segment && n.hitTest(t) && (r = n);
4012 return e.path && 0 !== s && !1 === r ? i = {
4013 type: "path",
4014 geometry: this
4015 } : r && (i = {
4016 type: "segment",
4017 geometry: r
4018 }),
4019 i
4020 }
4021 ,
4022 At.prototype.destroy = function() {
4023 for (var t = this.segments.length; --t > -1; )
4024 this.segments.splice(t, 1);
4025 return this._head = null,
4026 this._tail = null,
4027 this.segments = [],
4028 null
4029 }
4030 ;
4031 var Lt = {
4032 __proto__: null,
4033 Path: At,
4034 Segment: $t,
4035 Point: Ot
4036 };
4037 function jt(t) {
4038 this.r = 255,
4039 this.g = 255,
4040 this.b = 255,
4041 this.a = 1,
4042 this.h = 1,
4043 this.s = 1,
4044 this.l = 1,
4045 t && t.indexOf("#") >= 0 && (this.hex2rgb.call(this, t),
4046 this.rgb2hsl.call(this, this.r, this.g, this.b))
4047 }
4048 function It(t, e, n) {
4049 return n < 0 && (n += 1),
4050 n > 1 && (n -= 1),
4051 n < 1 / 6 ? t + 6 * (e - t) * n : n < .5 ? e : n < 2 / 3 ? t + (e - t) * (2 / 3 - n) * 6 : t
4052 }
4053 jt.prototype.hex2rgb = function(t) {
4054 var e = (t = t.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function(t, e, n, i) {
4055 return e + e + n + n + i + i
4056 })).replace("#", "")
4057 , n = parseInt(e, 16);
4058 return this.r = n >> 16,
4059 this.g = n >> 8 & 255,
4060 this.b = 255 & n,
4061 this
4062 }
4063 ,
4064 jt.prototype.hsl2rgb = function(t, e, n) {
4065 if (0 === e)
4066 return this.r = this.g = this.b = Math.round(255 * n),
4067 this;
4068 var i = n <= .5 ? n * (1 + e) : n + e - n * e
4069 , s = 2 * n - i;
4070 return this.r = Math.round(255 * It(s, i, t + 1 / 3)),
4071 this.g = Math.round(255 * It(s, i, t)),
4072 this.b = Math.round(255 * It(s, i, t - 1 / 3)),
4073 this.h = t,
4074 this.s = e,
4075 this.l = n,
4076 this
4077 }
4078 ,
4079 jt.prototype.rgb2hsl = function(t, e, n) {
4080 t /= 255,
4081 e /= 255,
4082 n /= 255;
4083 var i = Math.max(t, e, n)
4084 , s = Math.min(t, e, n)
4085 , r = null
4086 , o = null
4087 , a = (i + s) / 2;
4088 if (i === s)
4089 r = o = 0;
4090 else {
4091 var l = i - s;
4092 switch (o = a > .5 ? l / (2 - i - s) : l / (i + s),
4093 i) {
4094 case t:
4095 r = (e - n) / l + (e < n ? 6 : 0);
4096 break;
4097 case e:
4098 r = (n - t) / l + 2;
4099 break;
4100 case n:
4101 r = (t - e) / l + 4
4102 }
4103 r /= 6
4104 }
4105 return this.h = r,
4106 this.s = o,
4107 this.l = a,
4108 this
4109 }
4110 ,
4111 jt.prototype.getHex = function() {
4112 return "#" + ((1 << 24) + (this.r << 16) + (this.g << 8) + this.b).toString(16).slice(1)
4113 }
4114 ,
4115 jt.prototype.getRGBA = function() {
4116 return "rgba(" + this.r + "," + this.g + "," + this.b + "," + this.a + ")"
4117 }
4118 ,
4119 jt.prototype.clone = function() {
4120 var t = new jt;
4121 return t.r = this.r,
4122 t.g = this.g,
4123 t.b = this.b,
4124 t.h = this.h,
4125 t.s = this.s,
4126 t.l = this.l,
4127 t
4128 }
4129 ,
4130 jt.prototype.mix = function(t, e) {
4131 t instanceof jt || (t = new jt(t));
4132 var n = new jt;
4133 return n.r = Math.round(this.r + e * (t.r - this.r)),
4134 n.g = Math.round(this.g + e * (t.g - this.g)),
4135 n.b = Math.round(this.b + e * (t.b - this.b)),
4136 n.rgb2hsl(n.r, n.g, n.b),
4137 n
4138 }
4139 ,
4140 jt.prototype.blend = function(t, e) {
4141 var n;
4142 t instanceof jt || (t = new jt(t));
4143 for (var i = [], s = 0; s < e; s++)
4144 n = this.mix.call(this, t, s / e),
4145 i.push(n);
4146 return i
4147 }
4148 ,
4149 jt.prototype.lightness = function(t) {
4150 return t > 1 && (t /= 100),
4151 this.hsl2rgb.call(this, this.h, this.s, t),
4152 this
4153 }
4154 ,
4155 jt.prototype.saturation = function(t) {
4156 return t > 1 && (t /= 100),
4157 this.hsl2rgb.call(this, this.h, t, this.l),
4158 this
4159 }
4160 ,
4161 jt.prototype.hue = function(t) {
4162 return this.hsl2rgb.call(this, t /= 360, this.s, this.l),
4163 this
4164 }
4165 ;
4166 var Mt = {
4167 _setup: !1,
4168 _af: null,
4169 _fps: 60,
4170 _singleFrame: 1 / 60,
4171 _lagThreshold: 500,
4172 _adjustedLag: 1 / 60 * 2,
4173 _startTime: 0,
4174 _lastTime: 0,
4175 _nextTime: 1 / 60,
4176 _elapsed: 0,
4177 _difference: 0,
4178 _renders: [],
4179 _paused: !1,
4180 _running: !1,
4181 _tick: !1,
4182 frame: 0,
4183 time: 0,
4184 requestFrame: null,
4185 cancelFrame: null,
4186 _init: function() {
4187 for (var t, e = window.requestAnimationFrame, n = window.cancelAnimationFrame, i = ["ms", "moz", "webkit", "o"], s = i.length; --s > -1 && !e; )
4188 e = window[i[s] + "RequestAnimationFrame"],
4189 n = window[i[s] + "CancelAnimationFrame"] || window[i[s] + "CancelRequestAnimationFrame"];
4190 e ? (Mt.requestFrame = e.bind(window),
4191 Mt.cancelFrame = n.bind(window)) : (Mt.requestFrame = (t = Date.now(),
4192 function(e) {
4193 window.setTimeout(function() {
4194 e(Date.now() - t)
4195 }, 1e3 * Mt._singleFrame)
4196 }
4197 ),
4198 Mt.cancelFrame = function(t) {
4199 return clearTimeout(t),
4200 null
4201 }
4202 ),
4203 Mt._setup = !0,
4204 Mt._startTime = Mt._lastTime = Date.now()
4205 },
4206 add: function(t, e) {
4207 Mt._renders.push({
4208 callback: t,
4209 paused: !1 == !e || !1
4210 }),
4211 !1 == !e && Mt.start()
4212 },
4213 remove: function(t) {
4214 for (var e = Mt._renders.length; --e > -1; )
4215 Mt._renders[e].callback === t && (Mt._renders[e].paused = !0,
4216 Mt._renders.splice(e, 1))
4217 },
4218 start: function(t) {
4219 if (!1 === Mt._setup && Mt._init(),
4220 t)
4221 for (var e = Mt._renders.length; --e > -1; )
4222 Mt._renders[e].callback === t && (Mt._renders[e].paused = !1);
4223 !0 !== Mt._running && (Mt._paused = !1,
4224 Mt._running = !0,
4225 Mt._af = Mt.requestFrame(Mt._update))
4226 },
4227 stop: function(t) {
4228 if (t)
4229 for (var e = Mt._renders.length; --e > -1; )
4230 Mt._renders[e].callback === t && (Mt._renders[e].paused = !0);
4231 else
4232 !1 !== Mt._running && (Mt._af = Mt.cancelFrame(Mt._af),
4233 Mt._paused = !0,
4234 Mt._running = !1)
4235 },
4236 elapsed: function() {
4237 return Date.now() - Mt._startTime
4238 },
4239 fps: function(t) {
4240 return arguments.length ? (Mt._fps = t,
4241 Mt._singleFrame = 1 / (Mt._fps || 60),
4242 Mt._adjustedLag = 2 * Mt._singleFrame,
4243 Mt._nextTime = Mt.time + Mt._singleFrame,
4244 Mt._fps) : Mt._fps
4245 },
4246 isRunning: function() {
4247 return Mt._running
4248 },
4249 _update: function() {
4250 if (!Mt._paused && (Mt._elapsed = Date.now() - Mt._lastTime,
4251 Mt._tick = !1,
4252 Mt._elapsed > Mt._lagThreshold && (Mt._startTime += Mt._elapsed - Mt._adjustedLag),
4253 Mt._lastTime += Mt._elapsed,
4254 Mt.time = (Mt._lastTime - Mt._startTime) / 1e3,
4255 Mt._difference = Mt.time - Mt._nextTime,
4256 Mt._difference > 0 && (Mt.frame++,
4257 Mt._nextTime += Mt._difference + (Mt._difference >= Mt._singleFrame ? Mt._singleFrame / 4 : Mt._singleFrame - Mt._difference),
4258 Mt._tick = !0),
4259 Mt._af = Mt.requestFrame(Mt._update),
4260 !0 === Mt._tick && Mt._renders.length > 0))
4261 for (var t = Mt._renders.length; --t > -1; )
4262 Mt._renders[t] && !1 === Mt._renders[t].paused && Mt._renders[t].callback(Mt.time)
4263 }
4264 }
4265 , Rt = {
4266 array: function(t) {
4267 if (0 === t.length)
4268 return t;
4269 for (var e, n, i = t.length; --i > -1; )
4270 n = Math.floor(Math.random() * (i + 1)),
4271 e = t[i],
4272 t[i] = t[n],
4273 t[n] = e;
4274 return t
4275 }
4276 };
4277 function Bt(t, e) {
4278 var n = t.substr(t.lastIndexOf(".") + 1, t.length);
4279 if (e || (e = {}),
4280 e.fallback && "svg" === n && "ie" === C.Browser.type && C.Browser.version <= 11 && (t = t.substr(0, t.indexOf(n)) + e.fallback),
4281 e.prefix && (t = e.prefix + "/" + t),
4282 $.assethost && t.indexOf(S.assetDomain) >= 0)
4283 t = $.assethost + t.replace(S.assetDomain, "");
4284 else if ($.imghost && t.indexOf("imgs") >= 0) {
4285 var i = t.indexOf(".ai") >= 0 ? t.indexOf(".ai") + 3 : t.indexOf(".com") + 4;
4286 t = $.imghost + t.substr(i, t.length)
4287 }
4288 this.attribs = {
4289 crossOrigin: e.crossOrigin || null
4290 },
4291 this.src = t,
4292 this.ext = n,
4293 this.width = 0,
4294 this.height = 0,
4295 this.aspect = 0,
4296 this.loaded = !1,
4297 this.error = !1,
4298 this.element = null,
4299 this.cb = {
4300 load: [],
4301 error: []
4302 }
4303 }
4304 function zt(t, e, n) {
4305 for (var i = t[e], s = i.length, r = null; --s > -1; )
4306 r = i[s],
4307 i.splice(s, 1),
4308 r(n);
4309 "error" === e ? t.load = [] : t.error = []
4310 }
4311 function Dt(t, e) {
4312 if (e || (e = {}),
4313 e.prefix && (t = e.prefix + "/" + t),
4314 $.assethost && t.indexOf(S.assetDomain) >= 0)
4315 t = $.assethost + t.replace(S.assetDomain, "");
4316 else if ($.imghost && t.indexOf("imgs") >= 0) {
4317 var n = t.indexOf(".ai") >= 0 ? t.indexOf(".ai") + 3 : t.indexOf(".com") + 4;
4318 t = $.imghost + t.substr(n, t.length)
4319 }
4320 this.attribs = {
4321 defer: e.defer || null,
4322 async: e.async || null,
4323 crossOrigin: e.crossOrigin || null
4324 },
4325 this.src = t,
4326 this.loaded = !1,
4327 this.error = !1,
4328 this.element = null,
4329 this.cb = {
4330 load: [],
4331 error: []
4332 }
4333 }
4334 function Ft(t, e, n) {
4335 for (var i = t[e], s = i.length, r = null; --s > -1; )
4336 r = i[s],
4337 i.splice(s, 1),
4338 r(n);
4339 "error" === e ? t.load = [] : t.error = []
4340 }
4341 Bt.prototype.load = function() {
4342 var t = this
4343 , e = this.attribs
4344 , n = this.src;
4345 return new Promise(function(i, s) {
4346 var r = new Image;
4347 t.element = r,
4348 e.crossOrigin && (r.crossOrigin = e.crossOrigin),
4349 r.onerror = function(e) {
4350 t.error = !0,
4351 r.onload = r.onerror = null;
4352 var i = (e.message || "Loading Error") + ": " + n;
4353 zt(t.cb, "error", i),
4354 s(i)
4355 }
4356 ,
4357 r.onload = function() {
4358 t.loaded || (t.width = r.width,
4359 t.height = r.height,
4360 t.aspect = r.width / r.height,
4361 t.loaded = !0,
4362 r.onload = r.onerror = null,
4363 zt(t.cb, "load", t),
4364 i(t))
4365 }
4366 ,
4367 r.src = n,
4368 r.complete && r.onload()
4369 }
4370 )
4371 }
4372 ,
4373 Bt.prototype.onload = function(t) {
4374 this.error || (this.loaded ? t(this) : this.cb.load.push(t))
4375 }
4376 ,
4377 Bt.prototype.onerror = function(t) {
4378 this.loaded && !this.error || (this.error ? t(this) : this.cb.error.push(t))
4379 }
4380 ,
4381 Dt.prototype.load = function() {
4382 var t = this
4383 , e = this.attribs
4384 , n = this.src;
4385 return new Promise(function(i, s) {
4386 var r = document.createElement("script");
4387 t.element = r,
4388 r.onerror = function(e) {
4389 t.error = !0,
4390 r.onload = r.onreadystatechange = r.onerror = null;
4391 var i = (e.message || "Loading Error") + ": " + n;
4392 Ft(t.cb, "error", i),
4393 s(i)
4394 }
4395 ,
4396 r.onload = r.onreadystatechange = function() {
4397 this.loaded || r.readyState && "loaded" !== r.readyState && "complete" !== r.readyState || (t.loaded = !0,
4398 r.onload = r.onreadystatechange = r.onerror = null,
4399 document.body.removeChild(r),
4400 Ft(t.cb, "load", t),
4401 i(t))
4402 }
4403 ,
4404 r.type = "text/javascript",
4405 r.src = n,
4406 e.crossOrigin && (r.crossorigin = e.crossOrigin),
4407 e.async && (r.async = !0),
4408 e.defer && (r.defer = !0),
4409 document.body.appendChild(r),
4410 r.complete && r.onload()
4411 }
4412 )
4413 }
4414 ,
4415 Dt.prototype.onload = function(t) {
4416 this.error || (this.loaded ? t(this) : this.cb.load.push(t))
4417 }
4418 ,
4419 Dt.prototype.onerror = function(t) {
4420 this.loaded && !this.error || (this.error ? t(this) : this.cb.error.push(t))
4421 }
4422 ;
4423 var Nt = []
4424 , Wt = {
4425 add: function(t, e) {
4426 var n = function(t) {
4427 if (t.toLowerCase().match(/\.(?:jpg|gif|png|jpeg|svg)$/g))
4428 return "image";
4429 if (t.toLowerCase().match(/\.(?:js)$/g))
4430 return "script"
4431 }(t);
4432 return "image" === n ? Wt.image(t, e) : "script" === n ? Wt.script(t, e) : void 0
4433 },
4434 batch: function(t, e) {
4435 for (var n = [], i = -1; ++i < t.length; ) {
4436 var s = t[i];
4437 n.push(Wt.add(s, e))
4438 }
4439 return Promise.all(n)["finally"](function() {
4440 n = []
4441 })
4442 },
4443 image: function(t, e) {
4444 var n = new Bt(t,e);
4445 return Nt.push(n),
4446 n.load()
4447 },
4448 script: function(t, e) {
4449 var n = new Dt(t,e);
4450 return Nt.push(n),
4451 n.load()
4452 },
4453 retrieve: function(t) {
4454 return new Promise(function(e, n) {
4455 for (var i = Nt.length, s = !1, r = null; --i > -1 && !s; )
4456 s = (r = Nt[i]).src.indexOf(t) >= 0 && r;
4457 if (!s)
4458 return e(null);
4459 r.onload(e),
4460 r.onerror(n)
4461 }
4462 )
4463 }
4464 };
4465 var Ut = {
4466 decode: function(t) {
4467 try {
4468 var e = t.split(".");
4469 return {
4470 header: JSON.parse(atob(e[0])),
4471 payload: JSON.parse(atob(e[1])),
4472 signature: atob(e[2].replace(/_/g, "/").replace(/-/g, "+")),
4473 raw: {
4474 header: e[0],
4475 payload: e[1],
4476 signature: e[2]
4477 }
4478 }
4479 } catch (An) {
4480 throw new Error("Token is invalid.")
4481 }
4482 },
4483 checkExpiration: function(t) {
4484 if (new Date(1e3 * t) <= new Date(Date.now()))
4485 throw new Error("Token is expired.");
4486 return !0
4487 }
4488 }
4489 , Ht = {
4490 __proto__: null,
4491 Canvas: kt,
4492 Geometry: Lt,
4493 Render: Mt,
4494 Math: St,
4495 Color: jt,
4496 Shuffle: Rt,
4497 Loader: Wt,
4498 JWT: Ut
4499 }
4500 , qt = function() {
4501 window.Raven && Raven.config("https://0f73e9316e6b4aee9e62a74c820604e0@sentry.io/1198795", {
4502 autoBreadcrumbs: {
4503 xhr: !0,
4504 dom: !0,
4505 sentry: !0
4506 },
4507 tags: {
4508 "site-host": S.host,
4509 "site-key": S.sitekey,
4510 "endpoint-url": $.endpoint,
4511 "asset-url": S.assetUrl
4512 }
4513 }),
4514 window.Raven && Raven.setUserContext({
4515 "Browser-Agent": C.Browser.agent,
4516 "Browser-Type": C.Browser.type,
4517 "Browser-Version": C.Browser.version,
4518 "System-OS": C.System.os,
4519 "System-Version": C.System.version,
4520 "Is-Mobile": C.System.mobile
4521 }),
4522 M("challenge_internal", "setup", "info"),
4523 window.onerror = function(t, e, n, i, s) {
4524 M(t, "global", "debug", {
4525 name: s.name || "Error",
4526 url: e,
4527 line: n,
4528 column: i,
4529 stack: s.stack || ""
4530 }),
4531 I(t, "global", "error")
4532 }
4533 };
4534 function Jt(t) {
4535 if (null === t)
4536 return "";
4537 var e = [];
4538 return function n(t, e) {
4539 var i, s;
4540 if ("object" == typeof t)
4541 for (s in t)
4542 !0 === Xt(i = t[s]) ? n(i, e) : e[e.length] = Vt(s, i);
4543 else if (!0 === Array.isArray(t))
4544 for (var r = 0; r < t.length; r++)
4545 !0 === Xt(i = t[r]) ? n(t, e) : e[e.length] = Vt(s, i);
4546 else
4547 e[e.length] = Vt(t)
4548 }(t, e),
4549 e.join("&")
4550 }
4551 function Xt(t) {
4552 return !0 === Array.isArray(t) || "object" == typeof t
4553 }
4554 function Vt(t, e) {
4555 return encodeURIComponent(t) + "=" + encodeURIComponent(null === e ? "" : e)
4556 }
4557 var Kt = {
4558 400: {
4559 en: "Rate limited or network error. Please retry.",
4560 zh: "速率限制或网络错误。请重试。",
4561 ru: "Скорость ограничена или ошибка сети. Пожалуйста, повторите.",
4562 id: "Nilai terbatas atau kesalahan jaringan. Coba lagi",
4563 ar: "معدل محدود أو خطأ في الشبكة. الرجاء اعادة المحاولة.",
4564 de: "Rate begrenzt oder Netzwerkfehler. Bitte erneut versuchen."
4565 },
4566 429: {
4567 en: "Your computer or network has sent too many requests.",
4568 zh: "您的计算机或网络发送了太多请求。",
4569 ru: "Ваш компьютер или сеть отправили слишком много запросов.",
4570 id: "Komputer atau jaringan Anda telah mengirim terlalu banyak permintaan.",
4571 ar: "أرسل الكمبيوتر أو الشبكة الكثير من الطلبات.",
4572 de: "Ihr Computer oder Netzwerk hat zu viele Anfragen gesendet."
4573 },
4574 500: {
4575 en: "Cannot contact hCaptcha. Check your connection and try again.",
4576 zh: "无法联系hCaptcha。请检查您的网络后再试一次。",
4577 ru: "Невозможно связаться с hCaptcha. Проверьте соединение и попробуйте снова.",
4578 id: "Tidak dapat menghubungi hCaptcha. Periksa koneksi Anda dan coba lagi.",
4579 ar: "لا يمكن الاتصال hCaptcha. تحقق من اتصالك وحاول مرة أخرى.",
4580 de: "HCaptcha kann nicht kontaktiert werden. Überprüfen Sie Ihre Verbindung und versuchen Sie es erneut."
4581 }
4582 }
4583 , Yt = {
4584 getText: function(t) {
4585 try {
4586 return U.getBestTrans(Kt[t])
4587 } catch (An) {
4588 return !1
4589 }
4590 }
4591 };
4592 function Gt(t, e, n) {
4593 var i = !1
4594 , s = null
4595 , r = t.toUpperCase()
4596 , o = n && n.responseType || "string"
4597 , a = n && n.dataType || null
4598 , l = new XMLHttpRequest
4599 , h = e;
4600 return n && n.withCredentials && "undefined" != typeof XDomainRequest && "withCredentials"in l == !1 && (i = !0,
4601 l = new XDomainRequest),
4602 n && n.data && (s = n.data,
4603 "json" === a && "object" == typeof n.data && (s = JSON.stringify(s)),
4604 "query" === a && (s = Jt(s))),
4605 new Promise(function(t, a) {
4606 var c, u = function(e) {
4607 return function(n) {
4608 var s = l.response || l.responseText
4609 , r = l.statusText || ""
4610 , c = l.status
4611 , u = l.readyState;
4612 if (4 === u || i) {
4613 if ("error" === e || c >= 400 && c <= 511)
4614 return void a({
4615 event: "network-error",
4616 endpoint: h,
4617 state: u,
4618 status: c,
4619 message: Yt.getText(c || 400) || r
4620 });
4621 "json" === o && s && (s = JSON.parse(s)),
4622 t({
4623 state: u,
4624 status: c,
4625 body: s,
4626 message: r
4627 })
4628 }
4629 }
4630 };
4631 if (l.onload = u("complete"),
4632 l.onerror = l.ontimeout = u("error"),
4633 l.open(r, e),
4634 !1 === i && (l.withCredentials = n && n.withCredentials || !1),
4635 n && n.headers && !1 === i)
4636 for (var d in n.headers)
4637 c = n.headers[d],
4638 l.setRequestHeader(d, c);
4639 setTimeout(function() {
4640 l.send(s || null)
4641 }, 0)
4642 }
4643 )
4644 }
4645 var Qt = function(t, e) {
4646 if ("object" == typeof t && e === undefined && (t = (e = t).url),
4647 null === t)
4648 throw new Error("Url missing");
4649 return new Gt("POST",t,e)
4650 }
4651 , Zt = null
4652 , te = null
4653 , ee = null
4654 , ne = null
4655 , ie = {}
4656 , se = null
4657 , re = {
4658 logAction: function(t) {
4659 se = t
4660 },
4661 getTaskData: function(t, e) {
4662 t === undefined && (t = {});
4663 var n = {
4664 sitekey: S.sitekey,
4665 host: S.host,
4666 hl: U.getLocale()
4667 };
4668 return null !== se && (n.action = se,
4669 se = null),
4670 null !== ne && (n.extraData = JSON.stringify(ne),
4671 ne = null),
4672 t && (n.motionData = JSON.stringify(t)),
4673 null !== Zt && (te = Zt,
4674 n.old_ekey = Zt),
4675 e && (n.n = e.solved || null,
4676 n.c = e.spec ? JSON.stringify(e.spec) : null),
4677 new Promise(function(t, e) {
4678 try {
4679 Qt({
4680 url: $.endpoint + "/getcaptcha",
4681 data: n,
4682 dataType: "query",
4683 responseType: "json",
4684 withCredentials: !0,
4685 headers: {
4686 Accept: "application/json",
4687 "Content-type": "application/x-www-form-urlencoded"
4688 }
4689 }).then(function(e) {
4690 var n = e.body || null;
4691 if (!n)
4692 throw new Error("Missing response body.");
4693 !1 !== n.success ? (re.setData(n),
4694 t(n)) : t(n)
4695 })["catch"](e)
4696 } catch (An) {
4697 e(An)
4698 }
4699 }
4700 )
4701 },
4702 loadBundle: function(t) {
4703 return new Promise(function(e, n) {
4704 ie[t.request_type] ? e(ie[t.request_type]) : Wt.script(t.challenge_uri).then(function() {
4705 ie[t.request_type] = window[t.request_type],
4706 e(ie[t.request_type])
4707 })["catch"](function(t) {
4708 n({
4709 event: "bundle-error",
4710 message: "Failed to get challenge bundle.",
4711 reason: t
4712 })
4713 })
4714 }
4715 )
4716 },
4717 checkAnswers: function(t, e, n) {
4718 var i = {
4719 job_mode: ne.request_type,
4720 answers: t,
4721 serverdomain: S.host,
4722 sitekey: S.sitekey,
4723 motionData: JSON.stringify(e)
4724 };
4725 return n && (i.n = n.solved,
4726 i.c = JSON.stringify(n.spec)),
4727 new Promise(function(t, e) {
4728 try {
4729 Qt({
4730 url: $.endpoint + "/checkcaptcha/" + ne.key,
4731 data: i,
4732 dataType: "json",
4733 responseType: "json",
4734 withCredentials: !0,
4735 headers: {
4736 "Content-type": "application/json;charset=UTF-8"
4737 }
4738 }).then(function(e) {
4739 var n = e.body || null;
4740 if (!n)
4741 throw new Error("Missing response body.");
4742 if (!1 === n.success) {
4743 var i = (n["error-codes"] || [""]).join(", ");
4744 throw new Error(i)
4745 }
4746 t(n)
4747 })["catch"](e)
4748 } catch (An) {
4749 e(An)
4750 }
4751 }
4752 )
4753 },
4754 reportIssue: function(t, e, n) {
4755 var i = {
4756 taskdata: ne,
4757 on_url: S.url,
4758 report_category: t,
4759 sid: ee
4760 };
4761 if (e && (i.user_comments = e),
4762 te && (i.last_ekey = te),
4763 n && "fallback" !== ne.request_type) {
4764 for (var s = ne.tasklist, r = null, o = -1; ++o < s.length && !r; )
4765 s[o].task_key === n && (r = s[o]);
4766 i.taskdata.tasklist = [r]
4767 }
4768 return Qt({
4769 url: $.reportapi + "/bug-report",
4770 data: i,
4771 dataType: "json",
4772 responseType: "json",
4773 withCredentials: !0,
4774 headers: {
4775 "Content-type": "application/json;charset=UTF-8"
4776 }
4777 })
4778 },
4779 getEKey: function() {
4780 return Zt
4781 },
4782 setData: function(t) {
4783 ne = t,
4784 Zt = t.key,
4785 ee || (ee = Zt)
4786 },
4787 getData: function() {
4788 return ne
4789 }
4790 };
4791 function oe() {
4792 z.self(this, D, "button-refresh"),
4793 this.image = null,
4794 this.locked = !1,
4795 this.mobile = !1,
4796 this.$image = this.createElement(".refresh-image"),
4797 this.setAttribute("tabindex", 0),
4798 this.setAttribute("role", "button"),
4799 this.setAttribute("aria-label", "Refresh Challenge"),
4800 this.setLabel.call(this),
4801 this.onHover = this.onHover.bind(this),
4802 this.onSelect = this.onSelect.bind(this),
4803 this.addEventListener("up", this.onSelect),
4804 this.addEventListener("enter", this.onSelect),
4805 !1 === C.System.mobile && (this.addEventListener("over", this.onHover),
4806 this.addEventListener("out", this.onHover))
4807 }
4808 function ae(t) {
4809 z.self(this, D, "button-submit"),
4810 this.state = {
4811 text: "Submit",
4812 type: "submit",
4813 label: "Submit Answers",
4814 locked: !1
4815 },
4816 this.copy = this.createElement(".submit-text"),
4817 this.background = this.createElement(".submit-background"),
4818 this.setAttribute("tabindex", 0),
4819 this.setAttribute("role", "button"),
4820 this.setCopy.call(this),
4821 this.onHover = this.onHover.bind(this),
4822 this.onSelect = this.onSelect.bind(this),
4823 this.addEventListener(!0 === S.pingdom ? "click" : "up", this.onSelect),
4824 this.addEventListener("enter", this.onSelect),
4825 !1 === C.System.mobile && (this.addEventListener("over", this.onHover),
4826 this.addEventListener("out", this.onHover))
4827 }
4828 function le() {
4829 z.self(this, D, "button-help"),
4830 this.image = null,
4831 this.locked = !1,
4832 this.mobile = !1,
4833 this.selected = !1,
4834 this.$image = this.createElement(".help-image"),
4835 this.setAttribute("tabindex", 0),
4836 this.setAttribute("role", "button"),
4837 this.setAttribute("aria-expanded", !1),
4838 this.setAttribute("aria-haspopup", !0),
4839 this.setLabel.call(this),
4840 this.onHover = this.onHover.bind(this),
4841 this.onSelect = this.onSelect.bind(this),
4842 this.addEventListener("up", this.onSelect),
4843 this.addEventListener("enter", this.onSelect),
4844 !1 === C.System.mobile && (this.addEventListener("over", this.onHover),
4845 this.addEventListener("out", this.onHover))
4846 }
4847 function he(t) {
4848 z.self(this, D, "hcaptcha-logo"),
4849 this.mobile = !1,
4850 this.charity = t,
4851 this.image = {
4852 color: null,
4853 grey: null
4854 },
4855 this.color = this.createElement(".icon-color"),
4856 this.grey = this.createElement(".icon-grey"),
4857 this.color.css({
4858 opacity: 0
4859 }),
4860 "ie" === C.Browser.type && 8 === C.Browser.version && (this.color.css({
4861 opacity: 1
4862 }),
4863 this.grey.css({
4864 display: "none"
4865 }))
4866 }
4867 function ce(t) {
4868 z.self(this, D, "logo-text"),
4869 this.mobile = !1,
4870 this.charity = t,
4871 this.image = null,
4872 this.text = this.createElement(".text-img")
4873 }
4874 function ue(t) {
4875 z.self(this, D, "hcaptcha-logo"),
4876 this.mobile = !1,
4877 this.link = "https://www.hcaptcha.com/what-is-hcaptcha-about",
4878 this.config = t || {},
4879 this.config.charity = this.config.charity !== undefined && this.config.charity,
4880 this.icon = this.initComponent(he, this.config.charity),
4881 this.text = this.initComponent(ce, this.config.charity),
4882 this.css({
4883 opacity: C.System.mobile ? 1 : .3
4884 }),
4885 this.onHover = this.onHover.bind(this),
4886 this.onClick = this.onClick.bind(this),
4887 this.addEventListener(!0 === S.pingdom ? "click" : "up", this.onClick),
4888 !1 === C.System.mobile ? (this.addEventListener("over", this.onHover),
4889 this.addEventListener("out", this.onHover)) : this.icon.hover(!0)
4890 }
4891 function de() {
4892 z.self(this, D, "display-error"),
4893 this.visible = !1,
4894 this.copy = this.createElement(".error-text"),
4895 this.appendElement(this.copy),
4896 this.setCopy.call(this),
4897 this.css({
4898 opacity: 0
4899 })
4900 }
4901 function pe() {
4902 z.self(this, D, "Crumb"),
4903 this.$bg = this.createElement(".crumb-bg")
4904 }
4905 function fe() {
4906 z.self(this, D, "challenge-breadcrumbs"),
4907 this.width = 0,
4908 this.height = 0,
4909 this.crumbs = [],
4910 this.$wrapper = this.createElement(".crumbs-wrapper")
4911 }
4912 function me(t) {
4913 z.self(this, D, "header"),
4914 this.config = {
4915 text: t
4916 },
4917 this.$title = this.createElement(".header-title"),
4918 this.$underline = this.createElement(".header-underline")
4919 }
4920 function ge(t) {
4921 z.self(this, D, "button-" + t.value),
4922 this.state = {
4923 visible: !0,
4924 locked: !1,
4925 value: t.value,
4926 text: t.text,
4927 lockText: null,
4928 desc: t.desc,
4929 color: t.color
4930 },
4931 this.$copy = this.createElement(".send-text"),
4932 this.onHover = this.onHover.bind(this),
4933 this.onSelect = this.onSelect.bind(this),
4934 this.$copy.setAttribute("tabindex", 0),
4935 this.$copy.setAttribute("role", "button"),
4936 this.$copy.addEventListener("up", this.onSelect),
4937 this.$copy.addEventListener("enter", this.onSelect),
4938 !1 === C.System.mobile && (this.$copy.addEventListener("over", this.onHover),
4939 this.$copy.addEventListener("out", this.onHover))
4940 }
4941 function ye() {
4942 z.self(this, D, "instructions"),
4943 this.$info = this.createElement("span"),
4944 this.$link = this.createElement("a", ".link"),
4945 this.setAttribute("tabindex", "0"),
4946 this.$link.setAttribute("tabindex", "0"),
4947 this.$link.setAttribute("role", "link"),
4948 this.setCopy.call(this),
4949 this.$link.setAttribute("href", "https://hcaptcha.com"),
4950 this.$link.setAttribute("target", "_blank");
4951 this.$link.addEventListener("enter", function(t) {
4952 window.open("https://hcaptcha.com")
4953 })
4954 }
4955 function ve() {
4956 z.self(this, D, "feedback");
4957 var t = this;
4958 this.$info = this.createElement("span"),
4959 this.$link = this.createElement(".feedback-link"),
4960 this.setAttribute("tabindex", "0"),
4961 this.$link.setAttribute("tabindex", "0"),
4962 this.$link.setAttribute("role", "link"),
4963 this.setCopy.call(this);
4964 var e = function(e) {
4965 t.emit("click")
4966 };
4967 if (this.$link.addEventListener("enter", e),
4968 this.$link.addEventListener("down", e),
4969 !1 === C.System.mobile) {
4970 var n = function(e) {
4971 t.$link.css({
4972 color: "over" === e.action ? O.hoverOn : O.hoverOff
4973 })
4974 };
4975 this.$link.addEventListener("over", n),
4976 this.$link.addEventListener("out", n)
4977 }
4978 }
4979 function be() {
4980 z.self(this, D, "accessibility"),
4981 this.$link = this.createElement("a", ".link"),
4982 this.$link.setAttribute("tabindex", "0"),
4983 this.$link.setAttribute("role", "link"),
4984 this.$link.setAttribute("href", "https://hcaptcha.com/accessibility"),
4985 this.$link.setAttribute("target", "_blank"),
4986 this.setCopy.call(this);
4987 this.$link.addEventListener("enter", function(t) {
4988 window.open("https://hcaptcha.com/accessibility")
4989 })
4990 }
4991 function we() {
4992 z.self(this, D, "info-view");
4993 var t = this;
4994 this.$center = this.createElement(".center"),
4995 this.setAttribute("role", "dialog"),
4996 this.setAttribute("tabindex", "0"),
4997 this.header = this.initComponent(me, "Information"),
4998 this.instructions = this.initComponent(ye, null, this.$center),
4999 this.feedback = this.initComponent(ve, null, this.$center),
5000 this.accessibility = this.initComponent(be, null, this.$center),
5001 this.close = this.initComponent(ge, {
5002 text: "Close",
5003 value: "close",
5004 desc: "Close Modal",
5005 color: O.link
5006 }, this.$center),
5007 this.feedback.on("click", function() {
5008 t.emit("change", "feedback")
5009 }),
5010 this.close.on("click", function() {
5011 t.emit("close")
5012 })
5013 }
5014 function ke(t) {
5015 z.self(this, D, "checkmark");
5016 var e = this;
5017 this.state = {
5018 locked: !1,
5019 selected: !1,
5020 text: t.text,
5021 value: t.value
5022 },
5023 this.$wrapper = this.createElement(".wrapper"),
5024 this.$input = this.$wrapper.createElement(".checkbox"),
5025 this.$input.bg = this.$input.createElement(".checkbox-bg"),
5026 this.$input.check = this.$input.createElement(".checkbox-mark"),
5027 this.$input.check.css({
5028 opacity: 0
5029 }),
5030 this.$text = this.$wrapper.createElement(".checkbox-text"),
5031 this.$input.setAttribute("tabindex", "0"),
5032 this.$input.setAttribute("role", "button"),
5033 this.$input.setAttribute("aria-pressed", !1);
5034 var n = function(t) {
5035 e.emit("select", e)
5036 };
5037 this.$wrapper.addEventListener("up", n),
5038 this.$wrapper.addEventListener("enter", n)
5039 }
5040 function xe(t) {
5041 z.self(this, D, "options"),
5042 this.state = {
5043 visible: !0
5044 },
5045 this.handeSelect = this.handeSelect.bind(this),
5046 this.$wrapper = this.createElement(".column-wrapper"),
5047 this.$left = this.$wrapper.createElement(".column-left"),
5048 this.$right = this.$wrapper.createElement(".column-right"),
5049 this.options = [];
5050 for (var e = null, n = null, i = 0; i < t.length; i++)
5051 n = i >= t.length / 2 ? this.$right : this.$left,
5052 (e = this.initComponent(ke, t[i], n)).setCopy(),
5053 e.on("select", this.handeSelect),
5054 this.options.push(e)
5055 }
5056 function _e(t) {
5057 z.self(this, D, "comment");
5058 var e = this;
5059 this.state = {
5060 visible: !1,
5061 placeholder: t
5062 },
5063 this.$textarea = this.createElement("textarea", ".comment-textarea"),
5064 this.setPlaceholder.call(this),
5065 this.$textarea.addEventListener("input", function(t) {
5066 e.emit("change", t.target.value)
5067 })
5068 }
5069 z.proto(oe, D),
5070 oe.prototype.load = function() {
5071 var t = this;
5072 Wt.image("https://assets.hcaptcha.com/captcha/v1/baea443/static/images/refresh.png").then(function(e) {
5073 t.image = e,
5074 t.style.call(t, t.mobile)
5075 })["catch"](function() {
5076 M("refresh icon failed to load", "image", "info")
5077 })
5078 }
5079 ,
5080 oe.prototype.style = function(t) {
5081 var e = t ? 21 : 24;
5082 this.css({
5083 width: e,
5084 height: e,
5085 cursor: "pointer",
5086 display: "inline-block",
5087 opacity: this.locked ? .25 : .5
5088 }),
5089 null !== this.image && this.$image.backgroundImage(this.image, e, e, {
5090 cover: !0
5091 }),
5092 this.mobile = t,
5093 this.height = e,
5094 this.width = e
5095 }
5096 ,
5097 oe.prototype.onHover = function(t) {
5098 null !== this.emit && !0 !== this.locked && (this.emit("hover", t),
5099 "over" === t.action ? this.css({
5100 opacity: 1
5101 }) : this.css({
5102 opacity: .5
5103 }))
5104 }
5105 ,
5106 oe.prototype.onSelect = function(t) {
5107 null !== this.emit && !0 !== this.locked && (this.selected = !this.selected,
5108 this.emit("click", t))
5109 }
5110 ,
5111 oe.prototype.lock = function(t) {
5112 this.locked = t,
5113 this.css({
5114 opacity: t ? .25 : .5
5115 })
5116 }
5117 ,
5118 oe.prototype.setLabel = function(t) {
5119 var e = U.translate("Refresh Challenge");
5120 this.setAttribute("aria-label", e)
5121 }
5122 ,
5123 z.proto(ae, D),
5124 ae.prototype.style = function(t) {
5125 var e = t ? 30 : 35;
5126 this.css({
5127 height: e,
5128 cursor: "pointer",
5129 minWidth: t ? 50 : 70,
5130 padding: "0px 5px"
5131 }),
5132 this.copy.css({
5133 color: O.white,
5134 width: "100%",
5135 height: "100%",
5136 textAlign: "center",
5137 position: "relative",
5138 pointerEvents: "none",
5139 lineHeight: e,
5140 fontSize: t ? 12 : 14,
5141 fontWeight: 700,
5142 zIndex: 5
5143 }),
5144 this.background.css({
5145 width: "100%",
5146 height: "100%",
5147 position: "absolute",
5148 top: 0,
5149 left: 0,
5150 zIndex: 0,
5151 borderRadius: 4
5152 }),
5153 this.height = e
5154 }
5155 ,
5156 ae.prototype.action = function(t) {
5157 var e = "Submit Answers"
5158 , n = t.charAt(0).toUpperCase() + t.slice(1);
5159 "check" === t || "next" === t ? (this.background.css({
5160 backgroundColor: O.hoverOff
5161 }),
5162 "next" === t && (e = "Next Challenge")) : "report" === t ? (this.background.css({
5163 backgroundColor: O.hoverOff
5164 }),
5165 e = "Report Images") : (this.background.css({
5166 backgroundColor: "#b3b3b3"
5167 }),
5168 e = "Skip Challenge",
5169 t = "skip"),
5170 this.state.type = t,
5171 this.state.text = n,
5172 this.state.label = e,
5173 this.setCopy.call(this)
5174 }
5175 ,
5176 ae.prototype.onHover = function(t) {
5177 if (null !== this.emit && !0 !== this.state.locked) {
5178 var e = "check" === this.state.type || "next" === this.state.type;
5179 "over" === t.action ? this.background.css({
5180 backgroundColor: e ? O.hoverOn : "#7d7c7c"
5181 }) : this.background.css({
5182 backgroundColor: e ? O.hoverOff : "#b3b3b3"
5183 })
5184 }
5185 }
5186 ,
5187 ae.prototype.onSelect = function(t) {
5188 null !== this.emit && !0 !== this.state.locked && this.emit("click", t)
5189 }
5190 ,
5191 ae.prototype.lock = function(t) {
5192 this.state.locked = t,
5193 this.css({
5194 cursor: t ? "default" : "pointer"
5195 }),
5196 this.background.css({
5197 backgroundColor: t ? "#e6e6e6" : O.hoverOff
5198 })
5199 }
5200 ,
5201 ae.prototype.setCopy = function() {
5202 var t = U.translate(this.state.text)
5203 , e = U.translate(this.state.label);
5204 this.copy.text(t),
5205 this.setAttribute("aria-label", e)
5206 }
5207 ,
5208 z.proto(le, D),
5209 le.prototype.load = function() {
5210 var t = this;
5211 Wt.image("https://assets.hcaptcha.com/captcha/v1/baea443/static/images/info.png").then(function(e) {
5212 t.image = e,
5213 t.style.call(t, t.mobile)
5214 })["catch"](function() {
5215 M("info icon failed to load", "image", "info")
5216 })
5217 }
5218 ,
5219 le.prototype.style = function(t) {
5220 var e = t ? 22 : 25;
5221 this.css({
5222 width: e,
5223 height: e,
5224 cursor: "pointer",
5225 display: "inline-block",
5226 opacity: this.locked ? .25 : .5
5227 }),
5228 null !== this.image && this.$image.backgroundImage(this.image, e, e, {
5229 cover: !0
5230 }),
5231 this.mobile = t,
5232 this.height = e,
5233 this.width = e
5234 }
5235 ,
5236 le.prototype.onHover = function(t) {
5237 null !== this.emit && !0 !== this.locked && (this.emit("hover", t),
5238 "over" === t.action ? this.css({
5239 opacity: 1
5240 }) : this.css({
5241 opacity: .5
5242 }))
5243 }
5244 ,
5245 le.prototype.onSelect = function(t) {
5246 null !== this.emit && !0 !== this.locked && (this.selected = !this.selected,
5247 this.setAttribute("aria-expanded", this.selected),
5248 this.emit("click", this.selected))
5249 }
5250 ,
5251 le.prototype.reset = function(t) {
5252 this.selected = !1,
5253 this.setAttribute("aria-expanded", !1)
5254 }
5255 ,
5256 le.prototype.setLabel = function(t) {
5257 var e = U.translate("Get information about hCaptcha and accessibility options.");
5258 this.setAttribute("aria-label", e)
5259 }
5260 ,
5261 z.proto(he, D),
5262 he.prototype.load = function() {
5263 var t = this
5264 , e = this.charity ? "https://assets.hcaptcha.com/captcha/v1/baea443/static/images/logo-charity_color.png" : "https://assets.hcaptcha.com/captcha/v1/baea443/static/images/logo_color.png"
5265 , n = this.charity ? "https://assets.hcaptcha.com/captcha/v1/baea443/static/images/logo-charity_greyscale.png" : "https://assets.hcaptcha.com/captcha/v1/baea443/static/images/logo_greyscale.png";
5266 Wt.batch([e, n]).then(function(e) {
5267 t.image.color = e[0],
5268 t.image.grey = e[1],
5269 t.style.call(t, t.mobile)
5270 })["catch"](function() {
5271 M("info icon failed to load", "image", "info")
5272 })
5273 }
5274 ,
5275 he.prototype.style = function(t) {
5276 var e = t ? 25 : 30;
5277 this.css({
5278 width: e,
5279 height: e,
5280 position: "absolute",
5281 top: 0,
5282 left: 0
5283 }),
5284 this.color.css({
5285 width: e,
5286 height: e,
5287 position: "absolute",
5288 top: 0,
5289 left: 0,
5290 zIndex: 5
5291 }),
5292 this.grey.css({
5293 width: e,
5294 height: e,
5295 position: "absolute",
5296 top: 0,
5297 left: 0,
5298 zIndex: 5
5299 }),
5300 null !== this.image.grey && (this.color.backgroundImage(this.image.color, e, e, {
5301 cover: !0,
5302 center: !0
5303 }),
5304 this.grey.backgroundImage(this.image.grey, e, e, {
5305 cover: !0,
5306 center: !0
5307 }))
5308 }
5309 ,
5310 he.prototype.hover = function(t) {
5311 "ie" === C.Browser.type && 8 === C.Browser.version || (this.color.css({
5312 opacity: t ? 1 : 0
5313 }),
5314 this.grey.css({
5315 opacity: t ? 0 : 1
5316 }))
5317 }
5318 ,
5319 z.proto(ce, D),
5320 ce.prototype.load = function() {
5321 var t = this
5322 , e = this.charity ? "https://assets.hcaptcha.com/captcha/v1/baea443/static/images/logo-text-charity.png" : "https://assets.hcaptcha.com/captcha/v1/baea443/static/images/logo-text.png";
5323 Wt.image(e).then(function(e) {
5324 t.image = e,
5325 t.style.call(t, t.mobile)
5326 })["catch"](function() {
5327 M("refresh icon failed to load", "image", "info")
5328 })
5329 }
5330 ,
5331 ce.prototype.style = function(t) {
5332 var e = t ? 25 : 30
5333 , n = t ? 60 : 70;
5334 this.css({
5335 width: n,
5336 height: e,
5337 position: "absolute",
5338 top: 0,
5339 right: 0
5340 }),
5341 null !== this.image && this.text.backgroundImage(this.image, n, e, {
5342 contain: !0,
5343 center: !0
5344 }),
5345 this.mobile = t
5346 }
5347 ,
5348 z.proto(ue, D),
5349 ue.prototype.load = function() {
5350 this.icon.load(),
5351 this.text.load()
5352 }
5353 ,
5354 ue.prototype.style = function(t) {
5355 t !== undefined && (this.mobile = t);
5356 var e = t ? 86 : 105
5357 , n = t ? 25 : 30;
5358 this.css({
5359 width: e,
5360 height: n,
5361 left: "50%",
5362 marginLeft: -e / 2,
5363 cursor: "pointer",
5364 position: "absolute"
5365 }),
5366 this.icon.style(this.mobile),
5367 this.text.style(this.mobile),
5368 this.height = n
5369 }
5370 ,
5371 ue.prototype.onHover = function(t) {
5372 null !== this.fireEvent && (this.icon.hover("over" === t.action),
5373 this.css({
5374 opacity: "over" === t.action ? 1 : .3
5375 }))
5376 }
5377 ,
5378 ue.prototype.onClick = function(t) {
5379 if (null !== this.fireEvent) {
5380 var e = this.link + "?site=" + S.host + "&key=" + S.sitekey;
5381 window.open(e)
5382 }
5383 }
5384 ,
5385 z.proto(de, D),
5386 de.prototype.style = function(t) {
5387 this.css({
5388 fontSize: t,
5389 color: O.error,
5390 width: "100%",
5391 textAlign: "right"
5392 })
5393 }
5394 ,
5395 de.prototype.display = function(t) {
5396 this.css({
5397 opacity: t ? 1 : 0
5398 }),
5399 this.visible = t
5400 }
5401 ,
5402 de.prototype.setCopy = function() {
5403 var t = U.translate("Please try again.");
5404 this.copy.text(t)
5405 }
5406 ,
5407 z.proto(pe, D),
5408 pe.prototype.style = function(t) {
5409 this.css({
5410 width: t,
5411 height: t,
5412 overflow: "hidden",
5413 borderRadius: "50%"
5414 }),
5415 this.$bg.css({
5416 width: t,
5417 height: t
5418 })
5419 }
5420 ,
5421 pe.prototype.active = function(t) {
5422 this.$bg.css({
5423 backgroundColor: t ? "#00bcb7" : "#d5d5d5"
5424 })
5425 }
5426 ,
5427 pe.prototype.hide = function() {
5428 this.css({
5429 opacity: 0
5430 })
5431 }
5432 ,
5433 z.proto(fe, D),
5434 fe.prototype.createCrumbs = function(t) {
5435 this.display = !0;
5436 for (var e = null, n = 0; n < t; n++)
5437 e = this.initComponent(pe, null, this.$wrapper),
5438 this.crumbs.push(e)
5439 }
5440 ,
5441 fe.prototype.removeCrumbs = function() {
5442 if (this.display = !1,
5443 0 !== this.crumbs.length) {
5444 for (var t = -1; ++t < this.crumbs.length; )
5445 this.crumbs[t].destroy();
5446 this.crumbs = []
5447 }
5448 }
5449 ,
5450 fe.prototype.style = function(t, e) {
5451 for (var n = e ? 6 : 7, i = e ? 4 : 5, s = -1; ++s < this.crumbs.length; )
5452 this.crumbs[s].style(n),
5453 this.crumbs[s].css({
5454 left: s * n + s * i,
5455 top: 0,
5456 position: "absolute"
5457 });
5458 this.css({
5459 width: t,
5460 height: n
5461 });
5462 var r = this.crumbs.length * n + i * (this.crumbs.length - 1);
5463 this.$wrapper.css({
5464 width: r,
5465 height: n,
5466 position: "absolute",
5467 left: (t - r) / 2
5468 }),
5469 this.height = n,
5470 this.width = t,
5471 this.mobile = e
5472 }
5473 ,
5474 fe.prototype.setIndex = function(t) {
5475 for (var e = -1; ++e < this.crumbs.length; )
5476 this.crumbs[e].active(t === e)
5477 }
5478 ,
5479 fe.prototype.hide = function() {
5480 for (var t = -1; ++t < this.crumbs.length; )
5481 this.crumbs[t].hide()
5482 }
5483 ,
5484 z.proto(me, D),
5485 me.prototype.style = function(t, e) {
5486 var n = e ? 35 : 40;
5487 return this.$title.css({
5488 color: O.text,
5489 fontFamily: "Helvetica, Arial, sans-serif",
5490 fontWeight: 700,
5491 lineHeight: n,
5492 textAlign: "center",
5493 fontSize: e ? 15 : 16
5494 }),
5495 this.$underline.css({
5496 backgroundColor: O.accent,
5497 width: t,
5498 height: 1,
5499 bottom: 0
5500 }),
5501 this.css({
5502 width: t,
5503 height: n,
5504 position: "relative",
5505 display: "table-header-group",
5506 top: 0
5507 }),
5508 {
5509 height: n,
5510 width: t
5511 }
5512 }
5513 ,
5514 me.prototype.setCopy = function() {
5515 var t = U.translate(this.config.text);
5516 this.$title.text(t)
5517 }
5518 ,
5519 z.proto(ge, D),
5520 ge.prototype.style = function(t, e) {
5521 this.css({
5522 width: "auto",
5523 height: 15,
5524 cursor: "pointer",
5525 display: "block",
5526 margin: "0 auto",
5527 textAlign: "center"
5528 }),
5529 this.$copy.css({
5530 color: this.state.locked ? O.text : this.state.color.base,
5531 fontSize: e ? 12 : 14,
5532 fontWeight: 500,
5533 display: "inline-block"
5534 })
5535 }
5536 ,
5537 ge.prototype.onHover = function(t) {
5538 !this.state.locked && this.state.visible && this.$copy.css({
5539 color: "over" === t.action ? this.state.color.hover : this.state.color.base
5540 })
5541 }
5542 ,
5543 ge.prototype.onSelect = function(t) {
5544 !this.state.locked && this.state.visible && this.emit("click", t)
5545 }
5546 ,
5547 ge.prototype.visible = function(t) {
5548 this.state.visible = t,
5549 this.css({
5550 display: t ? "block" : "none"
5551 })
5552 }
5553 ,
5554 ge.prototype.lock = function(t, e) {
5555 this.state.locked = t,
5556 this.$copy.setAttribute("aria-label", e || this.state.desc),
5557 this.$copy.css({
5558 color: t ? O.text : this.state.color.base
5559 })
5560 }
5561 ,
5562 ge.prototype.lock = function(t, e) {
5563 this.state.locked = t,
5564 this.state.lockText = e,
5565 this.$copy.setAttribute("aria-label", e || this.state.desc),
5566 this.$copy.css({
5567 color: t ? O.text : this.state.color.base
5568 })
5569 }
5570 ,
5571 ge.prototype.setCopy = function() {
5572 var t = U.translate(this.state.text)
5573 , e = U.translate(this.state.locked && this.state.lockText ? this.state.lockText : this.state.desc);
5574 this.$copy.text(t),
5575 this.$copy.setAttribute("aria-label", e)
5576 }
5577 ,
5578 z.proto(ye, D),
5579 ye.prototype.style = function(t, e) {
5580 var n = _t(t, 280, 300, 12, 14);
5581 this.css({
5582 width: t,
5583 textAlign: "center",
5584 fontFamily: "Helvetica, Arial, sans-serif",
5585 fontSize: n,
5586 fontWeight: 500,
5587 color: O.text,
5588 lineHeight: n + 4
5589 }),
5590 this.$link.css({
5591 fontWeight: 500,
5592 cursor: "pointer",
5593 color: O.hoverOff,
5594 margin: 2,
5595 textDecoration: "none"
5596 })
5597 }
5598 ,
5599 ye.prototype.display = function(t) {
5600 this.setAttribute("tabindex", t ? "0" : "-1"),
5601 this.$link.setAttribute("tabindex", t ? "0" : "-1"),
5602 t && this.focus()
5603 }
5604 ,
5605 ye.prototype.setCopy = function() {
5606 var t = U.translate("hCaptcha is a service that reduces bots and spam by asking simple questions. Please follow the instructions at the top of the screen for each challenge. For more info visit")
5607 , e = U.translate("Read more about the hCaptcha service.");
5608 this.$info.text(t),
5609 this.$link.text(" hcaptcha.com"),
5610 this.$link.setAttribute("aria-label", e)
5611 }
5612 ,
5613 z.proto(ve, D),
5614 ve.prototype.style = function(t, e) {
5615 this.css({
5616 textAlign: "center",
5617 color: "#707070",
5618 fontSize: e ? 11 : 12,
5619 fontWeight: 500,
5620 width: t,
5621 margin: "0 auto"
5622 }),
5623 this.$link.css({
5624 color: O.hoverOff,
5625 fontWeight: 500,
5626 marginLeft: 3,
5627 cursor: "pointer",
5628 display: "inline-block"
5629 })
5630 }
5631 ,
5632 ve.prototype.setCopy = function(t, e) {
5633 var n = U.translate("Having a problem?")
5634 , i = U.translate("Give feedback.")
5635 , s = U.translate("Provide feedback regarding the hCaptcha service.");
5636 this.$info.text(n),
5637 this.$link.text(i),
5638 this.$link.setAttribute("aria-label", s)
5639 }
5640 ,
5641 z.proto(be, D),
5642 be.prototype.style = function(t, e) {
5643 this.css({
5644 textAlign: "center",
5645 color: "#707070",
5646 fontSize: e ? 11 : 12,
5647 fontWeight: 500,
5648 width: t,
5649 margin: "0 auto"
5650 }),
5651 this.$link.css({
5652 color: O.hoverOff,
5653 fontWeight: 500,
5654 marginLeft: 3,
5655 cursor: "pointer",
5656 textDecoration: "none"
5657 })
5658 }
5659 ,
5660 be.prototype.setCopy = function(t, e) {
5661 var n = U.translate("Learn about accessibility options.")
5662 , i = U.translate("Sign up for accessibility access to bypass the hCaptcha challenge.");
5663 this.$link.text(n),
5664 this.$link.setAttribute("aria-label", i)
5665 }
5666 ,
5667 z.proto(we, D),
5668 we.prototype.style = function(t, e, n) {
5669 this.css({
5670 width: t,
5671 height: e,
5672 display: "table"
5673 });
5674 var i = this.header.style(t);
5675 this.$center.css({
5676 display: "table-cell",
5677 verticalAlign: "middle",
5678 height: e - i.height
5679 }),
5680 this.instructions.style(t, n),
5681 this.instructions.css({
5682 marginBottom: 25
5683 }),
5684 this.feedback.style(t, n),
5685 this.feedback.css({
5686 marginBottom: 5
5687 }),
5688 this.accessibility.style(t, n),
5689 this.close.style(t, n),
5690 this.close.css({
5691 marginTop: 15
5692 })
5693 }
5694 ,
5695 we.prototype.setCopy = function() {
5696 this.header.setCopy(),
5697 this.instructions.setCopy(),
5698 this.feedback.setCopy(),
5699 this.accessibility.setCopy(),
5700 this.close.setCopy();
5701 var t = U.translate("Information about the hCaptcha service.");
5702 this.setAttribute("aria-label", t)
5703 }
5704 ,
5705 z.proto(ke, D),
5706 ke.prototype.style = function(t) {
5707 var e = _t(t, 125, 150, 13, 14)
5708 , n = t - 27;
5709 this.css({
5710 height: "auto",
5711 marginTop: 5,
5712 marginBottom: 5,
5713 position: "relative"
5714 }),
5715 this.$wrapper.css({
5716 cursor: "pointer",
5717 height: "auto",
5718 width: "auto",
5719 position: "relative",
5720 display: "inline-block"
5721 }),
5722 this.$input.css({
5723 position: "relative",
5724 display: "inline-block",
5725 width: 15,
5726 height: 15,
5727 borderRadius: 2,
5728 overflow: "hidden",
5729 border: "1px solid #b3b3b3",
5730 float: "left"
5731 }),
5732 this.$input.check.css({
5733 position: "absolute",
5734 top: 2,
5735 left: 2,
5736 zIndex: 10,
5737 width: 11,
5738 height: 11,
5739 borderRadius: 1,
5740 backgroundColor: "#33D1CB"
5741 }),
5742 this.$input.bg.css({
5743 position: "absolute",
5744 top: 0,
5745 left: 0,
5746 zIndex: 0,
5747 width: 15,
5748 height: 15,
5749 backgroundColor: "#f7f7f7"
5750 }),
5751 this.$text.css({
5752 position: "relative",
5753 display: "inline-block",
5754 width: n,
5755 fontFamily: "Helvetica, Arial, sans-serif",
5756 fontSize: e,
5757 fontWeight: 500,
5758 color: "#707070",
5759 float: "right",
5760 marginLeft: 10,
5761 marginTop: 1,
5762 wordBreak: "break-word"
5763 })
5764 }
5765 ,
5766 ke.prototype.toggle = function(t) {
5767 this.state.locked || (this.state.selected = t,
5768 this.$input.check.css({
5769 opacity: t ? 1 : 0
5770 }),
5771 this.$input.setAttribute("aria-pressed", t))
5772 }
5773 ,
5774 ke.prototype.lock = function(t) {
5775 this.state.locked = t
5776 }
5777 ,
5778 ke.prototype.setCopy = function() {
5779 var t = U.translate(this.state.text);
5780 this.$text.text(t),
5781 this.$input.setAttribute("aria-label", t)
5782 }
5783 ,
5784 z.proto(xe, D),
5785 xe.prototype.style = function(t, e) {
5786 var n = _t(t, 280, 350, 125, 150);
5787 this.css({
5788 position: "relative",
5789 width: t,
5790 display: "inline-block"
5791 }),
5792 this.$wrapper.css({
5793 width: 2 * n,
5794 margin: "0 auto"
5795 }),
5796 this.$left.css({
5797 width: n,
5798 display: "inline-block",
5799 float: "left"
5800 }),
5801 this.$right.css({
5802 width: n,
5803 display: "inline-block",
5804 float: "right"
5805 });
5806 for (var i = 0; i < this.options.length; i++)
5807 this.options[i].style(n)
5808 }
5809 ,
5810 xe.prototype.handeSelect = function(t) {
5811 if (this.state.visible) {
5812 for (var e = !1, n = 0; n < this.options.length; n++)
5813 (e = this.options[n] === t) && e === t.state.selected && (e = !e),
5814 this.options[n].toggle(e);
5815 this.emit("update", t)
5816 }
5817 }
5818 ,
5819 xe.prototype.visible = function(t) {
5820 this.state.visible = t,
5821 this.css({
5822 display: t ? "inline-block" : "none"
5823 });
5824 for (var e = 0; e < this.options.length; e++)
5825 this.options[e].lock(!t)
5826 }
5827 ,
5828 xe.prototype.setCopy = function() {
5829 for (var t = 0; t < this.options.length; t++)
5830 this.options[t].setCopy()
5831 }
5832 ,
5833 z.proto(_e, D),
5834 _e.prototype.style = function(t, e) {
5835 this.$textarea.css({
5836 fontFamily: "helvetica, arial, sans-serif",
5837 width: t - 30,
5838 height: 50,
5839 borderRadius: 4,
5840 backgroundColor: "#f7f7f7",
5841 color: "#7d7d7d",
5842 border: "1px solid #dedede",
5843 fontSize: e ? 12 : 14,
5844 lineHeight: e ? 16 : 18,
5845 fontWeight: 500,
5846 boxSizing: "border-box",
5847 MozBoxSizing: "border-box",
5848 padding: "8px 12px",
5849 position: "absolute",
5850 left: "50%",
5851 marginLeft: -(t - 30) / 2
5852 }),
5853 this.css({
5854 height: 50,
5855 width: t,
5856 position: "relative",
5857 display: this.state.visible ? "inline-block" : "none"
5858 })
5859 }
5860 ,
5861 _e.prototype.visible = function(t) {
5862 this.state.visible = t,
5863 this.css({
5864 display: t ? "block" : "none"
5865 })
5866 }
5867 ,
5868 _e.prototype.disable = function(t) {
5869 this.state.visible && (this.$textarea.dom.disabled = !t,
5870 this.$textarea.css({
5871 backgroundColor: t ? "#f7f7f7" : "#efefef"
5872 }))
5873 }
5874 ,
5875 _e.prototype.getValue = function() {
5876 return this.$textarea.dom.value
5877 }
5878 ,
5879 _e.prototype.setValue = function(t) {
5880 this.$textarea.dom.value = t
5881 }
5882 ,
5883 _e.prototype.setPlaceholder = function() {
5884 this.$textarea.setAttribute("placeholder", U.translate(this.state.placeholder))
5885 }
5886 ;
5887 var Ee = "Please describe your issue."
5888 , Ce = [{
5889 text: "Too Difficult",
5890 value: "difficulty"
5891 }, {
5892 text: "Inappropriate",
5893 value: "content"
5894 }, {
5895 text: "Software Bug",
5896 value: "software"
5897 }, {
5898 text: "Other",
5899 value: "other"
5900 }];
5901 function Se() {
5902 z.self(this, D, "feedback");
5903 var t = this;
5904 this.selected = null,
5905 this.$center = this.createElement(".center"),
5906 this.$text = this.$center.createElement(".text"),
5907 this.setAttribute("role", "dialog"),
5908 this.setAttribute("tabindex", "0"),
5909 this.header = this.initComponent(me, "Feedback"),
5910 this.options = this.initComponent(xe, Ce, this.$center),
5911 this.comment = this.initComponent(_e, Ee, this.$center),
5912 this.$buttons = this.$center.createElement(".buttons"),
5913 this.cancel = this.initComponent(ge, {
5914 text: "Cancel",
5915 value: "cancel",
5916 desc: "Cancel Response",
5917 color: O.warn
5918 }, this.$buttons),
5919 this.send = this.initComponent(ge, {
5920 text: "Send",
5921 value: "send",
5922 desc: "Send Response",
5923 color: O.link
5924 }, this.$buttons),
5925 this.send.lock(!0, "Please select an option to send response."),
5926 this.send.on("click", this.sendMessage.bind(this)),
5927 this.options.on("update", this.displayComment.bind(this)),
5928 this.comment.visible(!1),
5929 this.cancel.on("click", function() {
5930 t.emit("close")
5931 })
5932 }
5933 z.proto(Se, D),
5934 Se.prototype.style = function(t, e, n) {
5935 this.css({
5936 width: t,
5937 height: e,
5938 display: "table"
5939 });
5940 var i = this.header.style(t);
5941 this.$center.css({
5942 display: "table-cell",
5943 verticalAlign: "middle",
5944 height: e - i.height
5945 }),
5946 this.$buttons.css({
5947 width: n ? 150 : 200,
5948 height: n ? 15 : 20,
5949 position: "relative",
5950 margin: "0 auto",
5951 marginTop: 15
5952 }),
5953 this.options.style(t, n),
5954 this.options.css({
5955 marginBottom: 10
5956 }),
5957 this.comment.style(t, e, n),
5958 this.comment.css({
5959 marginBottom: 10
5960 }),
5961 this.send.style(),
5962 this.cancel.style(t, n),
5963 this.cancel.css({
5964 position: "absolute",
5965 left: 0
5966 }),
5967 this.send.css({
5968 position: "absolute",
5969 right: 0
5970 })
5971 }
5972 ,
5973 Se.prototype.sendMessage = function() {
5974 var t = ""
5975 , e = ""
5976 , n = this.comment.getValue();
5977 this.selected && (t = this.selected.state.text,
5978 e = this.selected.state.value),
5979 this.comment.setValue(""),
5980 this.comment.visible(!1),
5981 this.options.visible(!1),
5982 this.send.visible(!1);
5983 var i = "software" === e || "other" === e ? "feedback" : "content" === e ? "report" : "accessibility";
5984 this.emit("change", "thanks", {
5985 response: i
5986 }),
5987 re.reportIssue(t, n)["catch"](function(t) {})
5988 }
5989 ,
5990 Se.prototype.displayComment = function(t) {
5991 var e = t.state.selected
5992 , n = t.state.value
5993 , i = ("software" === n || "other" === n) && e;
5994 this.selected = e ? t : null,
5995 this.comment.visible(i),
5996 this.comment.disable(i),
5997 this.send.lock(null === this.selected)
5998 }
5999 ,
6000 Se.prototype.setCopy = function() {
6001 this.header.setCopy(),
6002 this.options.setCopy(),
6003 this.comment.setPlaceholder(),
6004 this.cancel.setCopy(),
6005 this.send.setCopy();
6006 var t = U.translate("Provide feedback for hCaptcha.");
6007 this.setAttribute("aria-label", t)
6008 }
6009 ;
6010 var Oe = "Please provide details and steps to reproduce."
6011 , $e = [{
6012 text: "Can't Solve",
6013 value: "captcha_solve"
6014 }, {
6015 text: "Can't Click",
6016 value: "captcha_usability"
6017 }, {
6018 text: "Off Screen",
6019 value: "captcha_position"
6020 }, {
6021 text: "Other",
6022 value: "other"
6023 }];
6024 function Ae() {
6025 z.self(this, D, "info-view");
6026 var t = this;
6027 this.selected = null,
6028 this.$center = this.createElement(".center"),
6029 this.$text = this.$center.createElement(".text"),
6030 this.setAttribute("role", "dialog"),
6031 this.setAttribute("tabindex", "0"),
6032 this.header = this.initComponent(me, "Software Bug"),
6033 this.options = this.initComponent(xe, $e, this.$center),
6034 this.comment = this.initComponent(_e, Oe, this.$center),
6035 this.$buttons = this.$center.createElement(".buttons"),
6036 this.cancel = this.initComponent(ge, {
6037 text: "Cancel",
6038 value: "cancel",
6039 desc: "Cancel Response",
6040 color: O.warn
6041 }, this.$buttons),
6042 this.send = this.initComponent(ge, {
6043 text: "Send",
6044 value: "send",
6045 desc: "Send Response",
6046 color: O.link
6047 }, this.$buttons),
6048 this.send.lock(!0, "Please select an option to send response."),
6049 this.send.on("click", this.sendMessage.bind(this)),
6050 this.options.on("update", this.storeAnswer.bind(this)),
6051 this.cancel.on("click", function() {
6052 t.emit("close")
6053 })
6054 }
6055 z.proto(Ae, D),
6056 Ae.prototype.style = function(t, e, n) {
6057 this.css({
6058 width: t,
6059 height: e,
6060 display: "table"
6061 });
6062 var i = this.header.style(t);
6063 this.$center.css({
6064 display: "table-cell",
6065 verticalAlign: "middle",
6066 height: e - i.height
6067 }),
6068 this.$buttons.css({
6069 width: n ? 150 : 200,
6070 height: n ? 15 : 20,
6071 position: "relative",
6072 margin: "0 auto",
6073 marginTop: 15
6074 }),
6075 this.options.style(t, n),
6076 this.options.css({
6077 marginBottom: 10
6078 }),
6079 this.comment.style(t, e, n),
6080 this.comment.css({
6081 marginBottom: 10,
6082 margin: "0 auto"
6083 }),
6084 this.send.style(),
6085 this.cancel.style(t, n),
6086 this.cancel.css({
6087 position: "absolute",
6088 left: 0
6089 }),
6090 this.send.css({
6091 position: "absolute",
6092 right: 0
6093 })
6094 }
6095 ,
6096 Ae.prototype.sendMessage = function() {
6097 var t = ""
6098 , e = this.comment.getValue();
6099 this.selected && (t = this.selected.state.text),
6100 this.comment.setValue(""),
6101 this.comment.visible(!1),
6102 this.options.visible(!1),
6103 this.send.visible(!1),
6104 this.emit("change", "thanks", {
6105 response: "feedback"
6106 }),
6107 re.reportIssue(t, e)["catch"](function(t) {})
6108 }
6109 ,
6110 Ae.prototype.storeAnswer = function(t) {
6111 var e = t.state.selected
6112 , n = "other" === t.state.value && e;
6113 this.comment.visible(n),
6114 this.selected = e ? t : null,
6115 this.send.lock(null === this.selected)
6116 }
6117 ,
6118 Ae.prototype.setCopy = function(t) {
6119 this.header.setCopy(),
6120 this.options.setCopy(),
6121 this.comment.setPlaceholder(),
6122 this.cancel.setCopy(),
6123 this.send.setCopy();
6124 var e = U.translate("Provide feedback for hCaptcha.");
6125 this.setAttribute("aria-label", e)
6126 }
6127 ;
6128 var Te = "Please describe your issue."
6129 , Pe = [{
6130 text: "Inappropriate",
6131 value: "inappropriate"
6132 }, {
6133 text: "Violent",
6134 value: "violent"
6135 }, {
6136 text: "Offensive",
6137 value: "offensive"
6138 }, {
6139 text: "Other",
6140 value: "other"
6141 }];
6142 function Le(t) {
6143 z.self(this, D, "info-view");
6144 var e = this;
6145 this.selected = null,
6146 this.task_key = t.key || "",
6147 this.$center = this.createElement(".center"),
6148 this.$text = this.$center.createElement(".text"),
6149 this.setAttribute("role", "dialog"),
6150 this.setAttribute("tabindex", "0"),
6151 this.header = this.initComponent(me, "Tell Us Why"),
6152 this.options = this.initComponent(xe, Pe, this.$center),
6153 this.comment = this.initComponent(_e, Te, this.$center),
6154 this.$buttons = this.$center.createElement(".buttons"),
6155 this.cancel = this.initComponent(ge, {
6156 text: "Cancel",
6157 value: "cancel",
6158 desc: "Cancel Response",
6159 color: O.warn
6160 }, this.$buttons),
6161 this.send = this.initComponent(ge, {
6162 text: "Send",
6163 value: "send",
6164 desc: "Send Response",
6165 color: O.link
6166 }, this.$buttons),
6167 this.send.lock(!0, "Please select an option to send response."),
6168 this.comment.visible(!0),
6169 this.send.on("click", this.sendMessage.bind(this)),
6170 this.options.on("update", this.storeAnswer.bind(this)),
6171 this.cancel.on("click", function() {
6172 e.emit("close")
6173 })
6174 }
6175 function je() {
6176 z.self(this, D, "thanks-feedback");
6177 var t = this;
6178 this.$copy = this.createElement(".feedback-thanks"),
6179 this.$resolve = this.createElement(".feedback-resolve"),
6180 this.$option = this.createElement(".accessibility-option"),
6181 this.$option.link = this.$option.createElement("a", ".option-link"),
6182 this.$bug = this.createElement(".feedback-bug"),
6183 this.$bug.link = this.createElement("a", ".bug-link"),
6184 this.$copy.setAttribute("tabindex", 0),
6185 this.$resolve.setAttribute("tabindex", 0),
6186 this.$option.setAttribute("tabindex", 0),
6187 this.$option.link.setAttribute("tabindex", 0),
6188 this.$option.link.setAttribute("role", "link"),
6189 this.$bug.setAttribute("tabindex", 0),
6190 this.$bug.link.setAttribute("tabindex", 0),
6191 this.$bug.link.setAttribute("role", "link");
6192 var e = function(t) {
6193 window.open("https://www.hcaptcha.com/reporting-bugs")
6194 };
6195 this.$bug.link.addEventListener("enter", e),
6196 this.$bug.link.addEventListener("down", e);
6197 var n = function(t) {
6198 window.open("https://hcaptcha.com/accessibility")
6199 };
6200 if (this.$option.link.addEventListener("keydown", n),
6201 this.$option.link.addEventListener("enter", n),
6202 !1 === C.System.mobile) {
6203 var i = function(e) {
6204 t.$bug.link.css({
6205 color: "over" === e.action ? O.hoverOn : O.hoverOff
6206 })
6207 };
6208 this.$bug.link.addEventListener("over", i),
6209 this.$bug.link.addEventListener("out", i);
6210 var s = function(e) {
6211 t.$option.link.css({
6212 color: "over" === e.action ? O.hoverOn : O.hoverOff
6213 })
6214 };
6215 this.$option.link.addEventListener("over", s),
6216 this.$option.link.addEventListener("out", s)
6217 }
6218 }
6219 function Ie() {
6220 z.self(this, D, "thanks-accessibility");
6221 var t = this;
6222 this.$sorry = this.createElement(".accessibility-text"),
6223 this.$option = this.createElement(".accessibility-option"),
6224 this.$avoid = this.createElement(".accessibility-avoid"),
6225 this.$sorry.setAttribute("tabindex", 0),
6226 this.$option.setAttribute("tabindex", 0),
6227 this.$option.setAttribute("role", "link"),
6228 this.$avoid.setAttribute("tabindex", 0);
6229 var e = function(t) {
6230 window.open("https://hcaptcha.com/accessibility")
6231 };
6232 if (this.$option.addEventListener("enter", e),
6233 this.$option.addEventListener("down", e),
6234 !1 === C.System.mobile) {
6235 var n = function(e) {
6236 t.$option.css({
6237 color: "over" === e.action ? O.hoverOn : O.hoverOff
6238 })
6239 };
6240 this.$option.addEventListener("over", n),
6241 this.$option.addEventListener("out", n)
6242 }
6243 }
6244 function Me() {
6245 z.self(this, D, "thanks-feedback"),
6246 this.$copy = this.createElement(".feedback-thanks"),
6247 this.$resolve = this.createElement(".feedback-resolve"),
6248 this.$copy.setAttribute("tabindex", 0),
6249 this.$resolve.setAttribute("tabindex", 0)
6250 }
6251 function Re(t) {
6252 z.self(this, D, "component-thanks");
6253 var e = this;
6254 this.$center = this.createElement(".center"),
6255 this.setAttribute("role", "dialog"),
6256 this.setAttribute("tabindex", "0"),
6257 "feedback" === t.response ? this.copy = this.initComponent(je, null, this.$center) : "accessibility" === t.response ? this.copy = this.initComponent(Ie, null, this.$center) : "report" === t.response && (this.copy = this.initComponent(Me, null, this.$center)),
6258 this.close = this.initComponent(ge, {
6259 text: "Close",
6260 value: "close",
6261 desc: "Close Modal",
6262 color: O.link
6263 }, this.$center),
6264 this.close.on("click", function() {
6265 e.emit("close")
6266 })
6267 }
6268 function Be() {
6269 z.self(this, D, "challenge-modal"),
6270 this.state = {
6271 visible: !1,
6272 curr: null,
6273 prev: null
6274 },
6275 this.display = this.display.bind(this),
6276 this.close = this.close.bind(this),
6277 this.$container = this.createElement(".container"),
6278 this.$wrapper = this.$container.createElement(".wrapper"),
6279 this.$bg = this.createElement(".modal-bg"),
6280 this.$bg.addEventListener("down", this.close),
6281 this.css({
6282 display: "none",
6283 opacity: 0,
6284 zIndex: -1
6285 })
6286 }
6287 z.proto(Le, D),
6288 Le.prototype.style = function(t, e, n) {
6289 this.css({
6290 width: t,
6291 height: e,
6292 display: "table"
6293 });
6294 var i = this.header.style(t);
6295 this.$center.css({
6296 display: "table-cell",
6297 verticalAlign: "middle",
6298 height: e - i.height
6299 }),
6300 this.$buttons.css({
6301 width: n ? 150 : 200,
6302 height: n ? 15 : 20,
6303 position: "relative",
6304 margin: "0 auto",
6305 marginTop: 15
6306 }),
6307 this.options.style(t, n),
6308 this.options.css({
6309 marginBottom: 10
6310 }),
6311 this.comment.style(t, e, n),
6312 this.comment.css({
6313 marginBottom: 10
6314 }),
6315 this.send.style(),
6316 this.cancel.style(t, n),
6317 this.cancel.css({
6318 position: "absolute",
6319 left: 0
6320 }),
6321 this.send.css({
6322 position: "absolute",
6323 right: 0
6324 })
6325 }
6326 ,
6327 Le.prototype.sendMessage = function() {
6328 var t = this.task_key
6329 , e = ""
6330 , n = this.comment.getValue();
6331 this.selected && (e = this.selected.state.text),
6332 this.comment.setValue(""),
6333 this.comment.visible(!1),
6334 this.options.visible(!1),
6335 this.send.visible(!1),
6336 this.emit("change", "thanks", {
6337 response: "report"
6338 }),
6339 re.reportIssue(e, n, t)["catch"](function(t) {})
6340 }
6341 ,
6342 Le.prototype.storeAnswer = function(t) {
6343 var e = t.state.selected;
6344 this.selected = e ? t : null,
6345 this.send.lock(null === this.selected)
6346 }
6347 ,
6348 Le.prototype.setCopy = function() {
6349 this.header.setCopy(),
6350 this.options.setCopy(),
6351 this.comment.setPlaceholder(),
6352 this.cancel.setCopy(),
6353 this.send.setCopy();
6354 var t = U.translate("Describe why you are reporting an image.");
6355 this.setAttribute("aria-label", t)
6356 }
6357 ,
6358 z.proto(je, D),
6359 je.prototype.style = function(t, e) {
6360 var n = _t(t, 280, 310, 260, 310)
6361 , i = _t(t, 280, 300, 12, 13)
6362 , s = i + 4;
6363 this.css({
6364 fontFamily: "helvetica, arial, sans-serif",
6365 fontWeight: 500,
6366 textAlign: "center",
6367 fontSize: i + 1,
6368 lineHeight: i + 4,
6369 color: "#707070",
6370 width: t,
6371 marginBottom: 15
6372 }),
6373 this.$copy.css({
6374 width: n,
6375 margin: "0 auto",
6376 fontWeight: 600,
6377 marginBottom: 2
6378 }),
6379 this.$resolve.css({
6380 fontSize: i,
6381 lineHeight: s,
6382 width: n,
6383 margin: "0 auto",
6384 marginBottom: 10
6385 }),
6386 this.$option.css({
6387 fontSize: i,
6388 lineHeight: s,
6389 marginBottom: 10
6390 }),
6391 this.$option.link.css({
6392 fontSize: i,
6393 lineHeight: s,
6394 color: O.hoverOff,
6395 cursor: "pointer"
6396 }),
6397 this.$bug.css({
6398 fontSize: i - 1,
6399 lineHeight: s - 1,
6400 width: n,
6401 margin: "0 auto",
6402 marginBottom: -2
6403 }),
6404 this.$bug.link.css({
6405 fontSize: i - 1,
6406 lineHeight: s - 1,
6407 width: n,
6408 margin: "0 auto",
6409 color: O.hoverOff,
6410 cursor: "pointer"
6411 })
6412 }
6413 ,
6414 je.prototype.setCopy = function() {
6415 var t = U.translate("Thank you for your feedback.")
6416 , e = U.translate("We'll resolve your issue as quickly as we can.")
6417 , n = U.translate("Reporting a functionality issue?")
6418 , i = U.translate("See how to report issues with detailed logs.")
6419 , s = U.translate("Please also try turning off your ad blocker.")
6420 , r = U.translate("Our accessibility option may help.");
6421 this.$copy.text(t),
6422 this.$resolve.text(e),
6423 this.$bug.text(n + " "),
6424 this.$bug.link.text(i),
6425 this.$option.text(s + " "),
6426 this.$option.link.text(r);
6427 var o = U.translate("View our accessibility option.")
6428 , a = U.translate("Give a detailed report of a bug you've encountered.");
6429 this.$option.link.setAttribute("aria-label", o),
6430 this.$bug.link.setAttribute("aria-label", a)
6431 }
6432 ,
6433 z.proto(Ie, D),
6434 Ie.prototype.style = function(t, e) {
6435 var n = _t(t, 280, 310, 260, 310)
6436 , i = _t(t, 280, 300, 12, 13)
6437 , s = i + 4;
6438 this.css({
6439 fontFamily: "helvetica, arial, sans-serif",
6440 fontWeight: 500,
6441 fontSize: i + 1,
6442 lineHeight: s,
6443 textAlign: "center",
6444 color: "#707070",
6445 width: t,
6446 marginBottom: 25
6447 }),
6448 this.$sorry.css({
6449 fontWeight: 600,
6450 width: n,
6451 margin: "0 auto",
6452 marginBottom: 2
6453 }),
6454 this.$option.css({
6455 fontSize: i,
6456 lineHeight: s,
6457 color: O.hoverOff,
6458 cursor: "pointer",
6459 marginBottom: 10
6460 }),
6461 this.$avoid.css({
6462 width: n,
6463 textAlign: "center",
6464 fontSize: i,
6465 lineHeight: s,
6466 margin: "0 auto"
6467 })
6468 }
6469 ,
6470 Ie.prototype.setCopy = function() {
6471 var t = U.translate("Sorry to hear that!")
6472 , e = U.translate("Our accessibility option may help.")
6473 , n = U.translate("This lets you avoid future questions by registering and setting a cookie.")
6474 , i = U.translate("Please also try turning off your ad blocker.");
6475 this.$sorry.text(t + " "),
6476 this.$option.text(e),
6477 this.$avoid.text(n + " " + i);
6478 var s = U.translate("View our accessibility option.");
6479 this.$option.setAttribute("aria-label", s)
6480 }
6481 ,
6482 z.proto(Me, D),
6483 Me.prototype.style = function(t, e) {
6484 var n = _t(t, 280, 310, 260, 310)
6485 , i = _t(t, 280, 300, 12, 13)
6486 , s = i + 4;
6487 this.css({
6488 fontFamily: "helvetica, arial, sans-serif",
6489 fontWeight: 500,
6490 textAlign: "center",
6491 fontSize: i + 1,
6492 lineHeight: i + 4,
6493 color: "#707070",
6494 width: t,
6495 marginBottom: 15
6496 }),
6497 this.$copy.css({
6498 width: n,
6499 margin: "0 auto",
6500 fontWeight: 600,
6501 marginBottom: 2
6502 }),
6503 this.$resolve.css({
6504 fontSize: i,
6505 lineHeight: s,
6506 width: n,
6507 margin: "0 auto",
6508 marginBottom: 10
6509 })
6510 }
6511 ,
6512 Me.prototype.setCopy = function() {
6513 var t = {
6514 thanks: U.translate("Thank you for your feedback."),
6515 resolve: U.translate("We will look into the issue immediately.")
6516 };
6517 this.$copy.text(t.thanks),
6518 this.$resolve.text(t.resolve)
6519 }
6520 ,
6521 z.proto(Re, D),
6522 Re.prototype.style = function(t, e, n) {
6523 this.css({
6524 width: t,
6525 height: e,
6526 display: "table"
6527 }),
6528 this.$center.css({
6529 display: "table-cell",
6530 verticalAlign: "middle",
6531 height: e
6532 }),
6533 this.copy.style(t, n),
6534 this.close.style(t, n)
6535 }
6536 ,
6537 Re.prototype.setCopy = function() {
6538 this.copy.setCopy(),
6539 this.close.setCopy();
6540 var t = U.translate("Thank you for your feedback.");
6541 this.setAttribute("aria-label", t)
6542 }
6543 ,
6544 z.proto(Be, D),
6545 Be.prototype.style = function(t, e, n) {
6546 var i = _t(t, 300, 450, 290, 350)
6547 , s = _t(e, 275, 300, 240, 270)
6548 , r = _t(t, 300, 400, 5, 20)
6549 , o = i - 2 * r
6550 , a = s;
6551 this.$container.css({
6552 width: i,
6553 height: s,
6554 top: "50%",
6555 left: "50%",
6556 marginLeft: -i / 2,
6557 marginTop: -s / 2,
6558 position: "absolute",
6559 backgroundColor: "#fff",
6560 borderRadius: 4,
6561 zIndex: 10,
6562 overflow: "hidden",
6563 border: "1px solid #E6E6E6"
6564 }),
6565 this.$wrapper.css({
6566 width: o,
6567 height: a,
6568 top: 0,
6569 left: r,
6570 position: "absolute",
6571 zIndex: 10
6572 }),
6573 this.$bg.css({
6574 position: "absolute",
6575 width: "100%",
6576 height: "100%",
6577 top: 0,
6578 left: 0,
6579 backgroundColor: "#000",
6580 opacity: 0,
6581 zindex: 0,
6582 cursor: "pointer"
6583 }),
6584 this.view && this.view.style(o, s, n)
6585 }
6586 ,
6587 Be.prototype.close = function() {
6588 this.state.visible && (this.state.visible = !1,
6589 this.view && (this.view.off("close", this.close),
6590 this.view = this.view.destroy()),
6591 this.css({
6592 display: "none",
6593 opacity: 0,
6594 zIndex: -1
6595 }),
6596 "report_image" === this.state.prev && "thanks" === this.state.curr && this.emit("refresh"),
6597 this.emit("close"))
6598 }
6599 ,
6600 Be.prototype.display = function(t, e) {
6601 var n = null;
6602 this.view && (this.view = this.view.destroy()),
6603 this.state.prev = this.state.curr,
6604 this.state.curr = t,
6605 "info" === t ? n = we : "feedback" === t ? n = Se : "report_bug" === t ? n = Ae : "report_image" === t ? n = Le : t.indexOf("thanks") >= 0 && (n = Re);
6606 var i = this.initComponent(n, e, this.$wrapper);
6607 i.setCopy(),
6608 i.on("close", this.close),
6609 i.on("change", this.display),
6610 this.view = i,
6611 this.style(S.width, S.height, S.mobile),
6612 this.state.visible = !0,
6613 this.css({
6614 display: "block",
6615 opacity: 1,
6616 zIndex: 100
6617 }),
6618 this.view.focus()
6619 }
6620 ,
6621 Be.prototype.isOpen = function() {
6622 return this.state.visible
6623 }
6624 ,
6625 Be.prototype.translate = function() {
6626 this.view.setCopy()
6627 }
6628 ;
6629 var ze = new Be;
6630 function De(t) {
6631 z.self(this, D, "option"),
6632 this.state = {
6633 text: t.text,
6634 value: t.value,
6635 type: t.type,
6636 color: t.color || "#555555",
6637 desc: t.desc,
6638 locked: !0,
6639 visible: !0
6640 },
6641 this.$wrapper = this.createElement(".wrapper"),
6642 this.$copy = this.$wrapper.createElement(".copy"),
6643 this.$bg = this.createElement(".bg"),
6644 t.last || (this.$line = this.$wrapper.createElement(".line")),
6645 this.setAttribute("tabindex", 0),
6646 this.setAttribute("role", "button"),
6647 "modal" === this.state.type && (this.setAttribute("aria-expanded", !1),
6648 this.setAttribute("aria-haspopup", !0)),
6649 this.onSelect = this.onSelect.bind(this),
6650 this.onHover = this.onHover.bind(this),
6651 this.addEventListener("up", this.onSelect),
6652 this.addEventListener("enter", this.onSelect),
6653 !1 === C.System.mobile && (this.addEventListener("over", this.onHover),
6654 this.addEventListener("out", this.onHover))
6655 }
6656 z.proto(De, D),
6657 De.prototype.style = function(t) {
6658 var e = t ? 135 : 160
6659 , n = t ? 35 : 40
6660 , i = e + 30;
6661 return this.css({
6662 width: i,
6663 height: n,
6664 display: this.state.visible ? "block" : "none",
6665 position: "relative",
6666 cursor: "pointer",
6667 left: 0,
6668 overflow: "hidden"
6669 }),
6670 this.$wrapper.css({
6671 width: e,
6672 height: n,
6673 padding: "0px 15px",
6674 zIndex: 10,
6675 position: "relative"
6676 }),
6677 this.$line && this.$line.css({
6678 width: e,
6679 height: 1,
6680 backgroundColor: "#E6E6E6",
6681 bottom: 0,
6682 zIndex: 0,
6683 position: "absolute"
6684 }),
6685 this.$copy.css({
6686 width: e,
6687 height: "100%",
6688 color: this.state.color,
6689 fontSize: t ? 12 : 14,
6690 lineHeight: n,
6691 display: "table-cell",
6692 verticalAlign: "middle",
6693 textAlign: "center"
6694 }),
6695 this.$bg.css({
6696 width: i + 2,
6697 opacity: 0,
6698 height: n + 2,
6699 position: "absolute",
6700 backgroundColor: "#f5f5f5",
6701 top: 0,
6702 left: 0
6703 }),
6704 {
6705 width: i,
6706 height: n
6707 }
6708 }
6709 ,
6710 De.prototype.onHover = function(t) {
6711 !this.state.locked && this.state.visible && this.$bg.css({
6712 opacity: "over" === t.action ? 1 : 0
6713 })
6714 }
6715 ,
6716 De.prototype.onSelect = function(t) {
6717 !this.state.locked && this.state.visible && (ze.isOpen && ze.close(),
6718 "link" === this.state.type ? window.open(this.state.value) : "modal" === this.state.type && ze.display(this.state.value),
6719 this.$bg.css({
6720 opacity: 0
6721 }),
6722 this.emit("click", this.state.value))
6723 }
6724 ,
6725 De.prototype.lock = function(t) {
6726 this.state.locked = t,
6727 this.setAttribute("tabindex", t ? -1 : 0),
6728 this.css({
6729 pointerEvents: t ? "none" : "auto"
6730 }),
6731 this.$bg.css({
6732 opacity: 0
6733 })
6734 }
6735 ,
6736 De.prototype.visible = function(t) {
6737 this.state.visible = t,
6738 this.css({
6739 display: t ? "block" : "none"
6740 }),
6741 this.setAttribute("tabindex", t ? 0 : -1)
6742 }
6743 ,
6744 De.prototype.setCopy = function() {
6745 var t = U.translate(this.state.text)
6746 , e = U.translate(this.state.desc);
6747 this.$copy.text(t),
6748 this.setAttribute("aria-label", e)
6749 }
6750 ;
6751 var Fe = [{
6752 text: "Report Image",
6753 value: "report_image",
6754 type: "custom",
6755 desc: "Report an image to hCaptcha.",
6756 color: "#EB5757"
6757 }, {
6758 text: "Report Bug",
6759 value: "report_bug",
6760 type: "modal",
6761 desc: "Report a software bug or issue to hCaptcha."
6762 }, {
6763 text: "Information",
6764 value: "info",
6765 type: "modal",
6766 desc: "Get information about hCaptcha."
6767 }];
6768 function Ne() {
6769 z.self(this, D, "menu");
6770 var t = this;
6771 this.state = {
6772 visible: !1
6773 },
6774 this.visible = this.visible.bind(this),
6775 this.$background = this.createElement(".menu-background");
6776 for (var e = null, n = null, i = [], s = 0; s < Fe.length; s++)
6777 (n = Fe[s]).last = s === Fe.length - 1,
6778 (e = this.initComponent(De, n)).setCopy(),
6779 e.on("click", function(e) {
6780 t.visible(!1),
6781 t.emit("select", e)
6782 }),
6783 i.push(e);
6784 this.list = i,
6785 this.visible(!1)
6786 }
6787 function We(t, e) {
6788 z.self(this, D, "challenge-interface");
6789 var n = this;
6790 this.visible = !1,
6791 this.action = null,
6792 this.config = e || {},
6793 this.logo = this.initComponent(ue, this.config),
6794 this.menu = this.initComponent(Ne),
6795 this.text = this.initComponent(de),
6796 this.breadcrumbs = this.initComponent(fe),
6797 this.btn = {
6798 info: this.initComponent(le),
6799 refresh: this.initComponent(oe),
6800 submit: this.initComponent(ae)
6801 },
6802 this.setAction = this.setAction.bind(this),
6803 this.focusMenuBtn = this.focusMenuBtn.bind(this),
6804 this.btn.info.on("click", function(t) {
6805 n.menu.visible(t)
6806 }),
6807 this.btn.refresh.on("click", function() {
6808 n.emit("refresh")
6809 }),
6810 this.btn.submit.on("click", function() {
6811 n.emit("submit")
6812 }),
6813 this.menu.on("select", function(t) {
6814 "report_image" === t && n.emit("report"),
6815 n.btn.info.reset()
6816 })
6817 }
6818 z.proto(Ne, D),
6819 Ne.prototype.style = function(t) {
6820 this.css({
6821 width: "auto",
6822 zIndex: 10,
6823 position: "absolute"
6824 });
6825 for (var e = 0, n = 0, i = null, s = 0; s < this.list.length; s++)
6826 i = this.list[s].style(t),
6827 this.list[s].state.visible && (e = i.width,
6828 n += i.height);
6829 return this.css({
6830 width: e - 2,
6831 height: n - 2,
6832 overflow: "hidden",
6833 zIndex: 10,
6834 position: "absolute",
6835 borderRadius: 4,
6836 border: "1px solid #E6E6E6"
6837 }),
6838 this.$background.css({
6839 borderRadius: 4,
6840 backgroundColor: "#fff",
6841 width: e,
6842 height: n,
6843 position: "absolute",
6844 zIndex: 0,
6845 top: 0,
6846 left: 0
6847 }),
6848 {
6849 width: e,
6850 height: n
6851 }
6852 }
6853 ,
6854 Ne.prototype.visible = function(t) {
6855 this.state.visible = t,
6856 this.css({
6857 display: t ? "inline-block" : "none"
6858 });
6859 for (var e = !1, n = 0; n < this.list.length; n++)
6860 this.list[n].lock(!t),
6861 !e && this.list[n].state.visible && this.state.visible && (e = !0,
6862 this.list[n].focus())
6863 }
6864 ,
6865 Ne.prototype.setCopy = function() {
6866 for (var t = 0; t < this.list.length; t++)
6867 this.list[t].setCopy()
6868 }
6869 ,
6870 z.proto(We, D),
6871 We.prototype.load = function() {
6872 this.btn.info.load(),
6873 this.btn.refresh.load(),
6874 this.logo.load()
6875 }
6876 ,
6877 We.prototype.style = function(t, e, n) {
6878 var i = e ? 60 : 70
6879 , s = e ? 10 : 11;
6880 return this.breadcrumbs.display && (this.breadcrumbs.style(t, e),
6881 this.breadcrumbs.css({
6882 position: "absolute",
6883 top: e ? 12 : 20
6884 }),
6885 s = e ? 8 : 17,
6886 i = e ? 60 : 80),
6887 this.btn.refresh.style(e),
6888 this.btn.submit.style(e),
6889 this.btn.info.style(e),
6890 this.text.style(e ? 11 : 12),
6891 this.logo.style(t < 400),
6892 this.menu.style(e),
6893 this.menu.css({
6894 position: "absolute",
6895 left: 0,
6896 bottom: this.btn.submit.height + n
6897 }),
6898 this.btn.info.css({
6899 position: "absolute",
6900 left: 4,
6901 bottom: (this.btn.submit.height - this.btn.info.height) / 2
6902 }),
6903 this.btn.refresh.css({
6904 position: "absolute",
6905 bottom: (this.btn.submit.height - this.btn.refresh.height) / 2,
6906 left: this.btn.refresh.width + 15
6907 }),
6908 this.btn.submit.css({
6909 position: "absolute",
6910 display: "block",
6911 right: 0,
6912 bottom: 0
6913 }),
6914 this.logo.css({
6915 bottom: (this.btn.submit.height - this.logo.height) / 2
6916 }),
6917 this.text.css({
6918 position: "absolute",
6919 top: s
6920 }),
6921 this.css({
6922 width: t,
6923 height: i,
6924 position: "relative",
6925 left: n,
6926 top: n
6927 }),
6928 {
6929 width: t,
6930 height: i
6931 }
6932 }
6933 ,
6934 We.prototype.setupLogo = function(t, e) {
6935 t && (this.logo.destroy(),
6936 this.logo = this.initComponent(ue, {
6937 charity: !0
6938 }),
6939 this.logo.load()),
6940 this.logo.link = e || this.logo.link
6941 }
6942 ,
6943 We.prototype.setAction = function(t) {
6944 this.action = t,
6945 this.btn.submit.action(t)
6946 }
6947 ,
6948 We.prototype.displayFail = function(t) {
6949 this.text.display(t)
6950 }
6951 ,
6952 We.prototype.isMenuOpen = function() {
6953 return this.menu.state.visible
6954 }
6955 ,
6956 We.prototype.closeMenu = function() {
6957 this.btn.info.reset(),
6958 this.menu.visible(!1)
6959 }
6960 ,
6961 We.prototype.focusMenuBtn = function() {
6962 this.btn.info.focus()
6963 }
6964 ,
6965 We.prototype.translate = function() {
6966 this.menu.setCopy(),
6967 this.text.setCopy(),
6968 this.btn.info.setLabel(),
6969 this.btn.refresh.setLabel(),
6970 this.btn.submit.setCopy()
6971 }
6972 ;
6973 var Ue = new We;
6974 function He(t, e) {
6975 z.self(this, D, null, ".challenge-container"),
6976 this.handleResize = null,
6977 this.handleCheck = null,
6978 this.config = e || {},
6979 this.setAttribute("aria-hidden", !0),
6980 this.setAttribute("role", "dialog"),
6981 this.setAttribute("aria-modal", "true"),
6982 this.setAttribute("aria-labelledby", "hCaptcha Challenge")
6983 }
6984 z.proto(He, D),
6985 He.prototype.style = function(t, e, n) {
6986 this.css({
6987 width: t,
6988 height: e,
6989 position: "relative",
6990 top: n,
6991 left: n,
6992 zIndex: 0
6993 })
6994 }
6995 ,
6996 He.prototype.mount = function(t) {
6997 var e = this;
6998 this.appendElement(t),
6999 this.setAttribute("aria-hidden", !1),
7000 Ue.setAction("check"),
7001 this.handleResize = function() {
7002 e.emit("resize")
7003 }
7004 ,
7005 this.handleCheck = function(e) {
7006 var n = "skip";
7007 e && (n = t.breadcrumbs && t.served < t.breadcrumbs ? "next" : "check"),
7008 Ue.setAction(n)
7009 }
7010 ,
7011 t.on && t.on("display-check", this.handleCheck),
7012 t.on && t.on("challenge-resize", this.handleResize),
7013 this.isMounted = !0
7014 }
7015 ,
7016 He.prototype.unmount = function(t) {
7017 if (this.setAttribute("aria-hidden", !0),
7018 t.destroy)
7019 try {
7020 t.off && t.off("display-check", this.handleCheck),
7021 t.off && t.off("challenge-resize", this.handleResize),
7022 t.destroy()
7023 } catch ($n) {}
7024 else
7025 this.removeElement(t);
7026 return this.isMounted = !1,
7027 null
7028 }
7029 ;
7030 var qe = new He
7031 , Je = null
7032 , Xe = function() {
7033 return !!Je
7034 }
7035 , Ve = function(t, e) {
7036 return new Promise(function(n, i) {
7037 try {
7038 (!Je || Je && Je.type !== e.request_type) && (Je && qe.unmount(Je),
7039 Je = new t,
7040 qe.mount(Je)),
7041 Ue.breadcrumbs.removeCrumbs(),
7042 Je.setup(e).then(n)["catch"](function(t) {
7043 var e = t;
7044 t instanceof Error && (e = {
7045 event: "challenge-error",
7046 message: "Challenge encountered an error during setup.",
7047 reason: t.toString()
7048 }),
7049 i(e)
7050 }),
7051 Je.breadcrumbs && "number" == typeof Je.breadcrumbs && Je.breadcrumbs > 1 && (Ue.breadcrumbs.createCrumbs(Je.breadcrumbs),
7052 Ue.breadcrumbs.setIndex(Je.served))
7053 } catch ($n) {
7054 qe.isMounted || (Je = null),
7055 i({
7056 event: "challenge-error",
7057 message: "Creating challenge failed.",
7058 reason: $n.toString()
7059 })
7060 }
7061 }
7062 )
7063 }
7064 , Ke = function(t, e) {
7065 return Je ? new Promise(function(n, i) {
7066 try {
7067 Je.style(t, e).then(function(t) {
7068 var e = Ue.style(t.width, t.mobile, 10);
7069 qe.style(t.width, t.height, 10);
7070 var i = {
7071 width: t.width + 20,
7072 height: t.height + 20 + e.height
7073 };
7074 ze.style(i.width, i.height, t.mobile),
7075 n({
7076 width: i.width,
7077 height: i.height,
7078 mobile: t.mobile
7079 })
7080 })["catch"](function(t) {
7081 i(t)
7082 })
7083 } catch (An) {
7084 i(An)
7085 }
7086 }
7087 ) : Promise.resolve({
7088 width: 0,
7089 height: 0,
7090 mobile: !1
7091 })
7092 }
7093 , Ye = function() {
7094 Je && Je.submit()
7095 }
7096 , Ge = function() {
7097 return Je.served
7098 }
7099 , Qe = function() {
7100 return Je && Je.breadcrumbs
7101 }
7102 , Ze = function() {
7103 return Je.report && "function" == typeof Je.report
7104 }
7105 , tn = function() {
7106 return new Promise(function(t, e) {
7107 var n = function(e) {
7108 Je.off("report-image", n),
7109 t(e)
7110 };
7111 Je.report(!0),
7112 Je.on("report-image", n)
7113 }
7114 )
7115 }
7116 , en = function() {
7117 Je && Je.report && Je.report(!1)
7118 }
7119 , nn = function() {
7120 Je && (Je = qe.unmount(Je))
7121 };
7122 function sn(t, e) {
7123 var n = t instanceof HTMLIFrameElement;
7124 try {
7125 n ? t.parentNode && t.contentWindow.postMessage(JSON.stringify(e), "*") : t.postMessage(JSON.stringify(e), "*")
7126 } catch ($n) {
7127 I($n.message, "messaging", "error")
7128 }
7129 }
7130 function rn(t, e) {
7131 this.target = t,
7132 this.id = e,
7133 this.messages = [],
7134 this.incoming = [],
7135 this.waiting = []
7136 }
7137 function on(t, e) {
7138 var n = this
7139 , i = {}
7140 , s = new Promise(function(t, e) {
7141 i.resolve = t,
7142 i.reject = e
7143 }
7144 )
7145 , r = {
7146 source: "hcaptcha",
7147 label: t,
7148 id: n.id,
7149 promise: null,
7150 lookup: e
7151 };
7152 return s.then(function(t) {
7153 r.promise = "resolve",
7154 null !== t && (r.contents = t),
7155 sn(n.target, r)
7156 })["catch"](function(t) {
7157 r.promise = "reject",
7158 null !== t && (r.error = t),
7159 sn(n.target, r)
7160 }),
7161 i
7162 }
7163 rn.prototype.setID = function(t) {
7164 this.id = t
7165 }
7166 ,
7167 rn.prototype.contact = function(t, e) {
7168 if (!this.id)
7169 throw new Error("Chat requires unique id to communicate between windows");
7170 var n = this
7171 , i = Date.now().toString(36)
7172 , s = {
7173 source: "hcaptcha",
7174 label: t,
7175 id: this.id,
7176 promise: "create",
7177 lookup: i
7178 };
7179 if (e) {
7180 if ("object" != typeof e)
7181 throw new Error("Message must be an object.");
7182 s.contents = e
7183 }
7184 return new Promise(function(e, r) {
7185 n.waiting.push({
7186 label: t,
7187 reject: r,
7188 resolve: e,
7189 lookup: i
7190 }),
7191 sn(n.target, s)
7192 }
7193 )
7194 }
7195 ,
7196 rn.prototype.listen = function(t, e) {
7197 if (!this.id)
7198 throw new Error("Chat requires unique id to communicate between windows");
7199 for (var n = this.messages.length, i = !1; --n > -1 && !1 === i; )
7200 this.messages[n].label === t && (i = this.messages[n]);
7201 !1 === i && (i = {
7202 label: t,
7203 listeners: []
7204 },
7205 this.messages.push(i)),
7206 i.listeners.push(e)
7207 }
7208 ,
7209 rn.prototype.answer = function(t, e) {
7210 if (!this.id)
7211 throw new Error("Chat requires unique id to communicate between windows");
7212 for (var n = this.incoming.length, i = !1; --n > -1 && !1 === i; )
7213 this.incoming[n].label === t && (i = this.incoming[n]);
7214 !1 === i && (i = {
7215 label: t,
7216 listeners: []
7217 },
7218 this.incoming.push(i)),
7219 i.listeners.push(e)
7220 }
7221 ,
7222 rn.prototype.send = function(t, e) {
7223 if (!this.id)
7224 throw new Error("Chat requires unique id to communicate between windows");
7225 var n = {
7226 source: "hcaptcha",
7227 label: t,
7228 id: this.id
7229 };
7230 if (e) {
7231 if ("object" != typeof e)
7232 throw new Error("Message must be an object.");
7233 n.contents = e
7234 }
7235 sn(this.target, n)
7236 }
7237 ,
7238 rn.prototype.check = function(t, e) {
7239 for (var n = [].concat.apply([], [this.messages, this.incoming, this.waiting]), i = [], s = -1; ++s < n.length; )
7240 if (n[s].label === t) {
7241 if (e && n[s].lookup && e !== n[s].lookup)
7242 continue;
7243 i.push(n[s])
7244 }
7245 return i
7246 }
7247 ,
7248 rn.prototype.respond = function(t) {
7249 for (var e, n, i = -1, s = 0, r = [].concat.apply([], [this.messages, this.incoming, this.waiting]); ++i < r.length; )
7250 if (r[i].label === t.label) {
7251 if (t.lookup && r[i].lookup && t.lookup !== r[i].lookup)
7252 continue;
7253 var o = [];
7254 if (e = r[i],
7255 t.error && o.push(t.error),
7256 t.contents && o.push(t.contents),
7257 t.promise && "create" !== t.promise) {
7258 e[t.promise].apply(e[t.promise], o);
7259 for (var a = this.waiting.length, l = !1; --a > -1 && !1 === l; )
7260 this.waiting[a].label === e.label && this.waiting[a].lookup === e.lookup && (l = !0,
7261 this.waiting.splice(a, 1));
7262 continue
7263 }
7264 for (s = 0; s < e.listeners.length; s++) {
7265 if (n = e.listeners[s],
7266 "create" === t.promise) {
7267 var h = on.call(this, e.label, t.lookup);
7268 o.push(h)
7269 }
7270 n.apply(n, o)
7271 }
7272 }
7273 r = null
7274 }
7275 ,
7276 rn.prototype.destroy = function() {
7277 return this.messages = null,
7278 this.incoming = null,
7279 this.waiting = null,
7280 null
7281 }
7282 ;
7283 var an = {
7284 chats: [],
7285 isSupported: function() {
7286 return !!window.postMessage
7287 },
7288 createChat: function(t, e) {
7289 var n = new rn(t,e);
7290 return an.chats.push(n),
7291 n
7292 },
7293 addChat: function(t) {
7294 an.chats.push(t)
7295 },
7296 removeChat: function(t) {
7297 for (var e = !1, n = an.chats.length; --n > -1 && !1 === e; )
7298 t.id === an.chats[n].id && t.target === an.chats[n].target && (e = an.chats[n],
7299 an.chats.splice(n, 1));
7300 return e
7301 },
7302 handle: function(t) {
7303 if (null !== t.data && "string" == typeof t.data)
7304 try {
7305 var e = t.data;
7306 if (!("string" == typeof e && e.indexOf("hcaptcha") >= 0))
7307 return;
7308 e = JSON.parse(e);
7309 for (var n, i = an.chats, s = -1; ++s < i.length; )
7310 (n = i[s]).id === e.id && n.respond(e)
7311 } catch ($n) {
7312 M("postMessage handler error", "postMessage", "debug", {
7313 event: t,
7314 error: $n
7315 })
7316 }
7317 }
7318 };
7319 window.addEventListener ? window.addEventListener("message", an.handle) : window.attachEvent("onmessage", an.handle);
7320 var ln = new rn(window.parent);
7321 ln.init = function(t) {
7322 ln.setID(t),
7323 an.addChat(ln)
7324 }
7325 ;
7326 var hn = Object.create(null)
7327 , cn = null
7328 , un = null
7329 , dn = null
7330 , pn = {
7331 solve: function(t) {
7332 return cn = null,
7333 un = t,
7334 dn = new Promise(function(e, n) {
7335 try {
7336 var i = Ut.decode(t.req);
7337 M("Solve Proof", "proof", "info", t);
7338 var s = i.payload.l + "/" + t.type + ".js";
7339 (function(t, e) {
7340 return new Promise(function(n, i) {
7341 var s = hn[t];
7342 s ? n(s) : Wt.script(e).then(function() {
7343 s = window[t],
7344 hn[t] = s,
7345 n(s)
7346 })["catch"](i)
7347 }
7348 )
7349 }
7350 )(t.type, s).then(function(e) {
7351 return e(t.req)
7352 }).then(function(t) {
7353 cn = t,
7354 e(t)
7355 })["catch"](function(t) {
7356 var n = t.name || "Proof Error"
7357 , i = t.message || "Error";
7358 M(i, "proof", "debug", {
7359 stack: t.stack || ""
7360 }),
7361 I(n + ": " + i, "proof", "error"),
7362 cn = "fail",
7363 e()
7364 })["finally"](function() {
7365 dn = null
7366 })
7367 } catch ($n) {
7368 I("JWT Failed: " + JSON.stringify($n), "error", "proof"),
7369 e(),
7370 dn = null
7371 }
7372 }
7373 )
7374 },
7375 getResult: function() {
7376 return new Promise(function(t, e) {
7377 function n() {
7378 var e = cn
7379 , n = un;
7380 return cn = null,
7381 un = null,
7382 t({
7383 solved: e,
7384 spec: n
7385 })
7386 }
7387 if (!dn)
7388 return n();
7389 dn["finally"](n)
7390 }
7391 )
7392 }
7393 };
7394 var fn = null
7395 , mn = !1
7396 , gn = {
7397 init: function() {
7398 fn = new B(document.body),
7399 Ue.load(),
7400 fn.appendElement(qe),
7401 fn.appendElement(Ue),
7402 fn.appendElement(ze),
7403 ze.on("close", function() {
7404 mn && Ue.focusMenuBtn(),
7405 en(!1)
7406 })
7407 },
7408 create: function(t, e) {
7409 return new Promise(function(n, i) {
7410 re.getTaskData(t, e).then(function(t) {
7411 return t.pass || !1 === t.success ? t : (ln.send("challenge-key", {
7412 key: t.key
7413 }),
7414 re.loadBundle(t).then(function(e) {
7415 mn = !0,
7416 ct.resetData(),
7417 ct.record(!0, !0, !0, !0),
7418 ct.setData("dct", Date.now());
7419 var n = Ve(e, re.getData());
7420 return t.c && pn.solve(t.c),
7421 Ke(S.browserWidth, S.browserHeight).then(function(t) {
7422 ln.send("challenge-ready", t)
7423 })["catch"](function(t) {
7424 throw t
7425 }),
7426 n
7427 }).then(function(t) {
7428 return new Promise(function(e, n) {
7429 Promise.all([pn.getResult(), ln.contact("check-api")]).then(function(n) {
7430 e({
7431 answers: t,
7432 proof: n[0],
7433 motionData: n[1]
7434 })
7435 })
7436 }
7437 )
7438 }).then(function(t) {
7439 ct.stop();
7440 var e = t.answers
7441 , n = t.proof
7442 , i = ct.getData();
7443 return i.topLevel = t.motionData,
7444 re.checkAnswers(e, i, n)
7445 }))
7446 }).then(function(t) {
7447 t.c && pn.solve(t.c),
7448 n(t)
7449 })["catch"](function(t) {
7450 i(t)
7451 })
7452 }
7453 )
7454 },
7455 size: function(t, e) {
7456 return Ke(t, e)
7457 },
7458 submit: function() {
7459 return "skip" === Ue.action ? Promise.resolve("challenge-skip") : new Promise(function(t, e) {
7460 try {
7461 if (Ye(),
7462 Qe()) {
7463 var n = Ge();
7464 Ue.breadcrumbs.setIndex(n)
7465 }
7466 t("challenge-complete")
7467 } catch ($n) {
7468 e($n)
7469 }
7470 }
7471 )
7472 },
7473 displayReport: function() {
7474 return new Promise(function(t, e) {
7475 var n = re.getData();
7476 try {
7477 if (!Xe())
7478 return void t();
7479 if (!Ze()) {
7480 var i = null;
7481 if ("fallback" === n.request_type)
7482 i = n.key;
7483 else {
7484 var s = Qe() ? Ge() - 1 : 0;
7485 i = n.tasklist[s].task_key
7486 }
7487 return void t(i)
7488 }
7489 tn().then(function(e) {
7490 t(e)
7491 }),
7492 Ue.breadcrumbs && Ue.breadcrumbs.hide()
7493 } catch (An) {
7494 e(An)
7495 }
7496 }
7497 )
7498 },
7499 hideReport: function(t) {
7500 en(!1)
7501 },
7502 close: function() {
7503 nn(),
7504 Ue.displayFail(!1),
7505 Ue.breadcrumbs.removeCrumbs(),
7506 Ue.closeMenu(),
7507 ze.close(),
7508 mn = !1
7509 },
7510 translate: function(t) {
7511 if (t && t.locale && t.table)
7512 try {
7513 U.addTable(t.locale, t.table),
7514 Ue.translate(),
7515 ze.isOpen() && ze.translate()
7516 } catch (An) {
7517 I("Failed to update text translations: " + JSON.stringify(An), "error", "translation")
7518 }
7519 }
7520 }
7521 , yn = null
7522 , vn = 2
7523 , bn = 0
7524 , wn = null
7525 , kn = function(t) {
7526 for (var e, n, i, s = {}, r = t ? t.indexOf("&") >= 0 ? t.split("&") : [t] : [], o = 0; o < r.length; o++)
7527 r[o].indexOf("=") >= 0 && (e = r[o].split("="),
7528 n = decodeURIComponent(e[0]),
7529 "false" !== (i = decodeURIComponent(e[1])) && "true" !== i || (i = "true" === i),
7530 s[n] = i);
7531 return s
7532 }(window.location.hash.slice(1));
7533 function xn(t) {
7534 pn.getResult().then(function(e) {
7535 return gn.create(t, e)
7536 }).then(function(t) {
7537 if (t.pass)
7538 ln.send("challenge-closed", {
7539 event: "challenge-passed",
7540 response: t.generated_pass_UUID,
7541 expiration: t.expiration
7542 });
7543 else if (!1 === t.success) {
7544 var e = t["error-codes"] || [];
7545 if (e.indexOf("expired-session") >= 0 || e.indexOf("client-fail") >= 0)
7546 return void _n();
7547 ln.send("challenge-closed", {
7548 event: "network-error",
7549 message: (t["error-codes"] || [""]).join(", ")
7550 })
7551 } else
7552 Ue.displayFail(!0),
7553 _n()
7554 })["catch"](function(t) {
7555 var e = t instanceof Error ? {
7556 event: "challenge-error",
7557 message: t.message || ""
7558 } : t;
7559 re.logAction(e.event),
7560 ("challenge-error" === e.event || "bundle-error" === e.event) && bn <= vn ? (bn += 1,
7561 _n()) : (bn = 0,
7562 ln.send("challenge-closed", e))
7563 })
7564 }
7565 function _n() {
7566 xn(ct.getData())
7567 }
7568 function En(t, e) {
7569 S.browserWidth = t.width,
7570 S.browserHeight = t.height,
7571 gn.size(t.width, t.height).then(function(t) {
7572 e.resolve(t),
7573 M("challenge resized", "challenge", "info", t)
7574 })
7575 }
7576 function Cn() {
7577 M("challenge refresh", "challenge", "info"),
7578 re.logAction("challenge-refresh"),
7579 _n()
7580 }
7581 function Sn() {
7582 gn.submit().then(function(t) {
7583 re.logAction(t),
7584 "challenge-skip" !== t || _n()
7585 })["catch"](function(t) {
7586 j(t),
7587 re.logAction("challenge-error"),
7588 _n()
7589 })
7590 }
7591 function On() {
7592 gn.displayReport().then(function(t) {
7593 if (t) {
7594 var e = function() {
7595 Cn(),
7596 ze.off("refresh", e)
7597 };
7598 ze.display("report_image", {
7599 key: t
7600 }),
7601 ze.on("refresh", e)
7602 }
7603 })["catch"](function(t) {
7604 j(t),
7605 Cn()
7606 })
7607 }
7608 return kn.sentry && qt(),
7609 function(t) {
7610 S.host = t.host,
7611 S.sitekey = t.sitekey,
7612 S.file = "challenge",
7613 yn = t.id,
7614 t.sentry !== undefined && "undefined" !== t.sentry && (e = t.sentry,
7615 L = e);
7616 var e;
7617 t.endpoint !== undefined && "undefined" !== t.endpoint && ($.endpoint = t.endpoint);
7618 t.reportapi !== undefined && "undefined" !== t.reportapi && ($.reportapi = t.reportapi);
7619 t.assethost !== undefined && "undefined" !== t.assethost && ($.assethost = t.assethost);
7620 t.imghost !== undefined && "undefined" !== t.imghost && ($.imghost = t.imghost);
7621 t.hl !== undefined && "undefined" !== t.hl && ($.language = t.hl,
7622 U.setLocale($.language))
7623 }(kn),
7624 mt(function() {
7625 gn.init(),
7626 ln.init(yn),
7627 wn = new B(document.body),
7628 ln.answer("create-challenge", function(t) {
7629 var e = {};
7630 if (t) {
7631 t.width && (S.browserWidth = t.width,
7632 S.browserHeight = t.height),
7633 t.manifest && (e = t.manifest);
7634 var n = t.charity && !0 === t.charity;
7635 Ue.setupLogo(n, t.link)
7636 }
7637 xn(e)
7638 }),
7639 ln.answer("close-challenge", gn.close),
7640 ln.answer("resize-challenge", En),
7641 ln.answer("challenge-translate", gn.translate),
7642 ln.answer("solve-proof", function(t, e) {
7643 pn.solve(t),
7644 e.resolve()
7645 }),
7646 ln.contact("get-url").then(function(t) {
7647 S.url = t
7648 }),
7649 Ue.on("refresh", Cn),
7650 Ue.on("submit", Sn),
7651 Ue.on("report", On),
7652 qe.on("resize", function() {
7653 ln.send("challenge-resize")
7654 }),
7655 wn.addEventListener("down", function(t) {
7656 Ue.displayFail(!1)
7657 }),
7658 wn.addEventListener("keydown", function(t) {
7659 27 === t.keyNum && (ze.isOpen() ? (ze.close(),
7660 gn.hideReport()) : Ue.isMenuOpen() ? (Ue.closeMenu(),
7661 Ue.focusMenuBtn()) : (ln.send("challenge-closed", {
7662 event: "challenge-escaped"
7663 }),
7664 gn.close()))
7665 }),
7666 wn.addEventListener("down", function() {
7667 wn.hasClass("using-kb") && wn.removeClass("using-kb")
7668 }),
7669 wn.addEventListener("keydown", function(t) {
7670 9 === t.keyNum && wn.addClass("using-kb")
7671 }),
7672 ct.resetData(),
7673 ln.send("challenge-loaded")
7674 }),
7675 {
7676 core: wt,
7677 lib: Ht,
7678 context: {
7679 Config: $,
7680 Color: O
7681 }
7682 }
7683}();