@c8y/ngx-components 1018.0.192 → 1018.0.196
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/core/common/global-config.service.d.ts +1 -1
- package/core/common/permissions.service.d.ts +67 -0
- package/core/common/tenant-ui.service.d.ts +1 -1
- package/esm2020/assets-navigator/asset-node.service.mjs +5 -4
- package/esm2020/auth-configuration/auth-configuration.guard.mjs +5 -2
- package/esm2020/auth-configuration/factories/navigation.factory.mjs +3 -3
- package/esm2020/cockpit-config/cockpit-config.guard.mjs +2 -2
- package/esm2020/cockpit-config/cockpit-config.service.mjs +2 -2
- package/esm2020/context-dashboard/add-dashboard.factory.mjs +6 -3
- package/esm2020/context-dashboard/context-dashboard.service.mjs +3 -3
- package/esm2020/context-dashboard/dashboard-detail.component.mjs +2 -2
- package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +3 -3
- package/esm2020/core/common/global-config.service.mjs +3 -2
- package/esm2020/core/common/permissions.service.mjs +68 -1
- package/esm2020/core/common/tenant-ui.service.mjs +3 -2
- package/esm2020/core/common/user-preferences/user-preferences.service.mjs +6 -2
- package/esm2020/ecosystem/application-properties/application-properties.component.mjs +2 -2
- package/esm2020/ecosystem/ecosystem-navigation.factory.mjs +3 -3
- package/esm2020/ecosystem/packages/package-list/packages-list.component.mjs +2 -2
- package/esm2020/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.mjs +2 -2
- package/esm2020/files-repository/files-repository.guard.mjs +5 -3
- package/esm2020/protocol-lwm2m/components/bootstrap-parameters/lwm2m-bootstrap-parameters.component.mjs +2 -2
- package/esm2020/register-device/register-device-navigation.factory.mjs +3 -3
- package/esm2020/reports/export-schedules.component.mjs +3 -3
- package/esm2020/repository/configuration/device-tab/configuration-preview.component.mjs +4 -4
- package/esm2020/sms-gateway/sms-gateway.guard.mjs +2 -2
- package/esm2020/sms-gateway/sms-gateway.module.mjs +6 -6
- package/esm2020/sub-assets/add-group/add-group.component.mjs +2 -2
- package/esm2020/sub-assets/groups.component.mjs +2 -2
- package/esm2020/sub-assets/sub-assets.component.mjs +2 -2
- package/esm2020/sub-assets/sub-assets.service.mjs +16 -10
- package/esm2020/tenants/tenant-list/tenant-list.component.mjs +12 -7
- package/esm2020/upgrade/ng1/downgraded.services.mjs +3 -2
- package/esm2020/upgrade/ng1/index.mjs +4 -3
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +4 -3
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs +7 -4
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs +3 -3
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +11 -8
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +6 -6
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-files-repository.mjs +5 -3
- package/fesm2015/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-register-device.mjs +3 -3
- package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-reports.mjs +2 -2
- package/fesm2015/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs +3 -3
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sms-gateway.mjs +6 -6
- package/fesm2015/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +19 -13
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-tenants.mjs +11 -6
- package/fesm2015/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-upgrade.mjs +4 -2
- package/fesm2015/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +74 -3
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +4 -3
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs +7 -4
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs +3 -3
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +11 -8
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +6 -6
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-files-repository.mjs +5 -3
- package/fesm2020/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-register-device.mjs +3 -3
- package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-reports.mjs +2 -2
- package/fesm2020/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs +3 -3
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sms-gateway.mjs +6 -6
- package/fesm2020/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +19 -13
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-tenants.mjs +11 -6
- package/fesm2020/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-upgrade.mjs +4 -2
- package/fesm2020/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +74 -3
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/tenants/tenant-list/tenant-list.component.d.ts +4 -2
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
|
@@ -49,7 +49,7 @@ export class ApplicationPropertiesComponent {
|
|
|
49
49
|
this.isUpdateAvailable = false;
|
|
50
50
|
}
|
|
51
51
|
async ngOnInit() {
|
|
52
|
-
this.hasAdminPermissions = this.permissions.hasRole(
|
|
52
|
+
this.hasAdminPermissions = this.permissions.hasRole(Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN);
|
|
53
53
|
await this.refresh();
|
|
54
54
|
}
|
|
55
55
|
async refresh() {
|
|
@@ -292,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
292
292
|
type: Component,
|
|
293
293
|
args: [{ selector: 'c8y-application-properties', template: "<c8y-title>{{ application | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!isMicroservice\">\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-modules'\"\n [label]=\"'Applications' | translate\"\n [path]=\"'ecosystem/application/applications'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n *ngIf=\"isFeature\"\n [icon]=\"breadcrumbConfig?.icon\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-breadcrumb *ngIf=\"isMicroservice\">\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"breadcrumbConfig?.icon\"\n [label]=\"breadcrumbConfig?.label\"\n [path]=\"breadcrumbConfig?.path\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div [ngClass]=\"{ 'col-md-8': !isActivityLogSupported, 'col-md-12': isActivityLogSupported }\">\n <div\n *ngIf=\"application\"\n [ngClass]=\"{ 'd-grid grid__col--7-5--md': isActivityLogSupported }\"\n class=\"card content-fullpage\"\n >\n <form\n (ngSubmit)=\"formGroup.valid && save(formGroup.value)\"\n [formGroup]=\"formGroup\"\n class=\"d-flex d-col content-fullpage\"\n novalidate\n >\n <div *ngIf=\"!isLoading\" class=\"d-contents\">\n <div class=\"card-block separator-bottom large-padding flex-no-shrink\">\n <div class=\"d-flex-md a-i-start text-center text-left-md\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"application\"\n [contextPath]=\"application.contextPath\"\n [name]=\"application.name\"\n class=\"icon-48\"\n ></c8y-app-icon>\n <i *ngIf=\"isPackage\" c8yIcon=\"big-parcel\" class=\"icon-48\"></i>\n <i *ngIf=\"isFeature\" c8yIcon=\"tab\" class=\"icon-48\"></i>\n <i *ngIf=\"isMicroservice\" c8yIcon=\"microchip\" class=\"icon-48\"></i>\n <i *ngIf=\"isExternal\" c8yIcon=\"globe1\" class=\"icon-48\"></i>\n\n <div class=\"p-t-md-16 p-l-md-16 p-r-md-32 flex-grow\">\n <p class=\"h4 text-medium m-b-8\">{{ application | humanizeAppName | async }}</p>\n <p *ngIf=\"!isOwner\">\n <em class=\"text-muted\">\n {{\n formGroup?.controls?.description?.value ||\n ('No description available.' | translate)\n }}\n </em>\n </p>\n <div *ngIf=\"isOwner\" class=\"form-group m-b-0\">\n <label\n [ngClass]=\"{ updated: formGroup?.controls?.description?.dirty }\"\n class=\"editable\"\n >\n <textarea\n c8y-textarea-autoresize\n class=\"form-control no-resize\"\n formControlName=\"description\"\n name=\"description\"\n placeholder=\"{{ 'No description available.' | translate }}\"\n ></textarea>\n </label>\n </div>\n </div>\n <div class=\"text-right-md m-t-4\">\n <span [ngClass]=\"appState?.class\" class=\"label\">\n {{ appState?.label | translate }}\n </span>\n <div\n class=\"fit-w m-t-2\"\n *ngIf=\"isPackage || isMicroservice || isUnpacked\"\n >\n <label\n class=\"text-label-small\"\n translate\n >\n Version:\n </label>\n <small class=\"p-l-4 text-bold\">{{ application.manifest?.version }}</small>\n </div>\n <div\n class=\"fit-w m-t-2\"\n *ngIf=\"!isUnpacked\"\n >\n <label\n class=\"text-label-small\"\n translate\n >\n Creation time:\n </label>\n <small class=\"p-l-4 text-bold\">\n {{ (binaryMo?.creationTime | c8yDate) || '---' }}\n </small>\n </div>\n <div class=\"m-t-8\">\n <button\n type=\"button\"\n *ngIf=\"isUpdateAvailable\"\n (click)=\"updateToLatestVersion()\"\n class=\"btn btn-default btn-sm\"\n tooltip=\"{{ 'There\\'s a newer version available, click to update' | translate}}\"\n [attr.aria-label]=\"'There\\'s a newer version available, click to update' | translate\"\n [delay]=\"300\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'installing-updates'\"></i>\n {{ 'Update available' | translate }}\n </button>\n <button\n (click)=\"openApp(application)\"\n [disabled]=\"disableOpenInBrowser\"\n *ngIf=\"canOpenInBrowser\"\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Open' | translate }}\"\n type=\"button\"\n >\n <i [c8yIcon]=\"'external-link'\"></i>\n {{ 'Open' | translate }}\n </button>\n <div *ngIf=\"canOpenInBrowser && disableOpenInBrowser\">\n <small class=\"text-muted\" translate>\n The application is overwritten by a custom application sharing the same path\n </small>\n </div>\n <span *ngIf=\"isCustomMicroservice\">\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Subscribe' | translate }}\"\n (click)=\"subscribe()\"\n *ngIf=\"!isSubscribed\"\n >\n <i [c8yIcon]=\"'check-circle-o'\"></i>\n {{ 'Subscribe' | translate }}\n </button>\n <button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n title=\"{{ 'Unsubscribe' | translate }}\"\n (click)=\"unsubscribe()\"\n *ngIf=\"isSubscribed\"\n >\n <i [c8yIcon]=\"'minus-circle'\"></i>\n {{ 'Unsubscribe' | translate }}\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll bg-level-0 flex-grow\">\n <div class=\"card-block large-padding\">\n <div *ngIf=\"isPackage\" class=\"row p-16\">\n <c8y-properties-list\n [data]=\"application.manifest\"\n [properties]=\"packageProperties\"\n [title]=\"'Package details' | translate\"\n [emptyLabel]=\"'---'\"\n icon=\"info\"\n ></c8y-properties-list>\n </div>\n <div *ngIf=\"sourcePackage\" class=\"row p-16\">\n <c8y-properties-list\n [data]=\"sourcePackage.manifest\"\n [properties]=\"packageProperties\"\n [title]=\"'Source package information' | translate\"\n [emptyLabel]=\"'---'\"\n icon=\"info\"\n ></c8y-properties-list>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label for=\"appId\">ID</label>\n <input\n [readonly]=\"true\"\n autocomplete=\"off\"\n class=\"form-control\"\n formControlName=\"id\"\n name=\"id\"\n id=\"appId\"\n type=\"text\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-7\">\n <c8y-form-group>\n <label>{{ 'Name' | translate }}</label>\n <input\n [readonly]=\"!isOwner\"\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-5\">\n <c8y-form-group>\n <label>{{ 'Application key' | translate }}</label>\n <input\n [readonly]=\"application.id || !isOwner\"\n class=\"form-control\"\n name=\"key\"\n formControlName=\"key\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-7\">\n <c8y-form-group>\n <label>{{ 'Type' | translate }}</label>\n <div>\n <div *ngIf=\"application.id\">\n <p class=\"form-control-static\">\n <i [c8yIcon]=\"iconMap[application.type]\"></i>\n <span>\n {{ application.type | translate }}\n </span>\n </p>\n </div>\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div [ngSwitch]=\"application.type\">\n <div *ngSwitchCase=\"'HOSTED'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n [readOnly]=\"application.id || !isOwner\"\n class=\"form-control\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n required\n type=\"text\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n </div>\n\n <div *ngSwitchCase=\"'MICROSERVICE'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/service/</span>\n <input\n [readOnly]=\"application.id || !isOwner\"\n class=\"form-control\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-microservice`used in URL`' | translate }}\"\n required\n type=\"text\"\n formControlName=\"contextPath\"\n />\n </div>\n </c8y-form-group>\n <div class=\"row\">\n <div *ngIf=\"application.manifest.version\" class=\"col-sm-4 m-b-16 flex-auto\">\n <label>{{ 'Version' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.version }}\n </p>\n </div>\n <div *ngIf=\"application.manifest.isolation\" class=\"col-sm-4 m-b-16 flex-auto\">\n <label>{{ 'Isolation' | translate }}</label>\n <p class=\"form-control-static\">\n <span *ngIf=\"singleTenant\">\n <i [c8yIcon]=\"'c8y-enterprise'\" class=\"c8y-icon-duocolor h4\"></i>\n {{ 'Single tenant' | translate }}\n </span>\n <span *ngIf=\"!singleTenant\">\n <i [c8yIcon]=\"'c8y-sub-tenants'\" class=\"c8y-icon-duocolor icon-32\"></i>\n {{ 'Multi tenant' | translate }}\n </span>\n </p>\n </div>\n <div *ngIf=\"application.manifest.isolation\" class=\"col-sm-4 m-b-16 flex-auto\">\n <label>{{ 'Billing mode' | translate }}</label>\n <p class=\"form-control-static\">\n <span\n *ngIf=\"subscription\"\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n >\n {{ 'Subscription' | translate }}\n </span>\n <span\n *ngIf=\"!subscription && singleTenant\"\n [tooltip]=\"'Resources usage assigned to: Subscriber | translate'\"\n >\n {{ 'Resources' | translate }}\n </span>\n <span\n *ngIf=\"!subscription && !singleTenant\"\n [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n >\n {{ 'Resources' | translate }}\n </span>\n </p>\n </div>\n </div>\n\n <div *ngIf=\"application.manifest.provider\" class=\"legend form-block m-t-40\">\n {{ 'Provider' | translate }}\n </div>\n <div class=\"list-inline\" *ngIf=\"application.manifest.provider\">\n <div *ngIf=\"application.manifest.provider.name\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Name' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.name }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.domain\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Domain' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.domain }}\n </p>\n </div>\n </div>\n <div *ngIf=\"application.manifest.provider.support\">\n <div class=\"col-sm-4 m-b-16\">\n <label>{{ 'Support' | translate }}</label>\n <p class=\"form-control-static\">\n {{ application.manifest.provider.support }}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'REPOSITORY'\">\n <c8y-form-group>\n <label>{{ 'Path' | translate }}</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n [readOnly]=\"application.id || !isOwner\"\n class=\"form-control\"\n formControlName=\"contextPath\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n required\n type=\"text\"\n />\n </div>\n </c8y-form-group>\n\n <c8y-form-group>\n <label>{{ 'Server URL' | translate }}</label>\n <input\n class=\"form-control\"\n name=\"resourcesUrl\"\n formControlName=\"resourcesUrl\"\n placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n required\n type=\"url\"\n />\n </c8y-form-group>\n\n <div class=\"form-group\">\n <label>{{ 'Username' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"username\"\n name=\"username\"\n type=\"text\"\n />\n </div>\n\n <div class=\"form-group\">\n <label>{{ 'Password' | translate }}</label>\n <input\n class=\"form-control\"\n formControlName=\"password\"\n name=\"password\"\n type=\"text\"\n />\n </div>\n </div>\n\n <div *ngSwitchCase=\"'EXTERNAL'\">\n <c8y-form-group>\n <label>{{ 'External URL' | translate }}</label>\n <input\n [pattern]=\"'^(?!javascript:).+'\"\n [readOnly]=\"!isOwner\"\n class=\"form-control\"\n formControlName=\"externalUrl\"\n name=\"externalUrl\"\n placeholder=\"{{ 'e.g.' | translate }} http://www.example.com/\"\n required\n type=\"url\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'pattern'\"\n [text]=\"'Valid URL required.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"isCustomMicroservice\">\n <div *ngIf=\"!isLoading\" class=\"d-contents\">\n <c8y-upload-archive\n [(application)]=\"application\"\n (refresh)=\"onNewArchive()\"\n ></c8y-upload-archive>\n </div>\n </ng-container>\n <div\n *ngIf=\"application && !!isOwner && hasAdminPermissions\"\n class=\"card-footer separator\"\n >\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-danger\"\n type=\"button\"\n title=\"{{ 'Delete' | translate }}\"\n (click)=\"delete()\"\n *ngIf=\"canDelete\"\n >\n {{ 'Delete' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-form\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!application.type || formGroup.invalid || formGroup.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n\n <div *ngIf=\"isActivityLogSupported\" class=\"content-fullpage d-flex d-col bg-level-1\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Activity log</div>\n <div class=\"m-l-auto\">\n <button\n class=\"btn btn-link btn-sm\"\n type=\"button\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"load()\"\n >\n <i [ngClass]=\"{ 'icon-spin': isLoading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n </div>\n </div>\n <div *ngIf=\"isLoading\" class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n <c8y-activity-log\n *ngIf=\"!isLoading\"\n [hasAdminPermissions]=\"hasAdminPermissions\"\n [application]=\"application\"\n class=\"d-contents\"\n ></c8y-activity-log>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
294
294
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.EcosystemService }, { type: i1.Router }, { type: i3.FormBuilder }, { type: i4.ApplicationService }, { type: i5.AlertService }, { type: i4.InventoryService }, { type: i5.Permissions }, { type: i5.ModalService }, { type: i6.TranslateService }, { type: i7.BsModalService }, { type: i5.GainsightService }]; } });
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tcHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vYXBwbGljYXRpb24tcHJvcGVydGllcy9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzL2FwcGxpY2F0aW9uLXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsV0FBVyxFQUdYLGdCQUFnQixFQUNoQixTQUFTLEVBQ1YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFdBQVcsRUFFWCxXQUFXLEVBQ1gsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2xCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDOzs7Ozs7Ozs7Ozs7QUFFaEgsTUFBTSx1QkFBdUIsR0FBRyx1Q0FBdUMsQ0FB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LElBQUksQ0FBQywyQkFBMkIsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7WUFDbEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FDakUsY0FBYyxFQUNkLHNCQUFzQixDQUN2QixDQUFDO1NBQ0g7UUFBQyxNQUFNO1lBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLCtDQUErQyxDQUFDLENBQUMsQ0FBQztTQUNyRjtJQUNILENBQUM7OzJIQW5WVSw4QkFBOEI7K0dBQTlCLDhCQUE4QixrRUN2QzNDLGk5cUJBMmZBOzJGRHBkYSw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0UsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uU2VydmljZSxcbiAgQXBwbGljYXRpb25UeXBlLFxuICBCaWxsaW5nTW9kZSxcbiAgSUFwcGxpY2F0aW9uLFxuICBJTWFuYWdlZE9iamVjdCxcbiAgSW52ZW50b3J5U2VydmljZSxcbiAgSXNvbGF0aW9uXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgTW9kYWxTZXJ2aWNlLFxuICBQZXJtaXNzaW9ucyxcbiAgUHJvcGVydGllc0xpc3RJdGVtLFxuICBWaWV3Q29udGV4dCxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uU3RhdGUsXG4gIEVjb3N5c3RlbVNlcnZpY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRSxcbiAgcGFja2FnZVByb3BlcnRpZXNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY29zeXN0ZW0vc2hhcmVkJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLW1vZGFsL3N1YnNjcmlwdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBkYXRlQXBwbGljYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4vdXBkYXRlLWFwcGxpY2F0aW9uLW1vZGFsL3VwZGF0ZS1hcHBsaWNhdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuXG5jb25zdCBNSUNST1NFUlZJQ0VTX0JBU0VfUEFUSCA9ICcvZWNvc3lzdGVtL21pY3Jvc2VydmljZS9taWNyb3NlcnZpY2VzJztcbmNvbnN0IEFQUExJQ0FUSU9OU19CQVNFX1BBVEggPSAnL2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9hcHBsaWNhdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYXBwbGljYXRpb24tcHJvcGVydGllcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblByb3BlcnRpZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb247XG4gIGJpbmFyeU1vOiBJTWFuYWdlZE9iamVjdDtcbiAgc2luZ2xlVGVuYW50ID0gZmFsc2U7XG4gIHN1YnNjcmlwdGlvbiA9IGZhbHNlO1xuICBjYW5PcGVuSW5Ccm93c2VyOiBib29sZWFuO1xuICBkaXNhYmxlT3BlbkluQnJvd3NlcjogYm9vbGVhbjtcbiAgY2FuRGVsZXRlOiBib29sZWFuO1xuICBpc093bmVyOiBib29sZWFuO1xuICBpc1N1YnNjcmliZWQ6IGJvb2xlYW47XG4gIGlzUGFja2FnZTogYm9vbGVhbjtcbiAgaXNNaWNyb3NlcnZpY2U6IGJvb2xlYW47XG4gIGlzRmVhdHVyZTogYm9vbGVhbjtcbiAgaXNFeHRlcm5hbDogYm9vbGVhbjtcbiAgaXNVbnBhY2tlZDogYm9vbGVhbjtcbiAgaWNvbk1hcCA9IHtcbiAgICBIT1NURUQ6ICdjbG91ZCcsXG4gICAgRVhURVJOQUw6ICdleHRlcm5hbC1saW5rLXNxdWFyZScsXG4gICAgTUlDUk9TRVJWSUNFOiAnbWljcm9jaGlwJ1xuICB9O1xuICBhcHBTdGF0ZTogQXBwbGljYXRpb25TdGF0ZTtcbiAgc291cmNlUGFja2FnZTogSUFwcGxpY2F0aW9uO1xuICBpc0xvYWRpbmcgPSB0cnVlO1xuICBpc0FjdGl2aXR5TG9nU3VwcG9ydGVkOiBib29sZWFuO1xuICBpc0N1c3RvbU1pY3Jvc2VydmljZTogYm9vbGVhbjtcbiAgaGFzQWRtaW5QZXJtaXNzaW9ucyA9IGZhbHNlO1xuXG4gIGJyZWFkY3J1bWJDb25maWc6IHsgaWNvbjogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyBwYXRoOiBzdHJpbmcgfTtcbiAgcGFja2FnZVByb3BlcnRpZXM6IFByb3BlcnRpZXNMaXN0SXRlbVtdID0gWy4uLnBhY2thZ2VQcm9wZXJ0aWVzXTtcbiAgaXNVcGRhdGVBdmFpbGFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIGJsdWVwcmludEFwcGxpY2F0aW9uVmVyc2lvbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZWNvc3lzdGVtU2VydmljZTogRWNvc3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYXBwbGljYXRpb25TZXJ2aWNlOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaGFzQWRtaW5QZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnMuaGFzUm9sZSgnUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX0FETUlOJyk7XG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoKCkge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICAgIHRoaXMuaXNVbnBhY2tlZCA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc1VucGFja2VkKHRoaXMuYXBwbGljYXRpb24pO1xuICAgIHRoaXMuaXNQYWNrYWdlID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzUGFja2FnZSh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLmlzRmVhdHVyZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc0ZlYXR1cmUodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5pc0V4dGVybmFsID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzRXh0ZXJuYWwodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5pc01pY3Jvc2VydmljZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc01pY3Jvc2VydmljZSh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLmFwcFN0YXRlID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmdldEFwcFN0YXRlKHRoaXMuYXBwbGljYXRpb24pO1xuXG4gICAgaWYgKHRoaXMuaXNVbnBhY2tlZCkge1xuICAgICAgYXdhaXQgdGhpcy5yZXNvbHZlU291cmNlUGFja2FnZURldGFpbHMoKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldEJyZWFkY3J1bWJDb25maWcoKTtcblxuICAgIGlmICh0aGlzLmlzQ3VzdG9tTWljcm9zZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvYWRCaW5hcnlNbygpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRBcHBsaWNhdGlvbigpO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBvbkFwcGxpY2F0aW9uKGFwcDogSUFwcGxpY2F0aW9uKSB7XG4gICAgaWYgKGFwcC5tYW5pZmVzdCkge1xuICAgICAgdGhpcy5zaW5nbGVUZW5hbnQgPSBhcHAubWFuaWZlc3QuaXNvbGF0aW9uID09PSBJc29sYXRpb24uUEVSX1RFTkFOVDtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gYXBwLm1hbmlmZXN0LmJpbGxpbmdNb2RlID09PSBCaWxsaW5nTW9kZS5TVUJTQ1JJUFRJT047XG4gICAgfVxuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uLnR5cGUgPT09IEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0UpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoTUlDUk9TRVJWSUNFU19CQVNFX1BBVEgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKEFQUExJQ0FUSU9OU19CQVNFX1BBVEgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5BcHAoYXBwKSB7XG4gICAgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLm9wZW5BcHAoYXBwKTtcbiAgfVxuXG4gIGdldFBhY2thZ2UoZW50aXR5T3JJZDogc3RyaW5nIHwgbnVtYmVyIHwgSUFwcGxpY2F0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmRldGFpbChlbnRpdHlPcklkKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZSgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmRlbGV0ZUFwcCh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uLnR5cGUgPT09IEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0UpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChNSUNST1NFUlZJQ0VTX0JBU0VfUEFUSCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKEFQUExJQ0FUSU9OU19CQVNFX1BBVEgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3Vic2NyaWJlKCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHsgYXBwbGljYXRpb246IHRoaXMuYXBwbGljYXRpb24sIGlzU3Vic2NyaWJlZDogZmFsc2UgfTtcbiAgICBhd2FpdCB0aGlzLmNvbmZpcm1TdWJzY3JpcHRpb25DaGFuZ2UoaW5pdGlhbFN0YXRlKTtcbiAgICB0aGlzLmxvYWRBcHBsaWNhdGlvbigpO1xuICB9XG5cbiAgYXN5bmMgdW5zdWJzY3JpYmUoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0geyBhcHBsaWNhdGlvbjogdGhpcy5hcHBsaWNhdGlvbiwgaXNTdWJzY3JpYmVkOiB0cnVlIH07XG4gICAgYXdhaXQgdGhpcy5jb25maXJtU3Vic2NyaXB0aW9uQ2hhbmdlKGluaXRpYWxTdGF0ZSk7XG4gICAgdGhpcy5sb2FkQXBwbGljYXRpb24oKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRBcHBsaWNhdGlvbigpIHtcbiAgICBjb25zdCB7IGlkIH0gPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhO1xuICAgIHRoaXMuYXBwbGljYXRpb24gPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXBwbGljYXRpb24oaWQpO1xuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uLnR5cGUgPT09IEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0UpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnbmFtZScpLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQXBwbGljYXRpb24gPSB7XG4gICAgICAuLi50aGlzLmFwcGxpY2F0aW9uLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZ2V0RGVzY3JpcHRpb24odGhpcy5hcHBsaWNhdGlvbilcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh1cGRhdGVkQXBwbGljYXRpb24pO1xuICAgIHRoaXMuY2FuT3BlbkluQnJvd3NlciA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5jYW5PcGVuQXBwSW5Ccm93c2VyKHRoaXMuYXBwbGljYXRpb24pO1xuICAgIHRoaXMuZGlzYWJsZU9wZW5JbkJyb3dzZXIgPVxuICAgICAgdGhpcy5jYW5PcGVuSW5Ccm93c2VyICYmXG4gICAgICAoYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzT3ZlcndyaXR0ZW5CeUN1c3RvbUFwcCh0aGlzLmFwcGxpY2F0aW9uKSk7XG4gICAgdGhpcy5jYW5EZWxldGUgPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuY2FuRGVsZXRlQXBwKHRoaXMuYXBwbGljYXRpb24pO1xuICAgIHRoaXMuaXNPd25lciA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc093bmVyKHRoaXMuYXBwbGljYXRpb24pO1xuICAgIHRoaXMuaXNBY3Rpdml0eUxvZ1N1cHBvcnRlZCA9IHRoaXMuaXNBY3Rpdml0eUxvZ1N1cHBvcnRlZEJ5QXBwKHRoaXMuYXBwbGljYXRpb24pO1xuICAgIHRoaXMuaXNDdXN0b21NaWNyb3NlcnZpY2UgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNDdXN0b21NaWNyb3NlcnZpY2UodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5pc1N1YnNjcmliZWQgPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuY2hlY2tJZlN1YnNjcmliZWQodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5vbkFwcGxpY2F0aW9uKHRoaXMuYXBwbGljYXRpb24pO1xuICB9XG5cbiAgYXN5bmMgc2F2ZShhcHA6IElBcHBsaWNhdGlvbikge1xuICAgIGFwcC5pZCA9IHRoaXMuYXBwbGljYXRpb24uaWQ7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS51cGRhdGVBcHAoYXBwKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQXBwbGljYXRpb24gc2F2ZWQuJykpO1xuICAgICAgdGhpcy5mb3JtR3JvdXAucmVzZXQoKTtcbiAgICAgIHRoaXMubG9hZEFwcGxpY2F0aW9uKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICBvbk5ld0FyY2hpdmUoKSB7XG4gICAgdGhpcy5sb2FkQmluYXJ5TW8oKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVRvTGF0ZXN0VmVyc2lvbigpIHtcbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5FVkVOVFMuQVBQTElDQVRJT05fUFJPUEVSVElFUyxcbiAgICAgIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuQVBQTElDQVRJT05fUFJPUEVSVElFUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuVVBEQVRFX0FWQUlMQUJMRSxcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH1cbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRCb2R5ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICBgWW91J3JlIHVzaW5nIHRoZSB2ZXJzaW9uIHt7IGN1cnJlbnRWZXJzaW9uIH19IG9mIHRoZSB7eyBwYWNrYWdlTmFtZSB9fSBwYWNrYWdlLCB0aGUgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxlIGlzIHt7IGxhdGVzdFZlcnNpb24gfX0sIGRvIHlvdSB3YW50IHRvIHVwZGF0ZT8gWW91IGNhbiBhbHdheXMgcmV2ZXJ0IHRvIGEgcHJldmlvdXMgdmVyc2lvbiBpbiB0aGUgQWN0aXZpdHkgbG9nIHBhbmVsLmBcbiAgICAgICAgKSxcbiAgICAgICAge1xuICAgICAgICAgIGN1cnJlbnRWZXJzaW9uOiB0aGlzLmFwcGxpY2F0aW9uLm1hbmlmZXN0Py52ZXJzaW9uLFxuICAgICAgICAgIGxhdGVzdFZlcnNpb246IHRoaXMuYmx1ZXByaW50QXBwbGljYXRpb25WZXJzaW9uLFxuICAgICAgICAgIHBhY2thZ2VOYW1lOiB0aGlzLnNvdXJjZVBhY2thZ2UubmFtZVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybShnZXR0ZXh0KCdVcGRhdGUgYXBwbGljYXRpb24nKSwgdHJhbnNsYXRlZEJvZHksICd3YXJuaW5nJywge1xuICAgICAgICBvazogZ2V0dGV4dCgnVXBkYXRlJyksXG4gICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbW9kYWwgY2FuY2VsZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5ic01vZGFsU2VydmljZS5zaG93PFVwZGF0ZUFwcGxpY2F0aW9uTW9kYWxDb21wb25lbnQ+KFxuICAgICAgICBVcGRhdGVBcHBsaWNhdGlvbk1vZGFsQ29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICAgICAgY2xhc3M6ICdtb2RhbC1zbScsXG4gICAgICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgIHNvdXJjZVBhY2thZ2U6IHRoaXMuc291cmNlUGFja2FnZSxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uOiB0aGlzLmFwcGxpY2F0aW9uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApLmNvbnRlbnQucmVzdWx0O1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbW9kYWwgY2FuY2VsZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlZnJlc2goKTtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0FwcGxpY2F0aW9uIHVwZGF0ZWQuJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXNjcmlwdGlvbihhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWFwcGxpY2F0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBhcHBsaWNhdGlvbi5kZXNjcmlwdGlvbiB8fCBhcHBsaWNhdGlvbi5tYW5pZmVzdD8uZGVzY3JpcHRpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbmZpcm1TdWJzY3JpcHRpb25DaGFuZ2UoaW5pdGlhbFN0YXRlOiB7XG4gICAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbjtcbiAgICBpc1N1YnNjcmliZWQ6IGJvb2xlYW47XG4gIH0pIHtcbiAgICBhd2FpdCAoXG4gICAgICB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coU3Vic2NyaXB0aW9uTW9kYWxDb21wb25lbnQsIHtcbiAgICAgICAgY2xhc3M6ICdtb2RhbC1zbScsXG4gICAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgICB9KS5jb250ZW50IGFzIFN1YnNjcmlwdGlvbk1vZGFsQ29tcG9uZW50XG4gICAgKS5yZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVTb3VyY2VQYWNrYWdlRGV0YWlscygpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zb3VyY2VQYWNrYWdlID0gKGF3YWl0IHRoaXMuZ2V0UGFja2FnZSh0aGlzLmFwcGxpY2F0aW9uLm1hbmlmZXN0Py5zb3VyY2UpKS5kYXRhO1xuICAgICAgaWYgKHRoaXMuc291cmNlUGFja2FnZSkge1xuICAgICAgICB0aGlzLnBhY2thZ2VQcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTb3VyY2UgcGFja2FnZScpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnNvdXJjZVBhY2thZ2UubmFtZSxcbiAgICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgICAgYWN0aW9uOiAoKSA9PlxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcbiAgICAgICAgICAgICAgVmlld0NvbnRleHQuRXh0ZW5zaW9uLnJlcGxhY2UoJzppZCcsIHRoaXMuc291cmNlUGFja2FnZS5pZC50b1N0cmluZygpKVxuICAgICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm5pbmcoZ2V0dGV4dCgnVW5hYmxlIHRvIHJlc29sdmUgc291cmNlIHBhY2thZ2UuJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuZXh0cmFjdFZlcnNpb25JbmZvcm1hdGlvbih0aGlzLmFwcGxpY2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGlkOiBbeyB2YWx1ZTogJycgfV0sXG4gICAgICBuYW1lOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKV0sXG4gICAgICBrZXk6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXSxcbiAgICAgIGNvbnRleHRQYXRoOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKV0sXG4gICAgICBkZXNjcmlwdGlvbjogWycnLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMDApXSxcbiAgICAgIHJlc291cmNlc1VybDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgdXNlcm5hbWU6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBhc3N3b3JkOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBleHRlcm5hbFVybDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLmhhc0FkbWluUGVybWlzc2lvbnMpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzQWN0aXZpdHlMb2dTdXBwb3J0ZWRCeUFwcChhcHA6IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNPd25lcihhcHApICYmXG4gICAgICBhcHAudHlwZSAhPT0gQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRSAmJlxuICAgICAgYXBwLnR5cGUgIT09IEFwcGxpY2F0aW9uVHlwZS5FWFRFUk5BTFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEJyZWFkY3J1bWJDb25maWcoKSB7XG4gICAgdGhpcy5icmVhZGNydW1iQ29uZmlnID0ge1xuICAgICAgaWNvbjogdGhpcy5pc01pY3Jvc2VydmljZSA/ICdtaWNyb2NoaXAnIDogdGhpcy5pc0ZlYXR1cmUgPyAndGFiJyA6ICdjOHktbW9kdWxlcycsXG4gICAgICBsYWJlbDogdGhpcy5pc01pY3Jvc2VydmljZVxuICAgICAgICA/IGdldHRleHQoJ01pY3Jvc2VydmljZXMnKVxuICAgICAgICA6IHRoaXMuaXNGZWF0dXJlXG4gICAgICAgID8gZ2V0dGV4dCgnRmVhdHVyZXMnKVxuICAgICAgICA6IGdldHRleHQoJ0FwcGxpY2F0aW9ucycpLFxuICAgICAgcGF0aDogdGhpcy5pc01pY3Jvc2VydmljZVxuICAgICAgICA/ICcvZWNvc3lzdGVtL21pY3Jvc2VydmljZS9taWNyb3NlcnZpY2VzJ1xuICAgICAgICA6IHRoaXMuaXNGZWF0dXJlXG4gICAgICAgID8gJ2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9mZWF0dXJlcydcbiAgICAgICAgOiAnZWNvc3lzdGVtL2FwcGxpY2F0aW9uL2FwcGxpY2F0aW9ucydcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQmluYXJ5TW8oKSB7XG4gICAgdGhpcy5iaW5hcnlNbyA9IChhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuZGV0YWlsKHRoaXMuYXBwbGljYXRpb24uYWN0aXZlVmVyc2lvbklkKSkuZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXh0cmFjdFZlcnNpb25JbmZvcm1hdGlvbihhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uKSB7XG4gICAgaWYgKCFhcHBsaWNhdGlvbi5tYW5pZmVzdC5pc1BhY2thZ2UgJiYgIWFwcGxpY2F0aW9uLm1hbmlmZXN0LnNvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJsdWVwcmludEFwcGxpY2F0aW9uSWQgPSBhcHBsaWNhdGlvbi5tYW5pZmVzdD8uc291cmNlO1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gYXBwbGljYXRpb24ubWFuaWZlc3Q/LnZlcnNpb247XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBkYXRhOiBibHVlcHJpbnRBcHBsaWNhdGlvblZlcnNpb25zIH0gPSBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5saXN0VmVyc2lvbnMoXG4gICAgICAgIGJsdWVwcmludEFwcGxpY2F0aW9uSWRcbiAgICAgICk7XG4gICAgICBjb25zdCBibHVlcHJpbnRMYXRlc3RWZXJzaW9uID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmdldEFwcGxpY2F0aW9uVmVyc2lvbk9iamVjdEJ5VGFnKFxuICAgICAgICBibHVlcHJpbnRBcHBsaWNhdGlvblZlcnNpb25zLFxuICAgICAgICAnbGF0ZXN0J1xuICAgICAgKTtcbiAgICAgIHRoaXMuYmx1ZXByaW50QXBwbGljYXRpb25WZXJzaW9uID0gYmx1ZXByaW50TGF0ZXN0VmVyc2lvbi52ZXJzaW9uO1xuICAgICAgdGhpcy5pc1VwZGF0ZUF2YWlsYWJsZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5zaG91bGRVcGdyYWRlUGFja2FnZShcbiAgICAgICAgY3VycmVudFZlcnNpb24sXG4gICAgICAgIGJsdWVwcmludExhdGVzdFZlcnNpb25cbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuaW5nKGdldHRleHQoJ1VuYWJsZSB0byByZXNvbHZlIHZlcnNpb25zIG9mIHNvdXJjZSBwYWNrYWdlLicpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgYXBwbGljYXRpb24gfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWIgKm5nSWY9XCIhaXNNaWNyb3NlcnZpY2VcIj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2ljb25dPVwiJ2M4eS1hdG9tJ1wiIFtsYWJlbF09XCInRWNvc3lzdGVtJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LW1vZHVsZXMnXCJcbiAgICBbbGFiZWxdPVwiJ0FwcGxpY2F0aW9ucycgfCB0cmFuc2xhdGVcIlxuICAgIFtwYXRoXT1cIidlY29zeXN0ZW0vYXBwbGljYXRpb24vYXBwbGljYXRpb25zJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgKm5nSWY9XCJpc0ZlYXR1cmVcIlxuICAgIFtpY29uXT1cImJyZWFkY3J1bWJDb25maWc/Lmljb25cIlxuICAgIFtsYWJlbF09XCJicmVhZGNydW1iQ29uZmlnPy5sYWJlbFwiXG4gICAgW3BhdGhdPVwiYnJlYWRjcnVtYkNvbmZpZz8ucGF0aFwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtsYWJlbF09XCJhcHBsaWNhdGlvbiB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiJ1Byb3BlcnRpZXMnIHwgdHJhbnNsYXRlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1icmVhZGNydW1iICpuZ0lmPVwiaXNNaWNyb3NlcnZpY2VcIj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2ljb25dPVwiJ2M4eS1hdG9tJ1wiIFtsYWJlbF09XCInRWNvc3lzdGVtJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCJicmVhZGNydW1iQ29uZmlnPy5pY29uXCJcbiAgICBbbGFiZWxdPVwiYnJlYWRjcnVtYkNvbmZpZz8ubGFiZWxcIlxuICAgIFtwYXRoXT1cImJyZWFkY3J1bWJDb25maWc/LnBhdGhcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiYXBwbGljYXRpb24gfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luY1wiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2xhYmVsXT1cIidQcm9wZXJ0aWVzJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBbbmdDbGFzc109XCJ7ICdjb2wtbWQtOCc6ICFpc0FjdGl2aXR5TG9nU3VwcG9ydGVkLCAnY29sLW1kLTEyJzogaXNBY3Rpdml0eUxvZ1N1cHBvcnRlZCB9XCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJhcHBsaWNhdGlvblwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkLWdyaWQgZ3JpZF9fY29sLS03LTUtLW1kJzogaXNBY3Rpdml0eUxvZ1N1cHBvcnRlZCB9XCJcbiAgICAgIGNsYXNzPVwiY2FyZCBjb250ZW50LWZ1bGxwYWdlXCJcbiAgICA+XG4gICAgICA8Zm9ybVxuICAgICAgICAobmdTdWJtaXQpPVwiZm9ybUdyb3VwLnZhbGlkICYmIHNhdmUoZm9ybUdyb3VwLnZhbHVlKVwiXG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggZC1jb2wgY29udGVudC1mdWxscGFnZVwiXG4gICAgICAgIG5vdmFsaWRhdGVcbiAgICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmdcIiBjbGFzcz1cImQtY29udGVudHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBzZXBhcmF0b3ItYm90dG9tIGxhcmdlLXBhZGRpbmcgZmxleC1uby1zaHJpbmtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgtbWQgYS1pLXN0YXJ0IHRleHQtY2VudGVyIHRleHQtbGVmdC1tZFwiPlxuICAgICAgICAgICAgICA8Yzh5LWFwcC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNQYWNrYWdlICYmICFpc0ZlYXR1cmUgJiYgIWlzTWljcm9zZXJ2aWNlICYmICFpc0V4dGVybmFsXCJcbiAgICAgICAgICAgICAgICBbYXBwXT1cImFwcGxpY2F0aW9uXCJcbiAgICAgICAgICAgICAgICBbY29udGV4dFBhdGhdPVwiYXBwbGljYXRpb24uY29udGV4dFBhdGhcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cImFwcGxpY2F0aW9uLm5hbWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi00OFwiXG4gICAgICAgICAgICAgID48L2M4eS1hcHAtaWNvbj5cbiAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpc1BhY2thZ2VcIiBjOHlJY29uPVwiYmlnLXBhcmNlbFwiIGNsYXNzPVwiaWNvbi00OFwiPjwvaT5cbiAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpc0ZlYXR1cmVcIiBjOHlJY29uPVwidGFiXCIgY2xhc3M9XCJpY29uLTQ4XCI+PC9pPlxuICAgICAgICAgICAgICA8aSAqbmdJZj1cImlzTWljcm9zZXJ2aWNlXCIgYzh5SWNvbj1cIm1pY3JvY2hpcFwiIGNsYXNzPVwiaWNvbi00OFwiPjwvaT5cbiAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpc0V4dGVybmFsXCIgYzh5SWNvbj1cImdsb2JlMVwiIGNsYXNzPVwiaWNvbi00OFwiPjwvaT5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10LW1kLTE2IHAtbC1tZC0xNiBwLXItbWQtMzIgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoNCB0ZXh0LW1lZGl1bSBtLWItOFwiPnt7IGFwcGxpY2F0aW9uIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmMgfX08L3A+XG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCIhaXNPd25lclwiPlxuICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPVwidGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cD8uY29udHJvbHM/LmRlc2NyaXB0aW9uPy52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKCdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUuJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc093bmVyXCIgY2xhc3M9XCJmb3JtLWdyb3VwIG0tYi0wXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyB1cGRhdGVkOiBmb3JtR3JvdXA/LmNvbnRyb2xzPy5kZXNjcmlwdGlvbj8uZGlydHkgfVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgICBjOHktdGV4dGFyZWEtYXV0b3Jlc2l6ZVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG5vLXJlc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlLicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodC1tZCBtLXQtNFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImFwcFN0YXRlPy5jbGFzc1wiIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGFwcFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZpdC13IG0tdC0yXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNQYWNrYWdlIHx8IGlzTWljcm9zZXJ2aWNlIHx8IGlzVW5wYWNrZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtbGFiZWwtc21hbGxcIlxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgVmVyc2lvbjpcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJwLWwtNCB0ZXh0LWJvbGRcIj57eyBhcHBsaWNhdGlvbi5tYW5pZmVzdD8udmVyc2lvbiB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaXQtdyBtLXQtMlwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc1VucGFja2VkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIENyZWF0aW9uIHRpbWU6XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwicC1sLTQgdGV4dC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IChiaW5hcnlNbz8uY3JlYXRpb25UaW1lIHwgYzh5RGF0ZSkgfHwgJy0tLScgfX1cbiAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tdC04XCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzVXBkYXRlQXZhaWxhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVRvTGF0ZXN0VmVyc2lvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD1cInt7ICdUaGVyZVxcJ3MgYSBuZXdlciB2ZXJzaW9uIGF2YWlsYWJsZSwgY2xpY2sgdG8gdXBkYXRlJyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVGhlcmVcXCdzIGEgbmV3ZXIgdmVyc2lvbiBhdmFpbGFibGUsIGNsaWNrIHRvIHVwZGF0ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGVsYXldPVwiMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2luc3RhbGxpbmctdXBkYXRlcydcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdVcGRhdGUgYXZhaWxhYmxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQXBwKGFwcGxpY2F0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlT3BlbkluQnJvd3NlclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuT3BlbkluQnJvd3NlclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ09wZW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidleHRlcm5hbC1saW5rJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ09wZW4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5PcGVuSW5Ccm93c2VyICYmIGRpc2FibGVPcGVuSW5Ccm93c2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgVGhlIGFwcGxpY2F0aW9uIGlzIG92ZXJ3cml0dGVuIGJ5IGEgY3VzdG9tIGFwcGxpY2F0aW9uIHNoYXJpbmcgdGhlIHNhbWUgcGF0aFxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzQ3VzdG9tTWljcm9zZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1N1YnNjcmliZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJzY3JpYmUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNTdWJzY3JpYmVkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjaGVjay1jaXJjbGUtbydcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ1N1YnNjcmliZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1Vuc3Vic2NyaWJlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVuc3Vic2NyaWJlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNTdWJzY3JpYmVkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidtaW51cy1jaXJjbGUnXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdVbnN1YnNjcmliZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBiZy1sZXZlbC0wIGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgbGFyZ2UtcGFkZGluZ1wiPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNQYWNrYWdlXCIgY2xhc3M9XCJyb3cgcC0xNlwiPlxuICAgICAgICAgICAgICAgIDxjOHktcHJvcGVydGllcy1saXN0XG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJhcHBsaWNhdGlvbi5tYW5pZmVzdFwiXG4gICAgICAgICAgICAgICAgICBbcHJvcGVydGllc109XCJwYWNrYWdlUHJvcGVydGllc1wiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1BhY2thZ2UgZGV0YWlscycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgW2VtcHR5TGFiZWxdPVwiJy0tLSdcIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICAgICAgICAgID48L2M4eS1wcm9wZXJ0aWVzLWxpc3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic291cmNlUGFja2FnZVwiIGNsYXNzPVwicm93IHAtMTZcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LXByb3BlcnRpZXMtbGlzdFxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwic291cmNlUGFja2FnZS5tYW5pZmVzdFwiXG4gICAgICAgICAgICAgICAgICBbcHJvcGVydGllc109XCJwYWNrYWdlUHJvcGVydGllc1wiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NvdXJjZSBwYWNrYWdlIGluZm9ybWF0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbZW1wdHlMYWJlbF09XCInLS0tJ1wiXG4gICAgICAgICAgICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgICAgICAgICAgPjwvYzh5LXByb3BlcnRpZXMtbGlzdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTVcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFwcElkXCI+SUQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhcHBJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTdcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdOYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhaXNPd25lclwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIE15IGFwcGxpY2F0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS01XCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnQXBwbGljYXRpb24ga2V5JyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhcHBsaWNhdGlvbi5pZCB8fCAhaXNPd25lclwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJrZXlcIlxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBteS1hcHBsaWNhdGlvbi1rZXknIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTdcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdUeXBlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFwcGxpY2F0aW9uLmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiaWNvbk1hcFthcHBsaWNhdGlvbi50eXBlXVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwbGljYXRpb24udHlwZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBbbmdTd2l0Y2hdPVwiYXBwbGljYXRpb24udHlwZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidIT1NURUQnXCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnUGF0aCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+L2FwcHMvPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImFwcGxpY2F0aW9uLmlkIHx8ICFpc093bmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjb250ZXh0UGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIG15LWFwcGxpY2F0aW9uYHVzZWQgaW4gVVJMYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbnRleHRQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInTUlDUk9TRVJWSUNFJ1wiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ1BhdGgnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPi9zZXJ2aWNlLzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJhcHBsaWNhdGlvbi5pZCB8fCAhaXNPd25lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29udGV4dFBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBteS1taWNyb3NlcnZpY2VgdXNlZCBpbiBVUkxgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29udGV4dFBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFwcGxpY2F0aW9uLm1hbmlmZXN0LnZlcnNpb25cIiBjbGFzcz1cImNvbC1zbS00IG0tYi0xNiBmbGV4LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ1ZlcnNpb24nIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcGxpY2F0aW9uLm1hbmlmZXN0LnZlcnNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXBwbGljYXRpb24ubWFuaWZlc3QuaXNvbGF0aW9uXCIgY2xhc3M9XCJjb2wtc20tNCBtLWItMTYgZmxleC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdJc29sYXRpb24nIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2luZ2xlVGVuYW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjOHktZW50ZXJwcmlzZSdcIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yIGg0XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnU2luZ2xlIHRlbmFudCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNpbmdsZVRlbmFudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInYzh5LXN1Yi10ZW5hbnRzJ1wiIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3IgaWNvbi0zMlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ011bHRpIHRlbmFudCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXBwbGljYXRpb24ubWFuaWZlc3QuaXNvbGF0aW9uXCIgY2xhc3M9XCJjb2wtc20tNCBtLWItMTYgZmxleC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdCaWxsaW5nIG1vZGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3Vic2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ1Jlc291cmNlcyB1c2FnZSBhc3NpZ25lZCB0bzogT3duZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1N1YnNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXN1YnNjcmlwdGlvbiAmJiBzaW5nbGVUZW5hbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCInUmVzb3VyY2VzIHVzYWdlIGFzc2lnbmVkIHRvOiBTdWJzY3JpYmVyIHwgdHJhbnNsYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdSZXNvdXJjZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFzdWJzY3JpcHRpb24gJiYgIXNpbmdsZVRlbmFudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidSZXNvdXJjZXMgdXNhZ2UgYXNzaWduZWQgdG86IE93bmVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdSZXNvdXJjZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXBwbGljYXRpb24ubWFuaWZlc3QucHJvdmlkZXJcIiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIG0tdC00MFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnUHJvdmlkZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWlubGluZVwiICpuZ0lmPVwiYXBwbGljYXRpb24ubWFuaWZlc3QucHJvdmlkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFwcGxpY2F0aW9uLm1hbmlmZXN0LnByb3ZpZGVyLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTQgbS1iLTE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ05hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBsaWNhdGlvbi5tYW5pZmVzdC5wcm92aWRlci5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXBwbGljYXRpb24ubWFuaWZlc3QucHJvdmlkZXIuZG9tYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00IG0tYi0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdEb21haW4nIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBsaWNhdGlvbi5tYW5pZmVzdC5wcm92aWRlci5kb21haW4gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhcHBsaWNhdGlvbi5tYW5pZmVzdC5wcm92aWRlci5zdXBwb3J0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00IG0tYi0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdTdXBwb3J0JyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwbGljYXRpb24ubWFuaWZlc3QucHJvdmlkZXIuc3VwcG9ydCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1JFUE9TSVRPUlknXCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnUGF0aCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+L2FwcHMvPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImFwcGxpY2F0aW9uLmlkIHx8ICFpc093bmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbnRleHRQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjb250ZXh0UGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIG15LWFwcGxpY2F0aW9uYHVzZWQgaW4gVVJMYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdTZXJ2ZXIgVVJMJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicmVzb3VyY2VzVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZXNvdXJjZXNVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gbXktYXBwbGljYXRpb25gdXNlZCBpbiBVUkxgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnVXNlcm5hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ1Bhc3N3b3JkJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidFWFRFUk5BTCdcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdFeHRlcm5hbCBVUkwnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiJ14oPyFqYXZhc2NyaXB0OikuKydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCIhaXNPd25lclwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImV4dGVybmFsVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZXh0ZXJuYWxVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IGh0dHA6Ly93d3cuZXhhbXBsZS5jb20vXCJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzPlxuICAgICAgICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3BhdHRlcm4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidWYWxpZCBVUkwgcmVxdWlyZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDdXN0b21NaWNyb3NlcnZpY2VcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nXCIgY2xhc3M9XCJkLWNvbnRlbnRzXCI+XG4gICAgICAgICAgICAgIDxjOHktdXBsb2FkLWFyY2hpdmVcbiAgICAgICAgICAgICAgICBbKGFwcGxpY2F0aW9uKV09XCJhcHBsaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgKHJlZnJlc2gpPVwib25OZXdBcmNoaXZlKClcIlxuICAgICAgICAgICAgICA+PC9jOHktdXBsb2FkLWFyY2hpdmU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImFwcGxpY2F0aW9uICYmICEhaXNPd25lciAmJiBoYXNBZG1pblBlcm1pc3Npb25zXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGUoKVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuRGVsZXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0RlbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tZm9ybVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhYXBwbGljYXRpb24udHlwZSB8fCBmb3JtR3JvdXAuaW52YWxpZCB8fCBmb3JtR3JvdXAucHJpc3RpbmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cblxuICAgICAgPGRpdiAqbmdJZj1cImlzQWN0aXZpdHlMb2dTdXBwb3J0ZWRcIiBjbGFzcz1cImNvbnRlbnQtZnVsbHBhZ2UgZC1mbGV4IGQtY29sIGJnLWxldmVsLTFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPkFjdGl2aXR5IGxvZzwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWwtYXV0b1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc21cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJsb2FkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiBpc0xvYWRpbmcgfVwiIGM4eUljb249XCJyZWZyZXNoXCI+PC9pPlxuICAgICAgICAgICAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Yzh5LWFjdGl2aXR5LWxvZ1xuICAgICAgICAgICpuZ0lmPVwiIWlzTG9hZGluZ1wiXG4gICAgICAgICAgW2hhc0FkbWluUGVybWlzc2lvbnNdPVwiaGFzQWRtaW5QZXJtaXNzaW9uc1wiXG4gICAgICAgICAgW2FwcGxpY2F0aW9uXT1cImFwcGxpY2F0aW9uXCJcbiAgICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICA+PC9jOHktYWN0aXZpdHktbG9nPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tcHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vYXBwbGljYXRpb24tcHJvcGVydGllcy9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzL2FwcGxpY2F0aW9uLXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsV0FBVyxFQUdYLGdCQUFnQixFQUNoQixTQUFTLEVBQ1YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFdBQVcsRUFFWCxXQUFXLEVBQ1gsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2xCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDOzs7Ozs7Ozs7Ozs7QUFFaEgsTUFBTSx1QkFBdUIsR0FBRyx1Q0FBdUMsQ0FB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VCxDQUFDO1lBQ0YsSUFBSSxDQUFDLDJCQUEyQixHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQztZQUNsRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUNqRSxjQUFjLEVBQ2Qsc0JBQXNCLENBQ3ZCLENBQUM7U0FDSDtRQUFDLE1BQU07WUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FBQyxDQUFDO1NBQ3JGO0lBQ0gsQ0FBQzs7MkhBclZVLDhCQUE4QjsrR0FBOUIsOEJBQThCLGtFQ3ZDM0MsaTlxQkEyZkE7MkZEcGRhLDhCQUE4QjtrQkFKMUMsU0FBUzsrQkFDRSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25TZXJ2aWNlLFxuICBBcHBsaWNhdGlvblR5cGUsXG4gIEJpbGxpbmdNb2RlLFxuICBJQXBwbGljYXRpb24sXG4gIElNYW5hZ2VkT2JqZWN0LFxuICBJbnZlbnRvcnlTZXJ2aWNlLFxuICBJc29sYXRpb25cbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBNb2RhbFNlcnZpY2UsXG4gIFBlcm1pc3Npb25zLFxuICBQcm9wZXJ0aWVzTGlzdEl0ZW0sXG4gIFZpZXdDb250ZXh0LFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25TdGF0ZSxcbiAgRWNvc3lzdGVtU2VydmljZSxcbiAgUFJPRFVDVF9FWFBFUklFTkNFLFxuICBwYWNrYWdlUHJvcGVydGllc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tbW9kYWwvc3Vic2NyaXB0aW9uLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVcGRhdGVBcHBsaWNhdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi91cGRhdGUtYXBwbGljYXRpb24tbW9kYWwvdXBkYXRlLWFwcGxpY2F0aW9uLW1vZGFsLmNvbXBvbmVudCc7XG5cbmNvbnN0IE1JQ1JPU0VSVklDRVNfQkFTRV9QQVRIID0gJy9lY29zeXN0ZW0vbWljcm9zZXJ2aWNlL21pY3Jvc2VydmljZXMnO1xuY29uc3QgQVBQTElDQVRJT05TX0JBU0VfUEFUSCA9ICcvZWNvc3lzdGVtL2FwcGxpY2F0aW9uL2FwcGxpY2F0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcGxpY2F0aW9uLXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uUHJvcGVydGllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIENVUlJFTlRfTE9DQVRJT04gPSBsb2NhdGlvbi5ocmVmO1xuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbjtcbiAgYmluYXJ5TW86IElNYW5hZ2VkT2JqZWN0O1xuICBzaW5nbGVUZW5hbnQgPSBmYWxzZTtcbiAgc3Vic2NyaXB0aW9uID0gZmFsc2U7XG4gIGNhbk9wZW5JbkJyb3dzZXI6IGJvb2xlYW47XG4gIGRpc2FibGVPcGVuSW5Ccm93c2VyOiBib29sZWFuO1xuICBjYW5EZWxldGU6IGJvb2xlYW47XG4gIGlzT3duZXI6IGJvb2xlYW47XG4gIGlzU3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgaXNQYWNrYWdlOiBib29sZWFuO1xuICBpc01pY3Jvc2VydmljZTogYm9vbGVhbjtcbiAgaXNGZWF0dXJlOiBib29sZWFuO1xuICBpc0V4dGVybmFsOiBib29sZWFuO1xuICBpc1VucGFja2VkOiBib29sZWFuO1xuICBpY29uTWFwID0ge1xuICAgIEhPU1RFRDogJ2Nsb3VkJyxcbiAgICBFWFRFUk5BTDogJ2V4dGVybmFsLWxpbmstc3F1YXJlJyxcbiAgICBNSUNST1NFUlZJQ0U6ICdtaWNyb2NoaXAnXG4gIH07XG4gIGFwcFN0YXRlOiBBcHBsaWNhdGlvblN0YXRlO1xuICBzb3VyY2VQYWNrYWdlOiBJQXBwbGljYXRpb247XG4gIGlzTG9hZGluZyA9IHRydWU7XG4gIGlzQWN0aXZpdHlMb2dTdXBwb3J0ZWQ6IGJvb2xlYW47XG4gIGlzQ3VzdG9tTWljcm9zZXJ2aWNlOiBib29sZWFuO1xuICBoYXNBZG1pblBlcm1pc3Npb25zID0gZmFsc2U7XG5cbiAgYnJlYWRjcnVtYkNvbmZpZzogeyBpY29uOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IHBhdGg6IHN0cmluZyB9O1xuICBwYWNrYWdlUHJvcGVydGllczogUHJvcGVydGllc0xpc3RJdGVtW10gPSBbLi4ucGFja2FnZVByb3BlcnRpZXNdO1xuICBpc1VwZGF0ZUF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgYmx1ZXByaW50QXBwbGljYXRpb25WZXJzaW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYXNBZG1pblBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucy5oYXNSb2xlKFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX0FETUlOXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2goKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkKCk7XG4gICAgdGhpcy5pc1VucGFja2VkID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzVW5wYWNrZWQodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5pc1BhY2thZ2UgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNQYWNrYWdlKHRoaXMuYXBwbGljYXRpb24pO1xuICAgIHRoaXMuaXNGZWF0dXJlID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzRmVhdHVyZSh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLmlzRXh0ZXJuYWwgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNFeHRlcm5hbCh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLmlzTWljcm9zZXJ2aWNlID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzTWljcm9zZXJ2aWNlKHRoaXMuYXBwbGljYXRpb24pO1xuICAgIHRoaXMuYXBwU3RhdGUgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXBwU3RhdGUodGhpcy5hcHBsaWNhdGlvbik7XG5cbiAgICBpZiAodGhpcy5pc1VucGFja2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlc29sdmVTb3VyY2VQYWNrYWdlRGV0YWlscygpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0QnJlYWRjcnVtYkNvbmZpZygpO1xuXG4gICAgaWYgKHRoaXMuaXNDdXN0b21NaWNyb3NlcnZpY2UpIHtcbiAgICAgIHRoaXMubG9hZEJpbmFyeU1vKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIGF3YWl0IHRoaXMubG9hZEFwcGxpY2F0aW9uKCk7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIG9uQXBwbGljYXRpb24oYXBwOiBJQXBwbGljYXRpb24pIHtcbiAgICBpZiAoYXBwLm1hbmlmZXN0KSB7XG4gICAgICB0aGlzLnNpbmdsZVRlbmFudCA9IGFwcC5tYW5pZmVzdC5pc29sYXRpb24gPT09IElzb2xhdGlvbi5QRVJfVEVOQU5UO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBhcHAubWFuaWZlc3QuYmlsbGluZ01vZGUgPT09IEJpbGxpbmdNb2RlLlNVQlNDUklQVElPTjtcbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMuYXBwbGljYXRpb24udHlwZSA9PT0gQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChNSUNST1NFUlZJQ0VTX0JBU0VfUEFUSCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoQVBQTElDQVRJT05TX0JBU0VfUEFUSCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkFwcChhcHApIHtcbiAgICB0aGlzLmVjb3N5c3RlbVNlcnZpY2Uub3BlbkFwcChhcHApO1xuICB9XG5cbiAgZ2V0UGFja2FnZShlbnRpdHlPcklkOiBzdHJpbmcgfCBudW1iZXIgfCBJQXBwbGljYXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZGV0YWlsKGVudGl0eU9ySWQpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZGVsZXRlQXBwKHRoaXMuYXBwbGljYXRpb24pO1xuICAgICAgaWYgKHRoaXMuYXBwbGljYXRpb24udHlwZSA9PT0gQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRSkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKE1JQ1JPU0VSVklDRVNfQkFTRV9QQVRIKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoQVBQTElDQVRJT05TX0JBU0VfUEFUSCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChleCkge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmUoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0geyBhcHBsaWNhdGlvbjogdGhpcy5hcHBsaWNhdGlvbiwgaXNTdWJzY3JpYmVkOiBmYWxzZSB9O1xuICAgIGF3YWl0IHRoaXMuY29uZmlybVN1YnNjcmlwdGlvbkNoYW5nZShpbml0aWFsU3RhdGUpO1xuICAgIHRoaXMubG9hZEFwcGxpY2F0aW9uKCk7XG4gIH1cblxuICBhc3luYyB1bnN1YnNjcmliZSgpIHtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7IGFwcGxpY2F0aW9uOiB0aGlzLmFwcGxpY2F0aW9uLCBpc1N1YnNjcmliZWQ6IHRydWUgfTtcbiAgICBhd2FpdCB0aGlzLmNvbmZpcm1TdWJzY3JpcHRpb25DaGFuZ2UoaW5pdGlhbFN0YXRlKTtcbiAgICB0aGlzLmxvYWRBcHBsaWNhdGlvbigpO1xuICB9XG5cbiAgYXN5bmMgbG9hZEFwcGxpY2F0aW9uKCkge1xuICAgIGNvbnN0IHsgaWQgfSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGE7XG4gICAgdGhpcy5hcHBsaWNhdGlvbiA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRBcHBsaWNhdGlvbihpZCk7XG4gICAgaWYgKHRoaXMuYXBwbGljYXRpb24udHlwZSA9PT0gQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCduYW1lJykuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRBcHBsaWNhdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuYXBwbGljYXRpb24sXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5nZXREZXNjcmlwdGlvbih0aGlzLmFwcGxpY2F0aW9uKVxuICAgIH07XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHVwZGF0ZWRBcHBsaWNhdGlvbik7XG4gICAgdGhpcy5jYW5PcGVuSW5Ccm93c2VyID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmNhbk9wZW5BcHBJbkJyb3dzZXIodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5kaXNhYmxlT3BlbkluQnJvd3NlciA9XG4gICAgICB0aGlzLmNhbk9wZW5JbkJyb3dzZXIgJiZcbiAgICAgIChhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNPdmVyd3JpdHRlbkJ5Q3VzdG9tQXBwKHRoaXMuYXBwbGljYXRpb24pKTtcbiAgICB0aGlzLmNhbkRlbGV0ZSA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5jYW5EZWxldGVBcHAodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5pc093bmVyID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzT3duZXIodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5pc0FjdGl2aXR5TG9nU3VwcG9ydGVkID0gdGhpcy5pc0FjdGl2aXR5TG9nU3VwcG9ydGVkQnlBcHAodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5pc0N1c3RvbU1pY3Jvc2VydmljZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc0N1c3RvbU1pY3Jvc2VydmljZSh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLmlzU3Vic2NyaWJlZCA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5jaGVja0lmU3Vic2NyaWJlZCh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLm9uQXBwbGljYXRpb24odGhpcy5hcHBsaWNhdGlvbik7XG4gIH1cblxuICBhc3luYyBzYXZlKGFwcDogSUFwcGxpY2F0aW9uKSB7XG4gICAgYXBwLmlkID0gdGhpcy5hcHBsaWNhdGlvbi5pZDtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnVwZGF0ZUFwcChhcHApO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdBcHBsaWNhdGlvbiBzYXZlZC4nKSk7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCgpO1xuICAgICAgdGhpcy5sb2FkQXBwbGljYXRpb24oKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuXG4gIG9uTmV3QXJjaGl2ZSgpIHtcbiAgICB0aGlzLmxvYWRCaW5hcnlNbygpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVG9MYXRlc3RWZXJzaW9uKCkge1xuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5BUFBMSUNBVElPTl9QUk9QRVJUSUVTLFxuICAgICAge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5BUFBMSUNBVElPTl9QUk9QRVJUSUVTLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5VUERBVEVfQVZBSUxBQkxFLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfVxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEJvZHkgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgIGBZb3UncmUgdXNpbmcgdGhlIHZlcnNpb24ge3sgY3VycmVudFZlcnNpb24gfX0gb2YgdGhlIHt7IHBhY2thZ2VOYW1lIH19IHBhY2thZ2UsIHRoZSBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGUgaXMge3sgbGF0ZXN0VmVyc2lvbiB9fSwgZG8geW91IHdhbnQgdG8gdXBkYXRlPyBZb3UgY2FuIGFsd2F5cyByZXZlcnQgdG8gYSBwcmV2aW91cyB2ZXJzaW9uIGluIHRoZSBBY3Rpdml0eSBsb2cgcGFuZWwuYFxuICAgICAgICApLFxuICAgICAgICB7XG4gICAgICAgICAgY3VycmVudFZlcnNpb246IHRoaXMuYXBwbGljYXRpb24ubWFuaWZlc3Q/LnZlcnNpb24sXG4gICAgICAgICAgbGF0ZXN0VmVyc2lvbjogdGhpcy5ibHVlcHJpbnRBcHBsaWNhdGlvblZlcnNpb24sXG4gICAgICAgICAgcGFja2FnZU5hbWU6IHRoaXMuc291cmNlUGFja2FnZS5uYW1lXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKGdldHRleHQoJ1VwZGF0ZSBhcHBsaWNhdGlvbicpLCB0cmFuc2xhdGVkQm9keSwgJ3dhcm5pbmcnLCB7XG4gICAgICAgIG9rOiBnZXR0ZXh0KCdVcGRhdGUnKSxcbiAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBtb2RhbCBjYW5jZWxlZFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3c8VXBkYXRlQXBwbGljYXRpb25Nb2RhbENvbXBvbmVudD4oXG4gICAgICAgIFVwZGF0ZUFwcGxpY2F0aW9uTW9kYWxDb21wb25lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgc291cmNlUGFja2FnZTogdGhpcy5zb3VyY2VQYWNrYWdlLFxuICAgICAgICAgICAgYXBwbGljYXRpb246IHRoaXMuYXBwbGljYXRpb25cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICkuY29udGVudC5yZXN1bHQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBtb2RhbCBjYW5jZWxlZFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQXBwbGljYXRpb24gdXBkYXRlZC4nKSk7XG4gIH1cblxuICBwcml2YXRlIGdldERlc2NyaXB0aW9uKGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghYXBwbGljYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIGFwcGxpY2F0aW9uLmRlc2NyaXB0aW9uIHx8IGFwcGxpY2F0aW9uLm1hbmlmZXN0Py5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29uZmlybVN1YnNjcmlwdGlvbkNoYW5nZShpbml0aWFsU3RhdGU6IHtcbiAgICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uO1xuICAgIGlzU3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgfSkge1xuICAgIGF3YWl0IChcbiAgICAgIHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhTdWJzY3JpcHRpb25Nb2RhbENvbXBvbmVudCwge1xuICAgICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWVcbiAgICAgIH0pLmNvbnRlbnQgYXMgU3Vic2NyaXB0aW9uTW9kYWxDb21wb25lbnRcbiAgICApLnJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVNvdXJjZVBhY2thZ2VEZXRhaWxzKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNvdXJjZVBhY2thZ2UgPSAoYXdhaXQgdGhpcy5nZXRQYWNrYWdlKHRoaXMuYXBwbGljYXRpb24ubWFuaWZlc3Q/LnNvdXJjZSkpLmRhdGE7XG4gICAgICBpZiAodGhpcy5zb3VyY2VQYWNrYWdlKSB7XG4gICAgICAgIHRoaXMucGFja2FnZVByb3BlcnRpZXMucHVzaCh7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NvdXJjZSBwYWNrYWdlJyksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuc291cmNlUGFja2FnZS5uYW1lLFxuICAgICAgICAgIHR5cGU6ICdsaW5rJyxcbiAgICAgICAgICBhY3Rpb246ICgpID0+XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFxuICAgICAgICAgICAgICBWaWV3Q29udGV4dC5FeHRlbnNpb24ucmVwbGFjZSgnOmlkJywgdGhpcy5zb3VyY2VQYWNrYWdlLmlkLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICApXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uud2FybmluZyhnZXR0ZXh0KCdVbmFibGUgdG8gcmVzb2x2ZSBzb3VyY2UgcGFja2FnZS4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5leHRyYWN0VmVyc2lvbkluZm9ybWF0aW9uKHRoaXMuYXBwbGljYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgaWQ6IFt7IHZhbHVlOiAnJyB9XSxcbiAgICAgIG5hbWU6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXSxcbiAgICAgIGtleTogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldLFxuICAgICAgY29udGV4dFBhdGg6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbJycsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMCldLFxuICAgICAgcmVzb3VyY2VzVXJsOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB1c2VybmFtZTogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcGFzc3dvcmQ6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGV4dGVybmFsVXJsOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuaGFzQWRtaW5QZXJtaXNzaW9ucykge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNBY3Rpdml0eUxvZ1N1cHBvcnRlZEJ5QXBwKGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc093bmVyKGFwcCkgJiZcbiAgICAgIGFwcC50eXBlICE9PSBBcHBsaWNhdGlvblR5cGUuTUlDUk9TRVJWSUNFICYmXG4gICAgICBhcHAudHlwZSAhPT0gQXBwbGljYXRpb25UeXBlLkVYVEVSTkFMXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QnJlYWRjcnVtYkNvbmZpZygpIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJDb25maWcgPSB7XG4gICAgICBpY29uOiB0aGlzLmlzTWljcm9zZXJ2aWNlID8gJ21pY3JvY2hpcCcgOiB0aGlzLmlzRmVhdHVyZSA/ICd0YWInIDogJ2M4eS1tb2R1bGVzJyxcbiAgICAgIGxhYmVsOiB0aGlzLmlzTWljcm9zZXJ2aWNlXG4gICAgICAgID8gZ2V0dGV4dCgnTWljcm9zZXJ2aWNlcycpXG4gICAgICAgIDogdGhpcy5pc0ZlYXR1cmVcbiAgICAgICAgPyBnZXR0ZXh0KCdGZWF0dXJlcycpXG4gICAgICAgIDogZ2V0dGV4dCgnQXBwbGljYXRpb25zJyksXG4gICAgICBwYXRoOiB0aGlzLmlzTWljcm9zZXJ2aWNlXG4gICAgICAgID8gJy9lY29zeXN0ZW0vbWljcm9zZXJ2aWNlL21pY3Jvc2VydmljZXMnXG4gICAgICAgIDogdGhpcy5pc0ZlYXR1cmVcbiAgICAgICAgPyAnZWNvc3lzdGVtL2FwcGxpY2F0aW9uL2ZlYXR1cmVzJ1xuICAgICAgICA6ICdlY29zeXN0ZW0vYXBwbGljYXRpb24vYXBwbGljYXRpb25zJ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRCaW5hcnlNbygpIHtcbiAgICB0aGlzLmJpbmFyeU1vID0gKGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZXRhaWwodGhpcy5hcHBsaWNhdGlvbi5hY3RpdmVWZXJzaW9uSWQpKS5kYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleHRyYWN0VmVyc2lvbkluZm9ybWF0aW9uKGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb24pIHtcbiAgICBpZiAoIWFwcGxpY2F0aW9uLm1hbmlmZXN0LmlzUGFja2FnZSAmJiAhYXBwbGljYXRpb24ubWFuaWZlc3Quc291cmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmx1ZXByaW50QXBwbGljYXRpb25JZCA9IGFwcGxpY2F0aW9uLm1hbmlmZXN0Py5zb3VyY2U7XG4gICAgY29uc3QgY3VycmVudFZlcnNpb24gPSBhcHBsaWNhdGlvbi5tYW5pZmVzdD8udmVyc2lvbjtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGRhdGE6IGJsdWVwcmludEFwcGxpY2F0aW9uVmVyc2lvbnMgfSA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmxpc3RWZXJzaW9ucyhcbiAgICAgICAgYmx1ZXByaW50QXBwbGljYXRpb25JZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGJsdWVwcmludExhdGVzdFZlcnNpb24gPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXBwbGljYXRpb25WZXJzaW9uT2JqZWN0QnlUYWcoXG4gICAgICAgIGJsdWVwcmludEFwcGxpY2F0aW9uVmVyc2lvbnMsXG4gICAgICAgICdsYXRlc3QnXG4gICAgICApO1xuICAgICAgdGhpcy5ibHVlcHJpbnRBcHBsaWNhdGlvblZlcnNpb24gPSBibHVlcHJpbnRMYXRlc3RWZXJzaW9uLnZlcnNpb247XG4gICAgICB0aGlzLmlzVXBkYXRlQXZhaWxhYmxlID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnNob3VsZFVwZ3JhZGVQYWNrYWdlKFxuICAgICAgICBjdXJyZW50VmVyc2lvbixcbiAgICAgICAgYmx1ZXByaW50TGF0ZXN0VmVyc2lvblxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm5pbmcoZ2V0dGV4dCgnVW5hYmxlIHRvIHJlc29sdmUgdmVyc2lvbnMgb2Ygc291cmNlIHBhY2thZ2UuJykpO1xuICAgIH1cbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyBhcHBsaWNhdGlvbiB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYiAqbmdJZj1cIiFpc01pY3Jvc2VydmljZVwiPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbaWNvbl09XCInYzh5LWF0b20nXCIgW2xhYmVsXT1cIidFY29zeXN0ZW0nIHwgdHJhbnNsYXRlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktbW9kdWxlcydcIlxuICAgIFtsYWJlbF09XCInQXBwbGljYXRpb25zJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9hcHBsaWNhdGlvbnMnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICAqbmdJZj1cImlzRmVhdHVyZVwiXG4gICAgW2ljb25dPVwiYnJlYWRjcnVtYkNvbmZpZz8uaWNvblwiXG4gICAgW2xhYmVsXT1cImJyZWFkY3J1bWJDb25maWc/LmxhYmVsXCJcbiAgICBbcGF0aF09XCJicmVhZGNydW1iQ29uZmlnPy5wYXRoXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2xhYmVsXT1cImFwcGxpY2F0aW9uIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmNcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtsYWJlbF09XCInUHJvcGVydGllcycgfCB0cmFuc2xhdGVcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48Yzh5LWJyZWFkY3J1bWIgKm5nSWY9XCJpc01pY3Jvc2VydmljZVwiPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbaWNvbl09XCInYzh5LWF0b20nXCIgW2xhYmVsXT1cIidFY29zeXN0ZW0nIHwgdHJhbnNsYXRlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cImJyZWFkY3J1bWJDb25maWc/Lmljb25cIlxuICAgIFtsYWJlbF09XCJicmVhZGNydW1iQ29uZmlnPy5sYWJlbFwiXG4gICAgW3BhdGhdPVwiYnJlYWRjcnVtYkNvbmZpZz8ucGF0aFwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtsYWJlbF09XCJhcHBsaWNhdGlvbiB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiJ1Byb3BlcnRpZXMnIHwgdHJhbnNsYXRlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2NvbC1tZC04JzogIWlzQWN0aXZpdHlMb2dTdXBwb3J0ZWQsICdjb2wtbWQtMTInOiBpc0FjdGl2aXR5TG9nU3VwcG9ydGVkIH1cIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImFwcGxpY2F0aW9uXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2QtZ3JpZCBncmlkX19jb2wtLTctNS0tbWQnOiBpc0FjdGl2aXR5TG9nU3VwcG9ydGVkIH1cIlxuICAgICAgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2VcIlxuICAgID5cbiAgICAgIDxmb3JtXG4gICAgICAgIChuZ1N1Ym1pdCk9XCJmb3JtR3JvdXAudmFsaWQgJiYgc2F2ZShmb3JtR3JvdXAudmFsdWUpXCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgICAgICBjbGFzcz1cImQtZmxleCBkLWNvbCBjb250ZW50LWZ1bGxwYWdlXCJcbiAgICAgICAgbm92YWxpZGF0ZVxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZ1wiIGNsYXNzPVwiZC1jb250ZW50c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHNlcGFyYXRvci1ib3R0b20gbGFyZ2UtcGFkZGluZyBmbGV4LW5vLXNocmlua1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleC1tZCBhLWktc3RhcnQgdGV4dC1jZW50ZXIgdGV4dC1sZWZ0LW1kXCI+XG4gICAgICAgICAgICAgIDxjOHktYXBwLWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc1BhY2thZ2UgJiYgIWlzRmVhdHVyZSAmJiAhaXNNaWNyb3NlcnZpY2UgJiYgIWlzRXh0ZXJuYWxcIlxuICAgICAgICAgICAgICAgIFthcHBdPVwiYXBwbGljYXRpb25cIlxuICAgICAgICAgICAgICAgIFtjb250ZXh0UGF0aF09XCJhcHBsaWNhdGlvbi5jb250ZXh0UGF0aFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiYXBwbGljYXRpb24ubmFtZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLTQ4XCJcbiAgICAgICAgICAgICAgPjwvYzh5LWFwcC1pY29uPlxuICAgICAgICAgICAgICA8aSAqbmdJZj1cImlzUGFja2FnZVwiIGM4eUljb249XCJiaWctcGFyY2VsXCIgY2xhc3M9XCJpY29uLTQ4XCI+PC9pPlxuICAgICAgICAgICAgICA8aSAqbmdJZj1cImlzRmVhdHVyZVwiIGM4eUljb249XCJ0YWJcIiBjbGFzcz1cImljb24tNDhcIj48L2k+XG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwiaXNNaWNyb3NlcnZpY2VcIiBjOHlJY29uPVwibWljcm9jaGlwXCIgY2xhc3M9XCJpY29uLTQ4XCI+PC9pPlxuICAgICAgICAgICAgICA8aSAqbmdJZj1cImlzRXh0ZXJuYWxcIiBjOHlJY29uPVwiZ2xvYmUxXCIgY2xhc3M9XCJpY29uLTQ4XCI+PC9pPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXQtbWQtMTYgcC1sLW1kLTE2IHAtci1tZC0zMiBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImg0IHRleHQtbWVkaXVtIG0tYi04XCI+e3sgYXBwbGljYXRpb24gfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvcD5cbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIiFpc093bmVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwPy5jb250cm9scz8uZGVzY3JpcHRpb24/LnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoJ05vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZS4nIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgPC9lbT5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzT3duZXJcIiBjbGFzcz1cImZvcm0tZ3JvdXAgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IHVwZGF0ZWQ6IGZvcm1Hcm91cD8uY29udHJvbHM/LmRlc2NyaXB0aW9uPy5kaXJ0eSB9XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgIGM4eS10ZXh0YXJlYS1hdXRvcmVzaXplXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbm8tcmVzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUuJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0LW1kIG0tdC00XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiYXBwU3RhdGU/LmNsYXNzXCIgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAge3sgYXBwU3RhdGU/LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZml0LXcgbS10LTJcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc1BhY2thZ2UgfHwgaXNNaWNyb3NlcnZpY2UgfHwgaXNVbnBhY2tlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBWZXJzaW9uOlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInAtbC00IHRleHQtYm9sZFwiPnt7IGFwcGxpY2F0aW9uLm1hbmlmZXN0Py52ZXJzaW9uIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZpdC13IG0tdC0yXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzVW5wYWNrZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtbGFiZWwtc21hbGxcIlxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQ3JlYXRpb24gdGltZTpcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJwLWwtNCB0ZXh0LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgKGJpbmFyeU1vPy5jcmVhdGlvblRpbWUgfCBjOHlEYXRlKSB8fCAnLS0tJyB9fVxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS10LThcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNVcGRhdGVBdmFpbGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVG9MYXRlc3RWZXJzaW9uKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ1RoZXJlXFwncyBhIG5ld2VyIHZlcnNpb24gYXZhaWxhYmxlLCBjbGljayB0byB1cGRhdGUnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUaGVyZVxcJ3MgYSBuZXdlciB2ZXJzaW9uIGF2YWlsYWJsZSwgY2xpY2sgdG8gdXBkYXRlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZWxheV09XCIzMDBcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInaW5zdGFsbGluZy11cGRhdGVzJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1VwZGF0ZSBhdmFpbGFibGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5BcHAoYXBwbGljYXRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVPcGVuSW5Ccm93c2VyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5PcGVuSW5Ccm93c2VyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnT3BlbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2V4dGVybmFsLWxpbmsnXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyAnT3BlbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhbk9wZW5JbkJyb3dzZXIgJiYgZGlzYWJsZU9wZW5JbkJyb3dzZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICBUaGUgYXBwbGljYXRpb24gaXMgb3ZlcndyaXR0ZW4gYnkgYSBjdXN0b20gYXBwbGljYXRpb24gc2hhcmluZyB0aGUgc2FtZSBwYXRoXG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNDdXN0b21NaWNyb3NlcnZpY2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU3Vic2NyaWJlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1YnNjcmliZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc1N1YnNjcmliZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2NoZWNrLWNpcmNsZS1vJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnU3Vic2NyaWJlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnVW5zdWJzY3JpYmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidW5zdWJzY3JpYmUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc1N1YnNjcmliZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ21pbnVzLWNpcmNsZSdcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ1Vuc3Vic2NyaWJlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTAgZmxleC1ncm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1BhY2thZ2VcIiBjbGFzcz1cInJvdyBwLTE2XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1wcm9wZXJ0aWVzLWxpc3RcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImFwcGxpY2F0aW9uLm1hbmlmZXN0XCJcbiAgICAgICAgICAgICAgICAgIFtwcm9wZXJ0aWVzXT1cInBhY2thZ2VQcm9wZXJ0aWVzXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUGFja2FnZSBkZXRhaWxzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbZW1wdHlMYWJlbF09XCInLS0tJ1wiXG4gICAgICAgICAgICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgICAgICAgICAgPjwvYzh5LXByb3BlcnRpZXMtbGlzdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzb3VyY2VQYWNrYWdlXCIgY2xhc3M9XCJyb3cgcC0xNlwiPlxuICAgICAgICAgICAgICAgIDxjOHktcHJvcGVydGllcy1saXN0XG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJzb3VyY2VQYWNrYWdlLm1hbmlmZXN0XCJcbiAgICAgICAgICAgICAgICAgIFtwcm9wZXJ0aWVzXT1cInBhY2thZ2VQcm9wZXJ0aWVzXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU291cmNlIHBhY2thZ2UgaW5mb3JtYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtlbXB0eUxhYmVsXT1cIictLS0nXCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJpbmZvXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktcHJvcGVydGllcy1saXN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNVwiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYXBwSWRcIj5JRDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFwcElkXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tN1wiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ05hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiFpc093bmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgYXBwbGljYXRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTVcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdBcHBsaWNhdGlvbiBrZXknIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFwcGxpY2F0aW9uLmlkIHx8ICFpc093bmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIG15LWFwcGxpY2F0aW9uLWtleScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tN1wiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ1R5cGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXBwbGljYXRpb24uaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJpY29uTWFwW2FwcGxpY2F0aW9uLnR5cGVdXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBsaWNhdGlvbi50eXBlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJhcHBsaWNhdGlvbi50eXBlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0hPU1RFRCdcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdQYXRoJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj4vYXBwcy88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiYXBwbGljYXRpb24uaWQgfHwgIWlzT3duZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbnRleHRQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gbXktYXBwbGljYXRpb25gdXNlZCBpbiBVUkxgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29udGV4dFBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidNSUNST1NFUlZJQ0UnXCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnUGF0aCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+L3NlcnZpY2UvPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImFwcGxpY2F0aW9uLmlkIHx8ICFpc093bmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjb250ZXh0UGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIG15LW1pY3Jvc2VydmljZWB1c2VkIGluIFVSTGAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb250ZXh0UGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXBwbGljYXRpb24ubWFuaWZlc3QudmVyc2lvblwiIGNsYXNzPVwiY29sLXNtLTQgbS1iLTE2IGZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnVmVyc2lvbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwbGljYXRpb24ubWFuaWZlc3QudmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhcHBsaWNhdGlvbi5tYW5pZmVzdC5pc29sYXRpb25cIiBjbGFzcz1cImNvbC1zbS00IG0tYi0xNiBmbGV4LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ0lzb2xhdGlvbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaW5nbGVUZW5hbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2M4eS1lbnRlcnByaXNlJ1wiIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3IgaDRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdTaW5nbGUgdGVuYW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2luZ2xlVGVuYW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjOHktc3ViLXRlbmFudHMnXCIgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvciBpY29uLTMyXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnTXVsdGkgdGVuYW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhcHBsaWNhdGlvbi5tYW5pZmVzdC5pc29sYXRpb25cIiBjbGFzcz1cImNvbC1zbS00IG0tYi0xNiBmbGV4LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ0JpbGxpbmcgbW9kZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCInUmVzb3VyY2VzIHVzYWdlIGFzc2lnbmVkIHRvOiBPd25lcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnU3Vic2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc3Vic2NyaXB0aW9uICYmIHNpbmdsZVRlbmFudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidSZXNvdXJjZXMgdXNhZ2UgYXNzaWduZWQgdG86IFN1YnNjcmliZXIgfCB0cmFuc2xhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1Jlc291cmNlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXN1YnNjcmlwdGlvbiAmJiAhc2luZ2xlVGVuYW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ1Jlc291cmNlcyB1c2FnZSBhc3NpZ25lZCB0bzogT3duZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1Jlc291cmNlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhcHBsaWNhdGlvbi5tYW5pZmVzdC5wcm92aWRlclwiIGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2sgbS10LTQwXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdQcm92aWRlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaW5saW5lXCIgKm5nSWY9XCJhcHBsaWNhdGlvbi5tYW5pZmVzdC5wcm92aWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXBwbGljYXRpb24ubWFuaWZlc3QucHJvdmlkZXIubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNCBtLWItMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnTmFtZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcGxpY2F0aW9uLm1hbmlmZXN0LnByb3ZpZGVyLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhcHBsaWNhdGlvbi5tYW5pZmVzdC5wcm92aWRlci5kb21haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTQgbS1iLTE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ0RvbWFpbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcGxpY2F0aW9uLm1hbmlmZXN0LnByb3ZpZGVyLmRvbWFpbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFwcGxpY2F0aW9uLm1hbmlmZXN0LnByb3ZpZGVyLnN1cHBvcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTQgbS1iLTE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ1N1cHBvcnQnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBsaWNhdGlvbi5tYW5pZmVzdC5wcm92aWRlci5zdXBwb3J0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInUkVQT1NJVE9SWSdcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdQYXRoJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj4vYXBwcy88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiYXBwbGljYXRpb24uaWQgfHwgIWlzT3duZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29udGV4dFBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNvbnRleHRQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gbXktYXBwbGljYXRpb25gdXNlZCBpbiBVUkxgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ1NlcnZlciBVUkwnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJyZXNvdXJjZXNVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlc291cmNlc1VybFwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBteS1hcHBsaWNhdGlvbmB1c2VkIGluIFVSTGAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdVc2VybmFtZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1c2VybmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnUGFzc3dvcmQnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0VYVEVSTkFMJ1wiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgJ0V4dGVybmFsIFVSTCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCInXig/IWphdmFzY3JpcHQ6KS4rJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cIiFpc093bmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZXh0ZXJuYWxVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJleHRlcm5hbFVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gaHR0cDovL3d3dy5leGFtcGxlLmNvbS9cIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIncGF0dGVybidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1ZhbGlkIFVSTCByZXF1aXJlZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0N1c3RvbU1pY3Jvc2VydmljZVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmdcIiBjbGFzcz1cImQtY29udGVudHNcIj5cbiAgICAgICAgICAgICAgPGM4eS11cGxvYWQtYXJjaGl2ZVxuICAgICAgICAgICAgICAgIFsoYXBwbGljYXRpb24pXT1cImFwcGxpY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAocmVmcmVzaCk9XCJvbk5ld0FyY2hpdmUoKVwiXG4gICAgICAgICAgICAgID48L2M4eS11cGxvYWQtYXJjaGl2ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiYXBwbGljYXRpb24gJiYgISFpc093bmVyICYmIGhhc0FkbWluUGVybWlzc2lvbnNcIlxuICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZSgpXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5EZWxldGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnRGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1mb3JtXCJcbiAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhcHBsaWNhdGlvbi50eXBlIHx8IGZvcm1Hcm91cC5pbnZhbGlkIHx8IGZvcm1Hcm91cC5wcmlzdGluZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNBY3Rpdml0eUxvZ1N1cHBvcnRlZFwiIGNsYXNzPVwiY29udGVudC1mdWxscGFnZSBkLWZsZXggZC1jb2wgYmctbGV2ZWwtMVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIiB0cmFuc2xhdGU+QWN0aXZpdHkgbG9nPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tbC1hdXRvXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImxvYWQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IGlzTG9hZGluZyB9XCIgYzh5SWNvbj1cInJlZnJlc2hcIj48L2k+XG4gICAgICAgICAgICAgIHt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cInAtMTYgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxjOHktYWN0aXZpdHktbG9nXG4gICAgICAgICAgKm5nSWY9XCIhaXNMb2FkaW5nXCJcbiAgICAgICAgICBbaGFzQWRtaW5QZXJtaXNzaW9uc109XCJoYXNBZG1pblBlcm1pc3Npb25zXCJcbiAgICAgICAgICBbYXBwbGljYXRpb25dPVwiYXBwbGljYXRpb25cIlxuICAgICAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICAgID48L2M4eS1hY3Rpdml0eS1sb2c+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -7,8 +7,8 @@ export class EcosystemNavigationFactory {
|
|
|
7
7
|
this.permissions = permissions;
|
|
8
8
|
this.navs = [];
|
|
9
9
|
this.showNavigatorNodes = this.permissions.hasAnyRole([
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
Permissions.ROLE_APPLICATION_MANAGEMENT_READ,
|
|
11
|
+
Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN
|
|
12
12
|
]);
|
|
13
13
|
}
|
|
14
14
|
async get() {
|
|
@@ -50,4 +50,4 @@ EcosystemNavigationFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12
|
|
|
50
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EcosystemNavigationFactory, decorators: [{
|
|
51
51
|
type: Injectable
|
|
52
52
|
}], ctorParameters: function () { return [{ type: i1.Permissions }]; } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLW5hdmlnYXRpb24uZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2Vjb3N5c3RlbS9lY29zeXN0ZW0tbmF2aWdhdGlvbi5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUF1QyxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBR3ZGLE1BQU0sT0FBTywwQkFBMEI7SUFJckMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFIcEMsU0FBSSxHQUFvQixFQUFFLENBQUM7UUFJakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3BELFdBQVcsQ0FBQyxnQ0FBZ0M7WUFDNUMsV0FBVyxDQUFDLGlDQUFpQztTQUM5QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUc7UUFDUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUE2QkY7UUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7dUhBM0NVLDBCQUEwQjsySEFBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JOb2RlLCBOYXZpZ2F0b3JOb2RlRmFjdG9yeSwgUGVybWlzc2lvbnMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVjb3N5c3RlbU5hdmlnYXRpb25GYWN0b3J5IGltcGxlbWVudHMgTmF2aWdhdG9yTm9kZUZhY3Rvcnkge1xuICBwcml2YXRlIG5hdnM6IE5hdmlnYXRvck5vZGVbXSA9IFtdO1xuICBwcml2YXRlIHNob3dOYXZpZ2F0b3JOb2RlczogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucykge1xuICAgIHRoaXMuc2hvd05hdmlnYXRvck5vZGVzID0gdGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlSb2xlKFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfQVBQTElDQVRJT05fTUFOQUdFTUVOVF9SRUFELFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX0FETUlOXG4gICAgXSk7XG4gIH1cblxuICBhc3luYyBnZXQoKSB7XG4gICAgLypcblRoZSBOYXZpZ2F0b3JOb2RlcyBhcmUgYWRkZWQgaW4gQW5ndWxhckpTIGNvZGUgdG8ga2VlcCB0aGUgUXVpY2sgbGlua3Mgd2lkZ2V0IHdvcmtpbmcuXG5BZnRlciB0aGUgUXVpY2sgbGlua3Mgd2lkZ2V0IGlzIG1pZ3JhdGVkIHRvIEFuZ3VsYXIsIHRoZSBsb2dpYyBvZiBhZGRpbmcgdGhlIE5hdmlnYXRvck5vZGVzIGNhbiBiZSBtaWdyYXRlZCBhcyB3ZWxsLlxuICAgIGlmICh0aGlzLm5hdnMubGVuZ3RoID09PSAwICYmIHRoaXMuc2hvd05hdmlnYXRvck5vZGVzKSB7XG4gICAgICBjb25zdCBhcHBsaWNhdGlvbnNOb2RlOiBOYXZpZ2F0b3JOb2RlID0gbmV3IE5hdmlnYXRvck5vZGUoe1xuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQXBwbGljYXRpb25zJyksXG4gICAgICAgIGljb246ICdjOHktbW9kdWxlcycsXG4gICAgICAgIHBhdGg6ICcvZWNvc3lzdGVtJyxcbiAgICAgICAgcHJpb3JpdHk6IDMwMCxcbiAgICAgICAgcm91dGVyTGlua0V4YWN0OiBmYWxzZVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG1pY3Jvc2VydmljZXNOb2RlID0gbmV3IE5hdmlnYXRvck5vZGUoe1xuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTWljcm9zZXJ2aWNlcycpLFxuICAgICAgICBpY29uOiAnbWljcm9jaGlwJyxcbiAgICAgICAgcGF0aDogJy9taWNyb3NlcnZpY2VzJyxcbiAgICAgICAgcHJpb3JpdHk6IDIwMCxcbiAgICAgICAgcm91dGVyTGlua0V4YWN0OiBmYWxzZVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubmF2cy5wdXNoKFxuICAgICAgICBuZXcgTmF2aWdhdG9yTm9kZSh7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Vjb3N5c3RlbScpLFxuICAgICAgICAgIGljb246ICdjOHktYXRvbScsXG4gICAgICAgICAgcHJpb3JpdHk6IDMyMDAsXG4gICAgICAgICAgY2hpbGRyZW46IFthcHBsaWNhdGlvbnNOb2RlLCBtaWNyb3NlcnZpY2VzTm9kZV1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuKi9cbiAgICByZXR1cm4gdGhpcy5uYXZzO1xuICB9XG59XG4iXX0=
|
|
@@ -20,7 +20,7 @@ export class PackagesListComponent {
|
|
|
20
20
|
this.packages$ = this.reload$.pipe(takeUntil(this.destroy$), tap(() => (this.reloading = true)), switchMap(() => this.ecosystemService.getPackageApplications()), tap(() => (this.reloading = false)), shareReplay(1));
|
|
21
21
|
}
|
|
22
22
|
ngOnInit() {
|
|
23
|
-
this.hasAdminPermissions = this.permissions.hasRole(
|
|
23
|
+
this.hasAdminPermissions = this.permissions.hasRole(Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN);
|
|
24
24
|
this.loadPackages();
|
|
25
25
|
}
|
|
26
26
|
loadPackages() {
|
|
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
47
47
|
type: Component,
|
|
48
48
|
args: [{ selector: 'c8y-packages-list', template: "<c8y-title>{{ 'Extensions' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [path]=\"'ecosystem/extension/extensions'\"\n [label]=\"'Extensions' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"hasAdminPermissions\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add extension package' | translate }}\"\n type=\"button\"\n (click)=\"addPackage()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add extension package' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"loadPackages()\"\n >\n <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(packages$ | async)?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#extensions\"></c8y-help>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n <div class=\"page-sticky-header hidden-xs d-flex\" *ngIf=\"(packages$ | async)?.length > 0\">\n <div class=\"card-block card-column-40\">\n <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n {{ 'Package' | translate }}\n </div>\n <div class=\"card-block p-0 card-column-80 m-r-40\">\n <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n <div class=\"card-block card-column-20\"></div>\n </div>\n </div>\n <div *ngFor=\"let app of packages$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n <c8y-application-card\n (onAppDeleted)=\"loadPackages()\"\n (onAppCloned)=\"loadPackages()\"\n [app]=\"app\"\n class=\"d-contents\"\n ></c8y-application-card>\n </div>\n</div>\n\n<c8y-ui-empty-state\n *ngIf=\"(packages$ | async)?.length === 0\"\n [icon]=\"'big-parcel'\"\n [title]=\"'No extensions to display.' | translate\"\n [subtitle]=\"hasAdminPermissions ? (emptyStateSubtitle | translate) : ''\"\n>\n <div *ngIf=\"hasAdminPermissions\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add extension package' | translate }}\"\n type=\"button\"\n (click)=\"addPackage()\"\n >\n {{ 'Add extension package' | translate }}\n </button>\n </div>\n</c8y-ui-empty-state>\n" }]
|
|
49
49
|
}], ctorParameters: function () { return [{ type: i1.EcosystemService }, { type: i2.WizardModalService }, { type: i2.Permissions }]; } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZXMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9lY29zeXN0ZW0vcGFja2FnZXMvcGFja2FnZS1saXN0L3BhY2thZ2VzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtbGlzdC9wYWNrYWdlcy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBTTFGLE1BQU0sT0FBTyxxQkFBcUI7SUFVaEMsWUFDVSxnQkFBa0MsRUFDbEMsa0JBQXNDLEVBQ3RDLFdBQXdCO1FBRnhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVpsQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFlBQU8sR0FBMEIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFJM0Qsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLHVCQUFrQixHQUFHLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ2xFLGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQU8xRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQ2xDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxFQUMvRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQ25DLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQ2pELFdBQVcsQ0FBQyxpQ0FBaUMsQ0FDOUMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLFlBQVksR0FBUTtZQUN4QixFQUFFLEVBQUUsZ0JBQWdCLENBQUMsY0FBYztTQUNwQyxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUM7UUFFcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOztrSEFsRFUscUJBQXFCO3NHQUFyQixxQkFBcUIseURDWmxDLGt4RkFtRkE7MkZEdkVhLHFCQUFxQjtrQkFKakMsU0FBUzsrQkFDRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCwgUGVybWlzc2lvbnMsIFdpemFyZE1vZGFsU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWNvc3lzdGVtU2VydmljZSwgRWNvc3lzdGVtV2l6YXJkcyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1wYWNrYWdlcy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhY2thZ2VzLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhY2thZ2VzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHJlbG9hZGluZyA9IGZhbHNlO1xuICByZWxvYWQkOiBCZWhhdmlvclN1YmplY3Q8dm9pZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIHBhY2thZ2VzJDogT2JzZXJ2YWJsZTxJQXBwbGljYXRpb24+O1xuICBsaXN0Q2xhc3M6IHN0cmluZztcbiAgaGFzQWRtaW5QZXJtaXNzaW9ucyA9IGZhbHNlO1xuICBlbXB0eVN0YXRlU3VidGl0bGUgPSBnZXR0ZXh0KCdBZGQgeW91ciBmaXJzdCBwYWNrYWdlIGJ5IGNsaWNraW5nIGJlbG93LicpO1xuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVjb3N5c3RlbVNlcnZpY2U6IEVjb3N5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB3aXphcmRNb2RhbFNlcnZpY2U6IFdpemFyZE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uc1xuICApIHtcbiAgICB0aGlzLnBhY2thZ2VzJCA9IHRoaXMucmVsb2FkJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgdGFwKCgpID0+ICh0aGlzLnJlbG9hZGluZyA9IHRydWUpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0UGFja2FnZUFwcGxpY2F0aW9ucygpKSxcbiAgICAgIHRhcCgoKSA9PiAodGhpcy5yZWxvYWRpbmcgPSBmYWxzZSkpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5oYXNBZG1pblBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucy5oYXNSb2xlKFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX0FETUlOXG4gICAgKTtcbiAgICB0aGlzLmxvYWRQYWNrYWdlcygpO1xuICB9XG5cbiAgbG9hZFBhY2thZ2VzKCkge1xuICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gIH1cblxuICBhZGRQYWNrYWdlKCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogYW55ID0ge1xuICAgICAgaWQ6IEVjb3N5c3RlbVdpemFyZHMuUEFDS0FHRV9VUExPQURcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsT3B0aW9uczogTW9kYWxPcHRpb25zID0geyBpbml0aWFsU3RhdGUgfTtcblxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy53aXphcmRNb2RhbFNlcnZpY2Uuc2hvdyhtb2RhbE9wdGlvbnMpO1xuICAgIG1vZGFsUmVmLmNvbnRlbnQub25DbG9zZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkUGFja2FnZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgJ0V4dGVuc2lvbnMnIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2ljb25dPVwiJ2M4eS1hdG9tJ1wiIFtsYWJlbF09XCInRWNvc3lzdGVtJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYmlnLXBhcmNlbCdcIlxuICAgIFtwYXRoXT1cIidlY29zeXN0ZW0vZXh0ZW5zaW9uL2V4dGVuc2lvbnMnXCJcbiAgICBbbGFiZWxdPVwiJ0V4dGVuc2lvbnMnIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiICpuZ0lmPVwiaGFzQWRtaW5QZXJtaXNzaW9uc1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ0FkZCBleHRlbnNpb24gcGFja2FnZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJhZGRQYWNrYWdlKClcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgIHt7ICdBZGQgZXh0ZW5zaW9uIHBhY2thZ2UnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwibG9hZFBhY2thZ2VzKClcIlxuICA+XG4gICAgPGkgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogcmVsb2FkaW5nIH1cIiBjOHlJY29uPVwicmVmcmVzaFwiPjwvaT5cbiAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCInbGVmdCdcIiBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybSBoaWRkZW4teHNcIj5cbiAgPGM4eS1saXN0LWRpc3BsYXktc3dpdGNoXG4gICAgKG9uTGlzdENsYXNzQ2hhbmdlKT1cImxpc3RDbGFzcyA9ICRldmVudFwiXG4gICAgW2xpc3RMZW5ndGhdPVwiKHBhY2thZ2VzJCB8IGFzeW5jKT8ubGVuZ3RoXCJcbiAgPjwvYzh5LWxpc3QtZGlzcGxheS1zd2l0Y2g+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCBzcmM9XCIvdXNlcnMtZ3VpZGUvYWRtaW5pc3RyYXRpb24vI2V4dGVuc2lvbnNcIj48L2M4eS1oZWxwPlxuXG48ZGl2IFtuZ0NsYXNzXT1cImxpc3RDbGFzc1wiIGNsYXNzPVwiY2FyZC1ncm91cFwiPlxuICA8ZGl2IGNsYXNzPVwicGFnZS1zdGlja3ktaGVhZGVyIGhpZGRlbi14cyBkLWZsZXhcIiAqbmdJZj1cIihwYWNrYWdlcyQgfCBhc3luYyk/Lmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBjYXJkLWNvbHVtbi00MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYXBwaWNvbiBwLWwtMzIgcC1yLTE2IG0tci0wIG0tbC00XCI+PC9kaXY+XG4gICAgICB7eyAnUGFja2FnZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLTAgY2FyZC1jb2x1bW4tODAgbS1yLTQwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBjYXJkLWNvbHVtbi04MFwiPnt7ICdEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIGNhcmQtY29sdW1uLTIwXCI+e3sgJ1R5cGUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBjYXJkLWNvbHVtbi0yMFwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgYXBwIG9mIHBhY2thZ2VzJCB8IGFzeW5jXCIgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTQgY29sLW1kLTNcIj5cbiAgICA8Yzh5LWFwcGxpY2F0aW9uLWNhcmRcbiAgICAgIChvbkFwcERlbGV0ZWQpPVwibG9hZFBhY2thZ2VzKClcIlxuICAgICAgKG9uQXBwQ2xvbmVkKT1cImxvYWRQYWNrYWdlcygpXCJcbiAgICAgIFthcHBdPVwiYXBwXCJcbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgPjwvYzh5LWFwcGxpY2F0aW9uLWNhcmQ+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgKm5nSWY9XCIocGFja2FnZXMkIHwgYXN5bmMpPy5sZW5ndGggPT09IDBcIlxuICBbaWNvbl09XCInYmlnLXBhcmNlbCdcIlxuICBbdGl0bGVdPVwiJ05vIGV4dGVuc2lvbnMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cImhhc0FkbWluUGVybWlzc2lvbnMgPyAoZW1wdHlTdGF0ZVN1YnRpdGxlIHwgdHJhbnNsYXRlKSA6ICcnXCJcbj5cbiAgPGRpdiAqbmdJZj1cImhhc0FkbWluUGVybWlzc2lvbnNcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0aXRsZT1cInt7ICdBZGQgZXh0ZW5zaW9uIHBhY2thZ2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImFkZFBhY2thZ2UoKVwiXG4gICAgPlxuICAgICAge3sgJ0FkZCBleHRlbnNpb24gcGFja2FnZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiJdfQ==
|
|
@@ -30,7 +30,7 @@ export class PackageVersionsListComponent {
|
|
|
30
30
|
}
|
|
31
31
|
async ngOnInit() {
|
|
32
32
|
this.isLoading = true;
|
|
33
|
-
this.hasAdminPermissions = this.permissions.hasRole(
|
|
33
|
+
this.hasAdminPermissions = this.permissions.hasRole(Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN);
|
|
34
34
|
this.package = this.activatedRoute?.snapshot?.parent?.data?.contextData;
|
|
35
35
|
this.isPackageOwnedByCurrentTenant = this.ecosystemService.isOwner(this.package);
|
|
36
36
|
this.versionsLimit = (await this.optionsService.getSystemOption('application', 'versions.limit', DEFAULT_VERSIONS_LIMIT));
|
|
@@ -167,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
167
167
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.PluginsService }, { type: i3.EcosystemService }, { type: i4.TranslateService }, { type: i2.ModalService }, { type: i2.AlertService }, { type: i2.OptionsService }, { type: i2.Permissions }, { type: i2.GainsightService }]; }, propDecorators: { onVersionSelect: [{
|
|
168
168
|
type: Output
|
|
169
169
|
}] } });
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS12ZXJzaW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLXZlcnNpb25zL3BhY2thZ2UtdmVyc2lvbnMtbGlzdC9wYWNrYWdlLXZlcnNpb25zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZS12ZXJzaW9ucy1saXN0L3BhY2thZ2UtdmVyc2lvbnMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFDTCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEVBQ04sT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBRXZELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBTWxDLE1BQU0sT0FBTyw0QkFBNEI7SUFjdkMsWUFDVSxjQUE4QixFQUM5QixjQUE4QixFQUM5QixnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ2xDLEtBQW1CLEVBQ25CLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLFdBQXdCLEVBQ3hCLGdCQUFrQztRQVJsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFC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QUNSO1FBQ0QsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsaUJBQWlCO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhO2dCQUM3QyxDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDOzt5SEFqTVUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsa0hDdEJ6QywrN0dBNkZBOzJGRHZFYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMkJBQTJCOzRVQWUzQixlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJQXBwbGljYXRpb24sIElBcHBsaWNhdGlvblZlcnNpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEdhaW5zaWdodFNlcnZpY2UsXG4gIE1vZGFsU2VydmljZSxcbiAgT3B0aW9uc1NlcnZpY2UsXG4gIFBlcm1pc3Npb25zLFxuICBQbHVnaW5zU2VydmljZSxcbiAgU3RhdHVzLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRWNvc3lzdGVtU2VydmljZSwgUFJPRFVDVF9FWFBFUklFTkNFIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY29zeXN0ZW0vc2hhcmVkJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuY29uc3QgREVGQVVMVF9WRVJTSU9OU19MSU1JVCA9IDIwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcGFja2FnZS12ZXJzaW9ucy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhY2thZ2UtdmVyc2lvbnMtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUGFja2FnZVZlcnNpb25zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIENVUlJFTlRfTE9DQVRJT04gPSBsb2NhdGlvbi5ocmVmO1xuXG4gIHZlcnNpb25zTGltaXQ6IG51bWJlcjtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHBhY2thZ2U6IElBcHBsaWNhdGlvbjtcbiAgc29ydGVkVmVyc2lvbnM6IElBcHBsaWNhdGlvblZlcnNpb25bXTtcbiAgc2VsZWN0ZWRWZXJzaW9uOiBzdHJpbmc7XG4gIHByZVVwbG9hZENhbGxiYWNrOiAoKSA9PiBQcm9taXNlPGFueT47XG4gIGhhc0FkbWluUGVybWlzc2lvbnMgPSBmYWxzZTtcbiAgaXNQYWNrYWdlT3duZWRCeUN1cnJlbnRUZW5hbnQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgb25WZXJzaW9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWNvc3lzdGVtU2VydmljZTogRWNvc3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5oYXNBZG1pblBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucy5oYXNSb2xlKCdST0xFX0FQUExJQ0FUSU9OX01BTkFHRU1FTlRfQURNSU4nKTtcbiAgICB0aGlzLnBhY2thZ2UgPSB0aGlzLmFjdGl2YXRlZFJvdXRlPy5zbmFwc2hvdD8ucGFyZW50Py5kYXRhPy5jb250ZXh0RGF0YTtcbiAgICB0aGlzLmlzUGFja2FnZU93bmVkQnlDdXJyZW50VGVuYW50ID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzT3duZXIodGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLnZlcnNpb25zTGltaXQgPSAoYXdhaXQgdGhpcy5vcHRpb25zU2VydmljZS5nZXRTeXN0ZW1PcHRpb24oXG4gICAgICAnYXBwbGljYXRpb24nLFxuICAgICAgJ3ZlcnNpb25zLmxpbWl0JyxcbiAgICAgIERFRkFVTFRfVkVSU0lPTlNfTElNSVRcbiAgICApKSBhcyBudW1iZXI7XG4gICAgdGhpcy5zb3J0VmVyc2lvbnMoKTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZG93bmxvYWRBcmNoaXZlKGFwcFZlcnNpb246IElBcHBsaWNhdGlvblZlcnNpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfVkVSU0lPTlMsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5ET1dOTE9BRCxcbiAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgfSk7XG4gICAgY29uc3QgYXJjaGl2ZU1PID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmdldEFyY2hpdmVNYW5hZ2VkT2JqZWN0KGFwcFZlcnNpb24uYmluYXJ5SWQpO1xuICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5kb3dubG9hZEFyY2hpdmUodGhpcy5wYWNrYWdlLCB7XG4gICAgICBpZDogYXBwVmVyc2lvbi5iaW5hcnlJZCxcbiAgICAgIG5hbWU6IGFyY2hpdmVNTy5uYW1lXG4gICAgfSk7XG4gIH1cblxuICBwYWNrYWdlVmVyc2lvblVwbG9hZGVkKCkge1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGEgPSB0aGlzLnBhY2thZ2U7XG4gICAgdGhpcy5zb3J0VmVyc2lvbnMoKTtcbiAgICB0aGlzLnNldFVwbG9hZGVkVmVyc2lvbkFzTGF0ZXN0KCk7XG4gIH1cblxuICBzZWxlY3RWZXJzaW9uKHZlcnNpb246IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy5vblZlcnNpb25TZWxlY3QuZW1pdCh2ZXJzaW9uKTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVZlcnNpb25QYWNrYWdlKHZlcnNpb246IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZGVsZXRlUGFja2FnZVZlcnNpb24odGhpcy5wYWNrYWdlLCB7IHZlcnNpb24gfSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdQYWNrYWdlIHZlcnNpb24ge3t2ZXJzaW9ufX0gaGFzIGJlZW4gcmVtb3ZlZCcpLCB7XG4gICAgICAgICAgdmVyc2lvblxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5FVkVOVFMuUEFDS0FHRV9WRVJTSU9OUywge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5ERUxFVEUsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNVQ0NFU1MsXG4gICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLkRFTEVURSxcbiAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuU0VSVkVSX0ZBSUxVUkUsXG4gICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHZlcnNpb24gPT09IHRoaXMuc2VsZWN0ZWRWZXJzaW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdFZlcnNpb24obnVsbCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucmVmcmVzaFBhY2thZ2UoKTtcbiAgfVxuXG4gIGFzeW5jIHNldFZlcnNpb25Bc0xhdGVzdChhcHBWZXJzaW9uOiBJQXBwbGljYXRpb25WZXJzaW9uKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5zZXRQYWNrYWdlVmVyc2lvblRhZyh0aGlzLnBhY2thZ2UsIGFwcFZlcnNpb24udmVyc2lvbiwgW1xuICAgICAgICAuLi5hcHBWZXJzaW9uLnRhZ3MsXG4gICAgICAgICdsYXRlc3QnXG4gICAgICBdKTtcblxuICAgICAgLy8gVE9ETyBhZGRlZCBpdCBkdWUgdG86IGh0dHBzOi8vY3VtdWxvY2l0eS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9NVE0tNDg1NTNcbiAgICAgIC8vIFJlbW92ZSBpdCB3aGVuIEJFIGZpeGVzIGlzc3VlcyB3aXRoIGFjdGl2ZVZlcnNpb24uXG4gICAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2Uuc2V0QXBwQWN0aXZlVmVyc2lvbih0aGlzLnBhY2thZ2UsIGFwcFZlcnNpb24uYmluYXJ5SWQpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdUYWcgaGFzIGJlZW4gc2V0LicpKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5FVkVOVFMuUEFDS0FHRV9WRVJTSU9OUywge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5TRVRfQVNfTEFURVNULFxuICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5TVUNDRVNTLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5FVkVOVFMuUEFDS0FHRV9WRVJTSU9OUywge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5TRVRfQVNfTEFURVNULFxuICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5TRVJWRVJfRkFJTFVSRSxcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnJlZnJlc2hQYWNrYWdlKCk7XG4gIH1cblxuICBhc3luYyBhY2tub3dsZWRnZUxpbWl0UmVhY2hlZCgpIHtcbiAgICBhd2FpdCB0aGlzLm1vZGFsLmFja25vd2xlZGdlKFxuICAgICAgZ2V0dGV4dCgnUGFja2FnZSBsaW1pdCBleGNlZWRlZCcpLFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgJ1lvdSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHt7IHZlcnNpb25zTGltaXQgfX0gcGFja2FnZSB2ZXJzaW9ucy4gVG8gYWRkIGFub3RoZXIgdmVyc2lvbiwgZmlyc3QgZGVsZXRlIG9uZSBmcm9tIHRoZSBsaXN0LidcbiAgICAgICAgKSxcbiAgICAgICAgeyB2ZXJzaW9uc0xpbWl0OiB0aGlzLnZlcnNpb25zTGltaXQgfVxuICAgICAgKSxcbiAgICAgIFN0YXR1cy5JTkZPLFxuICAgICAgZ2V0dGV4dCgnQ2xvc2UnKVxuICAgICk7XG4gICAgdGhyb3cgdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoUGFja2FnZSgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5wYWNrYWdlID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmdldEFwcGxpY2F0aW9uKHRoaXMucGFja2FnZS5pZCk7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YSA9IHRoaXMucGFja2FnZTtcbiAgICB0aGlzLnNvcnRWZXJzaW9ucygpO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHNvcnRWZXJzaW9ucygpIHtcbiAgICB0aGlzLnNvcnRlZFZlcnNpb25zID0gdGhpcy5wbHVnaW5zU2VydmljZS5zb3J0VmVyc2lvbnMoXG4gICAgICB7XG4gICAgICAgIGxpc3Q6IHRoaXMucGFja2FnZS5hcHBsaWNhdGlvblZlcnNpb25zLFxuICAgICAgICBwYXRoOiBbJ3ZlcnNpb24nXVxuICAgICAgfSxcbiAgICAgICdkZXNjJ1xuICAgICk7XG4gICAgdGhpcy50b2dnbGVVcGxvYWRQb3NzaWJpbGl0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRVcGxvYWRlZFZlcnNpb25Bc0xhdGVzdCgpIHtcbiAgICBjb25zdCB1cGxvYWRlZFZlcnNpb24gPVxuICAgICAgdGhpcy5wYWNrYWdlLmFwcGxpY2F0aW9uVmVyc2lvbnNbdGhpcy5wYWNrYWdlLmFwcGxpY2F0aW9uVmVyc2lvbnMubGVuZ3RoIC0gMV07XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5FVkVOVFMuUEFDS0FHRV9WRVJTSU9OUywge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5VUExPQUQsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNVQ0NFU1MsXG4gICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgZ2V0dGV4dCgnVXBsb2FkIHN1Y2Nlc3NmdWwnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAgICdEbyB5b3Ugd2FudCB0byBzZXQgdmVyc2lvbiB7e3ZlcnNpb259fSBhcyB0aGUgbGF0ZXN0PyBEZXBsb3lpbmcgYSBuZXcgYXBwIHdpbGwgYWx3YXlzIHVzZSB0aGlzIHZlcnNpb24uJ1xuICAgICAgICAgICksXG4gICAgICAgICAgeyB2ZXJzaW9uOiB1cGxvYWRlZFZlcnNpb24udmVyc2lvbiB9XG4gICAgICAgICksXG4gICAgICAgIFN0YXR1cy5TVUNDRVNTLFxuICAgICAgICB7XG4gICAgICAgICAgb2s6IGdldHRleHQoJ1NldCBhcyBsYXRlc3RgdmVyc2lvbmAnKSxcbiAgICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0tlZXAgdW5jaGFuZ2VkYHZlcnNpb25gJylcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBvbiBjYW5jZWw6IGRvIG5vdGhpbmdcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5zZXRWZXJzaW9uQXNMYXRlc3QodXBsb2FkZWRWZXJzaW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlVXBsb2FkUG9zc2liaWxpdHkoKSB7XG4gICAgdGhpcy5wcmVVcGxvYWRDYWxsYmFjayA9XG4gICAgICB0aGlzLnNvcnRlZFZlcnNpb25zLmxlbmd0aCA8IHRoaXMudmVyc2lvbnNMaW1pdFxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB0aGlzLmFja25vd2xlZGdlTGltaXRSZWFjaGVkLmJpbmQodGhpcyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgc3BsaXQtdmlld19fbGlzdFwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yIHN0aWNreS10b3AgYmctY29tcG9uZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIiB0cmFuc2xhdGU+VmVyc2lvbnM8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImJnLWxldmVsLTEgZmxleC1ncm93XCI+XG4gICAgPGRpdiBjbGFzcz1cInAtMTZcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgPC9kaXY+XG4gICAgPHVsIGNsYXNzPVwibmF2IGM4eS1uYXYtc3RhY2tlZFwiICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwiYzh5LXN0YWNrZWQtaXRlbSBwLXQtMCBwLWItMCBwLXItNFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBzZWxlY3RlZFZlcnNpb24gPT09IGFwcGxpY2F0aW9uVmVyc2lvbi52ZXJzaW9uIH1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgYXBwbGljYXRpb25WZXJzaW9uIG9mIHNvcnRlZFZlcnNpb25zXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZmxleC1ncm93IGQtZmxleCBhLWktY2VudGVyIGdhcC00IHAtdC04IHAtYi04XCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VmVyc2lvbihhcHBsaWNhdGlvblZlcnNpb24udmVyc2lvbilcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImJpZy1wYXJjZWxcIiBjbGFzcz1cImljb24tMjBcIj48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsXCI+XG4gICAgICAgICAgICB7eyAnVmVyc2lvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW1lZGl1bVwiPnt7IGFwcGxpY2F0aW9uVmVyc2lvbi52ZXJzaW9uIH19PC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlIGQtZmxleCBqLWMtZW5kIGZsZXgtZ3JvdyBnYXAtNCBmbGV4LXdyYXAgbS1sLWF1dG9cIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCB0YWcgb2YgYXBwbGljYXRpb25WZXJzaW9uLnRhZ3NcIiBjbGFzcz1cImxhYmVsIGxhYmVsLWluZm9cIj5cbiAgICAgICAgICAgICAge3sgdGFnIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiBkcm9wZG93biAqbmdJZj1cImhhc0FkbWluUGVybWlzc2lvbnMgJiYgaXNQYWNrYWdlT3duZWRCeUN1cnJlbnRUZW5hbnRcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSBjOHktZHJvcGRvd25cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdTZXR0aW5ncycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgZHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjOHlJY29uPVwiZWxsaXBzaXMtdlwiPjwvaT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8dWwgKmRyb3Bkb3duTWVudSBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2V0IGFzIGxhdGVzdGB2ZXJzaW9uYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRWZXJzaW9uQXNMYXRlc3QoYXBwbGljYXRpb25WZXJzaW9uKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFwcGxpY2F0aW9uVmVyc2lvbi50YWdzPy5pbmNsdWRlcygnbGF0ZXN0JylcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNvbGxlY3RcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdTZXQgYXMgbGF0ZXN0YHZlcnNpb25gJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEb3dubG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEFyY2hpdmUoYXBwbGljYXRpb25WZXJzaW9uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZG93bmxvYWRcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEb3dubG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVZlcnNpb25QYWNrYWdlKGFwcGxpY2F0aW9uVmVyc2lvbi52ZXJzaW9uKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFwcGxpY2F0aW9uVmVyc2lvbi50YWdzPy5pbmNsdWRlcygnbGF0ZXN0JylcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInRyYXNoXCIgY2xhc3M9XCJtLXItNFwiPjwvaT5cbiAgICAgICAgICAgICAgICB7eyAnRGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImNhcmQtZm9vdGVyIHNlcGFyYXRvciBzdGlja3ktYm90dG9tXCJcbiAgICAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgaXNQYWNrYWdlT3duZWRCeUN1cnJlbnRUZW5hbnRcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbS1iLTBcIj5cbiAgICAgIDxsYWJlbCB0cmFuc2xhdGU+VXBsb2FkIGEgbmV3IHZlcnNpb248L2xhYmVsPlxuICAgICAgPGM4eS11cGxvYWQtYXJjaGl2ZVxuICAgICAgICBbKGFwcGxpY2F0aW9uKV09XCJwYWNrYWdlXCJcbiAgICAgICAgW3VwbG9hZE5ld1ZlcnNpb25dPVwidHJ1ZVwiXG4gICAgICAgIChyZWZyZXNoKT1cInBhY2thZ2VWZXJzaW9uVXBsb2FkZWQoKVwiXG4gICAgICAgIFtwcmVVcGxvYWRDYWxsYmFja109XCJwcmVVcGxvYWRDYWxsYmFja1wiXG4gICAgICA+PC9jOHktdXBsb2FkLWFyY2hpdmU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS12ZXJzaW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLXZlcnNpb25zL3BhY2thZ2UtdmVyc2lvbnMtbGlzdC9wYWNrYWdlLXZlcnNpb25zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZS12ZXJzaW9ucy1saXN0L3BhY2thZ2UtdmVyc2lvbnMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFDTCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEVBQ04sT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBRXZELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBTWxDLE1BQU0sT0FBTyw0QkFBNEI7SUFjdkMsWUFDVSxjQUE4QixFQUM5QixjQUE4QixFQUM5QixnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ2xDLEtBQW1CLEVBQ25CLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLFdBQXdCLEVBQ3hCLGdCQUFrQztRQVJsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFC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QUN4QixPQUFPO1NBQ1I7UUFDRCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxpQkFBaUI7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWE7Z0JBQzdDLENBQUMsQ0FBQyxJQUFJO2dCQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7O3lIQW5NVSw0QkFBNEI7NkdBQTVCLDRCQUE0QixrSEN0QnpDLCs3R0E2RkE7MkZEdkVhLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDRSwyQkFBMkI7NFVBZTNCLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbiwgSUFwcGxpY2F0aW9uVmVyc2lvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgTW9kYWxTZXJ2aWNlLFxuICBPcHRpb25zU2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIFBsdWdpbnNTZXJ2aWNlLFxuICBTdGF0dXMsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBFY29zeXN0ZW1TZXJ2aWNlLCBQUk9EVUNUX0VYUEVSSUVOQ0UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5jb25zdCBERUZBVUxUX1ZFUlNJT05TX0xJTUlUID0gMjA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1wYWNrYWdlLXZlcnNpb25zLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFja2FnZS12ZXJzaW9ucy1saXN0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQYWNrYWdlVmVyc2lvbnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQ1VSUkVOVF9MT0NBVElPTiA9IGxvY2F0aW9uLmhyZWY7XG5cbiAgdmVyc2lvbnNMaW1pdDogbnVtYmVyO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgcGFja2FnZTogSUFwcGxpY2F0aW9uO1xuICBzb3J0ZWRWZXJzaW9uczogSUFwcGxpY2F0aW9uVmVyc2lvbltdO1xuICBzZWxlY3RlZFZlcnNpb246IHN0cmluZztcbiAgcHJlVXBsb2FkQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8YW55PjtcbiAgaGFzQWRtaW5QZXJtaXNzaW9ucyA9IGZhbHNlO1xuICBpc1BhY2thZ2VPd25lZEJ5Q3VycmVudFRlbmFudCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvblZlcnNpb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBwbHVnaW5zU2VydmljZTogUGx1Z2luc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmhhc0FkbWluUGVybWlzc2lvbnMgPSB0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0FQUExJQ0FUSU9OX01BTkFHRU1FTlRfQURNSU5cbiAgICApO1xuICAgIHRoaXMucGFja2FnZSA9IHRoaXMuYWN0aXZhdGVkUm91dGU/LnNuYXBzaG90Py5wYXJlbnQ/LmRhdGE/LmNvbnRleHREYXRhO1xuICAgIHRoaXMuaXNQYWNrYWdlT3duZWRCeUN1cnJlbnRUZW5hbnQgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNPd25lcih0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMudmVyc2lvbnNMaW1pdCA9IChhd2FpdCB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldFN5c3RlbU9wdGlvbihcbiAgICAgICdhcHBsaWNhdGlvbicsXG4gICAgICAndmVyc2lvbnMubGltaXQnLFxuICAgICAgREVGQVVMVF9WRVJTSU9OU19MSU1JVFxuICAgICkpIGFzIG51bWJlcjtcbiAgICB0aGlzLnNvcnRWZXJzaW9ucygpO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyBkb3dubG9hZEFyY2hpdmUoYXBwVmVyc2lvbjogSUFwcGxpY2F0aW9uVmVyc2lvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5FVkVOVFMuUEFDS0FHRV9WRVJTSU9OUywge1xuICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUEFDS0FHRV9WRVJTSU9OUyxcbiAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLkRPV05MT0FELFxuICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICB9KTtcbiAgICBjb25zdCBhcmNoaXZlTU8gPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXJjaGl2ZU1hbmFnZWRPYmplY3QoYXBwVmVyc2lvbi5iaW5hcnlJZCk7XG4gICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmRvd25sb2FkQXJjaGl2ZSh0aGlzLnBhY2thZ2UsIHtcbiAgICAgIGlkOiBhcHBWZXJzaW9uLmJpbmFyeUlkLFxuICAgICAgbmFtZTogYXJjaGl2ZU1PLm5hbWVcbiAgICB9KTtcbiAgfVxuXG4gIHBhY2thZ2VWZXJzaW9uVXBsb2FkZWQoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YSA9IHRoaXMucGFja2FnZTtcbiAgICB0aGlzLnNvcnRWZXJzaW9ucygpO1xuICAgIHRoaXMuc2V0VXBsb2FkZWRWZXJzaW9uQXNMYXRlc3QoKTtcbiAgfVxuXG4gIHNlbGVjdFZlcnNpb24odmVyc2lvbjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRWZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLm9uVmVyc2lvblNlbGVjdC5lbWl0KHZlcnNpb24pO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlVmVyc2lvblBhY2thZ2UodmVyc2lvbjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5kZWxldGVQYWNrYWdlVmVyc2lvbih0aGlzLnBhY2thZ2UsIHsgdmVyc2lvbiB9KTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1BhY2thZ2UgdmVyc2lvbiB7e3ZlcnNpb259fSBoYXMgYmVlbiByZW1vdmVkJyksIHtcbiAgICAgICAgICB2ZXJzaW9uXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLkRFTEVURSxcbiAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuU1VDQ0VTUyxcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfVkVSU0lPTlMsIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUEFDS0FHRV9WRVJTSU9OUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuREVMRVRFLFxuICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5TRVJWRVJfRkFJTFVSRSxcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodmVyc2lvbiA9PT0gdGhpcy5zZWxlY3RlZFZlcnNpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0VmVyc2lvbihudWxsKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoUGFja2FnZSgpO1xuICB9XG5cbiAgYXN5bmMgc2V0VmVyc2lvbkFzTGF0ZXN0KGFwcFZlcnNpb246IElBcHBsaWNhdGlvblZlcnNpb24pIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnNldFBhY2thZ2VWZXJzaW9uVGFnKHRoaXMucGFja2FnZSwgYXBwVmVyc2lvbi52ZXJzaW9uLCBbXG4gICAgICAgIC4uLmFwcFZlcnNpb24udGFncyxcbiAgICAgICAgJ2xhdGVzdCdcbiAgICAgIF0pO1xuXG4gICAgICAvLyBUT0RPIGFkZGVkIGl0IGR1ZSB0bzogaHR0cHM6Ly9jdW11bG9jaXR5LmF0bGFzc2lhbi5uZXQvYnJvd3NlL01UTS00ODU1M1xuICAgICAgLy8gUmVtb3ZlIGl0IHdoZW4gQkUgZml4ZXMgaXNzdWVzIHdpdGggYWN0aXZlVmVyc2lvbi5cbiAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5zZXRBcHBBY3RpdmVWZXJzaW9uKHRoaXMucGFja2FnZSwgYXBwVmVyc2lvbi5iaW5hcnlJZCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ1RhZyBoYXMgYmVlbiBzZXQuJykpO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlNFVF9BU19MQVRFU1QsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNVQ0NFU1MsXG4gICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlNFVF9BU19MQVRFU1QsXG4gICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNFUlZFUl9GQUlMVVJFLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucmVmcmVzaFBhY2thZ2UoKTtcbiAgfVxuXG4gIGFzeW5jIGFja25vd2xlZGdlTGltaXRSZWFjaGVkKCkge1xuICAgIGF3YWl0IHRoaXMubW9kYWwuYWNrbm93bGVkZ2UoXG4gICAgICBnZXR0ZXh0KCdQYWNrYWdlIGxpbWl0IGV4Y2VlZGVkJyksXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnWW91IGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2Yge3sgdmVyc2lvbnNMaW1pdCB9fSBwYWNrYWdlIHZlcnNpb25zLiBUbyBhZGQgYW5vdGhlciB2ZXJzaW9uLCBmaXJzdCBkZWxldGUgb25lIGZyb20gdGhlIGxpc3QuJ1xuICAgICAgICApLFxuICAgICAgICB7IHZlcnNpb25zTGltaXQ6IHRoaXMudmVyc2lvbnNMaW1pdCB9XG4gICAgICApLFxuICAgICAgU3RhdHVzLklORk8sXG4gICAgICBnZXR0ZXh0KCdDbG9zZScpXG4gICAgKTtcbiAgICB0aHJvdyB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlZnJlc2hQYWNrYWdlKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnBhY2thZ2UgPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXBwbGljYXRpb24odGhpcy5wYWNrYWdlLmlkKTtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhID0gdGhpcy5wYWNrYWdlO1xuICAgIHRoaXMuc29ydFZlcnNpb25zKCk7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydFZlcnNpb25zKCkge1xuICAgIHRoaXMuc29ydGVkVmVyc2lvbnMgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLnNvcnRWZXJzaW9ucyhcbiAgICAgIHtcbiAgICAgICAgbGlzdDogdGhpcy5wYWNrYWdlLmFwcGxpY2F0aW9uVmVyc2lvbnMsXG4gICAgICAgIHBhdGg6IFsndmVyc2lvbiddXG4gICAgICB9LFxuICAgICAgJ2Rlc2MnXG4gICAgKTtcbiAgICB0aGlzLnRvZ2dsZVVwbG9hZFBvc3NpYmlsaXR5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldFVwbG9hZGVkVmVyc2lvbkFzTGF0ZXN0KCkge1xuICAgIGNvbnN0IHVwbG9hZGVkVmVyc2lvbiA9XG4gICAgICB0aGlzLnBhY2thZ2UuYXBwbGljYXRpb25WZXJzaW9uc1t0aGlzLnBhY2thZ2UuYXBwbGljYXRpb25WZXJzaW9ucy5sZW5ndGggLSAxXTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1ZFUlNJT05TLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlVQTE9BRCxcbiAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuU1VDQ0VTUyxcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdVcGxvYWQgc3VjY2Vzc2Z1bCcpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICAgJ0RvIHlvdSB3YW50IHRvIHNldCB2ZXJzaW9uIHt7dmVyc2lvbn19IGFzIHRoZSBsYXRlc3Q/IERlcGxveWluZyBhIG5ldyBhcHAgd2lsbCBhbHdheXMgdXNlIHRoaXMgdmVyc2lvbi4nXG4gICAgICAgICAgKSxcbiAgICAgICAgICB7IHZlcnNpb246IHVwbG9hZGVkVmVyc2lvbi52ZXJzaW9uIH1cbiAgICAgICAgKSxcbiAgICAgICAgU3RhdHVzLlNVQ0NFU1MsXG4gICAgICAgIHtcbiAgICAgICAgICBvazogZ2V0dGV4dCgnU2V0IGFzIGxhdGVzdGB2ZXJzaW9uYCcpLFxuICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnS2VlcCB1bmNoYW5nZWRgdmVyc2lvbmAnKVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG9uIGNhbmNlbDogZG8gbm90aGluZ1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnNldFZlcnNpb25Bc0xhdGVzdCh1cGxvYWRlZFZlcnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVVcGxvYWRQb3NzaWJpbGl0eSgpIHtcbiAgICB0aGlzLnByZVVwbG9hZENhbGxiYWNrID1cbiAgICAgIHRoaXMuc29ydGVkVmVyc2lvbnMubGVuZ3RoIDwgdGhpcy52ZXJzaW9uc0xpbWl0XG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHRoaXMuYWNrbm93bGVkZ2VMaW1pdFJlYWNoZWQuYmluZCh0aGlzKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBzcGxpdC12aWV3X19saXN0XCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3Igc3RpY2t5LXRvcCBiZy1jb21wb25lbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiIHRyYW5zbGF0ZT5WZXJzaW9uczwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYmctbGV2ZWwtMSBmbGV4LWdyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNlwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgICA8dWwgY2xhc3M9XCJuYXYgYzh5LW5hdi1zdGFja2VkXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJjOHktc3RhY2tlZC1pdGVtIHAtdC0wIHAtYi0wIHAtci00XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHNlbGVjdGVkVmVyc2lvbiA9PT0gYXBwbGljYXRpb25WZXJzaW9uLnZlcnNpb24gfVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBhcHBsaWNhdGlvblZlcnNpb24gb2Ygc29ydGVkVmVyc2lvbnNcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmbGV4LWdyb3cgZC1mbGV4IGEtaS1jZW50ZXIgZ2FwLTQgcC10LTggcC1iLThcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RWZXJzaW9uKGFwcGxpY2F0aW9uVmVyc2lvbi52ZXJzaW9uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwiYmlnLXBhcmNlbFwiIGNsYXNzPVwiaWNvbi0yMFwiPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGxcIj5cbiAgICAgICAgICAgIHt7ICdWZXJzaW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbWVkaXVtXCI+e3sgYXBwbGljYXRpb25WZXJzaW9uLnZlcnNpb24gfX08L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgZC1mbGV4IGotYy1lbmQgZmxleC1ncm93IGdhcC00IGZsZXgtd3JhcCBtLWwtYXV0b1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHRhZyBvZiBhcHBsaWNhdGlvblZlcnNpb24udGFnc1wiIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mb1wiPlxuICAgICAgICAgICAgICB7eyB0YWcgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiIGRyb3Bkb3duICpuZ0lmPVwiaGFzQWRtaW5QZXJtaXNzaW9ucyAmJiBpc1BhY2thZ2VPd25lZEJ5Q3VycmVudFRlbmFudFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGM4eS1kcm9wZG93blwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJlbGxpcHNpcy12XCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCI+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTZXQgYXMgbGF0ZXN0YHZlcnNpb25gJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFZlcnNpb25Bc0xhdGVzdChhcHBsaWNhdGlvblZlcnNpb24pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXBwbGljYXRpb25WZXJzaW9uLnRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiY29sbGVjdFwiIGNsYXNzPVwibS1yLTRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ1NldCBhcyBsYXRlc3RgdmVyc2lvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXJjaGl2ZShhcHBsaWNhdGlvblZlcnNpb24pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJkb3dubG9hZFwiIGNsYXNzPVwibS1yLTRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlVmVyc2lvblBhY2thZ2UoYXBwbGljYXRpb25WZXJzaW9uLnZlcnNpb24pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXBwbGljYXRpb25WZXJzaW9uLnRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwidHJhc2hcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEZWxldGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yIHN0aWNreS1ib3R0b21cIlxuICAgICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBpc1BhY2thZ2VPd25lZEJ5Q3VycmVudFRlbmFudFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtLWItMFwiPlxuICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5VcGxvYWQgYSBuZXcgdmVyc2lvbjwvbGFiZWw+XG4gICAgICA8Yzh5LXVwbG9hZC1hcmNoaXZlXG4gICAgICAgIFsoYXBwbGljYXRpb24pXT1cInBhY2thZ2VcIlxuICAgICAgICBbdXBsb2FkTmV3VmVyc2lvbl09XCJ0cnVlXCJcbiAgICAgICAgKHJlZnJlc2gpPVwicGFja2FnZVZlcnNpb25VcGxvYWRlZCgpXCJcbiAgICAgICAgW3ByZVVwbG9hZENhbGxiYWNrXT1cInByZVVwbG9hZENhbGxiYWNrXCJcbiAgICAgID48L2M4eS11cGxvYWQtYXJjaGl2ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|