@wemake4u/form-player-se 1.0.45 → 1.0.47
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/esm2022/lib/builtIn/builtIn.mjs +6 -2
- package/esm2022/lib/builtIn/cache.json +30 -0
- package/esm2022/lib/builtIn/form.json +25 -0
- package/esm2022/lib/builtIn/function.json +28 -0
- package/esm2022/lib/builtIn/nav.json +37 -0
- package/esm2022/lib/dialog/dialog.component.mjs +5 -4
- package/esm2022/lib/directives/collapse.directive.mjs +22 -2
- package/esm2022/lib/directives/dropdown.directive.mjs +38 -8
- package/esm2022/lib/directives/required.directive.mjs +2 -2
- package/esm2022/lib/directives/tabcontrol.directive.mjs +1 -1
- package/esm2022/lib/directives/treelist.directive.mjs +98 -0
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +96 -34
- package/esm2022/lib/services/builder.service.mjs +9 -1
- package/esm2022/lib/services/dialog.service.mjs +1 -1
- package/esm2022/lib/services/feel.service.mjs +25 -7
- package/esm2022/lib/services/form.service.mjs +17 -1
- package/esm2022/lib/services/function.service.mjs +26 -8
- package/esm2022/lib/services/programmability.service.mjs +26 -12
- package/esm2022/lib/services/validation.service.mjs +89 -54
- package/esm2022/lib/services/weak.service.mjs +4 -3
- package/esm2022/lib/utils/cacheControl.mjs +24 -0
- package/esm2022/lib/utils/deepEqual.mjs +27 -19
- package/esm2022/lib/utils/flatten.mjs +44 -0
- package/esm2022/lib/utils/observable.mjs +7 -3
- package/fesm2022/wemake4u-form-player-se.mjs +710 -190
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/directives/collapse.directive.d.ts +6 -1
- package/lib/directives/dropdown.directive.d.ts +5 -2
- package/lib/directives/treelist.directive.d.ts +23 -0
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +18 -4
- package/lib/services/dialog.service.d.ts +10 -3
- package/lib/services/feel.service.d.ts +7 -2
- package/lib/services/form.service.d.ts +3 -0
- package/lib/services/function.service.d.ts +4 -1
- package/lib/services/programmability.service.d.ts +3 -2
- package/lib/services/validation.service.d.ts +5 -2
- package/lib/services/weak.service.d.ts +1 -1
- package/lib/utils/cacheControl.d.ts +9 -0
- package/lib/utils/deepEqual.d.ts +3 -1
- package/lib/utils/flatten.d.ts +13 -0
- package/lib/utils/observable.d.ts +1 -1
- package/package.json +3 -3
|
@@ -7,6 +7,8 @@ import registerFn from './register.json';
|
|
|
7
7
|
import formFn from './form.json';
|
|
8
8
|
import feelFn from './feel.json';
|
|
9
9
|
import jsonFn from './json.json';
|
|
10
|
+
import cacheFn from './cache.json';
|
|
11
|
+
import navFn from './nav.json';
|
|
10
12
|
export const builtIn = [
|
|
11
13
|
consoleFn,
|
|
12
14
|
formGroupFn,
|
|
@@ -19,8 +21,10 @@ export const builtIn = [
|
|
|
19
21
|
...registerFn,
|
|
20
22
|
...formFn,
|
|
21
23
|
...feelFn,
|
|
22
|
-
...jsonFn
|
|
24
|
+
...jsonFn,
|
|
25
|
+
...cacheFn,
|
|
26
|
+
...navFn
|
|
23
27
|
]
|
|
24
28
|
}
|
|
25
29
|
];
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRJbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2J1aWx0SW4vYnVpbHRJbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLFdBQVcsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxVQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxXQUFXLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxVQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsU0FBUztJQUNULFdBQVc7SUFDWDtRQUNFLE1BQU0sRUFBRSxJQUFJO1FBQ1osU0FBUyxFQUFFO1lBQ1QsR0FBRyxRQUFRO1lBQ1gsR0FBRyxVQUFVO1lBQ2IsR0FBRyxXQUFXO1lBQ2QsR0FBRyxVQUFVO1lBQ2IsR0FBRyxNQUFNO1lBQ1QsR0FBRyxNQUFNO1lBQ1QsR0FBRyxNQUFNO1lBQ1QsR0FBRyxPQUFPO1lBQ1YsR0FBRyxLQUFLO1NBQ1Q7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc29sZUZuIGZyb20gJy4vY29uc29sZS5qc29uJztcclxuaW1wb3J0IGZvcm1Hcm91cEZuIGZyb20gJy4vZm9ybUdyb3VwLmpzb24nO1xyXG5pbXBvcnQgZGlhbG9nRm4gZnJvbSAnLi9kaWFsb2cuanNvbic7XHJcbmltcG9ydCBmdW5jdGlvbkZuIGZyb20gJy4vZnVuY3Rpb24uanNvbic7XHJcbmltcG9ydCBmb3JtYXR0ZXJGbiBmcm9tICcuL2Zvcm1hdHRlci5qc29uJztcclxuaW1wb3J0IHJlZ2lzdGVyRm4gZnJvbSAnLi9yZWdpc3Rlci5qc29uJztcclxuaW1wb3J0IGZvcm1GbiBmcm9tICcuL2Zvcm0uanNvbic7XHJcbmltcG9ydCBmZWVsRm4gZnJvbSAnLi9mZWVsLmpzb24nO1xyXG5pbXBvcnQganNvbkZuIGZyb20gJy4vanNvbi5qc29uJztcclxuaW1wb3J0IGNhY2hlRm4gZnJvbSAnLi9jYWNoZS5qc29uJztcclxuaW1wb3J0IG5hdkZuIGZyb20gJy4vbmF2Lmpzb24nO1xyXG5cclxuZXhwb3J0IGNvbnN0IGJ1aWx0SW4gPSBbXHJcbiAgY29uc29sZUZuLFxyXG4gIGZvcm1Hcm91cEZuLFxyXG4gIHtcclxuICAgIFwibmFtZVwiOiBcImZuXCIsXHJcbiAgICBcImVudHJpZXNcIjogW1xyXG4gICAgICAuLi5kaWFsb2dGbixcclxuICAgICAgLi4uZnVuY3Rpb25GbixcclxuICAgICAgLi4uZm9ybWF0dGVyRm4sXHJcbiAgICAgIC4uLnJlZ2lzdGVyRm4sXHJcbiAgICAgIC4uLmZvcm1GbixcclxuICAgICAgLi4uZmVlbEZuLFxyXG4gICAgICAuLi5qc29uRm4sXHJcbiAgICAgIC4uLmNhY2hlRm4sXHJcbiAgICAgIC4uLm5hdkZuXHJcbiAgICBdXHJcbiAgfVxyXG5dO1xyXG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "volatile",
|
|
4
|
+
"type": "function",
|
|
5
|
+
"detail": "Marks an expression as volatile and returns its value",
|
|
6
|
+
"info": "Returns the provided value unchanged and marks the current evaluation as volatile.\n\n---\n\n### Function signature\n\n```\nvolatile<T>(value: T): T\n```\n\n---\n\n### Notes\n\nThe value is returned unchanged.\n\nWhen this function is invoked, the current evaluation is marked as volatile so it can be excluded from caching.\n\n---\n\n### Examples\n\n```ts\nvolatile(user.name)\nvolatile(now())\n```",
|
|
7
|
+
"params": [
|
|
8
|
+
{
|
|
9
|
+
"name": "value",
|
|
10
|
+
"type": "any"
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "cacheFor",
|
|
16
|
+
"type": "function",
|
|
17
|
+
"detail": "Caches a value for a specified duration",
|
|
18
|
+
"info": "Returns the provided value unchanged and marks the current evaluation to be cached for the specified time-to-live (TTL) in milliseconds.\n\n---\n\n### Function signature\n\n```\ncacheFor<T>(value: T, ttl: number): T\n```\n\n---\n\n### Notes\n\nThe value is returned unchanged.\n\nWhen this function is invoked, the current evaluation result should be cached for the given TTL (in milliseconds).\n\nIf multiple cache directives are used, the last one applied should take precedence.\n\n---\n\n### Examples\n\n```ts\ncacheFor(now(), 1000)\n```",
|
|
19
|
+
"params": [
|
|
20
|
+
{
|
|
21
|
+
"name": "value",
|
|
22
|
+
"type": "any"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "ttl",
|
|
26
|
+
"type": "number"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
]
|
|
@@ -37,6 +37,31 @@
|
|
|
37
37
|
}
|
|
38
38
|
]
|
|
39
39
|
},
|
|
40
|
+
{
|
|
41
|
+
"name": "reset",
|
|
42
|
+
"type": "function",
|
|
43
|
+
"detail": "Resets a control by path",
|
|
44
|
+
"info": "Resets the control identified by the given path.\n\n---\n\n### Function signature\n\n```\nreset(path: Path): void\n```\n\n---\n\n### Examples\n\n```feel\nreset(\"user.name\")\n\nreset([\"items\", 0, \"price\"])\n```",
|
|
45
|
+
"params": [
|
|
46
|
+
{
|
|
47
|
+
"name": "path",
|
|
48
|
+
"type": "Path"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "resetAll",
|
|
54
|
+
"type": "function",
|
|
55
|
+
"detail": "Resets multiple controls by path",
|
|
56
|
+
"info": "Resets all controls identified by the given paths.\n\n---\n\n### Function signature\n\n```\nresetAll(...paths: string[]): void\n```\n\n---\n\n### Examples\n\n```feel\nresetAll(\"user.name\", \"address.city\")\n\nresetAll(\"items.0.price\", \"items.1.price\")\n```",
|
|
57
|
+
"params": [
|
|
58
|
+
{
|
|
59
|
+
"name": "paths",
|
|
60
|
+
"type": "string[]",
|
|
61
|
+
"rest": true
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
40
65
|
{
|
|
41
66
|
"name": "status",
|
|
42
67
|
"type": "function",
|
|
@@ -27,6 +27,34 @@
|
|
|
27
27
|
}
|
|
28
28
|
]
|
|
29
29
|
},
|
|
30
|
+
{
|
|
31
|
+
"name": "asObservable",
|
|
32
|
+
"type": "function",
|
|
33
|
+
"detail": "Creates an observable that emits a single value",
|
|
34
|
+
"info": "Creates an observable that emits exactly one value and then completes.\n\n---\n\n### Function signature\n\n```\nofOnce<T>(value: T): Observable<T>\n```\n\n---\n\n### Notes\n\nThis is equivalent to `of(value)` but guarantees a single emission, avoiding ambiguity with multiple values.\n\n---\n\n### Examples\n\n```ts\nofOnce(42)\n\nexecuteOnce(ofOnce(\"hello\"), {\n invoke: value => console.log(value)\n});\n```",
|
|
35
|
+
"params": [
|
|
36
|
+
{
|
|
37
|
+
"name": "value",
|
|
38
|
+
"type": "any"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "setTimeout",
|
|
44
|
+
"type": "function",
|
|
45
|
+
"detail": "Executes a callback after a delay",
|
|
46
|
+
"info": "Executes a callback once after the specified delay in milliseconds.\n\n---\n\n### Function signature\n\n```\nsetTimeout(callback: any, delay: number): void\n```\n\n---\n\n### Notes\n\nThe callback is invoked only once after the given delay.\n\n---\n\n### Examples\n\n```ts\nsetTimeout({\n invoke: () => console.log('done')\n}, 1000);\n```",
|
|
47
|
+
"params": [
|
|
48
|
+
{
|
|
49
|
+
"name": "callback",
|
|
50
|
+
"type": "any"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "delay",
|
|
54
|
+
"type": "number"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
30
58
|
{
|
|
31
59
|
"name": "openForm",
|
|
32
60
|
"type": "function",
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "canPrevious",
|
|
4
|
+
"type": "function",
|
|
5
|
+
"detail": "Checks if navigation to the previous step is allowed",
|
|
6
|
+
"info": "Returns true if it is possible to navigate to the previous step, otherwise false.\n\n---\n\n### Function signature\n\n```\ncanPrevious(): boolean\n```\n\n---\n\n### Notes\n\nThis function does not perform navigation, it only evaluates whether moving to the previous step is allowed.\n\n---\n\n### Examples\n\n```ts\ncanPrevious()\n```",
|
|
7
|
+
"params": []
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"name": "goPrevious",
|
|
11
|
+
"type": "function",
|
|
12
|
+
"detail": "Navigates to the previous step",
|
|
13
|
+
"info": "Navigates to the previous step if allowed.\n\n---\n\n### Function signature\n\n```\ngoPrevious(): void\n```\n\n---\n\n### Notes\n\nThis function performs navigation to the previous step. It is recommended to check `canPrevious()` before invoking.\n\n---\n\n### Examples\n\n```ts\ngoPrevious()\n```",
|
|
14
|
+
"params": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "canNext",
|
|
18
|
+
"type": "function",
|
|
19
|
+
"detail": "Checks if navigation to the next step is allowed",
|
|
20
|
+
"info": "Returns true if it is possible to navigate to the next step, otherwise false.\n\n---\n\n### Function signature\n\n```\ncanNext(): boolean\n```\n\n---\n\n### Notes\n\nThis function does not perform navigation, it only evaluates whether moving to the next step is allowed.\n\n---\n\n### Examples\n\n```ts\ncanNext()\n```",
|
|
21
|
+
"params": []
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "goNext",
|
|
25
|
+
"type": "function",
|
|
26
|
+
"detail": "Navigates to the next step",
|
|
27
|
+
"info": "Navigates to the next step if allowed.\n\n---\n\n### Function signature\n\n```\ngoNext(): void\n```\n\n---\n\n### Notes\n\nThis function performs navigation to the next step. It is recommended to check `canNext()` before invoking.\n\n---\n\n### Examples\n\n```ts\ngoNext()\n```",
|
|
28
|
+
"params": []
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "activeNav",
|
|
32
|
+
"type": "property",
|
|
33
|
+
"detail": "Gets the index of the active navigation step",
|
|
34
|
+
"info": "Returns the index of the currently active navigation step.\n\n---\n\n### Signature\n\n```\nactiveNav: number\n```\n\n---\n\n### Notes\n\nThe value represents the current position in the navigation flow.\n\n---\n\n### Examples\n\n```ts\nactiveNav\n```",
|
|
35
|
+
"params": []
|
|
36
|
+
}
|
|
37
|
+
]
|
|
@@ -48,7 +48,8 @@ export class DialogComponent extends SirioDialogElement {
|
|
|
48
48
|
this.doAction('Close');
|
|
49
49
|
}
|
|
50
50
|
doAction(action) {
|
|
51
|
-
this.
|
|
51
|
+
if (this.options.keepOpen !== true)
|
|
52
|
+
this.sirioDialogService.closeDialog();
|
|
52
53
|
this.SendResult(action);
|
|
53
54
|
}
|
|
54
55
|
showHeader() {
|
|
@@ -88,7 +89,7 @@ export class DialogComponent extends SirioDialogElement {
|
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogComponent, deps: [{ token: i1.LanguageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DialogComponent, isStandalone: true, selector: "dynamic-dialog", viewQueries: [{ propertyName: "formHost", first: true, predicate: ["formHost"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ngx-sirio-dialog (closeEvent)=\"doClose()\"\r\n dialog\r\n [type]=\"options.type ?? 'info'\"\r\n [size]=\"options.size ?? 'default'\"\r\n [isDrawer]=\"options.isDrawer ?? false\"\r\n [withCloseButton]=\"showCloseButton()\">\r\n\r\n <ngx-sirio-dialog-header [hidden]=\"!showHeader()\">\r\n <ngx-sirio-dialog-title [hidden]=\"!showTitle()\">{{ options.title }}</ngx-sirio-dialog-title>\r\n </ngx-sirio-dialog-header>\r\n\r\n <ngx-sirio-dialog-body>\r\n <ng-template #formHost></ng-template>\r\n </ngx-sirio-dialog-body>\r\n\r\n <ngx-sirio-dialog-footer *ngIf=\"showFooter()\">\r\n <ng-container [ngSwitch]=\"options.buttons\">\r\n <!-- OK -->\r\n <ng-container *ngSwitchCase=\"'OK'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: OKCancel -->\r\n <ng-container *ngSwitchCase=\"'OKCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: ConfirmClose -->\r\n <ng-container *ngSwitchCase=\"'ConfirmCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Confirm' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: AbortRetryIgnore -->\r\n <ng-container *ngSwitchCase=\"'AbortRetryIgnore'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Abort' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Ignore' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNoCancel -->\r\n <ng-container *ngSwitchCase=\"'YesNoCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNo -->\r\n <ng-container *ngSwitchCase=\"'YesNo'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: RetryCancel -->\r\n <ng-container *ngSwitchCase=\"'RetryCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: CancelTryContinue -->\r\n <ng-container *ngSwitchCase=\"'CancelTryContinue'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Try' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Continue' }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Templates -->\r\n <ng-template #confirmTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n [disabled]=\"isInvalid()\"\r\n color=\"primary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #closeTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n color=\"secondary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n\r\n </ngx-sirio-dialog-footer>\r\n\r\n</ngx-sirio-dialog>\r\n", styles: ["::ng-deep .sirio-dialog{background-color:#0000007f!important}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-sm .sirio-dialog-content{max-width:18.75rem}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-lg .sirio-dialog-content{max-width:50rem}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-xl .sirio-dialog-content{max-width:71.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: DialogDirective, selector: "[dialog]" }, { kind: "component", type: SirioDialogComponent, selector: "ngx-sirio-dialog", inputs: ["type", "size", "drawerContext", "withCloseButton", "isDrawer", "dialogId"], outputs: ["closeEvent", "confirmEvent"] }, { kind: "component", type: SirioDialogBodyComponent, selector: "ngx-sirio-dialog-body" }, { kind: "component", type: SirioDialogHeaderComponent, selector: "ngx-sirio-dialog-header", inputs: ["closeButtonAriaLabel"], outputs: ["closeEvent"] }, { kind: "component", type: SirioDialogFooterComponent, selector: "ngx-sirio-dialog-footer", inputs: ["actionsLabel"], outputs: ["closeEvent", "confirmEvent"] }, { kind: "component", type: SirioButtonComponent, selector: "ngx-sirio-button", inputs: ["ariaExpanded", "ariaControls", "ariaActivedescendant", "ariaHaspopup", "ariaLabel", "ariaRequired", "ariaInvalid", "ariaDescribedby", "icon", "title", "role", "color", "isFloating", "isExtended", "isLight", "isSmall", "disabled", "isDropdown", "type", "dismissType", "isBtnBlock"], outputs: ["clickEvent", "focusEvent", "blurEvent"] }, { kind: "component", type: SirioDialogTitleComponent, selector: "ngx-sirio-dialog-title" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
92
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DialogComponent, isStandalone: true, selector: "dynamic-dialog", viewQueries: [{ propertyName: "formHost", first: true, predicate: ["formHost"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ngx-sirio-dialog (closeEvent)=\"doClose()\"\r\n dialog\r\n [type]=\"options.type ?? 'info'\"\r\n [size]=\"options.size ?? 'default'\"\r\n [isDrawer]=\"options.isDrawer ?? false\"\r\n [withCloseButton]=\"showCloseButton()\">\r\n\r\n <ngx-sirio-dialog-header [hidden]=\"!showHeader()\">\r\n <ngx-sirio-dialog-title [hidden]=\"!showTitle()\">{{ options.title }}</ngx-sirio-dialog-title>\r\n </ngx-sirio-dialog-header>\r\n\r\n <ngx-sirio-dialog-body>\r\n <ng-template #formHost></ng-template>\r\n </ngx-sirio-dialog-body>\r\n\r\n <ngx-sirio-dialog-footer *ngIf=\"showFooter()\">\r\n <ng-container [ngSwitch]=\"options.buttons\">\r\n <!-- OK -->\r\n <ng-container *ngSwitchCase=\"'OK'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: OKCancel -->\r\n <ng-container *ngSwitchCase=\"'OKCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: ConfirmClose -->\r\n <ng-container *ngSwitchCase=\"'ConfirmCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Confirm' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: AbortRetryIgnore -->\r\n <ng-container *ngSwitchCase=\"'AbortRetryIgnore'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Abort' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Ignore' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNoCancel -->\r\n <ng-container *ngSwitchCase=\"'YesNoCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNo -->\r\n <ng-container *ngSwitchCase=\"'YesNo'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: RetryCancel -->\r\n <ng-container *ngSwitchCase=\"'RetryCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: CancelTryContinue -->\r\n <ng-container *ngSwitchCase=\"'CancelTryContinue'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Try' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Continue' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: Custom -->\r\n <ng-container *ngSwitchCase=\"'Custom'\">\r\n <ng-container *ngFor=\"let customButton of options.customButtons ?? []; let i = index\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate; context: { customButton: customButton }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Templates -->\r\n <ng-template #confirmTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n [disabled]=\"isInvalid()\"\r\n color=\"primary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #closeTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n color=\"secondary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #customTemplate\n let-customButton=\"customButton\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(customButton.action)\"\r\n [color]=\"customButton.color\">\r\n {{ customButton.text }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n\r\n </ngx-sirio-dialog-footer>\r\n\r\n</ngx-sirio-dialog>\r\n", styles: ["::ng-deep .sirio-dialog{background-color:#0000007f!important}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-sm .sirio-dialog-content{max-width:18.75rem}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-lg .sirio-dialog-content{max-width:50rem}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-xl .sirio-dialog-content{max-width:71.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: DialogDirective, selector: "[dialog]" }, { kind: "component", type: SirioDialogComponent, selector: "ngx-sirio-dialog", inputs: ["type", "size", "drawerContext", "withCloseButton", "isDrawer", "dialogId"], outputs: ["closeEvent", "confirmEvent"] }, { kind: "component", type: SirioDialogBodyComponent, selector: "ngx-sirio-dialog-body" }, { kind: "component", type: SirioDialogHeaderComponent, selector: "ngx-sirio-dialog-header", inputs: ["closeButtonAriaLabel"], outputs: ["closeEvent"] }, { kind: "component", type: SirioDialogFooterComponent, selector: "ngx-sirio-dialog-footer", inputs: ["actionsLabel"], outputs: ["closeEvent", "confirmEvent"] }, { kind: "component", type: SirioButtonComponent, selector: "ngx-sirio-button", inputs: ["ariaExpanded", "ariaControls", "ariaActivedescendant", "ariaHaspopup", "ariaLabel", "ariaRequired", "ariaInvalid", "ariaDescribedby", "icon", "title", "role", "color", "isFloating", "isExtended", "isLight", "isSmall", "disabled", "isDropdown", "type", "dismissType", "isBtnBlock"], outputs: ["clickEvent", "focusEvent", "blurEvent"] }, { kind: "component", type: SirioDialogTitleComponent, selector: "ngx-sirio-dialog-title" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
92
93
|
}
|
|
93
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogComponent, decorators: [{
|
|
94
95
|
type: Component,
|
|
@@ -102,9 +103,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
102
103
|
SirioButtonComponent,
|
|
103
104
|
SirioDialogActionDirective,
|
|
104
105
|
SirioDialogTitleComponent
|
|
105
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngx-sirio-dialog (closeEvent)=\"doClose()\"\r\n dialog\r\n [type]=\"options.type ?? 'info'\"\r\n [size]=\"options.size ?? 'default'\"\r\n [isDrawer]=\"options.isDrawer ?? false\"\r\n [withCloseButton]=\"showCloseButton()\">\r\n\r\n <ngx-sirio-dialog-header [hidden]=\"!showHeader()\">\r\n <ngx-sirio-dialog-title [hidden]=\"!showTitle()\">{{ options.title }}</ngx-sirio-dialog-title>\r\n </ngx-sirio-dialog-header>\r\n\r\n <ngx-sirio-dialog-body>\r\n <ng-template #formHost></ng-template>\r\n </ngx-sirio-dialog-body>\r\n\r\n <ngx-sirio-dialog-footer *ngIf=\"showFooter()\">\r\n <ng-container [ngSwitch]=\"options.buttons\">\r\n <!-- OK -->\r\n <ng-container *ngSwitchCase=\"'OK'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: OKCancel -->\r\n <ng-container *ngSwitchCase=\"'OKCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: ConfirmClose -->\r\n <ng-container *ngSwitchCase=\"'ConfirmCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Confirm' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: AbortRetryIgnore -->\r\n <ng-container *ngSwitchCase=\"'AbortRetryIgnore'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Abort' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Ignore' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNoCancel -->\r\n <ng-container *ngSwitchCase=\"'YesNoCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNo -->\r\n <ng-container *ngSwitchCase=\"'YesNo'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: RetryCancel -->\r\n <ng-container *ngSwitchCase=\"'RetryCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: CancelTryContinue -->\r\n <ng-container *ngSwitchCase=\"'CancelTryContinue'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Try' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Continue' }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Templates -->\r\n <ng-template #confirmTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n [disabled]=\"isInvalid()\"\r\n color=\"primary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #closeTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n color=\"secondary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n\r\n </ngx-sirio-dialog-footer>\r\n\r\n</ngx-sirio-dialog>\r\n", styles: ["::ng-deep .sirio-dialog{background-color:#0000007f!important}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-sm .sirio-dialog-content{max-width:18.75rem}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-lg .sirio-dialog-content{max-width:50rem}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-xl .sirio-dialog-content{max-width:71.25rem}\n"] }]
|
|
106
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngx-sirio-dialog (closeEvent)=\"doClose()\"\r\n dialog\r\n [type]=\"options.type ?? 'info'\"\r\n [size]=\"options.size ?? 'default'\"\r\n [isDrawer]=\"options.isDrawer ?? false\"\r\n [withCloseButton]=\"showCloseButton()\">\r\n\r\n <ngx-sirio-dialog-header [hidden]=\"!showHeader()\">\r\n <ngx-sirio-dialog-title [hidden]=\"!showTitle()\">{{ options.title }}</ngx-sirio-dialog-title>\r\n </ngx-sirio-dialog-header>\r\n\r\n <ngx-sirio-dialog-body>\r\n <ng-template #formHost></ng-template>\r\n </ngx-sirio-dialog-body>\r\n\r\n <ngx-sirio-dialog-footer *ngIf=\"showFooter()\">\r\n <ng-container [ngSwitch]=\"options.buttons\">\r\n <!-- OK -->\r\n <ng-container *ngSwitchCase=\"'OK'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: OKCancel -->\r\n <ng-container *ngSwitchCase=\"'OKCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: ConfirmClose -->\r\n <ng-container *ngSwitchCase=\"'ConfirmCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Confirm' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: AbortRetryIgnore -->\r\n <ng-container *ngSwitchCase=\"'AbortRetryIgnore'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Abort' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Ignore' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNoCancel -->\r\n <ng-container *ngSwitchCase=\"'YesNoCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNo -->\r\n <ng-container *ngSwitchCase=\"'YesNo'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: RetryCancel -->\r\n <ng-container *ngSwitchCase=\"'RetryCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: CancelTryContinue -->\r\n <ng-container *ngSwitchCase=\"'CancelTryContinue'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Try' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Continue' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: Custom -->\r\n <ng-container *ngSwitchCase=\"'Custom'\">\r\n <ng-container *ngFor=\"let customButton of options.customButtons ?? []; let i = index\">\r\n <ng-container *ngTemplateOutlet=\"customTemplate; context: { customButton: customButton }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Templates -->\r\n <ng-template #confirmTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n [disabled]=\"isInvalid()\"\r\n color=\"primary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #closeTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n color=\"secondary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #customTemplate\n let-customButton=\"customButton\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(customButton.action)\"\r\n [color]=\"customButton.color\">\r\n {{ customButton.text }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n\r\n </ngx-sirio-dialog-footer>\r\n\r\n</ngx-sirio-dialog>\r\n", styles: ["::ng-deep .sirio-dialog{background-color:#0000007f!important}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-sm .sirio-dialog-content{max-width:18.75rem}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-lg .sirio-dialog-content{max-width:50rem}::ng-deep .sirio-drawer .sirio-dialog .sirio-dialog-xl .sirio-dialog-content{max-width:71.25rem}\n"] }]
|
|
106
107
|
}], ctorParameters: () => [{ type: i1.LanguageService }], propDecorators: { formHost: [{
|
|
107
108
|
type: ViewChild,
|
|
108
109
|
args: ['formHost', { read: ViewContainerRef, static: true }]
|
|
109
110
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFDaEUsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLEVBQ3hFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUM1RSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFDaEQsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQW9COUMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsa0JBQWtCO0lBT2pDO0lBTFosUUFBUSxDQUFvQjtJQUM1QixPQUFPLENBQW9CO0lBQzNCLGVBQWUsQ0FBYTtJQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWQsWUFBb0IsZUFBZ0M7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFEVSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFFcEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUks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QjtxQkFDMUIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07b0ZBSXZDLFFBQVE7c0JBRGYsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NvbnRhaW5lclJlZiwgVmlld0NoaWxkLCBDb21wb25lbnRSZWYsIFR5cGVcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1EaWFsb2dPcHRpb25zLCBEaWFsb2dBY3Rpb24sIERpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kaWFsb2cuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtcclxuICBTaXJpb0RpYWxvZ0NvbXBvbmVudCwgU2lyaW9EaWFsb2dCb2R5Q29tcG9uZW50LCBTaXJpb0RpYWxvZ0hlYWRlckNvbXBvbmVudFxyXG4gICwgU2lyaW9EaWFsb2dGb290ZXJDb21wb25lbnQsIFNpcmlvQnV0dG9uQ29tcG9uZW50LCBTaXJpb0RpYWxvZ0FjdGlvbkRpcmVjdGl2ZVxyXG4gICwgU2lyaW9EaWFsb2dUaXRsZUNvbXBvbmVudCwgU2lyaW9EaWFsb2dFbGVtZW50XHJcbn0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAd2VtYWtlNHUvaW50ZXJhY3QnO1xyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2R5bmFtaWMtZGlhbG9nJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIERpYWxvZ0RpcmVjdGl2ZSxcclxuICAgIFNpcmlvRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgU2lyaW9EaWFsb2dCb2R5Q29tcG9uZW50LFxyXG4gICAgU2lyaW9EaWFsb2dIZWFkZXJDb21wb25lbnQsXHJcbiAgICBTaXJpb0RpYWxvZ0Zvb3RlckNvbXBvbmVudCxcclxuICAgIFNpcmlvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgU2lyaW9EaWFsb2dBY3Rpb25EaXJlY3RpdmUsXHJcbiAgICBTaXJpb0RpYWxvZ1RpdGxlQ29tcG9uZW50ICAgIFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgU2lyaW9EaWFsb2dFbGVtZW50IHtcclxuICBAVmlld0NoaWxkKCdmb3JtSG9zdCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBmb3JtSG9zdCE6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSBmb3JtUmVmITogQ29tcG9uZW50UmVmPGFueT5cclxuICBwcml2YXRlIGR5bmFtaWNGb3JtVHlwZSE6IFR5cGU8YW55PjtcclxuICBUZXh0cyA9IFRleHRzO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRhdGEub3B0aW9ucyA/PyB7fTtcclxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy5vcHRpb25zLnZhbHVlO1xyXG4gICAgdGhpcy5keW5hbWljRm9ybVR5cGUgPSB0aGlzLmRhdGEuZHluYW1pY0Zvcm1UeXBlO1xyXG4gIH1cclxuXHJcbiAgb3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7IH07XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgIGxldCBpbmplY3RvciA9IHRoaXMub3B0aW9ucy5pbmplY3RvclxyXG4gICAgICA/PyB0aGlzLmZvcm1Ib3N0LmluamVjdG9yO1xyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuZm9ybUhvc3QuY3JlYXRlQ29tcG9uZW50KHRoaXMuZHluYW1pY0Zvcm1UeXBlLCB7IGluamVjdG9yIH0pO1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55O1xyXG5cclxuICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnc2NoZW1hJywgdGhpcy5kYXRhLmZvcm1TY2hlbWEpO1xyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCd2YWx1ZScsIHRoaXMub3B0aW9ucy52YWx1ZSA/PyB7IH0pO1xyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdzaG93TmF2JywgdGhpcy5vcHRpb25zLnNob3dOYXYgPz8gZmFsc2UpO1xyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdzaG93TmF2QnV0dG9uJywgdGhpcy5vcHRpb25zLnNob3dOYXZCdXR0b24gPz8gZmFsc2UpO1xyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdzaG93UHJvZ3Jlc3MnLCB0aGlzLm9wdGlvbnMuc2hvd1Byb2dyZXNzID8/IGZhbHNlKTtcclxuICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnc2hvd0Zvcm1UaXRsZScsIHRoaXMub3B0aW9ucy5zaG93Rm9ybVRpdGxlID8/IGZhbHNlKTtcclxuXHJcbiAgICBpbnN0YW5jZS52YWx1ZUNoYW5nZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHRoaXMuc2V0Q3VycmVudFZhbHVlKHZhbHVlKSk7XHJcblxyXG4gICAgdGhpcy5mb3JtUmVmID0gY29tcG9uZW50UmVmO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGRvQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmRvQWN0aW9uKCdDbG9zZScpO1xyXG4gIH1cclxuXHJcbiAgZG9BY3Rpb24oYWN0aW9uOiBEaWFsb2dBY3Rpb24pIHtcclxuICAgIHRoaXMuc2lyaW9EaWFsb2dTZXJ2aWNlLmNsb3NlRGlhbG9nKCk7XHJcbiAgICB0aGlzLlNlbmRSZXN1bHQoYWN0aW9uKTsgICAgXHJcbiAgfVxyXG5cclxuICBzaG93SGVhZGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvd1RpdGxlKCkgfHwgdGhpcy5zaG93Q2xvc2VCdXR0b24oKTsgICAgXHJcbiAgfVxyXG5cclxuICBzaG93VGl0bGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRpdGxlID8gdHJ1ZTogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzaG93Q2xvc2VCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLm9wdGlvbnMuY2xvc2VCdXR0b24gPT09IHRydWU7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc2hvd0Zvb3RlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYnV0dG9ucyAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0aGlzLmZvcm1SZWY/Lmluc3RhbmNlPy5mb3JtR3JvdXA/LnZhbGlkID8/IHRydWUpICE9PSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUodGhpcy5sYW5ndWFnZSwgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgY3VycmVudFZhbHVlOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgc2V0Q3VycmVudFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFNlbmRSZXN1bHQoYWN0aW9uOiBEaWFsb2dBY3Rpb24pIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLm9uUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogRGlhbG9nUmVzdWx0ID0ge1xyXG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmN1cnJlbnRWYWx1ZVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm9wdGlvbnMub25SZXN1bHQocmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5neC1zaXJpby1kaWFsb2cgKGNsb3NlRXZlbnQpPVwiZG9DbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgICAgZGlhbG9nXHJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIm9wdGlvbnMudHlwZSA/PyAnaW5mbydcIlxyXG4gICAgICAgICAgICAgICAgICBbc2l6ZV09XCJvcHRpb25zLnNpemUgPz8gJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgICAgICAgW2lzRHJhd2VyXT1cIm9wdGlvbnMuaXNEcmF3ZXIgPz8gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICBbd2l0aENsb3NlQnV0dG9uXT1cInNob3dDbG9zZUJ1dHRvbigpXCI+XHJcblxyXG4gIDxuZ3gtc2lyaW8tZGlhbG9nLWhlYWRlciBbaGlkZGVuXT1cIiFzaG93SGVhZGVyKClcIj5cclxuICAgIDxuZ3gtc2lyaW8tZGlhbG9nLXRpdGxlIFtoaWRkZW5dPVwiIXNob3dUaXRsZSgpXCI+e3sgb3B0aW9ucy50aXRsZSB9fTwvbmd4LXNpcmlvLWRpYWxvZy10aXRsZT5cclxuICA8L25neC1zaXJpby1kaWFsb2ctaGVhZGVyPlxyXG5cclxuICA8bmd4LXNpcmlvLWRpYWxvZy1ib2R5PlxyXG4gICAgPG5nLXRlbXBsYXRlICNmb3JtSG9zdD48L25nLXRlbXBsYXRlPlxyXG4gIDwvbmd4LXNpcmlvLWRpYWxvZy1ib2R5PlxyXG5cclxuICA8bmd4LXNpcmlvLWRpYWxvZy1mb290ZXIgKm5nSWY9XCJzaG93Rm9vdGVyKClcIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm9wdGlvbnMuYnV0dG9uc1wiPlxyXG4gICAgICA8IS0tIE9LIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInT0snXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdPSycgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBDYXNvOiBPS0NhbmNlbCAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ09LQ2FuY2VsJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maXJtVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnT0snIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDYW5jZWwnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogQ29uZmlybUNsb3NlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ29uZmlybUNhbmNlbCdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ0NvbmZpcm0nIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDYW5jZWwnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogQWJvcnRSZXRyeUlnbm9yZSAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0Fib3J0UmV0cnlJZ25vcmUnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQWJvcnQnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ1JldHJ5JyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnSWdub3JlJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIENhc286IFllc05vQ2FuY2VsIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInWWVzTm9DYW5jZWwnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdZZXMnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdObycgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ0NhbmNlbCcgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBDYXNvOiBZZXNObyAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1llc05vJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maXJtVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnWWVzJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnTm8nIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogUmV0cnlDYW5jZWwgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidSZXRyeUNhbmNlbCdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ1JldHJ5JyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQ2FuY2VsJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIENhc286IENhbmNlbFRyeUNvbnRpbnVlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ2FuY2VsVHJ5Q29udGludWUnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQ2FuY2VsJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdUcnknIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDb250aW51ZScgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBUZW1wbGF0ZXMgLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgI2NvbmZpcm1UZW1wbGF0ZSBsZXQtYWN0aW9uPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIChjbGlja0V2ZW50KT1cImRvQWN0aW9uKGFjdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJbnZhbGlkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICB7eyBsb2NhbGUoVGV4dHMsIGFjdGlvbikgfX1cclxuICAgICAgPC9uZ3gtc2lyaW8tYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY2xvc2VUZW1wbGF0ZSBsZXQtYWN0aW9uPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIChjbGlja0V2ZW50KT1cImRvQWN0aW9uKGFjdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInNlY29uZGFyeVwiPlxyXG4gICAgICAgIHt7IGxvY2FsZShUZXh0cywgYWN0aW9uKSB9fVxyXG4gICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8L25neC1zaXJpby1kaWFsb2ctZm9vdGVyPlxyXG5cclxuPC9uZ3gtc2lyaW8tZGlhbG9nPlxyXG4iXX0=
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFDaEUsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLEVBQ3hFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUM1RSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFDaEQsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQW9COUMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsa0JBQWtCO0lBT2pDO0lBTFosUUFBUSxDQUFvQjtJQUM1QixPQUFPLENBQW9CO0lBQzNCLGVBQWUsQ0FBYTtJQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWQsWUFBb0IsZUFBZ0M7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFEVSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFFcEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUks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MEJBQTBCO3dCQUMxQixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIseUJBQXlCO3FCQUMxQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTTtvRkFJdkMsUUFBUTtzQkFEZixTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q29udGFpbmVyUmVmLCBWaWV3Q2hpbGQsIENvbXBvbmVudFJlZiwgVHlwZVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybURpYWxvZ09wdGlvbnMsIERpYWxvZ0FjdGlvbiwgRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2RpYWxvZy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge1xyXG4gIFNpcmlvRGlhbG9nQ29tcG9uZW50LCBTaXJpb0RpYWxvZ0JvZHlDb21wb25lbnQsIFNpcmlvRGlhbG9nSGVhZGVyQ29tcG9uZW50XHJcbiAgLCBTaXJpb0RpYWxvZ0Zvb3RlckNvbXBvbmVudCwgU2lyaW9CdXR0b25Db21wb25lbnQsIFNpcmlvRGlhbG9nQWN0aW9uRGlyZWN0aXZlXHJcbiAgLCBTaXJpb0RpYWxvZ1RpdGxlQ29tcG9uZW50LCBTaXJpb0RpYWxvZ0VsZW1lbnRcclxufSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B3ZW1ha2U0dS9pbnRlcmFjdCc7XHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZSc7XHJcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsaXplJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1kaWFsb2cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRGlhbG9nRGlyZWN0aXZlLFxyXG4gICAgU2lyaW9EaWFsb2dDb21wb25lbnQsXHJcbiAgICBTaXJpb0RpYWxvZ0JvZHlDb21wb25lbnQsXHJcbiAgICBTaXJpb0RpYWxvZ0hlYWRlckNvbXBvbmVudCxcclxuICAgIFNpcmlvRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxyXG4gICAgU2lyaW9CdXR0b25Db21wb25lbnQsXHJcbiAgICBTaXJpb0RpYWxvZ0FjdGlvbkRpcmVjdGl2ZSxcclxuICAgIFNpcmlvRGlhbG9nVGl0bGVDb21wb25lbnQgICAgXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5jc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBTaXJpb0RpYWxvZ0VsZW1lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1Ib3N0JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSlcclxuICBwcml2YXRlIGZvcm1Ib3N0ITogVmlld0NvbnRhaW5lclJlZjtcclxuICBwcml2YXRlIGZvcm1SZWYhOiBDb21wb25lbnRSZWY8YW55PlxyXG4gIHByaXZhdGUgZHluYW1pY0Zvcm1UeXBlITogVHlwZTxhbnk+O1xyXG4gIFRleHRzID0gVGV4dHM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGF0YS5vcHRpb25zID8/IHt9O1xyXG4gICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLm9wdGlvbnMudmFsdWU7XHJcbiAgICB0aGlzLmR5bmFtaWNGb3JtVHlwZSA9IHRoaXMuZGF0YS5keW5hbWljRm9ybVR5cGU7XHJcbiAgfVxyXG5cclxuICBvcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHsgfTtcclxuICBcclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gICAgbGV0IGluamVjdG9yID0gdGhpcy5vcHRpb25zLmluamVjdG9yXHJcbiAgICAgID8/IHRoaXMuZm9ybUhvc3QuaW5qZWN0b3I7XHJcblxyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5mb3JtSG9zdC5jcmVhdGVDb21wb25lbnQodGhpcy5keW5hbWljRm9ybVR5cGUsIHsgaW5qZWN0b3IgfSk7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnk7XHJcblxyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdzY2hlbWEnLCB0aGlzLmRhdGEuZm9ybVNjaGVtYSk7XHJcbiAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ3ZhbHVlJywgdGhpcy5vcHRpb25zLnZhbHVlID8/IHsgfSk7XHJcbiAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Nob3dOYXYnLCB0aGlzLm9wdGlvbnMuc2hvd05hdiA/PyBmYWxzZSk7XHJcbiAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Nob3dOYXZCdXR0b24nLCB0aGlzLm9wdGlvbnMuc2hvd05hdkJ1dHRvbiA/PyBmYWxzZSk7XHJcbiAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Nob3dQcm9ncmVzcycsIHRoaXMub3B0aW9ucy5zaG93UHJvZ3Jlc3MgPz8gZmFsc2UpO1xyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdzaG93Rm9ybVRpdGxlJywgdGhpcy5vcHRpb25zLnNob3dGb3JtVGl0bGUgPz8gZmFsc2UpO1xyXG5cclxuICAgIGluc3RhbmNlLnZhbHVlQ2hhbmdlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4gdGhpcy5zZXRDdXJyZW50VmFsdWUodmFsdWUpKTtcclxuXHJcbiAgICB0aGlzLmZvcm1SZWYgPSBjb21wb25lbnRSZWY7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZG9DbG9zZSgpIHtcclxuICAgIHRoaXMuZG9BY3Rpb24oJ0Nsb3NlJyk7XHJcbiAgfVxyXG5cclxuICBkb0FjdGlvbihhY3Rpb246IERpYWxvZ0FjdGlvbikge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5rZWVwT3BlbiAhPT0gdHJ1ZSlcclxuICAgICAgdGhpcy5zaXJpb0RpYWxvZ1NlcnZpY2UuY2xvc2VEaWFsb2coKTtcclxuICAgIHRoaXMuU2VuZFJlc3VsdChhY3Rpb24pOyAgICBcclxuICB9XHJcblxyXG4gIHNob3dIZWFkZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zaG93VGl0bGUoKSB8fCB0aGlzLnNob3dDbG9zZUJ1dHRvbigpOyAgICBcclxuICB9XHJcblxyXG4gIHNob3dUaXRsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudGl0bGUgPyB0cnVlOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNob3dDbG9zZUJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMub3B0aW9ucy5jbG9zZUJ1dHRvbiA9PT0gdHJ1ZTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBzaG93Rm9vdGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5idXR0b25zICE9PSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBpc0ludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHRoaXMuZm9ybVJlZj8uaW5zdGFuY2U/LmZvcm1Hcm91cD8udmFsaWQgPz8gdHJ1ZSkgIT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBsb2NhbGUoY29tcG9uZW50OiBhbnksIGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbGl6ZSh0aGlzLmxhbmd1YWdlLCBjb21wb25lbnQsIGtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50VmFsdWU6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBzZXRDdXJyZW50VmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50VmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgU2VuZFJlc3VsdChhY3Rpb246IERpYWxvZ0FjdGlvbikge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMub25SZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBEaWFsb2dSZXN1bHQgPSB7XHJcbiAgICAgICAgYWN0aW9uOiBhY3Rpb24sXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuY3VycmVudFZhbHVlXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMub3B0aW9ucy5vblJlc3VsdChyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bmd4LXNpcmlvLWRpYWxvZyAoY2xvc2VFdmVudCk9XCJkb0Nsb3NlKClcIlxyXG4gICAgICAgICAgICAgICAgICBkaWFsb2dcclxuICAgICAgICAgICAgICAgICAgW3R5cGVdPVwib3B0aW9ucy50eXBlID8/ICdpbmZvJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzaXplXT1cIm9wdGlvbnMuc2l6ZSA/PyAnZGVmYXVsdCdcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNEcmF3ZXJdPVwib3B0aW9ucy5pc0RyYXdlciA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt3aXRoQ2xvc2VCdXR0b25dPVwic2hvd0Nsb3NlQnV0dG9uKClcIj5cclxuXHJcbiAgPG5neC1zaXJpby1kaWFsb2ctaGVhZGVyIFtoaWRkZW5dPVwiIXNob3dIZWFkZXIoKVwiPlxyXG4gICAgPG5neC1zaXJpby1kaWFsb2ctdGl0bGUgW2hpZGRlbl09XCIhc2hvd1RpdGxlKClcIj57eyBvcHRpb25zLnRpdGxlIH19PC9uZ3gtc2lyaW8tZGlhbG9nLXRpdGxlPlxyXG4gIDwvbmd4LXNpcmlvLWRpYWxvZy1oZWFkZXI+XHJcblxyXG4gIDxuZ3gtc2lyaW8tZGlhbG9nLWJvZHk+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Zvcm1Ib3N0PjwvbmctdGVtcGxhdGU+XHJcbiAgPC9uZ3gtc2lyaW8tZGlhbG9nLWJvZHk+XHJcblxyXG4gIDxuZ3gtc2lyaW8tZGlhbG9nLWZvb3RlciAqbmdJZj1cInNob3dGb290ZXIoKVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwib3B0aW9ucy5idXR0b25zXCI+XHJcbiAgICAgIDwhLS0gT0sgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidPSydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ09LJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIENhc286IE9LQ2FuY2VsIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInT0tDYW5jZWwnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdPSycgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ0NhbmNlbCcgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBDYXNvOiBDb25maXJtQ2xvc2UgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDb25maXJtQ2FuY2VsJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maXJtVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQ29uZmlybScgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ0NhbmNlbCcgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBDYXNvOiBBYm9ydFJldHJ5SWdub3JlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQWJvcnRSZXRyeUlnbm9yZSdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdBYm9ydCcgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maXJtVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnUmV0cnknIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdJZ25vcmUnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogWWVzTm9DYW5jZWwgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidZZXNOb0NhbmNlbCdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ1llcycgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ05vJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQ2FuY2VsJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIENhc286IFllc05vIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInWWVzTm8nXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdZZXMnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdObycgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBDYXNvOiBSZXRyeUNhbmNlbCAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1JldHJ5Q2FuY2VsJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maXJtVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnUmV0cnknIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDYW5jZWwnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogQ2FuY2VsVHJ5Q29udGludWUgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDYW5jZWxUcnlDb250aW51ZSdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDYW5jZWwnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ1RyeScgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ0NvbnRpbnVlJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIENhc286IEN1c3RvbSAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0N1c3RvbSdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21CdXR0b24gb2Ygb3B0aW9ucy5jdXN0b21CdXR0b25zID8/IFtdOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tVGVtcGxhdGU7IGNvbnRleHQ6IHsgY3VzdG9tQnV0dG9uOiBjdXN0b21CdXR0b24gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBUZW1wbGF0ZXMgLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgI2NvbmZpcm1UZW1wbGF0ZSBsZXQtYWN0aW9uPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIChjbGlja0V2ZW50KT1cImRvQWN0aW9uKGFjdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJbnZhbGlkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICB7eyBsb2NhbGUoVGV4dHMsIGFjdGlvbikgfX1cclxuICAgICAgPC9uZ3gtc2lyaW8tYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY2xvc2VUZW1wbGF0ZSBsZXQtYWN0aW9uPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIChjbGlja0V2ZW50KT1cImRvQWN0aW9uKGFjdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInNlY29uZGFyeVwiPlxyXG4gICAgICAgIHt7IGxvY2FsZShUZXh0cywgYWN0aW9uKSB9fVxyXG4gICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNjdXN0b21UZW1wbGF0ZVxuICAgICAgICAgICAgICAgICBsZXQtY3VzdG9tQnV0dG9uPVwiY3VzdG9tQnV0dG9uXCI+XHJcbiAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIChjbGlja0V2ZW50KT1cImRvQWN0aW9uKGN1c3RvbUJ1dHRvbi5hY3Rpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImN1c3RvbUJ1dHRvbi5jb2xvclwiPlxyXG4gICAgICAgIHt7IGN1c3RvbUJ1dHRvbi50ZXh0IH19XHJcbiAgICAgIDwvbmd4LXNpcmlvLWJ1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwvbmd4LXNpcmlvLWRpYWxvZy1mb290ZXI+XHJcblxyXG48L25neC1zaXJpby1kaWFsb2c+XHJcbiJdfQ==
|
|
@@ -13,6 +13,9 @@ export class CollapseDirective {
|
|
|
13
13
|
listenerService;
|
|
14
14
|
languageService;
|
|
15
15
|
maxHeight = null;
|
|
16
|
+
onCollapse;
|
|
17
|
+
onExpand;
|
|
18
|
+
component = null;
|
|
16
19
|
currentHeight = null;
|
|
17
20
|
button = null;
|
|
18
21
|
iconSpan = null;
|
|
@@ -132,6 +135,7 @@ export class CollapseDirective {
|
|
|
132
135
|
this.renderer.setStyle(element, 'overflow', 'visible');
|
|
133
136
|
this.button.childNodes[0].textContent = this.locale(Texts, 'ReadLess');
|
|
134
137
|
this.updateIcon('fa-chevron-up', 'fa-chevron-down');
|
|
138
|
+
this.onExpandOccurred();
|
|
135
139
|
}
|
|
136
140
|
collapse() {
|
|
137
141
|
const element = this.el.nativeElement;
|
|
@@ -139,6 +143,7 @@ export class CollapseDirective {
|
|
|
139
143
|
this.renderer.setStyle(element, 'overflow', 'hidden');
|
|
140
144
|
this.button.childNodes[0].textContent = this.locale(Texts, 'ReadMore');
|
|
141
145
|
this.updateIcon('fa-chevron-down', 'fa-chevron-up');
|
|
146
|
+
this.onCollapseOccurred();
|
|
142
147
|
}
|
|
143
148
|
updateIcon(add, remove) {
|
|
144
149
|
if (this.iconSpan) {
|
|
@@ -149,8 +154,16 @@ export class CollapseDirective {
|
|
|
149
154
|
locale(component, key) {
|
|
150
155
|
return localize(this.language, component, key);
|
|
151
156
|
}
|
|
157
|
+
onExpandOccurred() {
|
|
158
|
+
if (this.onExpand)
|
|
159
|
+
this.onExpand();
|
|
160
|
+
}
|
|
161
|
+
onCollapseOccurred() {
|
|
162
|
+
if (this.onCollapse)
|
|
163
|
+
this.onCollapse();
|
|
164
|
+
}
|
|
152
165
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CollapseDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.DestroyRef }, { token: i1.ListenerService }, { token: i2.LanguageService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
153
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: CollapseDirective, isStandalone: true, selector: "[collapse]", inputs: { maxHeight: ["collapse", "maxHeight"] }, providers: [
|
|
166
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: CollapseDirective, isStandalone: true, selector: "[collapse]", inputs: { maxHeight: ["collapse", "maxHeight"], onCollapse: "onCollapse", onExpand: "onExpand", component: ["register", "component"] }, providers: [
|
|
154
167
|
ListenerService
|
|
155
168
|
], usesOnChanges: true, ngImport: i0 });
|
|
156
169
|
}
|
|
@@ -166,5 +179,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
166
179
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.DestroyRef }, { type: i1.ListenerService }, { type: i2.LanguageService }], propDecorators: { maxHeight: [{
|
|
167
180
|
type: Input,
|
|
168
181
|
args: ['collapse']
|
|
182
|
+
}], onCollapse: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], onExpand: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], component: [{
|
|
187
|
+
type: Input,
|
|
188
|
+
args: ["register"]
|
|
169
189
|
}] } });
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9jb2xsYXBzZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsS0FBSyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQVNoRSxNQUFNLE9BQU8saUJBQWlCO0lBV1I7SUFDUjtJQUNBO0lBQ0E7SUFDQTtJQWRPLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBRTNDLGFBQWEsR0FBa0IsSUFBSSxDQUFDO0lBQ3BDLE1BQU0sR0FBNkIsSUFBSSxDQUFDO0lBQ3hDLFFBQVEsR0FBdUIsSUFBSSxDQUFDO0lBQ3BDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixlQUFlLENBQU07SUFDckIsZ0JBQWdCLENBQWM7SUFFdEMsWUFBb0IsRUFBYyxFQUN0QixRQUFtQixFQUNuQixVQUFzQixFQUN0QixlQUFnQyxFQUNoQyxlQUFnQztRQUp4QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRTFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRTthQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFB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SUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLFNBQWMsRUFBRSxHQUFXO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7d0dBektVLGlCQUFpQjs0RkFBakIsaUJBQWlCLDJHQUpqQjtZQUNULGVBQWU7U0FDaEI7OzRGQUVVLGlCQUFpQjtrQkFQN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVCxlQUFlO3FCQUNoQjtpQkFDRjs0TEFFb0IsU0FBUztzQkFBM0IsS0FBSzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaXN0ZW5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9saXN0ZW5lci5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B3ZW1ha2U0dS9pbnRlcmFjdCc7XHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZSc7XHJcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsaXplJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbY29sbGFwc2VdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgTGlzdGVuZXJTZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sbGFwc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCdjb2xsYXBzZScpIG1heEhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgcHJpdmF0ZSBjdXJyZW50SGVpZ2h0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGljb25TcGFuOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZXhwYW5kZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIHZpZXdJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdGltZW91dEZvY3VzT3V0OiBhbnk7XHJcbiAgcHJpdmF0ZSB1bmxpc3RlbkZvY3VzT3V0ITogKCkgPT4gdm9pZDtcclxuICBcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmXHJcbiAgICAsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICAgLCBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcclxuICAgICwgcHJpdmF0ZSBsaXN0ZW5lclNlcnZpY2U6IExpc3RlbmVyU2VydmljZSAgIFxyXG4gICAgLCBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlKSB7XHJcblxyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlLm9uTGFuZ3VhZ2VDaGFuZ2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hcHBseUNvbGxhcHNlTG9naWMoKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXRCdXR0b24oKTtcclxuICAgIHRoaXMucmVzZXRGb2N1c0hhbmRsZXIoKTsgICAgXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSB0aGlzLm1heEhlaWdodDtcclxuICAgIHRoaXMuYXBwbHlDb2xsYXBzZUxvZ2ljKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snbGFuZ3VhZ2UnXSB8fCBjaGFuZ2VzWydtYXhIZWlnaHQnXSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSB0aGlzLm1heEhlaWdodDtcclxuICAgICAgaWYgKHRoaXMudmlld0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbGxhcHNlTG9naWMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNvbGxhcHNlTG9naWMoKTogdm9pZCB7XHJcbiAgICBcclxuICAgIHRoaXMucmVzZXRTdHlsZXMoKTtcclxuICAgIFxyXG4gICAgdGhpcy5yZXNldEJ1dHRvbigpO1xyXG4gICAgXHJcbiAgICB0aGlzLnJlc2V0Rm9jdXNIYW5kbGVyKCk7XHJcblxyXG4gICAgaWYgKHRoaXMubWF4SGVpZ2h0ID09IG51bGwgfHwgdGhpcy5tYXhIZWlnaHQgPD0gMCkge1xyXG4gICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmFwcGx5U3R5bGUoKTtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5zY3JvbGxIZWlnaHQgPiB0aGlzLm1heEhlaWdodCEpIHtcclxuICAgICAgICB0aGlzLmFwcGx5QnV0dG9uKCk7XHJcbiAgICAgICAgdGhpcy5hcHBseUZvY3VzSGFuZGxlcigpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5U3R5bGUoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdtYXgtaGVpZ2h0JywgYCR7dGhpcy5tYXhIZWlnaHR9cHhgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRTdHlsZXMoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnb3ZlcmZsb3cnLCBudWxsKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ21heC1oZWlnaHQnLCBudWxsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlCdXR0b24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy5idXR0b24gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmJ1dHRvbiwgJ3NpcmlvLWJ0bicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgJ3BhZGRpbmcnLCAnMHB4Jyk7XHJcblxyXG4gICAgY29uc3QgdGV4dCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0aGlzLmxvY2FsZShUZXh0cywgJ1JlYWRNb3JlJykpO1xyXG5cclxuICAgIHRoaXMuaWNvblNwYW4gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5pY29uU3BhbiwgJ2ZhJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaWNvblNwYW4sICdmYS1jaGV2cm9uLWRvd24nKTtcclxuICAgIFxyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbiwgdGV4dCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuYnV0dG9uLCB0aGlzLmljb25TcGFuKTtcclxuXHJcbiAgICB0aGlzLmxpc3RlbmVyU2VydmljZS5saXN0ZW4odGhpcy5idXR0b24sICdjbGljaycsICgpID0+IHRoaXMudG9nZ2xlRXhwYW5kKCkpO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sICdtYXJnaW4tdG9wJywgJzhweCcpO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZWxlbWVudC5wYXJlbnROb2RlLCB0aGlzLmJ1dHRvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0QnV0dG9uKCkge1xyXG4gICAgaWYgKHRoaXMuYnV0dG9uICYmIHRoaXMuYnV0dG9uLnBhcmVudE5vZGUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmJ1dHRvbi5wYXJlbnROb2RlLCB0aGlzLmJ1dHRvbik7XHJcbiAgICAgIHRoaXMuYnV0dG9uID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGb2N1c0hhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy51bmxpc3RlbkZvY3VzT3V0ID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZWxlbWVudCwgJ2ZvY3Vzb3V0JywgKCkgPT4ge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0Rm9jdXNPdXQpO1xyXG4gICAgICB0aGlzLnRpbWVvdXRGb2N1c091dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlmICghZWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xyXG4gICAgICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZygnTkVTU1VOIGVsZW1lbnRvIGludGVybm8gaGEgcGnDuSBpbCBmb2N1cycpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRGb2N1c0hhbmRsZXIoKSB7XHJcbiAgICBpZiAodGhpcy51bmxpc3RlbkZvY3VzT3V0KSB7XHJcbiAgICAgIHRoaXMudW5saXN0ZW5Gb2N1c091dCgpO1xyXG4gICAgfVxyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dEZvY3VzT3V0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlRXhwYW5kKCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcclxuICAgICAgdGhpcy5leHBhbmQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29sbGFwc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwYW5kKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ21heC1oZWlnaHQnLCAnbm9uZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnb3ZlcmZsb3cnLCAndmlzaWJsZScpO1xyXG4gICAgdGhpcy5idXR0b24hLmNoaWxkTm9kZXNbMF0udGV4dENvbnRlbnQgPSB0aGlzLmxvY2FsZShUZXh0cywgJ1JlYWRMZXNzJyk7XHJcbiAgICB0aGlzLnVwZGF0ZUljb24oJ2ZhLWNoZXZyb24tdXAnLCAnZmEtY2hldnJvbi1kb3duJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ21heC1oZWlnaHQnLCBgJHt0aGlzLmN1cnJlbnRIZWlnaHR9cHhgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5idXR0b24hLmNoaWxkTm9kZXNbMF0udGV4dENvbnRlbnQgPSB0aGlzLmxvY2FsZShUZXh0cywgJ1JlYWRNb3JlJyk7XHJcbiAgICB0aGlzLnVwZGF0ZUljb24oJ2ZhLWNoZXZyb24tZG93bicsICdmYS1jaGV2cm9uLXVwJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUljb24oYWRkOiBzdHJpbmcsIHJlbW92ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5pY29uU3Bhbikge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuaWNvblNwYW4sIHJlbW92ZSk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5pY29uU3BhbiwgYWRkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUodGhpcy5sYW5ndWFnZSwgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgXHJcbn1cclxuIl19
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9jb2xsYXBzZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsS0FBSyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQVNoRSxNQUFNLE9BQU8saUJBQWlCO0lBZVI7SUFDUjtJQUNBO0lBQ0E7SUFDQTtJQWxCTyxTQUFTLEdBQWtCLElBQUksQ0FBQztJQUMxQyxVQUFVLENBQWM7SUFDeEIsUUFBUSxDQUFjO0lBRVosU0FBUyxHQUFRLElBQUksQ0FBQztJQUVqQyxhQUFhLEdBQWtCLElBQUksQ0FBQztJQUNwQyxNQUFNLEdBQTZCLElBQUksQ0FBQztJQUN4QyxRQUFRLEdBQXVCLElBQUksQ0FBQztJQUNwQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIsZUFBZSxDQUFNO0lBQ3JCLGdCQUFnQixDQUFjO0lBRXRDLFlBQW9CLEVBQWMsRUFDdEIsUUFBbUIsRUFDbkIsVUFBc0IsRUFDdEIsZUFBZ0MsRUFDaEMsZUFBZ0M7UUFKeEIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtR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bkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaXN0ZW5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9saXN0ZW5lci5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B3ZW1ha2U0dS9pbnRlcmFjdCc7XHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZSc7XHJcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsaXplJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbY29sbGFwc2VdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgTGlzdGVuZXJTZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sbGFwc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCdjb2xsYXBzZScpIG1heEhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgb25Db2xsYXBzZT86ICgpID0+IHZvaWQ7XHJcbiAgQElucHV0KCkgb25FeHBhbmQ/OiAoKSA9PiB2b2lkO1xyXG5cclxuICBASW5wdXQoXCJyZWdpc3RlclwiKSBjb21wb25lbnQ6IGFueSA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgY3VycmVudEhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBidXR0b246IEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBpY29uU3BhbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGV4cGFuZGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSB2aWV3SW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIHRpbWVvdXRGb2N1c091dDogYW55O1xyXG4gIHByaXZhdGUgdW5saXN0ZW5Gb2N1c091dCE6ICgpID0+IHZvaWQ7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZlxyXG4gICAgLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcclxuICAgICwgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmXHJcbiAgICAsIHByaXZhdGUgbGlzdGVuZXJTZXJ2aWNlOiBMaXN0ZW5lclNlcnZpY2UgICBcclxuICAgICwgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge1xyXG5cclxuICAgIGxhbmd1YWdlU2VydmljZS5vbkxhbmd1YWdlQ2hhbmdlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuYXBwbHlDb2xsYXBzZUxvZ2ljKCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc2V0QnV0dG9uKCk7XHJcbiAgICB0aGlzLnJlc2V0Rm9jdXNIYW5kbGVyKCk7ICAgIFxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3SW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gdGhpcy5tYXhIZWlnaHQ7XHJcbiAgICB0aGlzLmFwcGx5Q29sbGFwc2VMb2dpYygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2xhbmd1YWdlJ10gfHwgY2hhbmdlc1snbWF4SGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gdGhpcy5tYXhIZWlnaHQ7XHJcbiAgICAgIGlmICh0aGlzLnZpZXdJbml0aWFsaXplZCkge1xyXG4gICAgICAgIHRoaXMuYXBwbHlDb2xsYXBzZUxvZ2ljKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDb2xsYXBzZUxvZ2ljKCk6IHZvaWQge1xyXG4gICAgXHJcbiAgICB0aGlzLnJlc2V0U3R5bGVzKCk7XHJcbiAgICBcclxuICAgIHRoaXMucmVzZXRCdXR0b24oKTtcclxuICAgIFxyXG4gICAgdGhpcy5yZXNldEZvY3VzSGFuZGxlcigpO1xyXG5cclxuICAgIGlmICh0aGlzLm1heEhlaWdodCA9PSBudWxsIHx8IHRoaXMubWF4SGVpZ2h0IDw9IDApIHtcclxuICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5hcHBseVN0eWxlKCk7XHJcblxyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5tYXhIZWlnaHQhKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUJ1dHRvbigpO1xyXG4gICAgICAgIHRoaXMuYXBwbHlGb2N1c0hhbmRsZXIoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVN0eWxlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnbWF4LWhlaWdodCcsIGAke3RoaXMubWF4SGVpZ2h0fXB4YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0U3R5bGVzKCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ292ZXJmbG93JywgbnVsbCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdtYXgtaGVpZ2h0JywgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5QnV0dG9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5idXR0b24sICdzaXJpby1idG4nKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sICdwYWRkaW5nJywgJzBweCcpO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQodGhpcy5sb2NhbGUoVGV4dHMsICdSZWFkTW9yZScpKTtcclxuXHJcbiAgICB0aGlzLmljb25TcGFuID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaWNvblNwYW4sICdmYScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmljb25TcGFuLCAnZmEtY2hldnJvbi1kb3duJyk7XHJcbiAgICBcclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5idXR0b24sIHRleHQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbiwgdGhpcy5pY29uU3Bhbik7XHJcblxyXG4gICAgdGhpcy5saXN0ZW5lclNlcnZpY2UubGlzdGVuKHRoaXMuYnV0dG9uLCAnY2xpY2snLCAoKSA9PiB0aGlzLnRvZ2dsZUV4cGFuZCgpKTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCAnbWFyZ2luLXRvcCcsICc4cHgnKTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsZW1lbnQucGFyZW50Tm9kZSwgdGhpcy5idXR0b24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldEJ1dHRvbigpIHtcclxuICAgIGlmICh0aGlzLmJ1dHRvbiAmJiB0aGlzLmJ1dHRvbi5wYXJlbnROb2RlKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5idXR0b24ucGFyZW50Tm9kZSwgdGhpcy5idXR0b24pO1xyXG4gICAgICB0aGlzLmJ1dHRvbiA9IG51bGw7ICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5Rm9jdXNIYW5kbGVyKCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMudW5saXN0ZW5Gb2N1c091dCA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGVsZW1lbnQsICdmb2N1c291dCcsICgpID0+IHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dEZvY3VzT3V0KTtcclxuICAgICAgdGhpcy50aW1lb3V0Rm9jdXNPdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAoIWVsZW1lbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcclxuICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coJ05FU1NVTiBlbGVtZW50byBpbnRlcm5vIGhhIHBpw7kgaWwgZm9jdXMnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0Rm9jdXNIYW5kbGVyKCkge1xyXG4gICAgaWYgKHRoaXMudW5saXN0ZW5Gb2N1c091dCkge1xyXG4gICAgICB0aGlzLnVubGlzdGVuRm9jdXNPdXQoKTtcclxuICAgIH1cclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRGb2N1c091dCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUV4cGFuZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcclxuICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbGxhcHNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cGFuZCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdtYXgtaGVpZ2h0JywgJ25vbmUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ292ZXJmbG93JywgJ3Zpc2libGUnKTtcclxuICAgIHRoaXMuYnV0dG9uIS5jaGlsZE5vZGVzWzBdLnRleHRDb250ZW50ID0gdGhpcy5sb2NhbGUoVGV4dHMsICdSZWFkTGVzcycpO1xyXG4gICAgdGhpcy51cGRhdGVJY29uKCdmYS1jaGV2cm9uLXVwJywgJ2ZhLWNoZXZyb24tZG93bicpO1xyXG4gICAgdGhpcy5vbkV4cGFuZE9jY3VycmVkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ21heC1oZWlnaHQnLCBgJHt0aGlzLmN1cnJlbnRIZWlnaHR9cHhgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5idXR0b24hLmNoaWxkTm9kZXNbMF0udGV4dENvbnRlbnQgPSB0aGlzLmxvY2FsZShUZXh0cywgJ1JlYWRNb3JlJyk7XHJcbiAgICB0aGlzLnVwZGF0ZUljb24oJ2ZhLWNoZXZyb24tZG93bicsICdmYS1jaGV2cm9uLXVwJyk7XHJcbiAgICB0aGlzLm9uQ29sbGFwc2VPY2N1cnJlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJY29uKGFkZDogc3RyaW5nLCByZW1vdmU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuaWNvblNwYW4pIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmljb25TcGFuLCByZW1vdmUpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaWNvblNwYW4sIGFkZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvY2FsZShjb21wb25lbnQ6IGFueSwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsaXplKHRoaXMubGFuZ3VhZ2UsIGNvbXBvbmVudCwga2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25FeHBhbmRPY2N1cnJlZCgpIHtcclxuICAgIGlmICh0aGlzLm9uRXhwYW5kKVxyXG4gICAgICB0aGlzLm9uRXhwYW5kKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ29sbGFwc2VPY2N1cnJlZCgpIHtcclxuICAgIGlmICh0aGlzLm9uQ29sbGFwc2UpXHJcbiAgICAgIHRoaXMub25Db2xsYXBzZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|