@testgorilla/tgo-ui 2.24.20 → 2.24.21
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/components/datepicker/datepicker.component.d.ts +1 -1
- package/components/gaussian-chart/gaussian-chart.component.d.ts +75 -0
- package/components/gaussian-chart/gaussian-chart.module.d.ts +13 -0
- package/components/table/table.component.d.ts +5 -3
- package/components/table/table.model.d.ts +2 -1
- package/esm2022/assets/i18n/en.json +24 -7
- package/esm2022/components/accordion/accordion.component.mjs +4 -4
- package/esm2022/components/accordion/accordion.component.module.mjs +5 -5
- package/esm2022/components/alert-banner/alert-banner.component.mjs +4 -4
- package/esm2022/components/alert-banner/alert-banner.component.module.mjs +5 -5
- package/esm2022/components/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/components/autocomplete/autocomplete.component.module.mjs +5 -5
- package/esm2022/components/autocomplete/includes.pipe.mjs +4 -4
- package/esm2022/components/autocomplete/prevent-input.directive.mjs +4 -4
- package/esm2022/components/autocomplete/transform-Item.pipe.mjs +4 -4
- package/esm2022/components/avatar/avatar.component.mjs +4 -4
- package/esm2022/components/avatar/avatar.component.module.mjs +5 -5
- package/esm2022/components/badge/badge.component.mjs +4 -4
- package/esm2022/components/badge/badge.component.module.mjs +5 -5
- package/esm2022/components/button/button.component.mjs +4 -4
- package/esm2022/components/button/button.component.module.mjs +5 -5
- package/esm2022/components/card/card.component.mjs +4 -4
- package/esm2022/components/card/card.component.module.mjs +5 -5
- package/esm2022/components/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/components/checkbox/checkbox.component.module.mjs +5 -5
- package/esm2022/components/checkbox/focus-visible.directive.mjs +4 -4
- package/esm2022/components/checklist/checklist.component.mjs +4 -4
- package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
- package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +5 -5
- package/esm2022/components/datepicker/date-adapter.mjs +30 -0
- package/esm2022/components/datepicker/datepicker.component.mjs +8 -10
- package/esm2022/components/datepicker/datepicker.component.module.mjs +5 -5
- package/esm2022/components/datepicker/datepicker.service.mjs +4 -4
- package/esm2022/components/datepicker/no-date-format.directive.mjs +7 -7
- package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +4 -4
- package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +5 -5
- package/esm2022/components/deprecated-table/deprecated-table.component.mjs +4 -4
- package/esm2022/components/deprecated-table/deprecated-table.component.module.mjs +5 -5
- package/esm2022/components/deprecated-table/directives/dynamic-component.directive.mjs +4 -4
- package/esm2022/components/dialog/dialog.component.mjs +4 -4
- package/esm2022/components/dialog/dialog.component.module.mjs +5 -5
- package/esm2022/components/dialog/dialog.service.mjs +4 -4
- package/esm2022/components/divider/divider.component.mjs +4 -4
- package/esm2022/components/divider/divider.component.module.mjs +5 -5
- package/esm2022/components/dropdown/dropdown.component.mjs +10 -8
- package/esm2022/components/dropdown/dropdown.component.module.mjs +5 -5
- package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +4 -4
- package/esm2022/components/elevation-shadow/elevation-shadow.component.module.mjs +5 -5
- package/esm2022/components/empty-state/empty-state.component.mjs +4 -4
- package/esm2022/components/empty-state/empty-state.component.module.mjs +5 -5
- package/esm2022/components/field/field.component.mjs +4 -4
- package/esm2022/components/field/field.component.module.mjs +5 -5
- package/esm2022/components/file-upload/file-upload.component.mjs +4 -4
- package/esm2022/components/file-upload/file-upload.component.module.mjs +5 -5
- package/esm2022/components/gaussian-chart/gaussian-chart.component.mjs +246 -0
- package/esm2022/components/gaussian-chart/gaussian-chart.module.mjs +42 -0
- package/esm2022/components/icon/icon.component.mjs +5 -5
- package/esm2022/components/icon/icon.component.module.mjs +5 -5
- package/esm2022/components/icon-label/icon-label.component.mjs +4 -4
- package/esm2022/components/icon-label/icon-label.component.module.mjs +5 -5
- package/esm2022/components/logo/logo.component.mjs +4 -4
- package/esm2022/components/logo/logo.component.module.mjs +5 -5
- package/esm2022/components/media-card/media-card.component.mjs +4 -4
- package/esm2022/components/multi-input/multi-input.component.mjs +4 -4
- package/esm2022/components/multi-input/multi-input.component.module.mjs +5 -5
- package/esm2022/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.mjs +4 -4
- package/esm2022/components/navbar/navbar.component.mjs +4 -4
- package/esm2022/components/navbar/navbar.component.module.mjs +5 -5
- package/esm2022/components/overflow-menu/overflow-menu.component.mjs +4 -4
- package/esm2022/components/overflow-menu/overflow-menu.component.module.mjs +5 -5
- package/esm2022/components/page-header/page-header.component.mjs +4 -4
- package/esm2022/components/page-header/page-header.component.module.mjs +5 -5
- package/esm2022/components/paginator/paginator.component.mjs +4 -4
- package/esm2022/components/paginator/paginator.component.module.mjs +5 -5
- package/esm2022/components/password-criteria/password.component.mjs +4 -4
- package/esm2022/components/password-criteria/password.component.module.mjs +5 -5
- package/esm2022/components/password-strength/password-strength.component.mjs +4 -4
- package/esm2022/components/password-strength/password-strength.component.module.mjs +5 -5
- package/esm2022/components/phone-input/join-strings.pipe.mjs +4 -4
- package/esm2022/components/phone-input/phone-input.component.mjs +4 -4
- package/esm2022/components/phone-input/phone-input.component.module.mjs +5 -5
- package/esm2022/components/progress-bar/progress-bar.component.mjs +4 -4
- package/esm2022/components/progress-bar/progress-bar.component.module.mjs +5 -5
- package/esm2022/components/radial-progress/radial-progress.component.mjs +4 -4
- package/esm2022/components/radial-progress/radial-progress.component.module.mjs +5 -5
- package/esm2022/components/radio-button/radio-button.component.mjs +4 -4
- package/esm2022/components/radio-button/radio-button.component.module.mjs +5 -5
- package/esm2022/components/rating/half-star.pipe.mjs +4 -4
- package/esm2022/components/rating/rating.component.mjs +4 -4
- package/esm2022/components/rating/rating.component.module.mjs +5 -5
- package/esm2022/components/scale/scale.component.mjs +5 -5
- package/esm2022/components/scale/scale.component.module.mjs +5 -5
- package/esm2022/components/segmented-bar/segmented-bar.component.mjs +4 -4
- package/esm2022/components/segmented-bar/segmented-bar.component.module.mjs +5 -5
- package/esm2022/components/segmented-button/segmented-button.component.mjs +4 -4
- package/esm2022/components/segmented-button/segmented-button.component.module.mjs +5 -5
- package/esm2022/components/side-panel/side-panel.component.mjs +4 -4
- package/esm2022/components/side-panel/side-panel.service.mjs +4 -4
- package/esm2022/components/side-sheet/side-sheet.component.mjs +4 -4
- package/esm2022/components/side-sheet/side-sheet.component.module.mjs +5 -5
- package/esm2022/components/side-sheet/side-sheet.service.mjs +4 -4
- package/esm2022/components/skeleton/skeleton.component.mjs +4 -4
- package/esm2022/components/slider/slider.component.mjs +4 -4
- package/esm2022/components/slider/slider.component.module.mjs +5 -5
- package/esm2022/components/snackbar/snackbar.component.mjs +4 -4
- package/esm2022/components/snackbar/snackbar.component.module.mjs +5 -5
- package/esm2022/components/snackbar/snackbar.service.mjs +4 -4
- package/esm2022/components/spider-chart/spider-chart.component.mjs +4 -4
- package/esm2022/components/spider-chart/spider-chart.module.mjs +5 -5
- package/esm2022/components/spinner/spinner.component.mjs +4 -4
- package/esm2022/components/spinner/spinner.module.mjs +5 -5
- package/esm2022/components/step/step.component.mjs +4 -4
- package/esm2022/components/step/step.component.module.mjs +5 -5
- package/esm2022/components/stepper/stepper.component.mjs +4 -4
- package/esm2022/components/stepper/stepper.component.module.mjs +5 -5
- package/esm2022/components/table/sentence-case.pipe.mjs +4 -4
- package/esm2022/components/table/table.component.mjs +45 -33
- package/esm2022/components/table/table.component.module.mjs +5 -5
- package/esm2022/components/table/table.model.mjs +1 -1
- package/esm2022/components/tabs/tab.directive.mjs +4 -4
- package/esm2022/components/tabs/tabs.component.mjs +4 -4
- package/esm2022/components/tabs/tabs.component.module.mjs +5 -5
- package/esm2022/components/tag/tag.component.mjs +4 -4
- package/esm2022/components/tag/tag.component.module.mjs +5 -5
- package/esm2022/components/toggle/toggle.component.mjs +4 -4
- package/esm2022/components/toggle/toggle.component.module.mjs +5 -5
- package/esm2022/components/tooltip/tooltip-template.directive.mjs +14 -12
- package/esm2022/components/tooltip/tooltip.component.mjs +4 -4
- package/esm2022/components/tooltip/tooltip.component.module.mjs +5 -5
- package/esm2022/components/universal-skills-report/universal-skills-report.component.mjs +18 -18
- package/esm2022/components/universal-skills-report/universal-skills-report.component.module.mjs +5 -5
- package/esm2022/components/validation-error/validation-error.component.mjs +4 -4
- package/esm2022/components/validation-error/validation-error.module.mjs +5 -5
- package/esm2022/directives/digits-only.directive.mjs +4 -4
- package/esm2022/directives/drag-drop.directive.mjs +4 -4
- package/esm2022/directives/ellipse-text.directive.mjs +4 -4
- package/esm2022/directives/select-text.directive.mjs +4 -4
- package/esm2022/directives/step-line-element.directive.mjs +4 -4
- package/esm2022/pipes/data-property-getter.mjs +4 -4
- package/esm2022/pipes/has-validation-error.pipe.mjs +4 -4
- package/esm2022/pipes/memoize-func.pipe.mjs +4 -4
- package/esm2022/pipes/name-initials.pipe.mjs +4 -4
- package/esm2022/pipes/ui-ordinal-suffix.pipe.mjs +4 -4
- package/esm2022/pipes/ui-translate.pipe.mjs +4 -4
- package/esm2022/public-api.mjs +4 -1
- package/esm2022/services/icons.service.mjs +4 -4
- package/esm2022/utils/localization/language.service.mjs +4 -4
- package/fesm2022/testgorilla-tgo-ui.mjs +832 -530
- package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
- package/package.json +2 -1
- package/projects/tgo-canopy-ui/assets/i18n/en.json +24 -7
- package/public-api.d.ts +2 -0
- package/esm2022/components/datepicker/DateAdapter.mjs +0 -30
- /package/components/datepicker/{DateAdapter.d.ts → date-adapter.d.ts} +0 -0
|
@@ -161,8 +161,8 @@ export class FileUploadComponent {
|
|
|
161
161
|
this.isCanceled = true;
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
165
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.
|
|
164
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
165
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FileUploadComponent, selector: "ui-file-upload", inputs: { maxFileSizeMB: "maxFileSizeMB", minFileSizeMB: "minFileSizeMB", supportedFileTypes: "supportedFileTypes", uploadProgress: "uploadProgress", errors: "errors", disabled: "disabled", file: "file", companyColor: "companyColor", applicationTheme: "applicationTheme", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired" }, outputs: { OnDrop: "OnDrop" }, host: { properties: { "class": "this.class", "style.--color": "this.compColor" } }, providers: [
|
|
166
166
|
{
|
|
167
167
|
provide: NG_VALUE_ACCESSOR,
|
|
168
168
|
useExisting: forwardRef(() => FileUploadComponent),
|
|
@@ -201,7 +201,7 @@ export class FileUploadComponent {
|
|
|
201
201
|
])
|
|
202
202
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
203
203
|
}
|
|
204
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
205
205
|
type: Component,
|
|
206
206
|
args: [{ selector: 'ui-file-upload', encapsulation: ViewEncapsulation.None, providers: [
|
|
207
207
|
{
|
|
@@ -279,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
|
|
|
279
279
|
type: ViewChild,
|
|
280
280
|
args: ['fileDrop']
|
|
281
281
|
}] } });
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBaUR6RSxNQUFNLE9BQU8sbUJBQW1CO0lBc0g5QixZQUM2RSxlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUF0SC9GLFVBQUssR0FBRyxnQkFBZ0IsQ0FBQztRQXdDeEM7Ozs7O1dBS0c7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCOzs7OztXQUtHO1FBQ00sU0FBSSxHQUFnQixJQUFJLENBQUM7UUFFbEM7Ozs7OztXQU1HO1FBQ00saUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBSzFDOzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFVdEQ7Ozs7O1dBS0c7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVwQixXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFJN0MsdUJBQWtCLEdBQUcsY0FBYyxDQUFDO1FBRXZEOztXQUVHO1FBQ0gsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7UUFDdEIsQ0FBQyxDQUFDO1FBRUY7O1dBRUc7UUFDSCxZQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFLakIsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsYUFBYSxDQUFDLEtBQWU7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLGNBQWMsQ0FBQyxLQUFZO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFpQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixRQUFRLENBQUMsS0FBZTtRQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsZUFBZTtZQUNsQixDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsWUFBWTtRQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixXQUFXO1FBQ1QsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLFVBQVU7UUFDUixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFnQjtRQUNuQyxPQUFPLFFBQVEsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLENBQUMsRUFBaUI7UUFDekIsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3JDLENBQUM7YUFBTSxJQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7OEdBdE9VLG1CQUFtQixrQkF1SFIsb0NBQW9DO2tHQXZIL0MsbUJBQW1CLG9lQXpDbkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YscUpDaENILHd2S0E4R0Esa25QRDVFYztZQUNWLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDeEIsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2hDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztpQkFDakUsQ0FBQztnQkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDdEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUMxRCxDQUFDO2FBQ0gsQ0FBQztZQUNGLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRTtnQkFDaEMsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2hDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztpQkFDakUsQ0FBQztnQkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDdEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUMxRCxDQUFDO2FBQ0gsQ0FBQztZQUNGLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRTtnQkFDOUIsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2hDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztpQkFDakUsQ0FBQztnQkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDdEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUMxRCxDQUFDO2FBQ0gsQ0FBQztTQUNIOzsyRkFFVSxtQkFBbUI7a0JBOUMvQixTQUFTOytCQUNFLGdCQUFnQixpQkFHWCxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQzt3QkFDVixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ3hCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2dDQUNoQyxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7NkJBQ2pFLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0NBQ3RDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDMUQsQ0FBQzt5QkFDSCxDQUFDO3dCQUNGLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRTs0QkFDaEMsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0NBQ2hDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQzs2QkFDakUsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztnQ0FDdEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUMxRCxDQUFDO3lCQUNILENBQUM7d0JBQ0YsT0FBTyxDQUFDLHNCQUFzQixFQUFFOzRCQUM5QixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDaEMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDOzZCQUNqRSxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dDQUN0QyxPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQzFELENBQUM7eUJBQ0gsQ0FBQztxQkFDSDs7MEJBeUhFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0NBQW9DO3lDQXRIM0MsS0FBSztzQkFBbkIsV0FBVztnQkFPSCxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBUUcsTUFBTTtzQkFBZCxLQUFLO2dCQVFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsSUFBSTtzQkFBWixLQUFLO2dCQVNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR04sU0FBUztzQkFEUixXQUFXO3VCQUFDLGVBQWU7Z0JBVW5CLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBPcHRpb25hbCxcbiAgSW5qZWN0LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktZmlsZS11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVVcGxvYWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ2luT3V0QW5pbWF0aW9uUHJvZ3Jlc3MnLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSkpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pKVxuICAgICAgXSlcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbkNoYW5nZScsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3VpLWZpbGUtdXBsb2FkJztcblxuICAvKipcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1heEZpbGVTaXplTUI6IG51bWJlcjtcblxuICAvKipcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1pbkZpbGVTaXplTUI6IG51bWJlcjtcblxuICAvKipcbiAgICogU3VwcG9ydGVkIGZpbGVzIGZvciBpbnB1dCBmaWVsZFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc3VwcG9ydGVkRmlsZVR5cGVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcGxvYWQgcHJvZ3Jlc3NcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHVwbG9hZFByb2dyZXNzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBlcnJvcnM/OiBzdHJpbmdbXSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGRpc2FibGVkXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRXhpc3RpbmcgZmlsZSBpbmZvcm1hdGlvblxuICAgKlxuICAgKiBAdHlwZSB7KEZpbGUgfCBudWxsKX1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ29sb3Igb2YgdGhlIGZpbGUgdXBsb2FkLlxuICAgKiBEZWZhdWx0cyB0byBUZXN0IEdvcmlsbGEgcHJpbWFyeSBjb2xvci5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGNvbXBhbnlDb2xvcjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1jb2xvcicpXG4gIGNvbXBDb2xvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKlxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgbGFiZWwgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYW4gaW5wdXQgZmllbGQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gc3VibWlzc2lvbi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhUmVxdWlyZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgT25Ecm9wOiBFdmVudEVtaXR0ZXI8RmlsZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZURyb3AnKSBmaWxlRHJvcDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0ZJTEVfVVBMT0FELic7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoID0gKCkgPT4ge1xuICB9O1xuXG4gIGlzTWlzc2VkTWluU2l6ZSA9IGZhbHNlO1xuICBwcm9ncmVzcyA9IGZhbHNlO1xuICBzdWNjZXNzID0gZmFsc2U7XG4gIGJyb3dzZTogYm9vbGVhbjtcbiAgaXNDYW5jZWxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgKSB7XG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gZGVmYXVsdEFwcFRoZW1lO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYnJvd3NlID0gdHJ1ZTtcbiAgfVxuXG4gIC8vV2hlbiBmaWxlIGlzIGRyb3BwZWRcbiAgb25GaWxlRHJvcHBlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLmVtaXRGaWxlKGZpbGVzKTtcbiAgfVxuXG4gIC8vV2hlbiBpbnB1dCBjaGFuZ2VzXG4gIG9uQ2hhbmdlVXBsb2FkKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuaXNDYW5jZWxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5lbWl0RmlsZShlbGVtZW50LmZpbGVzIHx8IG5ldyBGaWxlTGlzdCgpKTtcbiAgfVxuXG4gIC8vRW1pdCBkcm9wIGZpbGVcbiAgZW1pdEZpbGUoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgW2ZpbGVdID0gQXJyYXkuZnJvbShmaWxlcyk7XG4gICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICB0aGlzLmVycm9ycyA9IG51bGw7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gICAgdGhpcy5pc01pc3NlZE1pblNpemUgPVxuICAgICAgIWZpbGU/LnNpemUgJiYgIXRoaXMubWluRmlsZVNpemVNQiA/IHRydWUgOiB0aGlzLmZpbGVTaXplVG9NQihmaWxlPy5zaXplID8/IDApIDw9IHRoaXMubWluRmlsZVNpemVNQjtcbiAgICBpZiAoIXRoaXMuaXNNaXNzZWRNaW5TaXplKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZmlsZSk7XG4gICAgICB0aGlzLk9uRHJvcC5lbWl0KGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vU2hvdyBwcm9ncmVzcy1iYXJcbiAgc2hvd1Byb2dyZXNzKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMuYnJvd3NlID0gZmFsc2U7XG4gICAgcmV0dXJuICEhKHRoaXMuZmlsZSAmJiAhdGhpcy5lcnJvcnMgJiYgIXRoaXMuaXNNaXNzZWRNaW5TaXplKTtcbiAgfVxuXG4gIC8vU2hvdyBzdWNjZXNzIGVsZW1lbnRzXG4gIHNob3dTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmZpbGUgJiYgdGhpcy51cGxvYWRQcm9ncmVzcyA9PT0gMTAwICYmICF0aGlzLmVycm9ycyAmJiAhdGhpcy5pc01pc3NlZE1pblNpemUpO1xuICB9XG5cbiAgLy9TaG93IGJyb3dzZSB3aGVuIHRoZXJlIGFyZSBlcnJvclxuICBzaG93QnJvd3NlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmVycm9ycyB8fCB0aGlzLmlzTWlzc2VkTWluU2l6ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCF0aGlzLmlzQ2FuY2VsZWQpIHtcbiAgICAgIGlmIChjaGFuZ2VzWyd1cGxvYWRQcm9ncmVzcyddIHx8IGNoYW5nZXNbJ2ZpbGUnXSkge1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5zaG93UHJvZ3Jlc3MoKTtcbiAgICAgICAgdGhpcy5zdWNjZXNzID0gdGhpcy5zaG93U3VjY2VzcygpO1xuICAgICAgICB0aGlzLmJyb3dzZSA9IHRoaXMuc2hvd0Jyb3dzZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXNbJ2Vycm9ycyddKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLnNob3dQcm9ncmVzcygpO1xuICAgICAgICB0aGlzLnN1Y2Nlc3MgPSB0aGlzLnNob3dTdWNjZXNzKCk7XG4gICAgICAgIHRoaXMuYnJvd3NlID0gdGhpcy5zaG93QnJvd3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlc1snYXBwbGljYXRpb25UaGVtZSddKSB7XG4gICAgICAgIHRoaXMuY29tcENvbG9yID0gdGhpcy5nZXRDb21wYW55Q29sb3IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlPzogRmlsZSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5maWxlID0gdmFsdWUgfHwgbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcGFueUNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGFueUNvbG9yIHx8ICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICcjNDZBOTk3JyA6ICcjRDQxMEFBJyk7XG4gIH1cblxuICBwcml2YXRlIGZpbGVTaXplVG9NQihmaWxlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZmlsZVNpemUgLyAxMDI0IC8gMTAyNDtcbiAgfVxuXG4gIG9uS2V5ZG93bihldjogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldi5rZXkgPT09ICdFbnRlcicgfHwgZXYua2V5ID09PSAnICcpIHtcbiAgICAgIHRoaXMuZmlsZURyb3AubmF0aXZlRWxlbWVudC5jbGljaygpXG4gICAgfSBlbHNlIGlmICAoZXYua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICAgIHRoaXMuc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5wcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5lcnJvcnMgPSBudWxsO1xuICAgICAgdGhpcy5pc01pc3NlZE1pblNpemUgPSBmYWxzZTtcbiAgICAgIHRoaXMuYnJvd3NlID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNDYW5jZWxlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ1cGxvYWQtZmlsZS1jb250YWluZXJcIlxuICAgIHVpRHJhZ0Ryb3BcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJhcmlhUmVxdWlyZWRcIlxuICAgIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3VwbG9hZC1lcnJvcnMnOiAhIWVycm9ycyB8fCBpc01pc3NlZE1pblNpemUsICd1cGxvYWQtZmlsZS1jb250YWluZXItZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcbiAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICBbdGFiSW5kZXhdPVwiMFwiXG4gICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgIChjbGljayk9XCJmaWxlRHJvcC5uYXRpdmVFbGVtZW50LmNsaWNrKClcIlxuICA+XG4gICAgPHNwYW4gc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC05OTk5cHg7XCIgW2F0dHIuYXJpYS1saXZlXT1cIidwb2xpdGUnXCI+XG4gICAgICB7eyBzdWNjZXNzID8gKCdGSUxFX1VQTE9BRC5GSUxFX1VQTE9BRElOR19TVUNDRVNTJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIDogcHJvZ3Jlc3MgPyAoJ0ZJTEVfVVBMT0FELlVQTE9BRElORycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSA6ICcnIH19XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgKm5nSWY9XCIoYnJvd3NlICYmICEoc3VjY2VzcyAmJiAhIWZpbGUgJiYgcHJvZ3Jlc3MpKVwiIFtAaW5PdXRBbmltYXRpb25dIGNsYXNzPVwidXBsb2FkLWZpbGVzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWJyb3dzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImljb25UcGxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nSWY9XCIhIWVycm9ycyB8fCBpc01pc3NlZE1pblNpemVcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFlcnJvcnNcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj48dWktaWNvbiBuYW1lPVwiRXJyb3JcIiBjbGFzcz1cImVycm9yLWljb25cIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIHt7IGVycm9yIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc01pc3NlZE1pblNpemVcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIG5hbWU9XCJFcnJvclwiIGNsYXNzPVwiZXJyb3ItaWNvblwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdNSU5fU0laRV9FUlJPUicgfCB1aVRyYW5zbGF0ZSA6IHsgbWluOiBtaW5GaWxlU2l6ZU1CIH0gfCBhc3luYyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJzdWNjZXNzIHx8IHByb2dyZXNzID8gJycgOiAnZHJhZy1hbmQtZHJvcCdcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ3VwbG9hZC1zdXBwb3J0ZWQtZmlsZXMnXCJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwiLTFcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAjZmlsZURyb3BcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgaWQ9XCJmaWxlXCJcbiAgICAgICAgICBbYWNjZXB0XT1cInN1cHBvcnRlZEZpbGVUeXBlc1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlVXBsb2FkKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgZm9yPVwiZmlsZVwiIGNsYXNzPVwidHJhbnNwYXJlbnRcIj57eyAhIWZpbGUgJiYgc3VjY2VzcyA/ICcnIDogKHRyYW5zbGF0aW9uQ29udGV4dCArICdDSE9PU0VfRklMRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvbGFiZWw+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYyc7IGVsc2UgcmVicmFuZGVkRG5EQ29weVRwbFwiPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnRFJBR19BTkRfRFJPUF9PUicpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwic2VtaWJvbGRcIj4ge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdCUk9XU0UnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfCBsb3dlcmNhc2UgfX08L3NwYW4+IHt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnWU9VUl9GSUxFUycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIj57eyBtYXhGaWxlU2l6ZU1CIH19e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdNQVhfU0laRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtaW5GaWxlU2l6ZU1CXCIgY2xhc3M9XCJ1cGxvYWQtdGV4dFwiPnt7IG1pbkZpbGVTaXplTUIgfX17eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ01JTl9TSVpFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1jaGFuZ2VcIiBbQGluT3V0QW5pbWF0aW9uQ2hhbmdlXSAqbmdJZj1cIiEhc3VjY2VzcyAmJiAhIWZpbGUgJiYgISFwcm9ncmVzc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInN1Y2Nlc3MgfHwgcHJvZ3Jlc3MgPyAnJyA6ICdkcmFnLWFuZC1kcm9wJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic3VjY2VzcyB8fCBwcm9ncmVzcyA/ICcnIDogJ3N1cHBvcnRlZC1maWxlLXR5cGVzJ1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgI2ZpbGVEcm9wXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgaWQ9XCJmaWxlVGVzdFwiXG4gICAgICAgIFthY2NlcHRdPVwic3VwcG9ydGVkRmlsZVR5cGVzXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZVVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWwgZm9yPVwiZmlsZVwiIGNsYXNzPVwidHJhbnNwYXJlbnRcIj57eyAhIWZpbGUgJiYgc3VjY2VzcyA/ICcnIDogKHRyYW5zbGF0aW9uQ29udGV4dCArICdDSE9PU0VfRklMRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvbGFiZWw+XG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWREbkRDb3B5VHBsXCI+e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdEUkFHX0FORF9EUk9QX09SJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19Jm5ic3A7PHNwYW5cbiAgICAgICAgY2xhc3M9XCJzZW1pYm9sZFwiPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnQ0hBTkdFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIHwgbG93ZXJjYXNlIH19PC9zcGFuPiB7eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ1lPVVJfRklMRVMnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIlxuICAgICAgPjxzdHJvbmc+e3sgZmlsZS5uYW1lIH19PC9zdHJvbmc+PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1wcm9ncmVzc1wiIFtAaW5PdXRBbmltYXRpb25Qcm9ncmVzc10gKm5nSWY9XCIhIXByb2dyZXNzICYmICEhZmlsZSAmJiAhc3VjY2Vzc1wiPlxuICAgICAgPHA+e3sgZmlsZS5uYW1lIH19PC9wPlxuICAgICAgPHVpLXByb2dyZXNzLWJhciBbcHJvZ3Jlc3NdPVwidXBsb2FkUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFueUNvbG9yXT1cImNvbXBDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLXByb2dyZXNzLWJhcj5cbiAgICAgIDxwIGNsYXNzPVwidXBsb2FkLXRleHRcIj5cbiAgICAgICAge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdVUExPQURJTkcnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX0gPHNwYW4+e3sgdXBsb2FkUHJvZ3Jlc3MgfX08L3NwYW5cbiAgICAgID4lXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgI2ljb25UcGw+XG4gICAgICA8dWktaWNvbiAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWRJY29uVHBsXCIgY2xhc3M9XCJ1cGxvYWQtaWNvblwiXG4gICAgICAgICAgICAgICBuYW1lPVwiRmlsZS11cGxvYWRcIj48L3VpLWljb24+XG4gICAgICA8bmctdGVtcGxhdGUgI3JlYnJhbmRlZEljb25UcGw+XG4gICAgICAgIDx1aS1pY29uIGNsYXNzPVwidXBsb2FkLWljb25cIlxuICAgICAgICAgICAgICAgICBuYW1lPVwiVXBsb2FkXCJcbiAgICAgICAgICAgICAgICAgW3NpemVdPVwiJzI0J1wiXG4gICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNyZWJyYW5kZWREbkRDb3B5VHBsPlxuICAgICAgPHAgaWQ9XCInZHJhZy1hbmQtZHJvcCdcIj57eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ0RSQUdfQU5EX0RST1AnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3A+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiISFzdXBwb3J0ZWRGaWxlVHlwZXNcIlxuICAgICAgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICBjbGFzcz1cInVwbG9hZC1zdXBwb3J0ZWQtZmlsZXNcIlxuICAgICAgaWQ9XCJ1cGxvYWQtc3VwcG9ydGVkLWZpbGVzXCI+XG4gICAgICA8c3BhbiA+e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdTVVBQT1JURURfRklMRV9UWVBFUycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj57eyBzdXBwb3J0ZWRGaWxlVHlwZXMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBaUR6RSxNQUFNLE9BQU8sbUJBQW1CO0lBc0g5QixZQUM2RSxlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUF0SC9GLFVBQUssR0FBRyxnQkFBZ0IsQ0FBQztRQXdDeEM7Ozs7O1dBS0c7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCOzs7OztXQUtHO1FBQ00sU0FBSSxHQUFnQixJQUFJLENBQUM7UUFFbEM7Ozs7OztXQU1HO1FBQ00saUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBSzFDOzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFVdEQ7Ozs7O1dBS0c7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVwQixXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFJN0Ms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RSxDQUFDLENBQUM7NkJBQzFELENBQUM7eUJBQ0gsQ0FBQztxQkFDSDs7MEJBeUhFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0NBQW9DO3lDQXRIM0MsS0FBSztzQkFBbkIsV0FBVztnQkFPSCxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBUUcsTUFBTTtzQkFBZCxLQUFLO2dCQVFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsSUFBSTtzQkFBWixLQUFLO2dCQVNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR04sU0FBUztzQkFEUixXQUFXO3VCQUFDLGVBQWU7Z0JBVW5CLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBPcHRpb25hbCxcbiAgSW5qZWN0LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktZmlsZS11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVVcGxvYWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ2luT3V0QW5pbWF0aW9uUHJvZ3Jlc3MnLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSkpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pKVxuICAgICAgXSlcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbkNoYW5nZScsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3VpLWZpbGUtdXBsb2FkJztcblxuICAvKipcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1heEZpbGVTaXplTUI6IG51bWJlcjtcblxuICAvKipcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1pbkZpbGVTaXplTUI6IG51bWJlcjtcblxuICAvKipcbiAgICogU3VwcG9ydGVkIGZpbGVzIGZvciBpbnB1dCBmaWVsZFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc3VwcG9ydGVkRmlsZVR5cGVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcGxvYWQgcHJvZ3Jlc3NcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHVwbG9hZFByb2dyZXNzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBlcnJvcnM/OiBzdHJpbmdbXSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGRpc2FibGVkXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRXhpc3RpbmcgZmlsZSBpbmZvcm1hdGlvblxuICAgKlxuICAgKiBAdHlwZSB7KEZpbGUgfCBudWxsKX1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ29sb3Igb2YgdGhlIGZpbGUgdXBsb2FkLlxuICAgKiBEZWZhdWx0cyB0byBUZXN0IEdvcmlsbGEgcHJpbWFyeSBjb2xvci5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGNvbXBhbnlDb2xvcjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1jb2xvcicpXG4gIGNvbXBDb2xvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKlxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgbGFiZWwgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYW4gaW5wdXQgZmllbGQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gc3VibWlzc2lvbi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhUmVxdWlyZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgT25Ecm9wOiBFdmVudEVtaXR0ZXI8RmlsZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZURyb3AnKSBmaWxlRHJvcDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0ZJTEVfVVBMT0FELic7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoID0gKCkgPT4ge1xuICB9O1xuXG4gIGlzTWlzc2VkTWluU2l6ZSA9IGZhbHNlO1xuICBwcm9ncmVzcyA9IGZhbHNlO1xuICBzdWNjZXNzID0gZmFsc2U7XG4gIGJyb3dzZTogYm9vbGVhbjtcbiAgaXNDYW5jZWxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgKSB7XG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gZGVmYXVsdEFwcFRoZW1lO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYnJvd3NlID0gdHJ1ZTtcbiAgfVxuXG4gIC8vV2hlbiBmaWxlIGlzIGRyb3BwZWRcbiAgb25GaWxlRHJvcHBlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLmVtaXRGaWxlKGZpbGVzKTtcbiAgfVxuXG4gIC8vV2hlbiBpbnB1dCBjaGFuZ2VzXG4gIG9uQ2hhbmdlVXBsb2FkKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuaXNDYW5jZWxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5lbWl0RmlsZShlbGVtZW50LmZpbGVzIHx8IG5ldyBGaWxlTGlzdCgpKTtcbiAgfVxuXG4gIC8vRW1pdCBkcm9wIGZpbGVcbiAgZW1pdEZpbGUoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgW2ZpbGVdID0gQXJyYXkuZnJvbShmaWxlcyk7XG4gICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICB0aGlzLmVycm9ycyA9IG51bGw7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gICAgdGhpcy5pc01pc3NlZE1pblNpemUgPVxuICAgICAgIWZpbGU/LnNpemUgJiYgIXRoaXMubWluRmlsZVNpemVNQiA/IHRydWUgOiB0aGlzLmZpbGVTaXplVG9NQihmaWxlPy5zaXplID8/IDApIDw9IHRoaXMubWluRmlsZVNpemVNQjtcbiAgICBpZiAoIXRoaXMuaXNNaXNzZWRNaW5TaXplKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZmlsZSk7XG4gICAgICB0aGlzLk9uRHJvcC5lbWl0KGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vU2hvdyBwcm9ncmVzcy1iYXJcbiAgc2hvd1Byb2dyZXNzKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMuYnJvd3NlID0gZmFsc2U7XG4gICAgcmV0dXJuICEhKHRoaXMuZmlsZSAmJiAhdGhpcy5lcnJvcnMgJiYgIXRoaXMuaXNNaXNzZWRNaW5TaXplKTtcbiAgfVxuXG4gIC8vU2hvdyBzdWNjZXNzIGVsZW1lbnRzXG4gIHNob3dTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmZpbGUgJiYgdGhpcy51cGxvYWRQcm9ncmVzcyA9PT0gMTAwICYmICF0aGlzLmVycm9ycyAmJiAhdGhpcy5pc01pc3NlZE1pblNpemUpO1xuICB9XG5cbiAgLy9TaG93IGJyb3dzZSB3aGVuIHRoZXJlIGFyZSBlcnJvclxuICBzaG93QnJvd3NlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmVycm9ycyB8fCB0aGlzLmlzTWlzc2VkTWluU2l6ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCF0aGlzLmlzQ2FuY2VsZWQpIHtcbiAgICAgIGlmIChjaGFuZ2VzWyd1cGxvYWRQcm9ncmVzcyddIHx8IGNoYW5nZXNbJ2ZpbGUnXSkge1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5zaG93UHJvZ3Jlc3MoKTtcbiAgICAgICAgdGhpcy5zdWNjZXNzID0gdGhpcy5zaG93U3VjY2VzcygpO1xuICAgICAgICB0aGlzLmJyb3dzZSA9IHRoaXMuc2hvd0Jyb3dzZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXNbJ2Vycm9ycyddKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLnNob3dQcm9ncmVzcygpO1xuICAgICAgICB0aGlzLnN1Y2Nlc3MgPSB0aGlzLnNob3dTdWNjZXNzKCk7XG4gICAgICAgIHRoaXMuYnJvd3NlID0gdGhpcy5zaG93QnJvd3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlc1snYXBwbGljYXRpb25UaGVtZSddKSB7XG4gICAgICAgIHRoaXMuY29tcENvbG9yID0gdGhpcy5nZXRDb21wYW55Q29sb3IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlPzogRmlsZSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5maWxlID0gdmFsdWUgfHwgbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcGFueUNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGFueUNvbG9yIHx8ICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICcjNDZBOTk3JyA6ICcjRDQxMEFBJyk7XG4gIH1cblxuICBwcml2YXRlIGZpbGVTaXplVG9NQihmaWxlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZmlsZVNpemUgLyAxMDI0IC8gMTAyNDtcbiAgfVxuXG4gIG9uS2V5ZG93bihldjogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldi5rZXkgPT09ICdFbnRlcicgfHwgZXYua2V5ID09PSAnICcpIHtcbiAgICAgIHRoaXMuZmlsZURyb3AubmF0aXZlRWxlbWVudC5jbGljaygpXG4gICAgfSBlbHNlIGlmICAoZXYua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICAgIHRoaXMuc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5wcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5lcnJvcnMgPSBudWxsO1xuICAgICAgdGhpcy5pc01pc3NlZE1pblNpemUgPSBmYWxzZTtcbiAgICAgIHRoaXMuYnJvd3NlID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNDYW5jZWxlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ1cGxvYWQtZmlsZS1jb250YWluZXJcIlxuICAgIHVpRHJhZ0Ryb3BcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJhcmlhUmVxdWlyZWRcIlxuICAgIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3VwbG9hZC1lcnJvcnMnOiAhIWVycm9ycyB8fCBpc01pc3NlZE1pblNpemUsICd1cGxvYWQtZmlsZS1jb250YWluZXItZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcbiAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICBbdGFiSW5kZXhdPVwiMFwiXG4gICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgIChjbGljayk9XCJmaWxlRHJvcC5uYXRpdmVFbGVtZW50LmNsaWNrKClcIlxuICA+XG4gICAgPHNwYW4gc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC05OTk5cHg7XCIgW2F0dHIuYXJpYS1saXZlXT1cIidwb2xpdGUnXCI+XG4gICAgICB7eyBzdWNjZXNzID8gKCdGSUxFX1VQTE9BRC5GSUxFX1VQTE9BRElOR19TVUNDRVNTJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIDogcHJvZ3Jlc3MgPyAoJ0ZJTEVfVVBMT0FELlVQTE9BRElORycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSA6ICcnIH19XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgKm5nSWY9XCIoYnJvd3NlICYmICEoc3VjY2VzcyAmJiAhIWZpbGUgJiYgcHJvZ3Jlc3MpKVwiIFtAaW5PdXRBbmltYXRpb25dIGNsYXNzPVwidXBsb2FkLWZpbGVzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWJyb3dzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImljb25UcGxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nSWY9XCIhIWVycm9ycyB8fCBpc01pc3NlZE1pblNpemVcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFlcnJvcnNcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj48dWktaWNvbiBuYW1lPVwiRXJyb3JcIiBjbGFzcz1cImVycm9yLWljb25cIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIHt7IGVycm9yIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc01pc3NlZE1pblNpemVcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIG5hbWU9XCJFcnJvclwiIGNsYXNzPVwiZXJyb3ItaWNvblwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdNSU5fU0laRV9FUlJPUicgfCB1aVRyYW5zbGF0ZSA6IHsgbWluOiBtaW5GaWxlU2l6ZU1CIH0gfCBhc3luYyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJzdWNjZXNzIHx8IHByb2dyZXNzID8gJycgOiAnZHJhZy1hbmQtZHJvcCdcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ3VwbG9hZC1zdXBwb3J0ZWQtZmlsZXMnXCJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwiLTFcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAjZmlsZURyb3BcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgaWQ9XCJmaWxlXCJcbiAgICAgICAgICBbYWNjZXB0XT1cInN1cHBvcnRlZEZpbGVUeXBlc1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlVXBsb2FkKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgZm9yPVwiZmlsZVwiIGNsYXNzPVwidHJhbnNwYXJlbnRcIj57eyAhIWZpbGUgJiYgc3VjY2VzcyA/ICcnIDogKHRyYW5zbGF0aW9uQ29udGV4dCArICdDSE9PU0VfRklMRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvbGFiZWw+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYyc7IGVsc2UgcmVicmFuZGVkRG5EQ29weVRwbFwiPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnRFJBR19BTkRfRFJPUF9PUicpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwic2VtaWJvbGRcIj4ge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdCUk9XU0UnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfCBsb3dlcmNhc2UgfX08L3NwYW4+IHt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnWU9VUl9GSUxFUycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIj57eyBtYXhGaWxlU2l6ZU1CIH19e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdNQVhfU0laRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtaW5GaWxlU2l6ZU1CXCIgY2xhc3M9XCJ1cGxvYWQtdGV4dFwiPnt7IG1pbkZpbGVTaXplTUIgfX17eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ01JTl9TSVpFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1jaGFuZ2VcIiBbQGluT3V0QW5pbWF0aW9uQ2hhbmdlXSAqbmdJZj1cIiEhc3VjY2VzcyAmJiAhIWZpbGUgJiYgISFwcm9ncmVzc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInN1Y2Nlc3MgfHwgcHJvZ3Jlc3MgPyAnJyA6ICdkcmFnLWFuZC1kcm9wJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic3VjY2VzcyB8fCBwcm9ncmVzcyA/ICcnIDogJ3N1cHBvcnRlZC1maWxlLXR5cGVzJ1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgI2ZpbGVEcm9wXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgaWQ9XCJmaWxlVGVzdFwiXG4gICAgICAgIFthY2NlcHRdPVwic3VwcG9ydGVkRmlsZVR5cGVzXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZVVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWwgZm9yPVwiZmlsZVwiIGNsYXNzPVwidHJhbnNwYXJlbnRcIj57eyAhIWZpbGUgJiYgc3VjY2VzcyA/ICcnIDogKHRyYW5zbGF0aW9uQ29udGV4dCArICdDSE9PU0VfRklMRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvbGFiZWw+XG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWREbkRDb3B5VHBsXCI+e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdEUkFHX0FORF9EUk9QX09SJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19Jm5ic3A7PHNwYW5cbiAgICAgICAgY2xhc3M9XCJzZW1pYm9sZFwiPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnQ0hBTkdFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIHwgbG93ZXJjYXNlIH19PC9zcGFuPiB7eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ1lPVVJfRklMRVMnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIlxuICAgICAgPjxzdHJvbmc+e3sgZmlsZS5uYW1lIH19PC9zdHJvbmc+PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1wcm9ncmVzc1wiIFtAaW5PdXRBbmltYXRpb25Qcm9ncmVzc10gKm5nSWY9XCIhIXByb2dyZXNzICYmICEhZmlsZSAmJiAhc3VjY2Vzc1wiPlxuICAgICAgPHA+e3sgZmlsZS5uYW1lIH19PC9wPlxuICAgICAgPHVpLXByb2dyZXNzLWJhciBbcHJvZ3Jlc3NdPVwidXBsb2FkUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFueUNvbG9yXT1cImNvbXBDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLXByb2dyZXNzLWJhcj5cbiAgICAgIDxwIGNsYXNzPVwidXBsb2FkLXRleHRcIj5cbiAgICAgICAge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdVUExPQURJTkcnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX0gPHNwYW4+e3sgdXBsb2FkUHJvZ3Jlc3MgfX08L3NwYW5cbiAgICAgID4lXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgI2ljb25UcGw+XG4gICAgICA8dWktaWNvbiAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWRJY29uVHBsXCIgY2xhc3M9XCJ1cGxvYWQtaWNvblwiXG4gICAgICAgICAgICAgICBuYW1lPVwiRmlsZS11cGxvYWRcIj48L3VpLWljb24+XG4gICAgICA8bmctdGVtcGxhdGUgI3JlYnJhbmRlZEljb25UcGw+XG4gICAgICAgIDx1aS1pY29uIGNsYXNzPVwidXBsb2FkLWljb25cIlxuICAgICAgICAgICAgICAgICBuYW1lPVwiVXBsb2FkXCJcbiAgICAgICAgICAgICAgICAgW3NpemVdPVwiJzI0J1wiXG4gICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNyZWJyYW5kZWREbkRDb3B5VHBsPlxuICAgICAgPHAgaWQ9XCInZHJhZy1hbmQtZHJvcCdcIj57eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ0RSQUdfQU5EX0RST1AnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3A+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiISFzdXBwb3J0ZWRGaWxlVHlwZXNcIlxuICAgICAgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICBjbGFzcz1cInVwbG9hZC1zdXBwb3J0ZWQtZmlsZXNcIlxuICAgICAgaWQ9XCJ1cGxvYWQtc3VwcG9ydGVkLWZpbGVzXCI+XG4gICAgICA8c3BhbiA+e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdTVVBQT1JURURfRklMRV9UWVBFUycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj57eyBzdXBwb3J0ZWRGaWxlVHlwZXMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -9,20 +9,20 @@ import { FileUploadComponent } from './file-upload.component';
|
|
|
9
9
|
import { UiTranslatePipe } from '../../pipes/ui-translate.pipe';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export class FileUploadComponentModule {
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
13
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
13
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponentModule, declarations: [FileUploadComponent, DragDropDirective], imports: [CommonModule,
|
|
14
14
|
MatFormFieldModule,
|
|
15
15
|
MatInputModule,
|
|
16
16
|
IconComponentModule,
|
|
17
17
|
ProgressBarComponentModule,
|
|
18
18
|
UiTranslatePipe], exports: [FileUploadComponent] }); }
|
|
19
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.
|
|
19
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponentModule, imports: [CommonModule,
|
|
20
20
|
MatFormFieldModule,
|
|
21
21
|
MatInputModule,
|
|
22
22
|
IconComponentModule,
|
|
23
23
|
ProgressBarComponentModule] }); }
|
|
24
24
|
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponentModule, decorators: [{
|
|
26
26
|
type: NgModule,
|
|
27
27
|
args: [{
|
|
28
28
|
declarations: [FileUploadComponent, DragDropDirective],
|
|
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
|
|
|
37
37
|
exports: [FileUploadComponent],
|
|
38
38
|
}]
|
|
39
39
|
}] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBY2hFLE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjtnSEFBekIseUJBQXlCLGlCQVhyQixtQkFBbUIsRUFBRSxpQkFBaUIsYUFFbkQsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLDBCQUEwQjtZQUMxQixlQUFlLGFBRVAsbUJBQW1CO2dIQUVsQix5QkFBeUIsWUFUbEMsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLDBCQUEwQjs7NEZBS2pCLHlCQUF5QjtrQkFackMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQztvQkFDdEQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBEcmFnRHJvcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJDb21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS11cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IFVpVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3VpLXRyYW5zbGF0ZS5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRmlsZVVwbG9hZENvbXBvbmVudCwgRHJhZ0Ryb3BEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50TW9kdWxlLFxuICAgIFByb2dyZXNzQmFyQ29tcG9uZW50TW9kdWxlLFxuICAgIFVpVHJhbnNsYXRlUGlwZSxcbiAgXSxcbiAgZXhwb3J0czogW0ZpbGVVcGxvYWRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50TW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Color } from '../../models/colors.model';
|
|
3
|
+
import gaussian from 'gaussian';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ng2-charts";
|
|
6
|
+
import * as i2 from "@angular/material/tooltip";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "../icon/icon.component";
|
|
9
|
+
import * as i5 from "../../pipes/ui-translate.pipe";
|
|
10
|
+
import * as i6 from "../../pipes/memoize-func.pipe";
|
|
11
|
+
var PercentileThreshold;
|
|
12
|
+
(function (PercentileThreshold) {
|
|
13
|
+
PercentileThreshold[PercentileThreshold["LOWEST"] = 20] = "LOWEST";
|
|
14
|
+
PercentileThreshold[PercentileThreshold["LOWER"] = 40] = "LOWER";
|
|
15
|
+
PercentileThreshold[PercentileThreshold["AVERAGE"] = 60] = "AVERAGE";
|
|
16
|
+
PercentileThreshold[PercentileThreshold["HIGHER"] = 80] = "HIGHER";
|
|
17
|
+
PercentileThreshold[PercentileThreshold["HIGHEST"] = 100] = "HIGHEST";
|
|
18
|
+
})(PercentileThreshold || (PercentileThreshold = {}));
|
|
19
|
+
export class GaussianChartComponent {
|
|
20
|
+
constructor() {
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
* Defines the application theme
|
|
24
|
+
*
|
|
25
|
+
* @type {ApplicationTheme}
|
|
26
|
+
* @memberof SpinnerComponent
|
|
27
|
+
*/
|
|
28
|
+
this.applicationTheme = 'light';
|
|
29
|
+
this.minXValue = -3;
|
|
30
|
+
this.maxXValue = 3;
|
|
31
|
+
this.minYValue = 0;
|
|
32
|
+
this.stepSize = 0.1;
|
|
33
|
+
this.pointsToSkip = 2;
|
|
34
|
+
this.actualMinXvalue = this.minXValue + this.pointsToSkip * this.stepSize;
|
|
35
|
+
this.actualMaxXvalue = this.maxXValue - this.pointsToSkip * this.stepSize;
|
|
36
|
+
this.normalContainerPadding = 50; //in px
|
|
37
|
+
this.bestScoreThreshold = 92;
|
|
38
|
+
this.bestScoreSpacingRight = '4px';
|
|
39
|
+
this.bestScoreSpacingLeft = '-39px';
|
|
40
|
+
this.PercentileThreshold = PercentileThreshold;
|
|
41
|
+
this.gaussianChartData = {
|
|
42
|
+
labels: [],
|
|
43
|
+
datasets: [],
|
|
44
|
+
};
|
|
45
|
+
this.translationContext = 'CHARTS.GAUSSIAN_CHART.';
|
|
46
|
+
}
|
|
47
|
+
ngOnInit() {
|
|
48
|
+
if (this.score === undefined || this.score === null) {
|
|
49
|
+
throw new Error('Input "score" is required for GaussianChartComponent.');
|
|
50
|
+
}
|
|
51
|
+
if (this.bestCandidateScore === undefined || this.bestCandidateScore === null) {
|
|
52
|
+
throw new Error('Input "bestCandidateScore" is required for GaussianChartComponent.');
|
|
53
|
+
}
|
|
54
|
+
this.setActiveBucket();
|
|
55
|
+
this.gaussianDistribution = gaussian(0, 1);
|
|
56
|
+
this.maxYValue = this.gaussianDistribution.pdf(0);
|
|
57
|
+
this.setOverlayValues();
|
|
58
|
+
this.setOverlayValuesForBestScore();
|
|
59
|
+
this.setChartData();
|
|
60
|
+
this.setChartOptions();
|
|
61
|
+
}
|
|
62
|
+
setChartData() {
|
|
63
|
+
const xValues = [];
|
|
64
|
+
const yValues = [];
|
|
65
|
+
const labels = this.generateLabels(this.minXValue, this.maxXValue, this.stepSize);
|
|
66
|
+
for (let x = this.minXValue; x < this.maxXValue + this.stepSize; x = Number((x + this.stepSize).toFixed(2))) {
|
|
67
|
+
xValues.push(x);
|
|
68
|
+
yValues.push(this.gaussianDistribution.pdf(x));
|
|
69
|
+
}
|
|
70
|
+
this.gaussianChartData = {
|
|
71
|
+
labels,
|
|
72
|
+
datasets: this.generateDataset(yValues),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
setChartOptions() {
|
|
76
|
+
this.gaussianChartOptions = {
|
|
77
|
+
responsive: true,
|
|
78
|
+
maintainAspectRatio: false,
|
|
79
|
+
scales: this.getScale(),
|
|
80
|
+
plugins: {
|
|
81
|
+
// To be used only for dev purpose
|
|
82
|
+
// tooltip: this.getTooltip(),
|
|
83
|
+
// Comment the below line if you enable the call for tooltip
|
|
84
|
+
tooltip: {
|
|
85
|
+
enabled: false,
|
|
86
|
+
},
|
|
87
|
+
legend: {
|
|
88
|
+
display: false,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
getTooltip() {
|
|
94
|
+
return {
|
|
95
|
+
intersect: false,
|
|
96
|
+
mode: 'nearest',
|
|
97
|
+
displayColors: false,
|
|
98
|
+
callbacks: {
|
|
99
|
+
label: tooltipItem => {
|
|
100
|
+
const value = (this.gaussianDistribution.cdf(parseFloat(tooltipItem.label)) * 100).toFixed(2);
|
|
101
|
+
return `${value}%`;
|
|
102
|
+
},
|
|
103
|
+
title: () => '', // Disable the default title
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
getScale() {
|
|
108
|
+
return {
|
|
109
|
+
x: {
|
|
110
|
+
display: false,
|
|
111
|
+
grid: {
|
|
112
|
+
display: false, // Disable grid lines for x-axis
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
y: {
|
|
116
|
+
display: false,
|
|
117
|
+
grid: {
|
|
118
|
+
display: false, // Disable grid lines for y-axis
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
generateDataset(yValues) {
|
|
124
|
+
return [
|
|
125
|
+
{
|
|
126
|
+
data: [...yValues.slice(0, this.pointsToSkip), ...Array(yValues.length - this.pointsToSkip).fill(null)],
|
|
127
|
+
label: '',
|
|
128
|
+
borderColor: this.activeBucket === PercentileThreshold.LOWEST ? Color.ACCENT_20 : Color.TGO_WHITE,
|
|
129
|
+
borderWidth: 2,
|
|
130
|
+
pointRadius: 0,
|
|
131
|
+
fill: false,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
data: [
|
|
135
|
+
...Array(this.pointsToSkip).fill(null),
|
|
136
|
+
...yValues.slice(this.pointsToSkip, yValues.length - this.pointsToSkip),
|
|
137
|
+
...Array(this.pointsToSkip).fill(null),
|
|
138
|
+
],
|
|
139
|
+
label: '',
|
|
140
|
+
borderColor: Color.BLACK,
|
|
141
|
+
borderWidth: 2,
|
|
142
|
+
pointRadius: 0,
|
|
143
|
+
fill: false,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
data: [
|
|
147
|
+
...Array(yValues.length - this.pointsToSkip).fill(null),
|
|
148
|
+
...yValues.slice(yValues.length - this.pointsToSkip, yValues.length),
|
|
149
|
+
],
|
|
150
|
+
label: '',
|
|
151
|
+
borderColor: this.activeBucket === PercentileThreshold.HIGHEST ? Color.ACCENT_20 : Color.TGO_WHITE,
|
|
152
|
+
borderWidth: 2,
|
|
153
|
+
pointRadius: 0,
|
|
154
|
+
fill: false,
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
}
|
|
158
|
+
generateLabels(min, max, step) {
|
|
159
|
+
const labels = [];
|
|
160
|
+
for (let x = min; x < max + step; x = Number((x + step).toFixed(2))) {
|
|
161
|
+
labels.push(x.toFixed(1));
|
|
162
|
+
}
|
|
163
|
+
return labels;
|
|
164
|
+
}
|
|
165
|
+
setActiveBucket() {
|
|
166
|
+
if (this.score < PercentileThreshold.LOWEST) {
|
|
167
|
+
this.activeBucket = PercentileThreshold.LOWEST;
|
|
168
|
+
}
|
|
169
|
+
else if (this.score >= PercentileThreshold.LOWEST && this.score < PercentileThreshold.LOWER) {
|
|
170
|
+
this.activeBucket = PercentileThreshold.LOWER;
|
|
171
|
+
}
|
|
172
|
+
else if (this.score >= PercentileThreshold.LOWER && this.score < PercentileThreshold.AVERAGE) {
|
|
173
|
+
this.activeBucket = PercentileThreshold.AVERAGE;
|
|
174
|
+
}
|
|
175
|
+
else if (this.score >= PercentileThreshold.AVERAGE && this.score < PercentileThreshold.HIGHER) {
|
|
176
|
+
this.activeBucket = PercentileThreshold.HIGHER;
|
|
177
|
+
}
|
|
178
|
+
else if (this.score >= PercentileThreshold.HIGHER) {
|
|
179
|
+
this.activeBucket = PercentileThreshold.HIGHEST;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// For more context: https://testgorilla.atlassian.net/wiki/spaces/SR/pages/1813905736/Percentiles+curve+FE+implementation
|
|
183
|
+
setOverlayValues() {
|
|
184
|
+
const { overlayXValue, overlayYValue } = this.calculateOverlayValues(this.score);
|
|
185
|
+
this.overlayXValue = overlayXValue;
|
|
186
|
+
this.overlayYValue = overlayYValue;
|
|
187
|
+
}
|
|
188
|
+
setOverlayValuesForBestScore() {
|
|
189
|
+
const { overlayXValue, overlayYValue } = this.calculateOverlayValues(this.bestCandidateScore);
|
|
190
|
+
this.overlayXBestScoreValue = overlayXValue;
|
|
191
|
+
this.overlayYBestScoreValue = overlayYValue;
|
|
192
|
+
}
|
|
193
|
+
calculateOverlayValues(score) {
|
|
194
|
+
const xValue = this.mapRange(score, 0, 100, this.minXValue, this.maxXValue);
|
|
195
|
+
const yValue = this.gaussianDistribution.pdf(xValue);
|
|
196
|
+
let overlayXValue = score;
|
|
197
|
+
let overlayYValue = this.mapRange(yValue, this.minYValue, this.maxYValue, 0, 100);
|
|
198
|
+
if (xValue <= this.actualMinXvalue || xValue >= this.actualMaxXvalue) {
|
|
199
|
+
const xValueExtreme = xValue <= this.actualMinXvalue ? this.actualMinXvalue : this.actualMaxXvalue;
|
|
200
|
+
const yValueExtreme = this.gaussianDistribution.pdf(xValueExtreme);
|
|
201
|
+
overlayXValue = this.mapRange(xValueExtreme, this.minXValue, this.maxXValue, 0, 100);
|
|
202
|
+
overlayYValue = this.mapRange(yValueExtreme, this.minYValue, this.maxYValue, 0, 100);
|
|
203
|
+
}
|
|
204
|
+
return { overlayXValue, overlayYValue };
|
|
205
|
+
}
|
|
206
|
+
mapRange(value, inMin, inMax, outMin, outMax) {
|
|
207
|
+
return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;
|
|
208
|
+
}
|
|
209
|
+
getCalcPosition([percentage, pixels, operation = 'add']) {
|
|
210
|
+
const operator = operation === 'add' ? '+' : '-';
|
|
211
|
+
return `calc(${percentage}% ${operator} ${pixels}px)`;
|
|
212
|
+
}
|
|
213
|
+
getBestScoreContentPosition(bestScore) {
|
|
214
|
+
return bestScore < this.bestScoreThreshold ? this.bestScoreSpacingRight : this.bestScoreSpacingLeft;
|
|
215
|
+
}
|
|
216
|
+
getScoreTranslationKey(score) {
|
|
217
|
+
if (score < PercentileThreshold.LOWEST) {
|
|
218
|
+
return 'PERCENTILE_LABEL_TYPES.WELL_BELOW_AVERAGE';
|
|
219
|
+
}
|
|
220
|
+
else if (score >= PercentileThreshold.LOWEST && score < PercentileThreshold.LOWER) {
|
|
221
|
+
return 'PERCENTILE_LABEL_TYPES.BELOW_AVERAGE';
|
|
222
|
+
}
|
|
223
|
+
else if (score >= PercentileThreshold.LOWER && score < PercentileThreshold.AVERAGE) {
|
|
224
|
+
return 'PERCENTILE_LABEL_TYPES.AVERAGE';
|
|
225
|
+
}
|
|
226
|
+
else if (score >= PercentileThreshold.AVERAGE && score < PercentileThreshold.HIGHER) {
|
|
227
|
+
return 'PERCENTILE_LABEL_TYPES.ABOVE_AVERAGE';
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
return 'PERCENTILE_LABEL_TYPES.WELL_ABOVE_AVERAGE';
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
234
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GaussianChartComponent, selector: "ui-gaussian-chart", inputs: { score: "score", bestCandidateScore: "bestCandidateScore", applicationTheme: "applicationTheme" }, ngImport: i0, template: "<div class=\"chart-section\" *ngIf=\"score\"\n [attr.aria-label]=\"(translationContext + 'ARIA_LABEL') | uiTranslate :\n { score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async\n } | async\"\n tabindex=\"0\">\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart\n [data]=\"gaussianChartData\"\n [options]=\"gaussianChartOptions\"\n type=\"line\"\n class=\"chart\"\n >\n </canvas>\n <div class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc : getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc : getCalcPosition\">\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{score}}</span>\n </div>\n </div>\n <div class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc : getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\">\n <div class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc : getBestScoreContentPosition : this\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{bestCandidateScore}}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST') | uiTranslate | async}}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <div class=\"legend-container mt-16\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\"></ui-icon>\n {{(translationContext + 'CANDIDATE_SCORE') | uiTranslate | async}}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{(translationContext + 'HIGHEST_SCORE') | uiTranslate | async}}\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.chart-section{display:flex;flex-direction:column;gap:8px;overflow:auto;width:100%}.chart-section .chart-range-wrapper{display:flex;flex-direction:column;gap:8px;width:100%}.chart-section .chart-range-wrapper .normal-chart-container{position:relative;padding-bottom:32px;padding-top:50px;margin-top:16px;border:1px solid #D3D3D3;border-radius:10px;width:100%;height:230px}.chart-section .chart-range-wrapper .normal-chart-container .normal-chart{position:relative;z-index:1;width:100%;height:100%}.chart-section .chart-range-wrapper .normal-chart-container .overlay{position:absolute;top:0;left:0;height:100%;width:100%;display:flex}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column{flex:1;font-size:12px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column .column-item{cursor:pointer}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column:not(:last-child){border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active{background-color:#fff5ed;border-bottom:3px solid #242424}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border:none;position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{content:\"\";position:absolute;bottom:0;width:calc(100% - 4px);height:2.5px;background-color:#000}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before{right:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{left:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon{position:absolute;z-index:1;display:flex;flex-direction:column;align-items:center}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon{position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon .curve-score{font-size:14px;font-weight:700;position:absolute;width:100%;text-align:center;top:0;left:.5px;padding:4px 4px 9px}.chart-section .chart-range-wrapper .normal-chart-container .best-score{position:absolute;border-left:1px #242424 dashed}.chart-section .chart-range-wrapper .normal-chart-container .best-score .best-score-content{position:absolute;display:flex;gap:3px;align-items:center}.chart-section .chart-range-wrapper .range{display:flex;justify-content:space-between;color:#919191}.chart-section .chart-range-wrapper .range div{width:35px;text-align:center}.chart-section .chart-range-wrapper .range div:nth-child(2){text-align:left}.chart-section .chart-range-wrapper .range div:nth-last-child(2){text-align:right}.chart-section .legend-container{display:flex;gap:16px}.chart-section .legend-container .legend{display:flex;gap:8px;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.BaseChartDirective, selector: "canvas[baseChart]", inputs: ["type", "legend", "data", "options", "plugins", "labels", "datasets"], outputs: ["chartClick", "chartHover"], exportAs: ["base-chart"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "pipe", type: i5.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.MemoizeFuncPipe, name: "memoizeFunc" }] }); }
|
|
235
|
+
}
|
|
236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponent, decorators: [{
|
|
237
|
+
type: Component,
|
|
238
|
+
args: [{ selector: 'ui-gaussian-chart', template: "<div class=\"chart-section\" *ngIf=\"score\"\n [attr.aria-label]=\"(translationContext + 'ARIA_LABEL') | uiTranslate :\n { score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async\n } | async\"\n tabindex=\"0\">\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart\n [data]=\"gaussianChartData\"\n [options]=\"gaussianChartOptions\"\n type=\"line\"\n class=\"chart\"\n >\n </canvas>\n <div class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc : getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc : getCalcPosition\">\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{score}}</span>\n </div>\n </div>\n <div class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc : getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\">\n <div class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc : getBestScoreContentPosition : this\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{bestCandidateScore}}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST') | uiTranslate | async}}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <div class=\"legend-container mt-16\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\"></ui-icon>\n {{(translationContext + 'CANDIDATE_SCORE') | uiTranslate | async}}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{(translationContext + 'HIGHEST_SCORE') | uiTranslate | async}}\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.chart-section{display:flex;flex-direction:column;gap:8px;overflow:auto;width:100%}.chart-section .chart-range-wrapper{display:flex;flex-direction:column;gap:8px;width:100%}.chart-section .chart-range-wrapper .normal-chart-container{position:relative;padding-bottom:32px;padding-top:50px;margin-top:16px;border:1px solid #D3D3D3;border-radius:10px;width:100%;height:230px}.chart-section .chart-range-wrapper .normal-chart-container .normal-chart{position:relative;z-index:1;width:100%;height:100%}.chart-section .chart-range-wrapper .normal-chart-container .overlay{position:absolute;top:0;left:0;height:100%;width:100%;display:flex}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column{flex:1;font-size:12px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column .column-item{cursor:pointer}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column:not(:last-child){border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active{background-color:#fff5ed;border-bottom:3px solid #242424}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border:none;position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{content:\"\";position:absolute;bottom:0;width:calc(100% - 4px);height:2.5px;background-color:#000}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before{right:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{left:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon{position:absolute;z-index:1;display:flex;flex-direction:column;align-items:center}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon{position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon .curve-score{font-size:14px;font-weight:700;position:absolute;width:100%;text-align:center;top:0;left:.5px;padding:4px 4px 9px}.chart-section .chart-range-wrapper .normal-chart-container .best-score{position:absolute;border-left:1px #242424 dashed}.chart-section .chart-range-wrapper .normal-chart-container .best-score .best-score-content{position:absolute;display:flex;gap:3px;align-items:center}.chart-section .chart-range-wrapper .range{display:flex;justify-content:space-between;color:#919191}.chart-section .chart-range-wrapper .range div{width:35px;text-align:center}.chart-section .chart-range-wrapper .range div:nth-child(2){text-align:left}.chart-section .chart-range-wrapper .range div:nth-last-child(2){text-align:right}.chart-section .legend-container{display:flex;gap:16px}.chart-section .legend-container .legend{display:flex;gap:8px;align-items:center}\n"] }]
|
|
239
|
+
}], propDecorators: { score: [{
|
|
240
|
+
type: Input
|
|
241
|
+
}], bestCandidateScore: [{
|
|
242
|
+
type: Input
|
|
243
|
+
}], applicationTheme: [{
|
|
244
|
+
type: Input
|
|
245
|
+
}] } });
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2dhdXNzaWFuLWNoYXJ0L2dhdXNzaWFuLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9nYXVzc2lhbi1jaGFydC9nYXVzc2lhbi1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEQsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDOzs7Ozs7OztBQUVoQyxJQUFLLG1CQU1KO0FBTkQsV0FBSyxtQkFBbUI7SUFDdEIsa0VBQVcsQ0FBQTtJQUNYLGdFQUFVLENBQUE7SUFDVixvRUFBWSxDQUFBO0lBQ1osa0VBQVcsQ0FBQTtJQUNYLHFFQUFhLENBQUE7QUFDZixDQUFDLEVBTkksbUJBQW1CLEtBQW5CLG1CQUFtQixRQU12QjtBQU9ELE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFvQkU7Ozs7OztXQU1HO1FBQ00scUJBQWdCLEdBQXFCLE9BQU8sQ0FBQztRQUU3QyxjQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDZixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixvQkFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3JFLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJ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QU0sS0FBSyxDQUFDO0lBQ3hELENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxTQUFpQjtRQUMzQyxPQUFPLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3RHLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sMkNBQTJDLENBQUM7UUFDckQsQ0FBQzthQUFNLElBQUksS0FBSyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEYsT0FBTyxzQ0FBc0MsQ0FBQztRQUNoRCxDQUFDO2FBQU0sSUFBSSxLQUFLLElBQUksbUJBQW1CLENBQUMsS0FBSyxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyRixPQUFPLGdDQUFnQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxJQUFJLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RGLE9BQU8sc0NBQXNDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLDJDQUEyQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDOytHQTdQVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixxS0NwQm5DLGkvSUE0RkE7OzRGRHhFYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1COzhCQVVwQixLQUFLO3NCQUFiLEtBQUs7Z0JBT0csa0JBQWtCO3NCQUExQixLQUFLO2dCQVNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBDaGFydCwgQ2hhcnREYXRhLCBDaGFydE9wdGlvbnMsIFRvb2x0aXBPcHRpb25zIH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sb3JzLm1vZGVsJztcbmltcG9ydCB7IF9EZWVwUGFydGlhbE9iamVjdCB9IGZyb20gJ2NoYXJ0LmpzL2Rpc3QvdHlwZXMvdXRpbHMnO1xuaW1wb3J0IGdhdXNzaWFuIGZyb20gJ2dhdXNzaWFuJztcblxuZW51bSBQZXJjZW50aWxlVGhyZXNob2xkIHtcbiAgTE9XRVNUID0gMjAsXG4gIExPV0VSID0gNDAsXG4gIEFWRVJBR0UgPSA2MCxcbiAgSElHSEVSID0gODAsXG4gIEhJR0hFU1QgPSAxMDAsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWdhdXNzaWFuLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhdXNzaWFuLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2F1c3NpYW5DaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgY2FuZGlkYXRlIHNjb3JlIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzY29yZSE6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJlc3QgY2FuZGlkYXRlIHNjb3JlIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBiZXN0Q2FuZGlkYXRlU2NvcmUhOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgU3Bpbm5lckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgcmVhZG9ubHkgbWluWFZhbHVlID0gLTM7XG4gIHJlYWRvbmx5IG1heFhWYWx1ZSA9IDM7XG4gIHJlYWRvbmx5IG1pbllWYWx1ZSA9IDA7XG4gIHJlYWRvbmx5IHN0ZXBTaXplID0gMC4xO1xuICByZWFkb25seSBwb2ludHNUb1NraXAgPSAyO1xuICByZWFkb25seSBhY3R1YWxNaW5YdmFsdWUgPSB0aGlzLm1pblhWYWx1ZSArIHRoaXMucG9pbnRzVG9Ta2lwICogdGhpcy5zdGVwU2l6ZTtcbiAgcmVhZG9ubHkgYWN0dWFsTWF4WHZhbHVlID0gdGhpcy5tYXhYVmFsdWUgLSB0aGlzLnBvaW50c1RvU2tpcCAqIHRoaXMuc3RlcFNpemU7XG4gIHJlYWRvbmx5IG5vcm1hbENvbnRhaW5lclBhZGRpbmcgPSA1MDsgLy9pbiBweFxuICByZWFkb25seSBiZXN0U2NvcmVUaHJlc2hvbGQgPSA5MjtcbiAgcmVhZG9ubHkgYmVzdFNjb3JlU3BhY2luZ1JpZ2h0ID0gJzRweCc7XG4gIHJlYWRvbmx5IGJlc3RTY29yZVNwYWNpbmdMZWZ0ID0gJy0zOXB4JztcblxuICBQZXJjZW50aWxlVGhyZXNob2xkID0gUGVyY2VudGlsZVRocmVzaG9sZDtcbiAgY2hhcnQ6IENoYXJ0O1xuICBnYXVzc2lhbkRpc3RyaWJ1dGlvbjogZ2F1c3NpYW4uR2F1c3NpYW47XG4gIGFjdGl2ZUJ1Y2tldDogUGVyY2VudGlsZVRocmVzaG9sZDtcbiAgb3ZlcmxheVhWYWx1ZTogbnVtYmVyO1xuICBvdmVybGF5WVZhbHVlOiBudW1iZXI7XG4gIG92ZXJsYXlYQmVzdFNjb3JlVmFsdWU6IG51bWJlcjtcbiAgb3ZlcmxheVlCZXN0U2NvcmVWYWx1ZTogbnVtYmVyO1xuICBtYXhZVmFsdWU6IG51bWJlcjtcblxuICBnYXVzc2lhbkNoYXJ0RGF0YTogQ2hhcnREYXRhPCdsaW5lJz4gPSB7XG4gICAgbGFiZWxzOiBbXSxcbiAgICBkYXRhc2V0czogW10sXG4gIH07XG4gIGdhdXNzaWFuQ2hhcnRPcHRpb25zOiBDaGFydE9wdGlvbnM8J2xpbmUnPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYW5zbGF0aW9uQ29udGV4dCA9ICdDSEFSVFMuR0FVU1NJQU5fQ0hBUlQuJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuc2NvcmUgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgXCJzY29yZVwiIGlzIHJlcXVpcmVkIGZvciBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50LicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5iZXN0Q2FuZGlkYXRlU2NvcmUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmJlc3RDYW5kaWRhdGVTY29yZSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBcImJlc3RDYW5kaWRhdGVTY29yZVwiIGlzIHJlcXVpcmVkIGZvciBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50LicpO1xuICAgIH1cbiAgICB0aGlzLnNldEFjdGl2ZUJ1Y2tldCgpO1xuICAgIHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24gPSBnYXVzc2lhbigwLCAxKTtcbiAgICB0aGlzLm1heFlWYWx1ZSA9IHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKDApO1xuICAgIHRoaXMuc2V0T3ZlcmxheVZhbHVlcygpO1xuICAgIHRoaXMuc2V0T3ZlcmxheVZhbHVlc0ZvckJlc3RTY29yZSgpO1xuICAgIHRoaXMuc2V0Q2hhcnREYXRhKCk7XG4gICAgdGhpcy5zZXRDaGFydE9wdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hhcnREYXRhKCkge1xuICAgIGNvbnN0IHhWYWx1ZXM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgeVZhbHVlczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmdlbmVyYXRlTGFiZWxzKHRoaXMubWluWFZhbHVlLCB0aGlzLm1heFhWYWx1ZSwgdGhpcy5zdGVwU2l6ZSk7XG5cbiAgICBmb3IgKGxldCB4ID0gdGhpcy5taW5YVmFsdWU7IHggPCB0aGlzLm1heFhWYWx1ZSArIHRoaXMuc3RlcFNpemU7IHggPSBOdW1iZXIoKHggKyB0aGlzLnN0ZXBTaXplKS50b0ZpeGVkKDIpKSkge1xuICAgICAgeFZhbHVlcy5wdXNoKHgpO1xuICAgICAgeVZhbHVlcy5wdXNoKHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKHgpKTtcbiAgICB9XG5cbiAgICB0aGlzLmdhdXNzaWFuQ2hhcnREYXRhID0ge1xuICAgICAgbGFiZWxzLFxuICAgICAgZGF0YXNldHM6IHRoaXMuZ2VuZXJhdGVEYXRhc2V0KHlWYWx1ZXMpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldENoYXJ0T3B0aW9ucygpIHtcbiAgICB0aGlzLmdhdXNzaWFuQ2hhcnRPcHRpb25zID0ge1xuICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgc2NhbGVzOiB0aGlzLmdldFNjYWxlKCksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIC8vIFRvIGJlIHVzZWQgb25seSBmb3IgZGV2IHB1cnBvc2VcbiAgICAgICAgLy8gdG9vbHRpcDogdGhpcy5nZXRUb29sdGlwKCksXG4gICAgICAgIC8vIENvbW1lbnQgdGhlIGJlbG93IGxpbmUgaWYgeW91IGVuYWJsZSB0aGUgY2FsbCBmb3IgdG9vbHRpcFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb29sdGlwKCk6IF9EZWVwUGFydGlhbE9iamVjdDxUb29sdGlwT3B0aW9uczwnbGluZSc+PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludGVyc2VjdDogZmFsc2UsXG4gICAgICBtb2RlOiAnbmVhcmVzdCcsXG4gICAgICBkaXNwbGF5Q29sb3JzOiBmYWxzZSxcbiAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICBsYWJlbDogdG9vbHRpcEl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24uY2RmKHBhcnNlRmxvYXQodG9vbHRpcEl0ZW0ubGFiZWwpKSAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICAgICAgICByZXR1cm4gYCR7dmFsdWV9JWA7XG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiAoKSA9PiAnJywgLy8gRGlzYWJsZSB0aGUgZGVmYXVsdCB0aXRsZVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY2FsZSgpOiB7XG4gICAgeDogeyBkaXNwbGF5OiBib29sZWFuOyBncmlkOiB7IGRpc3BsYXk6IGJvb2xlYW4gfSB9O1xuICAgIHk6IHsgZGlzcGxheTogYm9vbGVhbjsgZ3JpZDogeyBkaXNwbGF5OiBib29sZWFuIH0gfTtcbiAgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHtcbiAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgIGdyaWQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSwgLy8gRGlzYWJsZSBncmlkIGxpbmVzIGZvciB4LWF4aXNcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB5OiB7XG4gICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICBncmlkOiB7XG4gICAgICAgICAgZGlzcGxheTogZmFsc2UsIC8vIERpc2FibGUgZ3JpZCBsaW5lcyBmb3IgeS1heGlzXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRGF0YXNldChcbiAgICB5VmFsdWVzOiBudW1iZXJbXVxuICApOiB7IGRhdGE6IGFueVtdOyBsYWJlbDogc3RyaW5nOyBib3JkZXJDb2xvcjogQ29sb3I7IGJvcmRlcldpZHRoOiBudW1iZXI7IHBvaW50UmFkaXVzOiBudW1iZXI7IGZpbGw6IGJvb2xlYW4gfVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBkYXRhOiBbLi4ueVZhbHVlcy5zbGljZSgwLCB0aGlzLnBvaW50c1RvU2tpcCksIC4uLkFycmF5KHlWYWx1ZXMubGVuZ3RoIC0gdGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCldLFxuICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIGJvcmRlckNvbG9yOiB0aGlzLmFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1QgPyBDb2xvci5BQ0NFTlRfMjAgOiBDb2xvci5UR09fV0hJVEUsXG4gICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICBwb2ludFJhZGl1czogMCxcbiAgICAgICAgZmlsbDogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgICAgLi4ueVZhbHVlcy5zbGljZSh0aGlzLnBvaW50c1RvU2tpcCwgeVZhbHVlcy5sZW5ndGggLSB0aGlzLnBvaW50c1RvU2tpcCksXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgIF0sXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgYm9yZGVyQ29sb3I6IENvbG9yLkJMQUNLLFxuICAgICAgICBib3JkZXJXaWR0aDogMixcbiAgICAgICAgcG9pbnRSYWRpdXM6IDAsXG4gICAgICAgIGZpbGw6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGF0YTogW1xuICAgICAgICAgIC4uLkFycmF5KHlWYWx1ZXMubGVuZ3RoIC0gdGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgICAgLi4ueVZhbHVlcy5zbGljZSh5VmFsdWVzLmxlbmd0aCAtIHRoaXMucG9pbnRzVG9Ta2lwLCB5VmFsdWVzLmxlbmd0aCksXG4gICAgICAgIF0sXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgYm9yZGVyQ29sb3I6IHRoaXMuYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1QgPyBDb2xvci5BQ0NFTlRfMjAgOiBDb2xvci5UR09fV0hJVEUsXG4gICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICBwb2ludFJhZGl1czogMCxcbiAgICAgICAgZmlsbDogZmFsc2UsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlTGFiZWxzKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgc3RlcDogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGxhYmVscyA9IFtdO1xuICAgIGZvciAobGV0IHggPSBtaW47IHggPCBtYXggKyBzdGVwOyB4ID0gTnVtYmVyKCh4ICsgc3RlcCkudG9GaXhlZCgyKSkpIHtcbiAgICAgIGxhYmVscy5wdXNoKHgudG9GaXhlZCgxKSk7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZUJ1Y2tldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUKSB7XG4gICAgICB0aGlzLmFjdGl2ZUJ1Y2tldCA9IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VTVCAmJiB0aGlzLnNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUikge1xuICAgICAgdGhpcy5hY3RpdmVCdWNrZXQgPSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VSO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VSICYmIHRoaXMuc2NvcmUgPCBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0UpIHtcbiAgICAgIHRoaXMuYWN0aXZlQnVja2V0ID0gUGVyY2VudGlsZVRocmVzaG9sZC5BVkVSQUdFO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0UgJiYgdGhpcy5zY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVSKSB7XG4gICAgICB0aGlzLmFjdGl2ZUJ1Y2tldCA9IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVSO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFUikge1xuICAgICAgdGhpcy5hY3RpdmVCdWNrZXQgPSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1Q7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIG1vcmUgY29udGV4dDogaHR0cHM6Ly90ZXN0Z29yaWxsYS5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1NSL3BhZ2VzLzE4MTM5MDU3MzYvUGVyY2VudGlsZXMrY3VydmUrRkUraW1wbGVtZW50YXRpb25cbiAgcHJpdmF0ZSBzZXRPdmVybGF5VmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgb3ZlcmxheVhWYWx1ZSwgb3ZlcmxheVlWYWx1ZSB9ID0gdGhpcy5jYWxjdWxhdGVPdmVybGF5VmFsdWVzKHRoaXMuc2NvcmUpO1xuICAgIHRoaXMub3ZlcmxheVhWYWx1ZSA9IG92ZXJsYXlYVmFsdWU7XG4gICAgdGhpcy5vdmVybGF5WVZhbHVlID0gb3ZlcmxheVlWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0T3ZlcmxheVZhbHVlc0ZvckJlc3RTY29yZSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IG92ZXJsYXlYVmFsdWUsIG92ZXJsYXlZVmFsdWUgfSA9IHRoaXMuY2FsY3VsYXRlT3ZlcmxheVZhbHVlcyh0aGlzLmJlc3RDYW5kaWRhdGVTY29yZSk7XG4gICAgdGhpcy5vdmVybGF5WEJlc3RTY29yZVZhbHVlID0gb3ZlcmxheVhWYWx1ZTtcbiAgICB0aGlzLm92ZXJsYXlZQmVzdFNjb3JlVmFsdWUgPSBvdmVybGF5WVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVPdmVybGF5VmFsdWVzKHNjb3JlOiBudW1iZXIpOiB7IG92ZXJsYXlYVmFsdWU6IG51bWJlcjsgb3ZlcmxheVlWYWx1ZTogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHhWYWx1ZSA9IHRoaXMubWFwUmFuZ2Uoc2NvcmUsIDAsIDEwMCwgdGhpcy5taW5YVmFsdWUsIHRoaXMubWF4WFZhbHVlKTtcbiAgICBjb25zdCB5VmFsdWUgPSB0aGlzLmdhdXNzaWFuRGlzdHJpYnV0aW9uLnBkZih4VmFsdWUpO1xuICAgIGxldCBvdmVybGF5WFZhbHVlID0gc2NvcmU7XG4gICAgbGV0IG92ZXJsYXlZVmFsdWUgPSB0aGlzLm1hcFJhbmdlKHlWYWx1ZSwgdGhpcy5taW5ZVmFsdWUsIHRoaXMubWF4WVZhbHVlLCAwLCAxMDApO1xuXG4gICAgaWYgKHhWYWx1ZSA8PSB0aGlzLmFjdHVhbE1pblh2YWx1ZSB8fCB4VmFsdWUgPj0gdGhpcy5hY3R1YWxNYXhYdmFsdWUpIHtcbiAgICAgIGNvbnN0IHhWYWx1ZUV4dHJlbWUgPSB4VmFsdWUgPD0gdGhpcy5hY3R1YWxNaW5YdmFsdWUgPyB0aGlzLmFjdHVhbE1pblh2YWx1ZSA6IHRoaXMuYWN0dWFsTWF4WHZhbHVlO1xuICAgICAgY29uc3QgeVZhbHVlRXh0cmVtZSA9IHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKHhWYWx1ZUV4dHJlbWUpO1xuICAgICAgb3ZlcmxheVhWYWx1ZSA9IHRoaXMubWFwUmFuZ2UoeFZhbHVlRXh0cmVtZSwgdGhpcy5taW5YVmFsdWUsIHRoaXMubWF4WFZhbHVlLCAwLCAxMDApO1xuICAgICAgb3ZlcmxheVlWYWx1ZSA9IHRoaXMubWFwUmFuZ2UoeVZhbHVlRXh0cmVtZSwgdGhpcy5taW5ZVmFsdWUsIHRoaXMubWF4WVZhbHVlLCAwLCAxMDApO1xuICAgIH1cblxuICAgIHJldHVybiB7IG92ZXJsYXlYVmFsdWUsIG92ZXJsYXlZVmFsdWUgfTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwUmFuZ2UodmFsdWU6IG51bWJlciwgaW5NaW46IG51bWJlciwgaW5NYXg6IG51bWJlciwgb3V0TWluOiBudW1iZXIsIG91dE1heDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKCh2YWx1ZSAtIGluTWluKSAqIChvdXRNYXggLSBvdXRNaW4pKSAvIChpbk1heCAtIGluTWluKSArIG91dE1pbjtcbiAgfVxuXG4gIGdldENhbGNQb3NpdGlvbihbcGVyY2VudGFnZSwgcGl4ZWxzLCBvcGVyYXRpb24gPSAnYWRkJ106IFtudW1iZXIsIG51bWJlciwgJ2FkZCcgfCAnc3VidHJhY3QnXSk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBvcGVyYXRpb24gPT09ICdhZGQnID8gJysnIDogJy0nO1xuICAgIHJldHVybiBgY2FsYygke3BlcmNlbnRhZ2V9JSAke29wZXJhdG9yfSAke3BpeGVsc31weClgO1xuICB9XG5cbiAgZ2V0QmVzdFNjb3JlQ29udGVudFBvc2l0aW9uKGJlc3RTY29yZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmVzdFNjb3JlIDwgdGhpcy5iZXN0U2NvcmVUaHJlc2hvbGQgPyB0aGlzLmJlc3RTY29yZVNwYWNpbmdSaWdodCA6IHRoaXMuYmVzdFNjb3JlU3BhY2luZ0xlZnQ7XG4gIH1cblxuICBnZXRTY29yZVRyYW5zbGF0aW9uS2V5KHNjb3JlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChzY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUKSB7XG4gICAgICByZXR1cm4gJ1BFUkNFTlRJTEVfTEFCRUxfVFlQRVMuV0VMTF9CRUxPV19BVkVSQUdFJztcbiAgICB9IGVsc2UgaWYgKHNjb3JlID49IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUICYmIHNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUikge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLkJFTE9XX0FWRVJBR0UnO1xuICAgIH0gZWxzZSBpZiAoc2NvcmUgPj0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUiAmJiBzY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuQVZFUkFHRSkge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLkFWRVJBR0UnO1xuICAgIH0gZWxzZSBpZiAoc2NvcmUgPj0gUGVyY2VudGlsZVRocmVzaG9sZC5BVkVSQUdFICYmIHNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVIpIHtcbiAgICAgIHJldHVybiAnUEVSQ0VOVElMRV9MQUJFTF9UWVBFUy5BQk9WRV9BVkVSQUdFJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLldFTExfQUJPVkVfQVZFUkFHRSc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2hhcnQtc2VjdGlvblwiICpuZ0lmPVwic2NvcmVcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnQVJJQV9MQUJFTCcpIHwgdWlUcmFuc2xhdGUgOlxuICB7IHNjb3JlOiBzY29yZSxcbiAgICBhY3RpdmVCdWNrZXQ6IGdldFNjb3JlVHJhbnNsYXRpb25LZXkoc2NvcmUpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyxcbiAgICBiZXN0Q2FuZGlkYXRlU2NvcmU6IGJlc3RDYW5kaWRhdGVTY29yZSxcbiAgICBhY3RpdmVCdWNrZXRCZXN0U2NvcmU6IGdldFNjb3JlVHJhbnNsYXRpb25LZXkoYmVzdENhbmRpZGF0ZVNjb3JlKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmNcbiAgfSB8IGFzeW5jXCJcbiAgdGFiaW5kZXg9XCIwXCI+XG4gIDxkaXYgY2xhc3M9XCJjaGFydC1yYW5nZS13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5vcm1hbC1jaGFydC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub3JtYWwtY2hhcnRcIj5cbiAgICAgICAgPGNhbnZhcyBiYXNlQ2hhcnRcbiAgICAgICAgICBbZGF0YV09XCJnYXVzc2lhbkNoYXJ0RGF0YVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwiZ2F1c3NpYW5DaGFydE9wdGlvbnNcIlxuICAgICAgICAgIHR5cGU9XCJsaW5lXCJcbiAgICAgICAgICBjbGFzcz1cImNoYXJ0XCJcbiAgICAgICAgPlxuICAgICAgICA8L2NhbnZhcz5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktaWNvblwiXG4gICAgICAgICAgW3N0eWxlLmJvdHRvbV09XCJbb3ZlcmxheVlWYWx1ZSwgMywgJ3N1YnRyYWN0J10gfCBtZW1vaXplRnVuYyA6IGdldENhbGNQb3NpdGlvblwiXG4gICAgICAgICAgW3N0eWxlLmxlZnRdPVwiW292ZXJsYXlYVmFsdWUsIDIwLCAnc3VidHJhY3QnXSB8IG1lbW9pemVGdW5jIDogZ2V0Q2FsY1Bvc2l0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtaWNvblwiPlxuICAgICAgICAgICAgPHVpLWljb24gbmFtZT1cIlBpbi1tYXJrZXJcIiBzaXplPVwiNDBcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnZlLXNjb3JlXCI+e3tzY29yZX19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJlc3Qtc2NvcmVcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiWzEwMCAtIG92ZXJsYXlZQmVzdFNjb3JlVmFsdWUsIG5vcm1hbENvbnRhaW5lclBhZGRpbmcsICdhZGQnXSB8IG1lbW9pemVGdW5jIDogZ2V0Q2FsY1Bvc2l0aW9uXCJcbiAgICAgICAgICBbc3R5bGUuYm90dG9tXT1cIm92ZXJsYXlZQmVzdFNjb3JlVmFsdWUgKyAnJSdcIlxuICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIm92ZXJsYXlYQmVzdFNjb3JlVmFsdWUgKyAnJSdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmVzdC1zY29yZS1jb250ZW50XCJcbiAgICAgICAgICBbc3R5bGUubGVmdF09XCJiZXN0Q2FuZGlkYXRlU2NvcmUgfCBtZW1vaXplRnVuYyA6IGdldEJlc3RTY29yZUNvbnRlbnRQb3NpdGlvbiA6IHRoaXNcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIG5hbWU9XCJUcm9waHlcIj48L3VpLWljb24+XG4gICAgICAgICAgICB7e2Jlc3RDYW5kaWRhdGVTY29yZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb2x1bW5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1RcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWl0ZW1cIiBbY2xhc3MudGV4dC1ib2xkXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1RcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkxPV0VTVF9UT09MVElQJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgICAgICAge3sodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5MT1dFU1QnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWl0ZW1cIiBbY2xhc3MudGV4dC1ib2xkXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUlwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguTE9XRVJfVE9PTFRJUCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgIHt7KHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguTE9XRVInKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuQVZFUkFHRVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4taXRlbVwiIFtjbGFzcy50ZXh0LWJvbGRdPVwiYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0VcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkFWRVJBR0VfVE9PTFRJUCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgIHt7KHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguQVZFUkFHRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luY319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb2x1bW5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWl0ZW1cIiBbY2xhc3MudGV4dC1ib2xkXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVJcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkhJR0hFUl9UT09MVElQJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgICAgICAge3sodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5ISUdIRVInKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVTVFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4taXRlbVwiIFtjbGFzcy50ZXh0LWJvbGRdPVwiYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1RcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkhJR0hFU1RfVE9PTFRJUCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgIHt7KHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguSElHSEVTVCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luY319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmFuZ2VcIj5cbiAgICAgIDxkaXY+MTwvZGl2PlxuICAgICAgPGRpdj4yMDwvZGl2PlxuICAgICAgPGRpdj40MDwvZGl2PlxuICAgICAgPGRpdj42MDwvZGl2PlxuICAgICAgPGRpdj44MDwvZGl2PlxuICAgICAgPGRpdj45OTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGVnZW5kLWNvbnRhaW5lciBtdC0xNlwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWdlbmRcIj5cbiAgICAgIDx1aS1pY29uIG5hbWU9XCJEb3RcIj48L3VpLWljb24+XG4gICAgICB7eyh0cmFuc2xhdGlvbkNvbnRleHQgKyAnQ0FORElEQVRFX1NDT1JFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGVnZW5kXCI+XG4gICAgICA8dWktaWNvbiBuYW1lPVwiVHJvcGh5XCI+PC91aS1pY29uPlxuICAgICAge3sodHJhbnNsYXRpb25Db250ZXh0ICsgJ0hJR0hFU1RfU0NPUkUnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { UiTranslatePipe } from '../../pipes/ui-translate.pipe';
|
|
3
|
+
import { GaussianChartComponent } from './gaussian-chart.component';
|
|
4
|
+
import { NgChartsModule } from 'ng2-charts';
|
|
5
|
+
import { Chart, registerables } from 'chart.js';
|
|
6
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
7
|
+
import { CommonModule, NgClass } from '@angular/common';
|
|
8
|
+
import { IconComponentModule } from '../icon/icon.component.module';
|
|
9
|
+
import { MemoizeFuncPipe } from 'projects/tgo-canopy-ui/pipes/memoize-func.pipe';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
Chart.register(...registerables);
|
|
12
|
+
export class GaussianChartComponentModule {
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponentModule, declarations: [GaussianChartComponent], imports: [NgClass,
|
|
15
|
+
UiTranslatePipe,
|
|
16
|
+
NgChartsModule,
|
|
17
|
+
MatTooltipModule,
|
|
18
|
+
CommonModule,
|
|
19
|
+
IconComponentModule,
|
|
20
|
+
MemoizeFuncPipe], exports: [GaussianChartComponent] }); }
|
|
21
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponentModule, imports: [NgChartsModule,
|
|
22
|
+
MatTooltipModule,
|
|
23
|
+
CommonModule,
|
|
24
|
+
IconComponentModule] }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponentModule, decorators: [{
|
|
27
|
+
type: NgModule,
|
|
28
|
+
args: [{
|
|
29
|
+
declarations: [GaussianChartComponent],
|
|
30
|
+
exports: [GaussianChartComponent],
|
|
31
|
+
imports: [
|
|
32
|
+
NgClass,
|
|
33
|
+
UiTranslatePipe,
|
|
34
|
+
NgChartsModule,
|
|
35
|
+
MatTooltipModule,
|
|
36
|
+
CommonModule,
|
|
37
|
+
IconComponentModule,
|
|
38
|
+
MemoizeFuncPipe,
|
|
39
|
+
],
|
|
40
|
+
}]
|
|
41
|
+
}] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F1c3NpYW4tY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2dhdXNzaWFuLWNoYXJ0L2dhdXNzaWFuLWNoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQUVqRixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFlakMsTUFBTSxPQUFPLDRCQUE0QjsrR0FBNUIsNEJBQTRCO2dIQUE1Qiw0QkFBNEIsaUJBWnhCLHNCQUFzQixhQUduQyxPQUFPO1lBQ1AsZUFBZTtZQUNmLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixlQUFlLGFBUlAsc0JBQXNCO2dIQVdyQiw0QkFBNEIsWUFQckMsY0FBYztZQUNkLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osbUJBQW1COzs0RkFJViw0QkFBNEI7a0JBYnhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxPQUFPLEVBQUU7d0JBQ1AsT0FBTzt3QkFDUCxlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVWlUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdWktdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgR2F1c3NpYW5DaGFydENvbXBvbmVudCB9IGZyb20gJy4vZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IE5nQ2hhcnRzTW9kdWxlIH0gZnJvbSAnbmcyLWNoYXJ0cyc7XG5pbXBvcnQgeyBDaGFydCwgcmVnaXN0ZXJhYmxlcyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgTWVtb2l6ZUZ1bmNQaXBlIH0gZnJvbSAncHJvamVjdHMvdGdvLWNhbm9weS11aS9waXBlcy9tZW1vaXplLWZ1bmMucGlwZSc7XG5cbkNoYXJ0LnJlZ2lzdGVyKC4uLnJlZ2lzdGVyYWJsZXMpO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XSxcbiAgZXhwb3J0czogW0dhdXNzaWFuQ2hhcnRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBVaVRyYW5zbGF0ZVBpcGUsXG4gICAgTmdDaGFydHNNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSWNvbkNvbXBvbmVudE1vZHVsZSxcbiAgICBNZW1vaXplRnVuY1BpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEdhdXNzaWFuQ2hhcnRDb21wb25lbnRNb2R1bGUge31cbiJdfQ==
|