cloud-ide-element 0.0.1 → 1.0.2
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 +271 -24
- package/esm2022/lib/components/confirmation-modal/confirmation-modal.component.mjs +182 -0
- package/esm2022/lib/components/data-grid/data-grid.component.mjs +1363 -0
- package/esm2022/lib/components/data-grid/data-grid.types.mjs +37 -0
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +396 -0
- package/esm2022/lib/components/global-notifications/global-notifications.component.mjs +30 -0
- package/esm2022/lib/components/json-editor/json-editor.component.mjs +521 -0
- package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +33 -0
- package/esm2022/lib/components/toast-notification/toast-notification.component.mjs +152 -0
- package/esm2022/lib/elements/button/cide-ele-button.component.mjs +249 -0
- package/esm2022/lib/elements/file-input/file-input.component.mjs +83 -0
- package/esm2022/lib/elements/icon/icon.component.mjs +5 -3
- package/esm2022/lib/elements/input/input.component.mjs +34 -20
- package/esm2022/lib/elements/select/select.component.mjs +471 -0
- package/esm2022/lib/elements/tab/cide-ele-tab.component.mjs +74 -0
- package/esm2022/lib/elements/textarea/textarea.component.mjs +157 -0
- package/esm2022/lib/services/confirmation.service.mjs +151 -0
- package/esm2022/lib/services/dropdown-manager.service.mjs +93 -0
- package/esm2022/lib/services/notification.service.mjs +196 -0
- package/esm2022/lib/utils/directives/resizer/resizer.directive.mjs +231 -0
- package/esm2022/lib/utils/directives/tooltip/tooltip.directive.mjs +294 -0
- package/esm2022/lib/utils/services/elements/elements.service.mjs +9 -7
- package/esm2022/public-api.mjs +23 -2
- package/fesm2022/cloud-ide-element.mjs +4646 -47
- package/fesm2022/cloud-ide-element.mjs.map +1 -1
- package/lib/components/confirmation-modal/confirmation-modal.component.d.ts +16 -0
- package/lib/components/data-grid/data-grid.component.d.ts +244 -0
- package/lib/components/data-grid/data-grid.types.d.ts +146 -0
- package/lib/components/dropdown/dropdown.component.d.ts +75 -0
- package/lib/components/global-notifications/global-notifications.component.d.ts +5 -0
- package/lib/components/json-editor/json-editor.component.d.ts +116 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +11 -0
- package/lib/components/toast-notification/toast-notification.component.d.ts +13 -0
- package/lib/elements/button/cide-ele-button.component.d.ts +85 -0
- package/lib/elements/file-input/file-input.component.d.ts +25 -0
- package/lib/elements/input/input.component.d.ts +7 -4
- package/lib/elements/select/select.component.d.ts +91 -0
- package/lib/elements/tab/cide-ele-tab.component.d.ts +26 -0
- package/lib/elements/textarea/textarea.component.d.ts +47 -0
- package/lib/services/confirmation.service.d.ts +65 -0
- package/lib/services/dropdown-manager.service.d.ts +22 -0
- package/lib/services/notification.service.d.ts +81 -0
- package/lib/utils/directives/resizer/resizer.directive.d.ts +44 -0
- package/lib/utils/directives/tooltip/tooltip.directive.d.ts +43 -0
- package/package.json +30 -4
- package/public-api.d.ts +18 -1
- package/src/lib/assets/css/cide-ele-style.scss +85 -0
- package/src/lib/assets/css/cide-ele-variable.scss +336 -0
- package/esm2022/lib/elements/button/button.component.mjs +0 -60
- package/lib/elements/button/button.component.d.ts +0 -27
|
@@ -9,11 +9,13 @@ export class CideIconComponent {
|
|
|
9
9
|
this.toolTip = "";
|
|
10
10
|
}
|
|
11
11
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: CideIconComponent, isStandalone: true, selector: "cide-ele-icon", inputs: { size: "size", type: "type", toolTip: "toolTip" }, ngImport: i0, template: "<button class=\"cide-icon tw-m-1 tw-
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: CideIconComponent, isStandalone: true, selector: "cide-ele-icon", inputs: { size: "size", type: "type", toolTip: "toolTip" }, host: { properties: { "class.mpro-icon-field": "type === 'box'" } }, ngImport: i0, template: "<button class=\"cide-icon tw-m-1 tw-inline-block tw-outline-none tw-relative\" [ngClass]=\"{\r\n 'tw-h-[23px] tw-w-[23px]': (size === 'sm'), \r\n 'tw-h-[19px] tw-w-[19px] !tw-m-[2px]': (size === 'xs'), \r\n 'tw-h-[14px] tw-w-[14px] !tw-m-[1px] cide-icon-2xs': (size === '2xs'), \r\n 'tw-h-[11px] tw-w-[11px] !tw-m-[1px] cide-icon-3xs': (size === '3xs'), \r\n 'tw-rounded-2xl' : (type === 'round'), 'tw-rounded-[0.2rem]' : (type === 'box') , \r\n 'tw-h-[15px] tw-w-[15px] none-type !tw-m-0': (type === 'none'),\r\n 'cide-tooltip': (toolTip),\r\n }\">\r\n <span class=\"cide-tooltip-content\">{{toolTip}}</span>\r\n\r\n <span class=\"material-symbols-outlined tw-absolute tw-top-0 tw-left-0 tw-right-0 tw-bottom-0\"\r\n [ngClass]=\"{'tw-text-[25px] -tw-ml-[1.5px] -tw-mt-[1px]': (size === 'sm'), 'tw-text-[18px] -tw-ml-[0.5px] tw-mt-[0.5px]' : (size === 'xs'), 'tw-text-[15px] -tw-ml-[0.5px] tw-mt-[0px] tw-block' : (size === '2xs'), 'tw-text-[11px] -tw-ml-[0px] tw-mt-[0px] tw-block' : (size === '3xs')}\"><ng-content></ng-content></span>\r\n</button>", styles: [":host{display:inline-flex;align-items:center;justify-content:center;font-size:inherit;color:inherit}:host(.mpro-icon-field),:host-context(.mpro-icon-field){position:relative;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px}:host(.mpro-icon-field):before,:host-context(.mpro-icon-field):before{content:\"\";position:absolute;inset:0;background-color:#3b82f61a;border-radius:.5rem;opacity:0;transform:scale(.8);transition:all .2s cubic-bezier(.4,0,.2,1)}:host(.mpro-icon-field):hover:before,:host-context(.mpro-icon-field):hover:before{opacity:1;transform:scale(1)}:host(.mpro-icon-field):hover,:host-context(.mpro-icon-field):hover{color:#3b82f6}:host(.mpro-icon-field):active,:host-context(.mpro-icon-field):active{transform:scale(.95)}:host(.mpro-icon-field) .header-tooltip,:host-context(.mpro-icon-field) .header-tooltip{position:absolute;bottom:-26px;left:50%;transform:translate(-50%);background-color:#374151e6;color:#fff;padding:.25rem .6rem;border-radius:.25rem;font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);z-index:1000;box-shadow:0 2px 5px #0003;letter-spacing:.01em;will-change:transform,opacity}:host(.mpro-icon-field) .header-tooltip:before,:host-context(.mpro-icon-field) .header-tooltip:before{content:\"\";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:transparent transparent rgba(55,65,81,.9) transparent}:host(.mpro-icon-field):hover .header-tooltip,:host-context(.mpro-icon-field):hover .header-tooltip{opacity:1;transform:translate(-50%) translateY(0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
13
13
|
}
|
|
14
14
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideIconComponent, decorators: [{
|
|
15
15
|
type: Component,
|
|
16
|
-
args: [{ selector: 'cide-ele-icon', standalone: true, imports: [CommonModule],
|
|
16
|
+
args: [{ selector: 'cide-ele-icon', standalone: true, imports: [CommonModule], host: {
|
|
17
|
+
'[class.mpro-icon-field]': "type === 'box'"
|
|
18
|
+
}, template: "<button class=\"cide-icon tw-m-1 tw-inline-block tw-outline-none tw-relative\" [ngClass]=\"{\r\n 'tw-h-[23px] tw-w-[23px]': (size === 'sm'), \r\n 'tw-h-[19px] tw-w-[19px] !tw-m-[2px]': (size === 'xs'), \r\n 'tw-h-[14px] tw-w-[14px] !tw-m-[1px] cide-icon-2xs': (size === '2xs'), \r\n 'tw-h-[11px] tw-w-[11px] !tw-m-[1px] cide-icon-3xs': (size === '3xs'), \r\n 'tw-rounded-2xl' : (type === 'round'), 'tw-rounded-[0.2rem]' : (type === 'box') , \r\n 'tw-h-[15px] tw-w-[15px] none-type !tw-m-0': (type === 'none'),\r\n 'cide-tooltip': (toolTip),\r\n }\">\r\n <span class=\"cide-tooltip-content\">{{toolTip}}</span>\r\n\r\n <span class=\"material-symbols-outlined tw-absolute tw-top-0 tw-left-0 tw-right-0 tw-bottom-0\"\r\n [ngClass]=\"{'tw-text-[25px] -tw-ml-[1.5px] -tw-mt-[1px]': (size === 'sm'), 'tw-text-[18px] -tw-ml-[0.5px] tw-mt-[0.5px]' : (size === 'xs'), 'tw-text-[15px] -tw-ml-[0.5px] tw-mt-[0px] tw-block' : (size === '2xs'), 'tw-text-[11px] -tw-ml-[0px] tw-mt-[0px] tw-block' : (size === '3xs')}\"><ng-content></ng-content></span>\r\n</button>", styles: [":host{display:inline-flex;align-items:center;justify-content:center;font-size:inherit;color:inherit}:host(.mpro-icon-field),:host-context(.mpro-icon-field){position:relative;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;color:#374151;border-radius:.4rem;margin:0 2px}:host(.mpro-icon-field):before,:host-context(.mpro-icon-field):before{content:\"\";position:absolute;inset:0;background-color:#3b82f61a;border-radius:.5rem;opacity:0;transform:scale(.8);transition:all .2s cubic-bezier(.4,0,.2,1)}:host(.mpro-icon-field):hover:before,:host-context(.mpro-icon-field):hover:before{opacity:1;transform:scale(1)}:host(.mpro-icon-field):hover,:host-context(.mpro-icon-field):hover{color:#3b82f6}:host(.mpro-icon-field):active,:host-context(.mpro-icon-field):active{transform:scale(.95)}:host(.mpro-icon-field) .header-tooltip,:host-context(.mpro-icon-field) .header-tooltip{position:absolute;bottom:-26px;left:50%;transform:translate(-50%);background-color:#374151e6;color:#fff;padding:.25rem .6rem;border-radius:.25rem;font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);z-index:1000;box-shadow:0 2px 5px #0003;letter-spacing:.01em;will-change:transform,opacity}:host(.mpro-icon-field) .header-tooltip:before,:host-context(.mpro-icon-field) .header-tooltip:before{content:\"\";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:transparent transparent rgba(55,65,81,.9) transparent}:host(.mpro-icon-field):hover .header-tooltip,:host-context(.mpro-icon-field):hover .header-tooltip{opacity:1;transform:translate(-50%) translateY(0)}\n"] }]
|
|
17
19
|
}], propDecorators: { size: [{
|
|
18
20
|
type: Input
|
|
19
21
|
}], type: [{
|
|
@@ -21,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
21
23
|
}], toolTip: [{
|
|
22
24
|
type: Input
|
|
23
25
|
}] } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL2ljb24vaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQWFqRCxNQUFNLE9BQU8saUJBQWlCO0lBVjlCO1FBV1csU0FBSSxHQUFjLElBQUksQ0FBQztRQUN2QixTQUFJLEdBQWEsT0FBTyxDQUFDO1FBQ3pCLFlBQU8sR0FBVyxFQUFFLENBQUM7S0FDL0I7OEdBSlksaUJBQWlCO2tHQUFqQixpQkFBaUIsME1DZDlCLHFtQ0FhUyw0dURETkcsWUFBWTs7MkZBT1gsaUJBQWlCO2tCQVY3QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsUUFHakI7d0JBQ0oseUJBQXlCLEVBQUUsZ0JBQWdCO3FCQUM1Qzs4QkFHUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaWNvblR5cGUsIHRoZW1lU2l6ZSB9IGZyb20gJ2Nsb3VkLWlkZS1sbXMtbW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjaWRlLWVsZS1pY29uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pY29uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaWNvbi5jb21wb25lbnQuY3NzJyxcclxuICBob3N0OiB7XHJcbiAgICAnW2NsYXNzLm1wcm8taWNvbi1maWVsZF0nOiBcInR5cGUgPT09ICdib3gnXCJcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaWRlSWNvbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgc2l6ZTogdGhlbWVTaXplID0gXCJ4c1wiO1xyXG4gIEBJbnB1dCgpIHR5cGU6IGljb25UeXBlID0gXCJyb3VuZFwiO1xyXG4gIEBJbnB1dCgpIHRvb2xUaXA6IHN0cmluZyA9IFwiXCI7XHJcbn1cclxuIiwiPGJ1dHRvbiBjbGFzcz1cImNpZGUtaWNvbiB0dy1tLTEgdHctaW5saW5lLWJsb2NrIHR3LW91dGxpbmUtbm9uZSB0dy1yZWxhdGl2ZVwiIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAndHctaC1bMjNweF0gdHctdy1bMjNweF0nOiAoc2l6ZSA9PT0gJ3NtJyksIFxyXG4gICAgICAgICd0dy1oLVsxOXB4XSB0dy13LVsxOXB4XSAhdHctbS1bMnB4XSc6IChzaXplID09PSAneHMnKSwgXHJcbiAgICAgICAgJ3R3LWgtWzE0cHhdIHR3LXctWzE0cHhdICF0dy1tLVsxcHhdIGNpZGUtaWNvbi0yeHMnOiAoc2l6ZSA9PT0gJzJ4cycpLCBcclxuICAgICAgICAndHctaC1bMTFweF0gdHctdy1bMTFweF0gIXR3LW0tWzFweF0gY2lkZS1pY29uLTN4cyc6IChzaXplID09PSAnM3hzJyksIFxyXG4gICAgICAgICd0dy1yb3VuZGVkLTJ4bCcgOiAodHlwZSA9PT0gJ3JvdW5kJyksICd0dy1yb3VuZGVkLVswLjJyZW1dJyA6ICh0eXBlID09PSAnYm94JykgLCBcclxuICAgICAgICAndHctaC1bMTVweF0gdHctdy1bMTVweF0gbm9uZS10eXBlICF0dy1tLTAnOiAodHlwZSA9PT0gJ25vbmUnKSxcclxuICAgICAgICAnY2lkZS10b29sdGlwJzogKHRvb2xUaXApLFxyXG4gICAgICAgIH1cIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY2lkZS10b29sdGlwLWNvbnRlbnRcIj57e3Rvb2xUaXB9fTwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdHctYWJzb2x1dGUgdHctdG9wLTAgdHctbGVmdC0wIHR3LXJpZ2h0LTAgdHctYm90dG9tLTBcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsndHctdGV4dC1bMjVweF0gLXR3LW1sLVsxLjVweF0gLXR3LW10LVsxcHhdJzogKHNpemUgPT09ICdzbScpLCAndHctdGV4dC1bMThweF0gLXR3LW1sLVswLjVweF0gdHctbXQtWzAuNXB4XScgOiAgKHNpemUgPT09ICd4cycpLCAndHctdGV4dC1bMTVweF0gLXR3LW1sLVswLjVweF0gdHctbXQtWzBweF0gdHctYmxvY2snIDogIChzaXplID09PSAnMnhzJyksICAndHctdGV4dC1bMTFweF0gLXR3LW1sLVswcHhdIHR3LW10LVswcHhdIHR3LWJsb2NrJyA6ICAoc2l6ZSA9PT0gJzN4cycpfVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XHJcbjwvYnV0dG9uPiJdfQ==
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, forwardRef, inject } from '@angular/core';
|
|
3
3
|
import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
import { CapitalizePipe } from '../../utils/pipes/capitalize/capitalize.pipe';
|
|
5
|
+
import { CideElementsService } from '../../utils/services/elements/elements.service';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "
|
|
7
|
-
import * as i2 from "
|
|
8
|
-
import * as i3 from "@angular/common";
|
|
9
|
-
import * as i4 from "@angular/forms";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
10
9
|
export class CideInputComponent {
|
|
11
|
-
constructor(
|
|
12
|
-
|
|
13
|
-
this.
|
|
10
|
+
constructor() {
|
|
11
|
+
// Modern Angular v20 dependency injection pattern
|
|
12
|
+
this.capitalizePipe = inject(CapitalizePipe);
|
|
13
|
+
this.elementService = inject(CideElementsService);
|
|
14
14
|
/*=======Set custom controls inputs to set components=========*/
|
|
15
15
|
/**
|
|
16
16
|
* @description to se the visual of control like solid control offerd by material design or outline with a border
|
|
@@ -54,7 +54,7 @@ export class CideInputComponent {
|
|
|
54
54
|
/** @description auto complete type to help reader what is the type of value */
|
|
55
55
|
this.autocomplete = "off";
|
|
56
56
|
/** @description type of control */
|
|
57
|
-
this.type = '';
|
|
57
|
+
this.type = 'text';
|
|
58
58
|
/** @description width of control, default width is 100% */
|
|
59
59
|
this.width = '100%';
|
|
60
60
|
/** @description uniq id of control, used to differenciat the value also prevent value should not effect another values */
|
|
@@ -62,6 +62,10 @@ export class CideInputComponent {
|
|
|
62
62
|
/** @description to get input value using one way binding like: [ngModel] or by two way binding [(ngModel)] */
|
|
63
63
|
this.ngModel = '';
|
|
64
64
|
this.option = ["anksuh", "bhure"];
|
|
65
|
+
/** @description min value for number type control */
|
|
66
|
+
this.min = 0;
|
|
67
|
+
/** @description max value for number type control */
|
|
68
|
+
this.max = 0;
|
|
65
69
|
/**
|
|
66
70
|
* @description
|
|
67
71
|
* Holds the size of the component like Small, Extra small, Large
|
|
@@ -107,6 +111,7 @@ export class CideInputComponent {
|
|
|
107
111
|
this.onTouched = () => { };
|
|
108
112
|
/** @description Function to call when the input is need to Validate to tell Angular somthing is changed (in case of some input dipendent validation). */
|
|
109
113
|
this.onValidate = () => { };
|
|
114
|
+
// Modern Angular v20 pattern: Use constructor for initialization only
|
|
110
115
|
// Validate control
|
|
111
116
|
this.onValidate();
|
|
112
117
|
}
|
|
@@ -143,8 +148,9 @@ export class CideInputComponent {
|
|
|
143
148
|
/** @description when form control change from model side this method is implemented */
|
|
144
149
|
writeValue(value) {
|
|
145
150
|
if (!this.isNgModel) {
|
|
146
|
-
|
|
147
|
-
this.
|
|
151
|
+
const ngModel = this.autoCapitalizeByOption(value, this.type);
|
|
152
|
+
console.log('writeValue', this.ngModel, ngModel);
|
|
153
|
+
this.ngModel = ngModel;
|
|
148
154
|
}
|
|
149
155
|
}
|
|
150
156
|
/** @description Allows Angular to register a function to call when the model changes. */
|
|
@@ -186,6 +192,7 @@ export class CideInputComponent {
|
|
|
186
192
|
this.isControlValid(target?.value);
|
|
187
193
|
const updatedValue = this.processValue(target?.value, this.type);
|
|
188
194
|
this.ngModel = updatedValue;
|
|
195
|
+
this.ngModelChange?.emit(updatedValue);
|
|
189
196
|
// console.log(target)
|
|
190
197
|
this.onChange(updatedValue);
|
|
191
198
|
}
|
|
@@ -304,6 +311,9 @@ export class CideInputComponent {
|
|
|
304
311
|
this.trailingIconInternal = 'visibility_off';
|
|
305
312
|
}
|
|
306
313
|
}
|
|
314
|
+
else {
|
|
315
|
+
this.typeInternal = this.type;
|
|
316
|
+
}
|
|
307
317
|
}
|
|
308
318
|
/**
|
|
309
319
|
* Method to generate Random String
|
|
@@ -352,12 +362,12 @@ export class CideInputComponent {
|
|
|
352
362
|
this.isTrailingIconAllwedClick = true;
|
|
353
363
|
}
|
|
354
364
|
else {
|
|
355
|
-
this.typeInternal =
|
|
365
|
+
this.typeInternal = this.type;
|
|
356
366
|
this.trailingIconInternal = this.trailingIcon;
|
|
357
367
|
}
|
|
358
368
|
}
|
|
359
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideInputComponent, deps: [
|
|
360
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CideInputComponent, isStandalone: true, selector: "cide-ele-input", inputs: { fill: "fill", label: "label", labelHide: "labelHide", disabled: "disabled", clearInput: "clearInput", labelPlacement: "labelPlacement", labelDir: "labelDir", placeholder: "placeholder", leadingIcon: "leadingIcon", trailingIcon: "trailingIcon", helperText: "helperText", helperTextCollapse: "helperTextCollapse", hideHelperAndErrorText: "hideHelperAndErrorText", errorText: "errorText", maxlength: "maxlength", minlength: "minlength", required: "required", autocapitalize: "autocapitalize", autocomplete: "autocomplete", type: "type", width: "width", id: "id", ngModel: "ngModel", option: "option", size: "size" }, outputs: { ngModelChange: "ngModelChange" }, providers: [
|
|
369
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
370
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CideInputComponent, isStandalone: true, selector: "cide-ele-input", inputs: { fill: "fill", label: "label", labelHide: "labelHide", disabled: "disabled", clearInput: "clearInput", labelPlacement: "labelPlacement", labelDir: "labelDir", placeholder: "placeholder", leadingIcon: "leadingIcon", trailingIcon: "trailingIcon", helperText: "helperText", helperTextCollapse: "helperTextCollapse", hideHelperAndErrorText: "hideHelperAndErrorText", errorText: "errorText", maxlength: "maxlength", minlength: "minlength", required: "required", autocapitalize: "autocapitalize", autocomplete: "autocomplete", type: "type", width: "width", id: "id", ngModel: "ngModel", option: "option", min: "min", max: "max", size: "size" }, outputs: { ngModelChange: "ngModelChange" }, providers: [
|
|
361
371
|
{
|
|
362
372
|
provide: NG_VALUE_ACCESSOR,
|
|
363
373
|
useExisting: forwardRef(() => CideInputComponent),
|
|
@@ -370,11 +380,11 @@ export class CideInputComponent {
|
|
|
370
380
|
useExisting: forwardRef(() => CideInputComponent),
|
|
371
381
|
},
|
|
372
382
|
CapitalizePipe
|
|
373
|
-
], usesOnChanges: true, ngImport: i0, template: "<div class=\"cide-input\">\r\n <!------------------------------------------TEXT | PASSWORD------------------------------------------>\r\n <div *ngIf=\"type === 'text' || type === 'password'\">\r\n <div class=\"tw-w-full tw-relative\" [ngStyle]=\"{ width: width }\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-leading-icon': leadingIcon,\r\n 'cide-element-trailing-icon': trailingIconInternal,\r\n 'cide-element-clear-input': clearInput,\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n }\">\r\n <!-- label -->\r\n <label [for]=\"id\" class=\"cide-input-label\" *ngIf=\"label && !labelHide\">{{label}}</label>\r\n\r\n <!-- all one line elemets which dose not affect with label and error text -->\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span\r\n class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n\r\n <!-- Traling icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\"\r\n *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n\r\n <!-- Input -->\r\n <input [placeholder]=\"placeholder\" [id]=\"id\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? 'tw-h-7' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n [(ngModel)]=\"ngModel\" [type]=\"typeInternal\" (input)=\"upDateValue($event)\" (focus)=\"focusControl()\"\r\n [autocomplete]=\"autocomplete\"\r\n class=\"tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-p-0 cide-input-input tw-outline-none\" />\r\n </div>\r\n <!-- error text / helper text -->\r\n <span *ngIf=\"(errorText || helperText || !helperTextCollapse) && !hideHelperAndErrorText\"\r\n class=\"cide-input-help-error-text\">{{\r\n isValid\r\n ? helperText : (errorText ?\r\n (isTouched ? errorText : helperText)\r\n : helperText)}}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Input with tralling icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-right-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-1 tw-pr-8 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!-- Input with leading icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-left-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-8 tw-pr-1 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!------------------------------------------CHECKBOX------------------------------------------>\r\n <div *ngIf=\"type === 'checkbox'\" class=\"tw-flex\">\r\n <div class=\"cide-checkbox tw-relative\">\r\n <input [checked]=\"ngModel\" [value]=\"ngModel\" [id]=\"idRandom\" [type]=\"type\"\r\n class=\"tw-absolute tw-left-0 tw-invisible\" (click)=\"updateValueCheckBox(!ngModel); focusControl()\"\r\n [autocomplete]=\"autocomplete\" />\r\n <label class=\"cide-checkbox-label tw-cursor-pointer\" [for]=\"idRandom\">\r\n <span class=\"tw-border-2 tw-border-solid tw-relative tw-rounded-md\">\r\n <svg width=\"12px\" height=\"10px\" class=\"tw-absolute\">\r\n <use xlink:href=\"#sdfwiorfklasfjjalfjwerwr\"></use>\r\n </svg>\r\n </span>\r\n <span class=\"tw-text-sm tw-pl-2 tw-leading-[18px] tw-select-none tw-cursor-pointer\"\r\n *ngIf=\"!labelHide\">{{label}}</span>\r\n </label>\r\n <svg class=\"tw-absolute tw-h-0 tw-w-0 tw-select-none tw-pointer-events-none\">\r\n <!-- Element hidden and its xpath is used to display inside SVG -->\r\n <symbol id=\"sdfwiorfklasfjjalfjwerwr\" viewbox=\"0 0 12 10\">\r\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\r\n </symbol>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <!-------------------------------------------SELECT------------------------------------------->\r\n <div *ngIf=\"type === 'select'\">sas\r\n <div class=\"tw-relative\">\r\n <div class=\"tw-absolute\">\r\n @for (item of option; track $index) {\r\n <div class=\"tw-w-full\">\r\n {{item}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".cide-element-style-standard .cide-input-input{border-color:transparent}.cide-element-input-wrapper{position:relative}.cide-input-label{color:var(--cide-input-label-color);-webkit-user-select:none;user-select:none;display:block}.cide-input-help-error-text{color:var(--cide-input-color-help-error-text);width:100%;display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:.125rem;padding-right:.125rem}.cide-input-leading-icon{color:var(--cide-input-leading-icon-color)}.cide-input-clear{color:var(--cide-input-clear-color);z-index:10;cursor:pointer;position:absolute;outline-width:0px;right:0;top:0}.cide-input-clear:hover{color:var(--cide-input-clear-color-hover)}.cide-input-trailing-icon{color:var(--cide-input-trailing-icon-color)}.cide-input-input{color:var(--cide-input-text-color);border-color:var(--cide-input-border)}.cide-input-input:hover{color:var(--cide-input-text-color-hover);border-color:var(--cide-input-border-hover)}.cide-input-input:focus{color:var(--cide-input-text-color-active);border-color:var(--cide-input-border-active)}.cide-element-input-label-floating .cide-input-label{position:absolute;z-index:1;margin-left:8px;margin-right:8px;background-color:#fff;padding:0 2px}.cide-element-input-label-floating .cide-element-input-label-start{left:0}.cide-element-input-label-floating .cide-element-input-label-start{right:0}.cide-element-input-label-fixed{margin-bottom:0}.cide-element-input-label-fixed .cide-element-input-label-start{text-align:start}.cide-element-input-label-fixed .cide-element-input-label-end{text-align:end}.ng-touched.ng-invalid>.cide-input .cide-input-clear{color:var(--cide-input-clear-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-clear:hover{color:var(--cide-input-clear-color-hover-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-leading-icon{color:var(--cide-input-leading-icon-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-help-error-text{color:var(--cide-input-color-help-error-text-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-trailing-icon{color:var(--cide-input-trailing-icon-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-label{color:var(--cide-input-label-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input{color:var(--cide-input-text-color-invalid);border-color:var(--cide-input-border-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input:hover{color:var(--cide-input-text-color-hover-invalid);border-color:var(--cide-input-border-hover-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input:focus{color:var(--cide-input-text-color-active-invalid);border-color:var(--cide-input-border-active-invalid)}.cide-element-size-xxs .cide-input-input{height:var(--cide-element-size-xxs);font-size:var(--cide-input-size-xxs);border-width:var(--cide-input-border-size-xxs)}.cide-element-size-xxs .cide-input-label{font-size:var(--cide-input-label-size-xxs);line-height:var(--cide-input-label-size-xxs)}.cide-element-size-xxs .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xxs);height:calc(var(--cide-input-error-helper-size-xxs) + 2px);line-height:var(--cide-input-error-helper-size-xxs)}.cide-element-size-xxs .cide-input-clear{top:var(--cide-input-border-size-xxs);width:var(--cide-element-size-xxs);height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xxs) + var(--cide-input-size-xxs) / 2);line-height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xxs);width:var(--cide-element-size-xxs);height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xxs) + var(--cide-input-size-xxs) / 2);line-height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xxs) / 2)}.cide-element-size-xxs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xxs) / 2 - var(--cide-input-label-size-xxs))}.cide-element-size-xxs.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs))}.cide-element-size-xxs.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs))}.cide-element-size-xxs.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xxs)}.cide-element-size-xs .cide-input-input{height:var(--cide-element-size-xs);font-size:var(--cide-input-size-xs);border-width:var(--cide-input-border-size-xs)}.cide-element-size-xs .cide-input-label{font-size:var(--cide-input-label-size-xs);line-height:var(--cide-input-label-size-xs)}.cide-element-size-xs .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xs);height:calc(var(--cide-input-error-helper-size-xs) + 2px);line-height:var(--cide-input-error-helper-size-xs)}.cide-element-size-xs .cide-input-clear{top:var(--cide-input-border-size-xs);width:var(--cide-element-size-xs);height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xs) + var(--cide-input-size-xs) / 2);line-height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xs);width:var(--cide-element-size-xs);height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xs) + var(--cide-input-size-xs) / 2);line-height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xs) / 2)}.cide-element-size-xs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xs) / 2 - var(--cide-input-label-size-xs))}.cide-element-size-xs.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs))}.cide-element-size-xs.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs))}.cide-element-size-xs.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xs)}.cide-element-size-sm .cide-input-input{height:var(--cide-element-size-sm);font-size:var(--cide-input-size-sm);border-width:var(--cide-input-border-size-sm)}.cide-element-size-sm .cide-input-label{font-size:var(--cide-input-label-size-sm);line-height:var(--cide-input-label-size-sm)}.cide-element-size-sm .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-sm);height:calc(var(--cide-input-error-helper-size-sm) + 2px);line-height:var(--cide-input-error-helper-size-sm)}.cide-element-size-sm .cide-input-clear{top:var(--cide-input-border-size-sm);width:var(--cide-element-size-sm);height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-sm) + var(--cide-input-size-sm) / 2);line-height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-sm);width:var(--cide-element-size-sm);height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-sm) + var(--cide-input-size-sm) / 2);line-height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-sm) / 2)}.cide-element-size-sm.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-sm) / 2 - var(--cide-input-label-size-sm))}.cide-element-size-sm.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm))}.cide-element-size-sm.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm))}.cide-element-size-sm.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-sm)}.cide-element-size-md .cide-input-input{height:var(--cide-element-size-md);font-size:var(--cide-input-size-md);border-width:var(--cide-input-border-size-md)}.cide-element-size-md .cide-input-label{font-size:var(--cide-input-label-size-md);line-height:var(--cide-input-label-size-md)}.cide-element-size-md .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-md);height:calc(var(--cide-input-error-helper-size-md) + 2px);line-height:var(--cide-input-error-helper-size-md)}.cide-element-size-md .cide-input-clear{top:var(--cide-input-border-size-md);width:var(--cide-element-size-md);height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-md) + var(--cide-input-size-md) / 2);line-height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-md);width:var(--cide-element-size-md);height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-md) + var(--cide-input-size-md) / 2);line-height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-md) / 2)}.cide-element-size-md.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-md) / 2 - var(--cide-input-label-size-md))}.cide-element-size-md.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md))}.cide-element-size-md.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md))}.cide-element-size-md.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-md)}.cide-element-size-lg .cide-input-input{height:var(--cide-element-size-lg);font-size:var(--cide-input-size-lg);border-width:var(--cide-input-border-size-lg)}.cide-element-size-lg .cide-input-label{font-size:var(--cide-input-label-size-lg);line-height:var(--cide-input-label-size-lg)}.cide-element-size-lg .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-lg);height:calc(var(--cide-input-error-helper-size-lg) + 2px);line-height:var(--cide-input-error-helper-size-lg)}.cide-element-size-lg .cide-input-clear{top:var(--cide-input-border-size-lg);width:var(--cide-element-size-lg);height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-lg) + var(--cide-input-size-lg) / 2);line-height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-lg);width:var(--cide-element-size-lg);height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-lg) + var(--cide-input-size-lg) / 2);line-height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-lg) / 2)}.cide-element-size-lg.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-lg) / 2 - var(--cide-input-label-size-lg))}.cide-element-size-lg.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg))}.cide-element-size-lg.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg))}.cide-element-size-lg.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-lg)}.cide-element-size-xl .cide-input-input{height:var(--cide-element-size-xl);font-size:var(--cide-input-size-xl);border-width:var(--cide-input-border-size-xl)}.cide-element-size-xl .cide-input-label{font-size:var(--cide-input-label-size-xl);line-height:var(--cide-input-label-size-xl)}.cide-element-size-xl .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xl);height:calc(var(--cide-input-error-helper-size-xl) + 2px);line-height:var(--cide-input-error-helper-size-xl)}.cide-element-size-xl .cide-input-clear{top:var(--cide-input-border-size-xl);width:var(--cide-element-size-xl);height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xl) + var(--cide-input-size-xl) / 2);line-height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xl);width:var(--cide-element-size-xl);height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xl) + var(--cide-input-size-xl) / 2);line-height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xl) / 2)}.cide-element-size-xl.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xl) / 2 - var(--cide-input-label-size-xl))}.cide-element-size-xl.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl))}.cide-element-size-xl.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl))}.cide-element-size-xl.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xl)}.cide-input-leading-icon-wrapper{position:absolute;bottom:0;left:0;z-index:-10;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
383
|
+
], usesOnChanges: true, ngImport: i0, template: "<div class=\"cide-input\">\r\n <!------------------------------------------TEXT | PASSWORD------------------------------------------>\r\n <div *ngIf=\"type === 'text' || type === 'number' || type === 'password'\">\r\n <div class=\"tw-w-full tw-relative\" [ngStyle]=\"{ width: width }\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-leading-icon': leadingIcon,\r\n 'cide-element-trailing-icon': trailingIconInternal,\r\n 'cide-element-clear-input': clearInput,\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n 'cide-element-input-number': (type === 'number')\r\n }\">\r\n <!-- label -->\r\n <label [for]=\"id\" class=\"cide-input-label\" *ngIf=\"label && !labelHide\">{{label}}</label>\r\n\r\n <!-- all one line elemets which dose not affect with label and error text -->\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span\r\n class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n\r\n <!-- Traling icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\"\r\n *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n\r\n <!-- Input -->\r\n <input [placeholder]=\"placeholder\" [id]=\"id\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? 'tw-h-7' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n [(ngModel)]=\"ngModel\" [type]=\"typeInternal\" (input)=\"upDateValue($event)\" (focus)=\"focusControl()\"\r\n [autocomplete]=\"autocomplete\" [min]=\"min\" [max]=\"max\"\r\n class=\"tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-p-0 cide-input-input tw-outline-none\" />\r\n </div>\r\n <!-- error text / helper text -->\r\n <span *ngIf=\"(errorText || helperText || !helperTextCollapse) && !hideHelperAndErrorText\"\r\n class=\"cide-input-help-error-text\">{{\r\n isValid\r\n ? helperText : (errorText ?\r\n (isTouched ? errorText : helperText)\r\n : helperText)}}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Input with tralling icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-right-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-1 tw-pr-8 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!-- Input with leading icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-left-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-8 tw-pr-1 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!------------------------------------------CHECKBOX------------------------------------------>\r\n <div *ngIf=\"type === 'checkbox'\" class=\"tw-flex\">\r\n <div class=\"cide-checkbox tw-relative\">\r\n <input [checked]=\"ngModel\" [value]=\"ngModel\" [id]=\"idRandom\" [type]=\"type\"\r\n class=\"tw-absolute tw-left-0 tw-invisible\" (click)=\"updateValueCheckBox(!ngModel); focusControl()\"\r\n [autocomplete]=\"autocomplete\" />\r\n <label class=\"cide-checkbox-label tw-cursor-pointer\" [for]=\"idRandom\">\r\n <span class=\"tw-border-2 tw-border-solid tw-relative tw-rounded-md\">\r\n <svg width=\"12px\" height=\"10px\" class=\"tw-absolute\">\r\n <use xlink:href=\"#sdfwiorfklasfjjalfjwerwr\"></use>\r\n </svg>\r\n </span>\r\n <span class=\"tw-text-sm tw-pl-2 tw-leading-[18px] tw-select-none tw-cursor-pointer\"\r\n *ngIf=\"!labelHide\">{{label}}</span>\r\n </label>\r\n <svg class=\"tw-absolute tw-h-0 tw-w-0 tw-select-none tw-pointer-events-none\">\r\n <!-- Element hidden and its xpath is used to display inside SVG -->\r\n <symbol id=\"sdfwiorfklasfjjalfjwerwr\" viewbox=\"0 0 12 10\">\r\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\r\n </symbol>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <!-------------------------------------------SELECT------------------------------------------->\r\n <div *ngIf=\"type === 'select'\">sas\r\n <div class=\"tw-relative\">\r\n <div class=\"tw-absolute\">\r\n @for (item of option; track $index) {\r\n <div class=\"tw-w-full\">\r\n {{item}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type:
|
|
374
384
|
// directives
|
|
375
|
-
CommonModule }, { kind: "directive", type:
|
|
385
|
+
CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type:
|
|
376
386
|
// for ngModel
|
|
377
|
-
FormsModule }, { kind: "directive", type:
|
|
387
|
+
FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
378
388
|
}
|
|
379
389
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideInputComponent, decorators: [{
|
|
380
390
|
type: Component,
|
|
@@ -396,8 +406,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
396
406
|
useExisting: forwardRef(() => CideInputComponent),
|
|
397
407
|
},
|
|
398
408
|
CapitalizePipe
|
|
399
|
-
], template: "<div class=\"cide-input\">\r\n <!------------------------------------------TEXT | PASSWORD------------------------------------------>\r\n <div *ngIf=\"type === 'text' || type === 'password'\">\r\n <div class=\"tw-w-full tw-relative\" [ngStyle]=\"{ width: width }\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-leading-icon': leadingIcon,\r\n 'cide-element-trailing-icon': trailingIconInternal,\r\n 'cide-element-clear-input': clearInput,\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n }\">\r\n <!-- label -->\r\n <label [for]=\"id\" class=\"cide-input-label\" *ngIf=\"label && !labelHide\">{{label}}</label>\r\n\r\n <!-- all one line elemets which dose not affect with label and error text -->\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span\r\n class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n\r\n <!-- Traling icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\"\r\n *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n\r\n <!-- Input -->\r\n <input [placeholder]=\"placeholder\" [id]=\"id\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? 'tw-h-7' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n [(ngModel)]=\"ngModel\" [type]=\"typeInternal\" (input)=\"upDateValue($event)\" (focus)=\"focusControl()\"\r\n [autocomplete]=\"autocomplete\"\r\n class=\"tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-p-0 cide-input-input tw-outline-none\" />\r\n </div>\r\n <!-- error text / helper text -->\r\n <span *ngIf=\"(errorText || helperText || !helperTextCollapse) && !hideHelperAndErrorText\"\r\n class=\"cide-input-help-error-text\">{{\r\n isValid\r\n ? helperText : (errorText ?\r\n (isTouched ? errorText : helperText)\r\n : helperText)}}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Input with tralling icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-right-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-1 tw-pr-8 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!-- Input with leading icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-left-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-8 tw-pr-1 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!------------------------------------------CHECKBOX------------------------------------------>\r\n <div *ngIf=\"type === 'checkbox'\" class=\"tw-flex\">\r\n <div class=\"cide-checkbox tw-relative\">\r\n <input [checked]=\"ngModel\" [value]=\"ngModel\" [id]=\"idRandom\" [type]=\"type\"\r\n class=\"tw-absolute tw-left-0 tw-invisible\" (click)=\"updateValueCheckBox(!ngModel); focusControl()\"\r\n [autocomplete]=\"autocomplete\" />\r\n <label class=\"cide-checkbox-label tw-cursor-pointer\" [for]=\"idRandom\">\r\n <span class=\"tw-border-2 tw-border-solid tw-relative tw-rounded-md\">\r\n <svg width=\"12px\" height=\"10px\" class=\"tw-absolute\">\r\n <use xlink:href=\"#sdfwiorfklasfjjalfjwerwr\"></use>\r\n </svg>\r\n </span>\r\n <span class=\"tw-text-sm tw-pl-2 tw-leading-[18px] tw-select-none tw-cursor-pointer\"\r\n *ngIf=\"!labelHide\">{{label}}</span>\r\n </label>\r\n <svg class=\"tw-absolute tw-h-0 tw-w-0 tw-select-none tw-pointer-events-none\">\r\n <!-- Element hidden and its xpath is used to display inside SVG -->\r\n <symbol id=\"sdfwiorfklasfjjalfjwerwr\" viewbox=\"0 0 12 10\">\r\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\r\n </symbol>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <!-------------------------------------------SELECT------------------------------------------->\r\n <div *ngIf=\"type === 'select'\">sas\r\n <div class=\"tw-relative\">\r\n <div class=\"tw-absolute\">\r\n @for (item of option; track $index) {\r\n <div class=\"tw-w-full\">\r\n {{item}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".cide-element-style-standard .cide-input-input{border-color:transparent}.cide-element-input-wrapper{position:relative}.cide-input-label{color:var(--cide-input-label-color);-webkit-user-select:none;user-select:none;display:block}.cide-input-help-error-text{color:var(--cide-input-color-help-error-text);width:100%;display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:.125rem;padding-right:.125rem}.cide-input-leading-icon{color:var(--cide-input-leading-icon-color)}.cide-input-clear{color:var(--cide-input-clear-color);z-index:10;cursor:pointer;position:absolute;outline-width:0px;right:0;top:0}.cide-input-clear:hover{color:var(--cide-input-clear-color-hover)}.cide-input-trailing-icon{color:var(--cide-input-trailing-icon-color)}.cide-input-input{color:var(--cide-input-text-color);border-color:var(--cide-input-border)}.cide-input-input:hover{color:var(--cide-input-text-color-hover);border-color:var(--cide-input-border-hover)}.cide-input-input:focus{color:var(--cide-input-text-color-active);border-color:var(--cide-input-border-active)}.cide-element-input-label-floating .cide-input-label{position:absolute;z-index:1;margin-left:8px;margin-right:8px;background-color:#fff;padding:0 2px}.cide-element-input-label-floating .cide-element-input-label-start{left:0}.cide-element-input-label-floating .cide-element-input-label-start{right:0}.cide-element-input-label-fixed{margin-bottom:0}.cide-element-input-label-fixed .cide-element-input-label-start{text-align:start}.cide-element-input-label-fixed .cide-element-input-label-end{text-align:end}.ng-touched.ng-invalid>.cide-input .cide-input-clear{color:var(--cide-input-clear-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-clear:hover{color:var(--cide-input-clear-color-hover-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-leading-icon{color:var(--cide-input-leading-icon-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-help-error-text{color:var(--cide-input-color-help-error-text-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-trailing-icon{color:var(--cide-input-trailing-icon-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-label{color:var(--cide-input-label-color-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input{color:var(--cide-input-text-color-invalid);border-color:var(--cide-input-border-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input:hover{color:var(--cide-input-text-color-hover-invalid);border-color:var(--cide-input-border-hover-invalid)}.ng-touched.ng-invalid>.cide-input .cide-input-input:focus{color:var(--cide-input-text-color-active-invalid);border-color:var(--cide-input-border-active-invalid)}.cide-element-size-xxs .cide-input-input{height:var(--cide-element-size-xxs);font-size:var(--cide-input-size-xxs);border-width:var(--cide-input-border-size-xxs)}.cide-element-size-xxs .cide-input-label{font-size:var(--cide-input-label-size-xxs);line-height:var(--cide-input-label-size-xxs)}.cide-element-size-xxs .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xxs);height:calc(var(--cide-input-error-helper-size-xxs) + 2px);line-height:var(--cide-input-error-helper-size-xxs)}.cide-element-size-xxs .cide-input-clear{top:var(--cide-input-border-size-xxs);width:var(--cide-element-size-xxs);height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xxs) + var(--cide-input-size-xxs) / 2);line-height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xxs);width:var(--cide-element-size-xxs);height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xxs) + var(--cide-input-size-xxs) / 2);line-height:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs) * 2)}.cide-element-size-xxs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xxs) / 2)}.cide-element-size-xxs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xxs) / 2 - var(--cide-input-label-size-xxs))}.cide-element-size-xxs.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs))}.cide-element-size-xxs.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xxs) - var(--cide-input-border-size-xxs))}.cide-element-size-xxs.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xxs)}.cide-element-size-xs .cide-input-input{height:var(--cide-element-size-xs);font-size:var(--cide-input-size-xs);border-width:var(--cide-input-border-size-xs)}.cide-element-size-xs .cide-input-label{font-size:var(--cide-input-label-size-xs);line-height:var(--cide-input-label-size-xs)}.cide-element-size-xs .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xs);height:calc(var(--cide-input-error-helper-size-xs) + 2px);line-height:var(--cide-input-error-helper-size-xs)}.cide-element-size-xs .cide-input-clear{top:var(--cide-input-border-size-xs);width:var(--cide-element-size-xs);height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xs) + var(--cide-input-size-xs) / 2);line-height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xs);width:var(--cide-element-size-xs);height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xs) + var(--cide-input-size-xs) / 2);line-height:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs) * 2)}.cide-element-size-xs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xs) / 2)}.cide-element-size-xs.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xs) / 2 - var(--cide-input-label-size-xs))}.cide-element-size-xs.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs))}.cide-element-size-xs.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xs) - var(--cide-input-border-size-xs))}.cide-element-size-xs.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xs)}.cide-element-size-sm .cide-input-input{height:var(--cide-element-size-sm);font-size:var(--cide-input-size-sm);border-width:var(--cide-input-border-size-sm)}.cide-element-size-sm .cide-input-label{font-size:var(--cide-input-label-size-sm);line-height:var(--cide-input-label-size-sm)}.cide-element-size-sm .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-sm);height:calc(var(--cide-input-error-helper-size-sm) + 2px);line-height:var(--cide-input-error-helper-size-sm)}.cide-element-size-sm .cide-input-clear{top:var(--cide-input-border-size-sm);width:var(--cide-element-size-sm);height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-sm) + var(--cide-input-size-sm) / 2);line-height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-sm);width:var(--cide-element-size-sm);height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-sm) + var(--cide-input-size-sm) / 2);line-height:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm) * 2)}.cide-element-size-sm.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-sm) / 2)}.cide-element-size-sm.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-sm) / 2 - var(--cide-input-label-size-sm))}.cide-element-size-sm.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm))}.cide-element-size-sm.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-sm) - var(--cide-input-border-size-sm))}.cide-element-size-sm.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-sm)}.cide-element-size-md .cide-input-input{height:var(--cide-element-size-md);font-size:var(--cide-input-size-md);border-width:var(--cide-input-border-size-md)}.cide-element-size-md .cide-input-label{font-size:var(--cide-input-label-size-md);line-height:var(--cide-input-label-size-md)}.cide-element-size-md .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-md);height:calc(var(--cide-input-error-helper-size-md) + 2px);line-height:var(--cide-input-error-helper-size-md)}.cide-element-size-md .cide-input-clear{top:var(--cide-input-border-size-md);width:var(--cide-element-size-md);height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-md) + var(--cide-input-size-md) / 2);line-height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-md);width:var(--cide-element-size-md);height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-md) + var(--cide-input-size-md) / 2);line-height:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md) * 2)}.cide-element-size-md.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-md) / 2)}.cide-element-size-md.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-md) / 2 - var(--cide-input-label-size-md))}.cide-element-size-md.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md))}.cide-element-size-md.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-md) - var(--cide-input-border-size-md))}.cide-element-size-md.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-md)}.cide-element-size-lg .cide-input-input{height:var(--cide-element-size-lg);font-size:var(--cide-input-size-lg);border-width:var(--cide-input-border-size-lg)}.cide-element-size-lg .cide-input-label{font-size:var(--cide-input-label-size-lg);line-height:var(--cide-input-label-size-lg)}.cide-element-size-lg .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-lg);height:calc(var(--cide-input-error-helper-size-lg) + 2px);line-height:var(--cide-input-error-helper-size-lg)}.cide-element-size-lg .cide-input-clear{top:var(--cide-input-border-size-lg);width:var(--cide-element-size-lg);height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-lg) + var(--cide-input-size-lg) / 2);line-height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-lg);width:var(--cide-element-size-lg);height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-lg) + var(--cide-input-size-lg) / 2);line-height:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg) * 2)}.cide-element-size-lg.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-lg) / 2)}.cide-element-size-lg.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-lg) / 2 - var(--cide-input-label-size-lg))}.cide-element-size-lg.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg))}.cide-element-size-lg.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-lg) - var(--cide-input-border-size-lg))}.cide-element-size-lg.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-lg)}.cide-element-size-xl .cide-input-input{height:var(--cide-element-size-xl);font-size:var(--cide-input-size-xl);border-width:var(--cide-input-border-size-xl)}.cide-element-size-xl .cide-input-label{font-size:var(--cide-input-label-size-xl);line-height:var(--cide-input-label-size-xl)}.cide-element-size-xl .cide-input-help-error-text{font-size:var(--cide-input-error-helper-size-xl);height:calc(var(--cide-input-error-helper-size-xl) + 2px);line-height:var(--cide-input-error-helper-size-xl)}.cide-element-size-xl .cide-input-clear{top:var(--cide-input-border-size-xl);width:var(--cide-element-size-xl);height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-clear .cide-input-clear-icon{font-size:calc(var(--cide-input-size-xl) + var(--cide-input-size-xl) / 2);line-height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-leading-icon-wrapper{top:var(--cide-input-border-size-xl);width:var(--cide-element-size-xl);height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl .cide-input-leading-icon-wrapper .cide-input-leading-icon{font-size:calc(var(--cide-input-size-xl) + var(--cide-input-size-xl) / 2);line-height:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl) * 2)}.cide-element-size-xl.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-element-input-wrapper{margin-top:calc(var(--cide-input-label-size-xl) / 2)}.cide-element-size-xl.cide-element-input-label-floating:not(.cide-element-input-label-less) .cide-input-label{top:calc(var(--cide-input-label-size-xl) / 2 - var(--cide-input-label-size-xl))}.cide-element-size-xl.cide-element-leading-icon .cide-input-input{padding-left:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl))}.cide-element-size-xl.cide-element-clear-input .cide-input-input{padding-right:calc(var(--cide-element-size-xl) - var(--cide-input-border-size-xl))}.cide-element-size-xl.cide-element-trailing-icon .cide-input-clear{right:var(--cide-element-size-xl)}.cide-input-leading-icon-wrapper{position:absolute;bottom:0;left:0;z-index:-10;text-align:center}\n"] }]
|
|
400
|
-
}], ctorParameters: () => [
|
|
409
|
+
], template: "<div class=\"cide-input\">\r\n <!------------------------------------------TEXT | PASSWORD------------------------------------------>\r\n <div *ngIf=\"type === 'text' || type === 'number' || type === 'password'\">\r\n <div class=\"tw-w-full tw-relative\" [ngStyle]=\"{ width: width }\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-leading-icon': leadingIcon,\r\n 'cide-element-trailing-icon': trailingIconInternal,\r\n 'cide-element-clear-input': clearInput,\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n 'cide-element-input-number': (type === 'number')\r\n }\">\r\n <!-- label -->\r\n <label [for]=\"id\" class=\"cide-input-label\" *ngIf=\"label && !labelHide\">{{label}}</label>\r\n\r\n <!-- all one line elemets which dose not affect with label and error text -->\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span\r\n class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n\r\n <!-- Traling icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\"\r\n *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n\r\n <!-- Input -->\r\n <input [placeholder]=\"placeholder\" [id]=\"id\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? 'tw-h-7' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n [(ngModel)]=\"ngModel\" [type]=\"typeInternal\" (input)=\"upDateValue($event)\" (focus)=\"focusControl()\"\r\n [autocomplete]=\"autocomplete\" [min]=\"min\" [max]=\"max\"\r\n class=\"tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-p-0 cide-input-input tw-outline-none\" />\r\n </div>\r\n <!-- error text / helper text -->\r\n <span *ngIf=\"(errorText || helperText || !helperTextCollapse) && !hideHelperAndErrorText\"\r\n class=\"cide-input-help-error-text\">{{\r\n isValid\r\n ? helperText : (errorText ?\r\n (isTouched ? errorText : helperText)\r\n : helperText)}}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Input with tralling icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-right-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-1 tw-pr-8 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!-- Input with leading icon -->\r\n <!-- <div class=\"tw-inline-block tw-h-12 tw-w-64\">\r\n <div class=\"tw-w-fullh-full tw-relative\">\r\n <label\r\n class=\"tw-absolute -tw-top-1/3 tw-mx-2 tw-bg-white tw-px-0.5 tw-py-0 tw-text-sm tw-leading-4 tw-text-gray-700\">Name</label>\r\n <span class=\"tw-absolute -tw-bottom-px tw-left-0 -tw-z-10 tw-text-gray-400\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"> person </span>\r\n </span>\r\n <input\r\n class=\"tw-m-0 tw-h-8 tw-w-full tw-overflow-hidden tw-rounded-md tw-border-2 tw-border-solid tw-border-gray-300 tw-bg-transparent tw-p-0 tw-pb-0.5 tw-pl-8 tw-pr-1 tw-text-sm tw-text-gray-600 tw-outline-none hover:tw-border-blue-400 focus:tw-border-blue-400 focus:tw-text-gray-950\"\r\n value=\"Ankush Bhure\" />\r\n </div>\r\n </div> -->\r\n\r\n <!------------------------------------------CHECKBOX------------------------------------------>\r\n <div *ngIf=\"type === 'checkbox'\" class=\"tw-flex\">\r\n <div class=\"cide-checkbox tw-relative\">\r\n <input [checked]=\"ngModel\" [value]=\"ngModel\" [id]=\"idRandom\" [type]=\"type\"\r\n class=\"tw-absolute tw-left-0 tw-invisible\" (click)=\"updateValueCheckBox(!ngModel); focusControl()\"\r\n [autocomplete]=\"autocomplete\" />\r\n <label class=\"cide-checkbox-label tw-cursor-pointer\" [for]=\"idRandom\">\r\n <span class=\"tw-border-2 tw-border-solid tw-relative tw-rounded-md\">\r\n <svg width=\"12px\" height=\"10px\" class=\"tw-absolute\">\r\n <use xlink:href=\"#sdfwiorfklasfjjalfjwerwr\"></use>\r\n </svg>\r\n </span>\r\n <span class=\"tw-text-sm tw-pl-2 tw-leading-[18px] tw-select-none tw-cursor-pointer\"\r\n *ngIf=\"!labelHide\">{{label}}</span>\r\n </label>\r\n <svg class=\"tw-absolute tw-h-0 tw-w-0 tw-select-none tw-pointer-events-none\">\r\n <!-- Element hidden and its xpath is used to display inside SVG -->\r\n <symbol id=\"sdfwiorfklasfjjalfjwerwr\" viewbox=\"0 0 12 10\">\r\n <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\r\n </symbol>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <!-------------------------------------------SELECT------------------------------------------->\r\n <div *ngIf=\"type === 'select'\">sas\r\n <div class=\"tw-relative\">\r\n <div class=\"tw-absolute\">\r\n @for (item of option; track $index) {\r\n <div class=\"tw-w-full\">\r\n {{item}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
410
|
+
}], ctorParameters: () => [], propDecorators: { fill: [{
|
|
401
411
|
type: Input
|
|
402
412
|
}], label: [{
|
|
403
413
|
type: Input
|
|
@@ -445,9 +455,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
445
455
|
type: Input
|
|
446
456
|
}], option: [{
|
|
447
457
|
type: Input
|
|
458
|
+
}], min: [{
|
|
459
|
+
type: Input
|
|
460
|
+
}], max: [{
|
|
461
|
+
type: Input
|
|
448
462
|
}], size: [{
|
|
449
463
|
type: Input
|
|
450
464
|
}], ngModelChange: [{
|
|
451
465
|
type: Output
|
|
452
466
|
}] } });
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWVsZW1lbnQvc3JjL2xpYi9lbGVtZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBeUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuSixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7OztBQTBDOUUsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUFtQixjQUE4QixFQUFVLGNBQW1DO1FBQTNFLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQUk5RixnRUFBZ0U7UUFFaEU7OztXQUdHO1FBQ00sU0FBSSxHQUFxQixTQUFTLENBQUM7UUFDNUMsOERBQThEO1FBQ3JELFVBQUssR0FBVyxFQUFFLENBQUM7UUFDNUIsMENBQTBDO1FBQ2pDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDcEMsbURBQW1EO1FBQzFDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDbkMsaUVBQWlFO1FBQ3hELGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDckMsMERBQTBEO1FBQ2pELG1CQUFjLEdBQXVCLE9BQU8sQ0FBQztRQUN0RCwwRUFBMEU7UUFDakUsYUFBUSxHQUFpQixP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LEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLEVBQUU7c0JBQVYsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQVlHLElBQUk7c0JBQVosS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDYXBpdGFsaXplUGlwZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BpcGVzL2NhcGl0YWxpemUvY2FwaXRhbGl6ZS5waXBlJztcclxuaW1wb3J0IHsgQ2lkZUVsZW1lbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3NlcnZpY2VzL2VsZW1lbnRzL2VsZW1lbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhdXRvY2FwaXRhbGl6ZVR5cGUsIGF1dG9jb21wbGV0ZVR5cGUsIGNvbnRyb2xUeXBlLCBlbGVtZW50U3R5bGVUeXBlLCBpbnB1dFR5cGUsIGxhYmVsRGlyVHlwZSwgbGFiZWxQbGFjZW1lbnRUeXBlLCB0aGVtZVNpemUgfSBmcm9tICdjbG91ZC1pZGUtbG1zLW1vZGVsJztcclxuXHJcbi8qKiBAZGVzY3JpcHRpb24gdHlwZSB0byByZWdpc3RlciBlcnJvciByZWxhdGVkIHRvIGNvbnRyb2wgKi9cclxuZXhwb3J0IHR5cGUgRXJyb3JWYWxpZGF0aW9uU3RhdHVzID0ge1xyXG4gIG1heGxlbmd0aD86IHN0cmluZyxcclxuICBtaW5sZW5ndGg/OiBzdHJpbmcsXHJcbiAgcmVxdWlyZWQ/OiBzdHJpbmcsXHJcbn1cclxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblN0YXR1cyA9IHtcclxuICB2YWxpZGF0aW9uOiBFcnJvclZhbGlkYXRpb25TdGF0dXMsXHJcbiAgc3RhdHVzOiBib29sZWFuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2lkZS1lbGUtaW5wdXQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIC8vIGRpcmVjdGl2ZXNcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIC8vIGZvciBuZ01vZGVsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaWRlSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gdG8gYXBwbHkgdmFsaWRhdGlvbnMgICovXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaWRlSW5wdXRDb21wb25lbnQpLFxyXG4gICAgfSxcclxuICAgIENhcGl0YWxpemVQaXBlXHJcbiAgXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIENpZGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uQ2hhbmdlcywgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGNhcGl0YWxpemVQaXBlOiBDYXBpdGFsaXplUGlwZSwgcHJpdmF0ZSBlbGVtZW50U2VydmljZTogQ2lkZUVsZW1lbnRzU2VydmljZSkge1xyXG4gICAgLy8gVmFsaWRhdGUgY29udHJvbFxyXG4gICAgdGhpcy5vblZhbGlkYXRlKCk7XHJcbiAgfVxyXG4gIC8qPT09PT09PVNldCBjdXN0b20gY29udHJvbHMgaW5wdXRzIHRvIHNldCBjb21wb25lbnRzPT09PT09PT09Ki9cclxuXHJcbiAgLyoqIFxyXG4gICAqIEBkZXNjcmlwdGlvbiB0byBzZSB0aGUgdmlzdWFsIG9mIGNvbnRyb2wgbGlrZSBzb2xpZCBjb250cm9sIG9mZmVyZCBieSBtYXRlcmlhbCBkZXNpZ24gb3Igb3V0bGluZSB3aXRoIGEgYm9yZGVyXHJcbiAgICogQG9wdGlvbnMgc29saWQgfCBvdXRsaW5lIHwgc3RhbmRhcmRcclxuICAgKi9cclxuICBASW5wdXQoKSBmaWxsOiBlbGVtZW50U3R5bGVUeXBlID0gJ291dGxpbmUnO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gTGFibGUgb2YgY29udHJvbCAoVGl0bGUpLCBMaWtlIE5hbWUsIEVtYWlsICovXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB0byBoaWRlIGFuZCBzaG93IGxhYmVsICovXHJcbiAgQElucHV0KCkgbGFiZWxIaWRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpcyBjb250cm9sIEVkaXRhYmxlIG9yIERpc2FibGVkICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogQGRlc2NyaXB0aW9uIElzIENsZWFyIElucHV0IENyb3NzIGJ1dHRvbiBpcyB2aXNpYmxlIG9yIG5vdCAqL1xyXG4gIEBJbnB1dCgpIGNsZWFySW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogQGRlc2NyaXB0aW9uIFBvc2l0aW9uIG9mIExhYmVsICdmbG9hdGluZycgfCAnZml4ZWQnICovXHJcbiAgQElucHV0KCkgbGFiZWxQbGFjZW1lbnQ6IGxhYmVsUGxhY2VtZW50VHlwZSA9IFwiZml4ZWRcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIExhYmxlIGRpcmVjdGlvbiBmcm9tIHN0YXJ0IG9mIGNvbnRybCBvciBlbmQgb2YgY29udHJvbCAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsRGlyOiBsYWJlbERpclR5cGUgPSBcInN0YXJ0XCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBQbGFjZSBob2xkZXIgZm9yIGNvbnRyb2wgdG8gZGlzcGxheSBpZiB0aGVyZSBpcyBubyB2YWx1ZSAqL1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gaXQgaXMgdG8gc2V0IGxlYWRpbmcgaWNvbiwgYXQgdGhlIHN0YXJ0IG9mIGNvbnRyb2wgICovXHJcbiAgQElucHV0KCkgbGVhZGluZ0ljb246IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpdCBpcyB0byBzZXQgdHJhaWxpbmcgaWNvbiwgYXQgdGhlIGVuZCBvZiBjb250cm9sLCBmb3IgcGFzc3dvcmQgdHlwZSBjb250cm9sIGV5ZSBpcyB0aGUgdHJhaWxpbmcgaWNvbiAgKi9cclxuICBASW5wdXQoKSB0cmFpbGluZ0ljb246IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB0byBkaXNwbGF5IGJlbG93IHRoZSBjb250cm9sIGZvciBzdWdnZXN0aW9uLCBpZiB0aGVyZSBpcyBhbnkgZXJyb3IgdGhlbiBlcnJvciB3aWxsIGJ3IHRoZSBmaXJzdCB0byBzaG9lIGluIHBsYWNlIG9mIGhlbHAgdGV4dCAqL1xyXG4gIEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBkZWZhdWx0IHRydWUgdG8gY29sbGFwc2Ugd2hlbiB0aGVyZSBpcyBubyBoZWxwIHRleHQgb3IgZXJyb3IgdGV4dCwgaWYgZmFsc2UgdGhlbiBlbGVtZW50IGFyZWEgaW4gRE9NIHdpbGwgYmUgcmVzZXJ2ZWQgbmV2ZXIgZGV0cm95ICAqL1xyXG4gIEBJbnB1dCgpIGhlbHBlclRleHRDb2xsYXBzZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBzaG93IGFuZCBoaWRlIGhlbHBlciB0ZXh0IGl0cyBmb3JlY2Z1bGwgKi9cclxuICBASW5wdXQoKSBoaWRlSGVscGVyQW5kRXJyb3JUZXh0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpZiBmb3VuZCBhbnkgZXJyb3IgaW4gY29udHJvbCB0aGUgZXJyb3IgdGhleHQgd2lsbCBiZSB1c2VkIHRvIGRpc3BsYXkgZXJyb3IgbWVzc2FnZSwgaWYgdGhlcmUgaXMgaGVscCB0ZXh0IHN0aWxsIGVycm9yIHRleHQgaXMgaGF2aW5nIGhpZ2hlciBwcmlvcml0eSB0aGVuIGhlbHB0ZXh0ICovXHJcbiAgQElucHV0KCkgZXJyb3JUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gbWF4bGVuZ3RoIGZvciBjb250cm9sICovXHJcbiAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gbWlubGVuZ3RoIGZvciBjb250cm9sICovXHJcbiAgQElucHV0KCkgbWlubGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gaXMgY29udHJvbCBpcyByZXF1aXJlZCBvciBub3QgaW5wdXQgdHlwZSBpcyB0cnVlIHwgZmFsc2UgKi9cclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gQXV0byBjYXBhdGFsaXphdGlvbiBmb3IgdGhlIHZhbHVlIGFuZCBhcHBsaWNhYmxlIHRvIHdvcmQgb3IgdG8gY29tcGxldGUgc2VudGFuY2UgKi9cclxuICBASW5wdXQoKSBhdXRvY2FwaXRhbGl6ZTogYXV0b2NhcGl0YWxpemVUeXBlID0gXCJvZmZcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIGF1dG8gY29tcGxldGUgdHlwZSB0byBoZWxwIHJlYWRlciB3aGF0IGlzIHRoZSB0eXBlIG9mIHZhbHVlICovXHJcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBhdXRvY29tcGxldGVUeXBlID0gXCJvZmZcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIHR5cGUgb2YgY29udHJvbCAqL1xyXG4gIEBJbnB1dCgpIHR5cGU6IGNvbnRyb2xUeXBlID0gJyc7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3aWR0aCBvZiBjb250cm9sLCBkZWZhdWx0IHdpZHRoIGlzIDEwMCUgKi9cclxuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gdW5pcSBpZCBvZiBjb250cm9sLCB1c2VkIHRvIGRpZmZlcmVuY2lhdCB0aGUgdmFsdWUgYWxzbyBwcmV2ZW50IHZhbHVlIHNob3VsZCBub3QgZWZmZWN0IGFub3RoZXIgdmFsdWVzICovXHJcbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9ICcnO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gdG8gZ2V0IGlucHV0IHZhbHVlIHVzaW5nIG9uZSB3YXkgYmluZGluZyBsaWtlOiBbbmdNb2RlbF0gb3IgYnkgdHdvIHdheSBiaW5kaW5nIFsobmdNb2RlbCldICovXHJcbiAgQElucHV0KCkgbmdNb2RlbDogaW5wdXRUeXBlID0gJyc7XHJcbiAgQElucHV0KCkgb3B0aW9uOiBzdHJpbmdbXSA9IFtcImFua3N1aFwiLCBcImJodXJlXCJdXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogSG9sZHMgdGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudCBsaWtlIFNtYWxsLCBFeHRyYSBzbWFsbCwgTGFyZ2VcclxuICAgKiBieSBEZWZhdWx0IGl0IHRha2VzIHNtYWxsIHNpemVcclxuICAgKiBvciB0aGUgc2l6ZSBzZXQgYnkgdGhlIHByb2plY3Qgc2V0dXAgc2VydmljZVxyXG4gICAqIG9yIGl0IHdpbGwgYmVzZXQgZm9yIGluZGl2aWR1YWwgY29tcG9uZW50XHJcbiAgICogXHJcbiAgICogU2l6ZSBBcHBsZWQgXHJcbiAgICogQ29tcG9uZW50IGxldmVsIHRoZW4gc2V0dXAgc2VydmljZSB0aGVuIGZpbmFsbHkgZGVmYXVsdCBtZFxyXG4gICAqICBPcHRpb25zOiBcIjJ4c1wiIHwgXCJcInhzXCIgfCBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgfCBcInhsXCIgfCBcInh4bFwiIFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNpemU6IHRoZW1lU2l6ZSA9IFwic21cIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIHRvIHNldCByZXR1cm4gdmFsdWUgdXNpbmcgb25lIHdheSBiaW5kaW5nIGxpa2U6IChuZ01vZGVsQ2hhbmdlcykgb3IgYnkgdHdvIHdheSBiaW5kaW5nIFsobmdNb2RlbCldICovXHJcbiAgQE91dHB1dCgpIG5nTW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxpbnB1dFR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxpbnB1dFR5cGU+KCk7XHJcblxyXG4gIC8qXHJcbiAgICAgIGludGVybmFsIFByb3BlcnRpZXMgZm9yIGlucHV0XHJcbiAgKi9cclxuICAvKiogQGRlc2NyaXB0aW9uIGlzIHZhbGUgbmVlZCB0byByZWFkIGZyb20gbmdNb2RlbCBvciBmcm9tIHZhbHVlKG5lZWQgdG8gaW1wbGVtZW50KSwgaXQgaXMgZGV0ZWN0ZWQgYW5kIG1haWxkIGZhbHMgb24gdmFsdWUgY2huYWdlcyAqL1xyXG4gIHB1YmxpYyBpc05nTW9kZWw6IGJvb2xlYW4gPSB0aGlzLm5nTW9kZWwgPyB0cnVlIDogZmFsc2U7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB0aGlzIGlzIHRvIHNldCBjb250cm9sIHZhbHVlIGlzIHZhbGlkIG9yIG5vdCwgc2V0IGJ5IHVzIGluc2lkZSB2YWxpZGF0ZSBjYWxsYmNrIG1ldGhvZCBjYWxsZWQgYnkgYW5ndWxhciAgKi9cclxuICBwdWJsaWMgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3aGVuIGNvbnRyb2wgaXMgdG91Y2hlZCB0aGVuIHRoZSB3aWxsIG1haWQgdHJ1ZSBieSB0aGUgdXMgdG8gY2hlY2sgaXQgaXMgdG91Y2hlZCBvciBub3QsIHdoZW4gd2Ugd2lsbCBzZXQgdGhpcyB0cnVlIHdlIHdpbGwgY2FsbCB0aGUgb25Ub3VjaGVkIGNhbGxiYWNrIG1ldGhvZCBvZiBhbmd1YWxyIHRvIGluZm9ybSBhbmd1bGFyIHRoYXQgc29tdGhpcyBpcyBjaGFuZ2VkIGFuZCBjb250cm9sIGlzIHRvdWNoZWQgKi9cclxuICBwdWJsaWMgaXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3ZSB3aWxsIHRha2UgdHlwZSBvZiBjb250cm9sIGluIHR5cGUgYnV0IGlzIG1heSBiZSBub3QgZXhhY3RseSB3aGljaCBpbnB1dCdzIHR5cGUgc28gd2UgbmVlZCB0byBnZXQgdHlwZSBhbmQgc2V0IGFjdHVsZSB0eXBlIHRvIG91ciBpbnB1dCwgYWxzbyB3aGVuIHR5cGUgaXMgc2V0IHBhc3N3b3JkIGJ1dCBpbiBjYWxzZSB2aWV3IGluIHRleHR0IHRoZW4gaW51dXQgdHlwZSBuZWVkIHRvIGNoYW5nZSB0byB0ZXh0ICovXHJcbiAgcHVibGljIHR5cGVJbnRlcm5hbDogXCJ0ZXh0XCIgfCBcInBhc3N3b3JkXCIgPSBcInRleHRcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIGlmIHRyYWxpbmcgaXMgc2V0IHRoZSBpdCBpcyBhc3NpZ25lZCBieSBpdCwgYnV0IHNvbWUgY2FzZSB0YXJsaW5nIGljb24gbm90IGFzIGl0IGlzIHNldCBuZWVkIHRybyBiZSBjaGFuZ2VkIGF0IHJ1bnRpbWUsIGxpa2UgcGFzc3dvcmQgdmlzaWJpbGl0eSBoaWRlIGFuZCBzaG93ICovXHJcbiAgcHVibGljIHRyYWlsaW5nSWNvbkludGVybmFsOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKiBcclxuICAgICAgUHJvcGVydGllcyBjb25uZWN0ZWQgd2l0aCB0cmFpbGluZ0ljb25JbnRlcm5hbCBcclxuICAqL1xyXG4gIHB1YmxpYyBpc1RyYWlsaW5nSWNvbkFsbHdlZENsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFByb3BlcnRpZXMgY29ubmVjdGVkIHdpdGggaWRcclxuICBwdWJsaWMgaWRSYW5kb206IHN0cmluZyA9IHRoaXMucmFuZG9tU3RyaW5nKCk7XHJcblxyXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1NRVRIT0RTIEZPUiBDVVNUT00gRk9STSBDT01QT05FTlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gIC8vIEZPUiBBTkdVTEFSIENBTExFRCBCWSBVSVxyXG5cclxuICAvKiogXHJcbiAgICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgSFRNTCBDaG5hZ2UgdG8gdGVsbCBBbmd1bGFyIHNvbXRoaW5nIGlzIGNoYW5nZWQuXHJcbiAgICogQGZpZWxkIHZhbHVlIDogaW5wdXRUeXBlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IGlucHV0VHlwZSkgPT4geyB9O1xyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgaW5wdXQgaXMgdG91Y2hlZCAoY2xjaWtlZCkgdG8gdGVsbCBBbmd1bGFyIHNvbXRoaW5nIGlzIGNoYW5nZWQuICovXHJcbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgaW5wdXQgaXMgbmVlZCB0byBWYWxpZGF0ZSB0byB0ZWxsIEFuZ3VsYXIgc29tdGhpbmcgaXMgY2hhbmdlZCAoaW4gY2FzZSBvZiBzb21lIGlucHV0IGRpcGVuZGVudCB2YWxpZGF0aW9uKS4gKi9cclxuICBvblZhbGlkYXRlID0gKCkgPT4geyB9O1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBNZXRob2QgdGhhdCBwZXJmb3JtcyBzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGNvbnRyb2wuXHJcbiAgICogRXhpY3V0ZWQgYnkgQW5ndWxhclxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgVGhlIGNvbnRyb2wgdG8gdmFsaWRhdGUgYWdhaW5zdC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIEEgbWFwIG9mIHZhbGlkYXRpb24gZXJyb3JzIGlmIHZhbGlkYXRpb24gZmFpbHMsXHJcbiAgICogb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25fZXJyb3IgPSB0aGlzLmlzQ29udHJvbFZhbGlkKHRoaXMubmdNb2RlbCk7XHJcbiAgICBpZiAodmFsaWRhdGlvbl9lcnJvcj8uc3RhdHVzKSB7XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uX2Vycm9yO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdmFsaWRhdG9yIGlucHV0cyBjaGFuZ2UuXHJcbiAgICogRXhpY3V0ZWQgYnkgQW5ndWxhclxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayBmdW5jdGlvblxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGUgPSBmbjtcclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gd2hlbiBmb3JtIGNvbnRyb2wgY2hhbmdlIGZyb20gbW9kZWwgc2lkZSB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCAgKi9cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBpbnB1dFR5cGUpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc05nTW9kZWwpIHtcclxuICAgICAgdGhpcy5uZ01vZGVsID0gdGhpcy5hdXRvQ2FwaXRhbGl6ZUJ5T3B0aW9uKHZhbHVlLCB0aGlzLnR5cGUpO1xyXG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2U/LmVtaXQodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKiogQGRlc2NyaXB0aW9uIEFsbG93cyBBbmd1bGFyIHRvIHJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBtb2RlbCBjaGFuZ2VzLiAqL1xyXG4gIC8vIFNhdmUgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvcGVydHkgdG8gY2FsbCBsYXRlciBoZXJlLlxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogaW5wdXRUeXBlKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIC8qKiBAZGVzY3JpcHRpb24gQWxsb3dzIEFuZ3VsYXIgdG8gcmVnaXN0ZXIgYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGlucHV0IGhhcyBiZWVuIHRvdWNoZWQuICovXHJcbiAgLy8gU2F2ZSB0aGUgZnVuY3Rpb24gYXMgYSBwcm9wZXJ0eSB0byBjYWxsIGxhdGVyIGhlcmUuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4gIC8qXHJcbiAgICBNZXRob2RzIGZvciBpbnB1dFxyXG4qL1xyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIERldGVjdCB3ZXRoZXIgaW5wdXQgcHJvcGVydGlyZXMgY2FuZ2VkIG9yIG5vdCAqL1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzPy5bJ3ZhbHVlJ10pIHtcclxuICAgICAgdGhpcy5pc05nTW9kZWwgPSB0cnVlO1xyXG4gICAgICB0aGlzLm5nTW9kZWwgPSB0aGlzLnByb2Nlc3NWYWx1ZSh0aGlzLm5nTW9kZWwsIHRoaXMudHlwZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkVmFsdWVBbmRUeXBlKHRoaXMubmdNb2RlbCwgdGhpcy50eXBlKSB8fCB0aGlzLmlzVG91Y2hlZCkge1xyXG4gICAgICB0aGlzLmlzQ29udHJvbFZhbGlkKHRoaXMubmdNb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGl0ZWN0IHR5cGUgY2hhbmdlXHJcbiAgICBpZiAoY2hhbmdlcz8uWyd0eXBlJ10pIHtcclxuICAgICAgdGhpcy5kZXRlY3RUeXBlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlkKSB7XHJcbiAgICAgIHRoaXMuZ2V0Q29udHJvbERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gY3VzdG9tIG1ldGhvZCBydW4gd2hlbiBIVE1MIGNoYW5nZXMsIHdlIGNhbGwgbWV0aG9kIHJlZ2lzdGVyZCBieSBhbmd1bGFyIHRvIGRldGVjdCBjaGFuZ2UgKi9cclxuICB1cERhdGVWYWx1ZSh2YWx1ZTogeyB0YXJnZXQ6IHsgdmFsdWU6IGlucHV0VHlwZSB9IH0gfCBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdmFsdWUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCB7IHZhbHVlOiBpbnB1dFR5cGUgfTtcclxuICAgIHRoaXMuaXNDb250cm9sVmFsaWQodGFyZ2V0Py52YWx1ZSk7XHJcbiAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB0aGlzLnByb2Nlc3NWYWx1ZSh0YXJnZXQ/LnZhbHVlLCB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy5uZ01vZGVsID0gdXBkYXRlZFZhbHVlO1xyXG4gICAgLy8gY29uc29sZS5sb2codGFyZ2V0KVxyXG4gICAgdGhpcy5vbkNoYW5nZSh1cGRhdGVkVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIG1ldGhvZCBhcHBsaWNhYmxlIGluIGNhc2Ugb2YgY29udHJvbCB0eXBlIGNoZWNrYm94XHJcbiAgICogXHJcbiAgICogQHBhcmFtIHZhbHVlIGJvb2xlYW4gfCBzdHJpbmdcclxuICAgKi9cclxuICB1cGRhdGVWYWx1ZUNoZWNrQm94KHZhbHVlOiBzdHJpbmcgfCBib29sZWFuKSB7XHJcbiAgICAvLyBDb252ZXJ0IHN0cmluZyB0byBib29sZWFuXHJcbiAgICB0aGlzLm5nTW9kZWwgPSAhdGhpcy5uZ01vZGVsO1xyXG4gICAgdmFsdWUgPSAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpID8gdmFsdWUgOiAodmFsdWUgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICB0aGlzLm5nTW9kZWxDaGFuZ2U/LmVtaXQodmFsdWUpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIGNsZWFyIHRoZSB2YWx1ZSAqL1xyXG4gIENsZWFySW5wdXRWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT0gXCJ0ZXh0XCIpIHtcclxuICAgICAgdGhpcy51cERhdGVWYWx1ZSh7IHRhcmdldDogeyB2YWx1ZTogXCJcIiB9IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3aGVuIEhUTUwgaXMgZm9jdWVzZCAqL1xyXG4gIGZvY3VzQ29udHJvbCgpIHtcclxuICAgIHRoaXMuaXNUb3VjaGVkID0gdHJ1ZTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gSWYgY29udHJvbCB2YWx1ZSBuZWVkIHRvIGJlIHByb2Nlc3NlZCwgbGlrZSBVUFBFUkNBU0UgKi9cclxuICBwcm9jZXNzVmFsdWUodmFsdWU6IGlucHV0VHlwZSwgdHlwZTogY29udHJvbFR5cGUpIHtcclxuICAgIHZhbHVlID0gdGhpcy5hdXRvQ2FwaXRhbGl6ZUJ5T3B0aW9uKHZhbHVlLCB0eXBlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gZm9yIGNhcGl0YWxpemF0aW9uICovXHJcbiAgYXV0b0NhcGl0YWxpemVCeU9wdGlvbih2YWx1ZTogaW5wdXRUeXBlLCB0eXBlOiBjb250cm9sVHlwZSkge1xyXG4gICAgaWYgKHR5cGUgPT0gJ3RleHQnKSB7XHJcbiAgICAgIGlmICh0aGlzLmF1dG9jYXBpdGFsaXplID09IFwib25cIikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcGl0YWxpemVQaXBlPy50cmFuc2Zvcm0odmFsdWUgYXMgc3RyaW5nLCAnYWxsVXBwZXJDYXNlJyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYXV0b2NhcGl0YWxpemUgPT0gXCJ3b3Jkc1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwaXRhbGl6ZVBpcGU/LnRyYW5zZm9ybSh2YWx1ZSBhcyBzdHJpbmcsICd0aXRsZUNhc2UnKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5hdXRvY2FwaXRhbGl6ZSA9PSBcInNlbnRlbmNlc1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwaXRhbGl6ZVBpcGU/LnRyYW5zZm9ybSh2YWx1ZSBhcyBzdHJpbmcsIFwic2VudGVuY2VDYXNlXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEl0IGlzIHVzZWQgdG8gcmV0dXJuIHRoZSB2YWx1ZSBpcyB2YWxpZCBvciBub3QgKi9cclxuICBpc1ZhbGlkVmFsdWVBbmRUeXBlKHZhbHVlOiBpbnB1dFR5cGUsIHR5cGU6IGNvbnRyb2xUeXBlKSB7XHJcbiAgICBpZiAodHlwZSA9PSAndGV4dCcpIHtcclxuICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gdG8gY2hlY2sgY29udHJvbCBpcyB2YWxpZCBvciBub3QgKi9cclxuICBpc0NvbnRyb2xWYWxpZCh2YWx1ZTogaW5wdXRUeXBlKTogVmFsaWRhdGlvblN0YXR1cyB7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uX3N0YXR1czogVmFsaWRhdGlvblN0YXR1cyA9IHtcclxuICAgICAgdmFsaWRhdGlvbjoge30sXHJcbiAgICAgIHN0YXR1czogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnN0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgdmFsaWRhdGlvbl9zdGF0dXMudmFsaWRhdGlvbi5yZXF1aXJlZCA9IGByZXF1aXJlZCFgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudHlwZSA9PSAndGV4dCcpIHtcclxuICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPiB0aGlzLm1heGxlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uX3N0YXR1cy5zdGF0dXMgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uX3N0YXR1cy52YWxpZGF0aW9uLm1heGxlbmd0aCA9IGBtYXhpbXVtIGxlbmd0aCBpcyAke3RoaXMubWF4bGVuZ3RofSFgO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5taW5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAodmFsdWU/Lmxlbmd0aCA8IHRoaXMubWlubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnN0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnZhbGlkYXRpb24ubWlubGVuZ3RoID0gYG1pbmltdW0gbGVuZ3RoIGlzICR7dGhpcy5taW5sZW5ndGh9IWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnN0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgdmFsaWRhdGlvbl9zdGF0dXMudmFsaWRhdGlvbi5yZXF1aXJlZCA9IGByZXF1aXJlZCFgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzVmFsaWQgPSAhdmFsaWRhdGlvbl9zdGF0dXMuc3RhdHVzO1xyXG4gICAgdGhpcy5lcnJvclRleHQgPSBPYmplY3QudmFsdWVzKHZhbGlkYXRpb25fc3RhdHVzLnZhbGlkYXRpb24pLmF0KDApIHx8ICcnXHJcbiAgICByZXR1cm4gdmFsaWRhdGlvbl9zdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEFsbG93cyBBbmd1bGFyIHRvIGRpc2FibGUgdGhlIGlucHV0LiAqL1xyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIE1ldGhvZCBmb3IgdHJhaWxpbmcgSWNvbiBDbGljayAqL1xyXG4gIHRyYWlsaW5nSWNvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xyXG4gICAgICBpZiAodGhpcy50eXBlSW50ZXJuYWwgPT09ICdwYXNzd29yZCcpIHtcclxuICAgICAgICB0aGlzLnR5cGVJbnRlcm5hbCA9ICd0ZXh0JztcclxuICAgICAgICB0aGlzLnRyYWlsaW5nSWNvbkludGVybmFsID0gJ3Zpc2liaWxpdHknO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHlwZUludGVybmFsID0gJ3Bhc3N3b3JkJztcclxuICAgICAgICB0aGlzLnRyYWlsaW5nSWNvbkludGVybmFsID0gJ3Zpc2liaWxpdHlfb2ZmJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIGdlbmVyYXRlIFJhbmRvbSBTdHJpbmdcclxuICAgKiBAcGFyYW0gc2V0dXBQcmFyYW1ldGVyIHsgbGVuZ2h0OiBudW1iZXIsIHByZWZpeDogc3RyaW5nIH1cclxuICAgKiBkZWZhdWx0IGxlbmdodCBpcyAxMCwgcHJlZm94IGlzIFwiXCJcclxuICAgKiBAcmV0dXJucyBzdHJpbmdcclxuICAgKi9cclxuICByYW5kb21TdHJpbmcoc2V0dXBQcmFyYW1ldGVyOiB7IGxlbmdodDogbnVtYmVyLCBwcmVmaXg6IHN0cmluZyB9ID0geyBsZW5naHQ6IDEwLCBwcmVmaXg6IFwiXCIgfSk6IHN0cmluZyB7XHJcbiAgICAvL3ZhcmlhYmxlIGNvbnNpc3RpbmcgYWxwaGFiZXRzIGluIHNtYWxsIGFuZCBjYXBpdGFsIGxldHRlciAgXHJcbiAgICBjb25zdCBjaGFyYWN0ZXJzID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hUWmFiY2RlZmdoaWtsbW5vcHFyc3R1dnd4eXpcIjtcclxuICAgIC8vbG9vcCB0byBzZWxlY3QgYSBuZXcgY2hhcmFjdGVyIGluIGVhY2ggaXRlcmF0aW9uICBcclxuICAgIGxldCByYW5kb21fc3RyaW5nID0gc2V0dXBQcmFyYW1ldGVyPy5wcmVmaXggfHwgXCJcIjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dXBQcmFyYW1ldGVyPy5sZW5naHQ7IGkrKykge1xyXG4gICAgICBjb25zdCBybnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICByYW5kb21fc3RyaW5nICs9IGNoYXJhY3RlcnMuc3Vic3RyaW5nKHJudW0sIHJudW0gKyAxKTtcclxuICAgIH1cclxuICAgIC8vcmV0dXJuIHRoZSBnZW5lcmF0ZWQgc3RyaW5nICBcclxuICAgIHJldHVybiByYW5kb21fc3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Q29udHJvbERhdGEoKSB7XHJcbiAgICBjb25zdCBjaWRlX2VsZW1lbnRfZGF0YSA9IGF3YWl0IHRoaXMuZWxlbWVudFNlcnZpY2U/LmdldEVsZW1lbnREYXRhKHsgc3lwZV9rZXk6IHRoaXMuaWQgfSk7XHJcbiAgICBpZiAoY2lkZV9lbGVtZW50X2RhdGEpIHtcclxuICAgICAgdGhpcy5sYWJlbCA9IGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX2xhYmVsIGFzIHN0cmluZztcclxuICAgICAgdGhpcy5sYWJlbFBsYWNlbWVudCA9IChjaWRlX2VsZW1lbnRfZGF0YT8uc3lwZV9sYWJlbF9wbGFjZW1lbnQgfHwgJ2Zsb2F0aW5nJykgYXMgbGFiZWxQbGFjZW1lbnRUeXBlO1xyXG4gICAgICB0aGlzLnR5cGUgPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfdHlwZSB8fCAndGV4dCcpIGFzIGNvbnRyb2xUeXBlO1xyXG4gICAgICB0aGlzLnJlcXVpcmVkID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX3JlcXVpcmVkIHx8IGZhbHNlKSBhcyBib29sZWFuO1xyXG4gICAgICB0aGlzLnNpemUgPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfc2l6ZSB8fCAnbWQnKSBhcyB0aGVtZVNpemU7XHJcbiAgICAgIHRoaXMuaGVscGVyVGV4dENvbGxhcHNlID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX2hlbHBlcl90ZXh0X2NvbGxhcHNlIHx8IGZhbHNlKSBhcyBib29sZWFuO1xyXG4gICAgICB0aGlzLm1heGxlbmd0aCA9IChjaWRlX2VsZW1lbnRfZGF0YT8uc3lwZV9tYXhfbGVuZ3RoKSBhcyBudW1iZXI7XHJcbiAgICAgIHRoaXMubWlubGVuZ3RoID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX21pbl9sZW5ndGgpIGFzIG51bWJlcjtcclxuICAgICAgdGhpcy5sZWFkaW5nSWNvbiA9IChjaWRlX2VsZW1lbnRfZGF0YT8uc3lwZV9sZWFkaW5nX2ljb24pIGFzIHN0cmluZztcclxuICAgICAgdGhpcy5sYWJlbEhpZGUgPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfbGFiZWxfaGlkZSkgYXMgYm9vbGVhbjtcclxuICAgICAgdGhpcy5oaWRlSGVscGVyQW5kRXJyb3JUZXh0ID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX2hpZGVfaGVscGVyX2FuZF9lcnJvcl90ZXh0KSBhcyBib29sZWFuO1xyXG4gICAgICB0aGlzLmRldGVjdFR5cGVDaGFuZ2UoKTtcclxuICAgICAgLy8gVmFsaWRhdGUgY29udHJvbFxyXG4gICAgICB0aGlzLm9uVmFsaWRhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiB1c2UgdG8gZGV0YWN0IHRoZSBjaGFuZ2UgaW4gdHlwZSBpZiBjaGFuZ2VzIGRvbmUgdGhpcyBtZXRob2QgaXMgdWVkIHRvIHJ1blxyXG4gICAqL1xyXG4gIGRldGVjdFR5cGVDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAncGFzc3dvcmQnKSB7XHJcbiAgICAgIHRoaXMudHlwZUludGVybmFsID0gXCJwYXNzd29yZFwiO1xyXG4gICAgICB0aGlzLnRyYWlsaW5nSWNvbkludGVybmFsID0gXCJ2aXNpYmlsaXR5X29mZlwiO1xyXG4gICAgICB0aGlzLmlzVHJhaWxpbmdJY29uQWxsd2VkQ2xpY2sgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50eXBlSW50ZXJuYWwgPSBcInRleHRcIjtcclxuICAgICAgdGhpcy50cmFpbGluZ0ljb25JbnRlcm5hbCA9IHRoaXMudHJhaWxpbmdJY29uO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2lkZS1pbnB1dFwiPlxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1URVhUIHwgUEFTU1dPUkQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ3RleHQnIHx8IHR5cGUgPT09ICdwYXNzd29yZCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHctdy1mdWxsIHR3LXJlbGF0aXZlXCIgW25nU3R5bGVdPVwieyB3aWR0aDogd2lkdGggfVwiIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtc2l6ZS14eHMnOiAoc2l6ZSA9PT0gJzJ4cycpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLXhzJzogKHNpemUgPT09ICd4cycpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLXNtJzogKHNpemUgPT09ICdzbScpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLW1kJzogKHNpemUgPT09ICdtZCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLWxnJzogKHNpemUgPT09ICdsZycpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1sZWFkaW5nLWljb24nOiBsZWFkaW5nSWNvbixcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtdHJhaWxpbmctaWNvbic6IHRyYWlsaW5nSWNvbkludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1jbGVhci1pbnB1dCc6IGNsZWFySW5wdXQsXHJcbiAgICAgICAgICAgICAgICAnY2lkZS1lbGVtZW50LWlucHV0LWxhYmVsLWZsb2F0aW5nJzogKGxhYmVsUGxhY2VtZW50ID09PSAnZmxvYXRpbmcnKSxcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtc3RhcnQnOiAobGFiZWxEaXIgPT09ICdzdGFydCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1lbmQnOiAobGFiZWxEaXIgPT09ICdlbmQnKSxcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtZml4ZWQnOiAobGFiZWxQbGFjZW1lbnQgPT09ICdmaXhlZCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1sZXNzJzogKCFsYWJlbCB8fCBsYWJlbEhpZGUpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zdHlsZS1vdXRsaW5lJzogKGZpbGwgPT09ICdvdXRsaW5lJyksXHJcbiAgICAgICAgICAgICAgICAnY2lkZS1lbGVtZW50LXN0eWxlLXNvbGlkJzogKGZpbGwgPT09ICdzb2xpZCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zdHlsZS1zdGFuZGFyZCc6IChmaWxsID09PSAnc3RhbmRhcmQnKSxcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICA8IS0tIGxhYmVsIC0tPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpZFwiIGNsYXNzPVwiY2lkZS1pbnB1dC1sYWJlbFwiICpuZ0lmPVwibGFiZWwgJiYgIWxhYmVsSGlkZVwiPnt7bGFiZWx9fTwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICA8IS0tIGFsbCBvbmUgbGluZSBlbGVtZXRzIHdoaWNoIGRvc2Ugbm90IGFmZmVjdCB3aXRoIGxhYmVsIGFuZCBlcnJvciB0ZXh0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lkZS1lbGVtZW50LWlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gTGVhZGluZyBJY29uIC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaWRlLWlucHV0LWxlYWRpbmctaWNvbi13cmFwcGVyXCIgKm5nSWY9XCJsZWFkaW5nSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2lkZS1pbnB1dC1sZWFkaW5nLWljb24gbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0dy10ZXh0LWNlbnRlclwiPnt7bGVhZGluZ0ljb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRyYWxpbmcgaWNvbiAtLT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgY2lkZS1pbnB1dC10cmFpbGluZy1pY29uIC10dy1ib3R0b20tMSB0dy1zZWxlY3Qtbm9uZSB0dy1yaWdodC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRyYWlsaW5nSWNvbkludGVybmFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHR3LXctOCB0dy10ZXh0LWNlbnRlciAhdHctdGV4dC0yeGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3R3LWN1cnNvci1wb2ludGVyJzogaXNUcmFpbGluZ0ljb25BbGx3ZWRDbGlja31cIiBbYXR0ci50YWJpbmRleF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0cmFpbGluZ0ljb25DbGljaygpXCIgKGtleXVwKT1cInRyYWlsaW5nSWNvbkNsaWNrKClcIj57e3RyYWlsaW5nSWNvbkludGVybmFsfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBDbGVhciAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaWRlLWlucHV0LWNsZWFyXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNsZWFySW5wdXQgJiYgbmdNb2RlbFwiIChjbGljayk9XCJDbGVhcklucHV0VmFsdWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lkZS1pbnB1dC1jbGVhci1pY29uIG1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5jbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbKChsYWJlbCAmJiBsYWJlbFBsYWNlbWVudCA9PT0gJ2ZpeGVkJykgPyAndHctcm91bmRlZC1lLW1kIHR3LXJvdW5kZWQtZXMtbWQnIDogJ3R3LXJvdW5kZWQtbWQgJyksICghbGVhZGluZ0ljb24gPyAndHctcGwtMScgOiAnJyksICh0cmFpbGluZ0ljb25JbnRlcm5hbCA/ICd0dy1wci04JzogJycpLCAoIXRyYWlsaW5nSWNvbkludGVybmFsID8gJ3R3LXByLTEnIDogJycpLCAoKHNpemUgPT09ICdtZCcpID8gJ3R3LWgtOCB0dy1wdC0wLjUgdHctcGItMCcgOiAoc2l6ZSA9PT0gJ3NtJyA/ICd0dy1oLTcnIDogJycpKSwgKGxhYmVsSGlkZSA/ICchdHctbXQtMCcgOiAnJyldXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5nTW9kZWxcIiBbdHlwZV09XCJ0eXBlSW50ZXJuYWxcIiAoaW5wdXQpPVwidXBEYXRlVmFsdWUoJGV2ZW50KVwiIChmb2N1cyk9XCJmb2N1c0NvbnRyb2woKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctbS0wIHR3LXctZnVsbCB0dy1iZy10cmFuc3BhcmVudCB0dy1vdmVyZmxvdy1oaWRkZW4gdHctYm9yZGVyLXNvbGlkIHR3LXAtMCBjaWRlLWlucHV0LWlucHV0IHR3LW91dGxpbmUtbm9uZVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIGVycm9yIHRleHQgLyBoZWxwZXIgdGV4dCAtLT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIoZXJyb3JUZXh0IHx8IGhlbHBlclRleHQgfHwgIWhlbHBlclRleHRDb2xsYXBzZSkgJiYgIWhpZGVIZWxwZXJBbmRFcnJvclRleHRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaWRlLWlucHV0LWhlbHAtZXJyb3ItdGV4dFwiPnt7XHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkXHJcbiAgICAgICAgICAgICAgICA/IGhlbHBlclRleHQgOiAoZXJyb3JUZXh0ID9cclxuICAgICAgICAgICAgICAgIChpc1RvdWNoZWQgPyBlcnJvclRleHQgOiBoZWxwZXJUZXh0KVxyXG4gICAgICAgICAgICAgICAgOiBoZWxwZXJUZXh0KX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBJbnB1dCB3aXRoIHRyYWxsaW5nIGljb24gLS0+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0dy1pbmxpbmUtYmxvY2sgdHctaC0xMiB0dy13LTY0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInR3LXctZnVsbGgtZnVsbCB0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LXRvcC0xLzMgdHctbXgtMiB0dy1iZy13aGl0ZSB0dy1weC0wLjUgdHctcHktMCB0dy10ZXh0LXNtIHR3LWxlYWRpbmctNCB0dy10ZXh0LWdyYXktNzAwXCI+TmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LWJvdHRvbS1weCB0dy1yaWdodC0wIC10dy16LTEwIHR3LXRleHQtZ3JheS00MDBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0dy13LTggdHctdGV4dC1jZW50ZXIgIXR3LXRleHQtMnhsXCI+IHBlcnNvbiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInR3LW0tMCB0dy1oLTggdHctdy1mdWxsIHR3LW92ZXJmbG93LWhpZGRlbiB0dy1yb3VuZGVkLW1kIHR3LWJvcmRlci0yIHR3LWJvcmRlci1zb2xpZCB0dy1ib3JkZXItZ3JheS0zMDAgdHctYmctdHJhbnNwYXJlbnQgdHctcC0wIHR3LXBiLTAuNSB0dy1wbC0xIHR3LXByLTggdHctdGV4dC1zbSB0dy10ZXh0LWdyYXktNjAwIHR3LW91dGxpbmUtbm9uZSBob3Zlcjp0dy1ib3JkZXItYmx1ZS00MDAgZm9jdXM6dHctYm9yZGVyLWJsdWUtNDAwIGZvY3VzOnR3LXRleHQtZ3JheS05NTBcIlxyXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJBbmt1c2ggQmh1cmVcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG5cclxuICAgIDwhLS0gSW5wdXQgd2l0aCBsZWFkaW5nIGljb24gLS0+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0dy1pbmxpbmUtYmxvY2sgdHctaC0xMiB0dy13LTY0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInR3LXctZnVsbGgtZnVsbCB0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LXRvcC0xLzMgdHctbXgtMiB0dy1iZy13aGl0ZSB0dy1weC0wLjUgdHctcHktMCB0dy10ZXh0LXNtIHR3LWxlYWRpbmctNCB0dy10ZXh0LWdyYXktNzAwXCI+TmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LWJvdHRvbS1weCB0dy1sZWZ0LTAgLXR3LXotMTAgdHctdGV4dC1ncmF5LTQwMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHR3LXctOCB0dy10ZXh0LWNlbnRlciAhdHctdGV4dC0yeGxcIj4gcGVyc29uIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctbS0wIHR3LWgtOCB0dy13LWZ1bGwgdHctb3ZlcmZsb3ctaGlkZGVuIHR3LXJvdW5kZWQtbWQgdHctYm9yZGVyLTIgdHctYm9yZGVyLXNvbGlkIHR3LWJvcmRlci1ncmF5LTMwMCB0dy1iZy10cmFuc3BhcmVudCB0dy1wLTAgdHctcGItMC41IHR3LXBsLTggdHctcHItMSB0dy10ZXh0LXNtIHR3LXRleHQtZ3JheS02MDAgdHctb3V0bGluZS1ub25lIGhvdmVyOnR3LWJvcmRlci1ibHVlLTQwMCBmb2N1czp0dy1ib3JkZXItYmx1ZS00MDAgZm9jdXM6dHctdGV4dC1ncmF5LTk1MFwiXHJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIkFua3VzaCBCaHVyZVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1DSEVDS0JPWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnY2hlY2tib3gnXCIgY2xhc3M9XCJ0dy1mbGV4XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNpZGUtY2hlY2tib3ggdHctcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGlucHV0IFtjaGVja2VkXT1cIm5nTW9kZWxcIiBbdmFsdWVdPVwibmdNb2RlbFwiIFtpZF09XCJpZFJhbmRvbVwiIFt0eXBlXT1cInR5cGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy1hYnNvbHV0ZSB0dy1sZWZ0LTAgdHctaW52aXNpYmxlXCIgKGNsaWNrKT1cInVwZGF0ZVZhbHVlQ2hlY2tCb3goIW5nTW9kZWwpOyBmb2N1c0NvbnRyb2woKVwiXHJcbiAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNpZGUtY2hlY2tib3gtbGFiZWwgdHctY3Vyc29yLXBvaW50ZXJcIiBbZm9yXT1cImlkUmFuZG9tXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LWJvcmRlci0yIHR3LWJvcmRlci1zb2xpZCB0dy1yZWxhdGl2ZSB0dy1yb3VuZGVkLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEycHhcIiBoZWlnaHQ9XCIxMHB4XCIgY2xhc3M9XCJ0dy1hYnNvbHV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjc2Rmd2lvcmZrbGFzZmpqYWxmandlcndyXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LXRleHQtc20gdHctcGwtMiB0dy1sZWFkaW5nLVsxOHB4XSB0dy1zZWxlY3Qtbm9uZSB0dy1jdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbGFiZWxIaWRlXCI+e3tsYWJlbH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwidHctYWJzb2x1dGUgdHctaC0wIHR3LXctMCB0dy1zZWxlY3Qtbm9uZSB0dy1wb2ludGVyLWV2ZW50cy1ub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEVsZW1lbnQgaGlkZGVuIGFuZCBpdHMgeHBhdGggaXMgdXNlZCB0byBkaXNwbGF5IGluc2lkZSBTVkcgLS0+XHJcbiAgICAgICAgICAgICAgICA8c3ltYm9sIGlkPVwic2Rmd2lvcmZrbGFzZmpqYWxmandlcndyXCIgdmlld2JveD1cIjAgMCAxMiAxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIxLjUgNiA0LjUgOSAxMC41IDFcIj48L3BvbHlsaW5lPlxyXG4gICAgICAgICAgICAgICAgPC9zeW1ib2w+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU0VMRUNULS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnc2VsZWN0J1wiPnNhc1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctYWJzb2x1dGVcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygb3B0aW9uOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy13LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW19fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
467
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWVsZW1lbnQvc3JjL2xpYi9lbGVtZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQXlDLFdBQVcsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQStCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7O0FBeUNyRixNQUFNLE9BQU8sa0JBQWtCO0lBTTdCO1FBSkEsa0RBQWtEO1FBQzNDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFPckQsZ0VBQWdFO1FBRWhFOzs7V0FHRztRQUNNLFNBQUksR0FBcUIsU0FBUyxDQUFDO1FBQzVDLDhEQUE4RDtRQUNyRCxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQzVCLDBDQUEwQztRQUNqQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQ3BDLG1EQUFtRDtRQUMxQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ25DLGlFQUFpRTtRQUN4RCxlQUFVLEdBQVksS0FBSyxDQUFD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QWE7NEJBQ3RCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDO3lCQUNsRDt3QkFDRCxjQUFjO3FCQUNmO3dEQW9CUSxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxFQUFFO3NCQUFWLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQVlHLElBQUk7c0JBQVosS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBmb3J3YXJkUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENhcGl0YWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGlwZXMvY2FwaXRhbGl6ZS9jYXBpdGFsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBDaWRlRWxlbWVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2VydmljZXMvZWxlbWVudHMvZWxlbWVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IGF1dG9jYXBpdGFsaXplVHlwZSwgYXV0b2NvbXBsZXRlVHlwZSwgY29udHJvbFR5cGUsIGVsZW1lbnRTdHlsZVR5cGUsIGlucHV0VHlwZSwgbGFiZWxEaXJUeXBlLCBsYWJlbFBsYWNlbWVudFR5cGUsIHRoZW1lU2l6ZSB9IGZyb20gJ2Nsb3VkLWlkZS1sbXMtbW9kZWwnO1xyXG5cclxuLyoqIEBkZXNjcmlwdGlvbiB0eXBlIHRvIHJlZ2lzdGVyIGVycm9yIHJlbGF0ZWQgdG8gY29udHJvbCAqL1xyXG5leHBvcnQgdHlwZSBFcnJvclZhbGlkYXRpb25TdGF0dXMgPSB7XHJcbiAgbWF4bGVuZ3RoPzogc3RyaW5nLFxyXG4gIG1pbmxlbmd0aD86IHN0cmluZyxcclxuICByZXF1aXJlZD86IHN0cmluZyxcclxufVxyXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uU3RhdHVzID0ge1xyXG4gIHZhbGlkYXRpb246IEVycm9yVmFsaWRhdGlvblN0YXR1cyxcclxuICBzdGF0dXM6IGJvb2xlYW5cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjaWRlLWVsZS1pbnB1dCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuc2NzcycsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgLy8gZGlyZWN0aXZlc1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgLy8gZm9yIG5nTW9kZWxcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENpZGVJbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiB0byBhcHBseSB2YWxpZGF0aW9ucyAgKi9cclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENpZGVJbnB1dENvbXBvbmVudCksXHJcbiAgICB9LFxyXG4gICAgQ2FwaXRhbGl6ZVBpcGVcclxuICBdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ2lkZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25DaGFuZ2VzLCBPbkluaXQge1xyXG5cclxuICAvLyBNb2Rlcm4gQW5ndWxhciB2MjAgZGVwZW5kZW5jeSBpbmplY3Rpb24gcGF0dGVyblxyXG4gIHB1YmxpYyBjYXBpdGFsaXplUGlwZSA9IGluamVjdChDYXBpdGFsaXplUGlwZSk7XHJcbiAgcHJpdmF0ZSBlbGVtZW50U2VydmljZSA9IGluamVjdChDaWRlRWxlbWVudHNTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyBNb2Rlcm4gQW5ndWxhciB2MjAgcGF0dGVybjogVXNlIGNvbnN0cnVjdG9yIGZvciBpbml0aWFsaXphdGlvbiBvbmx5XHJcbiAgICAvLyBWYWxpZGF0ZSBjb250cm9sXHJcbiAgICB0aGlzLm9uVmFsaWRhdGUoKTtcclxuICB9XHJcbiAgLyo9PT09PT09U2V0IGN1c3RvbSBjb250cm9scyBpbnB1dHMgdG8gc2V0IGNvbXBvbmVudHM9PT09PT09PT0qL1xyXG5cclxuICAvKiogXHJcbiAgICogQGRlc2NyaXB0aW9uIHRvIHNlIHRoZSB2aXN1YWwgb2YgY29udHJvbCBsaWtlIHNvbGlkIGNvbnRyb2wgb2ZmZXJkIGJ5IG1hdGVyaWFsIGRlc2lnbiBvciBvdXRsaW5lIHdpdGggYSBib3JkZXJcclxuICAgKiBAb3B0aW9ucyBzb2xpZCB8IG91dGxpbmUgfCBzdGFuZGFyZFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZpbGw6IGVsZW1lbnRTdHlsZVR5cGUgPSAnb3V0bGluZSc7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBMYWJsZSBvZiBjb250cm9sIChUaXRsZSksIExpa2UgTmFtZSwgRW1haWwgKi9cclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gXCJcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIHRvIGhpZGUgYW5kIHNob3cgbGFiZWwgKi9cclxuICBASW5wdXQoKSBsYWJlbEhpZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogQGRlc2NyaXB0aW9uIGlzIGNvbnRyb2wgRWRpdGFibGUgb3IgRGlzYWJsZWQgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gSXMgQ2xlYXIgSW5wdXQgQ3Jvc3MgYnV0dG9uIGlzIHZpc2libGUgb3Igbm90ICovXHJcbiAgQElucHV0KCkgY2xlYXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gUG9zaXRpb24gb2YgTGFiZWwgJ2Zsb2F0aW5nJyB8ICdmaXhlZCcgKi9cclxuICBASW5wdXQoKSBsYWJlbFBsYWNlbWVudDogbGFiZWxQbGFjZW1lbnRUeXBlID0gXCJmaXhlZFwiO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gTGFibGUgZGlyZWN0aW9uIGZyb20gc3RhcnQgb2YgY29udHJsIG9yIGVuZCBvZiBjb250cm9sICovXHJcbiAgQElucHV0KCkgbGFiZWxEaXI6IGxhYmVsRGlyVHlwZSA9IFwic3RhcnRcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIFBsYWNlIGhvbGRlciBmb3IgY29udHJvbCB0byBkaXNwbGF5IGlmIHRoZXJlIGlzIG5vIHZhbHVlICovXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpdCBpcyB0byBzZXQgbGVhZGluZyBpY29uLCBhdCB0aGUgc3RhcnQgb2YgY29udHJvbCAgKi9cclxuICBASW5wdXQoKSBsZWFkaW5nSWNvbjogc3RyaW5nID0gXCJcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIGl0IGlzIHRvIHNldCB0cmFpbGluZyBpY29uLCBhdCB0aGUgZW5kIG9mIGNvbnRyb2wsIGZvciBwYXNzd29yZCB0eXBlIGNvbnRyb2wgZXllIGlzIHRoZSB0cmFpbGluZyBpY29uICAqL1xyXG4gIEBJbnB1dCgpIHRyYWlsaW5nSWNvbjogc3RyaW5nID0gXCJcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIHRvIGRpc3BsYXkgYmVsb3cgdGhlIGNvbnRyb2wgZm9yIHN1Z2dlc3Rpb24sIGlmIHRoZXJlIGlzIGFueSBlcnJvciB0aGVuIGVycm9yIHdpbGwgYncgdGhlIGZpcnN0IHRvIHNob2UgaW4gcGxhY2Ugb2YgaGVscCB0ZXh0ICovXHJcbiAgQElucHV0KCkgaGVscGVyVGV4dDogc3RyaW5nID0gXCJcIjtcclxuICAvKiogQGRlc2NyaXB0aW9uIGRlZmF1bHQgdHJ1ZSB0byBjb2xsYXBzZSB3aGVuIHRoZXJlIGlzIG5vIGhlbHAgdGV4dCBvciBlcnJvciB0ZXh0LCBpZiBmYWxzZSB0aGVuIGVsZW1lbnQgYXJlYSBpbiBET00gd2lsbCBiZSByZXNlcnZlZCBuZXZlciBkZXRyb3kgICovXHJcbiAgQElucHV0KCkgaGVscGVyVGV4dENvbGxhcHNlOiBib29sZWFuID0gdHJ1ZTtcclxuICAvKiogQGRlc2NyaXB0aW9uIHNob3cgYW5kIGhpZGUgaGVscGVyIHRleHQgaXRzIGZvcmVjZnVsbCAqL1xyXG4gIEBJbnB1dCgpIGhpZGVIZWxwZXJBbmRFcnJvclRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogQGRlc2NyaXB0aW9uIGlmIGZvdW5kIGFueSBlcnJvciBpbiBjb250cm9sIHRoZSBlcnJvciB0aGV4dCB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSBlcnJvciBtZXNzYWdlLCBpZiB0aGVyZSBpcyBoZWxwIHRleHQgc3RpbGwgZXJyb3IgdGV4dCBpcyBoYXZpbmcgaGlnaGVyIHByaW9yaXR5IHRoZW4gaGVscHRleHQgKi9cclxuICBASW5wdXQoKSBlcnJvclRleHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBtYXhsZW5ndGggZm9yIGNvbnRyb2wgKi9cclxuICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlciA9IDA7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBtaW5sZW5ndGggZm9yIGNvbnRyb2wgKi9cclxuICBASW5wdXQoKSBtaW5sZW5ndGg6IG51bWJlciA9IDA7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpcyBjb250cm9sIGlzIHJlcXVpcmVkIG9yIG5vdCBpbnB1dCB0eXBlIGlzIHRydWUgfCBmYWxzZSAqL1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBBdXRvIGNhcGF0YWxpemF0aW9uIGZvciB0aGUgdmFsdWUgYW5kIGFwcGxpY2FibGUgdG8gd29yZCBvciB0byBjb21wbGV0ZSBzZW50YW5jZSAqL1xyXG4gIEBJbnB1dCgpIGF1dG9jYXBpdGFsaXplOiBhdXRvY2FwaXRhbGl6ZVR5cGUgPSBcIm9mZlwiO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gYXV0byBjb21wbGV0ZSB0eXBlIHRvIGhlbHAgcmVhZGVyIHdoYXQgaXMgdGhlIHR5cGUgb2YgdmFsdWUgKi9cclxuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IGF1dG9jb21wbGV0ZVR5cGUgPSBcIm9mZlwiO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gdHlwZSBvZiBjb250cm9sICovXHJcbiAgQElucHV0KCkgdHlwZTogY29udHJvbFR5cGUgPSAndGV4dCc7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3aWR0aCBvZiBjb250cm9sLCBkZWZhdWx0IHdpZHRoIGlzIDEwMCUgKi9cclxuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gdW5pcSBpZCBvZiBjb250cm9sLCB1c2VkIHRvIGRpZmZlcmVuY2lhdCB0aGUgdmFsdWUgYWxzbyBwcmV2ZW50IHZhbHVlIHNob3VsZCBub3QgZWZmZWN0IGFub3RoZXIgdmFsdWVzICovXHJcbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9ICcnO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gdG8gZ2V0IGlucHV0IHZhbHVlIHVzaW5nIG9uZSB3YXkgYmluZGluZyBsaWtlOiBbbmdNb2RlbF0gb3IgYnkgdHdvIHdheSBiaW5kaW5nIFsobmdNb2RlbCldICovXHJcbiAgQElucHV0KCkgbmdNb2RlbDogaW5wdXRUeXBlID0gJyc7XHJcbiAgQElucHV0KCkgb3B0aW9uOiBzdHJpbmdbXSA9IFtcImFua3N1aFwiLCBcImJodXJlXCJdO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gbWluIHZhbHVlIGZvciBudW1iZXIgdHlwZSBjb250cm9sICovXHJcbiAgQElucHV0KCkgbWluOiBudW1iZXIgPSAwO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gbWF4IHZhbHVlIGZvciBudW1iZXIgdHlwZSBjb250cm9sICovXHJcbiAgQElucHV0KCkgbWF4OiBudW1iZXIgPSAwO1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIEhvbGRzIHRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQgbGlrZSBTbWFsbCwgRXh0cmEgc21hbGwsIExhcmdlXHJcbiAgICogYnkgRGVmYXVsdCBpdCB0YWtlcyBzbWFsbCBzaXplXHJcbiAgICogb3IgdGhlIHNpemUgc2V0IGJ5IHRoZSBwcm9qZWN0IHNldHVwIHNlcnZpY2VcclxuICAgKiBvciBpdCB3aWxsIGJlc2V0IGZvciBpbmRpdmlkdWFsIGNvbXBvbmVudFxyXG4gICAqIFxyXG4gICAqIFNpemUgQXBwbGVkIFxyXG4gICAqIENvbXBvbmVudCBsZXZlbCB0aGVuIHNldHVwIHNlcnZpY2UgdGhlbiBmaW5hbGx5IGRlZmF1bHQgbWRcclxuICAgKiAgT3B0aW9uczogXCIyeHNcIiB8IFwiXCJ4c1wiIHwgXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiIHwgXCJ4bFwiIHwgXCJ4eGxcIiBcclxuICAgKi9cclxuICBASW5wdXQoKSBzaXplOiB0aGVtZVNpemUgPSBcInNtXCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB0byBzZXQgcmV0dXJuIHZhbHVlIHVzaW5nIG9uZSB3YXkgYmluZGluZyBsaWtlOiAobmdNb2RlbENoYW5nZXMpIG9yIGJ5IHR3byB3YXkgYmluZGluZyBbKG5nTW9kZWwpXSAqL1xyXG4gIEBPdXRwdXQoKSBuZ01vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8aW5wdXRUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXI8aW5wdXRUeXBlPigpO1xyXG5cclxuICAvKlxyXG4gICAgICBpbnRlcm5hbCBQcm9wZXJ0aWVzIGZvciBpbnB1dFxyXG4gICovXHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpcyB2YWxlIG5lZWQgdG8gcmVhZCBmcm9tIG5nTW9kZWwgb3IgZnJvbSB2YWx1ZShuZWVkIHRvIGltcGxlbWVudCksIGl0IGlzIGRldGVjdGVkIGFuZCBtYWlsZCBmYWxzIG9uIHZhbHVlIGNobmFnZXMgKi9cclxuICBwdWJsaWMgaXNOZ01vZGVsOiBib29sZWFuID0gdGhpcy5uZ01vZGVsID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gdGhpcyBpcyB0byBzZXQgY29udHJvbCB2YWx1ZSBpcyB2YWxpZCBvciBub3QsIHNldCBieSB1cyBpbnNpZGUgdmFsaWRhdGUgY2FsbGJjayBtZXRob2QgY2FsbGVkIGJ5IGFuZ3VsYXIgICovXHJcbiAgcHVibGljIGlzVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gd2hlbiBjb250cm9sIGlzIHRvdWNoZWQgdGhlbiB0aGUgd2lsbCBtYWlkIHRydWUgYnkgdGhlIHVzIHRvIGNoZWNrIGl0IGlzIHRvdWNoZWQgb3Igbm90LCB3aGVuIHdlIHdpbGwgc2V0IHRoaXMgdHJ1ZSB3ZSB3aWxsIGNhbGwgdGhlIG9uVG91Y2hlZCBjYWxsYmFjayBtZXRob2Qgb2YgYW5ndWFsciB0byBpbmZvcm0gYW5ndWxhciB0aGF0IHNvbXRoaXMgaXMgY2hhbmdlZCBhbmQgY29udHJvbCBpcyB0b3VjaGVkICovXHJcbiAgcHVibGljIGlzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBAZGVzY3JpcHRpb24gd2Ugd2lsbCB0YWtlIHR5cGUgb2YgY29udHJvbCBpbiB0eXBlIGJ1dCBpcyBtYXkgYmUgbm90IGV4YWN0bHkgd2hpY2ggaW5wdXQncyB0eXBlIHNvIHdlIG5lZWQgdG8gZ2V0IHR5cGUgYW5kIHNldCBhY3R1bGUgdHlwZSB0byBvdXIgaW5wdXQsIGFsc28gd2hlbiB0eXBlIGlzIHNldCBwYXNzd29yZCBidXQgaW4gY2Fsc2UgdmlldyBpbiB0ZXh0dCB0aGVuIGludXV0IHR5cGUgbmVlZCB0byBjaGFuZ2UgdG8gdGV4dCAqL1xyXG4gIHB1YmxpYyB0eXBlSW50ZXJuYWw6IGNvbnRyb2xUeXBlID0gXCJ0ZXh0XCI7XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBpZiB0cmFsaW5nIGlzIHNldCB0aGUgaXQgaXMgYXNzaWduZWQgYnkgaXQsIGJ1dCBzb21lIGNhc2UgdGFybGluZyBpY29uIG5vdCBhcyBpdCBpcyBzZXQgbmVlZCB0cm8gYmUgY2hhbmdlZCBhdCBydW50aW1lLCBsaWtlIHBhc3N3b3JkIHZpc2liaWxpdHkgaGlkZSBhbmQgc2hvdyAqL1xyXG4gIHB1YmxpYyB0cmFpbGluZ0ljb25JbnRlcm5hbDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLyogXHJcbiAgICAgIFByb3BlcnRpZXMgY29ubmVjdGVkIHdpdGggdHJhaWxpbmdJY29uSW50ZXJuYWwgXHJcbiAgKi9cclxuICBwdWJsaWMgaXNUcmFpbGluZ0ljb25BbGx3ZWRDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBQcm9wZXJ0aWVzIGNvbm5lY3RlZCB3aXRoIGlkXHJcbiAgcHVibGljIGlkUmFuZG9tOiBzdHJpbmcgPSB0aGlzLnJhbmRvbVN0cmluZygpO1xyXG5cclxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09TUVUSE9EUyBGT1IgQ1VTVE9NIEZPUk0gQ09NUE9ORU5UPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAvLyBGT1IgQU5HVUxBUiBDQUxMRUQgQlkgVUlcclxuXHJcbiAgLyoqIFxyXG4gICAqIEBkZXNjcmlwdGlvbiBGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIEhUTUwgQ2huYWdlIHRvIHRlbGwgQW5ndWxhciBzb210aGluZyBpcyBjaGFuZ2VkLlxyXG4gICAqIEBmaWVsZCB2YWx1ZSA6IGlucHV0VHlwZVxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBpbnB1dFR5cGUpID0+IHsgfTtcclxuXHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGlucHV0IGlzIHRvdWNoZWQgKGNsY2lrZWQpIHRvIHRlbGwgQW5ndWxhciBzb210aGluZyBpcyBjaGFuZ2VkLiAqL1xyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcclxuXHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGlucHV0IGlzIG5lZWQgdG8gVmFsaWRhdGUgdG8gdGVsbCBBbmd1bGFyIHNvbXRoaW5nIGlzIGNoYW5nZWQgKGluIGNhc2Ugb2Ygc29tZSBpbnB1dCBkaXBlbmRlbnQgdmFsaWRhdGlvbikuICovXHJcbiAgb25WYWxpZGF0ZSA9ICgpID0+IHsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogTWV0aG9kIHRoYXQgcGVyZm9ybXMgc3luY2hyb25vdXMgdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBjb250cm9sLlxyXG4gICAqIEV4aWN1dGVkIGJ5IEFuZ3VsYXJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBjb250cm9sIFRoZSBjb250cm9sIHRvIHZhbGlkYXRlIGFnYWluc3QuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBBIG1hcCBvZiB2YWxpZGF0aW9uIGVycm9ycyBpZiB2YWxpZGF0aW9uIGZhaWxzLFxyXG4gICAqIG90aGVyd2lzZSBudWxsLlxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uX2Vycm9yID0gdGhpcy5pc0NvbnRyb2xWYWxpZCh0aGlzLm5nTW9kZWwpO1xyXG4gICAgaWYgKHZhbGlkYXRpb25fZXJyb3I/LnN0YXR1cykge1xyXG4gICAgICByZXR1cm4gdmFsaWRhdGlvbl9lcnJvcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHZhbGlkYXRvciBpbnB1dHMgY2hhbmdlLlxyXG4gICAqIEV4aWN1dGVkIGJ5IEFuZ3VsYXJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmbiBUaGUgY2FsbGJhY2sgZnVuY3Rpb25cclxuICAgKi9cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPyhmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblZhbGlkYXRlID0gZm47XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIHdoZW4gZm9ybSBjb250cm9sIGNoYW5nZSBmcm9tIG1vZGVsIHNpZGUgdGhpcyBtZXRob2QgaXMgaW1wbGVtZW50ZWQgICovXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogaW5wdXRUeXBlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNOZ01vZGVsKSB7XHJcbiAgICAgIGNvbnN0IG5nTW9kZWwgPSB0aGlzLmF1dG9DYXBpdGFsaXplQnlPcHRpb24odmFsdWUsIHRoaXMudHlwZSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCd3cml0ZVZhbHVlJywgdGhpcy5uZ01vZGVsLCBuZ01vZGVsKTtcclxuICAgICAgdGhpcy5uZ01vZGVsID0gbmdNb2RlbDtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBBbGxvd3MgQW5ndWxhciB0byByZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgbW9kZWwgY2hhbmdlcy4gKi9cclxuICAvLyBTYXZlIHRoZSBmdW5jdGlvbiBhcyBhIHByb3BlcnR5IHRvIGNhbGwgbGF0ZXIgaGVyZS5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGlucHV0VHlwZSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICAvKiogQGRlc2NyaXB0aW9uIEFsbG93cyBBbmd1bGFyIHRvIHJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBpbnB1dCBoYXMgYmVlbiB0b3VjaGVkLiAqL1xyXG4gIC8vIFNhdmUgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvcGVydHkgdG8gY2FsbCBsYXRlciBoZXJlLlxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuICAvKlxyXG4gICAgTWV0aG9kcyBmb3IgaW5wdXRcclxuKi9cclxuXHJcbiAgLyoqIEBkZXNjcmlwdGlvbiBEZXRlY3Qgd2V0aGVyIGlucHV0IHByb3BlcnRpcmVzIGNhbmdlZCBvciBub3QgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcz8uWyd2YWx1ZSddKSB7XHJcbiAgICAgIHRoaXMuaXNOZ01vZGVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5uZ01vZGVsID0gdGhpcy5wcm9jZXNzVmFsdWUodGhpcy5uZ01vZGVsLCB0aGlzLnR5cGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNWYWxpZFZhbHVlQW5kVHlwZSh0aGlzLm5nTW9kZWwsIHRoaXMudHlwZSkgfHwgdGhpcy5pc1RvdWNoZWQpIHtcclxuICAgICAgdGhpcy5pc0NvbnRyb2xWYWxpZCh0aGlzLm5nTW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERpdGVjdCB0eXBlIGNoYW5nZVxyXG4gICAgaWYgKGNoYW5nZXM/LlsndHlwZSddKSB7XHJcbiAgICAgIHRoaXMuZGV0ZWN0VHlwZUNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmdldENvbnRyb2xEYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIGN1c3RvbSBtZXRob2QgcnVuIHdoZW4gSFRNTCBjaGFuZ2VzLCB3ZSBjYWxsIG1ldGhvZCByZWdpc3RlcmQgYnkgYW5ndWxhciB0byBkZXRlY3QgY2hhbmdlICovXHJcbiAgdXBEYXRlVmFsdWUodmFsdWU6IHsgdGFyZ2V0OiB7IHZhbHVlOiBpbnB1dFR5cGUgfSB9IHwgRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IHZhbHVlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgeyB2YWx1ZTogaW5wdXRUeXBlIH07XHJcbiAgICB0aGlzLmlzQ29udHJvbFZhbGlkKHRhcmdldD8udmFsdWUpO1xyXG4gICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdGhpcy5wcm9jZXNzVmFsdWUodGFyZ2V0Py52YWx1ZSwgdGhpcy50eXBlKTtcclxuICAgIHRoaXMubmdNb2RlbCA9IHVwZGF0ZWRWYWx1ZTtcclxuICAgIHRoaXMubmdNb2RlbENoYW5nZT8uZW1pdCh1cGRhdGVkVmFsdWUpO1xyXG4gICAgLy8gY29uc29sZS5sb2codGFyZ2V0KVxyXG4gICAgdGhpcy5vbkNoYW5nZSh1cGRhdGVkVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIG1ldGhvZCBhcHBsaWNhYmxlIGluIGNhc2Ugb2YgY29udHJvbCB0eXBlIGNoZWNrYm94XHJcbiAgICogXHJcbiAgICogQHBhcmFtIHZhbHVlIGJvb2xlYW4gfCBzdHJpbmdcclxuICAgKi9cclxuICB1cGRhdGVWYWx1ZUNoZWNrQm94KHZhbHVlOiBzdHJpbmcgfCBib29sZWFuKSB7XHJcbiAgICAvLyBDb252ZXJ0IHN0cmluZyB0byBib29sZWFuXHJcbiAgICB0aGlzLm5nTW9kZWwgPSAhdGhpcy5uZ01vZGVsO1xyXG4gICAgdmFsdWUgPSAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpID8gdmFsdWUgOiAodmFsdWUgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICB0aGlzLm5nTW9kZWxDaGFuZ2U/LmVtaXQodmFsdWUpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIGNsZWFyIHRoZSB2YWx1ZSAqL1xyXG4gIENsZWFySW5wdXRWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT0gXCJ0ZXh0XCIpIHtcclxuICAgICAgdGhpcy51cERhdGVWYWx1ZSh7IHRhcmdldDogeyB2YWx1ZTogXCJcIiB9IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBkZXNjcmlwdGlvbiB3aGVuIEhUTUwgaXMgZm9jdWVzZCAqL1xyXG4gIGZvY3VzQ29udHJvbCgpIHtcclxuICAgIHRoaXMuaXNUb3VjaGVkID0gdHJ1ZTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gSWYgY29udHJvbCB2YWx1ZSBuZWVkIHRvIGJlIHByb2Nlc3NlZCwgbGlrZSBVUFBFUkNBU0UgKi9cclxuICBwcm9jZXNzVmFsdWUodmFsdWU6IGlucHV0VHlwZSwgdHlwZTogY29udHJvbFR5cGUpIHtcclxuICAgIHZhbHVlID0gdGhpcy5hdXRvQ2FwaXRhbGl6ZUJ5T3B0aW9uKHZhbHVlLCB0eXBlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gZm9yIGNhcGl0YWxpemF0aW9uICovXHJcbiAgYXV0b0NhcGl0YWxpemVCeU9wdGlvbih2YWx1ZTogaW5wdXRUeXBlLCB0eXBlOiBjb250cm9sVHlwZSkge1xyXG4gICAgaWYgKHR5cGUgPT0gJ3RleHQnKSB7XHJcbiAgICAgIGlmICh0aGlzLmF1dG9jYXBpdGFsaXplID09IFwib25cIikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcGl0YWxpemVQaXBlPy50cmFuc2Zvcm0odmFsdWUgYXMgc3RyaW5nLCAnYWxsVXBwZXJDYXNlJyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYXV0b2NhcGl0YWxpemUgPT0gXCJ3b3Jkc1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwaXRhbGl6ZVBpcGU/LnRyYW5zZm9ybSh2YWx1ZSBhcyBzdHJpbmcsICd0aXRsZUNhc2UnKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5hdXRvY2FwaXRhbGl6ZSA9PSBcInNlbnRlbmNlc1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwaXRhbGl6ZVBpcGU/LnRyYW5zZm9ybSh2YWx1ZSBhcyBzdHJpbmcsIFwic2VudGVuY2VDYXNlXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEl0IGlzIHVzZWQgdG8gcmV0dXJuIHRoZSB2YWx1ZSBpcyB2YWxpZCBvciBub3QgKi9cclxuICBpc1ZhbGlkVmFsdWVBbmRUeXBlKHZhbHVlOiBpbnB1dFR5cGUsIHR5cGU6IGNvbnRyb2xUeXBlKSB7XHJcbiAgICBpZiAodHlwZSA9PSAndGV4dCcpIHtcclxuICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAZGVzY3JpcHRpb24gdG8gY2hlY2sgY29udHJvbCBpcyB2YWxpZCBvciBub3QgKi9cclxuICBpc0NvbnRyb2xWYWxpZCh2YWx1ZTogaW5wdXRUeXBlKTogVmFsaWRhdGlvblN0YXR1cyB7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uX3N0YXR1czogVmFsaWRhdGlvblN0YXR1cyA9IHtcclxuICAgICAgdmFsaWRhdGlvbjoge30sXHJcbiAgICAgIHN0YXR1czogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnN0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgdmFsaWRhdGlvbl9zdGF0dXMudmFsaWRhdGlvbi5yZXF1aXJlZCA9IGByZXF1aXJlZCFgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudHlwZSA9PSAndGV4dCcpIHtcclxuICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPiB0aGlzLm1heGxlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uX3N0YXR1cy5zdGF0dXMgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uX3N0YXR1cy52YWxpZGF0aW9uLm1heGxlbmd0aCA9IGBtYXhpbXVtIGxlbmd0aCBpcyAke3RoaXMubWF4bGVuZ3RofSFgO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5taW5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAodmFsdWU/Lmxlbmd0aCA8IHRoaXMubWlubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnN0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnZhbGlkYXRpb24ubWlubGVuZ3RoID0gYG1pbmltdW0gbGVuZ3RoIGlzICR7dGhpcy5taW5sZW5ndGh9IWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbGlkYXRpb25fc3RhdHVzLnN0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgdmFsaWRhdGlvbl9zdGF0dXMudmFsaWRhdGlvbi5yZXF1aXJlZCA9IGByZXF1aXJlZCFgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzVmFsaWQgPSAhdmFsaWRhdGlvbl9zdGF0dXMuc3RhdHVzO1xyXG4gICAgdGhpcy5lcnJvclRleHQgPSBPYmplY3QudmFsdWVzKHZhbGlkYXRpb25fc3RhdHVzLnZhbGlkYXRpb24pLmF0KDApIHx8ICcnXHJcbiAgICByZXR1cm4gdmFsaWRhdGlvbl9zdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIEFsbG93cyBBbmd1bGFyIHRvIGRpc2FibGUgdGhlIGlucHV0LiAqL1xyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlc2NyaXB0aW9uIE1ldGhvZCBmb3IgdHJhaWxpbmcgSWNvbiBDbGljayAqL1xyXG4gIHRyYWlsaW5nSWNvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xyXG4gICAgICBpZiAodGhpcy50eXBlSW50ZXJuYWwgPT09ICdwYXNzd29yZCcpIHtcclxuICAgICAgICB0aGlzLnR5cGVJbnRlcm5hbCA9ICd0ZXh0JztcclxuICAgICAgICB0aGlzLnRyYWlsaW5nSWNvbkludGVybmFsID0gJ3Zpc2liaWxpdHknO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHlwZUludGVybmFsID0gJ3Bhc3N3b3JkJztcclxuICAgICAgICB0aGlzLnRyYWlsaW5nSWNvbkludGVybmFsID0gJ3Zpc2liaWxpdHlfb2ZmJztcclxuICAgICAgfVxyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLnR5cGVJbnRlcm5hbCA9IHRoaXMudHlwZTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2QgdG8gZ2VuZXJhdGUgUmFuZG9tIFN0cmluZ1xyXG4gICAqIEBwYXJhbSBzZXR1cFByYXJhbWV0ZXIgeyBsZW5naHQ6IG51bWJlciwgcHJlZml4OiBzdHJpbmcgfVxyXG4gICAqIGRlZmF1bHQgbGVuZ2h0IGlzIDEwLCBwcmVmb3ggaXMgXCJcIlxyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xyXG4gICAqL1xyXG4gIHJhbmRvbVN0cmluZyhzZXR1cFByYXJhbWV0ZXI6IHsgbGVuZ2h0OiBudW1iZXIsIHByZWZpeDogc3RyaW5nIH0gPSB7IGxlbmdodDogMTAsIHByZWZpeDogXCJcIiB9KTogc3RyaW5nIHtcclxuICAgIC8vdmFyaWFibGUgY29uc2lzdGluZyBhbHBoYWJldHMgaW4gc21hbGwgYW5kIGNhcGl0YWwgbGV0dGVyICBcclxuICAgIGNvbnN0IGNoYXJhY3RlcnMgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFRaYWJjZGVmZ2hpa2xtbm9wcXJzdHV2d3h5elwiO1xyXG4gICAgLy9sb29wIHRvIHNlbGVjdCBhIG5ldyBjaGFyYWN0ZXIgaW4gZWFjaCBpdGVyYXRpb24gIFxyXG4gICAgbGV0IHJhbmRvbV9zdHJpbmcgPSBzZXR1cFByYXJhbWV0ZXI/LnByZWZpeCB8fCBcIlwiO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR1cFByYXJhbWV0ZXI/LmxlbmdodDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHJudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICAgIHJhbmRvbV9zdHJpbmcgKz0gY2hhcmFjdGVycy5zdWJzdHJpbmcocm51bSwgcm51bSArIDEpO1xyXG4gICAgfVxyXG4gICAgLy9yZXR1cm4gdGhlIGdlbmVyYXRlZCBzdHJpbmcgIFxyXG4gICAgcmV0dXJuIHJhbmRvbV9zdHJpbmc7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRDb250cm9sRGF0YSgpIHtcclxuICAgIGNvbnN0IGNpZGVfZWxlbWVudF9kYXRhID0gYXdhaXQgdGhpcy5lbGVtZW50U2VydmljZT8uZ2V0RWxlbWVudERhdGEoeyBzeXBlX2tleTogdGhpcy5pZCB9KTtcclxuICAgIGlmIChjaWRlX2VsZW1lbnRfZGF0YSkge1xyXG4gICAgICB0aGlzLmxhYmVsID0gY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfbGFiZWwgYXMgc3RyaW5nO1xyXG4gICAgICB0aGlzLmxhYmVsUGxhY2VtZW50ID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX2xhYmVsX3BsYWNlbWVudCB8fCAnZmxvYXRpbmcnKSBhcyBsYWJlbFBsYWNlbWVudFR5cGU7XHJcbiAgICAgIHRoaXMudHlwZSA9IChjaWRlX2VsZW1lbnRfZGF0YT8uc3lwZV90eXBlIHx8ICd0ZXh0JykgYXMgY29udHJvbFR5cGU7XHJcbiAgICAgIHRoaXMucmVxdWlyZWQgPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfcmVxdWlyZWQgfHwgZmFsc2UpIGFzIGJvb2xlYW47XHJcbiAgICAgIHRoaXMuc2l6ZSA9IChjaWRlX2VsZW1lbnRfZGF0YT8uc3lwZV9zaXplIHx8ICdtZCcpIGFzIHRoZW1lU2l6ZTtcclxuICAgICAgdGhpcy5oZWxwZXJUZXh0Q29sbGFwc2UgPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfaGVscGVyX3RleHRfY29sbGFwc2UgfHwgZmFsc2UpIGFzIGJvb2xlYW47XHJcbiAgICAgIHRoaXMubWF4bGVuZ3RoID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX21heF9sZW5ndGgpIGFzIG51bWJlcjtcclxuICAgICAgdGhpcy5taW5sZW5ndGggPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfbWluX2xlbmd0aCkgYXMgbnVtYmVyO1xyXG4gICAgICB0aGlzLmxlYWRpbmdJY29uID0gKGNpZGVfZWxlbWVudF9kYXRhPy5zeXBlX2xlYWRpbmdfaWNvbikgYXMgc3RyaW5nO1xyXG4gICAgICB0aGlzLmxhYmVsSGlkZSA9IChjaWRlX2VsZW1lbnRfZGF0YT8uc3lwZV9sYWJlbF9oaWRlKSBhcyBib29sZWFuO1xyXG4gICAgICB0aGlzLmhpZGVIZWxwZXJBbmRFcnJvclRleHQgPSAoY2lkZV9lbGVtZW50X2RhdGE/LnN5cGVfaGlkZV9oZWxwZXJfYW5kX2Vycm9yX3RleHQpIGFzIGJvb2xlYW47XHJcbiAgICAgIHRoaXMuZGV0ZWN0VHlwZUNoYW5nZSgpO1xyXG4gICAgICAvLyBWYWxpZGF0ZSBjb250cm9sXHJcbiAgICAgIHRoaXMub25WYWxpZGF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIHVzZSB0byBkZXRhY3QgdGhlIGNoYW5nZSBpbiB0eXBlIGlmIGNoYW5nZXMgZG9uZSB0aGlzIG1ldGhvZCBpcyB1ZWQgdG8gcnVuXHJcbiAgICovXHJcbiAgZGV0ZWN0VHlwZUNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdwYXNzd29yZCcpIHtcclxuICAgICAgdGhpcy50eXBlSW50ZXJuYWwgPSBcInBhc3N3b3JkXCI7XHJcbiAgICAgIHRoaXMudHJhaWxpbmdJY29uSW50ZXJuYWwgPSBcInZpc2liaWxpdHlfb2ZmXCI7XHJcbiAgICAgIHRoaXMuaXNUcmFpbGluZ0ljb25BbGx3ZWRDbGljayA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnR5cGVJbnRlcm5hbCA9IHRoaXMudHlwZTtcclxuICAgICAgdGhpcy50cmFpbGluZ0ljb25JbnRlcm5hbCA9IHRoaXMudHJhaWxpbmdJY29uO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2lkZS1pbnB1dFwiPlxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1URVhUIHwgUEFTU1dPUkQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ3RleHQnIHx8IHR5cGUgPT09ICdudW1iZXInIHx8IHR5cGUgPT09ICdwYXNzd29yZCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHctdy1mdWxsIHR3LXJlbGF0aXZlXCIgW25nU3R5bGVdPVwieyB3aWR0aDogd2lkdGggfVwiIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtc2l6ZS14eHMnOiAoc2l6ZSA9PT0gJzJ4cycpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLXhzJzogKHNpemUgPT09ICd4cycpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLXNtJzogKHNpemUgPT09ICdzbScpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLW1kJzogKHNpemUgPT09ICdtZCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zaXplLWxnJzogKHNpemUgPT09ICdsZycpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1sZWFkaW5nLWljb24nOiBsZWFkaW5nSWNvbixcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtdHJhaWxpbmctaWNvbic6IHRyYWlsaW5nSWNvbkludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1jbGVhci1pbnB1dCc6IGNsZWFySW5wdXQsXHJcbiAgICAgICAgICAgICAgICAnY2lkZS1lbGVtZW50LWlucHV0LWxhYmVsLWZsb2F0aW5nJzogKGxhYmVsUGxhY2VtZW50ID09PSAnZmxvYXRpbmcnKSxcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtc3RhcnQnOiAobGFiZWxEaXIgPT09ICdzdGFydCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1lbmQnOiAobGFiZWxEaXIgPT09ICdlbmQnKSxcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtZml4ZWQnOiAobGFiZWxQbGFjZW1lbnQgPT09ICdmaXhlZCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1sZXNzJzogKCFsYWJlbCB8fCBsYWJlbEhpZGUpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zdHlsZS1vdXRsaW5lJzogKGZpbGwgPT09ICdvdXRsaW5lJyksXHJcbiAgICAgICAgICAgICAgICAnY2lkZS1lbGVtZW50LXN0eWxlLXNvbGlkJzogKGZpbGwgPT09ICdzb2xpZCcpLFxyXG4gICAgICAgICAgICAgICAgJ2NpZGUtZWxlbWVudC1zdHlsZS1zdGFuZGFyZCc6IChmaWxsID09PSAnc3RhbmRhcmQnKSxcclxuICAgICAgICAgICAgICAgICdjaWRlLWVsZW1lbnQtaW5wdXQtbnVtYmVyJzogKHR5cGUgPT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgIDwhLS0gbGFiZWwgLS0+XHJcbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlkXCIgY2xhc3M9XCJjaWRlLWlucHV0LWxhYmVsXCIgKm5nSWY9XCJsYWJlbCAmJiAhbGFiZWxIaWRlXCI+e3tsYWJlbH19PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gYWxsIG9uZSBsaW5lIGVsZW1ldHMgd2hpY2ggZG9zZSBub3QgYWZmZWN0IHdpdGggbGFiZWwgYW5kIGVycm9yIHRleHQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaWRlLWVsZW1lbnQtaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBMZWFkaW5nIEljb24gLS0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNpZGUtaW5wdXQtbGVhZGluZy1pY29uLXdyYXBwZXJcIiAqbmdJZj1cImxlYWRpbmdJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaWRlLWlucHV0LWxlYWRpbmctaWNvbiBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHR3LXRleHQtY2VudGVyXCI+e3tsZWFkaW5nSWNvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHJhbGluZyBpY29uIC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0dy1hYnNvbHV0ZSBjaWRlLWlucHV0LXRyYWlsaW5nLWljb24gLXR3LWJvdHRvbS0xIHR3LXNlbGVjdC1ub25lIHR3LXJpZ2h0LTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidHJhaWxpbmdJY29uSW50ZXJuYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdHctdy04IHR3LXRleHQtY2VudGVyICF0dy10ZXh0LTJ4bFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndHctY3Vyc29yLXBvaW50ZXInOiBpc1RyYWlsaW5nSWNvbkFsbHdlZENsaWNrfVwiIFthdHRyLnRhYmluZGV4XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRyYWlsaW5nSWNvbkNsaWNrKClcIiAoa2V5dXApPVwidHJhaWxpbmdJY29uQ2xpY2soKVwiPnt7dHJhaWxpbmdJY29uSW50ZXJuYWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIENsZWFyIC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNpZGUtaW5wdXQtY2xlYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2xlYXJJbnB1dCAmJiBuZ01vZGVsXCIgKGNsaWNrKT1cIkNsZWFySW5wdXRWYWx1ZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaWRlLWlucHV0LWNsZWFyLWljb24gbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBJbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsoKGxhYmVsICYmIGxhYmVsUGxhY2VtZW50ID09PSAnZml4ZWQnKSA/ICd0dy1yb3VuZGVkLWUtbWQgdHctcm91bmRlZC1lcy1tZCcgOiAndHctcm91bmRlZC1tZCAnKSwgKCFsZWFkaW5nSWNvbiA/ICd0dy1wbC0xJyA6ICcnKSwgKHRyYWlsaW5nSWNvbkludGVybmFsID8gJ3R3LXByLTgnOiAnJyksICghdHJhaWxpbmdJY29uSW50ZXJuYWwgPyAndHctcHItMScgOiAnJyksICgoc2l6ZSA9PT0gJ21kJykgPyAndHctaC04IHR3LXB0LTAuNSB0dy1wYi0wJyA6IChzaXplID09PSAnc20nID8gJ3R3LWgtNycgOiAnJykpLCAobGFiZWxIaWRlID8gJyF0dy1tdC0wJyA6ICcnKV1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmdNb2RlbFwiIFt0eXBlXT1cInR5cGVJbnRlcm5hbFwiIChpbnB1dCk9XCJ1cERhdGVWYWx1ZSgkZXZlbnQpXCIgKGZvY3VzKT1cImZvY3VzQ29udHJvbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiIFttaW5dPVwibWluXCIgW21heF09XCJtYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHctbS0wIHR3LXctZnVsbCB0dy1iZy10cmFuc3BhcmVudCB0dy1vdmVyZmxvdy1oaWRkZW4gdHctYm9yZGVyLXNvbGlkIHR3LXAtMCBjaWRlLWlucHV0LWlucHV0IHR3LW91dGxpbmUtbm9uZVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIGVycm9yIHRleHQgLyBoZWxwZXIgdGV4dCAtLT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIoZXJyb3JUZXh0IHx8IGhlbHBlclRleHQgfHwgIWhlbHBlclRleHRDb2xsYXBzZSkgJiYgIWhpZGVIZWxwZXJBbmRFcnJvclRleHRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaWRlLWlucHV0LWhlbHAtZXJyb3ItdGV4dFwiPnt7XHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkXHJcbiAgICAgICAgICAgICAgICA/IGhlbHBlclRleHQgOiAoZXJyb3JUZXh0ID9cclxuICAgICAgICAgICAgICAgIChpc1RvdWNoZWQgPyBlcnJvclRleHQgOiBoZWxwZXJUZXh0KVxyXG4gICAgICAgICAgICAgICAgOiBoZWxwZXJUZXh0KX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBJbnB1dCB3aXRoIHRyYWxsaW5nIGljb24gLS0+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0dy1pbmxpbmUtYmxvY2sgdHctaC0xMiB0dy13LTY0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInR3LXctZnVsbGgtZnVsbCB0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LXRvcC0xLzMgdHctbXgtMiB0dy1iZy13aGl0ZSB0dy1weC0wLjUgdHctcHktMCB0dy10ZXh0LXNtIHR3LWxlYWRpbmctNCB0dy10ZXh0LWdyYXktNzAwXCI+TmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LWJvdHRvbS1weCB0dy1yaWdodC0wIC10dy16LTEwIHR3LXRleHQtZ3JheS00MDBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0dy13LTggdHctdGV4dC1jZW50ZXIgIXR3LXRleHQtMnhsXCI+IHBlcnNvbiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInR3LW0tMCB0dy1oLTggdHctdy1mdWxsIHR3LW92ZXJmbG93LWhpZGRlbiB0dy1yb3VuZGVkLW1kIHR3LWJvcmRlci0yIHR3LWJvcmRlci1zb2xpZCB0dy1ib3JkZXItZ3JheS0zMDAgdHctYmctdHJhbnNwYXJlbnQgdHctcC0wIHR3LXBiLTAuNSB0dy1wbC0xIHR3LXByLTggdHctdGV4dC1zbSB0dy10ZXh0LWdyYXktNjAwIHR3LW91dGxpbmUtbm9uZSBob3Zlcjp0dy1ib3JkZXItYmx1ZS00MDAgZm9jdXM6dHctYm9yZGVyLWJsdWUtNDAwIGZvY3VzOnR3LXRleHQtZ3JheS05NTBcIlxyXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJBbmt1c2ggQmh1cmVcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG5cclxuICAgIDwhLS0gSW5wdXQgd2l0aCBsZWFkaW5nIGljb24gLS0+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0dy1pbmxpbmUtYmxvY2sgdHctaC0xMiB0dy13LTY0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInR3LXctZnVsbGgtZnVsbCB0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LXRvcC0xLzMgdHctbXgtMiB0dy1iZy13aGl0ZSB0dy1weC0wLjUgdHctcHktMCB0dy10ZXh0LXNtIHR3LWxlYWRpbmctNCB0dy10ZXh0LWdyYXktNzAwXCI+TmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgLXR3LWJvdHRvbS1weCB0dy1sZWZ0LTAgLXR3LXotMTAgdHctdGV4dC1ncmF5LTQwMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHR3LXctOCB0dy10ZXh0LWNlbnRlciAhdHctdGV4dC0yeGxcIj4gcGVyc29uIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHctbS0wIHR3LWgtOCB0dy13LWZ1bGwgdHctb3ZlcmZsb3ctaGlkZGVuIHR3LXJvdW5kZWQtbWQgdHctYm9yZGVyLTIgdHctYm9yZGVyLXNvbGlkIHR3LWJvcmRlci1ncmF5LTMwMCB0dy1iZy10cmFuc3BhcmVudCB0dy1wLTAgdHctcGItMC41IHR3LXBsLTggdHctcHItMSB0dy10ZXh0LXNtIHR3LXRleHQtZ3JheS02MDAgdHctb3V0bGluZS1ub25lIGhvdmVyOnR3LWJvcmRlci1ibHVlLTQwMCBmb2N1czp0dy1ib3JkZXItYmx1ZS00MDAgZm9jdXM6dHctdGV4dC1ncmF5LTk1MFwiXHJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIkFua3VzaCBCaHVyZVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1DSEVDS0JPWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnY2hlY2tib3gnXCIgY2xhc3M9XCJ0dy1mbGV4XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNpZGUtY2hlY2tib3ggdHctcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGlucHV0IFtjaGVja2VkXT1cIm5nTW9kZWxcIiBbdmFsdWVdPVwibmdNb2RlbFwiIFtpZF09XCJpZFJhbmRvbVwiIFt0eXBlXT1cInR5cGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy1hYnNvbHV0ZSB0dy1sZWZ0LTAgdHctaW52aXNpYmxlXCIgKGNsaWNrKT1cInVwZGF0ZVZhbHVlQ2hlY2tCb3goIW5nTW9kZWwpOyBmb2N1c0NvbnRyb2woKVwiXHJcbiAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNpZGUtY2hlY2tib3gtbGFiZWwgdHctY3Vyc29yLXBvaW50ZXJcIiBbZm9yXT1cImlkUmFuZG9tXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LWJvcmRlci0yIHR3LWJvcmRlci1zb2xpZCB0dy1yZWxhdGl2ZSB0dy1yb3VuZGVkLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEycHhcIiBoZWlnaHQ9XCIxMHB4XCIgY2xhc3M9XCJ0dy1hYnNvbHV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjc2Rmd2lvcmZrbGFzZmpqYWxmandlcndyXCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInR3LXRleHQtc20gdHctcGwtMiB0dy1sZWFkaW5nLVsxOHB4XSB0dy1zZWxlY3Qtbm9uZSB0dy1jdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbGFiZWxIaWRlXCI+e3tsYWJlbH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwidHctYWJzb2x1dGUgdHctaC0wIHR3LXctMCB0dy1zZWxlY3Qtbm9uZSB0dy1wb2ludGVyLWV2ZW50cy1ub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEVsZW1lbnQgaGlkZGVuIGFuZCBpdHMgeHBhdGggaXMgdXNlZCB0byBkaXNwbGF5IGluc2lkZSBTVkcgLS0+XHJcbiAgICAgICAgICAgICAgICA8c3ltYm9sIGlkPVwic2Rmd2lvcmZrbGFzZmpqYWxmandlcndyXCIgdmlld2JveD1cIjAgMCAxMiAxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIxLjUgNiA0LjUgOSAxMC41IDFcIj48L3BvbHlsaW5lPlxyXG4gICAgICAgICAgICAgICAgPC9zeW1ib2w+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU0VMRUNULS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnc2VsZWN0J1wiPnNhc1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctYWJzb2x1dGVcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygb3B0aW9uOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy13LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW19fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|