@c8y/ngx-components 1021.63.2 → 1021.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts +7 -2
- package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
- package/core/bottom-drawer/bottom-drawer-ref.d.ts +4 -0
- package/core/bottom-drawer/bottom-drawer-ref.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb-item.component.d.ts +1 -1
- package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb-outlet.component.d.ts +1 -1
- package/core/breadcrumb/breadcrumb-outlet.component.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/core/breadcrumb/breadcrumb.component.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb.module.d.ts +7 -7
- package/core/breadcrumb/breadcrumb.module.d.ts.map +1 -1
- package/core/common/common.module.d.ts +38 -38
- package/core/common/date-format.service.d.ts +30 -0
- package/core/common/date-format.service.d.ts.map +1 -0
- package/core/common/date.pipe.d.ts +7 -3
- package/core/common/date.pipe.d.ts.map +1 -1
- package/core/common/index.d.ts +1 -0
- package/core/common/index.d.ts.map +1 -1
- package/core/common/outlet.directive.d.ts +1 -1
- package/core/common/outlet.directive.d.ts.map +1 -1
- package/core/common/user-preferences/user-preferences-store-current-user.d.ts +11 -0
- package/core/common/user-preferences/user-preferences-store-current-user.d.ts.map +1 -0
- package/core/common/user-preferences/user-preferences.service.d.ts +40 -1
- package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
- package/core/date-picker/date-picker.component.d.ts +3 -1
- package/core/date-picker/date-picker.component.d.ts.map +1 -1
- package/core/date-time-picker/date-time-picker.component.d.ts +6 -3
- package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
- package/core/dynamic-forms/date/date.type.component.d.ts +3 -0
- package/core/dynamic-forms/date/date.type.component.d.ts.map +1 -1
- package/core/plugins/plugins.model.d.ts +1 -0
- package/core/plugins/plugins.model.d.ts.map +1 -1
- package/core/plugins/plugins.service.d.ts +7 -2
- package/core/plugins/plugins.service.d.ts.map +1 -1
- package/core/time-interval/time-interval.component.d.ts +4 -2
- package/core/time-interval/time-interval.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugin-readme.component.d.ts +15 -0
- package/ecosystem/application-plugins/application-plugin-readme.component.d.ts.map +1 -0
- package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -2
- package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.module.d.ts +4 -3
- package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
- package/ecosystem/application-plugins/install-plugin.component.d.ts +8 -4
- package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/plugin-list.component.d.ts +10 -26
- package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/plugin-list.service.d.ts +27 -0
- package/ecosystem/application-plugins/plugin-list.service.d.ts.map +1 -0
- package/ecosystem/ecosystem.module.d.ts +2 -1
- package/ecosystem/ecosystem.module.d.ts.map +1 -1
- package/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.d.ts +15 -0
- package/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.d.ts.map +1 -0
- package/ecosystem/packages/package-changelog.guard.d.ts +10 -0
- package/ecosystem/packages/package-changelog.guard.d.ts.map +1 -0
- package/ecosystem/packages/package-details/package-details.component.d.ts +7 -9
- package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts +5 -1
- package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts +8 -3
- package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/packages-versions.component.d.ts +9 -2
- package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
- package/ecosystem/shared/index.d.ts +1 -0
- package/ecosystem/shared/index.d.ts.map +1 -1
- package/ecosystem/shared/package-changelog/package-changelog.component.d.ts +24 -0
- package/ecosystem/shared/package-changelog/package-changelog.component.d.ts.map +1 -0
- package/ecosystem/shared/shared-ecosystem.module.d.ts +2 -1
- package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
- package/esm2022/auth-configuration/sso-configuration/template-parts/signature-configuration.component.mjs +11 -7
- package/esm2022/core/bottom-drawer/bottom-drawer-ref.mjs +9 -3
- package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +3 -3
- package/esm2022/core/breadcrumb/breadcrumb-outlet.component.mjs +19 -9
- package/esm2022/core/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/core/breadcrumb/breadcrumb.module.mjs +16 -5
- package/esm2022/core/common/common.module.mjs +6 -6
- package/esm2022/core/common/date-format.service.mjs +81 -0
- package/esm2022/core/common/date.pipe.mjs +29 -6
- package/esm2022/core/common/index.mjs +2 -1
- package/esm2022/core/common/outlet.directive.mjs +4 -3
- package/esm2022/core/common/user-preferences/user-preferences-store-current-user.mjs +22 -0
- package/esm2022/core/common/user-preferences/user-preferences.service.mjs +106 -16
- package/esm2022/core/date-picker/date-picker.component.mjs +11 -4
- package/esm2022/core/date-time-picker/date-time-picker.component.mjs +20 -11
- package/esm2022/core/dynamic-forms/date/date.type.component.mjs +12 -4
- package/esm2022/core/plugins/plugins.model.mjs +1 -1
- package/esm2022/core/plugins/plugins.service.mjs +31 -5
- package/esm2022/core/time-interval/time-interval.component.mjs +9 -2
- package/esm2022/ecosystem/application-plugins/application-plugin-readme.component.mjs +26 -0
- package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +29 -14
- package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +6 -3
- package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +21 -15
- package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +3 -3
- package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +26 -202
- package/esm2022/ecosystem/application-plugins/plugin-list.service.mjs +200 -0
- package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +3 -3
- package/esm2022/ecosystem/application-properties/update-application-modal/update-application-modal.component.mjs +1 -1
- package/esm2022/ecosystem/ecosystem.module.mjs +21 -5
- package/esm2022/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.mjs +33 -0
- package/esm2022/ecosystem/packages/package-changelog.guard.mjs +22 -0
- package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +25 -44
- package/esm2022/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.mjs +14 -4
- package/esm2022/ecosystem/packages/package-versions/package-contents/packages-contents.component.mjs +27 -8
- package/esm2022/ecosystem/packages/package-versions/packages-versions.component.mjs +22 -8
- package/esm2022/ecosystem/shared/index.mjs +2 -1
- package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +3 -3
- package/esm2022/ecosystem/shared/package-changelog/package-changelog.component.mjs +82 -0
- package/esm2022/ecosystem/shared/package-version-select/package-version-select.component.mjs +3 -3
- package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +12 -6
- package/esm2022/operations/bulk-operation-scheduler/operation-scheduler.component.mjs +9 -7
- package/esm2022/operations/bulk-operations-list/bulk-operations-list.component.mjs +1 -1
- package/esm2022/upgrade/ng1/downgraded.services.mjs +3 -2
- package/esm2022/upgrade/ng1/index.mjs +3 -2
- package/esm2022/widgets/cockpit/index.mjs +3 -1
- package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
- package/esm2022/widgets/definitions/index.mjs +2 -1
- package/esm2022/widgets/definitions/radial-gauge/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +5 -0
- package/esm2022/widgets/definitions/radial-gauge/index.mjs +33 -0
- package/esm2022/widgets/implementations/info-gauge/index.mjs +2 -2
- package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/gauge.model.mjs +295 -0
- package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.mjs +141 -11
- package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/preset-preview/preset-preview.component.mjs +67 -0
- package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.mjs +34 -6
- package/esm2022/widgets/implementations/info-gauge/info-gauge-widget.module.mjs +9 -4
- package/esm2022/widgets/implementations/info-gauge/radial-gauge/radial-gauge.component.mjs +97 -0
- package/esm2022/widgets/implementations/info-gauge/radial-gauge/radial-gauge.service.mjs +369 -0
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +9 -5
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +209 -142
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +96 -13
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +336 -186
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -5
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +3 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +2 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +40 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +991 -28
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +833 -550
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +45 -6
- package/locales/es.po +45 -6
- package/locales/fr.po +45 -6
- package/locales/ja_JP.po +45 -6
- package/locales/ko.po +45 -6
- package/locales/locales.pot +73 -10
- package/locales/nl.po +45 -6
- package/locales/pl.po +45 -6
- package/locales/pt_BR.po +45 -6
- package/locales/zh_CN.po +45 -6
- package/locales/zh_TW.po +45 -6
- package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts +4 -2
- package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
- package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
- package/upgrade/ng1/index.d.ts.map +1 -1
- package/widgets/cockpit/index.d.ts +29 -0
- package/widgets/cockpit/index.d.ts.map +1 -1
- package/widgets/cockpit-exports/index.d.ts +6 -0
- package/widgets/cockpit-exports/index.d.ts.map +1 -1
- package/widgets/definitions/index.d.ts +1 -0
- package/widgets/definitions/index.d.ts.map +1 -1
- package/widgets/definitions/radial-gauge/c8y-ngx-components-widgets-definitions-radial-gauge.d.ts.map +1 -0
- package/widgets/definitions/radial-gauge/index.d.ts +33 -0
- package/widgets/definitions/radial-gauge/index.d.ts.map +1 -0
- package/widgets/implementations/info-gauge/index.d.ts +1 -1
- package/widgets/implementations/info-gauge/index.d.ts.map +1 -1
- package/widgets/implementations/info-gauge/info-gauge-widget-config/gauge.model.d.ts +339 -0
- package/widgets/implementations/info-gauge/info-gauge-widget-config/gauge.model.d.ts.map +1 -0
- package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts +27 -7
- package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/info-gauge/info-gauge-widget-config/preset-preview/preset-preview.component.d.ts +33 -0
- package/widgets/implementations/info-gauge/info-gauge-widget-config/preset-preview/preset-preview.component.d.ts.map +1 -0
- package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts +7 -3
- package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts.map +1 -1
- package/widgets/implementations/info-gauge/info-gauge-widget.module.d.ts +2 -1
- package/widgets/implementations/info-gauge/info-gauge-widget.module.d.ts.map +1 -1
- package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.component.d.ts +37 -0
- package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.component.d.ts.map +1 -0
- package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.service.d.ts +146 -0
- package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.service.d.ts.map +1 -0
- package/esm2022/widgets/implementations/info-gauge/info-gauge.model.mjs +0 -2
- package/widgets/implementations/info-gauge/info-gauge.model.d.ts +0 -7
- package/widgets/implementations/info-gauge/info-gauge.model.d.ts.map +0 -1
package/esm2022/ecosystem/packages/package-versions/package-contents/packages-contents.component.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute } from '@angular/router';
|
|
3
3
|
import { ApplicationService } from '@c8y/client';
|
|
4
4
|
import { AlertService, ContextRouteService } from '@c8y/ngx-components';
|
|
@@ -8,23 +8,28 @@ import * as i1 from "@angular/router";
|
|
|
8
8
|
import * as i2 from "@c8y/client";
|
|
9
9
|
import * as i3 from "@c8y/ngx-components";
|
|
10
10
|
import * as i4 from "@angular/common";
|
|
11
|
-
import * as i5 from "
|
|
12
|
-
import * as i6 from "./contents-
|
|
11
|
+
import * as i5 from "@c8y/ngx-components/ecosystem/shared";
|
|
12
|
+
import * as i6 from "./contents-plugins/contents-plugins.component";
|
|
13
|
+
import * as i7 from "./contents-apps/contents-apps.component";
|
|
13
14
|
export class PackageContentsComponent {
|
|
14
15
|
constructor(activatedRoute, applicationService, alertService, contextRouteService) {
|
|
15
16
|
this.activatedRoute = activatedRoute;
|
|
16
17
|
this.applicationService = applicationService;
|
|
17
18
|
this.alertService = alertService;
|
|
18
19
|
this.contextRouteService = contextRouteService;
|
|
20
|
+
this.showOverview = new EventEmitter();
|
|
19
21
|
this.package = {};
|
|
20
22
|
this.isLoading = false;
|
|
21
23
|
this.packageVersionProperties = packageProperties;
|
|
22
24
|
}
|
|
25
|
+
showPluginOverview(plugin) {
|
|
26
|
+
this.showOverview.emit(plugin);
|
|
27
|
+
}
|
|
23
28
|
async ngOnChanges(changes) {
|
|
24
|
-
if (changes.selectedVersion
|
|
29
|
+
if (changes.selectedVersion?.currentValue) {
|
|
25
30
|
this.loadManifest(this.selectedVersion);
|
|
31
|
+
this.previousVersion = this.getPreviousVersion();
|
|
26
32
|
}
|
|
27
|
-
this.selectedVersionManifest = undefined;
|
|
28
33
|
}
|
|
29
34
|
async loadManifest(version) {
|
|
30
35
|
this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;
|
|
@@ -41,13 +46,27 @@ export class PackageContentsComponent {
|
|
|
41
46
|
}
|
|
42
47
|
return undefined;
|
|
43
48
|
}
|
|
49
|
+
getPreviousVersion() {
|
|
50
|
+
if (this.package.applicationVersions.length === 1) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const selectedVersionIndex = this.package.applicationVersions.findIndex(version => version.version === this.selectedVersion);
|
|
54
|
+
if (selectedVersionIndex === 0) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return this.package.applicationVersions[selectedVersionIndex - 1].version;
|
|
58
|
+
}
|
|
44
59
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageContentsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ApplicationService }, { token: i3.AlertService }, { token: i3.ContextRouteService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageContentsComponent, selector: "c8y-package-contents", inputs: { selectedVersion: "selectedVersion" }, usesOnChanges: true, ngImport: i0, template: "<
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageContentsComponent, selector: "c8y-package-contents", inputs: { selectedVersion: "selectedVersion", selectedPlugin: "selectedPlugin" }, outputs: { showOverview: "showOverview" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n</ng-container>\n\n<ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n ></c8y-properties-list>\n\n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-contents-plugins>\n\n <!-- CHANGELOG -->\n <p class=\"legend form-block\">\n {{ 'Change log' | translate }}\n </p>\n\n <c8y-contents-changelog\n [package]=\"package\"\n [selectedVersion]=\"selectedVersion\"\n [previousVersion]=\"previousVersion\"\n ></c8y-contents-changelog>\n </div>\n</ng-container>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: i3.PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "component", type: i5.PackageChangelogComponent, selector: "c8y-contents-changelog", inputs: ["package", "selectedVersion", "previousVersion"] }, { kind: "component", type: i6.PackageVersionsPluginsComponent, selector: "c8y-contents-plugins", inputs: ["selectedVersionManifest", "selectedPlugin"], outputs: ["showOverview"] }, { kind: "component", type: i7.PackageVersionsAppsComponent, selector: "c8y-contents-apps", inputs: ["selectedVersionManifest"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
|
|
46
61
|
}
|
|
47
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageContentsComponent, decorators: [{
|
|
48
63
|
type: Component,
|
|
49
|
-
args: [{ selector: 'c8y-package-contents', template: "<
|
|
64
|
+
args: [{ selector: 'c8y-package-contents', template: "<ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n</ng-container>\n\n<ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n ></c8y-properties-list>\n\n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-contents-plugins>\n\n <!-- CHANGELOG -->\n <p class=\"legend form-block\">\n {{ 'Change log' | translate }}\n </p>\n\n <c8y-contents-changelog\n [package]=\"package\"\n [selectedVersion]=\"selectedVersion\"\n [previousVersion]=\"previousVersion\"\n ></c8y-contents-changelog>\n </div>\n</ng-container>\n" }]
|
|
50
65
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.ApplicationService }, { type: i3.AlertService }, { type: i3.ContextRouteService }], propDecorators: { selectedVersion: [{
|
|
51
66
|
type: Input
|
|
67
|
+
}], selectedPlugin: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], showOverview: [{
|
|
70
|
+
type: Output
|
|
52
71
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZXMtY29udGVudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZS1jb250ZW50cy9wYWNrYWdlcy1jb250ZW50cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9lY29zeXN0ZW0vcGFja2FnZXMvcGFja2FnZS12ZXJzaW9ucy9wYWNrYWdlLWNvbnRlbnRzL3BhY2thZ2VzLWNvbnRlbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQTJCLE1BQU0sYUFBYSxDQUFDO0FBQzFFLE9BQU8sRUFDTCxZQUFZLEVBRVosbUJBQW1CLEVBRXBCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7OztBQU16RSxNQUFNLE9BQU8sd0JBQXdCO0lBWW5DLFlBQ1UsY0FBOEIsRUFDOUIsa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLG1CQUF3QztRQUh4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBYnhDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFHL0QsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDM0IsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdULDZCQUF3QixHQUF5QixpQkFBaUIsQ0FBQztJQU96RSxDQUFDO0lBRUosa0JBQWtCLENBQUMsTUFBeUI7UUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBc0I7UUFDdEMsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLENBQUM7UUFDekYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFlO1FBQ3ZDLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FDckUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxlQUFlLENBQ3BELENBQUM7UUFDRixJQUFJLG9CQUFvQixLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDNUUsQ0FBQzsrR0F6RFUsd0JBQXdCO21HQUF4Qix3QkFBd0IsOE1DZnJDLDQrQ0FrREE7OzRGRG5DYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usc0JBQXNCO2lMQUl2QixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblNlcnZpY2UsIElBcHBsaWNhdGlvbiwgSU1hbmlmZXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBBcHBsaWNhdGlvblBsdWdpbixcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgUHJvcGVydGllc0xpc3RJdGVtXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgcGFja2FnZVByb3BlcnRpZXMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcGFja2FnZS1jb250ZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlcy1jb250ZW50cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUGFja2FnZUNvbnRlbnRzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2VsZWN0ZWRWZXJzaW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbjtcbiAgQE91dHB1dCgpIHNob3dPdmVydmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8QXBwbGljYXRpb25QbHVnaW4+KCk7XG5cbiAgc2VsZWN0ZWRWZXJzaW9uTWFuaWZlc3Q6IElNYW5pZmVzdDtcbiAgcGFja2FnZTogSUFwcGxpY2F0aW9uID0ge307XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBwcmV2aW91c1ZlcnNpb246IHN0cmluZyB8IG51bGw7XG5cbiAgcmVhZG9ubHkgcGFja2FnZVZlcnNpb25Qcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSA9IHBhY2thZ2VQcm9wZXJ0aWVzO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYXBwbGljYXRpb25TZXJ2aWNlOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHNob3dQbHVnaW5PdmVydmlldyhwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luKSB7XG4gICAgdGhpcy5zaG93T3ZlcnZpZXcuZW1pdChwbHVnaW4pO1xuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkVmVyc2lvbj8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmxvYWRNYW5pZmVzdCh0aGlzLnNlbGVjdGVkVmVyc2lvbik7XG4gICAgICB0aGlzLnByZXZpb3VzVmVyc2lvbiA9IHRoaXMuZ2V0UHJldmlvdXNWZXJzaW9uKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1hbmlmZXN0KHZlcnNpb246IHN0cmluZykge1xuICAgIHRoaXMucGFja2FnZSA9IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKT8uY29udGV4dERhdGE7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRWZXJzaW9uTWFuaWZlc3QgPSBhd2FpdCB0aGlzLmdldE1hbmlmZXN0KHZlcnNpb24pO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE1hbmlmZXN0KHZlcnNpb246IHN0cmluZyk6IFByb21pc2U8SU1hbmlmZXN0PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5nZXRBcHBNYW5pZmVzdCh0aGlzLnBhY2thZ2UsIHZlcnNpb24pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJldmlvdXNWZXJzaW9uKCkge1xuICAgIGlmICh0aGlzLnBhY2thZ2UuYXBwbGljYXRpb25WZXJzaW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RlZFZlcnNpb25JbmRleCA9IHRoaXMucGFja2FnZS5hcHBsaWNhdGlvblZlcnNpb25zLmZpbmRJbmRleChcbiAgICAgIHZlcnNpb24gPT4gdmVyc2lvbi52ZXJzaW9uID09PSB0aGlzLnNlbGVjdGVkVmVyc2lvblxuICAgICk7XG4gICAgaWYgKHNlbGVjdGVkVmVyc2lvbkluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZS5hcHBsaWNhdGlvblZlcnNpb25zW3NlbGVjdGVkVmVyc2lvbkluZGV4IC0gMV0udmVyc2lvbjtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWxlY3RlZFZlcnNpb25NYW5pZmVzdCAmJiAhaXNMb2FkaW5nXCI+XG4gIDxkaXYgY2xhc3M9XCJwLTE2XCI+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgW2ljb25dPVwiJ2JpZy1wYXJjZWwnXCJcbiAgICAgIFt0aXRsZV09XCInTm8gcGFja2FnZSBzZWxlY3RlZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW3N1YnRpdGxlXT1cIidTZWxlY3QgYSBwYWNrYWdlIGZyb20gdGhlIGxpc3QgdG8gZGlzcGxheSB0aGUgcGFja2FnZSBjb250ZW50cy4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRWZXJzaW9uTWFuaWZlc3QgJiYgIWlzTG9hZGluZ1wiPlxuICA8IS0tIERFVEFJTFMgLS0+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrXCI+XG4gICAgPGM4eS1wcm9wZXJ0aWVzLWxpc3RcbiAgICAgIFtkYXRhXT1cInNlbGVjdGVkVmVyc2lvbk1hbmlmZXN0XCJcbiAgICAgIFtlbXB0eUxhYmVsXT1cIictLSdcIlxuICAgICAgW3Byb3BlcnRpZXNdPVwicGFja2FnZVZlcnNpb25Qcm9wZXJ0aWVzXCJcbiAgICA+PC9jOHktcHJvcGVydGllcy1saXN0PlxuXG4gICAgPCEtLSBBUFBTIC0tPlxuICAgIDxjOHktY29udGVudHMtYXBwc1xuICAgICAgY2xhc3M9XCJwLXQtMTYgZC1ibG9ja1wiXG4gICAgICBbc2VsZWN0ZWRWZXJzaW9uTWFuaWZlc3RdPVwic2VsZWN0ZWRWZXJzaW9uTWFuaWZlc3RcIlxuICAgID48L2M4eS1jb250ZW50cy1hcHBzPlxuXG4gICAgPCEtLSBQTFVHSU5TIC0tPlxuICAgIDxjOHktY29udGVudHMtcGx1Z2luc1xuICAgICAgY2xhc3M9XCJwLXQtMTYgZC1ibG9ja1wiXG4gICAgICBbc2VsZWN0ZWRWZXJzaW9uTWFuaWZlc3RdPVwic2VsZWN0ZWRWZXJzaW9uTWFuaWZlc3RcIlxuICAgICAgW3NlbGVjdGVkUGx1Z2luXT1cInNlbGVjdGVkUGx1Z2luXCJcbiAgICAgIChzaG93T3ZlcnZpZXcpPVwic2hvd1BsdWdpbk92ZXJ2aWV3KCRldmVudClcIlxuICAgID48L2M4eS1jb250ZW50cy1wbHVnaW5zPlxuXG4gICAgPCEtLSBDSEFOR0VMT0cgLS0+XG4gICAgPHAgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgICAge3sgJ0NoYW5nZSBsb2cnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuXG4gICAgPGM4eS1jb250ZW50cy1jaGFuZ2Vsb2dcbiAgICAgIFtwYWNrYWdlXT1cInBhY2thZ2VcIlxuICAgICAgW3NlbGVjdGVkVmVyc2lvbl09XCJzZWxlY3RlZFZlcnNpb25cIlxuICAgICAgW3ByZXZpb3VzVmVyc2lvbl09XCJwcmV2aW91c1ZlcnNpb25cIlxuICAgID48L2M4eS1jb250ZW50cy1jaGFuZ2Vsb2c+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute } from '@angular/router';
|
|
3
|
-
import { ContextRouteService } from '@c8y/ngx-components';
|
|
3
|
+
import { ContextRouteService, gettext, PluginsService } from '@c8y/ngx-components';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/router";
|
|
6
6
|
import * as i2 from "@c8y/ngx-components";
|
|
@@ -8,25 +8,39 @@ import * as i3 from "@angular/common";
|
|
|
8
8
|
import * as i4 from "./package-contents/packages-contents.component";
|
|
9
9
|
import * as i5 from "./package-versions-list/package-versions-list.component";
|
|
10
10
|
export class PackageVersionsComponent {
|
|
11
|
-
constructor(activatedRoute, contextRouteService) {
|
|
11
|
+
constructor(activatedRoute, contextRouteService, pluginsService) {
|
|
12
12
|
this.activatedRoute = activatedRoute;
|
|
13
13
|
this.contextRouteService = contextRouteService;
|
|
14
|
+
this.pluginsService = pluginsService;
|
|
14
15
|
this.package = {};
|
|
16
|
+
this.packageContentsTitle = gettext('Version {{ selectedVersion }} package contents');
|
|
15
17
|
}
|
|
16
18
|
async ngOnInit() {
|
|
17
19
|
this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;
|
|
18
20
|
}
|
|
21
|
+
async showPluginOverview(plugin) {
|
|
22
|
+
this.selectedPlugin = plugin;
|
|
23
|
+
const baseUrl = `/apps/${plugin.id}/`;
|
|
24
|
+
this.pluginBaseUrl = baseUrl;
|
|
25
|
+
this.pluginMarkdown = await this.pluginsService.getReadmeFileContent(baseUrl);
|
|
26
|
+
}
|
|
27
|
+
closeOverview() {
|
|
28
|
+
this.selectedPlugin = null;
|
|
29
|
+
}
|
|
19
30
|
clearSelectedVersion() {
|
|
20
31
|
this.selectedVersion = null;
|
|
21
32
|
}
|
|
22
33
|
selectVersion(version) {
|
|
23
|
-
this.selectedVersion
|
|
34
|
+
if (this.selectedVersion !== version) {
|
|
35
|
+
this.selectedVersion = version;
|
|
36
|
+
this.closeOverview();
|
|
37
|
+
}
|
|
24
38
|
}
|
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageVersionsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ContextRouteService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageVersionsComponent, selector: "c8y-package-versions", ngImport: i0, template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageVersionsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ContextRouteService }, { token: i2.PluginsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageVersionsComponent, selector: "c8y-package-versions", ngImport: i0, template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div\n class=\"card content-fullpage d-grid\"\n [ngClass]=\"{ 'grid__col--6-6-0': !selectedPlugin, 'grid__col--0-6-6': !!selectedPlugin }\"\n>\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <!-- Package contents -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n class=\"btn-clean text-primary m-r-8\"\n title=\"{{ 'Back' | translate }}\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n <div\n class=\"card-title\"\n translate\n >\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </div>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <div class=\"card-title\">\n <ng-container *ngIf=\"selectedVersion\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents\n [selectedVersion]=\"selectedVersion\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-package-contents>\n </div>\n </div>\n\n <!-- Plugin readme -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\"\n >\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package versions overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i4.PackageContentsComponent, selector: "c8y-package-contents", inputs: ["selectedVersion", "selectedPlugin"], outputs: ["showOverview"] }, { kind: "component", type: i5.PackageVersionsListComponent, selector: "c8y-package-versions-list", outputs: ["onVersionSelect"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i2.MarkdownToHtmlPipe, name: "markdownToHtml" }] }); }
|
|
27
41
|
}
|
|
28
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageVersionsComponent, decorators: [{
|
|
29
43
|
type: Component,
|
|
30
|
-
args: [{ selector: 'c8y-package-versions', template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item
|
|
31
|
-
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.ContextRouteService }] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
args: [{ selector: 'c8y-package-versions', template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div\n class=\"card content-fullpage d-grid\"\n [ngClass]=\"{ 'grid__col--6-6-0': !selectedPlugin, 'grid__col--0-6-6': !!selectedPlugin }\"\n>\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <!-- Package contents -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n class=\"btn-clean text-primary m-r-8\"\n title=\"{{ 'Back' | translate }}\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n <div\n class=\"card-title\"\n translate\n >\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </div>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <div class=\"card-title\">\n <ng-container *ngIf=\"selectedVersion\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents\n [selectedVersion]=\"selectedVersion\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-package-contents>\n </div>\n </div>\n\n <!-- Plugin readme -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\"\n >\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package versions overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n" }]
|
|
45
|
+
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.ContextRouteService }, { type: i2.PluginsService }] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZXMtdmVyc2lvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZXMtdmVyc2lvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZXMtdmVyc2lvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsY0FBYyxFQUNmLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFNN0IsTUFBTSxPQUFPLHdCQUF3QjtJQVFuQyxZQUNVLGNBQThCLEVBQzlCLG1CQUF3QyxFQUN4QyxjQUE4QjtRQUY5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFWeEMsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFLM0IseUJBQW9CLEdBQUcsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFNOUUsQ0FBQztJQUVKLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLENBQUM7SUFDM0YsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUF5QjtRQUNoRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxTQUFTLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFlO1FBQzNCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7K0dBdENVLHdCQUF3QjttR0FBeEIsd0JBQXdCLDREQ2RyQyw0MEdBdUdBOzs0RkR6RmEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25QbHVnaW4sXG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIFBsdWdpbnNTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcGFja2FnZS12ZXJzaW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlcy12ZXJzaW9ucy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUGFja2FnZVZlcnNpb25zQ29tcG9uZW50IHtcbiAgcGFja2FnZTogSUFwcGxpY2F0aW9uID0ge307XG4gIHNlbGVjdGVkVmVyc2lvbjogc3RyaW5nO1xuICBzZWxlY3RlZFBsdWdpbjogQXBwbGljYXRpb25QbHVnaW47XG4gIHBsdWdpbkJhc2VVcmw6IHN0cmluZztcbiAgcGx1Z2luTWFya2Rvd246IHN0cmluZztcbiAgcGFja2FnZUNvbnRlbnRzVGl0bGUgPSBnZXR0ZXh0KCdWZXJzaW9uIHt7IHNlbGVjdGVkVmVyc2lvbiB9fSBwYWNrYWdlIGNvbnRlbnRzJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhY2thZ2UgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk/LmNvbnRleHREYXRhO1xuICB9XG5cbiAgYXN5bmMgc2hvd1BsdWdpbk92ZXJ2aWV3KHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICB0aGlzLnNlbGVjdGVkUGx1Z2luID0gcGx1Z2luO1xuICAgIGNvbnN0IGJhc2VVcmwgPSBgL2FwcHMvJHtwbHVnaW4uaWR9L2A7XG4gICAgdGhpcy5wbHVnaW5CYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLnBsdWdpbk1hcmtkb3duID0gYXdhaXQgdGhpcy5wbHVnaW5zU2VydmljZS5nZXRSZWFkbWVGaWxlQ29udGVudChiYXNlVXJsKTtcbiAgfVxuXG4gIGNsb3NlT3ZlcnZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFBsdWdpbiA9IG51bGw7XG4gIH1cblxuICBjbGVhclNlbGVjdGVkVmVyc2lvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbiA9IG51bGw7XG4gIH1cblxuICBzZWxlY3RWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVmVyc2lvbiAhPT0gdmVyc2lvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZFZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgdGhpcy5jbG9zZU92ZXJ2aWV3KCk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IHBhY2thZ2U/Lm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1hdG9tJ1wiXG4gICAgW2xhYmVsXT1cIidFY29zeXN0ZW0nIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYmlnLXBhcmNlbCdcIlxuICAgIFtsYWJlbF09XCInRXh0ZW5zaW9ucycgfCB0cmFuc2xhdGVcIlxuICAgIFtwYXRoXT1cIidlY29zeXN0ZW0vZXh0ZW5zaW9uL2V4dGVuc2lvbnMnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2xhYmVsXT1cInBhY2thZ2U/Lm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luY1wiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2xhYmVsXT1cIidWZXJzaW9ucycgfCB0cmFuc2xhdGVcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48ZGl2XG4gIGNsYXNzPVwiY2FyZCBjb250ZW50LWZ1bGxwYWdlIGQtZ3JpZFwiXG4gIFtuZ0NsYXNzXT1cInsgJ2dyaWRfX2NvbC0tNi02LTAnOiAhc2VsZWN0ZWRQbHVnaW4sICdncmlkX19jb2wtLTAtNi02JzogISFzZWxlY3RlZFBsdWdpbiB9XCJcbj5cbiAgPGM4eS1wYWNrYWdlLXZlcnNpb25zLWxpc3RcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgIChvblZlcnNpb25TZWxlY3QpPVwic2VsZWN0VmVyc2lvbigkZXZlbnQpXCJcbiAgPjwvYzh5LXBhY2thZ2UtdmVyc2lvbnMtbGlzdD5cblxuICA8IS0tIFBhY2thZ2UgY29udGVudHMgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImlubmVyLXNjcm9sbCBzcGxpdC12aWV3X19kZXRhaWxcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NwbGl0LXZpZXdfX2RldGFpbC0tc2VsZWN0ZWQnOiBzZWxlY3RlZFZlcnNpb24gfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGFyZ2UtcGFkZGluZyBjYXJkLWhlYWRlciBzZXBhcmF0b3IgdmlzaWJsZS1zbSB2aXNpYmxlLXhzIGZpdC13IHN0aWNreS10b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW4gdGV4dC1wcmltYXJ5IG0tci04XCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdCYWNrJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWRWZXJzaW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+QmFjazwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtdGl0bGVcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+XG4gICAgICAgICAge3sgcGFja2FnZUNvbnRlbnRzVGl0bGUgfCB0cmFuc2xhdGU6IHsgc2VsZWN0ZWRWZXJzaW9uIH0gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbGFyZ2UtcGFkZGluZyBzZXBhcmF0b3Igc3RpY2t5LXRvcCB2aXNpYmxlLW1kIHZpc2libGUtbGdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZlcnNpb25cIj5cbiAgICAgICAgICB7eyBwYWNrYWdlQ29udGVudHNUaXRsZSB8IHRyYW5zbGF0ZTogeyBzZWxlY3RlZFZlcnNpb24gfSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgc3BsaXQtdmlld19fbGlzdFwiPlxuICAgICAgPGM4eS1wYWNrYWdlLWNvbnRlbnRzXG4gICAgICAgIFtzZWxlY3RlZFZlcnNpb25dPVwic2VsZWN0ZWRWZXJzaW9uXCJcbiAgICAgICAgW3NlbGVjdGVkUGx1Z2luXT1cInNlbGVjdGVkUGx1Z2luXCJcbiAgICAgICAgKHNob3dPdmVydmlldyk9XCJzaG93UGx1Z2luT3ZlcnZpZXcoJGV2ZW50KVwiXG4gICAgICA+PC9jOHktcGFja2FnZS1jb250ZW50cz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBQbHVnaW4gcmVhZG1lIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJpbm5lci1zY3JvbGwgc3BsaXQtdmlld19fZGV0YWlsXCJcbiAgICBbbmdDbGFzc109XCJ7ICdzcGxpdC12aWV3X19kZXRhaWwtLXNlbGVjdGVkJzogc2VsZWN0ZWRQbHVnaW4gfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wXCJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRQbHVnaW5cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tY2xlYW5cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2VPdmVydmlldygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImNhcmV0LWJhY2tcIj48L2k+XG4gICAgICAgIHt7ICdCYWNrIHRvIHBhY2thZ2UgdmVyc2lvbnMgb3ZlcnZpZXcgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrIHAtbC0xNiBwLXItMTYgb3ZlcmZsb3ctdmlzaWJsZVwiXG4gICAgICAqbmdJZj1cInNlbGVjdGVkUGx1Z2luXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiXG4gICAgICAgICpuZ0lmPVwicGx1Z2luTWFya2Rvd25cIlxuICAgICAgICBbaW5uZXJIVE1MXT1cInBsdWdpbk1hcmtkb3duIHwgbWFya2Rvd25Ub0h0bWw6IHsgYmFzZVVybDogcGx1Z2luQmFzZVVybCB9IHwgYXN5bmNcIlxuICAgICAgPjwvZGl2PlxuICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICBbaWNvbl09XCIndXNlci1tYW51YWwnXCJcbiAgICAgICAgW3RpdGxlXT1cIidObyBSRUFETUUubWQgZm91bmQgZm9yIHBsdWdpbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgJ1RvIHZpZXcgdGhlIGNvbnRlbnRzIG9mICZxdW90O1JFQURNRSZxdW90OywgYWRkIHRoZSBmaWxlICZxdW90O1JFQURNRS5tZCZxdW90OyB0byB0aGUgcGx1Z2luLidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgICpuZ0lmPVwiIXBsdWdpbk1hcmtkb3duXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -15,4 +15,5 @@ export * from './list-filters/list-filters.model';
|
|
|
15
15
|
export * from './list-filters/list-filters.component';
|
|
16
16
|
export * from './package-availability.service';
|
|
17
17
|
export * from './archived-filter/archived-filter.component';
|
|
18
|
-
|
|
18
|
+
export * from './package-changelog/package-changelog.component';
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMseUZBQXlGLENBQUM7QUFDeEcsY0FBYyxxR0FBcUcsQ0FBQztBQUNwSCxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlEQUFpRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hZGQtYXBwbGljYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24tY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZHVwbGljYXRlLWFwcGxpY2F0aW9uL2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi1saXN0L2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi9kdXBsaWNhdGUtYXBwbGljYXRpb24tcHJvcGVydGllcy9kdXBsaWNhdGUtYXBwbGljYXRpb24tcHJvcGVydGllcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kdXBsaWNhdGUtYXBwbGljYXRpb24vZHVwbGljYXRlLWFwcGxpY2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Vjb3N5c3RlbS5jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9lY29zeXN0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lY29zeXN0ZW0uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3BhY2thZ2UtdmVyc2lvbi1zZWxlY3QvcGFja2FnZS12ZXJzaW9uLXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQtZWNvc3lzdGVtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0ZS1wYWNrYWdlLWxhYmVsLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQtYXJjaGl2ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0LWZpbHRlcnMvbGlzdC1maWx0ZXJzLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVycy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWNrYWdlLWF2YWlsYWJpbGl0eS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXJjaGl2ZWQtZmlsdGVyL2FyY2hpdmVkLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWNrYWdlLWNoYW5nZWxvZy9wYWNrYWdlLWNoYW5nZWxvZy5jb21wb25lbnQnO1xuIl19
|
|
@@ -210,11 +210,11 @@ export class ListFiltersComponent {
|
|
|
210
210
|
});
|
|
211
211
|
}
|
|
212
212
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListFiltersComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AppStateService }, { token: i3.TranslateService }, { token: i2.GainsightService }, { token: i4.Router }, { token: i4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
213
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ListFiltersComponent, selector: "c8y-list-filters", inputs: { packageTypes: "packageTypes", packageAvailabilities: "packageAvailabilities", packageContents: "packageContents" }, outputs: { filterPipeChange: "filterPipeChange" }, viewQueries: [{ propertyName: "filterInput", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i5.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.FilterInputComponent, selector: "c8y-filter", inputs: ["icon", "filterTerm"], outputs: ["onSearch"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i7.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }] }); }
|
|
213
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ListFiltersComponent, selector: "c8y-list-filters", inputs: { packageTypes: "packageTypes", packageAvailabilities: "packageAvailabilities", packageContents: "packageContents" }, outputs: { filterPipeChange: "filterPipeChange" }, viewQueries: [{ propertyName: "filterInput", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center gap-4 w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i5.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.FilterInputComponent, selector: "c8y-filter", inputs: ["icon", "filterTerm"], outputs: ["onSearch"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i7.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }] }); }
|
|
214
214
|
}
|
|
215
215
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListFiltersComponent, decorators: [{
|
|
216
216
|
type: Component,
|
|
217
|
-
args: [{ selector: 'c8y-list-filters', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n" }]
|
|
217
|
+
args: [{ selector: 'c8y-list-filters', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center gap-4 w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n" }]
|
|
218
218
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AppStateService }, { type: i3.TranslateService }, { type: i2.GainsightService }, { type: i4.Router }, { type: i4.ActivatedRoute }], propDecorators: { packageTypes: [{
|
|
219
219
|
type: Input
|
|
220
220
|
}], packageAvailabilities: [{
|
|
@@ -227,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
227
227
|
type: ViewChild,
|
|
228
228
|
args: [FilterInputComponent]
|
|
229
229
|
}] } });
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9zaGFyZWQvbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL2xpc3QtZmlsdGVycy9saXN0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7OztBQU9sRSxNQUFNLE9BQU8sb0JBQW9CO0lBbUIvQixZQUNVLFdBQXdCLEVBQ3hCLEVBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsTUFBYyxFQUNkLGNBQThCO1FBTDlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLE9BQUUsR0FB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S0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQzBCLFdBQVc7c0JBQTNDLFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEZpbHRlcklucHV0Q29tcG9uZW50LFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBpbnRlcm5hbEFwcHMsXG4gIFBhY2thZ2VUeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgcGlwZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9lY29zeXN0ZW0uY29uc3RhbnRzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0gfSBmcm9tICcuLi9lY29zeXN0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyYWJsZUFwcE9yUGx1Z2luLCBGaWx0ZXJQaXBlLCBQYWNrYWdlRmlsdGVycyB9IGZyb20gJy4vbGlzdC1maWx0ZXJzLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxpc3QtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExpc3RGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcGFja2FnZVR5cGVzOiAoa2V5b2YgUGFja2FnZUZpbHRlcnNbJ3R5cGUnXSlbXSA9IFtdO1xuICBASW5wdXQoKSBwYWNrYWdlQXZhaWxhYmlsaXRpZXM6IChrZXlvZiBQYWNrYWdlRmlsdGVyc1snYXZhaWxhYmlsaXR5J10pW10gPSBbXTtcbiAgQElucHV0KCkgcGFja2FnZUNvbnRlbnRzOiAoa2V5b2YgUGFja2FnZUZpbHRlcnNbJ2NvbnRlbnQnXSlbXSA9IFtdO1xuICBAT3V0cHV0KCkgZmlsdGVyUGlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyUGlwZT4oKTtcbiAgQFZpZXdDaGlsZChGaWx0ZXJJbnB1dENvbXBvbmVudCkgZmlsdGVySW5wdXQ6IEZpbHRlcklucHV0Q29tcG9uZW50O1xuXG4gIGZvcm1Hcm91cDogUmV0dXJuVHlwZTxMaXN0RmlsdGVyc0NvbXBvbmVudFsnaW5pdEZvcm0nXT47XG4gIGNoaXBzOiBbc3RyaW5nLCBGb3JtQ29udHJvbF1bXSA9IFtdO1xuICBwcmVkZWZpbmVkRmlsdGVyc1Zpc2libGU6IGJvb2xlYW47XG4gIGN1c3RvbUZpbHRlcnMgPSBuZXcgTWFwPHN0cmluZywgKGFwcDogRmlsdGVyYWJsZUFwcE9yUGx1Z2luLCBlbmFibGVkOiBib29sZWFuKSA9PiBib29sZWFuPigpO1xuICBjdXJyZW50RmlsdGVyVGVybTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY3VycmVudExhbmc6IHN0cmluZztcbiAgcHJpdmF0ZSBkYXRhOiBGaWx0ZXJhYmxlQXBwT3JQbHVnaW5bXTtcbiAgcHJpdmF0ZSBjdXJyZW50RmlsdGVyc1N0YXRlOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPjtcbiAgcHJpdmF0ZSBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSB1aTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xuICAgIHRoaXMucHJlZGVmaW5lZEZpbHRlcnNWaXNpYmxlID1cbiAgICAgIHRoaXMucGFja2FnZVR5cGVzPy5sZW5ndGggPiAwIHx8XG4gICAgICB0aGlzLnBhY2thZ2VBdmFpbGFiaWxpdGllcz8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5wYWNrYWdlQ29udGVudHM/Lmxlbmd0aCA+IDA7XG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IHRoaXMudWkuc3RhdGUubGFuZztcbiAgICB0aGlzLnN1YnNjcmliZVRvUXVlcnlQYXJhbXMoKTtcbiAgfVxuXG4gIHNldEZpbHRlclRlcm0oZmlsdGVyVGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RmlsdGVyVGVybSA9IGZpbHRlclRlcm07XG4gICAgdGhpcy5zZXRQaXBlKCk7XG5cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuRVZFTlRTLkZJTFRFUl9MSVNULFxuICAgICAge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuTElTVF9GSUxURVJTLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkFDVElPTlMuU0VUX0ZJTFRFUl9URVJNLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhcHBseVByZWRlZmluZWRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xuICAgIHRoaXMuc2V0Q2hpcHMoKTtcbiAgICB0aGlzLnNldFBpcGUoKTtcblxuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5FVkVOVFMuRklMVEVSX0xJU1QsXG4gICAgICB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5MSVNUX0ZJTFRFUlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQUNUSU9OUy5TRVRfUFJFREVGSU5FRF9GSUxURVJTLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTixcbiAgICAgICAgZmlsdGVyczogdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChcbiAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkVWRU5UUy5GSUxURVJfTElTVCxcbiAgICAgIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLkxJU1RfRklMVEVSUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlJFU0VUX0ZJTFRFUixcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuYXBwbHlQcmVkZWZpbmVkRmlsdGVycygpO1xuICB9XG5cbiAgcmVzZXRBbGxGaWx0ZXJzKCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICB0aGlzLmZpbHRlcklucHV0LnJlc2V0KCk7XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bihpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGRlc2VsZWN0Q2hpcChjaGlwOiBbc3RyaW5nLCBGb3JtQ29udHJvbF0pOiB2b2lkIHtcbiAgICBjaGlwWzFdLnNldFZhbHVlKGZhbHNlKTtcbiAgICB0aGlzLmFwcGx5UHJlZGVmaW5lZEZpbHRlcnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHN1YnNjcmliZVRvUXVlcnlQYXJhbXMoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgocXVlcnlQYXJhbXM6IFBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5wYXJzZVF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyVGVybSA9IHF1ZXJ5UGFyYW1zLmZpbHRlclRlcm0gfHwgJyc7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoZmlsdGVycyk7XG4gICAgICAgIHRoaXMuYXBwbHlQcmVkZWZpbmVkRmlsdGVycygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFF1ZXJ5UGFyYW1zKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAuLi50aGlzLnNpbXBsaWZ5RmlsdGVyT2JqZWN0KHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSksXG4gICAgICAgIGZpbHRlclRlcm06IHRoaXMuY3VycmVudEZpbHRlclRlcm0gfHwgbnVsbFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMpOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPiB7XG4gICAgY29uc3QgZmlsdGVyOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPiA9IHt9O1xuICAgIGZvciAoY29uc3QgZnVsbEtleSBpbiBxdWVyeVBhcmFtcykge1xuICAgICAgY29uc3QgW2tleSwgc3ViS2V5XSA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICAgIGlmICghZmlsdGVyW2tleV0pIHtcbiAgICAgICAgZmlsdGVyW2tleV0gPSB7fTtcbiAgICAgIH1cbiAgICAgIGZpbHRlcltrZXldW3N1YktleV0gPSBxdWVyeVBhcmFtc1tmdWxsS2V5XSA9PT0gJ3RydWUnO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzaW1wbGlmeUZpbHRlck9iamVjdChjdXJyZW50RmlsdGVyc1N0YXRlOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPik6IFBhcmFtcyB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRGaWx0ZXJzU3RhdGUpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHN1YktleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50RmlsdGVyc1N0YXRlW2tleV0pO1xuICAgICAgZm9yIChjb25zdCBzdWJLZXkgb2Ygc3ViS2V5cykge1xuICAgICAgICBpZiAoY3VycmVudEZpbHRlcnNTdGF0ZVtrZXldW3N1YktleV0pIHtcbiAgICAgICAgICByZXN1bHRbYCR7a2V5fS4ke3N1YktleX1gXSA9IGN1cnJlbnRGaWx0ZXJzU3RhdGVba2V5XVtzdWJLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGluaXRGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHR5cGU6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBbUGFja2FnZVR5cGUuT0ZGSUNJQUxdOiBbZmFsc2VdLFxuICAgICAgICBbUGFja2FnZVR5cGUuQ09NTVVOSVRZXTogW2ZhbHNlXVxuICAgICAgfSksXG4gICAgICBhdmFpbGFiaWxpdHk6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBbQVBQX1NUQVRFLlNVQlNDUklCRUQubGFiZWxdOiBbZmFsc2VdLFxuICAgICAgICBbQVBQX1NUQVRFLlVOUEFDS0VELmxhYmVsXTogW2ZhbHNlXSxcbiAgICAgICAgW0FQUF9TVEFURS5FWFRFUk5BTC5sYWJlbF06IFtmYWxzZV0sXG4gICAgICAgIFtBUFBfU1RBVEUuQ1VTVE9NLmxhYmVsXTogW2ZhbHNlXVxuICAgICAgfSksXG4gICAgICBjb250ZW50OiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgW0FQUF9TVEFURS5QQUNLQUdFX0JMVUVQUklOVC5sYWJlbF06IFtmYWxzZV0sXG4gICAgICAgIFtBUFBfU1RBVEUuUEFDS0FHRV9QTFVHSU4ubGFiZWxdOiBbZmFsc2VdXG4gICAgICB9KSxcbiAgICAgIGN1c3RvbTogdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7fSlcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFF1ZXJ5UGFyYW1zKCk7XG4gICAgY29uc3QgZmlsdGVyUGlwZSA9IHBpcGUoXG4gICAgICBtYXAoKGRhdGE6IEZpbHRlcmFibGVBcHBPclBsdWdpbltdKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEuZmlsdGVyKChhcHA6IEZpbHRlcmFibGVBcHBPclBsdWdpbikgPT4ge1xuICAgICAgICAgIGxldCBtYXRjaGVzQnlTdHJpbmc7XG4gICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtIHx8IHRoaXMuY3VycmVudEZpbHRlclRlcm0udHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgbWF0Y2hlc0J5U3RyaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXBwTmFtZSA9XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudExhbmcgPT09ICdlbicgfHwgIWFwcC5uYW1lPy5sZW5ndGggfHwgIWludGVybmFsQXBwc1thcHAubmFtZV1cbiAgICAgICAgICAgICAgICA/IGFwcC5uYW1lXG4gICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChpbnRlcm5hbEFwcHNbYXBwLm5hbWVdKTtcbiAgICAgICAgICAgIG1hdGNoZXNCeVN0cmluZyA9XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udGFpblN0cmluZyhhcHBOYW1lLCB0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtKSB8fFxuICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvbnRhaW5TdHJpbmcoYXBwLmRlc2NyaXB0aW9uLCB0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkgPVxuICAgICAgICAgICAgdGhpcy5hcHBNYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkoYXBwLCAndHlwZScpICYmXG4gICAgICAgICAgICB0aGlzLmFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShhcHAsICdhdmFpbGFiaWxpdHknKSAmJlxuICAgICAgICAgICAgdGhpcy5hcHBNYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkoYXBwLCAnY29udGVudCcpICYmXG4gICAgICAgICAgICB0aGlzLmFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShhcHAsICdjdXN0b20nKTtcblxuICAgICAgICAgIHJldHVybiBtYXRjaGVzQnlTdHJpbmcgJiYgbWF0Y2hlc0J5UHJlZGVmaW5lZFByb3BlcnR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmZpbHRlclBpcGVDaGFuZ2UuZW1pdChmaWx0ZXJQaXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ29udGFpblN0cmluZyhuYW1lOiBzdHJpbmcsIGZpbHRlclRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRlcm0gPSBmaWx0ZXJUZXJtLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIHJldHVybiBuYW1lICYmIG5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRlcm0pID4gLTE7XG4gIH1cblxuICBwcml2YXRlIGFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShcbiAgICBhcHA6IEZpbHRlcmFibGVBcHBPclBsdWdpbixcbiAgICBwcm9wZXJ0eToga2V5b2YgUGFja2FnZUZpbHRlcnNcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKHByb3BlcnR5ID09PSAnY3VzdG9tJyAmJiB0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGUpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGVbcHJvcGVydHldKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICB0aGlzLmN1c3RvbUZpbHRlcnMuZ2V0KGtleSkoYXBwLCB2YWx1ZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gaWYgZmlsdGVyIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHByb3BlcnR5IGZpbHRlcnMgb3IgYWxsIGZpbHRlcnMgYXJlIGZhbHNlLCBmaWx0ZXIgaXMgaW5hY3RpdmVcbiAgICBjb25zdCBmaWx0ZXJGb3JQcm9wZXJ0eUlzQWN0aXZlID1cbiAgICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZT8uW3Byb3BlcnR5XSAmJlxuICAgICAgIU9iamVjdC52YWx1ZXModGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlW3Byb3BlcnR5XSkuZXZlcnkodiA9PiAhdik7XG5cbiAgICBpZiAoIWZpbHRlckZvclByb3BlcnR5SXNBY3RpdmUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWFwcC5maWx0ZXJQcm9wcz8uW3Byb3BlcnR5XSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlW3Byb3BlcnR5XVthcHAuZmlsdGVyUHJvcHNbcHJvcGVydHldXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENoaXBzKCk6IHZvaWQge1xuICAgIHRoaXMuY2hpcHMgPSBbXTtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sc0dyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGNvbnRyb2xzR3JvdXAuY29udHJvbHMpLmZvckVhY2goKGVudHJ5OiBbc3RyaW5nLCBGb3JtQ29udHJvbF0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5WzFdLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jaGlwcy5wdXNoKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4+XG4gIDxjOHktZmlsdGVyXG4gICAgW2ZpbHRlclRlcm1dPVwiY3VycmVudEZpbHRlclRlcm1cIlxuICAgIChvblNlYXJjaCk9XCJzZXRGaWx0ZXJUZXJtKCRldmVudClcIlxuICA+PC9jOHktZmlsdGVyPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duIG0tbC04IG0tci00XCJcbiAgICAqbmdJZj1cInByZWRlZmluZWRGaWx0ZXJzVmlzaWJsZVwiXG4gICAgZHJvcGRvd25cbiAgICAoaXNPcGVuQ2hhbmdlKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIlxuICAgICNmaWx0ZXJzRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gICAgW2Nka1RyYXBGb2N1c109XCJmaWx0ZXJzRHJvcGRvd24uaXNPcGVuXCJcbiAgICBbaW5zaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZC1pbmxpbmUtZmxleFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1jbGVhbiBmb3JtLWNvbnRyb2wgcC1sLTggcC1yLTE2IGEtcy1zdHJldGNoIGQtZmxleCBhLWktY2VudGVyIHctYXV0byBmbGV4LW5vLXNocmlua1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0ZpbHRlcnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgZHJvcGRvd25Ub2dnbGVcbiAgICAgID5cbiAgICAgICAgPHNwYW4gW25nUGx1cmFsXT1cImNoaXBzLmxlbmd0aFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCI9MFwiPlxuICAgICAgICAgICAge3sgJ0ZpbHRlcnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7IGNoaXBzLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIHt7ICdGaWx0ZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwib3RoZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7IGNoaXBzLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIHt7ICdGaWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJldFwiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uIHAtdC0wIHAtYi0wIGQtZmxleCBnYXAtNCBhLWktY2VudGVyIGlubmVyLXNjcm9sbFwiXG4gICAgICAgICpuZ0lmPVwiY2hpcHMubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaXAgb2YgY2hpcHNcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWcgdGFnLS1pbmZvIGNoaXBcIlxuICAgICAgICAgICAgKm5nSWY9XCJjaGlwWzFdLnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tY2xlYW4gdGV4dC0xMFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlc2VsZWN0Q2hpcChjaGlwKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAge3sgY2hpcFswXSB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIlxuICAgICAgKmRyb3Bkb3duTWVudVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1mb3JtXCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICpuZ0lmPVwicGFja2FnZVR5cGVzLmxlbmd0aFwiXG4gICAgICAgICAgZm9ybUdyb3VwTmFtZT1cInR5cGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgICAgICAgICB7eyAnVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgW3RpdGxlXT1cInR5cGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgcGFja2FnZVR5cGVzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ0eXBlXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInR5cGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHR5cGUgfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAqbmdJZj1cInBhY2thZ2VBdmFpbGFiaWxpdGllcy5sZW5ndGhcIlxuICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJhdmFpbGFiaWxpdHlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgICAgICAgICB7eyAnQXZhaWxhYmlsaXR5YG9mIHBhY2thZ2UgYmFzZWQgb24gYXBwIHN0YXRlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImF2YWlsYWJpbGl0eSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXZhaWxhYmlsaXR5IG9mIHBhY2thZ2VBdmFpbGFiaWxpdGllc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgYXZhaWxhYmlsaXR5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgKm5nSWY9XCJwYWNrYWdlQ29udGVudHMubGVuZ3RoXCJcbiAgICAgICAgICBmb3JtR3JvdXBOYW1lPVwiY29udGVudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtLWItMTZcIj5cbiAgICAgICAgICAgIHt7ICdDb250ZW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiY29udGVudCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBwYWNrYWdlQ29udGVudHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiY29udGVudFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgY29udGVudCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgZm9ybUdyb3VwTmFtZT1cImN1c3RvbVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZC1mbGV4IGdhcC04IHNlcGFyYXRvci10b3BcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBmbGV4LWdyb3dcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1Jlc2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0KCk7IGZpbHRlcnNEcm9wZG93bi5pc09wZW4gPSBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnUmVzZXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZmxleC1ncm93XCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJhcHBseVByZWRlZmluZWRGaWx0ZXJzKCk7IGZpbHRlcnNEcm9wZG93bi5pc09wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1Hcm91cC5wcmlzdGluZSAmJiBmb3JtR3JvdXAudW50b3VjaGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9zaGFyZWQvbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL2xpc3QtZmlsdGVycy9saXN0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7OztBQU9sRSxNQUFNLE9BQU8sb0JBQW9CO0lBbUIvQixZQUNVLFdBQXdCLEVBQ3hCLEVBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsTUFBYyxFQUNkLGNBQThCO1FBTDlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLE9BQUUsR0FB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S0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQzBCLFdBQVc7c0JBQTNDLFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEZpbHRlcklucHV0Q29tcG9uZW50LFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBpbnRlcm5hbEFwcHMsXG4gIFBhY2thZ2VUeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgcGlwZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9lY29zeXN0ZW0uY29uc3RhbnRzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0gfSBmcm9tICcuLi9lY29zeXN0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyYWJsZUFwcE9yUGx1Z2luLCBGaWx0ZXJQaXBlLCBQYWNrYWdlRmlsdGVycyB9IGZyb20gJy4vbGlzdC1maWx0ZXJzLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxpc3QtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExpc3RGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcGFja2FnZVR5cGVzOiAoa2V5b2YgUGFja2FnZUZpbHRlcnNbJ3R5cGUnXSlbXSA9IFtdO1xuICBASW5wdXQoKSBwYWNrYWdlQXZhaWxhYmlsaXRpZXM6IChrZXlvZiBQYWNrYWdlRmlsdGVyc1snYXZhaWxhYmlsaXR5J10pW10gPSBbXTtcbiAgQElucHV0KCkgcGFja2FnZUNvbnRlbnRzOiAoa2V5b2YgUGFja2FnZUZpbHRlcnNbJ2NvbnRlbnQnXSlbXSA9IFtdO1xuICBAT3V0cHV0KCkgZmlsdGVyUGlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyUGlwZT4oKTtcbiAgQFZpZXdDaGlsZChGaWx0ZXJJbnB1dENvbXBvbmVudCkgZmlsdGVySW5wdXQ6IEZpbHRlcklucHV0Q29tcG9uZW50O1xuXG4gIGZvcm1Hcm91cDogUmV0dXJuVHlwZTxMaXN0RmlsdGVyc0NvbXBvbmVudFsnaW5pdEZvcm0nXT47XG4gIGNoaXBzOiBbc3RyaW5nLCBGb3JtQ29udHJvbF1bXSA9IFtdO1xuICBwcmVkZWZpbmVkRmlsdGVyc1Zpc2libGU6IGJvb2xlYW47XG4gIGN1c3RvbUZpbHRlcnMgPSBuZXcgTWFwPHN0cmluZywgKGFwcDogRmlsdGVyYWJsZUFwcE9yUGx1Z2luLCBlbmFibGVkOiBib29sZWFuKSA9PiBib29sZWFuPigpO1xuICBjdXJyZW50RmlsdGVyVGVybTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY3VycmVudExhbmc6IHN0cmluZztcbiAgcHJpdmF0ZSBkYXRhOiBGaWx0ZXJhYmxlQXBwT3JQbHVnaW5bXTtcbiAgcHJpdmF0ZSBjdXJyZW50RmlsdGVyc1N0YXRlOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPjtcbiAgcHJpdmF0ZSBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSB1aTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xuICAgIHRoaXMucHJlZGVmaW5lZEZpbHRlcnNWaXNpYmxlID1cbiAgICAgIHRoaXMucGFja2FnZVR5cGVzPy5sZW5ndGggPiAwIHx8XG4gICAgICB0aGlzLnBhY2thZ2VBdmFpbGFiaWxpdGllcz8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5wYWNrYWdlQ29udGVudHM/Lmxlbmd0aCA+IDA7XG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IHRoaXMudWkuc3RhdGUubGFuZztcbiAgICB0aGlzLnN1YnNjcmliZVRvUXVlcnlQYXJhbXMoKTtcbiAgfVxuXG4gIHNldEZpbHRlclRlcm0oZmlsdGVyVGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RmlsdGVyVGVybSA9IGZpbHRlclRlcm07XG4gICAgdGhpcy5zZXRQaXBlKCk7XG5cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuRVZFTlRTLkZJTFRFUl9MSVNULFxuICAgICAge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuTElTVF9GSUxURVJTLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkFDVElPTlMuU0VUX0ZJTFRFUl9URVJNLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhcHBseVByZWRlZmluZWRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xuICAgIHRoaXMuc2V0Q2hpcHMoKTtcbiAgICB0aGlzLnNldFBpcGUoKTtcblxuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5FVkVOVFMuRklMVEVSX0xJU1QsXG4gICAgICB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5MSVNUX0ZJTFRFUlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQUNUSU9OUy5TRVRfUFJFREVGSU5FRF9GSUxURVJTLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTixcbiAgICAgICAgZmlsdGVyczogdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChcbiAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkVWRU5UUy5GSUxURVJfTElTVCxcbiAgICAgIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLkxJU1RfRklMVEVSUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlJFU0VUX0ZJTFRFUixcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuYXBwbHlQcmVkZWZpbmVkRmlsdGVycygpO1xuICB9XG5cbiAgcmVzZXRBbGxGaWx0ZXJzKCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICB0aGlzLmZpbHRlcklucHV0LnJlc2V0KCk7XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bihpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGRlc2VsZWN0Q2hpcChjaGlwOiBbc3RyaW5nLCBGb3JtQ29udHJvbF0pOiB2b2lkIHtcbiAgICBjaGlwWzFdLnNldFZhbHVlKGZhbHNlKTtcbiAgICB0aGlzLmFwcGx5UHJlZGVmaW5lZEZpbHRlcnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHN1YnNjcmliZVRvUXVlcnlQYXJhbXMoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgocXVlcnlQYXJhbXM6IFBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5wYXJzZVF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyVGVybSA9IHF1ZXJ5UGFyYW1zLmZpbHRlclRlcm0gfHwgJyc7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoZmlsdGVycyk7XG4gICAgICAgIHRoaXMuYXBwbHlQcmVkZWZpbmVkRmlsdGVycygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFF1ZXJ5UGFyYW1zKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAuLi50aGlzLnNpbXBsaWZ5RmlsdGVyT2JqZWN0KHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSksXG4gICAgICAgIGZpbHRlclRlcm06IHRoaXMuY3VycmVudEZpbHRlclRlcm0gfHwgbnVsbFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMpOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPiB7XG4gICAgY29uc3QgZmlsdGVyOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPiA9IHt9O1xuICAgIGZvciAoY29uc3QgZnVsbEtleSBpbiBxdWVyeVBhcmFtcykge1xuICAgICAgY29uc3QgW2tleSwgc3ViS2V5XSA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICAgIGlmICghZmlsdGVyW2tleV0pIHtcbiAgICAgICAgZmlsdGVyW2tleV0gPSB7fTtcbiAgICAgIH1cbiAgICAgIGZpbHRlcltrZXldW3N1YktleV0gPSBxdWVyeVBhcmFtc1tmdWxsS2V5XSA9PT0gJ3RydWUnO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzaW1wbGlmeUZpbHRlck9iamVjdChjdXJyZW50RmlsdGVyc1N0YXRlOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPik6IFBhcmFtcyB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRGaWx0ZXJzU3RhdGUpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHN1YktleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50RmlsdGVyc1N0YXRlW2tleV0pO1xuICAgICAgZm9yIChjb25zdCBzdWJLZXkgb2Ygc3ViS2V5cykge1xuICAgICAgICBpZiAoY3VycmVudEZpbHRlcnNTdGF0ZVtrZXldW3N1YktleV0pIHtcbiAgICAgICAgICByZXN1bHRbYCR7a2V5fS4ke3N1YktleX1gXSA9IGN1cnJlbnRGaWx0ZXJzU3RhdGVba2V5XVtzdWJLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGluaXRGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHR5cGU6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBbUGFja2FnZVR5cGUuT0ZGSUNJQUxdOiBbZmFsc2VdLFxuICAgICAgICBbUGFja2FnZVR5cGUuQ09NTVVOSVRZXTogW2ZhbHNlXVxuICAgICAgfSksXG4gICAgICBhdmFpbGFiaWxpdHk6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBbQVBQX1NUQVRFLlNVQlNDUklCRUQubGFiZWxdOiBbZmFsc2VdLFxuICAgICAgICBbQVBQX1NUQVRFLlVOUEFDS0VELmxhYmVsXTogW2ZhbHNlXSxcbiAgICAgICAgW0FQUF9TVEFURS5FWFRFUk5BTC5sYWJlbF06IFtmYWxzZV0sXG4gICAgICAgIFtBUFBfU1RBVEUuQ1VTVE9NLmxhYmVsXTogW2ZhbHNlXVxuICAgICAgfSksXG4gICAgICBjb250ZW50OiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgW0FQUF9TVEFURS5QQUNLQUdFX0JMVUVQUklOVC5sYWJlbF06IFtmYWxzZV0sXG4gICAgICAgIFtBUFBfU1RBVEUuUEFDS0FHRV9QTFVHSU4ubGFiZWxdOiBbZmFsc2VdXG4gICAgICB9KSxcbiAgICAgIGN1c3RvbTogdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7fSlcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFF1ZXJ5UGFyYW1zKCk7XG4gICAgY29uc3QgZmlsdGVyUGlwZSA9IHBpcGUoXG4gICAgICBtYXAoKGRhdGE6IEZpbHRlcmFibGVBcHBPclBsdWdpbltdKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEuZmlsdGVyKChhcHA6IEZpbHRlcmFibGVBcHBPclBsdWdpbikgPT4ge1xuICAgICAgICAgIGxldCBtYXRjaGVzQnlTdHJpbmc7XG4gICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtIHx8IHRoaXMuY3VycmVudEZpbHRlclRlcm0udHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgbWF0Y2hlc0J5U3RyaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXBwTmFtZSA9XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudExhbmcgPT09ICdlbicgfHwgIWFwcC5uYW1lPy5sZW5ndGggfHwgIWludGVybmFsQXBwc1thcHAubmFtZV1cbiAgICAgICAgICAgICAgICA/IGFwcC5uYW1lXG4gICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChpbnRlcm5hbEFwcHNbYXBwLm5hbWVdKTtcbiAgICAgICAgICAgIG1hdGNoZXNCeVN0cmluZyA9XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udGFpblN0cmluZyhhcHBOYW1lLCB0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtKSB8fFxuICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvbnRhaW5TdHJpbmcoYXBwLmRlc2NyaXB0aW9uLCB0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkgPVxuICAgICAgICAgICAgdGhpcy5hcHBNYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkoYXBwLCAndHlwZScpICYmXG4gICAgICAgICAgICB0aGlzLmFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShhcHAsICdhdmFpbGFiaWxpdHknKSAmJlxuICAgICAgICAgICAgdGhpcy5hcHBNYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkoYXBwLCAnY29udGVudCcpICYmXG4gICAgICAgICAgICB0aGlzLmFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShhcHAsICdjdXN0b20nKTtcblxuICAgICAgICAgIHJldHVybiBtYXRjaGVzQnlTdHJpbmcgJiYgbWF0Y2hlc0J5UHJlZGVmaW5lZFByb3BlcnR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmZpbHRlclBpcGVDaGFuZ2UuZW1pdChmaWx0ZXJQaXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ29udGFpblN0cmluZyhuYW1lOiBzdHJpbmcsIGZpbHRlclRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRlcm0gPSBmaWx0ZXJUZXJtLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIHJldHVybiBuYW1lICYmIG5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRlcm0pID4gLTE7XG4gIH1cblxuICBwcml2YXRlIGFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShcbiAgICBhcHA6IEZpbHRlcmFibGVBcHBPclBsdWdpbixcbiAgICBwcm9wZXJ0eToga2V5b2YgUGFja2FnZUZpbHRlcnNcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKHByb3BlcnR5ID09PSAnY3VzdG9tJyAmJiB0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGUpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGVbcHJvcGVydHldKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICB0aGlzLmN1c3RvbUZpbHRlcnMuZ2V0KGtleSkoYXBwLCB2YWx1ZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gaWYgZmlsdGVyIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHByb3BlcnR5IGZpbHRlcnMgb3IgYWxsIGZpbHRlcnMgYXJlIGZhbHNlLCBmaWx0ZXIgaXMgaW5hY3RpdmVcbiAgICBjb25zdCBmaWx0ZXJGb3JQcm9wZXJ0eUlzQWN0aXZlID1cbiAgICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZT8uW3Byb3BlcnR5XSAmJlxuICAgICAgIU9iamVjdC52YWx1ZXModGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlW3Byb3BlcnR5XSkuZXZlcnkodiA9PiAhdik7XG5cbiAgICBpZiAoIWZpbHRlckZvclByb3BlcnR5SXNBY3RpdmUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWFwcC5maWx0ZXJQcm9wcz8uW3Byb3BlcnR5XSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlW3Byb3BlcnR5XVthcHAuZmlsdGVyUHJvcHNbcHJvcGVydHldXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENoaXBzKCk6IHZvaWQge1xuICAgIHRoaXMuY2hpcHMgPSBbXTtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sc0dyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGNvbnRyb2xzR3JvdXAuY29udHJvbHMpLmZvckVhY2goKGVudHJ5OiBbc3RyaW5nLCBGb3JtQ29udHJvbF0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5WzFdLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jaGlwcy5wdXNoKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4+XG4gIDxjOHktZmlsdGVyXG4gICAgW2ZpbHRlclRlcm1dPVwiY3VycmVudEZpbHRlclRlcm1cIlxuICAgIChvblNlYXJjaCk9XCJzZXRGaWx0ZXJUZXJtKCRldmVudClcIlxuICA+PC9jOHktZmlsdGVyPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duIG0tbC04IG0tci00XCJcbiAgICAqbmdJZj1cInByZWRlZmluZWRGaWx0ZXJzVmlzaWJsZVwiXG4gICAgZHJvcGRvd25cbiAgICAoaXNPcGVuQ2hhbmdlKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIlxuICAgICNmaWx0ZXJzRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gICAgW2Nka1RyYXBGb2N1c109XCJmaWx0ZXJzRHJvcGRvd24uaXNPcGVuXCJcbiAgICBbaW5zaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZC1pbmxpbmUtZmxleFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1jbGVhbiBmb3JtLWNvbnRyb2wgcC1sLTggcC1yLTE2IGEtcy1zdHJldGNoIGQtZmxleCBhLWktY2VudGVyIGdhcC00IHctYXV0byBmbGV4LW5vLXNocmlua1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0ZpbHRlcnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgZHJvcGRvd25Ub2dnbGVcbiAgICAgID5cbiAgICAgICAgPHNwYW4gW25nUGx1cmFsXT1cImNoaXBzLmxlbmd0aFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCI9MFwiPlxuICAgICAgICAgICAge3sgJ0ZpbHRlcnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7IGNoaXBzLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIHt7ICdGaWx0ZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwib3RoZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7IGNoaXBzLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIHt7ICdGaWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJldFwiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uIHAtdC0wIHAtYi0wIGQtZmxleCBnYXAtNCBhLWktY2VudGVyIGlubmVyLXNjcm9sbFwiXG4gICAgICAgICpuZ0lmPVwiY2hpcHMubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaXAgb2YgY2hpcHNcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWcgdGFnLS1pbmZvIGNoaXBcIlxuICAgICAgICAgICAgKm5nSWY9XCJjaGlwWzFdLnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tY2xlYW4gdGV4dC0xMFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlc2VsZWN0Q2hpcChjaGlwKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAge3sgY2hpcFswXSB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIlxuICAgICAgKmRyb3Bkb3duTWVudVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1mb3JtXCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICpuZ0lmPVwicGFja2FnZVR5cGVzLmxlbmd0aFwiXG4gICAgICAgICAgZm9ybUdyb3VwTmFtZT1cInR5cGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgICAgICAgICB7eyAnVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgW3RpdGxlXT1cInR5cGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgcGFja2FnZVR5cGVzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ0eXBlXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInR5cGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHR5cGUgfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAqbmdJZj1cInBhY2thZ2VBdmFpbGFiaWxpdGllcy5sZW5ndGhcIlxuICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJhdmFpbGFiaWxpdHlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgICAgICAgICB7eyAnQXZhaWxhYmlsaXR5YG9mIHBhY2thZ2UgYmFzZWQgb24gYXBwIHN0YXRlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImF2YWlsYWJpbGl0eSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXZhaWxhYmlsaXR5IG9mIHBhY2thZ2VBdmFpbGFiaWxpdGllc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgYXZhaWxhYmlsaXR5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgKm5nSWY9XCJwYWNrYWdlQ29udGVudHMubGVuZ3RoXCJcbiAgICAgICAgICBmb3JtR3JvdXBOYW1lPVwiY29udGVudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtLWItMTZcIj5cbiAgICAgICAgICAgIHt7ICdDb250ZW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiY29udGVudCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBwYWNrYWdlQ29udGVudHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiY29udGVudFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgY29udGVudCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgZm9ybUdyb3VwTmFtZT1cImN1c3RvbVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZC1mbGV4IGdhcC04IHNlcGFyYXRvci10b3BcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBmbGV4LWdyb3dcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1Jlc2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0KCk7IGZpbHRlcnNEcm9wZG93bi5pc09wZW4gPSBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnUmVzZXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZmxleC1ncm93XCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJhcHBseVByZWRlZmluZWRGaWx0ZXJzKCk7IGZpbHRlcnNEcm9wZG93bi5pc09wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1Hcm91cC5wcmlzdGluZSAmJiBmb3JtR3JvdXAudW50b3VjaGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|