@ngx-rock/yandex-smart-captcha 20.0.0 → 20.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -218,9 +218,9 @@ Distributed under the MIT License.
|
|
|
218
218
|
|
|
219
219
|
---
|
|
220
220
|
|
|
221
|
-
## References
|
|
221
|
+
## References
|
|
222
222
|
|
|
223
|
-
- [Yandex SmartCaptcha Documentation (React)](https://yandex.cloud/en-ru/docs/smartcaptcha/concepts/react?utm_referrer=about%3Ablank)
|
|
223
|
+
- [Yandex SmartCaptcha 2.9.0 Documentation (React)](https://yandex.cloud/en-ru/docs/smartcaptcha/concepts/react?utm_referrer=about%3Ablank)
|
|
224
224
|
|
|
225
225
|
---
|
|
226
226
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, output, viewChild,
|
|
2
|
+
import { input, output, viewChild, inject, Renderer2, DOCUMENT, PLATFORM_ID, signal, effect, forwardRef, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
|
|
4
4
|
import { isPlatformBrowser } from '@angular/common';
|
|
5
5
|
|
|
@@ -34,29 +34,29 @@ const API_LINK = (host = 'smartcaptcha.yandexcloud.net') => {
|
|
|
34
34
|
const callbacks = [];
|
|
35
35
|
const startLoading = new Map();
|
|
36
36
|
class SmartCaptchaComponent {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
shieldPosition = input();
|
|
45
|
-
language = input();
|
|
46
|
-
host = input();
|
|
37
|
+
sitekey = input.required(...(ngDevMode ? [{ debugName: "sitekey" }] : []));
|
|
38
|
+
invisible = input(false, ...(ngDevMode ? [{ debugName: "invisible" }] : []));
|
|
39
|
+
visible = input(...(ngDevMode ? [undefined, { debugName: "visible" }] : [])); // For InvisibleCaptcha to execute
|
|
40
|
+
hideShield = input(...(ngDevMode ? [undefined, { debugName: "hideShield" }] : []));
|
|
41
|
+
shieldPosition = input(...(ngDevMode ? [undefined, { debugName: "shieldPosition" }] : []));
|
|
42
|
+
language = input(...(ngDevMode ? [undefined, { debugName: "language" }] : []));
|
|
43
|
+
host = input(...(ngDevMode ? [undefined, { debugName: "host" }] : []));
|
|
47
44
|
/**
|
|
48
45
|
* @deprecated This setting is deprecated and must only be changed via the Yandex Cloud interface.
|
|
49
46
|
*/
|
|
50
|
-
theme = input('auto');
|
|
51
|
-
test = input();
|
|
52
|
-
webview = input();
|
|
47
|
+
theme = input('auto', ...(ngDevMode ? [{ debugName: "theme" }] : []));
|
|
48
|
+
test = input(...(ngDevMode ? [undefined, { debugName: "test" }] : []));
|
|
49
|
+
webview = input(...(ngDevMode ? [undefined, { debugName: "webview" }] : []));
|
|
53
50
|
challengeHidden = output();
|
|
54
51
|
challengeVisible = output();
|
|
55
52
|
success = output();
|
|
56
53
|
networkError = output();
|
|
57
54
|
tokenExpired = output();
|
|
58
55
|
javascriptError = output();
|
|
59
|
-
captchaContainer = viewChild('captchaContainer');
|
|
56
|
+
captchaContainer = viewChild('captchaContainer', ...(ngDevMode ? [{ debugName: "captchaContainer" }] : []));
|
|
57
|
+
renderer2 = inject(Renderer2);
|
|
58
|
+
document = inject(DOCUMENT);
|
|
59
|
+
platformId = inject(PLATFORM_ID);
|
|
60
60
|
widgetId;
|
|
61
61
|
smartCaptchaInstance;
|
|
62
62
|
destroyed = false;
|
|
@@ -68,12 +68,9 @@ class SmartCaptchaComponent {
|
|
|
68
68
|
onTouched = () => {
|
|
69
69
|
// onTouched
|
|
70
70
|
};
|
|
71
|
-
_innerValue = signal(null
|
|
71
|
+
_innerValue = signal(null, ...(ngDevMode ? [{ debugName: "_innerValue" }] : []));
|
|
72
72
|
callbackIndex = null;
|
|
73
|
-
constructor(
|
|
74
|
-
this.renderer2 = renderer2;
|
|
75
|
-
this.document = document;
|
|
76
|
-
this.platformId = platformId;
|
|
73
|
+
constructor() {
|
|
77
74
|
// Effect for theme changes
|
|
78
75
|
effect(() => {
|
|
79
76
|
if (this.theme() &&
|
|
@@ -95,7 +92,7 @@ class SmartCaptchaComponent {
|
|
|
95
92
|
}
|
|
96
93
|
ngOnInit() {
|
|
97
94
|
if (!isPlatformBrowser(this.platformId)) {
|
|
98
|
-
return;
|
|
95
|
+
return;
|
|
99
96
|
}
|
|
100
97
|
if (this.host() !== undefined && !isValidHost(this.host())) {
|
|
101
98
|
console.error(`[SmartCaptcha] ${this.host()} host is invalid. It should be of a kind: domain.ru, localhost:3000`);
|
|
@@ -285,8 +282,8 @@ class SmartCaptchaComponent {
|
|
|
285
282
|
}
|
|
286
283
|
return null;
|
|
287
284
|
}
|
|
288
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
289
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.
|
|
285
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SmartCaptchaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
286
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.9", type: SmartCaptchaComponent, isStandalone: true, selector: "smart-captcha", inputs: { sitekey: { classPropertyName: "sitekey", publicName: "sitekey", isSignal: true, isRequired: true, transformFunction: null }, invisible: { classPropertyName: "invisible", publicName: "invisible", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, hideShield: { classPropertyName: "hideShield", publicName: "hideShield", isSignal: true, isRequired: false, transformFunction: null }, shieldPosition: { classPropertyName: "shieldPosition", publicName: "shieldPosition", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, host: { classPropertyName: "host", publicName: "host", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, test: { classPropertyName: "test", publicName: "test", isSignal: true, isRequired: false, transformFunction: null }, webview: { classPropertyName: "webview", publicName: "webview", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { challengeHidden: "challengeHidden", challengeVisible: "challengeVisible", success: "success", networkError: "networkError", tokenExpired: "tokenExpired", javascriptError: "javascriptError" }, providers: [
|
|
290
287
|
{
|
|
291
288
|
provide: NG_VALUE_ACCESSOR,
|
|
292
289
|
useExisting: forwardRef(() => SmartCaptchaComponent),
|
|
@@ -299,7 +296,7 @@ class SmartCaptchaComponent {
|
|
|
299
296
|
},
|
|
300
297
|
], viewQueries: [{ propertyName: "captchaContainer", first: true, predicate: ["captchaContainer"], descendants: true, isSignal: true }], ngImport: i0, template: ` <div class="smart-captcha" #captchaContainer></div> `, isInline: true, styles: [".smart-captcha{height:102px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
301
298
|
}
|
|
302
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
299
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SmartCaptchaComponent, decorators: [{
|
|
303
300
|
type: Component,
|
|
304
301
|
args: [{ selector: 'smart-captcha', template: ` <div class="smart-captcha" #captchaContainer></div> `, providers: [
|
|
305
302
|
{
|
|
@@ -313,23 +310,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
|
|
|
313
310
|
multi: true,
|
|
314
311
|
},
|
|
315
312
|
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [".smart-captcha{height:102px}\n"] }]
|
|
316
|
-
}], ctorParameters: () => [{ type: i0.
|
|
317
|
-
type: Inject,
|
|
318
|
-
args: [DOCUMENT]
|
|
319
|
-
}] }, { type: undefined, decorators: [{
|
|
320
|
-
type: Inject,
|
|
321
|
-
args: [PLATFORM_ID]
|
|
322
|
-
}] }] });
|
|
313
|
+
}], ctorParameters: () => [], propDecorators: { sitekey: [{ type: i0.Input, args: [{ isSignal: true, alias: "sitekey", required: true }] }], invisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "invisible", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], hideShield: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideShield", required: false }] }], shieldPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "shieldPosition", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], host: [{ type: i0.Input, args: [{ isSignal: true, alias: "host", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], test: [{ type: i0.Input, args: [{ isSignal: true, alias: "test", required: false }] }], webview: [{ type: i0.Input, args: [{ isSignal: true, alias: "webview", required: false }] }], challengeHidden: [{ type: i0.Output, args: ["challengeHidden"] }], challengeVisible: [{ type: i0.Output, args: ["challengeVisible"] }], success: [{ type: i0.Output, args: ["success"] }], networkError: [{ type: i0.Output, args: ["networkError"] }], tokenExpired: [{ type: i0.Output, args: ["tokenExpired"] }], javascriptError: [{ type: i0.Output, args: ["javascriptError"] }], captchaContainer: [{ type: i0.ViewChild, args: ['captchaContainer', { isSignal: true }] }] } });
|
|
323
314
|
class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent {
|
|
324
315
|
// Always set invisible to true
|
|
325
|
-
invisible = input(true);
|
|
316
|
+
invisible = input(true, ...(ngDevMode ? [{ debugName: "invisible" }] : []));
|
|
326
317
|
// Override ngOnInit to ensure invisible is always true
|
|
327
318
|
ngOnInit() {
|
|
328
319
|
// Call parent initialization
|
|
329
320
|
super.ngOnInit();
|
|
330
321
|
}
|
|
331
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
332
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.
|
|
322
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: InvisibleSmartCaptchaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
323
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.9", type: InvisibleSmartCaptchaComponent, isStandalone: true, selector: "invisible-smart-captcha", inputs: { invisible: { classPropertyName: "invisible", publicName: "invisible", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
333
324
|
{
|
|
334
325
|
provide: NG_VALUE_ACCESSOR,
|
|
335
326
|
useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),
|
|
@@ -342,7 +333,7 @@ class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent {
|
|
|
342
333
|
},
|
|
343
334
|
], usesInheritance: true, ngImport: i0, template: ` <div class="smart-captcha" #captchaContainer></div> `, isInline: true, styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
344
335
|
}
|
|
345
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: InvisibleSmartCaptchaComponent, decorators: [{
|
|
346
337
|
type: Component,
|
|
347
338
|
args: [{ selector: 'invisible-smart-captcha', template: ` <div class="smart-captcha" #captchaContainer></div> `, providers: [
|
|
348
339
|
{
|
|
@@ -356,7 +347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
|
|
|
356
347
|
multi: true,
|
|
357
348
|
},
|
|
358
349
|
], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush }]
|
|
359
|
-
}] });
|
|
350
|
+
}], propDecorators: { invisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "invisible", required: false }] }] } });
|
|
360
351
|
|
|
361
352
|
/**
|
|
362
353
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-rock-yandex-smart-captcha.mjs","sources":["../tmp-esm2022/lib/helpers/is-valid-host.js","../tmp-esm2022/lib/yandex-smart-captcha/yandex-smart-captcha.component.js","../tmp-esm2022/ngx-rock-yandex-smart-captcha.js"],"sourcesContent":["const domainRE = /^(\\S+)$/;\nconst localhostDomainRE = /^localhost[:?\\d]*(?:[^:?\\d]\\S*)?$/;\nconst nonLocalhostDomainRE = /^[^\\s.]+\\.\\S{2,}$/;\nconst IPv4RE = /^(https?:\\/\\/)?([0-9]{1,3}\\.){3}[0-9]{1,3}:\\d+$/;\nconst IPv6RE = /^(https?:\\/\\/)?\\[([0-9a-fA-F]{0,4}:){7}([0-9a-fA-F]){0,4}]:\\d+$/;\nexport function isValidHost(str) {\n if (typeof str !== 'string') {\n return false;\n }\n const match = str.match(domainRE);\n if (!match) {\n return false;\n }\n const everythingAfterProtocol = match[0];\n if (!everythingAfterProtocol) {\n return false;\n }\n return (localhostDomainRE.test(everythingAfterProtocol) ||\n nonLocalhostDomainRE.test(everythingAfterProtocol) ||\n IPv4RE.test(everythingAfterProtocol) ||\n IPv6RE.test(everythingAfterProtocol));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtdmFsaWQtaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveWFuZGV4LXNtYXJ0LWNhcHRjaGEvc3JjL2xpYi9oZWxwZXJzL2lzLXZhbGlkLWhvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBQzNCLE1BQU0saUJBQWlCLEdBQUcsbUNBQW1DLENBQUM7QUFDOUQsTUFBTSxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztBQUNqRCxNQUFNLE1BQU0sR0FBRyxpREFBaUQsQ0FBQztBQUNqRSxNQUFNLE1BQU0sR0FDVixpRUFBaUUsQ0FBQztBQUVwRSxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQXVCO0lBQ2pELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUM3QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLENBQ0wsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQy9DLG9CQUFvQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FDckMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkb21haW5SRSA9IC9eKFxcUyspJC87XG5jb25zdCBsb2NhbGhvc3REb21haW5SRSA9IC9ebG9jYWxob3N0Wzo/XFxkXSooPzpbXjo/XFxkXVxcUyopPyQvO1xuY29uc3Qgbm9uTG9jYWxob3N0RG9tYWluUkUgPSAvXlteXFxzLl0rXFwuXFxTezIsfSQvO1xuY29uc3QgSVB2NFJFID0gL14oaHR0cHM/OlxcL1xcLyk/KFswLTldezEsM31cXC4pezN9WzAtOV17MSwzfTpcXGQrJC87XG5jb25zdCBJUHY2UkUgPVxuICAvXihodHRwcz86XFwvXFwvKT9cXFsoWzAtOWEtZkEtRl17MCw0fTopezd9KFswLTlhLWZBLUZdKXswLDR9XTpcXGQrJC87XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkSG9zdChzdHI6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSBzdHIubWF0Y2goZG9tYWluUkUpO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGV2ZXJ5dGhpbmdBZnRlclByb3RvY29sID0gbWF0Y2hbMF07XG4gIGlmICghZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICBsb2NhbGhvc3REb21haW5SRS50ZXN0KGV2ZXJ5dGhpbmdBZnRlclByb3RvY29sKSB8fFxuICAgIG5vbkxvY2FsaG9zdERvbWFpblJFLnRlc3QoZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpIHx8XG4gICAgSVB2NFJFLnRlc3QoZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpIHx8XG4gICAgSVB2NlJFLnRlc3QoZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpXG4gICk7XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, effect, forwardRef, Inject, input, output, PLATFORM_ID, Renderer2, signal, viewChild, DOCUMENT } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport { isPlatformBrowser } from '@angular/common';\nimport { isValidHost } from '../helpers/is-valid-host';\nimport * as i0 from \"@angular/core\";\nconst API_LINK = (host = 'smartcaptcha.yandexcloud.net') => {\n const base = /^https?/.test(host) ? host : `https://${host}`;\n return `${base}/captcha.js?render=onload&onload=__onSmartCaptchaReady`;\n};\n// Shared callbacks array\nconst callbacks = [];\nexport const startLoading = new Map();\nexport class SmartCaptchaComponent {\n renderer2;\n document;\n platformId;\n sitekey = input.required();\n invisible = input(false);\n visible = input(); // For InvisibleCaptcha to execute\n hideShield = input();\n shieldPosition = input();\n language = input();\n host = input();\n /**\n * @deprecated This setting is deprecated and must only be changed via the Yandex Cloud interface.\n */\n theme = input('auto');\n test = input();\n webview = input();\n challengeHidden = output();\n challengeVisible = output();\n success = output();\n networkError = output();\n tokenExpired = output();\n javascriptError = output();\n captchaContainer = viewChild('captchaContainer');\n widgetId;\n smartCaptchaInstance;\n destroyed = false;\n unsubscribeFns = [];\n errorEventHandler;\n onChange = () => {\n // onChange\n };\n onTouched = () => {\n // onTouched\n };\n _innerValue = signal(null); // Use a signal for innerValue\n callbackIndex = null;\n constructor(renderer2, document, platformId) {\n this.renderer2 = renderer2;\n this.document = document;\n this.platformId = platformId;\n // Effect for theme changes\n effect(() => {\n if (this.theme() &&\n this.widgetId !== undefined &&\n this.smartCaptchaInstance?.setTheme) {\n this.smartCaptchaInstance.setTheme(this.widgetId, this.theme());\n }\n });\n // Effect for visible changes (Invisible Captcha)\n effect(() => {\n if (this.visible() &&\n this.invisible() &&\n this.smartCaptchaInstance &&\n typeof this.widgetId === 'number' &&\n !this.destroyed) {\n this.smartCaptchaInstance.execute(this.widgetId);\n }\n });\n }\n ngOnInit() {\n if (!isPlatformBrowser(this.platformId)) {\n return; // Don't proceed on server-side\n }\n if (this.host() !== undefined && !isValidHost(this.host())) {\n console.error(`[SmartCaptcha] ${this.host()} host is invalid. It should be of a kind: domain.ru, localhost:3000`);\n return;\n }\n if (typeof window !== 'undefined') {\n // Setup global callback if not already defined\n if (window.__onSmartCaptchaReady === undefined) {\n window.__onSmartCaptchaReady = () => {\n callbacks.forEach((callback) => callback());\n };\n }\n // Check if SmartCaptcha is already loaded\n if (window.smartCaptcha) {\n this.smartCaptchaInstance = window.smartCaptcha;\n }\n // Add our callback to the shared array\n this.callbackIndex = callbacks.push(() => {\n this.smartCaptchaInstance = window.smartCaptcha;\n this.renderCaptcha();\n });\n // Load script if not already loading\n const hostKey = this.host() || 'default';\n if (!startLoading.get(hostKey)) {\n this.loadScript();\n startLoading.set(hostKey, true);\n }\n }\n }\n ngAfterViewInit() {\n if (this.smartCaptchaInstance) {\n this.renderCaptcha();\n }\n }\n ngOnDestroy() {\n this.destroyed = true;\n // Remove callback from shared array\n if (this.callbackIndex !== null) {\n callbacks.splice(this.callbackIndex - 1, 1);\n }\n // Destroy widget if it exists\n if (this.widgetId !== undefined && this.smartCaptchaInstance) {\n this.smartCaptchaInstance.destroy(this.widgetId);\n this.widgetId = undefined;\n }\n // Clean up subscriptions\n this.unsubscribeFns.forEach((fn) => fn && fn());\n this.unsubscribeFns = [];\n // Remove error event handler\n if (this.errorEventHandler && typeof window !== 'undefined') {\n window.removeEventListener('error', this.errorEventHandler);\n }\n }\n loadScript() {\n const src = API_LINK(this.host());\n const script = this.renderer2.createElement('script');\n this.renderer2.setAttribute(script, 'src', src);\n this.renderer2.setAttribute(script, 'type', 'text/javascript');\n this.renderer2.setAttribute(script, 'crossOrigin', 'anonymous');\n // Handle regular onload/onerror\n script.onload = () => {\n if (window.smartCaptcha && !this.smartCaptchaInstance) {\n this.smartCaptchaInstance = window.smartCaptcha;\n this.renderCaptcha();\n }\n };\n script.onerror = () => {\n this.handleJavascriptError({\n filename: src,\n message: 'Unknown error on script loading',\n col: 0,\n line: 0,\n });\n };\n // Add error event listener for JS errors in the captcha script\n if (typeof window !== 'undefined') {\n this.errorEventHandler = (e) => {\n if (e.filename?.indexOf(src) === 0) {\n this.handleJavascriptError({\n filename: e.filename,\n message: e.message,\n col: e.colno,\n line: e.lineno,\n });\n }\n };\n window.addEventListener('error', this.errorEventHandler);\n }\n // Add script to document\n this.renderer2.appendChild(this.document.body, script);\n }\n renderCaptcha() {\n const container = this.captchaContainer()?.nativeElement;\n if (!container ||\n !this.smartCaptchaInstance ||\n this.widgetId !== undefined ||\n this.destroyed) {\n return;\n }\n const params = {\n sitekey: this.sitekey(),\n hl: this.language(),\n theme: this.theme(),\n invisible: this.invisible(),\n hideShield: this.hideShield(),\n shieldPosition: this.shieldPosition(),\n test: this.test(),\n webview: this.webview(),\n };\n try {\n this.widgetId = this.smartCaptchaInstance.render(container, params);\n this.setupSubscriptions();\n }\n catch (error) {\n console.error('[SmartCaptcha] Error rendering captcha widget:', error);\n let message = 'Unknown error during rendering';\n if (error instanceof Error) {\n message = error.message;\n }\n this.handleJavascriptError({\n filename: API_LINK(this.host()),\n message,\n col: 0,\n line: 0,\n });\n }\n }\n setupSubscriptions() {\n if (this.widgetId === undefined || !this.smartCaptchaInstance) {\n return;\n }\n // Store unsubscribe functions for cleanup\n this.unsubscribeFns = [\n this.smartCaptchaInstance.subscribe(this.widgetId, 'challenge-visible', () => {\n this.challengeVisible.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'challenge-hidden', () => {\n console.error('hidden');\n this.challengeHidden.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'network-error', () => {\n this.networkError.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'success', (...args) => {\n const [token] = args;\n this._innerValue.set(token);\n this.onChange(token);\n this.onTouched();\n this.success.emit(token);\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'token-expired', () => {\n this._innerValue.set(null);\n this.onChange(null);\n this.onTouched();\n this.tokenExpired.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'javascript-error', (...args) => {\n const [error] = args;\n this.handleJavascriptError(error);\n }),\n ];\n }\n handleJavascriptError(error) {\n console.error('[SmartCaptcha] Javascript error:', error);\n this.javascriptError.emit(error);\n }\n // ControlValueAccessor methods\n writeValue(value) {\n this._innerValue.set(value); // Set the signal value\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n // Validator method\n validate() {\n // When using invisible captcha, don't validate until user interacts\n if (this.invisible() && !this._innerValue()) {\n return null;\n }\n // For standard captcha, require token\n if (!this.invisible() && !this._innerValue()) {\n // Access signal value\n return { captchaRequired: true };\n }\n return null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: SmartCaptchaComponent, deps: [{ token: i0.Renderer2 }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.0.4\", type: SmartCaptchaComponent, isStandalone: true, selector: \"smart-captcha\", inputs: { sitekey: { classPropertyName: \"sitekey\", publicName: \"sitekey\", isSignal: true, isRequired: true, transformFunction: null }, invisible: { classPropertyName: \"invisible\", publicName: \"invisible\", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: \"visible\", publicName: \"visible\", isSignal: true, isRequired: false, transformFunction: null }, hideShield: { classPropertyName: \"hideShield\", publicName: \"hideShield\", isSignal: true, isRequired: false, transformFunction: null }, shieldPosition: { classPropertyName: \"shieldPosition\", publicName: \"shieldPosition\", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: \"language\", publicName: \"language\", isSignal: true, isRequired: false, transformFunction: null }, host: { classPropertyName: \"host\", publicName: \"host\", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: \"theme\", publicName: \"theme\", isSignal: true, isRequired: false, transformFunction: null }, test: { classPropertyName: \"test\", publicName: \"test\", isSignal: true, isRequired: false, transformFunction: null }, webview: { classPropertyName: \"webview\", publicName: \"webview\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { challengeHidden: \"challengeHidden\", challengeVisible: \"challengeVisible\", success: \"success\", networkError: \"networkError\", tokenExpired: \"tokenExpired\", javascriptError: \"javascriptError\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n ], viewQueries: [{ propertyName: \"captchaContainer\", first: true, predicate: [\"captchaContainer\"], descendants: true, isSignal: true }], ngImport: i0, template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, isInline: true, styles: [\".smart-captcha{height:102px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: SmartCaptchaComponent, decorators: [{\n type: Component,\n args: [{ selector: 'smart-captcha', template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [\".smart-captcha{height:102px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }] });\nexport class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent {\n // Always set invisible to true\n invisible = input(true);\n // Override ngOnInit to ensure invisible is always true\n ngOnInit() {\n // Call parent initialization\n super.ngOnInit();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: InvisibleSmartCaptchaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.4\", type: InvisibleSmartCaptchaComponent, isStandalone: true, selector: \"invisible-smart-captcha\", inputs: { invisible: { classPropertyName: \"invisible\", publicName: \"invisible\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n ], usesInheritance: true, ngImport: i0, template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, isInline: true, styles: [\"\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: InvisibleSmartCaptchaComponent, decorators: [{\n type: Component,\n args: [{ selector: 'invisible-smart-captcha', template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFuZGV4LXNtYXJ0LWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95YW5kZXgtc21hcnQtY2FwdGNoYS9zcmMvbGliL3lhbmRleC1zbWFydC1jYXB0Y2hhL3lhbmRleC1zbWFydC1jYXB0Y2hhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBRU4sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGFBQWEsRUFDYixpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBT3ZELE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxHQUFHLDhCQUE4QixFQUFFLEVBQUU7SUFDekQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQzdELE9BQU8sR0FBRyxJQUFJLHdEQUF3RCxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUVGLHlCQUF5QjtBQUN6QixNQUFNLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQTJCdkQsTUFBTSxPQUFPLHFCQUFxQjtJQTRDdEI7SUFDa0I7SUFDRztJQTNDL0IsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FB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QUErQixDQUFDOzRCQUM3RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUM7NEJBQzdELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLGNBQ1csSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIGlucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgb3V0cHV0LFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbiAgRE9DVU1FTlRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaXNWYWxpZEhvc3QgfSBmcm9tICcuLi9oZWxwZXJzL2lzLXZhbGlkLWhvc3QnO1xuaW1wb3J0IHtcbiAgSmF2YXNjcmlwdEVycm9yUGF5bG9hZCxcbiAgU21hcnRDYXB0Y2hhSW5zdGFuY2UsXG4gIFNtYXJ0Q2FwdGNoYVBhcmFtcyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBBUElfTElOSyA9IChob3N0ID0gJ3NtYXJ0Y2FwdGNoYS55YW5kZXhjbG91ZC5uZXQnKSA9PiB7XG4gIGNvbnN0IGJhc2UgPSAvXmh0dHBzPy8udGVzdChob3N0KSA/IGhvc3QgOiBgaHR0cHM6Ly8ke2hvc3R9YDtcbiAgcmV0dXJuIGAke2Jhc2V9L2NhcHRjaGEuanM/cmVuZGVyPW9ubG9hZCZvbmxvYWQ9X19vblNtYXJ0Q2FwdGNoYVJlYWR5YDtcbn07XG5cbi8vIFNoYXJlZCBjYWxsYmFja3MgYXJyYXlcbmNvbnN0IGNhbGxiYWNrczogKCgpID0+IHZvaWQpW10gPSBbXTtcbmV4cG9ydCBjb25zdCBzdGFydExvYWRpbmcgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc21hcnQtY2FwdGNoYScsXG4gIHRlbXBsYXRlOiBgIDxkaXYgY2xhc3M9XCJzbWFydC1jYXB0Y2hhXCIgI2NhcHRjaGFDb250YWluZXI+PC9kaXY+IGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zbWFydC1jYXB0Y2hhIHtcbiAgICAgICAgaGVpZ2h0OiAxMDJweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNtYXJ0Q2FwdGNoYUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbWFydENhcHRjaGFDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0Q2FwdGNoYUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIHNpdGVrZXkgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIGludmlzaWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgdmlzaWJsZSA9IGlucHV0PGJvb2xlYW4+KCk7IC8vIEZvciBJbnZpc2libGVDYXB0Y2hhIHRvIGV4ZWN1dGVcbiAgaGlkZVNoaWVsZCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHNoaWVsZFBvc2l0aW9uID0gaW5wdXQ8XG4gICAgJ3RvcC1sZWZ0JyB8ICd0b3AtcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICdib3R0b20tcmlnaHQnXG4gID4oKTtcbiAgbGFuZ3VhZ2UgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGhvc3QgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIHNldHRpbmcgaXMgZGVwcmVjYXRlZCBhbmQgbXVzdCBvbmx5IGJlIGNoYW5nZWQgdmlhIHRoZSBZYW5kZXggQ2xvdWQgaW50ZXJmYWNlLlxuICAgKi9cbiAgdGhlbWUgPSBpbnB1dDwnbGlnaHQnIHwgJ2RhcmsnIHwgJ2F1dG8nPignYXV0bycpO1xuICB0ZXN0ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgd2VidmlldyA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgY2hhbGxlbmdlSGlkZGVuID0gb3V0cHV0PHZvaWQ+KCk7XG4gIGNoYWxsZW5nZVZpc2libGUgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgc3VjY2VzcyA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIG5ldHdvcmtFcnJvciA9IG91dHB1dDx2b2lkPigpO1xuICB0b2tlbkV4cGlyZWQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgamF2YXNjcmlwdEVycm9yID0gb3V0cHV0PEphdmFzY3JpcHRFcnJvclBheWxvYWQ+KCk7XG5cbiAgY2FwdGNoYUNvbnRhaW5lciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ2NhcHRjaGFDb250YWluZXInKTtcblxuICBwcm90ZWN0ZWQgd2lkZ2V0SWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHNtYXJ0Q2FwdGNoYUluc3RhbmNlOiBTbWFydENhcHRjaGFJbnN0YW5jZSB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGRlc3Ryb3llZCA9IGZhbHNlO1xuICBwcml2YXRlIHVuc3Vic2NyaWJlRm5zOiBBcnJheTwoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ+ID0gW107XG4gIHByaXZhdGUgZXJyb3JFdmVudEhhbmRsZXI6ICgoZTogRXJyb3JFdmVudCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIC8vIG9uQ2hhbmdlXG4gIH07XG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xuICAgIC8vIG9uVG91Y2hlZFxuICB9O1xuICBwcml2YXRlIF9pbm5lclZhbHVlID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpOyAvLyBVc2UgYSBzaWduYWwgZm9yIGlubmVyVmFsdWVcbiAgcHJpdmF0ZSBjYWxsYmFja0luZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0XG4gICkge1xuICAgIC8vIEVmZmVjdCBmb3IgdGhlbWUgY2hhbmdlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudGhlbWUoKSAmJlxuICAgICAgICB0aGlzLndpZGdldElkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZT8uc2V0VGhlbWVcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnNldFRoZW1lKHRoaXMud2lkZ2V0SWQsIHRoaXMudGhlbWUoKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBFZmZlY3QgZm9yIHZpc2libGUgY2hhbmdlcyAoSW52aXNpYmxlIENhcHRjaGEpXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy52aXNpYmxlKCkgJiZcbiAgICAgICAgdGhpcy5pbnZpc2libGUoKSAmJlxuICAgICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlICYmXG4gICAgICAgIHR5cGVvZiB0aGlzLndpZGdldElkID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhdGhpcy5kZXN0cm95ZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLmV4ZWN1dGUodGhpcy53aWRnZXRJZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybjsgLy8gRG9uJ3QgcHJvY2VlZCBvbiBzZXJ2ZXItc2lkZVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhvc3QoKSAhPT0gdW5kZWZpbmVkICYmICFpc1ZhbGlkSG9zdCh0aGlzLmhvc3QoKSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBbU21hcnRDYXB0Y2hhXSAke3RoaXMuaG9zdCgpfSBob3N0IGlzIGludmFsaWQuIEl0IHNob3VsZCBiZSBvZiBhIGtpbmQ6IGRvbWFpbi5ydSwgbG9jYWxob3N0OjMwMDBgXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gU2V0dXAgZ2xvYmFsIGNhbGxiYWNrIGlmIG5vdCBhbHJlYWR5IGRlZmluZWRcbiAgICAgIGlmICh3aW5kb3cuX19vblNtYXJ0Q2FwdGNoYVJlYWR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgd2luZG93Ll9fb25TbWFydENhcHRjaGFSZWFkeSA9ICgpID0+IHtcbiAgICAgICAgICBjYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spID0+IGNhbGxiYWNrKCkpO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBTbWFydENhcHRjaGEgaXMgYWxyZWFkeSBsb2FkZWRcbiAgICAgIGlmICh3aW5kb3cuc21hcnRDYXB0Y2hhKSB7XG4gICAgICAgIHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2UgPSB3aW5kb3cuc21hcnRDYXB0Y2hhO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgb3VyIGNhbGxiYWNrIHRvIHRoZSBzaGFyZWQgYXJyYXlcbiAgICAgIHRoaXMuY2FsbGJhY2tJbmRleCA9IGNhbGxiYWNrcy5wdXNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZSA9IHdpbmRvdy5zbWFydENhcHRjaGE7XG4gICAgICAgIHRoaXMucmVuZGVyQ2FwdGNoYSgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIExvYWQgc2NyaXB0IGlmIG5vdCBhbHJlYWR5IGxvYWRpbmdcbiAgICAgIGNvbnN0IGhvc3RLZXkgPSB0aGlzLmhvc3QoKSB8fCAnZGVmYXVsdCc7XG4gICAgICBpZiAoIXN0YXJ0TG9hZGluZy5nZXQoaG9zdEtleSkpIHtcbiAgICAgICAgdGhpcy5sb2FkU2NyaXB0KCk7XG4gICAgICAgIHN0YXJ0TG9hZGluZy5zZXQoaG9zdEtleSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlKSB7XG4gICAgICB0aGlzLnJlbmRlckNhcHRjaGEoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG5cbiAgICAvLyBSZW1vdmUgY2FsbGJhY2sgZnJvbSBzaGFyZWQgYXJyYXlcbiAgICBpZiAodGhpcy5jYWxsYmFja0luZGV4ICE9PSBudWxsKSB7XG4gICAgICBjYWxsYmFja3Muc3BsaWNlKHRoaXMuY2FsbGJhY2tJbmRleCAtIDEsIDEpO1xuICAgIH1cblxuICAgIC8vIERlc3Ryb3kgd2lkZ2V0IGlmIGl0IGV4aXN0c1xuICAgIGlmICh0aGlzLndpZGdldElkICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZSkge1xuICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5kZXN0cm95KHRoaXMud2lkZ2V0SWQpO1xuICAgICAgdGhpcy53aWRnZXRJZCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBDbGVhbiB1cCBzdWJzY3JpcHRpb25zXG4gICAgdGhpcy51bnN1YnNjcmliZUZucy5mb3JFYWNoKChmbikgPT4gZm4gJiYgZm4oKSk7XG4gICAgdGhpcy51bnN1YnNjcmliZUZucyA9IFtdO1xuXG4gICAgLy8gUmVtb3ZlIGVycm9yIGV2ZW50IGhhbmRsZXJcbiAgICBpZiAodGhpcy5lcnJvckV2ZW50SGFuZGxlciAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5lcnJvckV2ZW50SGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkU2NyaXB0KCk6IHZvaWQge1xuICAgIGNvbnN0IHNyYyA9IEFQSV9MSU5LKHRoaXMuaG9zdCgpKTtcbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLnJlbmRlcmVyMi5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICB0aGlzLnJlbmRlcmVyMi5zZXRBdHRyaWJ1dGUoc2NyaXB0LCAnc3JjJywgc3JjKTtcbiAgICB0aGlzLnJlbmRlcmVyMi5zZXRBdHRyaWJ1dGUoc2NyaXB0LCAndHlwZScsICd0ZXh0L2phdmFzY3JpcHQnKTtcbiAgICB0aGlzLnJlbmRlcmVyMi5zZXRBdHRyaWJ1dGUoc2NyaXB0LCAnY3Jvc3NPcmlnaW4nLCAnYW5vbnltb3VzJyk7XG5cbiAgICAvLyBIYW5kbGUgcmVndWxhciBvbmxvYWQvb25lcnJvclxuICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBpZiAod2luZG93LnNtYXJ0Q2FwdGNoYSAmJiAhdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZSkge1xuICAgICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlID0gd2luZG93LnNtYXJ0Q2FwdGNoYTtcbiAgICAgICAgdGhpcy5yZW5kZXJDYXB0Y2hhKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNjcmlwdC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVKYXZhc2NyaXB0RXJyb3Ioe1xuICAgICAgICBmaWxlbmFtZTogc3JjLFxuICAgICAgICBtZXNzYWdlOiAnVW5rbm93biBlcnJvciBvbiBzY3JpcHQgbG9hZGluZycsXG4gICAgICAgIGNvbDogMCxcbiAgICAgICAgbGluZTogMCxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyBBZGQgZXJyb3IgZXZlbnQgbGlzdGVuZXIgZm9yIEpTIGVycm9ycyBpbiB0aGUgY2FwdGNoYSBzY3JpcHRcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuZXJyb3JFdmVudEhhbmRsZXIgPSAoZTogRXJyb3JFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZS5maWxlbmFtZT8uaW5kZXhPZihzcmMpID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVKYXZhc2NyaXB0RXJyb3Ioe1xuICAgICAgICAgICAgZmlsZW5hbWU6IGUuZmlsZW5hbWUsXG4gICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICBjb2w6IGUuY29sbm8sXG4gICAgICAgICAgICBsaW5lOiBlLmxpbmVubyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHRoaXMuZXJyb3JFdmVudEhhbmRsZXIpO1xuICAgIH1cblxuICAgIC8vIEFkZCBzY3JpcHQgdG8gZG9jdW1lbnRcbiAgICB0aGlzLnJlbmRlcmVyMi5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIHNjcmlwdCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckNhcHRjaGEoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jYXB0Y2hhQ29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKFxuICAgICAgIWNvbnRhaW5lciB8fFxuICAgICAgIXRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2UgfHxcbiAgICAgIHRoaXMud2lkZ2V0SWQgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5kZXN0cm95ZWRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXM6IFNtYXJ0Q2FwdGNoYVBhcmFtcyA9IHtcbiAgICAgIHNpdGVrZXk6IHRoaXMuc2l0ZWtleSgpLFxuICAgICAgaGw6IHRoaXMubGFuZ3VhZ2UoKSxcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lKCksXG4gICAgICBpbnZpc2libGU6IHRoaXMuaW52aXNpYmxlKCksXG4gICAgICBoaWRlU2hpZWxkOiB0aGlzLmhpZGVTaGllbGQoKSxcbiAgICAgIHNoaWVsZFBvc2l0aW9uOiB0aGlzLnNoaWVsZFBvc2l0aW9uKCksXG4gICAgICB0ZXN0OiB0aGlzLnRlc3QoKSxcbiAgICAgIHdlYnZpZXc6IHRoaXMud2VidmlldygpLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy53aWRnZXRJZCA9IHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2UucmVuZGVyKGNvbnRhaW5lciwgcGFyYW1zKTtcbiAgICAgIHRoaXMuc2V0dXBTdWJzY3JpcHRpb25zKCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTbWFydENhcHRjaGFdIEVycm9yIHJlbmRlcmluZyBjYXB0Y2hhIHdpZGdldDonLCBlcnJvcik7XG5cbiAgICAgIGxldCBtZXNzYWdlID0gJ1Vua25vd24gZXJyb3IgZHVyaW5nIHJlbmRlcmluZyc7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYW5kbGVKYXZhc2NyaXB0RXJyb3Ioe1xuICAgICAgICBmaWxlbmFtZTogQVBJX0xJTksodGhpcy5ob3N0KCkpLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBjb2w6IDAsXG4gICAgICAgIGxpbmU6IDAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53aWRnZXRJZCA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU3RvcmUgdW5zdWJzY3JpYmUgZnVuY3Rpb25zIGZvciBjbGVhbnVwXG4gICAgdGhpcy51bnN1YnNjcmliZUZucyA9IFtcbiAgICAgIHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2Uuc3Vic2NyaWJlKFxuICAgICAgICB0aGlzLndpZGdldElkLFxuICAgICAgICAnY2hhbGxlbmdlLXZpc2libGUnLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGFsbGVuZ2VWaXNpYmxlLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgKSxcblxuICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMud2lkZ2V0SWQsXG4gICAgICAgICdjaGFsbGVuZ2UtaGlkZGVuJyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2hpZGRlbicpO1xuICAgICAgICAgIHRoaXMuY2hhbGxlbmdlSGlkZGVuLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgKSxcblxuICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMud2lkZ2V0SWQsXG4gICAgICAgICduZXR3b3JrLWVycm9yJyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubmV0d29ya0Vycm9yLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgKSxcblxuICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMud2lkZ2V0SWQsXG4gICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFt0b2tlbl0gPSBhcmdzIGFzIFtzdHJpbmddO1xuXG4gICAgICAgICAgdGhpcy5faW5uZXJWYWx1ZS5zZXQodG9rZW4pO1xuICAgICAgICAgIHRoaXMub25DaGFuZ2UodG9rZW4pO1xuICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQodG9rZW4pO1xuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy53aWRnZXRJZCxcbiAgICAgICAgJ3Rva2VuLWV4cGlyZWQnLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5faW5uZXJWYWx1ZS5zZXQobnVsbCk7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgIHRoaXMudG9rZW5FeHBpcmVkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgKSxcblxuICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMud2lkZ2V0SWQsXG4gICAgICAgICdqYXZhc2NyaXB0LWVycm9yJyxcbiAgICAgICAgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtlcnJvcl0gPSBhcmdzIGFzIFtKYXZhc2NyaXB0RXJyb3JQYXlsb2FkXTtcbiAgICAgICAgICB0aGlzLmhhbmRsZUphdmFzY3JpcHRFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlSmF2YXNjcmlwdEVycm9yKGVycm9yOiBKYXZhc2NyaXB0RXJyb3JQYXlsb2FkKTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcignW1NtYXJ0Q2FwdGNoYV0gSmF2YXNjcmlwdCBlcnJvcjonLCBlcnJvcik7XG4gICAgdGhpcy5qYXZhc2NyaXB0RXJyb3IuZW1pdChlcnJvcik7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBtZXRob2RzXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2lubmVyVmFsdWUuc2V0KHZhbHVlKTsgLy8gU2V0IHRoZSBzaWduYWwgdmFsdWVcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIFZhbGlkYXRvciBtZXRob2RcbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIC8vIFdoZW4gdXNpbmcgaW52aXNpYmxlIGNhcHRjaGEsIGRvbid0IHZhbGlkYXRlIHVudGlsIHVzZXIgaW50ZXJhY3RzXG4gICAgaWYgKHRoaXMuaW52aXNpYmxlKCkgJiYgIXRoaXMuX2lubmVyVmFsdWUoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gRm9yIHN0YW5kYXJkIGNhcHRjaGEsIHJlcXVpcmUgdG9rZW5cbiAgICBpZiAoIXRoaXMuaW52aXNpYmxlKCkgJiYgIXRoaXMuX2lubmVyVmFsdWUoKSkge1xuICAgICAgLy8gQWNjZXNzIHNpZ25hbCB2YWx1ZVxuICAgICAgcmV0dXJuIHsgY2FwdGNoYVJlcXVpcmVkOiB0cnVlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW52aXNpYmxlLXNtYXJ0LWNhcHRjaGEnLFxuICB0ZW1wbGF0ZTogYCA8ZGl2IGNsYXNzPVwic21hcnQtY2FwdGNoYVwiICNjYXB0Y2hhQ29udGFpbmVyPjwvZGl2PiBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc21hcnQtY2FwdGNoYSB7XG4gICAgICAgIC8qIE5vIGhlaWdodCBuZWVkZWQgZm9yIGludmlzaWJsZSBjYXB0Y2hhICovXG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnZpc2libGVTbWFydENhcHRjaGFDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW52aXNpYmxlU21hcnRDYXB0Y2hhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBJbnZpc2libGVTbWFydENhcHRjaGFDb21wb25lbnRcbiAgZXh0ZW5kcyBTbWFydENhcHRjaGFDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgLy8gQWx3YXlzIHNldCBpbnZpc2libGUgdG8gdHJ1ZVxuICBvdmVycmlkZSBpbnZpc2libGUgPSBpbnB1dCh0cnVlKTtcblxuICAvLyBPdmVycmlkZSBuZ09uSW5pdCB0byBlbnN1cmUgaW52aXNpYmxlIGlzIGFsd2F5cyB0cnVlXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIENhbGwgcGFyZW50IGluaXRpYWxpemF0aW9uXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJvY2steWFuZGV4LXNtYXJ0LWNhcHRjaGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3lhbmRleC1zbWFydC1jYXB0Y2hhL3NyYy9uZ3gtcm9jay15YW5kZXgtc21hcnQtY2FwdGNoYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;;AAAA,MAAM,QAAQ,GAAG,SAAS;AAC1B,MAAM,iBAAiB,GAAG,mCAAmC;AAC7D,MAAM,oBAAoB,GAAG,mBAAmB;AAChD,MAAM,MAAM,GAAG,iDAAiD;AAChE,MAAM,MAAM,GAAG,iEAAiE;AACzE,SAAS,WAAW,CAAC,GAAG,EAAE;AACjC,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AACrC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,MAAM,uBAAuB,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAClC,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,QAAQ,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC3D,QAAQ,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC1D,QAAQ,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC5C,QAAQ,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC5C;;AChBA,MAAM,QAAQ,GAAG,CAAC,IAAI,GAAG,8BAA8B,KAAK;AAC5D,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAChE,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC,sDAAsD,CAAC;AAC1E,CAAC;AACD;AACA,MAAM,SAAS,GAAG,EAAE;AACR,MAAC,YAAY,GAAG,IAAI,GAAG;AAC5B,MAAM,qBAAqB,CAAC;AACnC,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC9B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;AACtB,IAAI,UAAU,GAAG,KAAK,EAAE;AACxB,IAAI,cAAc,GAAG,KAAK,EAAE;AAC5B,IAAI,QAAQ,GAAG,KAAK,EAAE;AACtB,IAAI,IAAI,GAAG,KAAK,EAAE;AAClB;AACA;AACA;AACA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;AACzB,IAAI,IAAI,GAAG,KAAK,EAAE;AAClB,IAAI,OAAO,GAAG,KAAK,EAAE;AACrB,IAAI,eAAe,GAAG,MAAM,EAAE;AAC9B,IAAI,gBAAgB,GAAG,MAAM,EAAE;AAC/B,IAAI,OAAO,GAAG,MAAM,EAAE;AACtB,IAAI,YAAY,GAAG,MAAM,EAAE;AAC3B,IAAI,YAAY,GAAG,MAAM,EAAE;AAC3B,IAAI,eAAe,GAAG,MAAM,EAAE;AAC9B,IAAI,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;AACpD,IAAI,QAAQ;AACZ,IAAI,oBAAoB;AACxB,IAAI,SAAS,GAAG,KAAK;AACrB,IAAI,cAAc,GAAG,EAAE;AACvB,IAAI,iBAAiB;AACrB,IAAI,QAAQ,GAAG,MAAM;AACrB;AACA,KAAK;AACL,IAAI,SAAS,GAAG,MAAM;AACtB;AACA,KAAK;AACL,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,aAAa,GAAG,IAAI;AACxB,IAAI,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE;AACjD,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC;AACA,QAAQ,MAAM,CAAC,MAAM;AACrB,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE;AAC5B,gBAAgB,IAAI,CAAC,QAAQ,KAAK,SAAS;AAC3C,gBAAgB,IAAI,CAAC,oBAAoB,EAAE,QAAQ,EAAE;AACrD,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/E;AACA,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,CAAC,MAAM;AACrB,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAgB,IAAI,CAAC,SAAS,EAAE;AAChC,gBAAgB,IAAI,CAAC,oBAAoB;AACzC,gBAAgB,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;AACjD,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE;AACjC,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChE;AACA,SAAS,CAAC;AACV;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACjD,YAAY,OAAO;AACnB;AACA,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AACpE,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,mEAAmE,CAAC,CAAC;AAC7H,YAAY;AACZ;AACA,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC3C;AACA,YAAY,IAAI,MAAM,CAAC,qBAAqB,KAAK,SAAS,EAAE;AAC5D,gBAAgB,MAAM,CAAC,qBAAqB,GAAG,MAAM;AACrD,oBAAoB,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;AAC/D,iBAAiB;AACjB;AACA;AACA,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE;AACrC,gBAAgB,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,YAAY;AAC/D;AACA;AACA,YAAY,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM;AACtD,gBAAgB,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,YAAY;AAC/D,gBAAgB,IAAI,CAAC,aAAa,EAAE;AACpC,aAAa,CAAC;AACd;AACA,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,SAAS;AACpD,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC5C,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAgB,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/C;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;AAC7B;AACA,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;AACzC,YAAY,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,CAAC;AACvD;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACtE,YAAY,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5D,YAAY,IAAI,CAAC,QAAQ,GAAG,SAAS;AACrC;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;AACvD,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE;AAChC;AACA,QAAQ,IAAI,IAAI,CAAC,iBAAiB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACrE,YAAY,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACvE;AACA;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC7D,QAAQ,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC;AACvD,QAAQ,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;AACtE,QAAQ,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC;AACvE;AACA,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM;AAC9B,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACnE,gBAAgB,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,YAAY;AAC/D,gBAAgB,IAAI,CAAC,aAAa,EAAE;AACpC;AACA,SAAS;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,YAAY,IAAI,CAAC,qBAAqB,CAAC;AACvC,gBAAgB,QAAQ,EAAE,GAAG;AAC7B,gBAAgB,OAAO,EAAE,iCAAiC;AAC1D,gBAAgB,GAAG,EAAE,CAAC;AACtB,gBAAgB,IAAI,EAAE,CAAC;AACvB,aAAa,CAAC;AACd,SAAS;AACT;AACA,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC3C,YAAY,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK;AAC5C,gBAAgB,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACpD,oBAAoB,IAAI,CAAC,qBAAqB,CAAC;AAC/C,wBAAwB,QAAQ,EAAE,CAAC,CAAC,QAAQ;AAC5C,wBAAwB,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1C,wBAAwB,GAAG,EAAE,CAAC,CAAC,KAAK;AACpC,wBAAwB,IAAI,EAAE,CAAC,CAAC,MAAM;AACtC,qBAAqB,CAAC;AACtB;AACA,aAAa;AACb,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACpE;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9D;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,aAAa;AAChE,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY,CAAC,IAAI,CAAC,oBAAoB;AACtC,YAAY,IAAI,CAAC,QAAQ,KAAK,SAAS;AACvC,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY;AACZ;AACA,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACnC,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AAC/B,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AACvC,YAAY,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AACzC,YAAY,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;AACjD,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAC7B,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACnC,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;AAC/E,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC;AACA,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC;AAClF,YAAY,IAAI,OAAO,GAAG,gCAAgC;AAC1D,YAAY,IAAI,KAAK,YAAY,KAAK,EAAE;AACxC,gBAAgB,OAAO,GAAG,KAAK,CAAC,OAAO;AACvC;AACA,YAAY,IAAI,CAAC,qBAAqB,CAAC;AACvC,gBAAgB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/C,gBAAgB,OAAO;AACvB,gBAAgB,GAAG,EAAE,CAAC;AACtB,gBAAgB,IAAI,EAAE,CAAC;AACvB,aAAa,CAAC;AACd;AACA;AACA,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACvE,YAAY;AACZ;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG;AAC9B,YAAY,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM;AAC1F,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC5C,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM;AACzF,gBAAgB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;AACvC,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAC3C,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM;AACtF,gBAAgB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxC,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,KAAK;AACvF,gBAAgB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AACpC,gBAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpC,gBAAgB,IAAI,CAAC,SAAS,EAAE;AAChC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM;AACtF,gBAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,gBAAgB,IAAI,CAAC,SAAS,EAAE;AAChC,gBAAgB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxC,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,GAAG,IAAI,KAAK;AAChG,gBAAgB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AACpC,gBAAgB,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACjD,aAAa,CAAC;AACd,SAAS;AACT;AACA,IAAI,qBAAqB,CAAC,KAAK,EAAE;AACjC,QAAQ,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC;AAChE,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC;AACA,IAAI,gBAAgB,CAAC,EAAE,EAAE;AACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE;AAC1B;AACA,IAAI,iBAAiB,CAAC,EAAE,EAAE;AAC1B,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;AAC3B;AACA;AACA,IAAI,QAAQ,GAAG;AACf;AACA,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACrD,YAAY,OAAO,IAAI;AACvB;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACtD;AACA,YAAY,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE;AAC5C;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AACnP,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE;AAC7nD,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpE,gBAAgB,KAAK,EAAE,IAAI;AAC3B,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,aAAa;AACtC,gBAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpE,gBAAgB,KAAK,EAAE,IAAI;AAC3B,aAAa;AACb,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,qDAAqD,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,gCAAgC,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;AACnV;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC;AAC/H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,qDAAqD,CAAC,EAAE,SAAS,EAAE;AAC9H,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AAChF,4BAA4B,KAAK,EAAE,IAAI;AACvC,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,aAAa;AAClD,4BAA4B,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AAChF,4BAA4B,KAAK,EAAE,IAAI;AACvC,yBAAyB;AACzB,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,gCAAgC,CAAC,EAAE;AACtI,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC1F,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,QAAQ;AACnC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACtD,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,WAAW;AACtC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,MAAM,8BAA8B,SAAS,qBAAqB,CAAC;AAC1E;AACA,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AAC3B;AACA,IAAI,QAAQ,GAAG;AACf;AACA,QAAQ,KAAK,CAAC,QAAQ,EAAE;AACxB;AACA,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AAC1L,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,8BAA8B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE;AAC/U,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;AAC7E,gBAAgB,KAAK,EAAE,IAAI;AAC3B,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,aAAa;AACtC,gBAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;AAC7E,gBAAgB,KAAK,EAAE,IAAI;AAC3B,aAAa;AACb,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,qDAAqD,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;AACtM;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,CAAC;AACxI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,EAAE,QAAQ,EAAE,CAAC,qDAAqD,CAAC,EAAE,SAAS,EAAE;AACxI,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;AACzF,4BAA4B,KAAK,EAAE,IAAI;AACvC,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,aAAa;AAClD,4BAA4B,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;AACzF,4BAA4B,KAAK,EAAE,IAAI;AACvC,yBAAyB;AACzB,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE;AAC1F,SAAS,CAAC,EAAE,CAAC;;AC/Ub;AACA;AACA;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-rock-yandex-smart-captcha.mjs","sources":["../tmp-esm2022/lib/helpers/is-valid-host.js","../tmp-esm2022/lib/yandex-smart-captcha/yandex-smart-captcha.component.js","../tmp-esm2022/ngx-rock-yandex-smart-captcha.js"],"sourcesContent":["const domainRE = /^(\\S+)$/;\nconst localhostDomainRE = /^localhost[:?\\d]*(?:[^:?\\d]\\S*)?$/;\nconst nonLocalhostDomainRE = /^[^\\s.]+\\.\\S{2,}$/;\nconst IPv4RE = /^(https?:\\/\\/)?([0-9]{1,3}\\.){3}[0-9]{1,3}:\\d+$/;\nconst IPv6RE = /^(https?:\\/\\/)?\\[([0-9a-fA-F]{0,4}:){7}([0-9a-fA-F]){0,4}]:\\d+$/;\nexport function isValidHost(str) {\n if (typeof str !== 'string') {\n return false;\n }\n const match = str.match(domainRE);\n if (!match) {\n return false;\n }\n const everythingAfterProtocol = match[0];\n if (!everythingAfterProtocol) {\n return false;\n }\n return (localhostDomainRE.test(everythingAfterProtocol) ||\n nonLocalhostDomainRE.test(everythingAfterProtocol) ||\n IPv4RE.test(everythingAfterProtocol) ||\n IPv6RE.test(everythingAfterProtocol));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtdmFsaWQtaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveWFuZGV4LXNtYXJ0LWNhcHRjaGEvc3JjL2xpYi9oZWxwZXJzL2lzLXZhbGlkLWhvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBQzNCLE1BQU0saUJBQWlCLEdBQUcsbUNBQW1DLENBQUM7QUFDOUQsTUFBTSxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztBQUNqRCxNQUFNLE1BQU0sR0FBRyxpREFBaUQsQ0FBQztBQUNqRSxNQUFNLE1BQU0sR0FDVixpRUFBaUUsQ0FBQztBQUVwRSxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQXVCO0lBQ2pELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUM3QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLENBQ0wsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQy9DLG9CQUFvQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FDckMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkb21haW5SRSA9IC9eKFxcUyspJC87XG5jb25zdCBsb2NhbGhvc3REb21haW5SRSA9IC9ebG9jYWxob3N0Wzo/XFxkXSooPzpbXjo/XFxkXVxcUyopPyQvO1xuY29uc3Qgbm9uTG9jYWxob3N0RG9tYWluUkUgPSAvXlteXFxzLl0rXFwuXFxTezIsfSQvO1xuY29uc3QgSVB2NFJFID0gL14oaHR0cHM/OlxcL1xcLyk/KFswLTldezEsM31cXC4pezN9WzAtOV17MSwzfTpcXGQrJC87XG5jb25zdCBJUHY2UkUgPVxuICAvXihodHRwcz86XFwvXFwvKT9cXFsoWzAtOWEtZkEtRl17MCw0fTopezd9KFswLTlhLWZBLUZdKXswLDR9XTpcXGQrJC87XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkSG9zdChzdHI6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSBzdHIubWF0Y2goZG9tYWluUkUpO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGV2ZXJ5dGhpbmdBZnRlclByb3RvY29sID0gbWF0Y2hbMF07XG4gIGlmICghZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICBsb2NhbGhvc3REb21haW5SRS50ZXN0KGV2ZXJ5dGhpbmdBZnRlclByb3RvY29sKSB8fFxuICAgIG5vbkxvY2FsaG9zdERvbWFpblJFLnRlc3QoZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpIHx8XG4gICAgSVB2NFJFLnRlc3QoZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpIHx8XG4gICAgSVB2NlJFLnRlc3QoZXZlcnl0aGluZ0FmdGVyUHJvdG9jb2wpXG4gICk7XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, DOCUMENT, effect, forwardRef, inject, input, output, PLATFORM_ID, Renderer2, signal, viewChild, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport { isPlatformBrowser } from '@angular/common';\nimport { isValidHost } from '../helpers/is-valid-host';\nimport * as i0 from \"@angular/core\";\nconst API_LINK = (host = 'smartcaptcha.yandexcloud.net') => {\n const base = /^https?/.test(host) ? host : `https://${host}`;\n return `${base}/captcha.js?render=onload&onload=__onSmartCaptchaReady`;\n};\n// Shared callbacks array\nconst callbacks = [];\nexport const startLoading = new Map();\nexport class SmartCaptchaComponent {\n sitekey = input.required(...(ngDevMode ? [{ debugName: \"sitekey\" }] : []));\n invisible = input(false, ...(ngDevMode ? [{ debugName: \"invisible\" }] : []));\n visible = input(...(ngDevMode ? [undefined, { debugName: \"visible\" }] : [])); // For InvisibleCaptcha to execute\n hideShield = input(...(ngDevMode ? [undefined, { debugName: \"hideShield\" }] : []));\n shieldPosition = input(...(ngDevMode ? [undefined, { debugName: \"shieldPosition\" }] : []));\n language = input(...(ngDevMode ? [undefined, { debugName: \"language\" }] : []));\n host = input(...(ngDevMode ? [undefined, { debugName: \"host\" }] : []));\n /**\n * @deprecated This setting is deprecated and must only be changed via the Yandex Cloud interface.\n */\n theme = input('auto', ...(ngDevMode ? [{ debugName: \"theme\" }] : []));\n test = input(...(ngDevMode ? [undefined, { debugName: \"test\" }] : []));\n webview = input(...(ngDevMode ? [undefined, { debugName: \"webview\" }] : []));\n challengeHidden = output();\n challengeVisible = output();\n success = output();\n networkError = output();\n tokenExpired = output();\n javascriptError = output();\n captchaContainer = viewChild('captchaContainer', ...(ngDevMode ? [{ debugName: \"captchaContainer\" }] : []));\n renderer2 = inject(Renderer2);\n document = inject(DOCUMENT);\n platformId = inject(PLATFORM_ID);\n widgetId;\n smartCaptchaInstance;\n destroyed = false;\n unsubscribeFns = [];\n errorEventHandler;\n onChange = () => {\n // onChange\n };\n onTouched = () => {\n // onTouched\n };\n _innerValue = signal(null, ...(ngDevMode ? [{ debugName: \"_innerValue\" }] : []));\n callbackIndex = null;\n constructor() {\n // Effect for theme changes\n effect(() => {\n if (this.theme() &&\n this.widgetId !== undefined &&\n this.smartCaptchaInstance?.setTheme) {\n this.smartCaptchaInstance.setTheme(this.widgetId, this.theme());\n }\n });\n // Effect for visible changes (Invisible Captcha)\n effect(() => {\n if (this.visible() &&\n this.invisible() &&\n this.smartCaptchaInstance &&\n typeof this.widgetId === 'number' &&\n !this.destroyed) {\n this.smartCaptchaInstance.execute(this.widgetId);\n }\n });\n }\n ngOnInit() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (this.host() !== undefined && !isValidHost(this.host())) {\n console.error(`[SmartCaptcha] ${this.host()} host is invalid. It should be of a kind: domain.ru, localhost:3000`);\n return;\n }\n if (typeof window !== 'undefined') {\n // Setup global callback if not already defined\n if (window.__onSmartCaptchaReady === undefined) {\n window.__onSmartCaptchaReady = () => {\n callbacks.forEach((callback) => callback());\n };\n }\n // Check if SmartCaptcha is already loaded\n if (window.smartCaptcha) {\n this.smartCaptchaInstance = window.smartCaptcha;\n }\n // Add our callback to the shared array\n this.callbackIndex = callbacks.push(() => {\n this.smartCaptchaInstance = window.smartCaptcha;\n this.renderCaptcha();\n });\n // Load script if not already loading\n const hostKey = this.host() || 'default';\n if (!startLoading.get(hostKey)) {\n this.loadScript();\n startLoading.set(hostKey, true);\n }\n }\n }\n ngAfterViewInit() {\n if (this.smartCaptchaInstance) {\n this.renderCaptcha();\n }\n }\n ngOnDestroy() {\n this.destroyed = true;\n // Remove callback from shared array\n if (this.callbackIndex !== null) {\n callbacks.splice(this.callbackIndex - 1, 1);\n }\n // Destroy widget if it exists\n if (this.widgetId !== undefined && this.smartCaptchaInstance) {\n this.smartCaptchaInstance.destroy(this.widgetId);\n this.widgetId = undefined;\n }\n // Clean up subscriptions\n this.unsubscribeFns.forEach((fn) => fn && fn());\n this.unsubscribeFns = [];\n // Remove error event handler\n if (this.errorEventHandler && typeof window !== 'undefined') {\n window.removeEventListener('error', this.errorEventHandler);\n }\n }\n loadScript() {\n const src = API_LINK(this.host());\n const script = this.renderer2.createElement('script');\n this.renderer2.setAttribute(script, 'src', src);\n this.renderer2.setAttribute(script, 'type', 'text/javascript');\n this.renderer2.setAttribute(script, 'crossOrigin', 'anonymous');\n // Handle regular onload/onerror\n script.onload = () => {\n if (window.smartCaptcha && !this.smartCaptchaInstance) {\n this.smartCaptchaInstance = window.smartCaptcha;\n this.renderCaptcha();\n }\n };\n script.onerror = () => {\n this.handleJavascriptError({\n filename: src,\n message: 'Unknown error on script loading',\n col: 0,\n line: 0,\n });\n };\n // Add error event listener for JS errors in the captcha script\n if (typeof window !== 'undefined') {\n this.errorEventHandler = (e) => {\n if (e.filename?.indexOf(src) === 0) {\n this.handleJavascriptError({\n filename: e.filename,\n message: e.message,\n col: e.colno,\n line: e.lineno,\n });\n }\n };\n window.addEventListener('error', this.errorEventHandler);\n }\n // Add script to document\n this.renderer2.appendChild(this.document.body, script);\n }\n renderCaptcha() {\n const container = this.captchaContainer()?.nativeElement;\n if (!container ||\n !this.smartCaptchaInstance ||\n this.widgetId !== undefined ||\n this.destroyed) {\n return;\n }\n const params = {\n sitekey: this.sitekey(),\n hl: this.language(),\n theme: this.theme(),\n invisible: this.invisible(),\n hideShield: this.hideShield(),\n shieldPosition: this.shieldPosition(),\n test: this.test(),\n webview: this.webview(),\n };\n try {\n this.widgetId = this.smartCaptchaInstance.render(container, params);\n this.setupSubscriptions();\n }\n catch (error) {\n console.error('[SmartCaptcha] Error rendering captcha widget:', error);\n let message = 'Unknown error during rendering';\n if (error instanceof Error) {\n message = error.message;\n }\n this.handleJavascriptError({\n filename: API_LINK(this.host()),\n message,\n col: 0,\n line: 0,\n });\n }\n }\n setupSubscriptions() {\n if (this.widgetId === undefined || !this.smartCaptchaInstance) {\n return;\n }\n // Store unsubscribe functions for cleanup\n this.unsubscribeFns = [\n this.smartCaptchaInstance.subscribe(this.widgetId, 'challenge-visible', () => {\n this.challengeVisible.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'challenge-hidden', () => {\n console.error('hidden');\n this.challengeHidden.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'network-error', () => {\n this.networkError.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'success', (...args) => {\n const [token] = args;\n this._innerValue.set(token);\n this.onChange(token);\n this.onTouched();\n this.success.emit(token);\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'token-expired', () => {\n this._innerValue.set(null);\n this.onChange(null);\n this.onTouched();\n this.tokenExpired.emit();\n }),\n this.smartCaptchaInstance.subscribe(this.widgetId, 'javascript-error', (...args) => {\n const [error] = args;\n this.handleJavascriptError(error);\n }),\n ];\n }\n handleJavascriptError(error) {\n console.error('[SmartCaptcha] Javascript error:', error);\n this.javascriptError.emit(error);\n }\n // ControlValueAccessor methods\n writeValue(value) {\n this._innerValue.set(value); // Set the signal value\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n // Validator method\n validate() {\n // When using invisible captcha, don't validate until user interacts\n if (this.invisible() && !this._innerValue()) {\n return null;\n }\n // For standard captcha, require token\n if (!this.invisible() && !this._innerValue()) {\n // Access signal value\n return { captchaRequired: true };\n }\n return null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SmartCaptchaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.3.9\", type: SmartCaptchaComponent, isStandalone: true, selector: \"smart-captcha\", inputs: { sitekey: { classPropertyName: \"sitekey\", publicName: \"sitekey\", isSignal: true, isRequired: true, transformFunction: null }, invisible: { classPropertyName: \"invisible\", publicName: \"invisible\", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: \"visible\", publicName: \"visible\", isSignal: true, isRequired: false, transformFunction: null }, hideShield: { classPropertyName: \"hideShield\", publicName: \"hideShield\", isSignal: true, isRequired: false, transformFunction: null }, shieldPosition: { classPropertyName: \"shieldPosition\", publicName: \"shieldPosition\", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: \"language\", publicName: \"language\", isSignal: true, isRequired: false, transformFunction: null }, host: { classPropertyName: \"host\", publicName: \"host\", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: \"theme\", publicName: \"theme\", isSignal: true, isRequired: false, transformFunction: null }, test: { classPropertyName: \"test\", publicName: \"test\", isSignal: true, isRequired: false, transformFunction: null }, webview: { classPropertyName: \"webview\", publicName: \"webview\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { challengeHidden: \"challengeHidden\", challengeVisible: \"challengeVisible\", success: \"success\", networkError: \"networkError\", tokenExpired: \"tokenExpired\", javascriptError: \"javascriptError\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n ], viewQueries: [{ propertyName: \"captchaContainer\", first: true, predicate: [\"captchaContainer\"], descendants: true, isSignal: true }], ngImport: i0, template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, isInline: true, styles: [\".smart-captcha{height:102px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SmartCaptchaComponent, decorators: [{\n type: Component,\n args: [{ selector: 'smart-captcha', template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SmartCaptchaComponent),\n multi: true,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [\".smart-captcha{height:102px}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { sitekey: [{ type: i0.Input, args: [{ isSignal: true, alias: \"sitekey\", required: true }] }], invisible: [{ type: i0.Input, args: [{ isSignal: true, alias: \"invisible\", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: \"visible\", required: false }] }], hideShield: [{ type: i0.Input, args: [{ isSignal: true, alias: \"hideShield\", required: false }] }], shieldPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: \"shieldPosition\", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: \"language\", required: false }] }], host: [{ type: i0.Input, args: [{ isSignal: true, alias: \"host\", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: \"theme\", required: false }] }], test: [{ type: i0.Input, args: [{ isSignal: true, alias: \"test\", required: false }] }], webview: [{ type: i0.Input, args: [{ isSignal: true, alias: \"webview\", required: false }] }], challengeHidden: [{ type: i0.Output, args: [\"challengeHidden\"] }], challengeVisible: [{ type: i0.Output, args: [\"challengeVisible\"] }], success: [{ type: i0.Output, args: [\"success\"] }], networkError: [{ type: i0.Output, args: [\"networkError\"] }], tokenExpired: [{ type: i0.Output, args: [\"tokenExpired\"] }], javascriptError: [{ type: i0.Output, args: [\"javascriptError\"] }], captchaContainer: [{ type: i0.ViewChild, args: ['captchaContainer', { isSignal: true }] }] } });\nexport class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent {\n // Always set invisible to true\n invisible = input(true, ...(ngDevMode ? [{ debugName: \"invisible\" }] : []));\n // Override ngOnInit to ensure invisible is always true\n ngOnInit() {\n // Call parent initialization\n super.ngOnInit();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: InvisibleSmartCaptchaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.9\", type: InvisibleSmartCaptchaComponent, isStandalone: true, selector: \"invisible-smart-captcha\", inputs: { invisible: { classPropertyName: \"invisible\", publicName: \"invisible\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n ], usesInheritance: true, ngImport: i0, template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, isInline: true, styles: [\"\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: InvisibleSmartCaptchaComponent, decorators: [{\n type: Component,\n args: [{ selector: 'invisible-smart-captcha', template: ` <div class=\"smart-captcha\" #captchaContainer></div> `, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => InvisibleSmartCaptchaComponent),\n multi: true,\n },\n ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush }]\n }], propDecorators: { invisible: [{ type: i0.Input, args: [{ isSignal: true, alias: \"invisible\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFuZGV4LXNtYXJ0LWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95YW5kZXgtc21hcnQtY2FwdGNoYS9zcmMvbGliL3lhbmRleC1zbWFydC1jYXB0Y2hhL3lhbmRleC1zbWFydC1jYXB0Y2hhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGFBQWEsRUFDYixpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBT3ZELE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxHQUFHLDhCQUE4QixFQUFFLEVBQUU7SUFDekQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQzdELE9BQU8sR0FBRyxJQUFJLHdEQUF3RCxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUVGLHlCQUF5QjtBQUN6QixNQUFNLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQTJCdkQsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsa0RBQVUsQ0FBQztJQUNuQyxTQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUsscURBQUMsQ0FBQztJQUNsQyxPQUFPLEdBQUcsS0FBSyw2REFBVyxDQUFDLENBQUMsa0NBQWtDO0lBQzlELFVBQVUsR0FBRyxLQUFLLGdFQUFXLENBQUM7SUFDOUIsY0FBYyxHQUFHLEtBQUssb0VBRW5CLENBQUM7SUFDSixRQUFRLEdBQUcsS0FBSyw4REFBNEIsQ0FBQztJQUM3QyxJQUFJLEdBQUcsS0FBSywwREFBVSxDQUFDO0lBQ3ZCOztPQUVHO0lBQ0gsS0FBSyxHQUFHLEtBQUssQ0FBNEIsTUFBTSxpREFBQyxDQUFDO0lBQ2pELElBQUksR0FBRyxLQUFLLDBEQUFXLENBQUM7SUFDeEIsT0FBTyxHQUFHLEtBQUssNkRBQVcsQ0FBQztJQUUzQixlQUFlLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDakMsZ0JBQWdCLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDbEMsT0FBTyxHQUFHLE1BQU0sRUFBVSxDQUFDO0lBQzNCLFlBQVksR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUM5QixZQUFZLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDOUIsZUFBZSxHQUFHLE1BQU0sRUFBMEIsQ0FBQztJQUVuRCxnQkFBZ0IsR0FBRyxTQUFTLENBQTZCLGtCQUFrQiw0REFBQyxDQUFDO0lBRTVELFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXhDLFFBQVEsQ0FBcUI7SUFDN0Isb0JBQW9CLENBQW1DO0lBQ3ZELFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDcEIsY0FBYyxHQUFvQyxFQUFFLENBQUM7SUFDckQsaUJBQWlCLENBQXdDO0lBRXpELFFBQVEsR0FBbUMsR0FBRyxFQUFFO1FBQ3RELFdBQVc7SUFDYixDQUFDLENBQUM7SUFDTSxTQUFTLEdBQUcsR0FBRyxFQUFFO1FBQ3ZCLFlBQVk7SUFDZCxDQUFDLENBQUM7SUFDZSxXQUFXLEdBQUcsTUFBTSxDQUFnQixJQUFJLHVEQUFDLENBQUM7SUFDbkQsYUFBYSxHQUFrQixJQUFJLENBQUM7SUFFNUM7UUFDRSwyQkFBMkI7UUFDM0IsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQ0UsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDWixJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVM7Z0JBQzNCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQ25DLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILGlEQUFpRDtRQUNqRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFDRSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNkLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxvQkFBb0I7Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRO2dCQUNqQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQ2YsQ0FBQztnQkFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzNELE9BQU8sQ0FBQyxLQUFLLENBQ1gsa0JBQWtCLElBQUksQ0FBQyxJQUFJLEVBQUUscUVBQXFFLENBQ25HLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbEMsK0NBQStDO1lBQy9DLElBQUksTUFBTSxDQUFDLHFCQUFxQixLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLENBQUMscUJBQXFCLEdBQUcsR0FBRyxFQUFFO29CQUNsQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDLENBQUM7WUFDSixDQUFDO1lBRUQsMENBQTBDO1lBQzFDLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNsRCxDQUFDO1lBRUQsdUNBQXVDO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7WUFFSCxxQ0FBcUM7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLFNBQVMsQ0FBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xCLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixvQ0FBb0M7UUFDcEMsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2hDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBRXpCLDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM1RCxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVoRSxnQ0FBZ0M7UUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztnQkFDekIsUUFBUSxFQUFFLEdBQUc7Z0JBQ2IsT0FBTyxFQUFFLGlDQUFpQztnQkFDMUMsR0FBRyxFQUFFLENBQUM7Z0JBQ04sSUFBSSxFQUFFLENBQUM7YUFDUixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRiwrREFBK0Q7UUFDL0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFhLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO3dCQUN6QixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7d0JBQ3BCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTzt3QkFDbEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLO3dCQUNaLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTTtxQkFDZixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELHlCQUF5QjtRQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxhQUFhLENBQUM7UUFDekQsSUFDRSxDQUFDLFNBQVM7WUFDVixDQUFDLElBQUksQ0FBQyxvQkFBb0I7WUFDMUIsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO1lBQzNCLElBQUksQ0FBQyxTQUFTLEVBQ2QsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQXVCO1lBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzdCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1NBQ3hCLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkUsSUFBSSxPQUFPLEdBQUcsZ0NBQWdDLENBQUM7WUFDL0MsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzFCLENBQUM7WUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUM7Z0JBQ3pCLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMvQixPQUFPO2dCQUNQLEdBQUcsRUFBRSxDQUFDO2dCQUNOLElBQUksRUFBRSxDQUFDO2FBQ1IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlELE9BQU87UUFDVCxDQUFDO1FBRUQsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FDakMsSUFBSSxDQUFDLFFBQVEsRUFDYixtQkFBbUIsRUFDbkIsR0FBRyxFQUFFO2dCQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQixDQUFDLENBQ0Y7WUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUNqQyxJQUFJLENBQUMsUUFBUSxFQUNiLGtCQUFrQixFQUNsQixHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixDQUFDLENBQ0Y7WUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUNqQyxJQUFJLENBQUMsUUFBUSxFQUNiLGVBQWUsRUFDZixHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQ0Y7WUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUNqQyxJQUFJLENBQUMsUUFBUSxFQUNiLFNBQVMsRUFDVCxDQUFDLEdBQUcsSUFBZSxFQUFFLEVBQUU7Z0JBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFnQixDQUFDO2dCQUVqQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQ0Y7WUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUNqQyxJQUFJLENBQUMsUUFBUSxFQUNiLGVBQWUsRUFDZixHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQ0Y7WUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUNqQyxJQUFJLENBQUMsUUFBUSxFQUNiLGtCQUFrQixFQUNsQixDQUFDLEdBQUcsSUFBZSxFQUFFLEVBQUU7Z0JBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFnQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxLQUE2QjtRQUN6RCxPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx1QkFBdUI7SUFDdEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQWtDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsUUFBUTtRQUNOLG9FQUFvRTtRQUNwRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQzVDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDN0Msc0JBQXNCO1lBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbkMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt1R0F2VVUscUJBQXFCOzJGQUFyQixxQkFBcUIsNmdEQWZyQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3BELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDcEQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGdLQW5CUyx1REFBdUQ7OzJGQXVCdEQscUJBQXFCO2tCQXpCakMsU0FBUzsrQkFDRSxlQUFlLFlBQ2YsdURBQXVELGFBUXREO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUk7cTVDQTRCeUMsa0JBQWtCO0FBeVU3RSxNQUFNLE9BQU8sOEJBQ1gsU0FBUSxxQkFBcUI7SUFHN0IsK0JBQStCO0lBQ3RCLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxxREFBQyxDQUFDO0lBRWpDLHVEQUF1RDtJQUM5QyxRQUFRO1FBQ2YsNkJBQTZCO1FBQzdCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDO3VHQVhVLDhCQUE4QjsyRkFBOUIsOEJBQThCLHNOQWY5QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsOEJBQThCLENBQUM7Z0JBQzdELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDN0QsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQW5CUyx1REFBdUQ7OzJGQXVCdEQsOEJBQThCO2tCQXpCMUMsU0FBUzsrQkFDRSx5QkFBeUIsWUFDekIsdURBQXVELGFBUXREO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLCtCQUErQixDQUFDOzRCQUM3RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUM7NEJBQzdELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLGNBQ1csSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRE9DVU1FTlQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIG91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGlzVmFsaWRIb3N0IH0gZnJvbSAnLi4vaGVscGVycy9pcy12YWxpZC1ob3N0JztcbmltcG9ydCB7XG4gIEphdmFzY3JpcHRFcnJvclBheWxvYWQsXG4gIFNtYXJ0Q2FwdGNoYUluc3RhbmNlLFxuICBTbWFydENhcHRjaGFQYXJhbXMsXG59IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgQVBJX0xJTksgPSAoaG9zdCA9ICdzbWFydGNhcHRjaGEueWFuZGV4Y2xvdWQubmV0JykgPT4ge1xuICBjb25zdCBiYXNlID0gL15odHRwcz8vLnRlc3QoaG9zdCkgPyBob3N0IDogYGh0dHBzOi8vJHtob3N0fWA7XG4gIHJldHVybiBgJHtiYXNlfS9jYXB0Y2hhLmpzP3JlbmRlcj1vbmxvYWQmb25sb2FkPV9fb25TbWFydENhcHRjaGFSZWFkeWA7XG59O1xuXG4vLyBTaGFyZWQgY2FsbGJhY2tzIGFycmF5XG5jb25zdCBjYWxsYmFja3M6ICgoKSA9PiB2b2lkKVtdID0gW107XG5leHBvcnQgY29uc3Qgc3RhcnRMb2FkaW5nID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NtYXJ0LWNhcHRjaGEnLFxuICB0ZW1wbGF0ZTogYCA8ZGl2IGNsYXNzPVwic21hcnQtY2FwdGNoYVwiICNjYXB0Y2hhQ29udGFpbmVyPjwvZGl2PiBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc21hcnQtY2FwdGNoYSB7XG4gICAgICAgIGhlaWdodDogMTAycHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbWFydENhcHRjaGFDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU21hcnRDYXB0Y2hhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydENhcHRjaGFDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBzaXRla2V5ID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBpbnZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHZpc2libGUgPSBpbnB1dDxib29sZWFuPigpOyAvLyBGb3IgSW52aXNpYmxlQ2FwdGNoYSB0byBleGVjdXRlXG4gIGhpZGVTaGllbGQgPSBpbnB1dDxib29sZWFuPigpO1xuICBzaGllbGRQb3NpdGlvbiA9IGlucHV0PFxuICAgICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnYm90dG9tLXJpZ2h0J1xuICA+KCk7XG4gIGxhbmd1YWdlID0gaW5wdXQ8U21hcnRDYXB0Y2hhUGFyYW1zWydobCddPigpO1xuICBob3N0ID0gaW5wdXQ8c3RyaW5nPigpO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBzZXR0aW5nIGlzIGRlcHJlY2F0ZWQgYW5kIG11c3Qgb25seSBiZSBjaGFuZ2VkIHZpYSB0aGUgWWFuZGV4IENsb3VkIGludGVyZmFjZS5cbiAgICovXG4gIHRoZW1lID0gaW5wdXQ8J2xpZ2h0JyB8ICdkYXJrJyB8ICdhdXRvJz4oJ2F1dG8nKTtcbiAgdGVzdCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHdlYnZpZXcgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIGNoYWxsZW5nZUhpZGRlbiA9IG91dHB1dDx2b2lkPigpO1xuICBjaGFsbGVuZ2VWaXNpYmxlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHN1Y2Nlc3MgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICBuZXR3b3JrRXJyb3IgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgdG9rZW5FeHBpcmVkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIGphdmFzY3JpcHRFcnJvciA9IG91dHB1dDxKYXZhc2NyaXB0RXJyb3JQYXlsb2FkPigpO1xuXG4gIGNhcHRjaGFDb250YWluZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjYXB0Y2hhQ29udGFpbmVyJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgcHJvdGVjdGVkIHdpZGdldElkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBzbWFydENhcHRjaGFJbnN0YW5jZTogU21hcnRDYXB0Y2hhSW5zdGFuY2UgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBkZXN0cm95ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZUZuczogQXJyYXk8KCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkPiA9IFtdO1xuICBwcml2YXRlIGVycm9yRXZlbnRIYW5kbGVyOiAoKGU6IEVycm9yRXZlbnQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvLyBvbkNoYW5nZVxuICB9O1xuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICAvLyBvblRvdWNoZWRcbiAgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5uZXJWYWx1ZSA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBjYWxsYmFja0luZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBFZmZlY3QgZm9yIHRoZW1lIGNoYW5nZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnRoZW1lKCkgJiZcbiAgICAgICAgdGhpcy53aWRnZXRJZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2U/LnNldFRoZW1lXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5zZXRUaGVtZSh0aGlzLndpZGdldElkLCB0aGlzLnRoZW1lKCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRWZmZWN0IGZvciB2aXNpYmxlIGNoYW5nZXMgKEludmlzaWJsZSBDYXB0Y2hhKVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudmlzaWJsZSgpICYmXG4gICAgICAgIHRoaXMuaW52aXNpYmxlKCkgJiZcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZSAmJlxuICAgICAgICB0eXBlb2YgdGhpcy53aWRnZXRJZCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIXRoaXMuZGVzdHJveWVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5leGVjdXRlKHRoaXMud2lkZ2V0SWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaG9zdCgpICE9PSB1bmRlZmluZWQgJiYgIWlzVmFsaWRIb3N0KHRoaXMuaG9zdCgpKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFtTbWFydENhcHRjaGFdICR7dGhpcy5ob3N0KCl9IGhvc3QgaXMgaW52YWxpZC4gSXQgc2hvdWxkIGJlIG9mIGEga2luZDogZG9tYWluLnJ1LCBsb2NhbGhvc3Q6MzAwMGBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBTZXR1cCBnbG9iYWwgY2FsbGJhY2sgaWYgbm90IGFscmVhZHkgZGVmaW5lZFxuICAgICAgaWYgKHdpbmRvdy5fX29uU21hcnRDYXB0Y2hhUmVhZHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB3aW5kb3cuX19vblNtYXJ0Q2FwdGNoYVJlYWR5ID0gKCkgPT4ge1xuICAgICAgICAgIGNhbGxiYWNrcy5mb3JFYWNoKChjYWxsYmFjaykgPT4gY2FsbGJhY2soKSk7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIFNtYXJ0Q2FwdGNoYSBpcyBhbHJlYWR5IGxvYWRlZFxuICAgICAgaWYgKHdpbmRvdy5zbWFydENhcHRjaGEpIHtcbiAgICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZSA9IHdpbmRvdy5zbWFydENhcHRjaGE7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBvdXIgY2FsbGJhY2sgdG8gdGhlIHNoYXJlZCBhcnJheVxuICAgICAgdGhpcy5jYWxsYmFja0luZGV4ID0gY2FsbGJhY2tzLnB1c2goKCkgPT4ge1xuICAgICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlID0gd2luZG93LnNtYXJ0Q2FwdGNoYTtcbiAgICAgICAgdGhpcy5yZW5kZXJDYXB0Y2hhKCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gTG9hZCBzY3JpcHQgaWYgbm90IGFscmVhZHkgbG9hZGluZ1xuICAgICAgY29uc3QgaG9zdEtleSA9IHRoaXMuaG9zdCgpIHx8ICdkZWZhdWx0JztcbiAgICAgIGlmICghc3RhcnRMb2FkaW5nLmdldChob3N0S2V5KSkge1xuICAgICAgICB0aGlzLmxvYWRTY3JpcHQoKTtcbiAgICAgICAgc3RhcnRMb2FkaW5nLnNldChob3N0S2V5LCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2UpIHtcbiAgICAgIHRoaXMucmVuZGVyQ2FwdGNoYSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcblxuICAgIC8vIFJlbW92ZSBjYWxsYmFjayBmcm9tIHNoYXJlZCBhcnJheVxuICAgIGlmICh0aGlzLmNhbGxiYWNrSW5kZXggIT09IG51bGwpIHtcbiAgICAgIGNhbGxiYWNrcy5zcGxpY2UodGhpcy5jYWxsYmFja0luZGV4IC0gMSwgMSk7XG4gICAgfVxuXG4gICAgLy8gRGVzdHJveSB3aWRnZXQgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMud2lkZ2V0SWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlKSB7XG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLmRlc3Ryb3kodGhpcy53aWRnZXRJZCk7XG4gICAgICB0aGlzLndpZGdldElkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIENsZWFuIHVwIHN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLnVuc3Vic2NyaWJlRm5zLmZvckVhY2goKGZuKSA9PiBmbiAmJiBmbigpKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlRm5zID0gW107XG5cbiAgICAvLyBSZW1vdmUgZXJyb3IgZXZlbnQgaGFuZGxlclxuICAgIGlmICh0aGlzLmVycm9yRXZlbnRIYW5kbGVyICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCB0aGlzLmVycm9yRXZlbnRIYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRTY3JpcHQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3JjID0gQVBJX0xJTksodGhpcy5ob3N0KCkpO1xuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMucmVuZGVyZXIyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZShzY3JpcHQsICdzcmMnLCBzcmMpO1xuICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZShzY3JpcHQsICd0eXBlJywgJ3RleHQvamF2YXNjcmlwdCcpO1xuICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZShzY3JpcHQsICdjcm9zc09yaWdpbicsICdhbm9ueW1vdXMnKTtcblxuICAgIC8vIEhhbmRsZSByZWd1bGFyIG9ubG9hZC9vbmVycm9yXG4gICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGlmICh3aW5kb3cuc21hcnRDYXB0Y2hhICYmICF0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2UgPSB3aW5kb3cuc21hcnRDYXB0Y2hhO1xuICAgICAgICB0aGlzLnJlbmRlckNhcHRjaGEoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUphdmFzY3JpcHRFcnJvcih7XG4gICAgICAgIGZpbGVuYW1lOiBzcmMsXG4gICAgICAgIG1lc3NhZ2U6ICdVbmtub3duIGVycm9yIG9uIHNjcmlwdCBsb2FkaW5nJyxcbiAgICAgICAgY29sOiAwLFxuICAgICAgICBsaW5lOiAwLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIEFkZCBlcnJvciBldmVudCBsaXN0ZW5lciBmb3IgSlMgZXJyb3JzIGluIHRoZSBjYXB0Y2hhIHNjcmlwdFxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5lcnJvckV2ZW50SGFuZGxlciA9IChlOiBFcnJvckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChlLmZpbGVuYW1lPy5pbmRleE9mKHNyYykgPT09IDApIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUphdmFzY3JpcHRFcnJvcih7XG4gICAgICAgICAgICBmaWxlbmFtZTogZS5maWxlbmFtZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgIGNvbDogZS5jb2xubyxcbiAgICAgICAgICAgIGxpbmU6IGUubGluZW5vLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5lcnJvckV2ZW50SGFuZGxlcik7XG4gICAgfVxuXG4gICAgLy8gQWRkIHNjcmlwdCB0byBkb2N1bWVudFxuICAgIHRoaXMucmVuZGVyZXIyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSwgc2NyaXB0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ2FwdGNoYSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNhcHRjaGFDb250YWluZXIoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoXG4gICAgICAhY29udGFpbmVyIHx8XG4gICAgICAhdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZSB8fFxuICAgICAgdGhpcy53aWRnZXRJZCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLmRlc3Ryb3llZFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtczogU21hcnRDYXB0Y2hhUGFyYW1zID0ge1xuICAgICAgc2l0ZWtleTogdGhpcy5zaXRla2V5KCksXG4gICAgICBobDogdGhpcy5sYW5ndWFnZSgpLFxuICAgICAgdGhlbWU6IHRoaXMudGhlbWUoKSxcbiAgICAgIGludmlzaWJsZTogdGhpcy5pbnZpc2libGUoKSxcbiAgICAgIGhpZGVTaGllbGQ6IHRoaXMuaGlkZVNoaWVsZCgpLFxuICAgICAgc2hpZWxkUG9zaXRpb246IHRoaXMuc2hpZWxkUG9zaXRpb24oKSxcbiAgICAgIHRlc3Q6IHRoaXMudGVzdCgpLFxuICAgICAgd2VidmlldzogdGhpcy53ZWJ2aWV3KCksXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLndpZGdldElkID0gdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5yZW5kZXIoY29udGFpbmVyLCBwYXJhbXMpO1xuICAgICAgdGhpcy5zZXR1cFN1YnNjcmlwdGlvbnMoKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc29sZS5lcnJvcignW1NtYXJ0Q2FwdGNoYV0gRXJyb3IgcmVuZGVyaW5nIGNhcHRjaGEgd2lkZ2V0OicsIGVycm9yKTtcblxuICAgICAgbGV0IG1lc3NhZ2UgPSAnVW5rbm93biBlcnJvciBkdXJpbmcgcmVuZGVyaW5nJztcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhbmRsZUphdmFzY3JpcHRFcnJvcih7XG4gICAgICAgIGZpbGVuYW1lOiBBUElfTElOSyh0aGlzLmhvc3QoKSksXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGNvbDogMCxcbiAgICAgICAgbGluZTogMCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndpZGdldElkID09PSB1bmRlZmluZWQgfHwgIXRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTdG9yZSB1bnN1YnNjcmliZSBmdW5jdGlvbnMgZm9yIGNsZWFudXBcbiAgICB0aGlzLnVuc3Vic2NyaWJlRm5zID0gW1xuICAgICAgdGhpcy5zbWFydENhcHRjaGFJbnN0YW5jZS5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMud2lkZ2V0SWQsXG4gICAgICAgICdjaGFsbGVuZ2UtdmlzaWJsZScsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmNoYWxsZW5nZVZpc2libGUuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy53aWRnZXRJZCxcbiAgICAgICAgJ2NoYWxsZW5nZS1oaWRkZW4nLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignaGlkZGVuJyk7XG4gICAgICAgICAgdGhpcy5jaGFsbGVuZ2VIaWRkZW4uZW1pdCgpO1xuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy53aWRnZXRJZCxcbiAgICAgICAgJ25ldHdvcmstZXJyb3InLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5uZXR3b3JrRXJyb3IuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy53aWRnZXRJZCxcbiAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgY29uc3QgW3Rva2VuXSA9IGFyZ3MgYXMgW3N0cmluZ107XG5cbiAgICAgICAgICB0aGlzLl9pbm5lclZhbHVlLnNldCh0b2tlbik7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh0b2tlbik7XG4gICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdCh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICksXG5cbiAgICAgIHRoaXMuc21hcnRDYXB0Y2hhSW5zdGFuY2Uuc3Vic2NyaWJlKFxuICAgICAgICB0aGlzLndpZGdldElkLFxuICAgICAgICAndG9rZW4tZXhwaXJlZCcsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbm5lclZhbHVlLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy50b2tlbkV4cGlyZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICB0aGlzLnNtYXJ0Q2FwdGNoYUluc3RhbmNlLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy53aWRnZXRJZCxcbiAgICAgICAgJ2phdmFzY3JpcHQtZXJyb3InLFxuICAgICAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2Vycm9yXSA9IGFyZ3MgYXMgW0phdmFzY3JpcHRFcnJvclBheWxvYWRdO1xuICAgICAgICAgIHRoaXMuaGFuZGxlSmF2YXNjcmlwdEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVKYXZhc2NyaXB0RXJyb3IoZXJyb3I6IEphdmFzY3JpcHRFcnJvclBheWxvYWQpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKCdbU21hcnRDYXB0Y2hhXSBKYXZhc2NyaXB0IGVycm9yOicsIGVycm9yKTtcbiAgICB0aGlzLmphdmFzY3JpcHRFcnJvci5lbWl0KGVycm9yKTtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZHNcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5faW5uZXJWYWx1ZS5zZXQodmFsdWUpOyAvLyBTZXQgdGhlIHNpZ25hbCB2YWx1ZVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gVmFsaWRhdG9yIG1ldGhvZFxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgLy8gV2hlbiB1c2luZyBpbnZpc2libGUgY2FwdGNoYSwgZG9uJ3QgdmFsaWRhdGUgdW50aWwgdXNlciBpbnRlcmFjdHNcbiAgICBpZiAodGhpcy5pbnZpc2libGUoKSAmJiAhdGhpcy5faW5uZXJWYWx1ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBGb3Igc3RhbmRhcmQgY2FwdGNoYSwgcmVxdWlyZSB0b2tlblxuICAgIGlmICghdGhpcy5pbnZpc2libGUoKSAmJiAhdGhpcy5faW5uZXJWYWx1ZSgpKSB7XG4gICAgICAvLyBBY2Nlc3Mgc2lnbmFsIHZhbHVlXG4gICAgICByZXR1cm4geyBjYXB0Y2hhUmVxdWlyZWQ6IHRydWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbnZpc2libGUtc21hcnQtY2FwdGNoYScsXG4gIHRlbXBsYXRlOiBgIDxkaXYgY2xhc3M9XCJzbWFydC1jYXB0Y2hhXCIgI2NhcHRjaGFDb250YWluZXI+PC9kaXY+IGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zbWFydC1jYXB0Y2hhIHtcbiAgICAgICAgLyogTm8gaGVpZ2h0IG5lZWRlZCBmb3IgaW52aXNpYmxlIGNhcHRjaGEgKi9cbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEludmlzaWJsZVNtYXJ0Q2FwdGNoYUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnZpc2libGVTbWFydENhcHRjaGFDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEludmlzaWJsZVNtYXJ0Q2FwdGNoYUNvbXBvbmVudFxuICBleHRlbmRzIFNtYXJ0Q2FwdGNoYUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAvLyBBbHdheXMgc2V0IGludmlzaWJsZSB0byB0cnVlXG4gIG92ZXJyaWRlIGludmlzaWJsZSA9IGlucHV0KHRydWUpO1xuXG4gIC8vIE92ZXJyaWRlIG5nT25Jbml0IHRvIGVuc3VyZSBpbnZpc2libGUgaXMgYWx3YXlzIHRydWVcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQ2FsbCBwYXJlbnQgaW5pdGlhbGl6YXRpb25cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJvY2steWFuZGV4LXNtYXJ0LWNhcHRjaGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3lhbmRleC1zbWFydC1jYXB0Y2hhL3NyYy9uZ3gtcm9jay15YW5kZXgtc21hcnQtY2FwdGNoYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnInit, AfterViewInit, OnDestroy, ElementRef
|
|
2
|
+
import { OnInit, AfterViewInit, OnDestroy, ElementRef } from '@angular/core';
|
|
3
3
|
import { ControlValueAccessor, Validator, ValidationErrors } from '@angular/forms';
|
|
4
4
|
|
|
5
5
|
declare global {
|
|
@@ -11,13 +11,14 @@ declare global {
|
|
|
11
11
|
interface SmartCaptchaInstance {
|
|
12
12
|
render: (container: HTMLElement, params: SmartCaptchaParams) => number;
|
|
13
13
|
destroy: (widgetId: number) => void;
|
|
14
|
+
executePromise: (widgetId?: number) => Promise<string>;
|
|
14
15
|
subscribe: (widgetId: number, event: SmartCaptchaEvent, callback: (...args: unknown[]) => void) => (() => void) | undefined;
|
|
15
16
|
execute: (widgetId: number) => void;
|
|
16
17
|
setTheme?: (widgetId: number, theme: 'light' | 'dark' | 'auto') => void;
|
|
17
18
|
}
|
|
18
19
|
interface SmartCaptchaParams {
|
|
19
20
|
sitekey: string;
|
|
20
|
-
hl?:
|
|
21
|
+
hl?: 'ru' | 'en' | 'be' | 'kk' | 'tt' | 'uk' | 'uz' | 'tr';
|
|
21
22
|
theme?: 'light' | 'dark' | 'auto';
|
|
22
23
|
invisible?: boolean;
|
|
23
24
|
hideShield?: boolean;
|
|
@@ -35,15 +36,12 @@ interface JavascriptErrorPayload {
|
|
|
35
36
|
|
|
36
37
|
declare const startLoading: Map<string, boolean>;
|
|
37
38
|
declare class SmartCaptchaComponent implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy {
|
|
38
|
-
private renderer2;
|
|
39
|
-
private document;
|
|
40
|
-
private platformId;
|
|
41
39
|
sitekey: _angular_core.InputSignal<string>;
|
|
42
40
|
invisible: _angular_core.InputSignal<boolean>;
|
|
43
41
|
visible: _angular_core.InputSignal<boolean | undefined>;
|
|
44
42
|
hideShield: _angular_core.InputSignal<boolean | undefined>;
|
|
45
43
|
shieldPosition: _angular_core.InputSignal<"top-left" | "top-right" | "bottom-left" | "bottom-right" | undefined>;
|
|
46
|
-
language: _angular_core.InputSignal<
|
|
44
|
+
language: _angular_core.InputSignal<"ru" | "en" | "be" | "kk" | "tt" | "uk" | "uz" | "tr" | undefined>;
|
|
47
45
|
host: _angular_core.InputSignal<string | undefined>;
|
|
48
46
|
/**
|
|
49
47
|
* @deprecated This setting is deprecated and must only be changed via the Yandex Cloud interface.
|
|
@@ -58,6 +56,9 @@ declare class SmartCaptchaComponent implements ControlValueAccessor, Validator,
|
|
|
58
56
|
tokenExpired: _angular_core.OutputEmitterRef<void>;
|
|
59
57
|
javascriptError: _angular_core.OutputEmitterRef<JavascriptErrorPayload>;
|
|
60
58
|
captchaContainer: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
|
|
59
|
+
private readonly renderer2;
|
|
60
|
+
private readonly document;
|
|
61
|
+
private readonly platformId;
|
|
61
62
|
protected widgetId: number | undefined;
|
|
62
63
|
protected smartCaptchaInstance: SmartCaptchaInstance | undefined;
|
|
63
64
|
protected destroyed: boolean;
|
|
@@ -65,9 +66,9 @@ declare class SmartCaptchaComponent implements ControlValueAccessor, Validator,
|
|
|
65
66
|
private errorEventHandler;
|
|
66
67
|
private onChange;
|
|
67
68
|
private onTouched;
|
|
68
|
-
private _innerValue;
|
|
69
|
+
private readonly _innerValue;
|
|
69
70
|
private callbackIndex;
|
|
70
|
-
constructor(
|
|
71
|
+
constructor();
|
|
71
72
|
ngOnInit(): void;
|
|
72
73
|
ngAfterViewInit(): void;
|
|
73
74
|
ngOnDestroy(): void;
|
|
@@ -90,3 +91,4 @@ declare class InvisibleSmartCaptchaComponent extends SmartCaptchaComponent imple
|
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
export { InvisibleSmartCaptchaComponent, SmartCaptchaComponent, startLoading };
|
|
94
|
+
export type { JavascriptErrorPayload, SmartCaptchaInstance, SmartCaptchaParams };
|