@provoly/dashboard 0.14.8 → 0.14.10
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/admin/components/admin-layout/admin-layout.component.d.ts +5 -3
- package/admin/components/admin-metadata-user/admin-metadata-user.component.d.ts +1 -1
- package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +0 -11
- package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +2 -7
- package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +1 -3
- package/admin/components/admin-metadata-user/store/admin-metadata-user.selector.d.ts +1 -4
- package/admin/components/admin-user/store/admin-user.action.d.ts +1 -52
- package/admin/components/admin-user/store/admin-user.effects.d.ts +0 -28
- package/admin/components/admin-user/store/admin-user.reducer.d.ts +1 -2
- package/admin/components/admin-user/store/admin-user.selector.d.ts +0 -1
- package/admin/store/admin.service.d.ts +1 -4
- package/assets/svgs/map.svg +1 -1
- package/components/metadata-editor/metadata-editor.component.d.ts +6 -6
- package/components/metadata-editor/metadata-editor.module.d.ts +7 -6
- package/components/metadata-editor/public-api.d.ts +1 -0
- package/components/metadata-editor/store/metadata.action.d.ts +63 -1
- package/components/metadata-editor/store/metadata.effects.d.ts +33 -0
- package/components/metadata-editor/store/metadata.reducer.d.ts +3 -1
- package/components/metadata-editor/store/metadata.selector.d.ts +2 -0
- package/components/metadata-editor/store/metadata.service.d.ts +5 -1
- package/components/metadata-editor/style/_o-metadata-editor.scss +15 -0
- package/components/metadata-editor/style/css.component.d.ts +5 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +2 -3
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +2 -3
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +2 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +10 -7
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +2 -3
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +3 -5
- package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +9 -10
- package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +7 -3
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.action.mjs +1 -4
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.mjs +8 -28
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.selector.mjs +2 -6
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +9 -10
- package/esm2022/admin/components/admin-user/admin-user.component.mjs +1 -1
- package/esm2022/admin/components/admin-user/store/admin-user.action.mjs +2 -11
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +1 -19
- package/esm2022/admin/components/admin-user/store/admin-user.reducer.mjs +2 -7
- package/esm2022/admin/components/admin-user/store/admin-user.selector.mjs +1 -3
- package/esm2022/admin/i18n/en.translations.mjs +2 -2
- package/esm2022/admin/i18n/fr.translations.mjs +4 -4
- package/esm2022/admin/store/admin.effects.mjs +1 -1
- package/esm2022/admin/store/admin.service.mjs +1 -16
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +40 -45
- package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -4
- package/esm2022/components/metadata-editor/public-api.mjs +2 -1
- package/esm2022/components/metadata-editor/store/metadata.action.mjs +14 -2
- package/esm2022/components/metadata-editor/store/metadata.effects.mjs +21 -1
- package/esm2022/components/metadata-editor/store/metadata.reducer.mjs +18 -2
- package/esm2022/components/metadata-editor/store/metadata.selector.mjs +6 -2
- package/esm2022/components/metadata-editor/store/metadata.service.mjs +21 -1
- package/esm2022/components/metadata-editor/style/css.component.mjs +11 -0
- package/esm2022/dataset/i18n/fr.translations.mjs +2 -2
- package/esm2022/import/i18n/en.translations.mjs +4 -1
- package/esm2022/import/i18n/fr.translations.mjs +4 -1
- package/esm2022/import/store/import.effects.mjs +8 -1
- package/esm2022/lib/core/components/about/about.component.mjs +29 -0
- package/esm2022/lib/core/components/about/pry-about.module.mjs +21 -0
- package/esm2022/lib/core/components/icon/icon.component.mjs +5 -1
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +10 -6
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +1 -1
- package/esm2022/lib/core/i18n/en.translations.mjs +14 -3
- package/esm2022/lib/core/i18n/fr.translations.mjs +14 -3
- package/esm2022/lib/core/i18n/i18n.pipe.mjs +4 -3
- package/esm2022/lib/core/i18n/i18n.service.mjs +5 -5
- package/esm2022/lib/core/model/display-options.interface.mjs +1 -1
- package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
- package/esm2022/lib/core/model/public-api.mjs +2 -1
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/model/widget-vega-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/public-api.mjs +3 -1
- package/esm2022/lib/core/store/class/class.effects.mjs +1 -1
- package/esm2022/lib/core/store/config/config.actions.mjs +5 -2
- package/esm2022/lib/core/store/config/config.effects.mjs +4 -1
- package/esm2022/lib/core/store/config/config.reducer.mjs +9 -2
- package/esm2022/lib/core/store/config/config.selectors.mjs +6 -4
- package/esm2022/lib/core/store/config/config.service.mjs +36 -2
- package/esm2022/lib/core/store/config/versions.interface.mjs +2 -0
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +1 -16
- package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +3 -1
- package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +3 -2
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -3
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +15 -6
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +10 -2
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -4
- package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -3
- package/esm2022/notification/store/notification.effects.mjs +3 -3
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +23 -18
- package/esm2022/presentation/components/presentation.component.mjs +18 -18
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -3
- package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +6 -3
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +6 -3
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +2 -2
- package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +2 -2
- package/esm2022/supervision/components/supervision.component.mjs +2 -2
- package/esm2022/supervision/store/supervision.actions.mjs +1 -1
- package/esm2022/supervision/store/supervision.reducer.mjs +3 -2
- package/esm2022/supervision/store/supervision.selectors.mjs +2 -2
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +4 -4
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +18 -11
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +20 -6
- package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +1 -2
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +4 -2
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +15 -9
- package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +5 -5
- package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +23 -1
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +139 -0
- package/esm2022/widgets/widget-vega/i18n/en.translations.mjs +11 -0
- package/esm2022/widgets/widget-vega/i18n/fr.translations.mjs +11 -0
- package/esm2022/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.mjs +5 -0
- package/esm2022/widgets/widget-vega/public-api.mjs +3 -0
- package/esm2022/widgets/widget-vega/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-vega/widget-vega.module.mjs +68 -0
- package/fesm2022/provoly-dashboard-admin.mjs +134 -206
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +127 -52
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +13 -0
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +2 -2
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +41 -37
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +7 -4
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-supervision.mjs +11 -8
- package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +3 -3
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +17 -10
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +19 -6
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +43 -14
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +235 -0
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -0
- package/fesm2022/provoly-dashboard.mjs +188 -68
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/i18n/en.translations.d.ts +3 -0
- package/import/i18n/fr.translations.d.ts +3 -0
- package/lib/core/components/about/about.component.d.ts +12 -0
- package/lib/core/components/about/pry-about.module.d.ts +10 -0
- package/lib/core/i18n/en.translations.d.ts +11 -0
- package/lib/core/i18n/fr.translations.d.ts +11 -0
- package/lib/core/i18n/i18n.service.d.ts +2 -2
- package/lib/core/model/display-options.interface.d.ts +1 -1
- package/lib/core/model/manifest.interface.d.ts +2 -1
- package/lib/core/model/public-api.d.ts +1 -0
- package/lib/core/model/widget-map-manifest.interface.d.ts +2 -0
- package/lib/core/model/widget-vega-manifest.interface.d.ts +5 -0
- package/lib/core/public-api.d.ts +2 -0
- package/lib/core/store/config/config.actions.d.ts +12 -0
- package/lib/core/store/config/config.effects.d.ts +6 -0
- package/lib/core/store/config/config.reducer.d.ts +2 -0
- package/lib/core/store/config/config.selectors.d.ts +1 -0
- package/lib/core/store/config/config.service.d.ts +2 -0
- package/lib/core/store/config/versions.interface.d.ts +10 -0
- package/lib/dashboard/store/dashboard.actions.d.ts +10 -8
- package/lib/dashboard/store/dashboard.effects.d.ts +2 -0
- package/lib/dashboard/store/dashboard.selectors.d.ts +1 -1
- package/lib/dashboard/store/manifest.service.d.ts +1 -1
- package/package.json +31 -25
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +4 -3
- package/presentation/components/presentation.component.d.ts +2 -2
- package/presentation/style/_o-pry-new-presentation.scss +7 -0
- package/restitution/components/restitution-list-item/restitution-list-item.component.d.ts +3 -2
- package/schematics/ng-add/index.js +7 -1
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.json +2 -1
- package/styles/components/_o-tabs.scss +1 -7
- package/styles/layout/_o-base-layout.scss +8 -1
- package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +1 -1
- package/supervision/store/supervision.actions.d.ts +2 -2
- package/supervision/store/supervision.reducer.d.ts +1 -1
- package/supervision/store/supervision.selectors.d.ts +1 -1
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +7 -0
- package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +0 -1
- package/widgets/widget-map/component/widget-map.component.d.ts +3 -1
- package/widgets/widget-map/utils/xml-utils.class.d.ts +2 -0
- package/widgets/widget-vega/component/widget-vega.component.d.ts +37 -0
- package/widgets/widget-vega/i18n/en.translations.d.ts +10 -0
- package/widgets/widget-vega/i18n/fr.translations.d.ts +10 -0
- package/widgets/widget-vega/index.d.ts +5 -0
- package/widgets/widget-vega/public-api.d.ts +2 -0
- package/widgets/widget-vega/style/_o-widget-vega.scss +6 -0
- package/widgets/widget-vega/style/css.component.d.ts +5 -0
- package/widgets/widget-vega/widget-vega.module.d.ts +19 -0
package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Optional, Output } from '@angular/core';
|
|
2
2
|
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
3
|
import { DashboardActions, DashboardGridLayout, DashboardSelectors, DEFAULT_RESTITUTION_ICON_URL, LibraryTypes, SubscriptionnerDirective, ViewMode } from '@provoly/dashboard';
|
|
4
|
-
import { combineLatest, debounceTime, take } from 'rxjs';
|
|
4
|
+
import { BehaviorSubject, combineLatest, debounceTime, take } from 'rxjs';
|
|
5
5
|
import { MetadataActions } from '@provoly/dashboard/components/metadata-editor';
|
|
6
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@ngrx/store";
|
|
8
9
|
import * as i2 from "@angular/router";
|
|
@@ -13,10 +14,14 @@ import * as i6 from "@provoly/dashboard/components/checkbox";
|
|
|
13
14
|
import * as i7 from "@angular/common";
|
|
14
15
|
import * as i8 from "@provoly/dashboard/components/metadata-editor";
|
|
15
16
|
export class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
17
|
+
set selectedPresentation(presentation) {
|
|
18
|
+
this.selectedPresentation$.next(presentation);
|
|
19
|
+
}
|
|
16
20
|
constructor(store, router) {
|
|
17
21
|
super();
|
|
18
22
|
this.store = store;
|
|
19
23
|
this.router = router;
|
|
24
|
+
this.selectedPresentation$ = new BehaviorSubject(null);
|
|
20
25
|
this.edition = false;
|
|
21
26
|
this.editionStartUrl = '/';
|
|
22
27
|
this.image = DEFAULT_RESTITUTION_ICON_URL;
|
|
@@ -38,18 +43,18 @@ export class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
38
43
|
description: new FormControl(null, [Validators.maxLength(200)]),
|
|
39
44
|
cover: new FormControl(false)
|
|
40
45
|
});
|
|
41
|
-
this.image = this.selectedPresentation?.image ?? DEFAULT_RESTITUTION_ICON_URL;
|
|
46
|
+
this.image = this.selectedPresentation$.value?.image ?? DEFAULT_RESTITUTION_ICON_URL;
|
|
42
47
|
}
|
|
43
48
|
ngAfterViewInit() {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this.form.patchValue(this.selectedPresentation);
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
+
setTimeout(() => {
|
|
50
|
+
if (this.selectedPresentation$.value)
|
|
51
|
+
this.form.patchValue(this.selectedPresentation$.value);
|
|
52
|
+
});
|
|
49
53
|
}
|
|
50
54
|
save() {
|
|
51
55
|
const presentation = {
|
|
52
|
-
...this.selectedPresentation,
|
|
56
|
+
...this.selectedPresentation$.value,
|
|
57
|
+
id: this.selectedPresentation$.value?.id || uuidv4(),
|
|
53
58
|
name: this.form.value.name ?? '',
|
|
54
59
|
description: this.form.value.description ?? '',
|
|
55
60
|
cover: this.form.value.cover ?? false,
|
|
@@ -62,14 +67,14 @@ export class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
62
67
|
}));
|
|
63
68
|
}));
|
|
64
69
|
this.store.dispatch(DashboardActions.selectPresentation({
|
|
65
|
-
presentation
|
|
70
|
+
presentation,
|
|
66
71
|
viewMode: ViewMode.EDITION
|
|
67
72
|
}));
|
|
68
73
|
}
|
|
69
74
|
configureDashboard(selectedPresentation) {
|
|
70
75
|
this.store.dispatch(DashboardActions.selectPresentation({
|
|
71
76
|
presentation: {
|
|
72
|
-
...this.selectedPresentation,
|
|
77
|
+
...this.selectedPresentation$.value,
|
|
73
78
|
name: this.form.value.name ?? '',
|
|
74
79
|
description: this.form.value.description ?? '',
|
|
75
80
|
image: this.image ?? DEFAULT_RESTITUTION_ICON_URL,
|
|
@@ -109,14 +114,14 @@ export class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
109
114
|
}
|
|
110
115
|
addMetadata(metadata) {
|
|
111
116
|
this.store.dispatch(DashboardActions.addManifestMetadata({
|
|
112
|
-
presentationId: this.selectedPresentation
|
|
117
|
+
presentationId: this.selectedPresentation$.value?.id,
|
|
113
118
|
metadataId: metadata.metadataId,
|
|
114
119
|
value: metadata.value ?? ''
|
|
115
120
|
}));
|
|
116
121
|
}
|
|
117
122
|
removeMetadata(metadata) {
|
|
118
123
|
this.store.dispatch(DashboardActions.deleteManifestMetadata({
|
|
119
|
-
presentationId: this.selectedPresentation
|
|
124
|
+
presentationId: this.selectedPresentation$.value?.id,
|
|
120
125
|
metadataId: metadata.metadataId
|
|
121
126
|
}));
|
|
122
127
|
}
|
|
@@ -124,20 +129,20 @@ export class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
124
129
|
this.goBack.emit();
|
|
125
130
|
}
|
|
126
131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryAddEditPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
127
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: {
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: { edition: "edition", editionStartUrl: "editionStartUrl", selectedPresentation: "selectedPresentation" }, outputs: { goBack: "goBack" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"save()\" [disabled]=\"form.invalid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h1>\n <div class=\"o-presentation-form-wrapper\">\n <form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.touched && form.get('name')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.required' | i18n }}\n </label>\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '50' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{\n '@pry.presentation.form.description' | i18n\n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n <label\n for=\"presentation_description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '200' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox formControlName=\"cover\" name=\"cover\" ngDefaultControl>\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </form>\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"form.invalid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] }); }
|
|
128
133
|
}
|
|
129
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryAddEditPresentationComponent, decorators: [{
|
|
130
135
|
type: Component,
|
|
131
|
-
args: [{ selector: 'pry-add-edit-presentation', template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"save()\" [disabled]=\"form.invalid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h1>\n <div class=\"o-presentation-form-wrapper\">\n <form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.touched && form.get('name')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.required' | i18n }}\n </label>\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '50' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{\n '@pry.presentation.form.description' | i18n\n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n <label\n for=\"presentation_description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '200' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox formControlName=\"cover\" name=\"cover\" ngDefaultControl>\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </form>\n <div class=\"o-presentation__metadata-editor\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [
|
|
136
|
+
args: [{ selector: 'pry-add-edit-presentation', template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"save()\" [disabled]=\"form.invalid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h1>\n <div class=\"o-presentation-form-wrapper\">\n <form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.touched && form.get('name')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.required' | i18n }}\n </label>\n <label\n for=\"presentation_name\"\n *ngIf=\"form.get('name')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '50' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{\n '@pry.presentation.form.description' | i18n\n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n <label\n for=\"presentation_description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.presentation.maxLength' | i18n : { len: '200' } }}\n </label>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox formControlName=\"cover\" name=\"cover\" ngDefaultControl>\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </form>\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"form.invalid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n" }]
|
|
132
137
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router, decorators: [{
|
|
133
138
|
type: Optional
|
|
134
|
-
}] }]; }, propDecorators: {
|
|
135
|
-
type: Input
|
|
136
|
-
}], edition: [{
|
|
139
|
+
}] }]; }, propDecorators: { edition: [{
|
|
137
140
|
type: Input
|
|
138
141
|
}], editionStartUrl: [{
|
|
139
142
|
type: Input
|
|
140
143
|
}], goBack: [{
|
|
141
144
|
type: Output
|
|
145
|
+
}], selectedPresentation: [{
|
|
146
|
+
type: Input
|
|
142
147
|
}] } });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWVkaXQtcHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL2FkZC1lZGl0LXByZXNlbnRhdGlvbi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvcHJlc2VudGF0aW9uL2NvbXBvbmVudHMvYWRkLWVkaXQtcHJlc2VudGF0aW9uL2FkZC1lZGl0LXByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixFQUU1QixZQUFZLEVBRVosd0JBQXdCLEVBQ3hCLFFBQVEsRUFDVCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLCtDQUErQyxDQUFDOzs7Ozs7Ozs7O0FBTS9GLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSx3QkFBd0I7SUFXM0UsWUFBb0IsS0FBWSxFQUF3QixNQUFjO1FBQ3BFLEtBQUssRUFBRSxDQUFDO1FBRFUsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUF3QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUjdELFlBQU8sR0FBWSxL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QUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUF1QjtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUM7WUFDbkMsY0FBYyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQzVDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFO1NBQzVCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUF1QjtRQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdEMsY0FBYyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQzVDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtTQUNoQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQTdJVSwrQkFBK0I7a0dBQS9CLCtCQUErQix5T0N0QjVDLHVvSUFpR0E7OzJGRDNFYSwrQkFBK0I7a0JBSjNDLFNBQVM7K0JBQ0UsMkJBQTJCOzswQkFjRixRQUFROzRDQVRsQyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRHcmlkTGF5b3V0LFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERFRkFVTFRfUkVTVElUVVRJT05fSUNPTl9VUkwsXG4gIEdsb2JhbE1hbmlmZXN0LFxuICBMaWJyYXJ5VHlwZXMsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSxcbiAgVmlld01vZGVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zLCBNZXRhRXZlbnRUeXBlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvbWV0YWRhdGEtZWRpdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeUFkZEVkaXRQcmVzZW50YXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBzdGF0aWNNYW5pZmVzdCQ6IE9ic2VydmFibGU8R2xvYmFsTWFuaWZlc3Q+O1xuICBASW5wdXQoKSBzZWxlY3RlZFByZXNlbnRhdGlvbiE6IE1hbmlmZXN0RGVzY3JpcHRpb247XG4gIEBJbnB1dCgpIGVkaXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZWRpdGlvblN0YXJ0VXJsOiBzdHJpbmcgPSAnLyc7XG4gIGZvcm0hOiBGb3JtR3JvdXA7XG4gIGltYWdlOiBzdHJpbmcgPSBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMO1xuICBAT3V0cHV0KCkgZ29CYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICB0eXBlOiBMaWJyYXJ5VHlwZXMgPSBMaWJyYXJ5VHlwZXMuSUxMVVNUUkFUSU9OO1xuICBjaG9zZW5MYXlvdXQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsIEBPcHRpb25hbCgpIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNZXRhZGF0YUFjdGlvbnMubG9hZE1ldGFkYXRhKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KHsgbGF5b3V0OiBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEwgfSkpO1xuICAgIHRoaXMuc3RhdGljTWFuaWZlc3QkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KTtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0YXRpY01hbmlmZXN0JCwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpXSkuc3Vic2NyaWJlKFxuICAgICAgKFtzdGF0aWNNYW5pZmVzdCwgZ3JpZExheW91dF0pID0+IHtcbiAgICAgICAgdGhpcy5jaG9zZW5MYXlvdXQgPVxuICAgICAgICAgIHRoaXMuZWRpdGlvbiAmJiBzdGF0aWNNYW5pZmVzdC53aW5kb3dzWzBdPy5ncmlkPy5sYXlvdXQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBzdGF0aWNNYW5pZmVzdC53aW5kb3dzWzBdPy5ncmlkPy5sYXlvdXRcbiAgICAgICAgICAgIDogZ3JpZExheW91dDtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV0pLFxuICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjAwKV0pLFxuICAgICAgY292ZXI6IG5ldyBGb3JtQ29udHJvbChmYWxzZSlcbiAgICB9KTtcbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbj8uaW1hZ2UgPz8gREVGQVVMVF9SRVNUSVRVVElPTl9JQ09OX1VSTDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbikge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICBjb25zdCBwcmVzZW50YXRpb24gPSB7XG4gICAgICAuLi50aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uISxcbiAgICAgIG5hbWU6IHRoaXMuZm9ybS52YWx1ZS5uYW1lID8/ICcnLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZm9ybS52YWx1ZS5kZXNjcmlwdGlvbiA/PyAnJyxcbiAgICAgIGNvdmVyOiB0aGlzLmZvcm0udmFsdWUuY292ZXIgPz8gZmFsc2UsXG4gICAgICBpbWFnZTogdGhpcy5pbWFnZSA/PyBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMXG4gICAgfTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdGF0aWNNYW5pZmVzdCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHN0YXRpY01hbmlmZXN0KSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgLi4ucHJlc2VudGF0aW9uLFxuICAgICAgICAgICAgbWFuaWZlc3Q6IHN0YXRpY01hbmlmZXN0XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICBwcmVzZW50YXRpb246IHByZXNlbnRhdGlvbixcbiAgICAgICAgdmlld01vZGU6IFZpZXdNb2RlLkVESVRJT05cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGNvbmZpZ3VyZURhc2hib2FyZChzZWxlY3RlZFByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7XG4gICAgICAgIHByZXNlbnRhdGlvbjoge1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24hLFxuICAgICAgICAgIG5hbWU6IHRoaXMuZm9ybS52YWx1ZS5uYW1lID8/ICcnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmZvcm0udmFsdWUuZGVzY3JpcHRpb24gPz8gJycsXG4gICAgICAgICAgaW1hZ2U6IHRoaXMuaW1hZ2UgPz8gREVGQVVMVF9SRVNUSVRVVElPTl9JQ09OX1VSTCxcbiAgICAgICAgICBjb3ZlcjogdGhpcy5mb3JtLnZhbHVlLmNvdmVyID8/IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHZpZXdNb2RlOiB0aGlzLmVkaXRpb24gPyBWaWV3TW9kZS5DUkVBVElPTiA6IFZpZXdNb2RlLkVESVRJT05cbiAgICAgIH0pXG4gICAgKTtcbiAgICBpZiAoIXRoaXMuZWRpdGlvbikge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hbmlmZXN0OiB7IHdpbmRvd3M6IFt7IHdpZGdldHM6IFtdLCBncmlkOiB7IGxheW91dDogdGhpcy5jaG9zZW5MYXlvdXQgfSB9XSB9LFxuICAgICAgICAgIHNlbGVjdGVkSWRzOiBbXSxcbiAgICAgICAgICBtYW5pZmVzdElkOiBzZWxlY3RlZFByZXNlbnRhdGlvbi5pZFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc2V0SW5pdGlhbFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgaW5pdGlhbDogeyB3aW5kb3dzOiBbeyB3aWRnZXRzOiBbXSwgZ3JpZDogeyBsYXlvdXQ6IHRoaXMuY2hvc2VuTGF5b3V0IGFzIERhc2hib2FyZEdyaWRMYXlvdXQgfSB9XSB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlQnlVcmwodGhpcy5lZGl0aW9uU3RhcnRVcmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlXG4gICAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KVxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCksIHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHN0YXRpY01hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHtcbiAgICAgICAgICAgICAgbWFuaWZlc3Q6IHN0YXRpY01hbmlmZXN0LFxuICAgICAgICAgICAgICBzZWxlY3RlZElkczogW10sXG4gICAgICAgICAgICAgIG1hbmlmZXN0SWQ6IHNlbGVjdGVkUHJlc2VudGF0aW9uLmlkXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuc2V0SW5pdGlhbFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgICAgIGluaXRpYWw6IHN0YXRpY01hbmlmZXN0XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUoKSk7XG4gICAgICAgICAgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlQnlVcmwodGhpcy5lZGl0aW9uU3RhcnRVcmwpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZE1hbmlmZXN0TWV0YWRhdGEoe1xuICAgICAgICBwcmVzZW50YXRpb25JZDogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbi5pZCxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZCxcbiAgICAgICAgdmFsdWU6IG1ldGFkYXRhLnZhbHVlID8/ICcnXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZW1vdmVNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLmRlbGV0ZU1hbmlmZXN0TWV0YWRhdGEoe1xuICAgICAgICBwcmVzZW50YXRpb25JZDogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbi5pZCxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5nb0JhY2suZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRcIj5cbiAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X190b29sYm94XCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiPlxuICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jaGVjaycgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnRcIj5cbiAgICA8aDEgY2xhc3M9XCJhLWgxXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmFkZCcgKyAnLnBhZ2VUaXRsZScgfCBpMThuIH19PC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb24tZm9ybS13cmFwcGVyXCI+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uLWZvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25fbmFtZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLm5hbWUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9uYW1lXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5uYW1lJyB8IGkxOG4gfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNTBcIlxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIlxuICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmdldCgnbmFtZScpPy50b3VjaGVkICYmIGZvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLnJlcXVpcmVkJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIlxuICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmdldCgnbmFtZScpPy5oYXNFcnJvcignbWF4bGVuZ3RoJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24ubWF4TGVuZ3RoJyB8IGkxOG4gOiB7IGxlbjogJzUwJyB9IH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCI+e3tcbiAgICAgICAgICAgICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG5cbiAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgY29scz1cIjMwXCJcbiAgICAgICAgICAgIHJvd3M9XCI1XCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjIwMFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5tYXhMZW5ndGgnIHwgaTE4biA6IHsgbGVuOiAnMjAwJyB9IH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX2ltYWdlXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uaW1hZ2UnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8tZmlsZS1pbnB1dFwiPlxuICAgICAgICAgICAgPHByeS1zZWxlY3QtaW1hZ2VcbiAgICAgICAgICAgICAgaWQ9XCJwcmVzZW50YXRpb25faW1hZ2VcIlxuICAgICAgICAgICAgICAoY2hhbmdlZCk9XCJpbWFnZSA9ICRldmVudFwiXG4gICAgICAgICAgICAgIFtpY29uVXJsXT1cImltYWdlXCJcbiAgICAgICAgICAgICAgW21vZGVdPVwidHlwZVwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0LWltYWdlPlxuICAgICAgICAgICAgPHByeS1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJjb3ZlclwiIG5hbWU9XCJjb3ZlclwiIG5nRGVmYXVsdENvbnRyb2w+XG4gICAgICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmNvdmVyJyB8IGkxOG4gfX1cbiAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbCBtLWZvcm0tbGFiZWwtZmllbGQtLWlubGluZVwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5ncmlkJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LnRvb2xib3gubGF5b3V0LicgKyB0aGlzLmNob3NlbkxheW91dCB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPHByeS1zZWxlY3QtZ3JpZC1sYXlvdXQgKm5nSWY9XCIhZWRpdGlvblwiPjwvcHJ5LXNlbGVjdC1ncmlkLWxheW91dD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX21ldGFkYXRhLWVkaXRvclwiPlxuICAgICAgICA8cHJ5LW1ldGFkYXRhLWVkaXRvclxuICAgICAgICAgIFt0YXJnZXRJZF09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi5pZFwiXG4gICAgICAgICAgW2VkaXRhYmxlXT1cInRydWVcIlxuICAgICAgICAgIFttZXRhZGF0YV09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi5tZXRhZGF0YVwiXG4gICAgICAgICAgaW5pdGlhbE1ldGFkYXRhU2VsZWN0aW9uPVwiX3RoZW1lXCJcbiAgICAgICAgICAocmVtb3ZlTWV0YSk9XCJyZW1vdmVNZXRhZGF0YSgkZXZlbnQpXCJcbiAgICAgICAgICAoYWRkTWV0YSk9XCJhZGRNZXRhZGF0YSgkZXZlbnQpXCJcbiAgICAgICAgPjwvcHJ5LW1ldGFkYXRhLWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJjb25maWd1cmVEYXNoYm9hcmQoc2VsZWN0ZWRQcmVzZW50YXRpb24hKVwiIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIj5cbiAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5jb25maWd1cmF0aW9uJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWVkaXQtcHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL2FkZC1lZGl0LXByZXNlbnRhdGlvbi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvcHJlc2VudGF0aW9uL2NvbXBvbmVudHMvYWRkLWVkaXQtcHJlc2VudGF0aW9uL2FkZC1lZGl0LXByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixFQUU1QixZQUFZLEVBRVosd0JBQXdCLEVBQ3hCLFFBQVEsRUFDVCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQU1wQyxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsd0JBQXdCO0lBVzNFLElBQWEsb0JBQW9CLENBQUMsWUFBd0M7UUFDeEUsSUFBSSxDQUFDLHFCQUFxQixDQUFD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QS9CLCtCQUErQix5T0N2QjVDLDZ0SUFxR0E7OzJGRDlFYSwrQkFBK0I7a0JBSjNDLFNBQVM7K0JBQ0UsMkJBQTJCOzswQkFrQkYsUUFBUTs0Q0FabEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0ksTUFBTTtzQkFBZixNQUFNO2dCQUlNLG9CQUFvQjtzQkFBaEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMLFxuICBHbG9iYWxNYW5pZmVzdCxcbiAgTGlicmFyeVR5cGVzLFxuICBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zLCBNZXRhRXZlbnRUeXBlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvbWV0YWRhdGEtZWRpdG9yJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1lZGl0LXByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5QWRkRWRpdFByZXNlbnRhdGlvbkNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHN0YXRpY01hbmlmZXN0JDogT2JzZXJ2YWJsZTxHbG9iYWxNYW5pZmVzdD47XG4gIHNlbGVjdGVkUHJlc2VudGF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGw+KG51bGwpO1xuICBASW5wdXQoKSBlZGl0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVkaXRpb25TdGFydFVybDogc3RyaW5nID0gJy8nO1xuICBmb3JtITogRm9ybUdyb3VwO1xuICBpbWFnZTogc3RyaW5nID0gREVGQVVMVF9SRVNUSVRVVElPTl9JQ09OX1VSTDtcbiAgQE91dHB1dCgpIGdvQmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgdHlwZTogTGlicmFyeVR5cGVzID0gTGlicmFyeVR5cGVzLklMTFVTVFJBVElPTjtcbiAgY2hvc2VuTGF5b3V0Pzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZFByZXNlbnRhdGlvbihwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24gfCBudWxsKSB7XG4gICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsIEBPcHRpb25hbCgpIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNZXRhZGF0YUFjdGlvbnMubG9hZE1ldGFkYXRhKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KHsgbGF5b3V0OiBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEwgfSkpO1xuICAgIHRoaXMuc3RhdGljTWFuaWZlc3QkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KTtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0YXRpY01hbmlmZXN0JCwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpXSkuc3Vic2NyaWJlKFxuICAgICAgKFtzdGF0aWNNYW5pZmVzdCwgZ3JpZExheW91dF0pID0+IHtcbiAgICAgICAgdGhpcy5jaG9zZW5MYXlvdXQgPVxuICAgICAgICAgIHRoaXMuZWRpdGlvbiAmJiBzdGF0aWNNYW5pZmVzdC53aW5kb3dzWzBdPy5ncmlkPy5sYXlvdXQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBzdGF0aWNNYW5pZmVzdC53aW5kb3dzWzBdPy5ncmlkPy5sYXlvdXRcbiAgICAgICAgICAgIDogZ3JpZExheW91dDtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV0pLFxuICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjAwKV0pLFxuICAgICAgY292ZXI6IG5ldyBGb3JtQ29udHJvbChmYWxzZSlcbiAgICB9KTtcbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmltYWdlID8/IERFRkFVTFRfUkVTVElUVVRJT05fSUNPTl9VUkw7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUpIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgY29uc3QgcHJlc2VudGF0aW9uID0ge1xuICAgICAgLi4udGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUhLFxuICAgICAgaWQ6IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlPy5pZCB8fCB1dWlkdjQoKSxcbiAgICAgIG5hbWU6IHRoaXMuZm9ybS52YWx1ZS5uYW1lID8/ICcnLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZm9ybS52YWx1ZS5kZXNjcmlwdGlvbiA/PyAnJyxcbiAgICAgIGNvdmVyOiB0aGlzLmZvcm0udmFsdWUuY292ZXIgPz8gZmFsc2UsXG4gICAgICBpbWFnZTogdGhpcy5pbWFnZSA/PyBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMXG4gICAgfTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdGF0aWNNYW5pZmVzdCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHN0YXRpY01hbmlmZXN0KSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgLi4ucHJlc2VudGF0aW9uLFxuICAgICAgICAgICAgbWFuaWZlc3Q6IHN0YXRpY01hbmlmZXN0XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICBwcmVzZW50YXRpb24sXG4gICAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb25maWd1cmVEYXNoYm9hcmQoc2VsZWN0ZWRQcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICBwcmVzZW50YXRpb246IHtcbiAgICAgICAgICAuLi50aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSEsXG4gICAgICAgICAgbmFtZTogdGhpcy5mb3JtLnZhbHVlLm5hbWUgPz8gJycsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZm9ybS52YWx1ZS5kZXNjcmlwdGlvbiA/PyAnJyxcbiAgICAgICAgICBpbWFnZTogdGhpcy5pbWFnZSA/PyBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMLFxuICAgICAgICAgIGNvdmVyOiB0aGlzLmZvcm0udmFsdWUuY292ZXIgPz8gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgdmlld01vZGU6IHRoaXMuZWRpdGlvbiA/IFZpZXdNb2RlLkNSRUFUSU9OIDogVmlld01vZGUuRURJVElPTlxuICAgICAgfSlcbiAgICApO1xuICAgIGlmICghdGhpcy5lZGl0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbWFuaWZlc3Q6IHsgd2luZG93czogW3sgd2lkZ2V0czogW10sIGdyaWQ6IHsgbGF5b3V0OiB0aGlzLmNob3NlbkxheW91dCB9IH1dIH0sXG4gICAgICAgICAgc2VsZWN0ZWRJZHM6IFtdLFxuICAgICAgICAgIG1hbmlmZXN0SWQ6IHNlbGVjdGVkUHJlc2VudGF0aW9uLmlkXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZXRJbml0aWFsUHJlc2VudGF0aW9uKHtcbiAgICAgICAgICBpbml0aWFsOiB7IHdpbmRvd3M6IFt7IHdpZGdldHM6IFtdLCBncmlkOiB7IGxheW91dDogdGhpcy5jaG9zZW5MYXlvdXQgYXMgRGFzaGJvYXJkR3JpZExheW91dCB9IH1dIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybCh0aGlzLmVkaXRpb25TdGFydFVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc3RhdGljTWFuaWZlc3QpXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgdGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoc3RhdGljTWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0KSA9PiB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgICBtYW5pZmVzdDogc3RhdGljTWFuaWZlc3QsXG4gICAgICAgICAgICAgIHNlbGVjdGVkSWRzOiBbXSxcbiAgICAgICAgICAgICAgbWFuaWZlc3RJZDogc2VsZWN0ZWRQcmVzZW50YXRpb24uaWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZXRJbml0aWFsUHJlc2VudGF0aW9uKHtcbiAgICAgICAgICAgICAgaW5pdGlhbDogc3RhdGljTWFuaWZlc3RcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSgpKTtcbiAgICAgICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybCh0aGlzLmVkaXRpb25TdGFydFVybCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZE1ldGFkYXRhKG1ldGFkYXRhOiBNZXRhRXZlbnRUeXBlKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMuYWRkTWFuaWZlc3RNZXRhZGF0YSh7XG4gICAgICAgIHByZXNlbnRhdGlvbklkOiB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZT8uaWQhLFxuICAgICAgICBtZXRhZGF0YUlkOiBtZXRhZGF0YS5tZXRhZGF0YUlkLFxuICAgICAgICB2YWx1ZTogbWV0YWRhdGEudmFsdWUgPz8gJydcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZU1ldGFkYXRhKG1ldGFkYXRhOiBNZXRhRXZlbnRUeXBlKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3RNZXRhZGF0YSh7XG4gICAgICAgIHByZXNlbnRhdGlvbklkOiB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZT8uaWQhLFxuICAgICAgICBtZXRhZGF0YUlkOiBtZXRhZGF0YS5tZXRhZGF0YUlkXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmdvQmFjay5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dFwiPlxuICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3hcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+XG4gICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNoZWNrJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fY29udGVudFwiPlxuICAgIDxoMSBjbGFzcz1cImEtaDFcIj57eyAnQHByeS5wcmVzZW50YXRpb24uYWRkJyArICcucGFnZVRpdGxlJyB8IGkxOG4gfX08L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbi1mb3JtLXdyYXBwZXJcIj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiby1wcmVzZW50YXRpb24tZm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl9uYW1lXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0ubmFtZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGlkPVwicHJlc2VudGF0aW9uX25hbWVcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLm5hbWUnIHwgaTE4biB9fVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI1MFwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJwcmVzZW50YXRpb25fbmFtZVwiXG4gICAgICAgICAgICAqbmdJZj1cImZvcm0uZ2V0KCduYW1lJyk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoJ25hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24ucmVxdWlyZWQnIHwgaTE4biB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJwcmVzZW50YXRpb25fbmFtZVwiXG4gICAgICAgICAgICAqbmdJZj1cImZvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5tYXhMZW5ndGgnIHwgaTE4biA6IHsgbGVuOiAnNTAnIH0gfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25fZGVzY3JpcHRpb25cIj57e1xuICAgICAgICAgICAgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uZGVzY3JpcHRpb24nIHwgaTE4blxuICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGlkPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBjb2xzPVwiMzBcIlxuICAgICAgICAgICAgcm93cz1cIjVcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjAwXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uZGVzY3JpcHRpb24nIHwgaTE4biB9fVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJwcmVzZW50YXRpb25fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmdldCgnZGVzY3JpcHRpb24nKT8uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuIDogeyBsZW46ICcyMDAnIH0gfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25faW1hZ2VcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5pbWFnZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1maWxlLWlucHV0XCI+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdC1pbWFnZVxuICAgICAgICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9pbWFnZVwiXG4gICAgICAgICAgICAgIChjaGFuZ2VkKT1cImltYWdlID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgW2ljb25VcmxdPVwiaW1hZ2VcIlxuICAgICAgICAgICAgICBbbW9kZV09XCJ0eXBlXCJcbiAgICAgICAgICAgID48L3ByeS1zZWxlY3QtaW1hZ2U+XG4gICAgICAgICAgICA8cHJ5LWNoZWNrYm94IGZvcm1Db250cm9sTmFtZT1cImNvdmVyXCIgbmFtZT1cImNvdmVyXCIgbmdEZWZhdWx0Q29udHJvbD5cbiAgICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uY292ZXInIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsIG0tZm9ybS1sYWJlbC1maWVsZC0taW5saW5lXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmdyaWQnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkudG9vbGJveC5sYXlvdXQuJyArIHRoaXMuY2hvc2VuTGF5b3V0IHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8cHJ5LXNlbGVjdC1ncmlkLWxheW91dCAqbmdJZj1cIiFlZGl0aW9uXCI+PC9wcnktc2VsZWN0LWdyaWQtbGF5b3V0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9fbWV0YWRhdGEtZWRpdG9yXCIgKm5nSWY9XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luYyBhcyBzZWxlY3RlZFByZXNlbnRhdGlvblwiPlxuICAgICAgICA8cHJ5LW1ldGFkYXRhLWVkaXRvclxuICAgICAgICAgIFt0YXJnZXRJZF09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi5pZFwiXG4gICAgICAgICAgW2lzTW9kaWZpY2F0aW9uXT1cInRydWVcIlxuICAgICAgICAgIFttZXRhZGF0YV09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi5tZXRhZGF0YVwiXG4gICAgICAgICAgKHJlbW92ZU1ldGEpPVwicmVtb3ZlTWV0YWRhdGEoJGV2ZW50KVwiXG4gICAgICAgICAgKGFkZE1ldGEpPVwiYWRkTWV0YWRhdGEoJGV2ZW50KVwiXG4gICAgICAgICAgW3R5cGVdPVwiJ21ldGEnXCJcbiAgICAgICAgPjwvcHJ5LW1ldGFkYXRhLWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cImNvbmZpZ3VyZURhc2hib2FyZChzZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUhKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICA+XG4gICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY29uZmlndXJhdGlvbicgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|