@alauda-fe/network 1.0.2 → 1.0.4

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.
@@ -292,7 +292,7 @@ __decorate([
292
292
  ServicePortsFieldsetComponent,
293
293
  ReadonlyFieldDirective,
294
294
  DisabledDirective,
295
- ], template: "<form\n auiForm\n [formGroup]=\"form\"\n>\n <ng-container formGroupName=\"metadata\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n [aclReadonlyField]=\"isUpdate\"\n aui-input\n auiFormItemControl\n required\n name=\"name\"\n formControlName=\"name\"\n [placeholder]=\"K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['metadata', 'name']).errors\"\n [errorsMapper]=\"{\n pattern: K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\n }\"\n ></acl-errors-mapper>\n </aui-form-item>\n\n <aui-form-item\n width=\"large\"\n formGroupName=\"annotations\"\n >\n <label auiFormItemLabel>{{ 'display_name' | translate }}</label>\n <input\n auiFormItemControl\n aui-input\n [formControlName]=\"displayNameKey\"\n />\n </aui-form-item>\n </ng-container>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'type' | translate }}</label>\n <aui-radio-group formControlName=\"type\">\n <aui-radio-button\n *ngFor=\"let option of types$ | async\"\n [value]=\"option\"\n >\n {{ option }}\n </aui-radio-button>\n </aui-radio-group>\n <div\n auiFormItemHint\n *ngIf=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n >\n {{ 'network.service_external_name_hint' | translate }}\n </div>\n </aui-form-item>\n\n <aui-form-item\n formGroupName=\"spec\"\n width=\"large\"\n class=\"last-form-item-no-margin\"\n [hidden]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n >\n <label auiFormItemLabel>\n {{ 'network.service_external_name_mapping_domain' | translate }}\n </label>\n <input\n type=\"text\"\n aui-input\n auiFormItemControl\n [aclDisabled]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n [required]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n formControlName=\"externalName\"\n [pattern]=\"DOMAIN_PATTERN.pattern\"\n [placeholder]=\"\n 'network.service_external_name_domain_placeholder' | translate\n \"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['spec', 'externalName']).errors\"\n [errorsMapper]=\"{\n pattern: DOMAIN_PATTERN.tip | translate\n }\"\n >\n </acl-errors-mapper>\n </aui-form-item>\n\n <!-- ExternalName \u7C7B\u578B\u65F6\u9690\u85CF\u5176\u4ED6\u5C5E\u6027 -->\n <div [hidden]=\"form.get(['spec', 'type']).value === 'ExternalName'\">\n <aui-form-item>\n <label auiFormItemLabel>{{ 'network.virtual_ip' | translate }}</label>\n <aui-switch\n formControlName=\"virtualIp\"\n (valueChange)=\"onVirtualIpChange($event)\"\n ></aui-switch>\n <div auiFormItemAddon>\n <aui-icon\n [auiTooltip]=\"'network.virtual_ip_hint' | translate\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n </aui-form-item>\n\n <!-- \u81EA\u5B9A\u4E49 Controls -->\n <ng-content></ng-content>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'network.port' | translate }}</label>\n <acl-service-ports-fieldset\n class=\"tw-w-full\"\n auiFormItemControl\n [required]=\"!!form.get('virtualIp').value\"\n [aclDisabled]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n name=\"ports\"\n formControlName=\"ports\"\n [serviceType]=\"form.get(['spec', 'type']).value\"\n [containerPortSuggestions]=\"containerPortSuggestions\"\n [targetComponent]=\"targetComponent\"\n ></acl-service-ports-fieldset>\n </aui-form-item>\n\n <aui-form-item class=\"last-form-item-no-margin\">\n <label auiFormItemLabel>{{\n 'network.session_affinity' | translate\n }}</label>\n <aui-switch formControlName=\"sessionPersistence\"></aui-switch>\n </aui-form-item>\n </div>\n</form>\n" }]
295
+ ], template: "<form\n auiForm\n [formGroup]=\"form\"\n>\n <ng-container formGroupName=\"metadata\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n [aclReadonlyField]=\"isUpdate\"\n aui-input\n auiFormItemControl\n required\n name=\"name\"\n formControlName=\"name\"\n [placeholder]=\"K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['metadata', 'name']).errors\"\n [errorsMapper]=\"{\n pattern: K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate,\n }\"\n ></acl-errors-mapper>\n </aui-form-item>\n\n <aui-form-item\n width=\"large\"\n formGroupName=\"annotations\"\n >\n <label auiFormItemLabel>{{ 'display_name' | translate }}</label>\n <input\n auiFormItemControl\n aui-input\n [formControlName]=\"displayNameKey\"\n />\n </aui-form-item>\n </ng-container>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'type' | translate }}</label>\n <aui-radio-group formControlName=\"type\">\n <aui-radio-button\n *ngFor=\"let option of types$ | async\"\n [value]=\"option\"\n >\n {{ option }}\n </aui-radio-button>\n </aui-radio-group>\n <div\n auiFormItemHint\n *ngIf=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n >\n {{ 'network.service_external_name_hint' | translate }}\n </div>\n </aui-form-item>\n\n <aui-form-item\n formGroupName=\"spec\"\n width=\"large\"\n class=\"last-form-item-no-margin\"\n [hidden]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n >\n <label auiFormItemLabel>\n {{ 'network.service_external_name_mapping_domain' | translate }}\n </label>\n <input\n type=\"text\"\n aui-input\n auiFormItemControl\n [aclDisabled]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n [required]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n formControlName=\"externalName\"\n [pattern]=\"DOMAIN_PATTERN.pattern\"\n [placeholder]=\"\n 'network.service_external_name_domain_placeholder' | translate\n \"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['spec', 'externalName']).errors\"\n [errorsMapper]=\"{\n pattern: DOMAIN_PATTERN.tip | translate,\n }\"\n >\n </acl-errors-mapper>\n </aui-form-item>\n\n <!-- ExternalName \u7C7B\u578B\u65F6\u9690\u85CF\u5176\u4ED6\u5C5E\u6027 -->\n <div [hidden]=\"form.get(['spec', 'type']).value === 'ExternalName'\">\n <aui-form-item>\n <label auiFormItemLabel>{{ 'network.virtual_ip' | translate }}</label>\n <aui-switch\n formControlName=\"virtualIp\"\n (valueChange)=\"onVirtualIpChange($event)\"\n ></aui-switch>\n <div auiFormItemAddon>\n <aui-icon\n [auiTooltip]=\"'network.virtual_ip_hint' | translate\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n </aui-form-item>\n\n <!-- \u81EA\u5B9A\u4E49 Controls -->\n <ng-content></ng-content>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'network.port' | translate }}</label>\n <acl-service-ports-fieldset\n class=\"tw-w-full\"\n auiFormItemControl\n [required]=\"!!form.get('virtualIp').value\"\n [aclDisabled]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n name=\"ports\"\n formControlName=\"ports\"\n [serviceType]=\"form.get(['spec', 'type']).value\"\n [containerPortSuggestions]=\"containerPortSuggestions\"\n [targetComponent]=\"targetComponent\"\n ></acl-service-ports-fieldset>\n </aui-form-item>\n\n <aui-form-item class=\"last-form-item-no-margin\">\n <label auiFormItemLabel>{{\n 'network.session_affinity' | translate\n }}</label>\n <aui-switch formControlName=\"sessionPersistence\"></aui-switch>\n </aui-form-item>\n </div>\n</form>\n" }]
296
296
  }], () => [{ type: i0.Injector }, { type: i1.K8sUtilService }, { type: i1.FeatureGateService }], { cluster: [{
297
297
  type: Input,
298
298
  args: [{ required: true }]
@@ -305,4 +305,4 @@ __decorate([
305
305
  type: Input
306
306
  }] }); })();
307
307
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(K8sServiceFormComponent, { className: "K8sServiceFormComponent", filePath: "lib/components/service-form/component.ts", lineNumber: 78 }); })();
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFFTCxZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsdUNBQXVDLEVBQ3ZDLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7OztJQ0gvRCw0Q0FHQztJQUNDLFlBQ0Y7SUFBQSxpQkFBbUI7OztJQUhqQixpQ0FBZ0I7SUFFaEIsY0FDRjtJQURFLDBDQUNGOzs7SUFFRiwrQkFHQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQU07O0lBREosY0FDRjtJQURFLDJGQUNGOztBRFBKLE1BQU0sb0JBQW9CLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsQ0FBQztBQU0vRSx3QkFBd0I7QUF5QnhCLE1BQU0sT0FBTyx1QkFDWCxTQUFRLDhCQUF5RDtJQWlEakUsWUFDRSxRQUFrQixFQUNELE9BQXVCLEVBQ3ZCLFdBQStCO1FBRWhELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUhDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQTFDbEQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQVMxQixvQkFBZSxHQUEwQyxVQUFVLENBQUM7UUFFcEUsNENBQXVDLEdBQ3JDLHVDQUF1QyxDQUFDO1FBRTFDLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLG1CQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFMUQsaUJBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUM1RCxFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixVQUFVLEVBQUUsQ0FDYixDQUFDO1FBRUYsV0FBTSxHQUFHLGFBQWEsQ0FBQztZQUNyQixJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxZQUFZO1lBQ2pCLElBQUksQ0FBQyxTQUFTO1NBQ2YsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxPQUFPLFdBQVc7Z0JBQ2hCLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFLLGNBQWMsQ0FBQztnQkFDckQsQ0FBQyxDQUFDLGFBQWE7Z0JBQ2YsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1FBQzNCLENBQUMsQ0FBQyxFQUNGLFVBQVUsRUFBRSxDQUNiLENBQUM7SUFRRixDQUFDO0lBRVEsZUFBZTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsUUFBUSxDQUFDLFlBQVk7YUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6RCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFakQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBRUQsSUFBSSxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVRLG1CQUFtQjtRQUMxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLFNBQVM7WUFDZixTQUFTLEVBQUUsSUFBSTtZQUNmLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxXQUFXO2dCQUNqQixLQUFLLEVBQUUsRUFBRTtnQkFDVCxZQUFZLEVBQUUsRUFBRTthQUNqQjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQyxrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTtvQkFDeEIsVUFBVSxDQUFDLFFBQVE7b0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN4QixVQUFVLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLE9BQU8sQ0FBQztpQkFDcEUsQ0FBQztnQkFDRixNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMzQixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7b0JBQ3pCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUU7aUJBQzFCLENBQUM7YUFDSCxDQUFDO1lBQ0YsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNsQixJQUFJLEVBQUUsV0FBVztnQkFDakIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsWUFBWSxFQUFFLEVBQUU7YUFDakIsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUSxjQUFjLENBQUMsRUFDdEIsU0FBUyxFQUNULGtCQUFrQixFQUNsQixHQUFHLFFBQVEsRUFDTTtRQUNqQixNQUFNLE9BQU8sR0FBRyxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDcEQsNkNBQTZDO1FBQzdDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDMUMsT0FBTyxDQUFDLElBQUksR0FBRztnQkFDYixJQUFJLEVBQUUsY0FBYztnQkFDcEIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWTthQUN6QyxDQUFDO1lBQ0YsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUNELG9EQUFvRDtRQUNwRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztRQUNELG9DQUFvQzthQUMvQixJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM3QixXQUFXO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDeEUsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVRLGtCQUFrQixDQUFDLFFBQWlCO1FBQzNDLE9BQU87WUFDTCxHQUFHLFFBQVE7WUFDWCxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEtBQUssTUFBTTtZQUMvQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGVBQWUsS0FBSyxVQUFVO1NBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBa0I7UUFDbEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUM3QixTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzt3RkF6S1UsdUJBQXVCO29FQUF2Qix1QkFBdUI7O1lDN0VwQywrQkFHQztZQUNDLGdDQUF1QztZQUVuQyxBQURGLHdDQUE2QixlQUNIO1lBQUEsWUFBd0I7O1lBQUEsaUJBQVE7WUFDeEQsMkJBUUU7O1lBQ0YsdUNBTXFCOztZQUN2QixpQkFBZ0I7WUFNZCxBQUpGLHlDQUdDLGdCQUN5QjtZQUFBLGFBQWdDOztZQUFBLGlCQUFRO1lBQ2hFLDRCQUlFO1lBQ0osaUJBQWdCOztZQUloQixBQURGLHlDQUFvQyxnQkFDVjtZQUFBLGFBQXdCOztZQUFBLGlCQUFRO1lBQ3hELDJDQUF3QztZQUN0QyxxR0FHQzs7WUFHSCxpQkFBa0I7WUFDbEIsMkVBR0M7WUFHSCxpQkFBZ0I7WUFRZCxBQU5GLDBDQUtDLGdCQUN5QjtZQUN0QixhQUNGOztZQUFBLGlCQUFRO1lBQ1IsNkJBV0U7O1lBQ0Ysd0NBT29COztZQUN0QixpQkFBZ0I7WUFLWixBQURGLEFBREYsZ0NBQW9FLHFCQUNuRCxnQkFDVztZQUFBLGFBQXNDOztZQUFBLGlCQUFRO1lBQ3RFLHVDQUdDO1lBREMsMkhBQWUsNkJBQXlCLElBQUM7WUFDMUMsaUJBQWE7WUFDZCxnQ0FBc0I7WUFDcEIsZ0NBS1k7O1lBRWhCLEFBREUsaUJBQU0sRUFDUTtZQUdoQixtQkFBeUI7WUFHdkIsQUFERix5Q0FBb0MsZ0JBQ1Y7WUFBQSxhQUFnQzs7WUFBQSxpQkFBUTtZQUNoRSxrREFVOEI7WUFDaEMsaUJBQWdCO1lBR2QsQUFERiwwQ0FBZ0QsZ0JBQ3RCO1lBQUEsYUFFdEI7O1lBQUEsaUJBQVE7WUFDVixrQ0FBOEQ7WUFHcEUsQUFERSxBQURFLGlCQUFnQixFQUNaLEVBQ0Q7O1lBaElMLG9DQUFrQjtZQUlVLGVBQXdCO1lBQXhCLG1EQUF3QjtZQUU5QyxlQUE2QjtZQU03QixBQU5BLCtDQUE2Qix1RkFNMEM7WUFJdkUsZUFBZ0Q7WUFDaEQsQUFEQSx5RUFBZ0QscUhBRzlDO1lBUW9CLGVBQWdDO1lBQWhDLDREQUFnQztZQUl0RCxlQUFrQztZQUFsQyxvREFBa0M7WUFNZCxlQUF3QjtZQUF4QixvREFBd0I7WUFHekIsZUFBaUI7WUFBakIsNERBQWlCO1lBUXJDLGVBQXlEO1lBQXpELHlGQUF5RDtZQVU1RCxjQUE4RDtZQUE5RCwyRkFBOEQ7WUFHNUQsZUFDRjtZQURFLHVHQUNGO1lBS0UsZUFBbUU7WUFJbkUsQUFEQSxBQUZBLEFBREEsZ0dBQW1FLGdGQUNILHVDQUU5QiwyRkFHakM7WUFJRCxlQUFvRDtZQUNwRCxBQURBLHlFQUFvRCw2RkFHbEQ7WUFNRCxlQUE4RDtZQUE5RCwyRkFBOEQ7WUFFdkMsZUFBc0M7WUFBdEMsa0VBQXNDO1lBTzFELGVBQW9EO1lBQ3BELEFBREEsOEVBQW9ELG9DQUNqQjtZQVdmLGVBQWdDO1lBQWhDLDREQUFnQztZQUl0RCxlQUEwQztZQU0xQyxBQURBLEFBREEsQUFIQSxBQURBLDREQUEwQyxtRkFDeUIsZ0VBR25CLDBEQUNLLHdDQUNsQjtZQUtiLGVBRXRCO1lBRnNCLHdFQUV0Qjs0QkRuRUosU0FBUztZQUNULFVBQVUsa0xBQ1YsV0FBVyxxQkFDWCxJQUFJO1lBQ0osS0FBSztZQUNMLFdBQVcscUlBQ1gsbUJBQW1CLCtEQUNuQixZQUFZLHNCQUNaLFVBQVUsc0NBRVYsV0FBVyxtREFDWCxhQUFhLGlEQUViLDZCQUE2QjtZQUM3QixzQkFBc0I7WUFDdEIsaUJBQWlCOztBQVduQjtJQURDLGVBQWUsRUFBRTs4QkFDUCxVQUFVO3lEQUFTO0FBTTlCO0lBREMsZUFBZSxFQUFFOzhCQUNOLFVBQVU7MERBQVU7aUZBZHJCLHVCQUF1QjtjQXhCbkMsU0FBUzs2QkFDSSxJQUFJLFlBQ04sc0JBQXNCLG1CQUVmLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7b0JBQ1AsU0FBUztvQkFDVCxVQUFVO29CQUNWLFdBQVc7b0JBQ1gsSUFBSTtvQkFDSixLQUFLO29CQUNMLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsZ0JBQWdCO29CQUNoQixXQUFXO29CQUNYLGFBQWE7b0JBQ2Isb0JBQW9CO29CQUNwQiw2QkFBNkI7b0JBQzdCLHNCQUFzQjtvQkFDdEIsaUJBQWlCO2lCQUNsQjt1R0FPRCxPQUFPO2tCQUROLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBSXpCLFFBQVEsTUFHUixRQUFRO2tCQURQLEtBQUs7WUFJTixTQUFTLE1BR1Qsd0JBQXdCO2tCQUR2QixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixlQUFlO2tCQURkLEtBQUs7O2tGQW5CSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGb3JtTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgUmFkaW9Nb2R1bGUsXG4gIFN3aXRjaE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBDb250YWluZXJQb3J0LFxuICBESVNQTEFZX05BTUUsXG4gIFNFUlZJQ0VfVFlQRVMsXG4gIEZlYXR1cmVHYXRlU2VydmljZSxcbiAgSzhzVXRpbFNlcnZpY2UsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgcHVibGlzaFJlZixcbiAgU2VydmljZSxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIERpc2FibGVkRGlyZWN0aXZlLFxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFksXG4gIERPTUFJTl9QQVRURVJOLFxuICBTZXJ2aWNlVHlwZU1ldGEsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlRm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnbmctcmVzb3VyY2UtZm9ybS11dGlsJztcbmltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNlcnZpY2VQb3J0c0ZpZWxkc2V0Q29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHNldC9jb21wb25lbnQnO1xuXG5jb25zdCBOT05fTEJfU0VSVklDRV9UWVBFUyA9IFNFUlZJQ0VfVFlQRVMuZmlsdGVyKG9wID0+IG9wICE9PSAnTG9hZEJhbGFuY2VyJyk7XG5pbnRlcmZhY2UgU2VydmljZUZvcm1Nb2RlbCBleHRlbmRzIFNlcnZpY2Uge1xuICB2aXJ0dWFsSXA/OiBib29sZWFuOyAvLyDomZrmi58gaXDvvIzkuLogZmFsc2Ug5pe26ZyA6KaB6K6+572uIHNwZWMuY2x1c3RlcklwOiBOb25lXG4gIHNlc3Npb25QZXJzaXN0ZW5jZT86IGJvb2xlYW47IC8vIOS8muivneS/neaMge+8jOWvueW6lCBzcGVjLnNlc3Npb25BZmZpbml0eTogQ2xpZW50SVAvTm9uZVxufVxuXG4vLyBLOHMgYmFzZSBzZXJ2aWNlIGZvcm1cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1rOHMtc2VydmljZS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTmdGb3IsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTd2l0Y2hNb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIFJhZGlvTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gICAgU2VydmljZVBvcnRzRmllbGRzZXRDb21wb25lbnQsXG4gICAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgICBEaXNhYmxlZERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSzhzU2VydmljZUZvcm1Db21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlUmVzb3VyY2VGb3JtR3JvdXBDb21wb25lbnQ8U2VydmljZSwgU2VydmljZUZvcm1Nb2RlbD5cbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0XG57XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGNsdXN0ZXI6IHN0cmluZztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgY2x1c3RlciQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgQElucHV0KClcbiAgaXNVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgaXNVcGRhdGUkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb250YWluZXJQb3J0U3VnZ2VzdGlvbnM6IENvbnRhaW5lclBvcnRbXTtcblxuICBASW5wdXQoKVxuICB0YXJnZXRDb21wb25lbnQ6ICd3b3JrbG9hZCcgfCAndm0nIHwgJ2xhYmVsLXNlbGVjdG9ycycgPSAnd29ya2xvYWQnO1xuXG4gIEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWSA9XG4gICAgSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZO1xuXG4gIERPTUFJTl9QQVRURVJOID0gRE9NQUlOX1BBVFRFUk47XG4gIGRpc3BsYXlOYW1lS2V5ID0gdGhpcy5rOHNVdGlsLm5vcm1hbGl6ZVR5cGUoRElTUExBWV9OQU1FKTtcblxuICBpc0xiRW5hYmxlZCQgPSB0aGlzLmNsdXN0ZXIkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGNsdXN0ZXIgPT5cbiAgICAgIHRoaXMuZmVhdHVyZUdhdGUuaXNFbmFibGVkKCdsb2FkYmFsYW5jZXItc2VydmljZScsIGNsdXN0ZXIpLFxuICAgICksXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICB0eXBlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmlzVXBkYXRlJCxcbiAgICB0aGlzLmlzTGJFbmFibGVkJCxcbiAgICB0aGlzLnJlc291cmNlJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpc1VwZGF0ZSwgaXNMYkVuYWJsZWQsIHJlc291cmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIGlzTGJFbmFibGVkIHx8XG4gICAgICAgIChpc1VwZGF0ZSAmJiByZXNvdXJjZT8uc3BlYz8udHlwZSA9PT0gJ0xvYWRCYWxhbmNlcicpXG4gICAgICAgID8gU0VSVklDRV9UWVBFU1xuICAgICAgICA6IE5PTl9MQl9TRVJWSUNFX1RZUEVTO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGNvbnN0IHR5cGVDdHJsID0gdGhpcy5mb3JtLmdldCgnc3BlYy50eXBlJyk7XG4gICAgdHlwZUN0cmwudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIHN0YXJ0V2l0aCh0eXBlQ3RybC52YWx1ZSkpXG4gICAgICAuc3Vic2NyaWJlKHR5cGUgPT4ge1xuICAgICAgICBjb25zdCB2aXJ0dWFsSXBDdHJsID0gdGhpcy5mb3JtLmdldCgndmlydHVhbElwJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgICB2aXJ0dWFsSXBDdHJsLmRpc2FibGUoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoWydOb2RlUG9ydCcsICdMb2FkQmFsYW5jZXInXS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgIHZpcnR1YWxJcEN0cmwuc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5lbmFibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlICE9PSAnRXh0ZXJuYWxOYW1lJykge1xuICAgICAgICAgIHRoaXMub25WaXJ0dWFsSXBDaGFuZ2UodmlydHVhbElwQ3RybC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpOiBTZXJ2aWNlRm9ybU1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ1NlcnZpY2UnLFxuICAgICAgdmlydHVhbElwOiB0cnVlLFxuICAgICAgc2Vzc2lvblBlcnNpc3RlbmNlOiBmYWxzZSxcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgdHlwZTogJ0NsdXN0ZXJJUCcsXG4gICAgICAgIHBvcnRzOiBbXSxcbiAgICAgICAgZXh0ZXJuYWxOYW1lOiAnJyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgdmlydHVhbElwOiB0aGlzLmZiLmNvbnRyb2wodHJ1ZSksXG4gICAgICBzZXNzaW9uUGVyc2lzdGVuY2U6IGZhbHNlLFxuICAgICAgbWV0YWRhdGE6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBuYW1lOiB0aGlzLmZiLmNvbnRyb2woJycsIFtcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKSxcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnBhdHRlcm4pLFxuICAgICAgICBdKSxcbiAgICAgICAgbGFiZWxzOiB0aGlzLmZiLmNvbnRyb2woe30pLFxuICAgICAgICBhbm5vdGF0aW9uczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgW3RoaXMuZGlzcGxheU5hbWVLZXldOiAnJyxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICAgIHNwZWM6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICB0eXBlOiAnQ2x1c3RlcklQJyxcbiAgICAgICAgcG9ydHM6IG51bGwsXG4gICAgICAgIGV4dGVybmFsTmFtZTogJycsXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0Rm9ybU1vZGVsKHtcbiAgICB2aXJ0dWFsSXAsXG4gICAgc2Vzc2lvblBlcnNpc3RlbmNlLFxuICAgIC4uLnJlc291cmNlXG4gIH06IFNlcnZpY2VGb3JtTW9kZWwpOiBTZXJ2aWNlIHtcbiAgICBjb25zdCBzZXJ2aWNlID0geyAuLi5TZXJ2aWNlVHlwZU1ldGEsIC4uLnJlc291cmNlIH07XG4gICAgLy8gYEV4dGVybmFsTmFtZWAgdHlwZSBqdXN0IG5lZWQgZXh0ZXJuYWxOYW1lXG4gICAgaWYgKHJlc291cmNlLnNwZWMudHlwZSA9PT0gJ0V4dGVybmFsTmFtZScpIHtcbiAgICAgIHNlcnZpY2Uuc3BlYyA9IHtcbiAgICAgICAgdHlwZTogJ0V4dGVybmFsTmFtZScsXG4gICAgICAgIGV4dGVybmFsTmFtZTogcmVzb3VyY2Uuc3BlYy5leHRlcm5hbE5hbWUsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHNlcnZpY2U7XG4gICAgfVxuICAgIC8vIEl0IG11c3QgYmUgbm9uIEhlYWRsZXNzIGlmIGB2aXJ0dWFsSXBgIGlzIGVuYWJsZWRcbiAgICBpZiAodmlydHVhbElwKSB7XG4gICAgICBpZiAoc2VydmljZS5zcGVjLmNsdXN0ZXJJUCA9PT0gJ05vbmUnKSB7XG4gICAgICAgIGRlbGV0ZSBzZXJ2aWNlLnNwZWMuY2x1c3RlcklQO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB2aXJ0dWFsSXAg6KKr56aB55So5ZCO5Li6IHVuZGVmaW5lZO+8jCDmraTml7bkuI3lgZrlpITnkIZcbiAgICBlbHNlIGlmICh2aXJ0dWFsSXAgPT09IGZhbHNlKSB7XG4gICAgICAvLyBIZWFkbGVzc1xuICAgICAgc2VydmljZS5zcGVjLmNsdXN0ZXJJUCA9ICdOb25lJztcbiAgICB9XG5cbiAgICBzZXJ2aWNlLnNwZWMuc2Vzc2lvbkFmZmluaXR5ID0gc2Vzc2lvblBlcnNpc3RlbmNlID8gJ0NsaWVudElQJyA6ICdOb25lJztcbiAgICByZXR1cm4gc2VydmljZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogU2VydmljZSk6IFNlcnZpY2VGb3JtTW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXNvdXJjZSxcbiAgICAgIHZpcnR1YWxJcDogcmVzb3VyY2U/LnNwZWM/LmNsdXN0ZXJJUCAhPT0gJ05vbmUnLFxuICAgICAgc2Vzc2lvblBlcnNpc3RlbmNlOiByZXNvdXJjZT8uc3BlYz8uc2Vzc2lvbkFmZmluaXR5ID09PSAnQ2xpZW50SVAnLFxuICAgIH07XG4gIH1cblxuICBvblZpcnR1YWxJcENoYW5nZSh2aXJ0dWFsSXA6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXZpcnR1YWxJcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcnRzQ3RybCA9IHRoaXMuZm9ybS5nZXQoJ3NwZWMucG9ydHMnKTtcblxuICAgIGlmICghcG9ydHNDdHJsLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIHBvcnRzQ3RybC5wYXRjaFZhbHVlKFt7fV0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm1cbiAgYXVpRm9ybVxuICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuPlxuICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJtZXRhZGF0YVwiPlxuICAgIDxhdWktZm9ybS1pdGVtIHdpZHRoPVwibGFyZ2VcIj5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNVcGRhdGVcIlxuICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkudGlwIHwgdHJhbnNsYXRlXCJcbiAgICAgIC8+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImZvcm0uZ2V0KFsnbWV0YWRhdGEnLCAnbmFtZSddKS5lcnJvcnNcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cIntcbiAgICAgICAgICBwYXR0ZXJuOiBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkudGlwIHwgdHJhbnNsYXRlXG4gICAgICAgIH1cIlxuICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuXG4gICAgPGF1aS1mb3JtLWl0ZW1cbiAgICAgIHdpZHRoPVwibGFyZ2VcIlxuICAgICAgZm9ybUdyb3VwTmFtZT1cImFubm90YXRpb25zXCJcbiAgICA+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnZGlzcGxheV9uYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRpc3BsYXlOYW1lS2V5XCJcbiAgICAgIC8+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8YXVpLWZvcm0taXRlbSBmb3JtR3JvdXBOYW1lPVwic3BlY1wiPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICd0eXBlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgPGF1aS1yYWRpby1ncm91cCBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCI+XG4gICAgICA8YXVpLXJhZGlvLWJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHR5cGVzJCB8IGFzeW5jXCJcbiAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXG4gICAgICA+XG4gICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgPC9hdWktcmFkaW8tYnV0dG9uPlxuICAgIDwvYXVpLXJhZGlvLWdyb3VwPlxuICAgIDxkaXZcbiAgICAgIGF1aUZvcm1JdGVtSGludFxuICAgICAgKm5nSWY9XCJmb3JtLmdldChbJ3NwZWMnLCAndHlwZSddKS52YWx1ZSA9PT0gJ0V4dGVybmFsTmFtZSdcIlxuICAgID5cbiAgICAgIHt7ICduZXR3b3JrLnNlcnZpY2VfZXh0ZXJuYWxfbmFtZV9oaW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgPGF1aS1mb3JtLWl0ZW1cbiAgICBmb3JtR3JvdXBOYW1lPVwic3BlY1wiXG4gICAgd2lkdGg9XCJsYXJnZVwiXG4gICAgY2xhc3M9XCJsYXN0LWZvcm0taXRlbS1uby1tYXJnaW5cIlxuICAgIFtoaWRkZW5dPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgIT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPlxuICAgICAge3sgJ25ldHdvcmsuc2VydmljZV9leHRlcm5hbF9uYW1lX21hcHBpbmdfZG9tYWluJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBhdWktaW5wdXRcbiAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgW2FjbERpc2FibGVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlICE9PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgPT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImV4dGVybmFsTmFtZVwiXG4gICAgICBbcGF0dGVybl09XCJET01BSU5fUEFUVEVSTi5wYXR0ZXJuXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgJ25ldHdvcmsuc2VydmljZV9leHRlcm5hbF9uYW1lX2RvbWFpbl9wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgIFwiXG4gICAgLz5cbiAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgIFtlcnJvcnNdPVwiZm9ybS5nZXQoWydzcGVjJywgJ2V4dGVybmFsTmFtZSddKS5lcnJvcnNcIlxuICAgICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICAgIHBhdHRlcm46IERPTUFJTl9QQVRURVJOLnRpcCB8IHRyYW5zbGF0ZVxuICAgICAgfVwiXG4gICAgPlxuICAgIDwvYWNsLWVycm9ycy1tYXBwZXI+XG4gIDwvYXVpLWZvcm0taXRlbT5cblxuICA8IS0tIEV4dGVybmFsTmFtZSDnsbvlnovml7bpmpDol4/lhbbku5blsZ7mgKcgLS0+XG4gIDxkaXYgW2hpZGRlbl09XCJmb3JtLmdldChbJ3NwZWMnLCAndHlwZSddKS52YWx1ZSA9PT0gJ0V4dGVybmFsTmFtZSdcIj5cbiAgICA8YXVpLWZvcm0taXRlbT5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduZXR3b3JrLnZpcnR1YWxfaXAnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZpcnR1YWxJcFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZpcnR1YWxJcENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2F1aS1zd2l0Y2g+XG4gICAgICA8ZGl2IGF1aUZvcm1JdGVtQWRkb24+XG4gICAgICAgIDxhdWktaWNvblxuICAgICAgICAgIFthdWlUb29sdGlwXT1cIiduZXR3b3JrLnZpcnR1YWxfaXBfaGludCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthdWlUb29sdGlwUG9zaXRpb25dPVwiJ3RvcCBjZW50ZXInXCJcbiAgICAgICAgICBpY29uPVwicXVlc3Rpb25fY2lyY2xlXCJcbiAgICAgICAgICBjbGFzcz1cImljb24tLWhlbHBcIlxuICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXVpLWZvcm0taXRlbT5cblxuICAgIDwhLS0g6Ieq5a6a5LmJIENvbnRyb2xzIC0tPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxhdWktZm9ybS1pdGVtIGZvcm1Hcm91cE5hbWU9XCJzcGVjXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnbmV0d29yay5wb3J0JyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8YWNsLXNlcnZpY2UtcG9ydHMtZmllbGRzZXRcbiAgICAgICAgY2xhc3M9XCJ0dy13LWZ1bGxcIlxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgW3JlcXVpcmVkXT1cIiEhZm9ybS5nZXQoJ3ZpcnR1YWxJcCcpLnZhbHVlXCJcbiAgICAgICAgW2FjbERpc2FibGVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICAgIG5hbWU9XCJwb3J0c1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvcnRzXCJcbiAgICAgICAgW3NlcnZpY2VUeXBlXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlXCJcbiAgICAgICAgW2NvbnRhaW5lclBvcnRTdWdnZXN0aW9uc109XCJjb250YWluZXJQb3J0U3VnZ2VzdGlvbnNcIlxuICAgICAgICBbdGFyZ2V0Q29tcG9uZW50XT1cInRhcmdldENvbXBvbmVudFwiXG4gICAgICA+PC9hY2wtc2VydmljZS1wb3J0cy1maWVsZHNldD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8YXVpLWZvcm0taXRlbSBjbGFzcz1cImxhc3QtZm9ybS1pdGVtLW5vLW1hcmdpblwiPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3tcbiAgICAgICAgJ25ldHdvcmsuc2Vzc2lvbl9hZmZpbml0eScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cInNlc3Npb25QZXJzaXN0ZW5jZVwiPjwvYXVpLXN3aXRjaD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFFTCxZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsdUNBQXVDLEVBQ3ZDLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNC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OzhCQUNOLFVBQVU7MERBQVU7aUZBZHJCLHVCQUF1QjtjQXhCbkMsU0FBUzs2QkFDSSxJQUFJLFlBQ04sc0JBQXNCLG1CQUVmLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7b0JBQ1AsU0FBUztvQkFDVCxVQUFVO29CQUNWLFdBQVc7b0JBQ1gsSUFBSTtvQkFDSixLQUFLO29CQUNMLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsZ0JBQWdCO29CQUNoQixXQUFXO29CQUNYLGFBQWE7b0JBQ2Isb0JBQW9CO29CQUNwQiw2QkFBNkI7b0JBQzdCLHNCQUFzQjtvQkFDdEIsaUJBQWlCO2lCQUNsQjt1R0FPRCxPQUFPO2tCQUROLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBSXpCLFFBQVEsTUFHUixRQUFRO2tCQURQLEtBQUs7WUFJTixTQUFTLE1BR1Qsd0JBQXdCO2tCQUR2QixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixlQUFlO2tCQURkLEtBQUs7O2tGQW5CSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGb3JtTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgUmFkaW9Nb2R1bGUsXG4gIFN3aXRjaE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBDb250YWluZXJQb3J0LFxuICBESVNQTEFZX05BTUUsXG4gIFNFUlZJQ0VfVFlQRVMsXG4gIEZlYXR1cmVHYXRlU2VydmljZSxcbiAgSzhzVXRpbFNlcnZpY2UsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgcHVibGlzaFJlZixcbiAgU2VydmljZSxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIERpc2FibGVkRGlyZWN0aXZlLFxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFksXG4gIERPTUFJTl9QQVRURVJOLFxuICBTZXJ2aWNlVHlwZU1ldGEsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlRm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnbmctcmVzb3VyY2UtZm9ybS11dGlsJztcbmltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNlcnZpY2VQb3J0c0ZpZWxkc2V0Q29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHNldC9jb21wb25lbnQnO1xuXG5jb25zdCBOT05fTEJfU0VSVklDRV9UWVBFUyA9IFNFUlZJQ0VfVFlQRVMuZmlsdGVyKG9wID0+IG9wICE9PSAnTG9hZEJhbGFuY2VyJyk7XG5pbnRlcmZhY2UgU2VydmljZUZvcm1Nb2RlbCBleHRlbmRzIFNlcnZpY2Uge1xuICB2aXJ0dWFsSXA/OiBib29sZWFuOyAvLyDomZrmi58gaXDvvIzkuLogZmFsc2Ug5pe26ZyA6KaB6K6+572uIHNwZWMuY2x1c3RlcklwOiBOb25lXG4gIHNlc3Npb25QZXJzaXN0ZW5jZT86IGJvb2xlYW47IC8vIOS8muivneS/neaMge+8jOWvueW6lCBzcGVjLnNlc3Npb25BZmZpbml0eTogQ2xpZW50SVAvTm9uZVxufVxuXG4vLyBLOHMgYmFzZSBzZXJ2aWNlIGZvcm1cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1rOHMtc2VydmljZS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTmdGb3IsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTd2l0Y2hNb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIFJhZGlvTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gICAgU2VydmljZVBvcnRzRmllbGRzZXRDb21wb25lbnQsXG4gICAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgICBEaXNhYmxlZERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSzhzU2VydmljZUZvcm1Db21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlUmVzb3VyY2VGb3JtR3JvdXBDb21wb25lbnQ8U2VydmljZSwgU2VydmljZUZvcm1Nb2RlbD5cbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0XG57XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGNsdXN0ZXI6IHN0cmluZztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgY2x1c3RlciQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgQElucHV0KClcbiAgaXNVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgaXNVcGRhdGUkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb250YWluZXJQb3J0U3VnZ2VzdGlvbnM6IENvbnRhaW5lclBvcnRbXTtcblxuICBASW5wdXQoKVxuICB0YXJnZXRDb21wb25lbnQ6ICd3b3JrbG9hZCcgfCAndm0nIHwgJ2xhYmVsLXNlbGVjdG9ycycgPSAnd29ya2xvYWQnO1xuXG4gIEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWSA9XG4gICAgSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZO1xuXG4gIERPTUFJTl9QQVRURVJOID0gRE9NQUlOX1BBVFRFUk47XG4gIGRpc3BsYXlOYW1lS2V5ID0gdGhpcy5rOHNVdGlsLm5vcm1hbGl6ZVR5cGUoRElTUExBWV9OQU1FKTtcblxuICBpc0xiRW5hYmxlZCQgPSB0aGlzLmNsdXN0ZXIkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGNsdXN0ZXIgPT5cbiAgICAgIHRoaXMuZmVhdHVyZUdhdGUuaXNFbmFibGVkKCdsb2FkYmFsYW5jZXItc2VydmljZScsIGNsdXN0ZXIpLFxuICAgICksXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICB0eXBlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmlzVXBkYXRlJCxcbiAgICB0aGlzLmlzTGJFbmFibGVkJCxcbiAgICB0aGlzLnJlc291cmNlJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpc1VwZGF0ZSwgaXNMYkVuYWJsZWQsIHJlc291cmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIGlzTGJFbmFibGVkIHx8XG4gICAgICAgIChpc1VwZGF0ZSAmJiByZXNvdXJjZT8uc3BlYz8udHlwZSA9PT0gJ0xvYWRCYWxhbmNlcicpXG4gICAgICAgID8gU0VSVklDRV9UWVBFU1xuICAgICAgICA6IE5PTl9MQl9TRVJWSUNFX1RZUEVTO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGNvbnN0IHR5cGVDdHJsID0gdGhpcy5mb3JtLmdldCgnc3BlYy50eXBlJyk7XG4gICAgdHlwZUN0cmwudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIHN0YXJ0V2l0aCh0eXBlQ3RybC52YWx1ZSkpXG4gICAgICAuc3Vic2NyaWJlKHR5cGUgPT4ge1xuICAgICAgICBjb25zdCB2aXJ0dWFsSXBDdHJsID0gdGhpcy5mb3JtLmdldCgndmlydHVhbElwJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgICB2aXJ0dWFsSXBDdHJsLmRpc2FibGUoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoWydOb2RlUG9ydCcsICdMb2FkQmFsYW5jZXInXS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgIHZpcnR1YWxJcEN0cmwuc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5lbmFibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlICE9PSAnRXh0ZXJuYWxOYW1lJykge1xuICAgICAgICAgIHRoaXMub25WaXJ0dWFsSXBDaGFuZ2UodmlydHVhbElwQ3RybC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpOiBTZXJ2aWNlRm9ybU1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ1NlcnZpY2UnLFxuICAgICAgdmlydHVhbElwOiB0cnVlLFxuICAgICAgc2Vzc2lvblBlcnNpc3RlbmNlOiBmYWxzZSxcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgdHlwZTogJ0NsdXN0ZXJJUCcsXG4gICAgICAgIHBvcnRzOiBbXSxcbiAgICAgICAgZXh0ZXJuYWxOYW1lOiAnJyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgdmlydHVhbElwOiB0aGlzLmZiLmNvbnRyb2wodHJ1ZSksXG4gICAgICBzZXNzaW9uUGVyc2lzdGVuY2U6IGZhbHNlLFxuICAgICAgbWV0YWRhdGE6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBuYW1lOiB0aGlzLmZiLmNvbnRyb2woJycsIFtcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKSxcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnBhdHRlcm4pLFxuICAgICAgICBdKSxcbiAgICAgICAgbGFiZWxzOiB0aGlzLmZiLmNvbnRyb2woe30pLFxuICAgICAgICBhbm5vdGF0aW9uczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgW3RoaXMuZGlzcGxheU5hbWVLZXldOiAnJyxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICAgIHNwZWM6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICB0eXBlOiAnQ2x1c3RlcklQJyxcbiAgICAgICAgcG9ydHM6IG51bGwsXG4gICAgICAgIGV4dGVybmFsTmFtZTogJycsXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0Rm9ybU1vZGVsKHtcbiAgICB2aXJ0dWFsSXAsXG4gICAgc2Vzc2lvblBlcnNpc3RlbmNlLFxuICAgIC4uLnJlc291cmNlXG4gIH06IFNlcnZpY2VGb3JtTW9kZWwpOiBTZXJ2aWNlIHtcbiAgICBjb25zdCBzZXJ2aWNlID0geyAuLi5TZXJ2aWNlVHlwZU1ldGEsIC4uLnJlc291cmNlIH07XG4gICAgLy8gYEV4dGVybmFsTmFtZWAgdHlwZSBqdXN0IG5lZWQgZXh0ZXJuYWxOYW1lXG4gICAgaWYgKHJlc291cmNlLnNwZWMudHlwZSA9PT0gJ0V4dGVybmFsTmFtZScpIHtcbiAgICAgIHNlcnZpY2Uuc3BlYyA9IHtcbiAgICAgICAgdHlwZTogJ0V4dGVybmFsTmFtZScsXG4gICAgICAgIGV4dGVybmFsTmFtZTogcmVzb3VyY2Uuc3BlYy5leHRlcm5hbE5hbWUsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHNlcnZpY2U7XG4gICAgfVxuICAgIC8vIEl0IG11c3QgYmUgbm9uIEhlYWRsZXNzIGlmIGB2aXJ0dWFsSXBgIGlzIGVuYWJsZWRcbiAgICBpZiAodmlydHVhbElwKSB7XG4gICAgICBpZiAoc2VydmljZS5zcGVjLmNsdXN0ZXJJUCA9PT0gJ05vbmUnKSB7XG4gICAgICAgIGRlbGV0ZSBzZXJ2aWNlLnNwZWMuY2x1c3RlcklQO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB2aXJ0dWFsSXAg6KKr56aB55So5ZCO5Li6IHVuZGVmaW5lZO+8jCDmraTml7bkuI3lgZrlpITnkIZcbiAgICBlbHNlIGlmICh2aXJ0dWFsSXAgPT09IGZhbHNlKSB7XG4gICAgICAvLyBIZWFkbGVzc1xuICAgICAgc2VydmljZS5zcGVjLmNsdXN0ZXJJUCA9ICdOb25lJztcbiAgICB9XG5cbiAgICBzZXJ2aWNlLnNwZWMuc2Vzc2lvbkFmZmluaXR5ID0gc2Vzc2lvblBlcnNpc3RlbmNlID8gJ0NsaWVudElQJyA6ICdOb25lJztcbiAgICByZXR1cm4gc2VydmljZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogU2VydmljZSk6IFNlcnZpY2VGb3JtTW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXNvdXJjZSxcbiAgICAgIHZpcnR1YWxJcDogcmVzb3VyY2U/LnNwZWM/LmNsdXN0ZXJJUCAhPT0gJ05vbmUnLFxuICAgICAgc2Vzc2lvblBlcnNpc3RlbmNlOiByZXNvdXJjZT8uc3BlYz8uc2Vzc2lvbkFmZmluaXR5ID09PSAnQ2xpZW50SVAnLFxuICAgIH07XG4gIH1cblxuICBvblZpcnR1YWxJcENoYW5nZSh2aXJ0dWFsSXA6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXZpcnR1YWxJcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcnRzQ3RybCA9IHRoaXMuZm9ybS5nZXQoJ3NwZWMucG9ydHMnKTtcblxuICAgIGlmICghcG9ydHNDdHJsLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIHBvcnRzQ3RybC5wYXRjaFZhbHVlKFt7fV0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm1cbiAgYXVpRm9ybVxuICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuPlxuICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJtZXRhZGF0YVwiPlxuICAgIDxhdWktZm9ybS1pdGVtIHdpZHRoPVwibGFyZ2VcIj5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNVcGRhdGVcIlxuICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkudGlwIHwgdHJhbnNsYXRlXCJcbiAgICAgIC8+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImZvcm0uZ2V0KFsnbWV0YWRhdGEnLCAnbmFtZSddKS5lcnJvcnNcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cIntcbiAgICAgICAgICBwYXR0ZXJuOiBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkudGlwIHwgdHJhbnNsYXRlLFxuICAgICAgICB9XCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgIDwvYXVpLWZvcm0taXRlbT5cblxuICAgIDxhdWktZm9ybS1pdGVtXG4gICAgICB3aWR0aD1cImxhcmdlXCJcbiAgICAgIGZvcm1Hcm91cE5hbWU9XCJhbm5vdGF0aW9uc1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ2Rpc3BsYXlfbmFtZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkaXNwbGF5TmFtZUtleVwiXG4gICAgICAvPlxuICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGF1aS1mb3JtLWl0ZW0gZm9ybUdyb3VwTmFtZT1cInNwZWNcIj5cbiAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAndHlwZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIDxhdWktcmFkaW8tZ3JvdXAgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiPlxuICAgICAgPGF1aS1yYWRpby1idXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB0eXBlcyQgfCBhc3luY1wiXG4gICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgIDwvYXVpLXJhZGlvLWJ1dHRvbj5cbiAgICA8L2F1aS1yYWRpby1ncm91cD5cbiAgICA8ZGl2XG4gICAgICBhdWlGb3JtSXRlbUhpbnRcbiAgICAgICpuZ0lmPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgPT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgICA+XG4gICAgICB7eyAnbmV0d29yay5zZXJ2aWNlX2V4dGVybmFsX25hbWVfaGludCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgPC9hdWktZm9ybS1pdGVtPlxuXG4gIDxhdWktZm9ybS1pdGVtXG4gICAgZm9ybUdyb3VwTmFtZT1cInNwZWNcIlxuICAgIHdpZHRoPVwibGFyZ2VcIlxuICAgIGNsYXNzPVwibGFzdC1mb3JtLWl0ZW0tbm8tbWFyZ2luXCJcbiAgICBbaGlkZGVuXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlICE9PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gID5cbiAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD5cbiAgICAgIHt7ICduZXR3b3JrLnNlcnZpY2VfZXh0ZXJuYWxfbmFtZV9tYXBwaW5nX2RvbWFpbicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgYXVpLWlucHV0XG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIFthY2xEaXNhYmxlZF09XCJmb3JtLmdldChbJ3NwZWMnLCAndHlwZSddKS52YWx1ZSAhPT0gJ0V4dGVybmFsTmFtZSdcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJleHRlcm5hbE5hbWVcIlxuICAgICAgW3BhdHRlcm5dPVwiRE9NQUlOX1BBVFRFUk4ucGF0dGVyblwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICduZXR3b3JrLnNlcnZpY2VfZXh0ZXJuYWxfbmFtZV9kb21haW5fcGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICBcIlxuICAgIC8+XG4gICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICBhdWlGb3JtSXRlbUVycm9yXG4gICAgICBbZXJyb3JzXT1cImZvcm0uZ2V0KFsnc3BlYycsICdleHRlcm5hbE5hbWUnXSkuZXJyb3JzXCJcbiAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICBwYXR0ZXJuOiBET01BSU5fUEFUVEVSTi50aXAgfCB0cmFuc2xhdGUsXG4gICAgICB9XCJcbiAgICA+XG4gICAgPC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgPC9hdWktZm9ybS1pdGVtPlxuXG4gIDwhLS0gRXh0ZXJuYWxOYW1lIOexu+Wei+aXtumakOiXj+WFtuS7luWxnuaApyAtLT5cbiAgPGRpdiBbaGlkZGVuXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiPlxuICAgIDxhdWktZm9ybS1pdGVtPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ25ldHdvcmsudmlydHVhbF9pcCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgPGF1aS1zd2l0Y2hcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmlydHVhbElwXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmlydHVhbElwQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvYXVpLXN3aXRjaD5cbiAgICAgIDxkaXYgYXVpRm9ybUl0ZW1BZGRvbj5cbiAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgW2F1aVRvb2x0aXBdPVwiJ25ldHdvcmsudmlydHVhbF9pcF9oaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2F1aVRvb2x0aXBQb3NpdGlvbl09XCIndG9wIGNlbnRlcidcIlxuICAgICAgICAgIGljb249XCJxdWVzdGlvbl9jaXJjbGVcIlxuICAgICAgICAgIGNsYXNzPVwiaWNvbi0taGVscFwiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuXG4gICAgPCEtLSDoh6rlrprkuYkgQ29udHJvbHMgLS0+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPGF1aS1mb3JtLWl0ZW0gZm9ybUdyb3VwTmFtZT1cInNwZWNcIj5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduZXR3b3JrLnBvcnQnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxhY2wtc2VydmljZS1wb3J0cy1maWVsZHNldFxuICAgICAgICBjbGFzcz1cInR3LXctZnVsbFwiXG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBbcmVxdWlyZWRdPVwiISFmb3JtLmdldCgndmlydHVhbElwJykudmFsdWVcIlxuICAgICAgICBbYWNsRGlzYWJsZWRdPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgPT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgICAgICAgbmFtZT1cInBvcnRzXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicG9ydHNcIlxuICAgICAgICBbc2VydmljZVR5cGVdPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWVcIlxuICAgICAgICBbY29udGFpbmVyUG9ydFN1Z2dlc3Rpb25zXT1cImNvbnRhaW5lclBvcnRTdWdnZXN0aW9uc1wiXG4gICAgICAgIFt0YXJnZXRDb21wb25lbnRdPVwidGFyZ2V0Q29tcG9uZW50XCJcbiAgICAgID48L2FjbC1zZXJ2aWNlLXBvcnRzLWZpZWxkc2V0PlxuICAgIDwvYXVpLWZvcm0taXRlbT5cblxuICAgIDxhdWktZm9ybS1pdGVtIGNsYXNzPVwibGFzdC1mb3JtLWl0ZW0tbm8tbWFyZ2luXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57e1xuICAgICAgICAnbmV0d29yay5zZXNzaW9uX2FmZmluaXR5JyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L2xhYmVsPlxuICAgICAgPGF1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwic2Vzc2lvblBlcnNpc3RlbmNlXCI+PC9hdWktc3dpdGNoPlxuICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -386,7 +386,7 @@ __decorate([
386
386
  SelectModule,
387
387
  ArrayFormTableModule,
388
388
  ERRORS_MAPPER_MODULE,
389
- ], template: "<acl-array-form-table\n (add)=\"add(form.length)\"\n (remove)=\"remove($event)\"\n [minRow]=\"required ? 1 : 0\"\n [rows]=\"form.controls\"\n [formGroup]=\"$any(form)\"\n class=\"form-table__flex-layout inline-action-col\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th>{{ 'network.protocol' | translate }}</th>\n <th>\n <span class=\"required-mark\">*</span>\n {{ 'service_port' | translate }}\n </th>\n <th>\n <span class=\"required-mark\">*</span>\n {{ targetComponent | pure: getContainerPortTranslateKey | translate }}\n </th>\n <th>\n {{ 'network.service_port_name' | translate }}\n <aui-icon\n class=\"ml-4 icon--help\"\n icon=\"question_circle\"\n [auiTooltip]=\"\n 'service_name_default_tips'\n | translate\n : {\n type:\n targetComponent\n | pure: getContainerPortTranslateKey\n | translate\n }\n \"\n ></aui-icon>\n </th>\n </ng-container>\n\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroupName]=\"index\"\n >\n <td>\n <aui-select\n formControlName=\"appProtocol\"\n (valueChange)=\"updateAppProtocol(control)\"\n >\n <aui-option\n *ngFor=\"let protocol of servicePortProtocols\"\n [value]=\"protocol | lowercase\"\n [label]=\"protocol\"\n >\n {{ protocol }}\n </aui-option>\n </aui-select>\n </td>\n <td>\n <input\n aui-input\n type=\"number\"\n formControlName=\"port\"\n (ngModelChange)=\"autoCompleteContainerPort(control, $event)\"\n required\n />\n <acl-errors-mapper\n *ngIf=\"\n control.get('port').dirty ||\n $any(controlContainer?.formDirective)?.submitted\n \"\n [errors]=\"control.get('port').errors\"\n [controlName]=\"'service_port' | translate\"\n ></acl-errors-mapper>\n </td>\n <td>\n <input\n aui-input\n formControlName=\"targetPort\"\n [auiAutocomplete]=\"suggestions\"\n (auiAutocompleteSelected)=\"updateContainerPort(control, $event)\"\n />\n <aui-autocomplete #suggestions>\n <ng-container\n *ngFor=\"\n let port of containerPortSuggestions\n | pure\n : getContainerPortSuggestions\n : control.get('appProtocol').value\n \"\n >\n <aui-suggestion\n *ngIf=\"\n port.containerPort +\n (port.name ? '-' + port.name : '') as suggestion\n \"\n [value]=\"suggestion\"\n >{{ suggestion }}</aui-suggestion\n >\n </ng-container>\n </aui-autocomplete>\n <acl-errors-mapper\n *ngIf=\"\n control.get('targetPort').dirty ||\n $any(controlContainer?.formDirective)?.submitted\n \"\n [controlName]=\"\n targetComponent | pure: getContainerPortTranslateKey | translate\n \"\n [errors]=\"control.get('targetPort').errors\"\n [errorsMapper]=\"{\n characters:\n 'network.port_name_error_characters_tip'\n | translate\n : {\n controlName:\n targetComponent\n | pure: getContainerPortTranslateKey\n | translate\n },\n start_end_character:\n 'network.port_name_error_start_end_character_tip'\n | translate\n : {\n controlName:\n targetComponent\n | pure: getContainerPortTranslateKey\n | translate\n }\n }\"\n ></acl-errors-mapper>\n </td>\n <td>\n <input\n aui-input\n formControlName=\"name\"\n />\n <acl-errors-mapper\n [controlName]=\"'network.service_port_name' | translate\"\n [errors]=\"control.get('name').errors\"\n [errorsMapper]=\"{\n pattern: namePattern.tip | translate\n }\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <!-- Input error row -->\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n class=\"acl-table-form-error-hint\"\n colspan=\"5\"\n >\n <acl-errors-mapper\n *ngIf=\"\n control.errors?.duplicateError as duplicateError;\n else otherErrors\n \"\n [errors]=\"duplicateError\"\n [errorsMapper]=\"{\n port:\n 'network.duplicate_service_port'\n | translate: { port: duplicateError.port?.port },\n name:\n 'network.duplicate_service_name'\n | translate: { name: duplicateError.name?.name }\n }\"\n ></acl-errors-mapper>\n <ng-template #otherErrors>\n <acl-errors-mapper\n [errors]=\"control.errors\"\n [errorsMapper]=\"{\n protocol: 'network.lb_service_protocol_hint' | translate\n }\"\n ></acl-errors-mapper>\n </ng-template>\n </td>\n </ng-container>\n</acl-array-form-table>\n" }]
389
+ ], template: "<acl-array-form-table\n (add)=\"add(form.length)\"\n (remove)=\"remove($event)\"\n [minRow]=\"required ? 1 : 0\"\n [rows]=\"form.controls\"\n [formGroup]=\"$any(form)\"\n class=\"form-table__flex-layout inline-action-col\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th>{{ 'network.protocol' | translate }}</th>\n <th>\n <span class=\"required-mark\">*</span>\n {{ 'service_port' | translate }}\n </th>\n <th>\n <span class=\"required-mark\">*</span>\n {{ targetComponent | pure: getContainerPortTranslateKey | translate }}\n </th>\n <th>\n {{ 'network.service_port_name' | translate }}\n <aui-icon\n class=\"ml-4 icon--help\"\n icon=\"question_circle\"\n [auiTooltip]=\"\n 'service_name_default_tips'\n | translate\n : {\n type:\n targetComponent\n | pure: getContainerPortTranslateKey\n | translate,\n }\n \"\n ></aui-icon>\n </th>\n </ng-container>\n\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroupName]=\"index\"\n >\n <td>\n <aui-select\n formControlName=\"appProtocol\"\n (valueChange)=\"updateAppProtocol(control)\"\n >\n <aui-option\n *ngFor=\"let protocol of servicePortProtocols\"\n [value]=\"protocol | lowercase\"\n [label]=\"protocol\"\n >\n {{ protocol }}\n </aui-option>\n </aui-select>\n </td>\n <td>\n <input\n aui-input\n type=\"number\"\n formControlName=\"port\"\n (ngModelChange)=\"autoCompleteContainerPort(control, $event)\"\n required\n />\n <acl-errors-mapper\n *ngIf=\"\n control.get('port').dirty ||\n $any(controlContainer?.formDirective)?.submitted\n \"\n [errors]=\"control.get('port').errors\"\n [controlName]=\"'service_port' | translate\"\n ></acl-errors-mapper>\n </td>\n <td>\n <input\n aui-input\n formControlName=\"targetPort\"\n [auiAutocomplete]=\"suggestions\"\n (auiAutocompleteSelected)=\"updateContainerPort(control, $event)\"\n />\n <aui-autocomplete #suggestions>\n <ng-container\n *ngFor=\"\n let port of containerPortSuggestions\n | pure\n : getContainerPortSuggestions\n : control.get('appProtocol').value\n \"\n >\n <aui-suggestion\n *ngIf=\"\n port.containerPort +\n (port.name ? '-' + port.name : '') as suggestion\n \"\n [value]=\"suggestion\"\n >{{ suggestion }}</aui-suggestion\n >\n </ng-container>\n </aui-autocomplete>\n <acl-errors-mapper\n *ngIf=\"\n control.get('targetPort').dirty ||\n $any(controlContainer?.formDirective)?.submitted\n \"\n [controlName]=\"\n targetComponent | pure: getContainerPortTranslateKey | translate\n \"\n [errors]=\"control.get('targetPort').errors\"\n [errorsMapper]=\"{\n characters:\n 'network.port_name_error_characters_tip'\n | translate\n : {\n controlName:\n targetComponent\n | pure: getContainerPortTranslateKey\n | translate,\n },\n start_end_character:\n 'network.port_name_error_start_end_character_tip'\n | translate\n : {\n controlName:\n targetComponent\n | pure: getContainerPortTranslateKey\n | translate,\n },\n }\"\n ></acl-errors-mapper>\n </td>\n <td>\n <input\n aui-input\n formControlName=\"name\"\n />\n <acl-errors-mapper\n [controlName]=\"'network.service_port_name' | translate\"\n [errors]=\"control.get('name').errors\"\n [errorsMapper]=\"{\n pattern: namePattern.tip | translate,\n }\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <!-- Input error row -->\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n class=\"acl-table-form-error-hint\"\n colspan=\"5\"\n >\n <acl-errors-mapper\n *ngIf=\"\n control.errors?.duplicateError as duplicateError;\n else otherErrors\n \"\n [errors]=\"duplicateError\"\n [errorsMapper]=\"{\n port:\n 'network.duplicate_service_port'\n | translate: { port: duplicateError.port?.port },\n name:\n 'network.duplicate_service_name'\n | translate: { name: duplicateError.name?.name },\n }\"\n ></acl-errors-mapper>\n <ng-template #otherErrors>\n <acl-errors-mapper\n [errors]=\"control.errors\"\n [errorsMapper]=\"{\n protocol: 'network.lb_service_protocol_hint' | translate,\n }\"\n ></acl-errors-mapper>\n </ng-template>\n </td>\n </ng-container>\n</acl-array-form-table>\n" }]
390
390
  }], () => [{ type: i0.Injector }, { type: i1.ControlContainer, decorators: [{
391
391
  type: Optional
392
392
  }] }, { type: i2.ValidateRowDuplicateService }], { required: [{
@@ -401,4 +401,4 @@ __decorate([
401
401
  type: Input
402
402
  }] }); })();
403
403
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ServicePortsFieldsetComponent, { className: "ServicePortsFieldsetComponent", filePath: "lib/components/service-form/fieldset/component.ts", lineNumber: 104 }); })();
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vZmllbGRzZXQvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vZmllbGRzZXQvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixhQUFhLEVBQ2IsaUJBQWlCLEdBQ2xCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFLTCwyQkFBMkIsRUFDM0Isc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLDJCQUEyQixFQUMzQix1Q0FBdUMsRUFDdkMsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUVMLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsZ0JBQWdCLEVBRWhCLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJF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LDRCQUE0Qix1QkFFakIsS0FBSyxtQkFDVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsMkJBQTJCLENBQUMsV0FDL0I7b0JBQ1Asa0JBQWtCO29CQUNsQixXQUFXO29CQUNYLElBQUk7b0JBQ0osS0FBSztvQkFDTCxhQUFhO29CQUNiLG1CQUFtQjtvQkFDbkIsZ0JBQWdCO29CQUNoQixVQUFVO29CQUNWLGFBQWE7b0JBQ2IsUUFBUTtvQkFDUixZQUFZO29CQUNaLG9CQUFvQjtvQkFDcEIsb0JBQW9CO2lCQUNyQjs7c0JBa0NFLFFBQVE7K0RBekJQLFFBQVE7a0JBRFgsS0FBSztZQWFOLFdBQVc7a0JBRFYsS0FBSztZQUlOLHdCQUF3QjtrQkFEdkIsS0FBSztZQUlOLFlBQVk7a0JBRFgsS0FBSztZQUlOLGVBQWU7a0JBRGQsS0FBSzs7a0ZBM0JLLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFNlbGVjdE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbiAgY29lcmNlQXR0ckJvb2xlYW4sXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQ29udGFpbmVyUG9ydCxcbiAgU2VydmljZVBvcnQsXG4gIFNlcnZpY2VQb3J0UHJvdG9jb2wsXG4gIFNlcnZpY2VUeXBlLFxuICBTRVJWSUNFX1BPUlRfQkFTRV9QUk9UT0NPTFMsXG4gIFNFUlZJQ0VfUE9SVF9QUk9UT0NPTFMsXG4gIFZhbHVlSG9vayxcbiAgQXJyYXlGb3JtVGFibGVNb2R1bGUsXG4gIGlzRXF1YWwsXG4gIFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSxcbiAgSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLFxuICBUUkFOU0xBVEVfTU9EVUxFLFxuICBQdXJlUGlwZSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xDb250YWluZXIsXG4gIEZvcm1Hcm91cCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJhc2VSZXNvdXJjZUZvcm1BcnJheUNvbXBvbmVudCB9IGZyb20gJ25nLXJlc291cmNlLWZvcm0tdXRpbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZ2V0U2VydmljZURlZmF1bHROYW1lIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc2VydmljZS1pbnRlcm5hbHMnO1xuXG5jb25zdCBNQVhfUE9SVF9OVU1CRVIgPSA2NV81MzU7XG5cbmZ1bmN0aW9uIGdldE5vcm1hbGl6ZWRUYXJnZXRQb3J0KHRhcmdldFBvcnQ6IG51bWJlciB8IHN0cmluZykge1xuICByZXR1cm4gaXNOYU4oK3RhcmdldFBvcnQpID8gdGFyZ2V0UG9ydCA6ICt0YXJnZXRQb3J0O1xufVxuXG5jb25zdCB0YXJnZXRQb3J0VmFsaWRhdG9yID0gKGN0cmw6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICBjb25zdCB0YXJnZXRQb3J0OiBzdHJpbmcgPSBjdHJsLnZhbHVlO1xuXG4gIGlmICghdGFyZ2V0UG9ydCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghL15bXFxkYS16LV0rJC8udGVzdCh0YXJnZXRQb3J0KSkge1xuICAgIHJldHVybiB7XG4gICAgICBjaGFyYWN0ZXJzOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpZiAoL15cXGQrJC8udGVzdCh0YXJnZXRQb3J0KSkge1xuICAgIGNvbnN0IHBvcnRWYWx1ZSA9IHBhcnNlSW50KHRhcmdldFBvcnQsIDEwKTtcbiAgICBpZiAocG9ydFZhbHVlIDwgMSkge1xuICAgICAgcmV0dXJuIHsgbWluOiB7IG1pbjogMSB9IH07XG4gICAgfVxuICAgIGlmIChwb3J0VmFsdWUgPiBNQVhfUE9SVF9OVU1CRVIpIHtcbiAgICAgIHJldHVybiB7IG1heDogeyBtYXg6IE1BWF9QT1JUX05VTUJFUiB9IH07XG4gICAgfVxuICB9IGVsc2UgaWYgKC8oXlteYS16XSskKXwoXi0pfCgtJCl8KC17Mix9KS8udGVzdCh0YXJnZXRQb3J0KSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFydF9lbmRfY2hhcmFjdGVyOiB0cnVlLFxuICAgIH07XG4gIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1zZXJ2aWNlLXBvcnRzLWZpZWxkc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1ZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZV0sXG4gIGltcG9ydHM6IFtcbiAgICBBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBMb3dlckNhc2VQaXBlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVFJBTlNMQVRFX01PRFVMRSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgUHVyZVBpcGUsXG4gICAgU2VsZWN0TW9kdWxlLFxuICAgIEFycmF5Rm9ybVRhYmxlTW9kdWxlLFxuICAgIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlUG9ydHNGaWVsZHNldENvbXBvbmVudFxuICBleHRlbmRzIEJhc2VSZXNvdXJjZUZvcm1BcnJheUNvbXBvbmVudDxTZXJ2aWNlUG9ydD5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgX3JlcXVpcmVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4gfCAnJykge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQXR0ckJvb2xlYW4ocmVxdWlyZWQpO1xuICB9XG5cbiAgQFZhbHVlSG9vayhudWxsLCBudWxsLCBmdW5jdGlvbiAodGhpczogU2VydmljZVBvcnRzRmllbGRzZXRDb21wb25lbnQpIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfSlcbiAgQElucHV0KClcbiAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRhaW5lclBvcnRTdWdnZXN0aW9uczogQ29udGFpbmVyUG9ydFtdID0gW107XG5cbiAgQElucHV0KClcbiAgZXhpc3RlZFBvcnRzOiBTZXJ2aWNlUG9ydFtdID0gW107XG5cbiAgQElucHV0KClcbiAgdGFyZ2V0Q29tcG9uZW50OiAnd29ya2xvYWQnIHwgJ3ZtJyB8ICdsYWJlbC1zZWxlY3RvcnMnID0gJ3dvcmtsb2FkJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgb3ZlcnJpZGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm93RHVwU2VydmljZTogVmFsaWRhdGVSb3dEdXBsaWNhdGVTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgdGhpcy52YWxpZGF0ZVNlcnZpY2VUeXBlID0gdGhpcy52YWxpZGF0ZVNlcnZpY2VUeXBlLmJpbmQodGhpcyk7XG4gIH1cblxuICBzZXJ2aWNlUG9ydFByb3RvY29scyA9IFNFUlZJQ0VfUE9SVF9QUk9UT0NPTFM7XG4gIG5hbWVQYXR0ZXJuID0gSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc0VxdWFsKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRPbkZvcm1BcnJheVJlc2l6ZUZuKCkge1xuICAgIHJldHVybiAoKSA9PiB0aGlzLmNyZWF0ZU5ld0NvbnRyb2woKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldFJlc291cmNlTWVyZ2VTdHJhdGVneSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV3Q29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogW1xuICAgICAgICAgICcnLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLm5hbWVQYXR0ZXJuLnBhdHRlcm4pLFxuICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNjMpLFxuICAgICAgICAgIF0sXG4gICAgICAgIF0sXG4gICAgICAgIHByb3RvY29sOiBbU0VSVklDRV9QT1JUX0JBU0VfUFJPVE9DT0xTWzBdXSxcbiAgICAgICAgYXBwUHJvdG9jb2w6IFtTRVJWSUNFX1BPUlRfUFJPVE9DT0xTWzBdLnRvTG93ZXJDYXNlKCldLFxuICAgICAgICBwb3J0OiBbXG4gICAgICAgICAgJycsXG4gICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDEpLCBWYWxpZGF0b3JzLm1heCg2NV81MzUpXSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFyZ2V0UG9ydDogW1xuICAgICAgICAgICcnLFxuICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSksIHRhcmdldFBvcnRWYWxpZGF0b3JdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsaWRhdG9yczogW1xuICAgICAgICAgIHRoaXMucm93RHVwU2VydmljZS5jcmVhdGVGb3JtQXJyYXlWYWxpZGF0b3Ioe1xuICAgICAgICAgICAgcm93S2V5czogW3sgcG9ydDogWydwb3J0JywgJ3Byb3RvY29sJ10gfSwgeyBuYW1lOiBbJ25hbWUnXSB9XSxcbiAgICAgICAgICAgIGZvcm1BcnJheTogdGhpcy5mb3JtLFxuICAgICAgICAgICAgdmFsdWVNYXBGbjogKGRhdGE6IFNlcnZpY2VQb3J0LCBwcm9wOiBrZXlvZiBTZXJ2aWNlUG9ydCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gJ25hbWUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbcHJvcF0gfHwgZ2V0U2VydmljZURlZmF1bHROYW1lKGRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBkYXRhW3Byb3BdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluaXREYXRhOiB0aGlzLmV4aXN0ZWRQb3J0cy5tYXAoKHsgcG9ydCwgcHJvdG9jb2wgfSkgPT4gKHtcbiAgICAgICAgICAgICAgcG9ydDoge1xuICAgICAgICAgICAgICAgIHBvcnQsXG4gICAgICAgICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVNlcnZpY2VUeXBlLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgdmFsaWRhdGVTZXJ2aWNlVHlwZShfY3RybD86IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICh0aGlzLnNlcnZpY2VUeXBlICE9PSAnTG9hZEJhbGFuY2VyJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZvciAoXG4gICAgICBsZXQgaSA9IDEsIHNlcnZpY2VQb3J0cyA9IHRoaXMuZm9ybU1vZGVsLCBsZW4gPSBzZXJ2aWNlUG9ydHMubGVuZ3RoO1xuICAgICAgaSA8IGxlbjtcbiAgICAgIGkrK1xuICAgICkge1xuICAgICAgY29uc3QgcHJldiA9IHNlcnZpY2VQb3J0c1tpIC0gMV07XG4gICAgICBjb25zdCBjdXJyID0gc2VydmljZVBvcnRzW2ldO1xuICAgICAgaWYgKHByZXYucHJvdG9jb2wgIT09IGN1cnIucHJvdG9jb2wpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcm90b2NvbDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBhZGFwdFJlc291cmNlTW9kZWwocG9ydHM6IFNlcnZpY2VQb3J0W10pOiBTZXJ2aWNlUG9ydFtdIHtcbiAgICByZXR1cm4gcG9ydHM/Lm1hcChwb3J0ID0+IHtcbiAgICAgIHBvcnQuYXBwUHJvdG9jb2wgPVxuICAgICAgICBwb3J0LmFwcFByb3RvY29sIHx8XG4gICAgICAgIChwb3J0LnByb3RvY29sPy50b0xvd2VyQ2FzZSgpIGFzICd0Y3AnIHwgJ3VkcCcpIHx8XG4gICAgICAgICd0Y3AnO1xuICAgICAgcmV0dXJuIHBvcnQ7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBhZGFwdEZvcm1Nb2RlbChwb3J0czogU2VydmljZVBvcnRbXSk6IFNlcnZpY2VQb3J0W10ge1xuICAgIHJldHVybiBwb3J0cy5tYXAoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbS50YXJnZXRQb3J0KSB7XG4gICAgICAgIGl0ZW0udGFyZ2V0UG9ydCA9IGdldE5vcm1hbGl6ZWRUYXJnZXRQb3J0KGl0ZW0udGFyZ2V0UG9ydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgaXRlbS50YXJnZXRQb3J0O1xuICAgICAgfVxuXG4gICAgICBpZiAoL15cXGQrJC8udGVzdChTdHJpbmcoaXRlbS5ub2RlUG9ydCkpKSB7XG4gICAgICAgIGl0ZW0ubm9kZVBvcnQgPSAraXRlbS5ub2RlUG9ydDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBpdGVtLm5vZGVQb3J0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVBcHBQcm90b2NvbChncm91cDogRm9ybUdyb3VwKSB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBncm91cC5nZXQoJ2FwcFByb3RvY29sJykudmFsdWU7XG4gICAgZ3JvdXBcbiAgICAgIC5nZXQoJ3Byb3RvY29sJylcbiAgICAgIC5zZXRWYWx1ZShwcm90b2NvbCA9PT0gJ1VEUCcudG9Mb3dlckNhc2UoKSA/ICdVRFAnIDogJ1RDUCcpO1xuICB9XG5cbiAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpIHtcbiAgICB0aGlzLmZvcm0/LmNvbnRyb2xzLmZvckVhY2goY3RybCA9PiBjdHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XG4gIH1cblxuICBnZXRDb250YWluZXJQb3J0U3VnZ2VzdGlvbnMoXG4gICAgY29udGFpbmVyUG9ydFN1Z2dlc3Rpb25zOiBDb250YWluZXJQb3J0W10gPSBbXSxcbiAgICBhcHBQcm90b2NvbDogTG93ZXJjYXNlPFNlcnZpY2VQb3J0UHJvdG9jb2w+LFxuICApIHtcbiAgICBjb25zdCBfcHJvdG9jb2wgPSBhcHBQcm90b2NvbCA9PT0gJ3VkcCcgPyAnVURQJyA6ICdUQ1AnO1xuICAgIHJldHVybiB1bmlxQnkoXG4gICAgICBjb250YWluZXJQb3J0U3VnZ2VzdGlvbnM/LmZpbHRlcihcbiAgICAgICAgY29udGFpbmVyUG9ydCA9PiAoY29udGFpbmVyUG9ydC5wcm90b2NvbCA/PyAnVENQJykgPT09IF9wcm90b2NvbCxcbiAgICAgICksXG4gICAgICBwb3J0ID0+IHBvcnQuY29udGFpbmVyUG9ydCArIChwb3J0Lm5hbWUgPyAnLScgKyBwb3J0Lm5hbWUgOiAnJyksXG4gICAgKTtcbiAgfVxuXG4gIC8vIOeCueWHu+W4puWQjeensOeahOWuueWZqOerr+WPo+aXtuS5n+WPquiuvue9ruerr+WPo+WPt1xuICB1cGRhdGVDb250YWluZXJQb3J0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgdmFsdWU6IHN0cmluZykge1xuICAgIGNvbnRyb2wuZ2V0KCd0YXJnZXRQb3J0JykucGF0Y2hWYWx1ZSh2YWx1ZS5zcGxpdCgnLScpWzBdKTtcbiAgfVxuXG4gIGF1dG9Db21wbGV0ZUNvbnRhaW5lclBvcnQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29udHJvbC5nZXQoJ3RhcmdldFBvcnQnKS5wYXRjaFZhbHVlKHZhbHVlID8gU3RyaW5nKHZhbHVlKSA6IG51bGwpO1xuICB9XG5cbiAgZ2V0Q29udGFpbmVyUG9ydFRyYW5zbGF0ZUtleShcbiAgICB0YXJnZXRDb21wb25lbnQ6ICd2bScgfCAnd29ya2xvYWQnIHwgJ2xhYmVsLXNlbGVjdG9ycycsXG4gICkge1xuICAgIHJldHVybiB0YXJnZXRDb21wb25lbnQgPT09ICd2bScgPyAndm1fcG9ydCcgOiAnY29udGFpbmVyX3BvcnQnO1xuICB9XG59XG4iLCI8YWNsLWFycmF5LWZvcm0tdGFibGVcbiAgKGFkZCk9XCJhZGQoZm9ybS5sZW5ndGgpXCJcbiAgKHJlbW92ZSk9XCJyZW1vdmUoJGV2ZW50KVwiXG4gIFttaW5Sb3ddPVwicmVxdWlyZWQgPyAxIDogMFwiXG4gIFtyb3dzXT1cImZvcm0uY29udHJvbHNcIlxuICBbZm9ybUdyb3VwXT1cIiRhbnkoZm9ybSlcIlxuICBjbGFzcz1cImZvcm0tdGFibGVfX2ZsZXgtbGF5b3V0IGlubGluZS1hY3Rpb24tY29sXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVIZWFkZXI+XG4gICAgPHRoPnt7ICduZXR3b3JrLnByb3RvY29sJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgPHRoPlxuICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1tYXJrXCI+Kjwvc3Bhbj5cbiAgICAgIHt7ICdzZXJ2aWNlX3BvcnQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC90aD5cbiAgICA8dGg+XG4gICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkLW1hcmtcIj4qPC9zcGFuPlxuICAgICAge3sgdGFyZ2V0Q29tcG9uZW50IHwgcHVyZTogZ2V0Q29udGFpbmVyUG9ydFRyYW5zbGF0ZUtleSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvdGg+XG4gICAgPHRoPlxuICAgICAge3sgJ25ldHdvcmsuc2VydmljZV9wb3J0X25hbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8YXVpLWljb25cbiAgICAgICAgY2xhc3M9XCJtbC00IGljb24tLWhlbHBcIlxuICAgICAgICBpY29uPVwicXVlc3Rpb25fY2lyY2xlXCJcbiAgICAgICAgW2F1aVRvb2x0aXBdPVwiXG4gICAgICAgICAgJ3NlcnZpY2VfbmFtZV9kZWZhdWx0X3RpcHMnXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldENvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICB8IHB1cmU6IGdldENvbnRhaW5lclBvcnRUcmFuc2xhdGVLZXlcbiAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9hdWktaWNvbj5cbiAgICA8L3RoPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyXG4gICAgKmFjbEFycmF5Rm9ybVRhYmxlUm93PVwibGV0IGNvbnRyb2w7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICBbZm9ybUdyb3VwTmFtZV09XCJpbmRleFwiXG4gID5cbiAgICA8dGQ+XG4gICAgICA8YXVpLXNlbGVjdFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhcHBQcm90b2NvbFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ1cGRhdGVBcHBQcm90b2NvbChjb250cm9sKVwiXG4gICAgICA+XG4gICAgICAgIDxhdWktb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHByb3RvY29sIG9mIHNlcnZpY2VQb3J0UHJvdG9jb2xzXCJcbiAgICAgICAgICBbdmFsdWVdPVwicHJvdG9jb2wgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgIFtsYWJlbF09XCJwcm90b2NvbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm90b2NvbCB9fVxuICAgICAgICA8L2F1aS1vcHRpb24+XG4gICAgICA8L2F1aS1zZWxlY3Q+XG4gICAgPC90ZD5cbiAgICA8dGQ+XG4gICAgICA8aW5wdXRcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwb3J0XCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXV0b0NvbXBsZXRlQ29udGFpbmVyUG9ydChjb250cm9sLCAkZXZlbnQpXCJcbiAgICAgICAgcmVxdWlyZWRcbiAgICAgIC8+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb250cm9sLmdldCgncG9ydCcpLmRpcnR5IHx8XG4gICAgICAgICAgJGFueShjb250cm9sQ29udGFpbmVyPy5mb3JtRGlyZWN0aXZlKT8uc3VibWl0dGVkXG4gICAgICAgIFwiXG4gICAgICAgIFtlcnJvcnNdPVwiY29udHJvbC5nZXQoJ3BvcnQnKS5lcnJvcnNcIlxuICAgICAgICBbY29udHJvbE5hbWVdPVwiJ3NlcnZpY2VfcG9ydCcgfCB0cmFuc2xhdGVcIlxuICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgPC90ZD5cbiAgICA8dGQ+XG4gICAgICA8aW5wdXRcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRhcmdldFBvcnRcIlxuICAgICAgICBbYXVpQXV0b2NvbXBsZXRlXT1cInN1Z2dlc3Rpb25zXCJcbiAgICAgICAgKGF1aUF1dG9jb21wbGV0ZVNlbGVjdGVkKT1cInVwZGF0ZUNvbnRhaW5lclBvcnQoY29udHJvbCwgJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPGF1aS1hdXRvY29tcGxldGUgI3N1Z2dlc3Rpb25zPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgcG9ydCBvZiBjb250YWluZXJQb3J0U3VnZ2VzdGlvbnNcbiAgICAgICAgICAgICAgfCBwdXJlXG4gICAgICAgICAgICAgICAgOiBnZXRDb250YWluZXJQb3J0U3VnZ2VzdGlvbnNcbiAgICAgICAgICAgICAgICA6IGNvbnRyb2wuZ2V0KCdhcHBQcm90b2NvbCcpLnZhbHVlXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhdWktc3VnZ2VzdGlvblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgcG9ydC5jb250YWluZXJQb3J0ICtcbiAgICAgICAgICAgICAgKHBvcnQubmFtZSA/ICctJyArIHBvcnQubmFtZSA6ICcnKSBhcyBzdWdnZXN0aW9uXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInN1Z2dlc3Rpb25cIlxuICAgICAgICAgICAgPnt7IHN1Z2dlc3Rpb24gfX08L2F1aS1zdWdnZXN0aW9uXG4gICAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYXVpLWF1dG9jb21wbGV0ZT5cbiAgICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNvbnRyb2wuZ2V0KCd0YXJnZXRQb3J0JykuZGlydHkgfHxcbiAgICAgICAgICAkYW55KGNvbnRyb2xDb250YWluZXI/LmZvcm1EaXJlY3RpdmUpPy5zdWJtaXR0ZWRcbiAgICAgICAgXCJcbiAgICAgICAgW2NvbnRyb2xOYW1lXT1cIlxuICAgICAgICAgIHRhcmdldENvbXBvbmVudCB8IHB1cmU6IGdldENvbnRhaW5lclBvcnRUcmFuc2xhdGVLZXkgfCB0cmFuc2xhdGVcbiAgICAgICAgXCJcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmdldCgndGFyZ2V0UG9ydCcpLmVycm9yc1wiXG4gICAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICAgIGNoYXJhY3RlcnM6XG4gICAgICAgICAgICAnbmV0d29yay5wb3J0X25hbWVfZXJyb3JfY2hhcmFjdGVyc190aXAnXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xOYW1lOlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgfCBwdXJlOiBnZXRDb250YWluZXJQb3J0VHJhbnNsYXRlS2V5XG4gICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydF9lbmRfY2hhcmFjdGVyOlxuICAgICAgICAgICAgJ25ldHdvcmsucG9ydF9uYW1lX2Vycm9yX3N0YXJ0X2VuZF9jaGFyYWN0ZXJfdGlwJ1xuICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBjb250cm9sTmFtZTpcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIHwgcHVyZTogZ2V0Q29udGFpbmVyUG9ydFRyYW5zbGF0ZUtleVxuICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L3RkPlxuICAgIDx0ZD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAvPlxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgIFtjb250cm9sTmFtZV09XCInbmV0d29yay5zZXJ2aWNlX3BvcnRfbmFtZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZ2V0KCduYW1lJykuZXJyb3JzXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICAgICAgcGF0dGVybjogbmFtZVBhdHRlcm4udGlwIHwgdHJhbnNsYXRlXG4gICAgICAgIH1cIlxuICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCBlcnJvciByb3cgLS0+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93RXJyb3I9XCJsZXQgY29udHJvbFwiPlxuICAgIDx0ZFxuICAgICAgY2xhc3M9XCJhY2wtdGFibGUtZm9ybS1lcnJvci1oaW50XCJcbiAgICAgIGNvbHNwYW49XCI1XCJcbiAgICA+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb250cm9sLmVycm9ycz8uZHVwbGljYXRlRXJyb3IgYXMgZHVwbGljYXRlRXJyb3I7XG4gICAgICAgICAgZWxzZSBvdGhlckVycm9yc1xuICAgICAgICBcIlxuICAgICAgICBbZXJyb3JzXT1cImR1cGxpY2F0ZUVycm9yXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICAgICAgcG9ydDpcbiAgICAgICAgICAgICduZXR3b3JrLmR1cGxpY2F0ZV9zZXJ2aWNlX3BvcnQnXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBwb3J0OiBkdXBsaWNhdGVFcnJvci5wb3J0Py5wb3J0IH0sXG4gICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICduZXR3b3JrLmR1cGxpY2F0ZV9zZXJ2aWNlX25hbWUnXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBuYW1lOiBkdXBsaWNhdGVFcnJvci5uYW1lPy5uYW1lIH1cbiAgICAgICAgfVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJFcnJvcnM+XG4gICAgICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgICAgIFtlcnJvcnNdPVwiY29udHJvbC5lcnJvcnNcIlxuICAgICAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICAgICAgcHJvdG9jb2w6ICduZXR3b3JrLmxiX3NlcnZpY2VfcHJvdG9jb2xfaGludCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9hY2wtYXJyYXktZm9ybS10YWJsZT5cbiJdfQ==
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vZmllbGRzZXQvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vZmllbGRzZXQvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixhQUFhLEVBQ2IsaUJBQWlCLEdBQ2xCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFLTCwyQkFBMkIsRUFDM0Isc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLDJCQUEyQixFQUMzQix1Q0FBdUMsRUFDdkMsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUVMLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsZ0JBQWdCLEVBRWhCLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJF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LDRCQUE0Qix1QkFFakIsS0FBSyxtQkFDVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsMkJBQTJCLENBQUMsV0FDL0I7b0JBQ1Asa0JBQWtCO29CQUNsQixXQUFXO29CQUNYLElBQUk7b0JBQ0osS0FBSztvQkFDTCxhQUFhO29CQUNiLG1CQUFtQjtvQkFDbkIsZ0JBQWdCO29CQUNoQixVQUFVO29CQUNWLGFBQWE7b0JBQ2IsUUFBUTtvQkFDUixZQUFZO29CQUNaLG9CQUFvQjtvQkFDcEIsb0JBQW9CO2lCQUNyQjs7c0JBa0NFLFFBQVE7K0RBekJQLFFBQVE7a0JBRFgsS0FBSztZQWFOLFdBQVc7a0JBRFYsS0FBSztZQUlOLHdCQUF3QjtrQkFEdkIsS0FBSztZQUlOLFlBQVk7a0JBRFgsS0FBSztZQUlOLGVBQWU7a0JBRGQsS0FBSzs7a0ZBM0JLLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFNlbGVjdE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbiAgY29lcmNlQXR0ckJvb2xlYW4sXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQ29udGFpbmVyUG9ydCxcbiAgU2VydmljZVBvcnQsXG4gIFNlcnZpY2VQb3J0UHJvdG9jb2wsXG4gIFNlcnZpY2VUeXBlLFxuICBTRVJWSUNFX1BPUlRfQkFTRV9QUk9UT0NPTFMsXG4gIFNFUlZJQ0VfUE9SVF9QUk9UT0NPTFMsXG4gIFZhbHVlSG9vayxcbiAgQXJyYXlGb3JtVGFibGVNb2R1bGUsXG4gIGlzRXF1YWwsXG4gIFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSxcbiAgSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLFxuICBUUkFOU0xBVEVfTU9EVUxFLFxuICBQdXJlUGlwZSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xDb250YWluZXIsXG4gIEZvcm1Hcm91cCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJhc2VSZXNvdXJjZUZvcm1BcnJheUNvbXBvbmVudCB9IGZyb20gJ25nLXJlc291cmNlLWZvcm0tdXRpbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZ2V0U2VydmljZURlZmF1bHROYW1lIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc2VydmljZS1pbnRlcm5hbHMnO1xuXG5jb25zdCBNQVhfUE9SVF9OVU1CRVIgPSA2NV81MzU7XG5cbmZ1bmN0aW9uIGdldE5vcm1hbGl6ZWRUYXJnZXRQb3J0KHRhcmdldFBvcnQ6IG51bWJlciB8IHN0cmluZykge1xuICByZXR1cm4gaXNOYU4oK3RhcmdldFBvcnQpID8gdGFyZ2V0UG9ydCA6ICt0YXJnZXRQb3J0O1xufVxuXG5jb25zdCB0YXJnZXRQb3J0VmFsaWRhdG9yID0gKGN0cmw6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICBjb25zdCB0YXJnZXRQb3J0OiBzdHJpbmcgPSBjdHJsLnZhbHVlO1xuXG4gIGlmICghdGFyZ2V0UG9ydCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghL15bXFxkYS16LV0rJC8udGVzdCh0YXJnZXRQb3J0KSkge1xuICAgIHJldHVybiB7XG4gICAgICBjaGFyYWN0ZXJzOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpZiAoL15cXGQrJC8udGVzdCh0YXJnZXRQb3J0KSkge1xuICAgIGNvbnN0IHBvcnRWYWx1ZSA9IHBhcnNlSW50KHRhcmdldFBvcnQsIDEwKTtcbiAgICBpZiAocG9ydFZhbHVlIDwgMSkge1xuICAgICAgcmV0dXJuIHsgbWluOiB7IG1pbjogMSB9IH07XG4gICAgfVxuICAgIGlmIChwb3J0VmFsdWUgPiBNQVhfUE9SVF9OVU1CRVIpIHtcbiAgICAgIHJldHVybiB7IG1heDogeyBtYXg6IE1BWF9QT1JUX05VTUJFUiB9IH07XG4gICAgfVxuICB9IGVsc2UgaWYgKC8oXlteYS16XSskKXwoXi0pfCgtJCl8KC17Mix9KS8udGVzdCh0YXJnZXRQb3J0KSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFydF9lbmRfY2hhcmFjdGVyOiB0cnVlLFxuICAgIH07XG4gIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1zZXJ2aWNlLXBvcnRzLWZpZWxkc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1ZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZV0sXG4gIGltcG9ydHM6IFtcbiAgICBBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBMb3dlckNhc2VQaXBlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVFJBTlNMQVRFX01PRFVMRSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgUHVyZVBpcGUsXG4gICAgU2VsZWN0TW9kdWxlLFxuICAgIEFycmF5Rm9ybVRhYmxlTW9kdWxlLFxuICAgIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlUG9ydHNGaWVsZHNldENvbXBvbmVudFxuICBleHRlbmRzIEJhc2VSZXNvdXJjZUZvcm1BcnJheUNvbXBvbmVudDxTZXJ2aWNlUG9ydD5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgX3JlcXVpcmVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4gfCAnJykge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQXR0ckJvb2xlYW4ocmVxdWlyZWQpO1xuICB9XG5cbiAgQFZhbHVlSG9vayhudWxsLCBudWxsLCBmdW5jdGlvbiAodGhpczogU2VydmljZVBvcnRzRmllbGRzZXRDb21wb25lbnQpIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfSlcbiAgQElucHV0KClcbiAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRhaW5lclBvcnRTdWdnZXN0aW9uczogQ29udGFpbmVyUG9ydFtdID0gW107XG5cbiAgQElucHV0KClcbiAgZXhpc3RlZFBvcnRzOiBTZXJ2aWNlUG9ydFtdID0gW107XG5cbiAgQElucHV0KClcbiAgdGFyZ2V0Q29tcG9uZW50OiAnd29ya2xvYWQnIHwgJ3ZtJyB8ICdsYWJlbC1zZWxlY3RvcnMnID0gJ3dvcmtsb2FkJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgb3ZlcnJpZGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm93RHVwU2VydmljZTogVmFsaWRhdGVSb3dEdXBsaWNhdGVTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgdGhpcy52YWxpZGF0ZVNlcnZpY2VUeXBlID0gdGhpcy52YWxpZGF0ZVNlcnZpY2VUeXBlLmJpbmQodGhpcyk7XG4gIH1cblxuICBzZXJ2aWNlUG9ydFByb3RvY29scyA9IFNFUlZJQ0VfUE9SVF9QUk9UT0NPTFM7XG4gIG5hbWVQYXR0ZXJuID0gSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc0VxdWFsKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRPbkZvcm1BcnJheVJlc2l6ZUZuKCkge1xuICAgIHJldHVybiAoKSA9PiB0aGlzLmNyZWF0ZU5ld0NvbnRyb2woKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldFJlc291cmNlTWVyZ2VTdHJhdGVneSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV3Q29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogW1xuICAgICAgICAgICcnLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLm5hbWVQYXR0ZXJuLnBhdHRlcm4pLFxuICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNjMpLFxuICAgICAgICAgIF0sXG4gICAgICAgIF0sXG4gICAgICAgIHByb3RvY29sOiBbU0VSVklDRV9QT1JUX0JBU0VfUFJPVE9DT0xTWzBdXSxcbiAgICAgICAgYXBwUHJvdG9jb2w6IFtTRVJWSUNFX1BPUlRfUFJPVE9DT0xTWzBdLnRvTG93ZXJDYXNlKCldLFxuICAgICAgICBwb3J0OiBbXG4gICAgICAgICAgJycsXG4gICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDEpLCBWYWxpZGF0b3JzLm1heCg2NV81MzUpXSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFyZ2V0UG9ydDogW1xuICAgICAgICAgICcnLFxuICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSksIHRhcmdldFBvcnRWYWxpZGF0b3JdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsaWRhdG9yczogW1xuICAgICAgICAgIHRoaXMucm93RHVwU2VydmljZS5jcmVhdGVGb3JtQXJyYXlWYWxpZGF0b3Ioe1xuICAgICAgICAgICAgcm93S2V5czogW3sgcG9ydDogWydwb3J0JywgJ3Byb3RvY29sJ10gfSwgeyBuYW1lOiBbJ25hbWUnXSB9XSxcbiAgICAgICAgICAgIGZvcm1BcnJheTogdGhpcy5mb3JtLFxuICAgICAgICAgICAgdmFsdWVNYXBGbjogKGRhdGE6IFNlcnZpY2VQb3J0LCBwcm9wOiBrZXlvZiBTZXJ2aWNlUG9ydCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gJ25hbWUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbcHJvcF0gfHwgZ2V0U2VydmljZURlZmF1bHROYW1lKGRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBkYXRhW3Byb3BdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluaXREYXRhOiB0aGlzLmV4aXN0ZWRQb3J0cy5tYXAoKHsgcG9ydCwgcHJvdG9jb2wgfSkgPT4gKHtcbiAgICAgICAgICAgICAgcG9ydDoge1xuICAgICAgICAgICAgICAgIHBvcnQsXG4gICAgICAgICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVNlcnZpY2VUeXBlLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgdmFsaWRhdGVTZXJ2aWNlVHlwZShfY3RybD86IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICh0aGlzLnNlcnZpY2VUeXBlICE9PSAnTG9hZEJhbGFuY2VyJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZvciAoXG4gICAgICBsZXQgaSA9IDEsIHNlcnZpY2VQb3J0cyA9IHRoaXMuZm9ybU1vZGVsLCBsZW4gPSBzZXJ2aWNlUG9ydHMubGVuZ3RoO1xuICAgICAgaSA8IGxlbjtcbiAgICAgIGkrK1xuICAgICkge1xuICAgICAgY29uc3QgcHJldiA9IHNlcnZpY2VQb3J0c1tpIC0gMV07XG4gICAgICBjb25zdCBjdXJyID0gc2VydmljZVBvcnRzW2ldO1xuICAgICAgaWYgKHByZXYucHJvdG9jb2wgIT09IGN1cnIucHJvdG9jb2wpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcm90b2NvbDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBhZGFwdFJlc291cmNlTW9kZWwocG9ydHM6IFNlcnZpY2VQb3J0W10pOiBTZXJ2aWNlUG9ydFtdIHtcbiAgICByZXR1cm4gcG9ydHM/Lm1hcChwb3J0ID0+IHtcbiAgICAgIHBvcnQuYXBwUHJvdG9jb2wgPVxuICAgICAgICBwb3J0LmFwcFByb3RvY29sIHx8XG4gICAgICAgIChwb3J0LnByb3RvY29sPy50b0xvd2VyQ2FzZSgpIGFzICd0Y3AnIHwgJ3VkcCcpIHx8XG4gICAgICAgICd0Y3AnO1xuICAgICAgcmV0dXJuIHBvcnQ7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBhZGFwdEZvcm1Nb2RlbChwb3J0czogU2VydmljZVBvcnRbXSk6IFNlcnZpY2VQb3J0W10ge1xuICAgIHJldHVybiBwb3J0cy5tYXAoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbS50YXJnZXRQb3J0KSB7XG4gICAgICAgIGl0ZW0udGFyZ2V0UG9ydCA9IGdldE5vcm1hbGl6ZWRUYXJnZXRQb3J0KGl0ZW0udGFyZ2V0UG9ydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgaXRlbS50YXJnZXRQb3J0O1xuICAgICAgfVxuXG4gICAgICBpZiAoL15cXGQrJC8udGVzdChTdHJpbmcoaXRlbS5ub2RlUG9ydCkpKSB7XG4gICAgICAgIGl0ZW0ubm9kZVBvcnQgPSAraXRlbS5ub2RlUG9ydDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBpdGVtLm5vZGVQb3J0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVBcHBQcm90b2NvbChncm91cDogRm9ybUdyb3VwKSB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBncm91cC5nZXQoJ2FwcFByb3RvY29sJykudmFsdWU7XG4gICAgZ3JvdXBcbiAgICAgIC5nZXQoJ3Byb3RvY29sJylcbiAgICAgIC5zZXRWYWx1ZShwcm90b2NvbCA9PT0gJ1VEUCcudG9Mb3dlckNhc2UoKSA/ICdVRFAnIDogJ1RDUCcpO1xuICB9XG5cbiAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpIHtcbiAgICB0aGlzLmZvcm0/LmNvbnRyb2xzLmZvckVhY2goY3RybCA9PiBjdHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XG4gIH1cblxuICBnZXRDb250YWluZXJQb3J0U3VnZ2VzdGlvbnMoXG4gICAgY29udGFpbmVyUG9ydFN1Z2dlc3Rpb25zOiBDb250YWluZXJQb3J0W10gPSBbXSxcbiAgICBhcHBQcm90b2NvbDogTG93ZXJjYXNlPFNlcnZpY2VQb3J0UHJvdG9jb2w+LFxuICApIHtcbiAgICBjb25zdCBfcHJvdG9jb2wgPSBhcHBQcm90b2NvbCA9PT0gJ3VkcCcgPyAnVURQJyA6ICdUQ1AnO1xuICAgIHJldHVybiB1bmlxQnkoXG4gICAgICBjb250YWluZXJQb3J0U3VnZ2VzdGlvbnM/LmZpbHRlcihcbiAgICAgICAgY29udGFpbmVyUG9ydCA9PiAoY29udGFpbmVyUG9ydC5wcm90b2NvbCA/PyAnVENQJykgPT09IF9wcm90b2NvbCxcbiAgICAgICksXG4gICAgICBwb3J0ID0+IHBvcnQuY29udGFpbmVyUG9ydCArIChwb3J0Lm5hbWUgPyAnLScgKyBwb3J0Lm5hbWUgOiAnJyksXG4gICAgKTtcbiAgfVxuXG4gIC8vIOeCueWHu+W4puWQjeensOeahOWuueWZqOerr+WPo+aXtuS5n+WPquiuvue9ruerr+WPo+WPt1xuICB1cGRhdGVDb250YWluZXJQb3J0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgdmFsdWU6IHN0cmluZykge1xuICAgIGNvbnRyb2wuZ2V0KCd0YXJnZXRQb3J0JykucGF0Y2hWYWx1ZSh2YWx1ZS5zcGxpdCgnLScpWzBdKTtcbiAgfVxuXG4gIGF1dG9Db21wbGV0ZUNvbnRhaW5lclBvcnQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29udHJvbC5nZXQoJ3RhcmdldFBvcnQnKS5wYXRjaFZhbHVlKHZhbHVlID8gU3RyaW5nKHZhbHVlKSA6IG51bGwpO1xuICB9XG5cbiAgZ2V0Q29udGFpbmVyUG9ydFRyYW5zbGF0ZUtleShcbiAgICB0YXJnZXRDb21wb25lbnQ6ICd2bScgfCAnd29ya2xvYWQnIHwgJ2xhYmVsLXNlbGVjdG9ycycsXG4gICkge1xuICAgIHJldHVybiB0YXJnZXRDb21wb25lbnQgPT09ICd2bScgPyAndm1fcG9ydCcgOiAnY29udGFpbmVyX3BvcnQnO1xuICB9XG59XG4iLCI8YWNsLWFycmF5LWZvcm0tdGFibGVcbiAgKGFkZCk9XCJhZGQoZm9ybS5sZW5ndGgpXCJcbiAgKHJlbW92ZSk9XCJyZW1vdmUoJGV2ZW50KVwiXG4gIFttaW5Sb3ddPVwicmVxdWlyZWQgPyAxIDogMFwiXG4gIFtyb3dzXT1cImZvcm0uY29udHJvbHNcIlxuICBbZm9ybUdyb3VwXT1cIiRhbnkoZm9ybSlcIlxuICBjbGFzcz1cImZvcm0tdGFibGVfX2ZsZXgtbGF5b3V0IGlubGluZS1hY3Rpb24tY29sXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVIZWFkZXI+XG4gICAgPHRoPnt7ICduZXR3b3JrLnByb3RvY29sJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgPHRoPlxuICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1tYXJrXCI+Kjwvc3Bhbj5cbiAgICAgIHt7ICdzZXJ2aWNlX3BvcnQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC90aD5cbiAgICA8dGg+XG4gICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkLW1hcmtcIj4qPC9zcGFuPlxuICAgICAge3sgdGFyZ2V0Q29tcG9uZW50IHwgcHVyZTogZ2V0Q29udGFpbmVyUG9ydFRyYW5zbGF0ZUtleSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvdGg+XG4gICAgPHRoPlxuICAgICAge3sgJ25ldHdvcmsuc2VydmljZV9wb3J0X25hbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8YXVpLWljb25cbiAgICAgICAgY2xhc3M9XCJtbC00IGljb24tLWhlbHBcIlxuICAgICAgICBpY29uPVwicXVlc3Rpb25fY2lyY2xlXCJcbiAgICAgICAgW2F1aVRvb2x0aXBdPVwiXG4gICAgICAgICAgJ3NlcnZpY2VfbmFtZV9kZWZhdWx0X3RpcHMnXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldENvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICB8IHB1cmU6IGdldENvbnRhaW5lclBvcnRUcmFuc2xhdGVLZXlcbiAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGUsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICBcIlxuICAgICAgPjwvYXVpLWljb24+XG4gICAgPC90aD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lclxuICAgICphY2xBcnJheUZvcm1UYWJsZVJvdz1cImxldCBjb250cm9sOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgW2Zvcm1Hcm91cE5hbWVdPVwiaW5kZXhcIlxuICA+XG4gICAgPHRkPlxuICAgICAgPGF1aS1zZWxlY3RcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYXBwUHJvdG9jb2xcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidXBkYXRlQXBwUHJvdG9jb2woY29udHJvbClcIlxuICAgICAgPlxuICAgICAgICA8YXVpLW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm90b2NvbCBvZiBzZXJ2aWNlUG9ydFByb3RvY29sc1wiXG4gICAgICAgICAgW3ZhbHVlXT1cInByb3RvY29sIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICBbbGFiZWxdPVwicHJvdG9jb2xcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvdG9jb2wgfX1cbiAgICAgICAgPC9hdWktb3B0aW9uPlxuICAgICAgPC9hdWktc2VsZWN0PlxuICAgIDwvdGQ+XG4gICAgPHRkPlxuICAgICAgPGlucHV0XG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicG9ydFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImF1dG9Db21wbGV0ZUNvbnRhaW5lclBvcnQoY29udHJvbCwgJGV2ZW50KVwiXG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAvPlxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY29udHJvbC5nZXQoJ3BvcnQnKS5kaXJ0eSB8fFxuICAgICAgICAgICRhbnkoY29udHJvbENvbnRhaW5lcj8uZm9ybURpcmVjdGl2ZSk/LnN1Ym1pdHRlZFxuICAgICAgICBcIlxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZ2V0KCdwb3J0JykuZXJyb3JzXCJcbiAgICAgICAgW2NvbnRyb2xOYW1lXT1cIidzZXJ2aWNlX3BvcnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgIDwvdGQ+XG4gICAgPHRkPlxuICAgICAgPGlucHV0XG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXJnZXRQb3J0XCJcbiAgICAgICAgW2F1aUF1dG9jb21wbGV0ZV09XCJzdWdnZXN0aW9uc1wiXG4gICAgICAgIChhdWlBdXRvY29tcGxldGVTZWxlY3RlZCk9XCJ1cGRhdGVDb250YWluZXJQb3J0KGNvbnRyb2wsICRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxhdWktYXV0b2NvbXBsZXRlICNzdWdnZXN0aW9ucz5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IHBvcnQgb2YgY29udGFpbmVyUG9ydFN1Z2dlc3Rpb25zXG4gICAgICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgICAgIDogZ2V0Q29udGFpbmVyUG9ydFN1Z2dlc3Rpb25zXG4gICAgICAgICAgICAgICAgOiBjb250cm9sLmdldCgnYXBwUHJvdG9jb2wnKS52YWx1ZVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXVpLXN1Z2dlc3Rpb25cbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHBvcnQuY29udGFpbmVyUG9ydCArXG4gICAgICAgICAgICAgIChwb3J0Lm5hbWUgPyAnLScgKyBwb3J0Lm5hbWUgOiAnJykgYXMgc3VnZ2VzdGlvblxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzdWdnZXN0aW9uXCJcbiAgICAgICAgICAgID57eyBzdWdnZXN0aW9uIH19PC9hdWktc3VnZ2VzdGlvblxuICAgICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2F1aS1hdXRvY29tcGxldGU+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb250cm9sLmdldCgndGFyZ2V0UG9ydCcpLmRpcnR5IHx8XG4gICAgICAgICAgJGFueShjb250cm9sQ29udGFpbmVyPy5mb3JtRGlyZWN0aXZlKT8uc3VibWl0dGVkXG4gICAgICAgIFwiXG4gICAgICAgIFtjb250cm9sTmFtZV09XCJcbiAgICAgICAgICB0YXJnZXRDb21wb25lbnQgfCBwdXJlOiBnZXRDb250YWluZXJQb3J0VHJhbnNsYXRlS2V5IHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIFtlcnJvcnNdPVwiY29udHJvbC5nZXQoJ3RhcmdldFBvcnQnKS5lcnJvcnNcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cIntcbiAgICAgICAgICBjaGFyYWN0ZXJzOlxuICAgICAgICAgICAgJ25ldHdvcmsucG9ydF9uYW1lX2Vycm9yX2NoYXJhY3RlcnNfdGlwJ1xuICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBjb250cm9sTmFtZTpcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIHwgcHVyZTogZ2V0Q29udGFpbmVyUG9ydFRyYW5zbGF0ZUtleVxuICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXJ0X2VuZF9jaGFyYWN0ZXI6XG4gICAgICAgICAgICAnbmV0d29yay5wb3J0X25hbWVfZXJyb3Jfc3RhcnRfZW5kX2NoYXJhY3Rlcl90aXAnXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xOYW1lOlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgfCBwdXJlOiBnZXRDb250YWluZXJQb3J0VHJhbnNsYXRlS2V5XG4gICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgIH1cIlxuICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgPC90ZD5cbiAgICA8dGQ+XG4gICAgICA8aW5wdXRcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgLz5cbiAgICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgICBbY29udHJvbE5hbWVdPVwiJ25ldHdvcmsuc2VydmljZV9wb3J0X25hbWUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmdldCgnbmFtZScpLmVycm9yc1wiXG4gICAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICAgIHBhdHRlcm46IG5hbWVQYXR0ZXJuLnRpcCB8IHRyYW5zbGF0ZSxcbiAgICAgICAgfVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IGVycm9yIHJvdyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3dFcnJvcj1cImxldCBjb250cm9sXCI+XG4gICAgPHRkXG4gICAgICBjbGFzcz1cImFjbC10YWJsZS1mb3JtLWVycm9yLWhpbnRcIlxuICAgICAgY29sc3Bhbj1cIjVcIlxuICAgID5cbiAgICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNvbnRyb2wuZXJyb3JzPy5kdXBsaWNhdGVFcnJvciBhcyBkdXBsaWNhdGVFcnJvcjtcbiAgICAgICAgICBlbHNlIG90aGVyRXJyb3JzXG4gICAgICAgIFwiXG4gICAgICAgIFtlcnJvcnNdPVwiZHVwbGljYXRlRXJyb3JcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cIntcbiAgICAgICAgICBwb3J0OlxuICAgICAgICAgICAgJ25ldHdvcmsuZHVwbGljYXRlX3NlcnZpY2VfcG9ydCdcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IHBvcnQ6IGR1cGxpY2F0ZUVycm9yLnBvcnQ/LnBvcnQgfSxcbiAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgJ25ldHdvcmsuZHVwbGljYXRlX3NlcnZpY2VfbmFtZSdcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IG5hbWU6IGR1cGxpY2F0ZUVycm9yLm5hbWU/Lm5hbWUgfSxcbiAgICAgICAgfVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJFcnJvcnM+XG4gICAgICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgICAgIFtlcnJvcnNdPVwiY29udHJvbC5lcnJvcnNcIlxuICAgICAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICAgICAgcHJvdG9jb2w6ICduZXR3b3JrLmxiX3NlcnZpY2VfcHJvdG9jb2xfaGludCcgfCB0cmFuc2xhdGUsXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYWNsLWFycmF5LWZvcm0tdGFibGU+XG4iXX0=
@@ -254,7 +254,7 @@ export class NetworkPolicyRuleTableComponent {
254
254
  NgSwitchDefault,
255
255
  LabelSelectorDisplayComponent,
256
256
  IPBlockDisplayComponent,
257
- ], template: "<acl-table\n [dataSource]=\"rules\"\n [columns]=\"COLUMNS\"\n>\n <ng-container *aclTableCellDef=\"'network.source_peer'; let rowData\">\n <div [ngSwitch]=\"rowData.peerType\">\n <div *ngSwitchCase=\"'clusterLevel'\">\n {{ 'network.pod_in_current_cluster' | translate }}\n </div>\n <div *ngSwitchCase=\"'namespaceLevel'\">\n {{ 'network.pod_in_current_namespace' | translate }}\n </div>\n <div *ngSwitchCase=\"'ipBlock'\">\n {{ 'network.ip_segment' | translate }}\n </div>\n <div *ngSwitchDefault>-</div>\n </div>\n </ng-container>\n <ng-container *aclTableCellDef=\"'network.rule'; let rowData\">\n <ng-container\n *ngIf=\"\n rowData.podSelector || rowData.namespaceSelector || rowData.ipBlock;\n else emptyRule\n \"\n >\n <ng-template\n [ngTemplateOutlet]=\"ruleTemp\"\n [ngTemplateOutletContext]=\"{\n podSelector: rowData.podSelector,\n namespaceSelector: rowData.namespaceSelector,\n ipBlock: rowData.ipBlock\n }\"\n ></ng-template>\n </ng-container>\n <ng-template #emptyRule>\n {{ 'network.unlimited_' + policyType + '_traffic' | translate }}\n </ng-template>\n </ng-container>\n <ng-container *aclTableCellDef=\"'network.port'; let rowData\">\n <ng-template\n [ngTemplateOutlet]=\"portTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: rowData.ports\n }\"\n ></ng-template>\n </ng-container>\n</acl-table>\n\n<ng-template\n #ruleTemp\n let-podSelector=\"podSelector\"\n let-namespaceSelector=\"namespaceSelector\"\n let-ipBlock=\"ipBlock\"\n>\n <div class=\"tw-flex tw-flex-col\">\n <ng-container *ngIf=\"podSelector\">\n <acl-label-selector-display\n [showTitle]=\"true\"\n [type]=\"'podSelector'\"\n [selector]=\"podSelector\"\n [emptyPlaceholder]=\"'network.any_pod' | translate\"\n ></acl-label-selector-display>\n </ng-container>\n <div\n *ngIf=\"podSelector && namespaceSelector\"\n class=\"tw-rounded-[50%] tw-w-fit tw-px-4 tw-my-4 tw-bg-n-6 tw-text-s\"\n >\n {{ 'network.and' | translate }}\n </div>\n <ng-container *ngIf=\"namespaceSelector\">\n <acl-label-selector-display\n [showTitle]=\"true\"\n [type]=\"'namespaceSelector'\"\n [selector]=\"namespaceSelector\"\n [emptyPlaceholder]=\"'network.any_namespace' | translate\"\n ></acl-label-selector-display>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"ipBlock\">\n <acl-ip-block-display [ipBlock]=\"ipBlock\"></acl-ip-block-display>\n </ng-container>\n</ng-template>\n\n<ng-template\n #portTemplate\n let-ports\n>\n <ul *ngIf=\"ports?.length; else empty\">\n <li\n class=\"tw-mb-2\"\n *ngFor=\"let item of ports\"\n >\n {{ item.protocol }}/{{ item.port }}\n <span *ngIf=\"item.endPort\"> ~ {{ item.endPort }} </span>\n </li>\n </ul>\n <ng-template #empty>\n {{ 'network.any_port' | translate }}\n </ng-template>\n</ng-template>\n" }]
257
+ ], template: "<acl-table\n [dataSource]=\"rules\"\n [columns]=\"COLUMNS\"\n>\n <ng-container *aclTableCellDef=\"'network.source_peer'; let rowData\">\n <div [ngSwitch]=\"rowData.peerType\">\n <div *ngSwitchCase=\"'clusterLevel'\">\n {{ 'network.pod_in_current_cluster' | translate }}\n </div>\n <div *ngSwitchCase=\"'namespaceLevel'\">\n {{ 'network.pod_in_current_namespace' | translate }}\n </div>\n <div *ngSwitchCase=\"'ipBlock'\">\n {{ 'network.ip_segment' | translate }}\n </div>\n <div *ngSwitchDefault>-</div>\n </div>\n </ng-container>\n <ng-container *aclTableCellDef=\"'network.rule'; let rowData\">\n <ng-container\n *ngIf=\"\n rowData.podSelector || rowData.namespaceSelector || rowData.ipBlock;\n else emptyRule\n \"\n >\n <ng-template\n [ngTemplateOutlet]=\"ruleTemp\"\n [ngTemplateOutletContext]=\"{\n podSelector: rowData.podSelector,\n namespaceSelector: rowData.namespaceSelector,\n ipBlock: rowData.ipBlock,\n }\"\n ></ng-template>\n </ng-container>\n <ng-template #emptyRule>\n {{ 'network.unlimited_' + policyType + '_traffic' | translate }}\n </ng-template>\n </ng-container>\n <ng-container *aclTableCellDef=\"'network.port'; let rowData\">\n <ng-template\n [ngTemplateOutlet]=\"portTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: rowData.ports,\n }\"\n ></ng-template>\n </ng-container>\n</acl-table>\n\n<ng-template\n #ruleTemp\n let-podSelector=\"podSelector\"\n let-namespaceSelector=\"namespaceSelector\"\n let-ipBlock=\"ipBlock\"\n>\n <div class=\"tw-flex tw-flex-col\">\n <ng-container *ngIf=\"podSelector\">\n <acl-label-selector-display\n [showTitle]=\"true\"\n [type]=\"'podSelector'\"\n [selector]=\"podSelector\"\n [emptyPlaceholder]=\"'network.any_pod' | translate\"\n ></acl-label-selector-display>\n </ng-container>\n <div\n *ngIf=\"podSelector && namespaceSelector\"\n class=\"tw-rounded-[50%] tw-w-fit tw-px-4 tw-my-4 tw-bg-n-6 tw-text-s\"\n >\n {{ 'network.and' | translate }}\n </div>\n <ng-container *ngIf=\"namespaceSelector\">\n <acl-label-selector-display\n [showTitle]=\"true\"\n [type]=\"'namespaceSelector'\"\n [selector]=\"namespaceSelector\"\n [emptyPlaceholder]=\"'network.any_namespace' | translate\"\n ></acl-label-selector-display>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"ipBlock\">\n <acl-ip-block-display [ipBlock]=\"ipBlock\"></acl-ip-block-display>\n </ng-container>\n</ng-template>\n\n<ng-template\n #portTemplate\n let-ports\n>\n <ul *ngIf=\"ports?.length; else empty\">\n <li\n class=\"tw-mb-2\"\n *ngFor=\"let item of ports\"\n >\n {{ item.protocol }}/{{ item.port }}\n <span *ngIf=\"item.endPort\"> ~ {{ item.endPort }} </span>\n </li>\n </ul>\n <ng-template #empty>\n {{ 'network.any_port' | translate }}\n </ng-template>\n</ng-template>\n" }]
258
258
  }], null, { rules: [{
259
259
  type: Input,
260
260
  args: [{
@@ -266,4 +266,4 @@ export class NetworkPolicyRuleTableComponent {
266
266
  args: [{ required: true }]
267
267
  }] }); })();
268
268
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NetworkPolicyRuleTableComponent, { className: "NetworkPolicyRuleTableComponent", filePath: "lib/features/network-policy/components/rule-table/component.ts", lineNumber: 80 }); })();
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvZmVhdHVyZXMvbmV0d29yay1wb2xpY3kvY29tcG9uZW50cy9ydWxlLXRhYmxlL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvbmV0d29yay9zcmMvbGliL2ZlYXR1cmVzL25ldHdvcmstcG9saWN5L2NvbXBvbmVudHMvcnVsZS10YWJsZS90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFdBQVcsR0FDWixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTCxLQUFLLEVBQ0wsSUFBSSxFQUNKLFFBQVEsRUFDUixZQUFZLEVBQ1osZUFBZSxFQUNmLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0lDckJwRSwyQkFBb0M7SUFDbEMsWUFDRjs7SUFBQSxpQkFBTTs7SUFESixjQUNGO0lBREUsdUZBQ0Y7OztJQUNBLDJCQUFzQztJQUNwQyxZQUNGOztJQUFBLGlCQUFNOztJQURKLGNBQ0Y7SUFERSx5RkFDRjs7O0lBQ0EsMkJBQStCO0lBQzdCLFlBQ0Y7O0lBQUEsaUJBQU07O0lBREosY0FDRjtJQURFLDJFQUNGOzs7SUFDQSwyQkFBc0I7SUFBQSxpQkFBQztJQUFBLGlCQUFNOzs7SUFYakMsNkJBQW9F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QUc3QixDQUNULEtBQTZELEVBQzdELEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lDcEYxQixvQ0FHQztZQW1DQyxBQXBCQSxBQWRBLGtHQUFvRSxxRkFjUCxxRkFvQkE7WUFRL0QsaUJBQVk7WUFzQ1osQUFwQ0EsaUlBS0Msb0hBa0NBOztZQXJGQyxBQURBLHNDQUFvQix3QkFDRDtZQUVKLGNBQXdDO1lBQXhDLHVEQUF3QztZQWN4QyxjQUFpQztZQUFqQyxnREFBaUM7WUFvQmpDLGNBQWlDO1lBQWpDLGdEQUFpQzs0QkQ0QjlDLFdBQVcsaUVBRVgsSUFBSTtZQUNKLEtBQUs7WUFDTCxnQkFBZ0I7WUFFaEIsUUFBUTtZQUNSLFlBQVk7WUFDWixlQUFlO1lBQ2YsNkJBQTZCO1lBQzdCLHVCQUF1Qjs7aUZBR2QsK0JBQStCO2NBbkIzQyxTQUFTOzZCQUNJLElBQUksWUFDTiwrQkFBK0IsbUJBRXhCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7b0JBQ1AsV0FBVztvQkFDWCxnQkFBZ0I7b0JBQ2hCLElBQUk7b0JBQ0osS0FBSztvQkFDTCxnQkFBZ0I7b0JBQ2hCLFFBQVE7b0JBQ1IsUUFBUTtvQkFDUixZQUFZO29CQUNaLGVBQWU7b0JBQ2YsNkJBQTZCO29CQUM3Qix1QkFBdUI7aUJBQ3hCO2dCQVNELEtBQUs7a0JBTkosS0FBSzttQkFBQztvQkFDTCxRQUFRLEVBQUUsSUFBSTtvQkFDZCxTQUFTLEVBQUUsQ0FDVCxLQUE2RCxFQUM3RCxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztpQkFDdkI7WUFJRCxVQUFVO2tCQURULEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFOztrRkFUZCwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBMYWJlbFNlbGVjdG9yLFxuICBQdXJlUGlwZSxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgVGFibGVNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7XG4gIE5nRm9yLFxuICBOZ0lmLFxuICBOZ1N3aXRjaCxcbiAgTmdTd2l0Y2hDYXNlLFxuICBOZ1N3aXRjaERlZmF1bHQsXG4gIE5nVGVtcGxhdGVPdXRsZXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBJUEJsb2NrLFxuICBOZXR3b3JrUG9saWN5RWdyZXNzUnVsZSxcbiAgTmV0d29ya1BvbGljeUluZ3Jlc3NSdWxlLFxuICBOZXR3b3JrUG9saWN5UG9ydCxcbiAgUG9saWN5VHlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvazhzLWV4cG9ydHMnO1xuaW1wb3J0IHsgZ2V0UGVlclR5cGUgfSBmcm9tICcuLi8uLi9mb3JtL25ldHdvcmstcG9saWN5LXBlZXIvY29tcG9uZW50JztcbmltcG9ydCB7IE5ldHdvcmtQb2xpY3lQZWVyVHlwZSB9IGZyb20gJy4uL2FkZC1wZWVyLXJ1bGUtaGFuZGxlci9jb21wb25lbnQnO1xuaW1wb3J0IHsgTGFiZWxTZWxlY3RvckRpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi9sYWJlbC1zZWxlY3Rvci1kaXNwbGF5L2NvbXBvbmVudCc7XG5cbmltcG9ydCB7IElQQmxvY2tEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi8uLi9pcC1ibG9jay1kaXNwbGF5L2NvbXBvbmVudCc7XG5cbmNvbnN0IENPTFVNTlMgPSBbJ25ldHdvcmsuc291cmNlX3BlZXInLCAnbmV0d29yay5ydWxlJywgJ25ldHdvcmsucG9ydCddO1xuXG5pbnRlcmZhY2UgUnVsZUxpc3RNb2RlbCB7XG4gIHBlZXJUeXBlPzogTmV0d29ya1BvbGljeVBlZXJUeXBlO1xuICBuYW1lc3BhY2VTZWxlY3Rvcj86IExhYmVsU2VsZWN0b3I7XG4gIHBvZFNlbGVjdG9yPzogTGFiZWxTZWxlY3RvcjtcbiAgaXBCbG9jaz86IElQQmxvY2s7XG4gIHBvcnRzPzogTmV0d29ya1BvbGljeVBvcnRbXTtcbn1cblxuY29uc3QgdG9SdWxlTGlzdCA9IChcbiAgcnVsZXM6IE5ldHdvcmtQb2xpY3lJbmdyZXNzUnVsZVtdIHwgTmV0d29ya1BvbGljeUVncmVzc1J1bGVbXSxcbikgPT4ge1xuICByZXR1cm4gcnVsZXMuZmxhdE1hcChydWxlID0+IHtcbiAgICBjb25zdCBwb3J0cyA9IHJ1bGUucG9ydHM7XG4gICAgY29uc3QgcnVsZXMgPVxuICAgICAgKHJ1bGUgYXMgTmV0d29ya1BvbGljeUluZ3Jlc3NSdWxlKS5mcm9tIHx8XG4gICAgICAocnVsZSBhcyBOZXR3b3JrUG9saWN5RWdyZXNzUnVsZSkudG87XG5cbiAgICByZXR1cm4gKFxuICAgICAgcnVsZXM/Lm1hcChwZWVyID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wZWVyLFxuICAgICAgICAgIHBlZXJUeXBlOiBnZXRQZWVyVHlwZShwZWVyKSxcbiAgICAgICAgICBwb3J0cyxcbiAgICAgICAgfSBhcyBSdWxlTGlzdE1vZGVsO1xuICAgICAgfSkgfHwgW3sgcG9ydHMgfV1cbiAgICApO1xuICB9KTtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1uZXR3b3JrLXBvbGljeS1ydWxlLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBUYWJsZU1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIE5nSWYsXG4gICAgTmdGb3IsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBQdXJlUGlwZSxcbiAgICBOZ1N3aXRjaCxcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIExhYmVsU2VsZWN0b3JEaXNwbGF5Q29tcG9uZW50LFxuICAgIElQQmxvY2tEaXNwbGF5Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOZXR3b3JrUG9saWN5UnVsZVRhYmxlQ29tcG9uZW50IHtcbiAgQElucHV0KHtcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB0cmFuc2Zvcm06IChcbiAgICAgIHJ1bGVzOiBOZXR3b3JrUG9saWN5SW5ncmVzc1J1bGVbXSB8IE5ldHdvcmtQb2xpY3lFZ3Jlc3NSdWxlW10sXG4gICAgKSA9PiB0b1J1bGVMaXN0KHJ1bGVzKSxcbiAgfSlcbiAgcnVsZXM6IFJ1bGVMaXN0TW9kZWxbXSA9IFt7fV07XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+O1xuXG4gIENPTFVNTlMgPSBDT0xVTU5TO1xufVxuIiwiPGFjbC10YWJsZVxuICBbZGF0YVNvdXJjZV09XCJydWxlc1wiXG4gIFtjb2x1bW5zXT1cIkNPTFVNTlNcIlxuPlxuICA8bmctY29udGFpbmVyICphY2xUYWJsZUNlbGxEZWY9XCInbmV0d29yay5zb3VyY2VfcGVlcic7IGxldCByb3dEYXRhXCI+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwicm93RGF0YS5wZWVyVHlwZVwiPlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2NsdXN0ZXJMZXZlbCdcIj5cbiAgICAgICAge3sgJ25ldHdvcmsucG9kX2luX2N1cnJlbnRfY2x1c3RlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ25hbWVzcGFjZUxldmVsJ1wiPlxuICAgICAgICB7eyAnbmV0d29yay5wb2RfaW5fY3VycmVudF9uYW1lc3BhY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpcEJsb2NrJ1wiPlxuICAgICAgICB7eyAnbmV0d29yay5pcF9zZWdtZW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQ+LTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqYWNsVGFibGVDZWxsRGVmPVwiJ25ldHdvcmsucnVsZSc7IGxldCByb3dEYXRhXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgcm93RGF0YS5wb2RTZWxlY3RvciB8fCByb3dEYXRhLm5hbWVzcGFjZVNlbGVjdG9yIHx8IHJvd0RhdGEuaXBCbG9jaztcbiAgICAgICAgZWxzZSBlbXB0eVJ1bGVcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJ1bGVUZW1wXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICBwb2RTZWxlY3Rvcjogcm93RGF0YS5wb2RTZWxlY3RvcixcbiAgICAgICAgICBuYW1lc3BhY2VTZWxlY3Rvcjogcm93RGF0YS5uYW1lc3BhY2VTZWxlY3RvcixcbiAgICAgICAgICBpcEJsb2NrOiByb3dEYXRhLmlwQmxvY2tcbiAgICAgICAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5UnVsZT5cbiAgICAgIHt7ICduZXR3b3JrLnVubGltaXRlZF8nICsgcG9saWN5VHlwZSArICdfdHJhZmZpYycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqYWNsVGFibGVDZWxsRGVmPVwiJ25ldHdvcmsucG9ydCc7IGxldCByb3dEYXRhXCI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb3J0VGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgJGltcGxpY2l0OiByb3dEYXRhLnBvcnRzXG4gICAgICB9XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG48L2FjbC10YWJsZT5cblxuPG5nLXRlbXBsYXRlXG4gICNydWxlVGVtcFxuICBsZXQtcG9kU2VsZWN0b3I9XCJwb2RTZWxlY3RvclwiXG4gIGxldC1uYW1lc3BhY2VTZWxlY3Rvcj1cIm5hbWVzcGFjZVNlbGVjdG9yXCJcbiAgbGV0LWlwQmxvY2s9XCJpcEJsb2NrXCJcbj5cbiAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctZmxleC1jb2xcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9kU2VsZWN0b3JcIj5cbiAgICAgIDxhY2wtbGFiZWwtc2VsZWN0b3ItZGlzcGxheVxuICAgICAgICBbc2hvd1RpdGxlXT1cInRydWVcIlxuICAgICAgICBbdHlwZV09XCIncG9kU2VsZWN0b3InXCJcbiAgICAgICAgW3NlbGVjdG9yXT1cInBvZFNlbGVjdG9yXCJcbiAgICAgICAgW2VtcHR5UGxhY2Vob2xkZXJdPVwiJ25ldHdvcmsuYW55X3BvZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgPjwvYWNsLWxhYmVsLXNlbGVjdG9yLWRpc3BsYXk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJwb2RTZWxlY3RvciAmJiBuYW1lc3BhY2VTZWxlY3RvclwiXG4gICAgICBjbGFzcz1cInR3LXJvdW5kZWQtWzUwJV0gdHctdy1maXQgdHctcHgtNCB0dy1teS00IHR3LWJnLW4tNiB0dy10ZXh0LXNcIlxuICAgID5cbiAgICAgIHt7ICduZXR3b3JrLmFuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmFtZXNwYWNlU2VsZWN0b3JcIj5cbiAgICAgIDxhY2wtbGFiZWwtc2VsZWN0b3ItZGlzcGxheVxuICAgICAgICBbc2hvd1RpdGxlXT1cInRydWVcIlxuICAgICAgICBbdHlwZV09XCInbmFtZXNwYWNlU2VsZWN0b3InXCJcbiAgICAgICAgW3NlbGVjdG9yXT1cIm5hbWVzcGFjZVNlbGVjdG9yXCJcbiAgICAgICAgW2VtcHR5UGxhY2Vob2xkZXJdPVwiJ25ldHdvcmsuYW55X25hbWVzcGFjZScgfCB0cmFuc2xhdGVcIlxuICAgICAgPjwvYWNsLWxhYmVsLXNlbGVjdG9yLWRpc3BsYXk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpcEJsb2NrXCI+XG4gICAgPGFjbC1pcC1ibG9jay1kaXNwbGF5IFtpcEJsb2NrXT1cImlwQmxvY2tcIj48L2FjbC1pcC1ibG9jay1kaXNwbGF5PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjcG9ydFRlbXBsYXRlXG4gIGxldC1wb3J0c1xuPlxuICA8dWwgKm5nSWY9XCJwb3J0cz8ubGVuZ3RoOyBlbHNlIGVtcHR5XCI+XG4gICAgPGxpXG4gICAgICBjbGFzcz1cInR3LW1iLTJcIlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcG9ydHNcIlxuICAgID5cbiAgICAgIHt7IGl0ZW0ucHJvdG9jb2wgfX0ve3sgaXRlbS5wb3J0IH19XG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uZW5kUG9ydFwiPiB+IHt7IGl0ZW0uZW5kUG9ydCB9fSA8L3NwYW4+XG4gICAgPC9saT5cbiAgPC91bD5cbiAgPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICB7eyAnbmV0d29yay5hbnlfcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvZmVhdHVyZXMvbmV0d29yay1wb2xpY3kvY29tcG9uZW50cy9ydWxlLXRhYmxlL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvbmV0d29yay9zcmMvbGliL2ZlYXR1cmVzL25ldHdvcmstcG9saWN5L2NvbXBvbmVudHMvcnVsZS10YWJsZS90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFdBQVcsR0FDWixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTCxLQUFLLEVBQ0wsSUFBSSxFQUNKLFFBQVEsRUFDUixZQUFZLEVBQ1osZUFBZSxFQUNmLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0lDckJwRSwyQkFBb0M7SUFDbEMsWUFDRjs7SUFBQSxpQkFBTTs7SUFESixjQUNGO0lBREUsdUZBQ0Y7OztJQUNBLDJCQUFzQztJQUNwQyxZQUNGOztJQUFBLGlCQUFNOztJQURKLGNBQ0Y7SUFERSx5RkFDRjs7O0lBQ0EsMkJBQStCO0lBQzdCLFlBQ0Y7O0lBQUEsaUJBQU07O0lBREosY0FDRjtJQURFLDJFQUNGOzs7SUFDQSwyQkFBc0I7SUFBQSxpQkFBQztJQUFBLGlCQUFNOzs7SUFYakMsNkJBQW9F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QUc3QixDQUNULEtBQTZELEVBQzdELEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lDcEYxQixvQ0FHQztZQW1DQyxBQXBCQSxBQWRBLGtHQUFvRSxxRkFjUCxxRkFvQkE7WUFRL0QsaUJBQVk7WUFzQ1osQUFwQ0EsaUlBS0Msb0hBa0NBOztZQXJGQyxBQURBLHNDQUFvQix3QkFDRDtZQUVKLGNBQXdDO1lBQXhDLHVEQUF3QztZQWN4QyxjQUFpQztZQUFqQyxnREFBaUM7WUFvQmpDLGNBQWlDO1lBQWpDLGdEQUFpQzs0QkQ0QjlDLFdBQVcsaUVBRVgsSUFBSTtZQUNKLEtBQUs7WUFDTCxnQkFBZ0I7WUFFaEIsUUFBUTtZQUNSLFlBQVk7WUFDWixlQUFlO1lBQ2YsNkJBQTZCO1lBQzdCLHVCQUF1Qjs7aUZBR2QsK0JBQStCO2NBbkIzQyxTQUFTOzZCQUNJLElBQUksWUFDTiwrQkFBK0IsbUJBRXhCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7b0JBQ1AsV0FBVztvQkFDWCxnQkFBZ0I7b0JBQ2hCLElBQUk7b0JBQ0osS0FBSztvQkFDTCxnQkFBZ0I7b0JBQ2hCLFFBQVE7b0JBQ1IsUUFBUTtvQkFDUixZQUFZO29CQUNaLGVBQWU7b0JBQ2YsNkJBQTZCO29CQUM3Qix1QkFBdUI7aUJBQ3hCO2dCQVNELEtBQUs7a0JBTkosS0FBSzttQkFBQztvQkFDTCxRQUFRLEVBQUUsSUFBSTtvQkFDZCxTQUFTLEVBQUUsQ0FDVCxLQUE2RCxFQUM3RCxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztpQkFDdkI7WUFJRCxVQUFVO2tCQURULEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFOztrRkFUZCwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBMYWJlbFNlbGVjdG9yLFxuICBQdXJlUGlwZSxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgVGFibGVNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7XG4gIE5nRm9yLFxuICBOZ0lmLFxuICBOZ1N3aXRjaCxcbiAgTmdTd2l0Y2hDYXNlLFxuICBOZ1N3aXRjaERlZmF1bHQsXG4gIE5nVGVtcGxhdGVPdXRsZXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBJUEJsb2NrLFxuICBOZXR3b3JrUG9saWN5RWdyZXNzUnVsZSxcbiAgTmV0d29ya1BvbGljeUluZ3Jlc3NSdWxlLFxuICBOZXR3b3JrUG9saWN5UG9ydCxcbiAgUG9saWN5VHlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvazhzLWV4cG9ydHMnO1xuaW1wb3J0IHsgZ2V0UGVlclR5cGUgfSBmcm9tICcuLi8uLi9mb3JtL25ldHdvcmstcG9saWN5LXBlZXIvY29tcG9uZW50JztcbmltcG9ydCB7IE5ldHdvcmtQb2xpY3lQZWVyVHlwZSB9IGZyb20gJy4uL2FkZC1wZWVyLXJ1bGUtaGFuZGxlci9jb21wb25lbnQnO1xuaW1wb3J0IHsgTGFiZWxTZWxlY3RvckRpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi9sYWJlbC1zZWxlY3Rvci1kaXNwbGF5L2NvbXBvbmVudCc7XG5cbmltcG9ydCB7IElQQmxvY2tEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi8uLi9pcC1ibG9jay1kaXNwbGF5L2NvbXBvbmVudCc7XG5cbmNvbnN0IENPTFVNTlMgPSBbJ25ldHdvcmsuc291cmNlX3BlZXInLCAnbmV0d29yay5ydWxlJywgJ25ldHdvcmsucG9ydCddO1xuXG5pbnRlcmZhY2UgUnVsZUxpc3RNb2RlbCB7XG4gIHBlZXJUeXBlPzogTmV0d29ya1BvbGljeVBlZXJUeXBlO1xuICBuYW1lc3BhY2VTZWxlY3Rvcj86IExhYmVsU2VsZWN0b3I7XG4gIHBvZFNlbGVjdG9yPzogTGFiZWxTZWxlY3RvcjtcbiAgaXBCbG9jaz86IElQQmxvY2s7XG4gIHBvcnRzPzogTmV0d29ya1BvbGljeVBvcnRbXTtcbn1cblxuY29uc3QgdG9SdWxlTGlzdCA9IChcbiAgcnVsZXM6IE5ldHdvcmtQb2xpY3lJbmdyZXNzUnVsZVtdIHwgTmV0d29ya1BvbGljeUVncmVzc1J1bGVbXSxcbikgPT4ge1xuICByZXR1cm4gcnVsZXMuZmxhdE1hcChydWxlID0+IHtcbiAgICBjb25zdCBwb3J0cyA9IHJ1bGUucG9ydHM7XG4gICAgY29uc3QgcnVsZXMgPVxuICAgICAgKHJ1bGUgYXMgTmV0d29ya1BvbGljeUluZ3Jlc3NSdWxlKS5mcm9tIHx8XG4gICAgICAocnVsZSBhcyBOZXR3b3JrUG9saWN5RWdyZXNzUnVsZSkudG87XG5cbiAgICByZXR1cm4gKFxuICAgICAgcnVsZXM/Lm1hcChwZWVyID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wZWVyLFxuICAgICAgICAgIHBlZXJUeXBlOiBnZXRQZWVyVHlwZShwZWVyKSxcbiAgICAgICAgICBwb3J0cyxcbiAgICAgICAgfSBhcyBSdWxlTGlzdE1vZGVsO1xuICAgICAgfSkgfHwgW3sgcG9ydHMgfV1cbiAgICApO1xuICB9KTtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1uZXR3b3JrLXBvbGljeS1ydWxlLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBUYWJsZU1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIE5nSWYsXG4gICAgTmdGb3IsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBQdXJlUGlwZSxcbiAgICBOZ1N3aXRjaCxcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIExhYmVsU2VsZWN0b3JEaXNwbGF5Q29tcG9uZW50LFxuICAgIElQQmxvY2tEaXNwbGF5Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOZXR3b3JrUG9saWN5UnVsZVRhYmxlQ29tcG9uZW50IHtcbiAgQElucHV0KHtcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB0cmFuc2Zvcm06IChcbiAgICAgIHJ1bGVzOiBOZXR3b3JrUG9saWN5SW5ncmVzc1J1bGVbXSB8IE5ldHdvcmtQb2xpY3lFZ3Jlc3NSdWxlW10sXG4gICAgKSA9PiB0b1J1bGVMaXN0KHJ1bGVzKSxcbiAgfSlcbiAgcnVsZXM6IFJ1bGVMaXN0TW9kZWxbXSA9IFt7fV07XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+O1xuXG4gIENPTFVNTlMgPSBDT0xVTU5TO1xufVxuIiwiPGFjbC10YWJsZVxuICBbZGF0YVNvdXJjZV09XCJydWxlc1wiXG4gIFtjb2x1bW5zXT1cIkNPTFVNTlNcIlxuPlxuICA8bmctY29udGFpbmVyICphY2xUYWJsZUNlbGxEZWY9XCInbmV0d29yay5zb3VyY2VfcGVlcic7IGxldCByb3dEYXRhXCI+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwicm93RGF0YS5wZWVyVHlwZVwiPlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2NsdXN0ZXJMZXZlbCdcIj5cbiAgICAgICAge3sgJ25ldHdvcmsucG9kX2luX2N1cnJlbnRfY2x1c3RlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ25hbWVzcGFjZUxldmVsJ1wiPlxuICAgICAgICB7eyAnbmV0d29yay5wb2RfaW5fY3VycmVudF9uYW1lc3BhY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpcEJsb2NrJ1wiPlxuICAgICAgICB7eyAnbmV0d29yay5pcF9zZWdtZW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQ+LTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqYWNsVGFibGVDZWxsRGVmPVwiJ25ldHdvcmsucnVsZSc7IGxldCByb3dEYXRhXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgcm93RGF0YS5wb2RTZWxlY3RvciB8fCByb3dEYXRhLm5hbWVzcGFjZVNlbGVjdG9yIHx8IHJvd0RhdGEuaXBCbG9jaztcbiAgICAgICAgZWxzZSBlbXB0eVJ1bGVcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJ1bGVUZW1wXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICBwb2RTZWxlY3Rvcjogcm93RGF0YS5wb2RTZWxlY3RvcixcbiAgICAgICAgICBuYW1lc3BhY2VTZWxlY3Rvcjogcm93RGF0YS5uYW1lc3BhY2VTZWxlY3RvcixcbiAgICAgICAgICBpcEJsb2NrOiByb3dEYXRhLmlwQmxvY2ssXG4gICAgICAgIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eVJ1bGU+XG4gICAgICB7eyAnbmV0d29yay51bmxpbWl0ZWRfJyArIHBvbGljeVR5cGUgKyAnX3RyYWZmaWMnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKmFjbFRhYmxlQ2VsbERlZj1cIiduZXR3b3JrLnBvcnQnOyBsZXQgcm93RGF0YVwiPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9ydFRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICRpbXBsaWNpdDogcm93RGF0YS5wb3J0cyxcbiAgICAgIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYWNsLXRhYmxlPlxuXG48bmctdGVtcGxhdGVcbiAgI3J1bGVUZW1wXG4gIGxldC1wb2RTZWxlY3Rvcj1cInBvZFNlbGVjdG9yXCJcbiAgbGV0LW5hbWVzcGFjZVNlbGVjdG9yPVwibmFtZXNwYWNlU2VsZWN0b3JcIlxuICBsZXQtaXBCbG9jaz1cImlwQmxvY2tcIlxuPlxuICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1mbGV4LWNvbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwb2RTZWxlY3RvclwiPlxuICAgICAgPGFjbC1sYWJlbC1zZWxlY3Rvci1kaXNwbGF5XG4gICAgICAgIFtzaG93VGl0bGVdPVwidHJ1ZVwiXG4gICAgICAgIFt0eXBlXT1cIidwb2RTZWxlY3RvcidcIlxuICAgICAgICBbc2VsZWN0b3JdPVwicG9kU2VsZWN0b3JcIlxuICAgICAgICBbZW1wdHlQbGFjZWhvbGRlcl09XCInbmV0d29yay5hbnlfcG9kJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+PC9hY2wtbGFiZWwtc2VsZWN0b3ItZGlzcGxheT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInBvZFNlbGVjdG9yICYmIG5hbWVzcGFjZVNlbGVjdG9yXCJcbiAgICAgIGNsYXNzPVwidHctcm91bmRlZC1bNTAlXSB0dy13LWZpdCB0dy1weC00IHR3LW15LTQgdHctYmctbi02IHR3LXRleHQtc1wiXG4gICAgPlxuICAgICAge3sgJ25ldHdvcmsuYW5kJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYW1lc3BhY2VTZWxlY3RvclwiPlxuICAgICAgPGFjbC1sYWJlbC1zZWxlY3Rvci1kaXNwbGF5XG4gICAgICAgIFtzaG93VGl0bGVdPVwidHJ1ZVwiXG4gICAgICAgIFt0eXBlXT1cIiduYW1lc3BhY2VTZWxlY3RvcidcIlxuICAgICAgICBbc2VsZWN0b3JdPVwibmFtZXNwYWNlU2VsZWN0b3JcIlxuICAgICAgICBbZW1wdHlQbGFjZWhvbGRlcl09XCInbmV0d29yay5hbnlfbmFtZXNwYWNlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+PC9hY2wtbGFiZWwtc2VsZWN0b3ItZGlzcGxheT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlwQmxvY2tcIj5cbiAgICA8YWNsLWlwLWJsb2NrLWRpc3BsYXkgW2lwQmxvY2tdPVwiaXBCbG9ja1wiPjwvYWNsLWlwLWJsb2NrLWRpc3BsYXk+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNwb3J0VGVtcGxhdGVcbiAgbGV0LXBvcnRzXG4+XG4gIDx1bCAqbmdJZj1cInBvcnRzPy5sZW5ndGg7IGVsc2UgZW1wdHlcIj5cbiAgICA8bGlcbiAgICAgIGNsYXNzPVwidHctbWItMlwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwb3J0c1wiXG4gICAgPlxuICAgICAge3sgaXRlbS5wcm90b2NvbCB9fS97eyBpdGVtLnBvcnQgfX1cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5lbmRQb3J0XCI+IH4ge3sgaXRlbS5lbmRQb3J0IH19IDwvc3Bhbj5cbiAgICA8L2xpPlxuICA8L3VsPlxuICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgIHt7ICduZXR3b3JrLmFueV9wb3J0JyB8IHRyYW5zbGF0ZSB9fVxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -418,7 +418,7 @@ export class NetworkPolicyFormComponent extends BaseResourceFormGroupComponent {
418
418
  DeclareDirective,
419
419
  NetworkPolicyRuleFormComponent,
420
420
  ReadonlyFieldDirective,
421
- ], template: "<form\n [formGroup]=\"form\"\n auiForm\n aclScrollToFirstInvalid\n>\n <ng-container formGroupName=\"metadata\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>\n {{ 'name' | translate }}\n </label>\n <input\n type=\"text\"\n aui-input\n required\n auiFormItemControl\n [placeholder]=\"K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\"\n formControlName=\"name\"\n maxlength=\"63\"\n [aclReadonlyField]=\"isUpdate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get('metadata.name').errors\"\n [errorsMapper]=\"{\n pattern: K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\n }\"\n ></acl-errors-mapper>\n </aui-form-item>\n\n <ng-container formGroupName=\"annotations\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>{{ 'display_name' | translate }}</label>\n <input\n auiFormItemControl\n type=\"text\"\n aui-input\n [formControlName]=\"displayNameKey\"\n />\n </aui-form-item>\n </ng-container>\n </ng-container>\n\n <div class=\"rc-secondary-title\">\n {{ 'network.target_pod' | translate }}\n </div>\n <ng-container formGroupName=\"spec\">\n <aui-form-item formGroupName=\"podSelector\">\n <label auiFormItemLabel>\n {{ 'network.pod_selector' | translate }}\n </label>\n <acl-key-value-form-table\n auiFormItemControl\n [zeroStateTemplate]=\"zeroStateTemplate\"\n formControlName=\"matchLabels\"\n [validator]=\"labelValidator\"\n [errorMapper]=\"labelErrorMapper$ | async\"\n ></acl-key-value-form-table>\n <div auiFormItemHint>\n <acl-pod-preview\n [hint]=\"'network.target_pod_affected_by_strategy_hint' | translate\"\n [baseParams]=\"baseParams\"\n [podLabelSelector]=\"\n form.get(['spec', 'podSelector', 'matchLabels']).value\n \"\n ></acl-pod-preview>\n </div>\n <ng-template #zeroStateTemplate>\n <span\n class=\"empty-placeholder !tw-border-0 !tw-min-h-[48px] !tw-py-14\"\n >{{ 'network.target_pod_selector_no_data_tip' | translate }}</span\n >\n </ng-template>\n </aui-form-item>\n </ng-container>\n\n <ng-container *ngFor=\"let policyType of PolicyTypes; let i = index\">\n <div\n class=\"tw-flex tw-w-full tw-items-center\"\n [class]=\"i === 1 ? 'tw-mt-16' : ''\"\n >\n <div class=\"rc-secondary-title\">\n {{ 'network.direction_' + policyType | translate }}\n </div>\n <div class=\"tw-flex tw-mb-16 tw-ml-16 tw-justify-between tw-flex-1\">\n <button\n aui-button=\"primary\"\n [plain]=\"true\"\n type=\"button\"\n [disabled]=\"ruleDisabledStateMap[policyType]\"\n (click)=\"addRule(policyType)\"\n >\n <aui-icon icon=\"plus_circle_s\"></aui-icon>\n {{ 'add_xxx' | translate: { xxx: (policyType | translate) } }}\n </button>\n <aui-checkbox\n [value]=\"ruleDisabledStateMap[policyType]\"\n (valueChange)=\"ruleDisabledChanged($event, policyType)\"\n >{{\n 'network.block_all_' + policyType + '_traffic' | translate\n }}</aui-checkbox\n >\n </div>\n </div>\n <ng-container\n *declare=\"\n $any(this.form.get(['spec', policyType])).controls as ruleControls\n \"\n >\n <ng-container\n *ngIf=\"!ruleDisabledStateMap[policyType] && ruleControls.length\"\n >\n <aui-tab-group\n formGroupName=\"spec\"\n type=\"card\"\n >\n <aui-tab\n *ngFor=\"let item of ruleControls; index as index\"\n [closeable]=\"true\"\n (close)=\"removeRule(index, policyType)\"\n >\n <ng-container *ngIf=\"item as control\">\n <ng-container *auiTabLabel>\n <aui-icon\n *ngIf=\"control.invalid && control.dirty\"\n class=\"icon--error\"\n icon=\"xmark_circle_s\"\n size=\"16\"\n ></aui-icon>\n <span>\n {{ policyType | translate }}\n </span>\n </ng-container>\n\n <acl-network-policy-rule-form\n [formControl]=\"$any(control)\"\n [baseParams]=\"baseParams\"\n [policyType]=\"policyType\"\n ></acl-network-policy-rule-form>\n </ng-container>\n </aui-tab>\n </aui-tab-group>\n </ng-container>\n <ng-container\n *ngIf=\"!ruleControls.length || ruleDisabledStateMap[policyType]\"\n >\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate\"\n [ngTemplateOutletContext]=\"{\n policyType: policyType,\n ruleDisabled: ruleDisabledStateMap[policyType]\n }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-template\n #emptyTemplate\n let-policyType=\"policyType\"\n let-ruleDisabled=\"ruleDisabled\"\n >\n <div class=\"tw-pt-[40px] tw-text-center tw-pb-[40px] tw-bg-n-9\">\n <span\n class=\"tw-text-n-4\"\n *ngIf=\"!ruleDisabled\"\n >\n {{ 'network.' + policyType + '_rule_no_data_tip' | translate }}\n </span>\n <span *ngIf=\"ruleDisabled\">{{\n 'network.block_all_' + policyType + '_tip' | translate\n }}</span>\n </div>\n </ng-template>\n</form>\n" }]
421
+ ], template: "<form\n [formGroup]=\"form\"\n auiForm\n aclScrollToFirstInvalid\n>\n <ng-container formGroupName=\"metadata\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>\n {{ 'name' | translate }}\n </label>\n <input\n type=\"text\"\n aui-input\n required\n auiFormItemControl\n [placeholder]=\"K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\"\n formControlName=\"name\"\n maxlength=\"63\"\n [aclReadonlyField]=\"isUpdate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get('metadata.name').errors\"\n [errorsMapper]=\"{\n pattern: K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate,\n }\"\n ></acl-errors-mapper>\n </aui-form-item>\n\n <ng-container formGroupName=\"annotations\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>{{ 'display_name' | translate }}</label>\n <input\n auiFormItemControl\n type=\"text\"\n aui-input\n [formControlName]=\"displayNameKey\"\n />\n </aui-form-item>\n </ng-container>\n </ng-container>\n\n <div class=\"rc-secondary-title\">\n {{ 'network.target_pod' | translate }}\n </div>\n <ng-container formGroupName=\"spec\">\n <aui-form-item formGroupName=\"podSelector\">\n <label auiFormItemLabel>\n {{ 'network.pod_selector' | translate }}\n </label>\n <acl-key-value-form-table\n auiFormItemControl\n [zeroStateTemplate]=\"zeroStateTemplate\"\n formControlName=\"matchLabels\"\n [validator]=\"labelValidator\"\n [errorMapper]=\"labelErrorMapper$ | async\"\n ></acl-key-value-form-table>\n <div auiFormItemHint>\n <acl-pod-preview\n [hint]=\"'network.target_pod_affected_by_strategy_hint' | translate\"\n [baseParams]=\"baseParams\"\n [podLabelSelector]=\"\n form.get(['spec', 'podSelector', 'matchLabels']).value\n \"\n ></acl-pod-preview>\n </div>\n <ng-template #zeroStateTemplate>\n <span\n class=\"empty-placeholder !tw-border-0 !tw-min-h-[48px] !tw-py-14\"\n >{{ 'network.target_pod_selector_no_data_tip' | translate }}</span\n >\n </ng-template>\n </aui-form-item>\n </ng-container>\n\n <ng-container *ngFor=\"let policyType of PolicyTypes; let i = index\">\n <div\n class=\"tw-flex tw-w-full tw-items-center\"\n [class]=\"i === 1 ? 'tw-mt-16' : ''\"\n >\n <div class=\"rc-secondary-title\">\n {{ 'network.direction_' + policyType | translate }}\n </div>\n <div class=\"tw-flex tw-mb-16 tw-ml-16 tw-justify-between tw-flex-1\">\n <button\n aui-button=\"primary\"\n [plain]=\"true\"\n type=\"button\"\n [disabled]=\"ruleDisabledStateMap[policyType]\"\n (click)=\"addRule(policyType)\"\n >\n <aui-icon icon=\"plus_circle_s\"></aui-icon>\n {{ 'add_xxx' | translate: { xxx: (policyType | translate) } }}\n </button>\n <aui-checkbox\n [value]=\"ruleDisabledStateMap[policyType]\"\n (valueChange)=\"ruleDisabledChanged($event, policyType)\"\n >{{\n 'network.block_all_' + policyType + '_traffic' | translate\n }}</aui-checkbox\n >\n </div>\n </div>\n <ng-container\n *declare=\"\n $any(this.form.get(['spec', policyType])).controls as ruleControls\n \"\n >\n <ng-container\n *ngIf=\"!ruleDisabledStateMap[policyType] && ruleControls.length\"\n >\n <aui-tab-group\n formGroupName=\"spec\"\n type=\"card\"\n >\n <aui-tab\n *ngFor=\"let item of ruleControls; index as index\"\n [closeable]=\"true\"\n (close)=\"removeRule(index, policyType)\"\n >\n <ng-container *ngIf=\"item as control\">\n <ng-container *auiTabLabel>\n <aui-icon\n *ngIf=\"control.invalid && control.dirty\"\n class=\"icon--error\"\n icon=\"xmark_circle_s\"\n size=\"16\"\n ></aui-icon>\n <span>\n {{ policyType | translate }}\n </span>\n </ng-container>\n\n <acl-network-policy-rule-form\n [formControl]=\"$any(control)\"\n [baseParams]=\"baseParams\"\n [policyType]=\"policyType\"\n ></acl-network-policy-rule-form>\n </ng-container>\n </aui-tab>\n </aui-tab-group>\n </ng-container>\n <ng-container\n *ngIf=\"!ruleControls.length || ruleDisabledStateMap[policyType]\"\n >\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate\"\n [ngTemplateOutletContext]=\"{\n policyType: policyType,\n ruleDisabled: ruleDisabledStateMap[policyType],\n }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-template\n #emptyTemplate\n let-policyType=\"policyType\"\n let-ruleDisabled=\"ruleDisabled\"\n >\n <div class=\"tw-pt-[40px] tw-text-center tw-pb-[40px] tw-bg-n-9\">\n <span\n class=\"tw-text-n-4\"\n *ngIf=\"!ruleDisabled\"\n >\n {{ 'network.' + policyType + '_rule_no_data_tip' | translate }}\n </span>\n <span *ngIf=\"ruleDisabled\">{{\n 'network.block_all_' + policyType + '_tip' | translate\n }}</span>\n </div>\n </ng-template>\n</form>\n" }]
422
422
  }], () => [{ type: i0.Injector }, { type: i1.K8sUtilService }, { type: i1.TranslateService }, { type: i2.DialogService }], { baseParams: [{
423
423
  type: Input,
424
424
  args: [{ required: true }]
@@ -426,4 +426,4 @@ export class NetworkPolicyFormComponent extends BaseResourceFormGroupComponent {
426
426
  type: Input
427
427
  }] }); })();
428
428
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NetworkPolicyFormComponent, { className: "NetworkPolicyFormComponent", filePath: "lib/features/network-policy/form/network-policy/component.ts", lineNumber: 68 }); })();
429
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvZmVhdHVyZXMvbmV0d29yay1wb2xpY3kvZm9ybS9uZXR3b3JrLXBvbGljeS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL25ldHdvcmsvc3JjL2xpYi9mZWF0dXJlcy9uZXR3b3JrLXBvbGljeS9mb3JtL25ldHdvcmstcG9saWN5L3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEdBQ1gsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQix1Q0FBdUMsRUFDdkMsY0FBYyxFQUNkLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFFaEIsK0JBQStCLEVBQy9CLHlCQUF5QixHQUMxQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7O0lDNEIxRSxnQ0FFRztJQUFBLFlBQTJEOztJQUFBLGlCQUM3RDs7SUFERSxjQUEyRDtJQUEzRCxxRkFBMkQ7OztJQXFEdEQsK0JBS1k7OztJQU5kLDZCQUEyQjtJQUN6Qiw2S0FLQztJQUNELDRCQUFNO0lBQ0osWUFDRjs7SUFBQSxpQkFBTzs7Ozs7SUFQSixjQUFzQztJQUF0Qyw2REFBc0M7SUFNdkMsZUFDRjtJQURFLG9FQUNGOzs7SUFWSiw2QkFBc0M7SUFDcEMsc0tBQTJCO0lBWTNCLG1EQUlnQzs7Ozs7O0lBSDlCLGVBQTZCO0lBRTdCLEFBREEsQUFEQSx3Q0FBNkIsaUNBQ0osNkJBQ0E7Ozs7SUFyQi9CLG1DQUlDO0lBREMsc1RBQVMsMENBQTZCLEtBQUM7SUFFdkMsdUpBQXNDO0lBbUJ4QyxpQkFBVTs7O0lBdEJSLGdDQUFrQjtJQUdILGNBQVc7SUFBWCw4QkFBVzs7O0lBWmhDLDZCQUVDO0lBQ0MseUNBR0M7SUFDQyxtSUFJQztJQXFCSCxpQkFBZ0I7Ozs7SUF4QkssZUFBaUI7SUFBakIseUNBQWlCOzs7SUEwQnhDLDZCQUVDO0lBQ0MsNEJBTWdCOzs7Ozs7SUFMZCxjQUFrQztJQUNsQyxBQURBLG1EQUFrQyxrSEFJaEM7OztJQS9DUiw2QkFJQztJQW1DQyxBQWxDQSw4SEFFQyxpSEFrQ0E7Ozs7OztJQW5DRSxjQUE4RDtJQUE5RCw0RkFBOEQ7SUFrQzlELGNBQThEO0lBQTlELDRGQUE4RDs7OztJQXBFckUsNkJBQW9FO0lBS2hFLEFBSkYsK0JBR0MsY0FDaUM7SUFDOUIsWUFDRjs7SUFBQSxpQkFBTTtJQUVKLEFBREYsK0JBQW9FLGlCQU9qRTtJQURDLGdPQUFTLDZCQUFtQixLQUFDO0lBRTdCLCtCQUEwQztJQUMxQyxZQUNGOzs7SUFBQSxpQkFBUztJQUNULHlDQUdHO0lBREQseVBBQWUsaURBQXVDLEtBQUM7SUFDdEQsYUFFQzs7SUFHUixBQURFLEFBRk0saUJBQ0gsRUFDRyxFQUNGO0lBQ04sZ0hBSUM7Ozs7OztJQTdCQyxjQUFtQztJQUFuQyw0Q0FBbUM7SUFHakMsZUFDRjtJQURFLDJGQUNGO0lBSUksZUFBYztJQUVkLEFBRkEsNEJBQWMsd0RBRStCO0lBSTdDLGVBQ0Y7SUFERSxxSUFDRjtJQUVFLGVBQTBDO0lBQTFDLGtFQUEwQztJQUV6QyxjQUVDO0lBRkQsK0ZBRUM7SUFLTCxlQUM2RDtJQUQ3RCw4RkFDNkQ7OztJQXlEOUQsZ0NBR0M7SUFDQyxZQUNGOztJQUFBLGlCQUFPOzs7SUFETCxjQUNGO0lBREUsd0dBQ0Y7OztJQUNBLDRCQUEyQjtJQUFBLFlBRXpCOztJQUFBLGlCQUFPOzs7SUFGa0IsY0FFekI7SUFGeUIsMEZBRXpCOzs7SUFUSiwrQkFBZ0U7SUFPOUQsQUFOQSw2RkFHQyxnRkFHMEI7SUFHN0IsaUJBQU07OztJQVBELGNBQW1CO0lBQW5CLHdDQUFtQjtJQUlmLGNBQWtCO0lBQWxCLHVDQUFrQjs7QUQvSC9CLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBMEJuRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsOEJBQTZDO0lBTzNGLElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQWMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBYyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBY0QsWUFDRSxRQUFrQixFQUNELE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQzNCLE1BQXFCO1FBRXRDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFsQ3hDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFrQmpCLDRDQUF1QyxHQUNyQyx1Q0FBdUMsQ0FBQztRQUUxQyxtQkFBYyxHQUFHLHlCQUF5QixDQUFDO1FBQzNDLHNCQUFpQixHQUFHLCtCQUErQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUMxQixtQkFBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELHlCQUFvQixHQUEwQztZQUM1RCxPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztJQVNGLENBQUM7SUFFUSxVQUFVO1FBQ2pCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hCLFVBQVUsQ0FBQyxRQUFRO2dCQUNuQixVQUFVLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLE9BQU8sQ0FBQzthQUNwRSxDQUFDO1lBQ0YsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzthQUMzQyxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDN0IsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2FBQ25DLENBQUM7WUFDRixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNqQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25CLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLHNCQUFzQjtRQUM3QixPQUFPLEdBQUcsRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVRLGtCQUFrQixDQUFDLFFBQXVCO1FBQ2pELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2dCQUNwQyxRQUFRO2FBQ1QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQ3ZCLFFBQWlCLEVBQ2pCLFVBQWlDO1FBRWpDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFjLENBQUM7UUFFckUsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzFELElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUM5QyxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLENBQUM7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxVQUFpQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBZSxDQUFDLElBQUksQ0FDbkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDZCxLQUFLLEVBQUUsRUFBRTtZQUNULENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1NBQy9DLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxVQUFpQztRQUN6RCxNQUFNLGFBQWEsR0FDakIsSUFBSSxFQUFFLENBQ0osVUFBVSxLQUFLLFNBQVM7WUFDdEIsQ0FBQyxDQUFDLHNCQUFzQjtZQUN4QixDQUFDLENBQUMscUJBQXFCLENBQzFCLENBQUM7UUFFSixhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sS0FBSyxDQUFDLG1CQUFtQixDQUFDLFVBQWlDO1FBQ2pFLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTTthQUNyQixPQUFPLENBQUM7WUFDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUU7Z0JBQ3pELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsVUFBVSxFQUFFLENBQUM7YUFDakUsQ0FBQztZQUNGLFdBQVcsRUFBRSxXQUFXLENBQUMsT0FBTztZQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ2hELFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDekMsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDaEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxhQUFhLENBQUMsVUFBaUM7UUFDckQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUU3RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUM5QixHQUFHLGVBQWUsQ0FBQyxLQUFLO1lBQ3hCLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUTtTQUNoRCxDQUFDLENBQUM7UUFFSCxlQUFlLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFVBQWlDO1FBQ3hELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLEtBQXFCLENBQUM7UUFDMUQsTUFBTSxhQUFhLEdBQ2pCLElBQUksRUFBRSxDQUNKLFVBQVUsS0FBSyxTQUFTO1lBQ3RCLENBQUMsQ0FBQyxzQkFBc0I7WUFDeEIsQ0FBQyxDQUFDLHFCQUFxQixDQUMxQixDQUFDO1FBRUosSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sa0JBQWtCLEdBQ3RCLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ2xELE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FDM0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQ3BDLENBQUM7WUFDRixlQUFlLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFTywwQkFBMEIsQ0FBQyxRQUF1QjtRQUN4RCxNQUFNLFdBQVcsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUV4QyxJQUNFLENBQUMsV0FBVyxFQUFFLE1BQU07WUFDcEIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDakQsQ0FBQztZQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLE9BQU87UUFDVCxDQUFDO1FBRUQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNoQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsV0FBVyxFQUEyQixDQUFDO1lBQy9ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsyRkE5TVUsMEJBQTBCO29FQUExQiwwQkFBMEI7WUNuRXZDLCtCQUlDO1lBQ0MsZ0NBQXVDO1lBRW5DLEFBREYsd0NBQTZCLGVBQ0g7WUFDdEIsWUFDRjs7WUFBQSxpQkFBUTtZQUNSLDJCQVNFOztZQUNGLHVDQU1xQjs7WUFDdkIsaUJBQWdCO1lBRWhCLGlDQUEwQztZQUV0QyxBQURGLHlDQUE2QixnQkFDSDtZQUFBLGFBQWdDOztZQUFBLGlCQUFRO1lBQ2hFLDRCQUtFO1lBQ0osaUJBQWdCOztZQUlwQixnQ0FBZ0M7WUFDOUIsYUFDRjs7WUFBQSxpQkFBTTtZQUNOLGtDQUFtQztZQUUvQixBQURGLDBDQUEyQyxnQkFDakI7WUFDdEIsYUFDRjs7WUFBQSxpQkFBUTtZQUNSLGdEQU00Qjs7WUFDNUIsZ0NBQXFCO1lBQ25CLHVDQU1tQjs7WUFDckIsaUJBQU07WUFDTiw4SEFBZ0M7WUFNbEMsaUJBQWdCOztZQW9GbEIsQUFqRkEsa0dBQW9FLGlIQXFGbkU7WUFhSCxpQkFBTzs7O1lBNUtMLG9DQUFrQjtZQU9aLGVBQ0Y7WUFERSw4REFDRjtZQU1FLGVBQXVFO1lBR3ZFLEFBSEEsb0dBQXVFLGtDQUcxQztZQUk3QixlQUEyQztZQUMzQyxBQURBLDZEQUEyQyxxSEFHekM7WUFNc0IsZUFBZ0M7WUFBaEMsNERBQWdDO1lBS3RELGVBQWtDO1lBQWxDLG9EQUFrQztZQU94QyxlQUNGO1lBREUsNkVBQ0Y7WUFJTSxlQUNGO1lBREUsK0VBQ0Y7WUFHRSxlQUF1QztZQUd2QyxBQURBLEFBRkEseURBQXVDLGlDQUVYLDhEQUNhO1lBSXZDLGVBQW1FO1lBRW5FLEFBREEsQUFEQSw2RkFBbUUsOEJBQzFDLHFFQUd4QjtZQVk0QixlQUFnQjtZQUFoQix5Q0FBZ0I7NEJEMUJuRCxxQkFBcUIsMkRBQ3JCLFlBQVksMERBQ1osbUJBQW1CLDZOQUNuQixVQUFVLHVKQUNWLDBCQUEwQjtZQUMxQixtQkFBbUI7WUFDbkIsVUFBVSwrREFDVixZQUFZLHNCQUNaLFVBQVUsb0JBQ1YsV0FBVyxxQkFDWCxjQUFjLG9FQUdkLGdCQUFnQjtZQUNoQiw4QkFBOEI7WUFDOUIsc0JBQXNCOztpRkFHYiwwQkFBMEI7Y0F4QnRDLFNBQVM7NkJBQ0ksSUFBSSxZQUNOLHlCQUF5QixtQkFFbEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QztvQkFDUCxxQkFBcUI7b0JBQ3JCLFlBQVk7b0JBQ1osbUJBQW1CO29CQUNuQixVQUFVO29CQUNWLDBCQUEwQjtvQkFDMUIsbUJBQW1CO29CQUNuQixVQUFVO29CQUNWLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixXQUFXO29CQUNYLGNBQWM7b0JBQ2QsZ0JBQWdCO29CQUNoQixvQkFBb0I7b0JBQ3BCLGdCQUFnQjtvQkFDaEIsOEJBQThCO29CQUM5QixzQkFBc0I7aUJBQ3ZCO2lJQUlELFVBQVU7a0JBRFQsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsUUFBUTtrQkFEUCxLQUFLOztrRkFKSywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCdXR0b25Nb2R1bGUsXG4gIENoZWNrYm94TW9kdWxlLFxuICBDb25maXJtVHlwZSxcbiAgRGlhbG9nU2VydmljZSxcbiAgRm9ybU1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFRhYnNNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgRElTUExBWV9OQU1FLFxuICBEZWNsYXJlRGlyZWN0aXZlLFxuICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbiAgRWZmZWN0RGlyZWN0aXZlTW9kdWxlLFxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFksXG4gIEs4c1V0aWxTZXJ2aWNlLFxuICBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCxcbiAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgU1BFQyxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgV29ya3NwYWNlLFxuICBnZXRLOHNSZXNvdXJjZUxhYmVsRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUxhYmVsVmFsaWRhdG9yLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgVmFsaWRhdG9ycywgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGhhcywgdW5pcSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2VGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICduZy1yZXNvdXJjZS1mb3JtLXV0aWwnO1xuXG5pbXBvcnQgeyBOZXR3b3JrUG9saWN5LCBQb2xpY3lUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvazhzLWV4cG9ydHMnO1xuaW1wb3J0IHsgUG9kUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcG9kLXJldmlldy9jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV0d29ya1BvbGljeVJ1bGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vbmV0d29yay1wb2xpY3ktcnVsZS9jb21wb25lbnQnO1xuXG5jb25zdCBQb2xpY3lUeXBlcyA9IFsnaW5ncmVzcycsICdlZ3Jlc3MnXSBhcyBjb25zdDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYWNsLW5ldHdvcmstcG9saWN5LWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEVmZmVjdERpcmVjdGl2ZU1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIEtleVZhbHVlRm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIFBvZFByZXZpZXdDb21wb25lbnQsXG4gICAgVGFic01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBDaGVja2JveE1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICAgIERlY2xhcmVEaXJlY3RpdmUsXG4gICAgTmV0d29ya1BvbGljeVJ1bGVGb3JtQ29tcG9uZW50LFxuICAgIFJlYWRvbmx5RmllbGREaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ldHdvcmtQb2xpY3lGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlc291cmNlRm9ybUdyb3VwQ29tcG9uZW50PE5ldHdvcmtQb2xpY3k+IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgYmFzZVBhcmFtczogV29ya3NwYWNlO1xuXG4gIEBJbnB1dCgpXG4gIGlzVXBkYXRlID0gZmFsc2U7XG5cbiAgZ2V0IGluZ3Jlc3NSdWxlRm9ybUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFtTUEVDLCAnaW5ncmVzcyddKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBnZXQgaW5ncmVzc1J1bGVDb250cm9scygpIHtcbiAgICByZXR1cm4gdGhpcy5pbmdyZXNzUnVsZUZvcm1BcnJheS5jb250cm9scyA/PyBbXTtcbiAgfVxuXG4gIGdldCBlZ3Jlc3NSdWxlRm9ybUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFtTUEVDLCAnZWdyZXNzJ10pIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGdldCBlZ3Jlc3NSdWxlQ29udHJvbHMoKSB7XG4gICAgcmV0dXJuIFsuLi4odGhpcy5lZ3Jlc3NSdWxlRm9ybUFycmF5LmNvbnRyb2xzID8/IFtdKV07XG4gIH1cblxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkgPVxuICAgIEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWTtcblxuICBsYWJlbFZhbGlkYXRvciA9IGs4c1Jlc291cmNlTGFiZWxWYWxpZGF0b3I7XG4gIGxhYmVsRXJyb3JNYXBwZXIkID0gZ2V0SzhzUmVzb3VyY2VMYWJlbEVycm9yTWFwcGVyJCh0aGlzLnRyYW5zbGF0ZSk7XG4gIFBvbGljeVR5cGVzID0gUG9saWN5VHlwZXM7XG4gIGRpc3BsYXlOYW1lS2V5ID0gdGhpcy5rOHNVdGlsLm5vcm1hbGl6ZVR5cGUoRElTUExBWV9OQU1FKTtcbiAgcnVsZURpc2FibGVkU3RhdGVNYXA6IFJlY29yZDwnaW5ncmVzcycgfCAnZWdyZXNzJywgYm9vbGVhbj4gPSB7XG4gICAgaW5ncmVzczogZmFsc2UsXG4gICAgZWdyZXNzOiBmYWxzZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogRGlhbG9nU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY3JlYXRlRm9ybSgpIHtcbiAgICBjb25zdCBtZXRhZGF0YUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IHRoaXMuZmIuY29udHJvbCgnJywgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnBhdHRlcm4pLFxuICAgICAgXSksXG4gICAgICBuYW1lc3BhY2U6IHRoaXMuZmIuY29udHJvbCgnJyksXG4gICAgICBhbm5vdGF0aW9uczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIFt0aGlzLmRpc3BsYXlOYW1lS2V5XTogdGhpcy5mYi5jb250cm9sKCcnKSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIGNvbnN0IHNwZWNGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBwb2RTZWxlY3RvcjogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIG1hdGNoTGFiZWxzOiB0aGlzLmZiLmNvbnRyb2wobnVsbCksXG4gICAgICB9KSxcbiAgICAgIGluZ3Jlc3M6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgICAgZWdyZXNzOiB0aGlzLmZiLmFycmF5KFtdKSxcbiAgICAgIHBvbGljeVR5cGVzOiB0aGlzLmZiLmNvbnRyb2woW10pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhRm9ybSxcbiAgICAgIHNwZWM6IHNwZWNGb3JtLFxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0T25Gb3JtQXJyYXlSZXNpemVGbigpIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbCh7fSk7XG4gICAgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogTmV0d29ya1BvbGljeSk6IE5ldHdvcmtQb2xpY3kge1xuICAgIGlmICghcmVzb3VyY2UpIHtcbiAgICAgIHJldHVybiByZXNvdXJjZTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVJ1bGVEaXNhYmxlZFN0YXRlTWFwKHJlc291cmNlKTtcblxuICAgIGlmICh0aGlzLnJ1bGVEaXNhYmxlZFN0YXRlTWFwLmluZ3Jlc3MpIHtcbiAgICAgIHJlc291cmNlLnNwZWMucG9saWN5VHlwZXMgPSBbJ0luZ3Jlc3MnXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcC5lZ3Jlc3MpIHtcbiAgICAgIHJlc291cmNlLnNwZWMucG9saWN5VHlwZXMgPSB1bmlxKFtcbiAgICAgICAgLi4uKHJlc291cmNlLnNwZWMucG9saWN5VHlwZXMgPz8gW10pLFxuICAgICAgICAnRWdyZXNzJyxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvdXJjZTtcbiAgfVxuXG4gIGFzeW5jIHJ1bGVEaXNhYmxlZENoYW5nZWQoXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4sXG4gICAgcG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+LFxuICApIHtcbiAgICBjb25zdCBydWxlRm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldChbU1BFQywgcG9saWN5VHlwZV0pIGFzIEZvcm1BcnJheTtcblxuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgaWYgKHJ1bGVGb3JtQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bGVEaXNhYmxlZENvbmZpcm0ocG9saWN5VHlwZSk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLnJ1bGVEaXNhYmxlZFN0YXRlTWFwW3BvbGljeVR5cGVdID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJ1bGVGb3JtQXJyYXkuY2xlYXIoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hZGRQb2xpY3lUeXBlKHBvbGljeVR5cGUpO1xuICAgICAgdGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlUG9saWN5VHlwZShwb2xpY3lUeXBlKTtcbiAgICAgIHRoaXMucnVsZURpc2FibGVkU3RhdGVNYXBbcG9saWN5VHlwZV0gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhZGRSdWxlKHBvbGljeVR5cGU6IExvd2VyY2FzZTxQb2xpY3lUeXBlPikge1xuICAgICh0aGlzLmZvcm0uZ2V0KFtTUEVDLCBwb2xpY3lUeXBlXSkgYXMgRm9ybUFycmF5KS5wdXNoKFxuICAgICAgdGhpcy5mYi5jb250cm9sKHtcbiAgICAgICAgcG9ydHM6IFtdLFxuICAgICAgICBbcG9saWN5VHlwZSA9PT0gJ2luZ3Jlc3MnID8gJ2Zyb20nIDogJ3RvJ106IFtdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkUG9saWN5VHlwZShwb2xpY3lUeXBlKTtcbiAgfVxuXG4gIHJlbW92ZVJ1bGUoaW5kZXg6IG51bWJlciwgcG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+KSB7XG4gICAgY29uc3QgcnVsZUZvcm1BcnJheSA9XG4gICAgICB0aGlzPy5bXG4gICAgICAgIHBvbGljeVR5cGUgPT09ICdpbmdyZXNzJ1xuICAgICAgICAgID8gJ2luZ3Jlc3NSdWxlRm9ybUFycmF5J1xuICAgICAgICAgIDogJ2VncmVzc1J1bGVGb3JtQXJyYXknXG4gICAgICBdO1xuXG4gICAgcnVsZUZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG5cbiAgICB0aGlzLnJlbW92ZVBvbGljeVR5cGUocG9saWN5VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bGVEaXNhYmxlZENvbmZpcm0ocG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+KSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGlhbG9nXG4gICAgICAuY29uZmlybSh7XG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ25ldHdvcmsuZGlzYWJsZWRfcnVsZV9jb25maXJtJywge1xuICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy50cmFuc2xhdGUuZ2V0KGBuZXR3b3JrLmRpcmVjdGlvbl8ke3BvbGljeVR5cGV9YCksXG4gICAgICAgIH0pLFxuICAgICAgICBjb25maXJtVHlwZTogQ29uZmlybVR5cGUuV2FybmluZyxcbiAgICAgICAgY29uZmlybVRleHQ6IHRoaXMudHJhbnNsYXRlLmdldCgnbmV0d29yay5ibG9jaycpLFxuICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ2NhbmNlbCcpLFxuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+ICdvaycpXG4gICAgICAuY2F0Y2goKCkgPT4gJ2NhbmNlbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQb2xpY3lUeXBlKHBvbGljeVR5cGU6IExvd2VyY2FzZTxQb2xpY3lUeXBlPikge1xuICAgIGNvbnN0IHBvbGljeVR5cGVzQ3RybCA9IHRoaXMuZm9ybS5nZXQoW1NQRUMsICdwb2xpY3lUeXBlcyddKTtcblxuICAgIGNvbnN0IHVwZGF0ZWRQb2xpY3lUeXBlcyA9IHVuaXEoW1xuICAgICAgLi4ucG9saWN5VHlwZXNDdHJsLnZhbHVlLFxuICAgICAgcG9saWN5VHlwZSA9PT0gJ2luZ3Jlc3MnID8gJ0luZ3Jlc3MnIDogJ0VncmVzcycsXG4gICAgXSk7XG5cbiAgICBwb2xpY3lUeXBlc0N0cmwuc2V0VmFsdWUodXBkYXRlZFBvbGljeVR5cGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUG9saWN5VHlwZShwb2xpY3lUeXBlOiBMb3dlcmNhc2U8UG9saWN5VHlwZT4pIHtcbiAgICBjb25zdCBwb2xpY3lUeXBlc0N0cmwgPSB0aGlzLmZvcm0uZ2V0KFtTUEVDLCAncG9saWN5VHlwZXMnXSk7XG4gICAgY29uc3QgcG9saWN5VHlwZXMgPSBwb2xpY3lUeXBlc0N0cmwudmFsdWUgYXMgUG9saWN5VHlwZVtdO1xuICAgIGNvbnN0IHJ1bGVGb3JtQXJyYXkgPVxuICAgICAgdGhpcz8uW1xuICAgICAgICBwb2xpY3lUeXBlID09PSAnaW5ncmVzcydcbiAgICAgICAgICA/ICdpbmdyZXNzUnVsZUZvcm1BcnJheSdcbiAgICAgICAgICA6ICdlZ3Jlc3NSdWxlRm9ybUFycmF5J1xuICAgICAgXTtcblxuICAgIGlmIChydWxlRm9ybUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgcG9saWN5VHlwZVRvUmVtb3ZlID1cbiAgICAgICAgcG9saWN5VHlwZSA9PT0gJ2luZ3Jlc3MnID8gJ0luZ3Jlc3MnIDogJ0VncmVzcyc7XG4gICAgICBjb25zdCB1cGRhdGVkUG9saWN5VHlwZXMgPSBwb2xpY3lUeXBlcy5maWx0ZXIoXG4gICAgICAgIHR5cGUgPT4gdHlwZSAhPT0gcG9saWN5VHlwZVRvUmVtb3ZlLFxuICAgICAgKTtcbiAgICAgIHBvbGljeVR5cGVzQ3RybC5zZXRWYWx1ZSh1cGRhdGVkUG9saWN5VHlwZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUnVsZURpc2FibGVkU3RhdGVNYXAocmVzb3VyY2U6IE5ldHdvcmtQb2xpY3kpIHtcbiAgICBjb25zdCBwb2xpY3lUeXBlcyA9IHJlc291cmNlPy5zcGVjPy5wb2xpY3lUeXBlcztcbiAgICBjb25zdCBydWxlVHlwZXMgPSBbJ2luZ3Jlc3MnLCAnZWdyZXNzJ107XG5cbiAgICBpZiAoXG4gICAgICAhcG9saWN5VHlwZXM/Lmxlbmd0aCAmJlxuICAgICAgIXJ1bGVUeXBlcy5zb21lKHR5cGUgPT4gaGFzKHJlc291cmNlLnNwZWMsIHR5cGUpKVxuICAgICkge1xuICAgICAgdGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcC5pbmdyZXNzID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwb2xpY3lUeXBlcz8uZm9yRWFjaChwb2xpY3lUeXBlID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBwb2xpY3lUeXBlLnRvTG93ZXJDYXNlKCkgYXMgTG93ZXJjYXNlPFBvbGljeVR5cGU+O1xuICAgICAgdGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcFt0eXBlXSA9ICFyZXNvdXJjZS5zcGVjW3R5cGVdPy5sZW5ndGg7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIGF1aUZvcm1cbiAgYWNsU2Nyb2xsVG9GaXJzdEludmFsaWRcbj5cbiAgPG5nLWNvbnRhaW5lciBmb3JtR3JvdXBOYW1lPVwibWV0YWRhdGFcIj5cbiAgICA8YXVpLWZvcm0taXRlbSB3aWR0aD1cImxhcmdlXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD5cbiAgICAgICAge3sgJ25hbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnRpcCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICBtYXhsZW5ndGg9XCI2M1wiXG4gICAgICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzVXBkYXRlXCJcbiAgICAgIC8+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImZvcm0uZ2V0KCdtZXRhZGF0YS5uYW1lJykuZXJyb3JzXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICAgICAgcGF0dGVybjogSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnRpcCB8IHRyYW5zbGF0ZVxuICAgICAgICB9XCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgIDwvYXVpLWZvcm0taXRlbT5cblxuICAgIDxuZy1jb250YWluZXIgZm9ybUdyb3VwTmFtZT1cImFubm90YXRpb25zXCI+XG4gICAgICA8YXVpLWZvcm0taXRlbSB3aWR0aD1cImxhcmdlXCI+XG4gICAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdkaXNwbGF5X25hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGF1aS1pbnB1dFxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGlzcGxheU5hbWVLZXlcIlxuICAgICAgICAvPlxuICAgICAgPC9hdWktZm9ybS1pdGVtPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2IGNsYXNzPVwicmMtc2Vjb25kYXJ5LXRpdGxlXCI+XG4gICAge3sgJ25ldHdvcmsudGFyZ2V0X3BvZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgZm9ybUdyb3VwTmFtZT1cInNwZWNcIj5cbiAgICA8YXVpLWZvcm0taXRlbSBmb3JtR3JvdXBOYW1lPVwicG9kU2VsZWN0b3JcIj5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPlxuICAgICAgICB7eyAnbmV0d29yay5wb2Rfc2VsZWN0b3InIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGFjbC1rZXktdmFsdWUtZm9ybS10YWJsZVxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgW3plcm9TdGF0ZVRlbXBsYXRlXT1cInplcm9TdGF0ZVRlbXBsYXRlXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF0Y2hMYWJlbHNcIlxuICAgICAgICBbdmFsaWRhdG9yXT1cImxhYmVsVmFsaWRhdG9yXCJcbiAgICAgICAgW2Vycm9yTWFwcGVyXT1cImxhYmVsRXJyb3JNYXBwZXIkIHwgYXN5bmNcIlxuICAgICAgPjwvYWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlPlxuICAgICAgPGRpdiBhdWlGb3JtSXRlbUhpbnQ+XG4gICAgICAgIDxhY2wtcG9kLXByZXZpZXdcbiAgICAgICAgICBbaGludF09XCInbmV0d29yay50YXJnZXRfcG9kX2FmZmVjdGVkX2J5X3N0cmF0ZWd5X2hpbnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYmFzZVBhcmFtc109XCJiYXNlUGFyYW1zXCJcbiAgICAgICAgICBbcG9kTGFiZWxTZWxlY3Rvcl09XCJcbiAgICAgICAgICAgIGZvcm0uZ2V0KFsnc3BlYycsICdwb2RTZWxlY3RvcicsICdtYXRjaExhYmVscyddKS52YWx1ZVxuICAgICAgICAgIFwiXG4gICAgICAgID48L2FjbC1wb2QtcHJldmlldz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICN6ZXJvU3RhdGVUZW1wbGF0ZT5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImVtcHR5LXBsYWNlaG9sZGVyICF0dy1ib3JkZXItMCAhdHctbWluLWgtWzQ4cHhdICF0dy1weS0xNFwiXG4gICAgICAgICAgPnt7ICduZXR3b3JrLnRhcmdldF9wb2Rfc2VsZWN0b3Jfbm9fZGF0YV90aXAnIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwb2xpY3lUeXBlIG9mIFBvbGljeVR5cGVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0dy1mbGV4IHR3LXctZnVsbCB0dy1pdGVtcy1jZW50ZXJcIlxuICAgICAgW2NsYXNzXT1cImkgPT09IDEgPyAndHctbXQtMTYnIDogJydcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJyYy1zZWNvbmRhcnktdGl0bGVcIj5cbiAgICAgICAge3sgJ25ldHdvcmsuZGlyZWN0aW9uXycgKyBwb2xpY3lUeXBlIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4IHR3LW1iLTE2IHR3LW1sLTE2IHR3LWp1c3RpZnktYmV0d2VlbiB0dy1mbGV4LTFcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGF1aS1idXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInJ1bGVEaXNhYmxlZFN0YXRlTWFwW3BvbGljeVR5cGVdXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkUnVsZShwb2xpY3lUeXBlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXVpLWljb24gaWNvbj1cInBsdXNfY2lyY2xlX3NcIj48L2F1aS1pY29uPlxuICAgICAgICAgIHt7ICdhZGRfeHh4JyB8IHRyYW5zbGF0ZTogeyB4eHg6IChwb2xpY3lUeXBlIHwgdHJhbnNsYXRlKSB9IH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YXVpLWNoZWNrYm94XG4gICAgICAgICAgW3ZhbHVlXT1cInJ1bGVEaXNhYmxlZFN0YXRlTWFwW3BvbGljeVR5cGVdXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwicnVsZURpc2FibGVkQ2hhbmdlZCgkZXZlbnQsIHBvbGljeVR5cGUpXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICduZXR3b3JrLmJsb2NrX2FsbF8nICsgcG9saWN5VHlwZSArICdfdHJhZmZpYycgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fTwvYXVpLWNoZWNrYm94XG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpkZWNsYXJlPVwiXG4gICAgICAgICRhbnkodGhpcy5mb3JtLmdldChbJ3NwZWMnLCBwb2xpY3lUeXBlXSkpLmNvbnRyb2xzIGFzIHJ1bGVDb250cm9sc1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiIXJ1bGVEaXNhYmxlZFN0YXRlTWFwW3BvbGljeVR5cGVdICYmIHJ1bGVDb250cm9scy5sZW5ndGhcIlxuICAgICAgPlxuICAgICAgICA8YXVpLXRhYi1ncm91cFxuICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJzcGVjXCJcbiAgICAgICAgICB0eXBlPVwiY2FyZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXVpLXRhYlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcnVsZUNvbnRyb2xzOyBpbmRleCBhcyBpbmRleFwiXG4gICAgICAgICAgICBbY2xvc2VhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgKGNsb3NlKT1cInJlbW92ZVJ1bGUoaW5kZXgsIHBvbGljeVR5cGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbSBhcyBjb250cm9sXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmF1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLmludmFsaWQgJiYgY29udHJvbC5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tLWVycm9yXCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJ4bWFya19jaXJjbGVfc1wiXG4gICAgICAgICAgICAgICAgICBzaXplPVwiMTZcIlxuICAgICAgICAgICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAge3sgcG9saWN5VHlwZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPGFjbC1uZXR3b3JrLXBvbGljeS1ydWxlLWZvcm1cbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueShjb250cm9sKVwiXG4gICAgICAgICAgICAgICAgW2Jhc2VQYXJhbXNdPVwiYmFzZVBhcmFtc1wiXG4gICAgICAgICAgICAgICAgW3BvbGljeVR5cGVdPVwicG9saWN5VHlwZVwiXG4gICAgICAgICAgICAgID48L2FjbC1uZXR3b3JrLXBvbGljeS1ydWxlLWZvcm0+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2F1aS10YWI+XG4gICAgICAgIDwvYXVpLXRhYi1ncm91cD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIiFydWxlQ29udHJvbHMubGVuZ3RoIHx8IHJ1bGVEaXNhYmxlZFN0YXRlTWFwW3BvbGljeVR5cGVdXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5VGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICBwb2xpY3lUeXBlOiBwb2xpY3lUeXBlLFxuICAgICAgICAgICAgcnVsZURpc2FibGVkOiBydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXVxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2VtcHR5VGVtcGxhdGVcbiAgICBsZXQtcG9saWN5VHlwZT1cInBvbGljeVR5cGVcIlxuICAgIGxldC1ydWxlRGlzYWJsZWQ9XCJydWxlRGlzYWJsZWRcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInR3LXB0LVs0MHB4XSB0dy10ZXh0LWNlbnRlciB0dy1wYi1bNDBweF0gdHctYmctbi05XCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInR3LXRleHQtbi00XCJcbiAgICAgICAgKm5nSWY9XCIhcnVsZURpc2FibGVkXCJcbiAgICAgID5cbiAgICAgICAge3sgJ25ldHdvcmsuJyArIHBvbGljeVR5cGUgKyAnX3J1bGVfbm9fZGF0YV90aXAnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cInJ1bGVEaXNhYmxlZFwiPnt7XG4gICAgICAgICduZXR3b3JrLmJsb2NrX2FsbF8nICsgcG9saWN5VHlwZSArICdfdGlwJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Zvcm0+XG4iXX0=
429
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvZmVhdHVyZXMvbmV0d29yay1wb2xpY3kvZm9ybS9uZXR3b3JrLXBvbGljeS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL25ldHdvcmsvc3JjL2xpYi9mZWF0dXJlcy9uZXR3b3JrLXBvbGljeS9mb3JtL25ldHdvcmstcG9saWN5L3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEdBQ1gsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQix1Q0FBdUMsRUFDdkMsY0FBYyxFQUNkLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFFaEIsK0JBQStCLEVBQy9CLHlCQUF5QixHQUMxQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1C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ICBCdXR0b25Nb2R1bGUsXG4gIENoZWNrYm94TW9kdWxlLFxuICBDb25maXJtVHlwZSxcbiAgRGlhbG9nU2VydmljZSxcbiAgRm9ybU1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFRhYnNNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgRElTUExBWV9OQU1FLFxuICBEZWNsYXJlRGlyZWN0aXZlLFxuICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbiAgRWZmZWN0RGlyZWN0aXZlTW9kdWxlLFxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFksXG4gIEs4c1V0aWxTZXJ2aWNlLFxuICBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCxcbiAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgU1BFQyxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgV29ya3NwYWNlLFxuICBnZXRLOHNSZXNvdXJjZUxhYmVsRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUxhYmVsVmFsaWRhdG9yLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgVmFsaWRhdG9ycywgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGhhcywgdW5pcSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2VGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICduZy1yZXNvdXJjZS1mb3JtLXV0aWwnO1xuXG5pbXBvcnQgeyBOZXR3b3JrUG9saWN5LCBQb2xpY3lUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvazhzLWV4cG9ydHMnO1xuaW1wb3J0IHsgUG9kUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcG9kLXJldmlldy9jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV0d29ya1BvbGljeVJ1bGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vbmV0d29yay1wb2xpY3ktcnVsZS9jb21wb25lbnQnO1xuXG5jb25zdCBQb2xpY3lUeXBlcyA9IFsnaW5ncmVzcycsICdlZ3Jlc3MnXSBhcyBjb25zdDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYWNsLW5ldHdvcmstcG9saWN5LWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEVmZmVjdERpcmVjdGl2ZU1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIEtleVZhbHVlRm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIFBvZFByZXZpZXdDb21wb25lbnQsXG4gICAgVGFic01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBDaGVja2JveE1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICAgIERlY2xhcmVEaXJlY3RpdmUsXG4gICAgTmV0d29ya1BvbGljeVJ1bGVGb3JtQ29tcG9uZW50LFxuICAgIFJlYWRvbmx5RmllbGREaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ldHdvcmtQb2xpY3lGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlc291cmNlRm9ybUdyb3VwQ29tcG9uZW50PE5ldHdvcmtQb2xpY3k+IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgYmFzZVBhcmFtczogV29ya3NwYWNlO1xuXG4gIEBJbnB1dCgpXG4gIGlzVXBkYXRlID0gZmFsc2U7XG5cbiAgZ2V0IGluZ3Jlc3NSdWxlRm9ybUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFtTUEVDLCAnaW5ncmVzcyddKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBnZXQgaW5ncmVzc1J1bGVDb250cm9scygpIHtcbiAgICByZXR1cm4gdGhpcy5pbmdyZXNzUnVsZUZvcm1BcnJheS5jb250cm9scyA/PyBbXTtcbiAgfVxuXG4gIGdldCBlZ3Jlc3NSdWxlRm9ybUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFtTUEVDLCAnZWdyZXNzJ10pIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGdldCBlZ3Jlc3NSdWxlQ29udHJvbHMoKSB7XG4gICAgcmV0dXJuIFsuLi4odGhpcy5lZ3Jlc3NSdWxlRm9ybUFycmF5LmNvbnRyb2xzID8/IFtdKV07XG4gIH1cblxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkgPVxuICAgIEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWTtcblxuICBsYWJlbFZhbGlkYXRvciA9IGs4c1Jlc291cmNlTGFiZWxWYWxpZGF0b3I7XG4gIGxhYmVsRXJyb3JNYXBwZXIkID0gZ2V0SzhzUmVzb3VyY2VMYWJlbEVycm9yTWFwcGVyJCh0aGlzLnRyYW5zbGF0ZSk7XG4gIFBvbGljeVR5cGVzID0gUG9saWN5VHlwZXM7XG4gIGRpc3BsYXlOYW1lS2V5ID0gdGhpcy5rOHNVdGlsLm5vcm1hbGl6ZVR5cGUoRElTUExBWV9OQU1FKTtcbiAgcnVsZURpc2FibGVkU3RhdGVNYXA6IFJlY29yZDwnaW5ncmVzcycgfCAnZWdyZXNzJywgYm9vbGVhbj4gPSB7XG4gICAgaW5ncmVzczogZmFsc2UsXG4gICAgZWdyZXNzOiBmYWxzZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogRGlhbG9nU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY3JlYXRlRm9ybSgpIHtcbiAgICBjb25zdCBtZXRhZGF0YUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IHRoaXMuZmIuY29udHJvbCgnJywgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnBhdHRlcm4pLFxuICAgICAgXSksXG4gICAgICBuYW1lc3BhY2U6IHRoaXMuZmIuY29udHJvbCgnJyksXG4gICAgICBhbm5vdGF0aW9uczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIFt0aGlzLmRpc3BsYXlOYW1lS2V5XTogdGhpcy5mYi5jb250cm9sKCcnKSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIGNvbnN0IHNwZWNGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBwb2RTZWxlY3RvcjogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIG1hdGNoTGFiZWxzOiB0aGlzLmZiLmNvbnRyb2wobnVsbCksXG4gICAgICB9KSxcbiAgICAgIGluZ3Jlc3M6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgICAgZWdyZXNzOiB0aGlzLmZiLmFycmF5KFtdKSxcbiAgICAgIHBvbGljeVR5cGVzOiB0aGlzLmZiLmNvbnRyb2woW10pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhRm9ybSxcbiAgICAgIHNwZWM6IHNwZWNGb3JtLFxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0T25Gb3JtQXJyYXlSZXNpemVGbigpIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbCh7fSk7XG4gICAgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogTmV0d29ya1BvbGljeSk6IE5ldHdvcmtQb2xpY3kge1xuICAgIGlmICghcmVzb3VyY2UpIHtcbiAgICAgIHJldHVybiByZXNvdXJjZTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVJ1bGVEaXNhYmxlZFN0YXRlTWFwKHJlc291cmNlKTtcblxuICAgIGlmICh0aGlzLnJ1bGVEaXNhYmxlZFN0YXRlTWFwLmluZ3Jlc3MpIHtcbiAgICAgIHJlc291cmNlLnNwZWMucG9saWN5VHlwZXMgPSBbJ0luZ3Jlc3MnXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcC5lZ3Jlc3MpIHtcbiAgICAgIHJlc291cmNlLnNwZWMucG9saWN5VHlwZXMgPSB1bmlxKFtcbiAgICAgICAgLi4uKHJlc291cmNlLnNwZWMucG9saWN5VHlwZXMgPz8gW10pLFxuICAgICAgICAnRWdyZXNzJyxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvdXJjZTtcbiAgfVxuXG4gIGFzeW5jIHJ1bGVEaXNhYmxlZENoYW5nZWQoXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW4sXG4gICAgcG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+LFxuICApIHtcbiAgICBjb25zdCBydWxlRm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldChbU1BFQywgcG9saWN5VHlwZV0pIGFzIEZvcm1BcnJheTtcblxuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgaWYgKHJ1bGVGb3JtQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bGVEaXNhYmxlZENvbmZpcm0ocG9saWN5VHlwZSk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLnJ1bGVEaXNhYmxlZFN0YXRlTWFwW3BvbGljeVR5cGVdID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJ1bGVGb3JtQXJyYXkuY2xlYXIoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hZGRQb2xpY3lUeXBlKHBvbGljeVR5cGUpO1xuICAgICAgdGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlUG9saWN5VHlwZShwb2xpY3lUeXBlKTtcbiAgICAgIHRoaXMucnVsZURpc2FibGVkU3RhdGVNYXBbcG9saWN5VHlwZV0gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhZGRSdWxlKHBvbGljeVR5cGU6IExvd2VyY2FzZTxQb2xpY3lUeXBlPikge1xuICAgICh0aGlzLmZvcm0uZ2V0KFtTUEVDLCBwb2xpY3lUeXBlXSkgYXMgRm9ybUFycmF5KS5wdXNoKFxuICAgICAgdGhpcy5mYi5jb250cm9sKHtcbiAgICAgICAgcG9ydHM6IFtdLFxuICAgICAgICBbcG9saWN5VHlwZSA9PT0gJ2luZ3Jlc3MnID8gJ2Zyb20nIDogJ3RvJ106IFtdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkUG9saWN5VHlwZShwb2xpY3lUeXBlKTtcbiAgfVxuXG4gIHJlbW92ZVJ1bGUoaW5kZXg6IG51bWJlciwgcG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+KSB7XG4gICAgY29uc3QgcnVsZUZvcm1BcnJheSA9XG4gICAgICB0aGlzPy5bXG4gICAgICAgIHBvbGljeVR5cGUgPT09ICdpbmdyZXNzJ1xuICAgICAgICAgID8gJ2luZ3Jlc3NSdWxlRm9ybUFycmF5J1xuICAgICAgICAgIDogJ2VncmVzc1J1bGVGb3JtQXJyYXknXG4gICAgICBdO1xuXG4gICAgcnVsZUZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG5cbiAgICB0aGlzLnJlbW92ZVBvbGljeVR5cGUocG9saWN5VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bGVEaXNhYmxlZENvbmZpcm0ocG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+KSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGlhbG9nXG4gICAgICAuY29uZmlybSh7XG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ25ldHdvcmsuZGlzYWJsZWRfcnVsZV9jb25maXJtJywge1xuICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy50cmFuc2xhdGUuZ2V0KGBuZXR3b3JrLmRpcmVjdGlvbl8ke3BvbGljeVR5cGV9YCksXG4gICAgICAgIH0pLFxuICAgICAgICBjb25maXJtVHlwZTogQ29uZmlybVR5cGUuV2FybmluZyxcbiAgICAgICAgY29uZmlybVRleHQ6IHRoaXMudHJhbnNsYXRlLmdldCgnbmV0d29yay5ibG9jaycpLFxuICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ2NhbmNlbCcpLFxuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+ICdvaycpXG4gICAgICAuY2F0Y2goKCkgPT4gJ2NhbmNlbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQb2xpY3lUeXBlKHBvbGljeVR5cGU6IExvd2VyY2FzZTxQb2xpY3lUeXBlPikge1xuICAgIGNvbnN0IHBvbGljeVR5cGVzQ3RybCA9IHRoaXMuZm9ybS5nZXQoW1NQRUMsICdwb2xpY3lUeXBlcyddKTtcblxuICAgIGNvbnN0IHVwZGF0ZWRQb2xpY3lUeXBlcyA9IHVuaXEoW1xuICAgICAgLi4ucG9saWN5VHlwZXNDdHJsLnZhbHVlLFxuICAgICAgcG9saWN5VHlwZSA9PT0gJ2luZ3Jlc3MnID8gJ0luZ3Jlc3MnIDogJ0VncmVzcycsXG4gICAgXSk7XG5cbiAgICBwb2xpY3lUeXBlc0N0cmwuc2V0VmFsdWUodXBkYXRlZFBvbGljeVR5cGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUG9saWN5VHlwZShwb2xpY3lUeXBlOiBMb3dlcmNhc2U8UG9saWN5VHlwZT4pIHtcbiAgICBjb25zdCBwb2xpY3lUeXBlc0N0cmwgPSB0aGlzLmZvcm0uZ2V0KFtTUEVDLCAncG9saWN5VHlwZXMnXSk7XG4gICAgY29uc3QgcG9saWN5VHlwZXMgPSBwb2xpY3lUeXBlc0N0cmwudmFsdWUgYXMgUG9saWN5VHlwZVtdO1xuICAgIGNvbnN0IHJ1bGVGb3JtQXJyYXkgPVxuICAgICAgdGhpcz8uW1xuICAgICAgICBwb2xpY3lUeXBlID09PSAnaW5ncmVzcydcbiAgICAgICAgICA/ICdpbmdyZXNzUnVsZUZvcm1BcnJheSdcbiAgICAgICAgICA6ICdlZ3Jlc3NSdWxlRm9ybUFycmF5J1xuICAgICAgXTtcblxuICAgIGlmIChydWxlRm9ybUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgcG9saWN5VHlwZVRvUmVtb3ZlID1cbiAgICAgICAgcG9saWN5VHlwZSA9PT0gJ2luZ3Jlc3MnID8gJ0luZ3Jlc3MnIDogJ0VncmVzcyc7XG4gICAgICBjb25zdCB1cGRhdGVkUG9saWN5VHlwZXMgPSBwb2xpY3lUeXBlcy5maWx0ZXIoXG4gICAgICAgIHR5cGUgPT4gdHlwZSAhPT0gcG9saWN5VHlwZVRvUmVtb3ZlLFxuICAgICAgKTtcbiAgICAgIHBvbGljeVR5cGVzQ3RybC5zZXRWYWx1ZSh1cGRhdGVkUG9saWN5VHlwZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUnVsZURpc2FibGVkU3RhdGVNYXAocmVzb3VyY2U6IE5ldHdvcmtQb2xpY3kpIHtcbiAgICBjb25zdCBwb2xpY3lUeXBlcyA9IHJlc291cmNlPy5zcGVjPy5wb2xpY3lUeXBlcztcbiAgICBjb25zdCBydWxlVHlwZXMgPSBbJ2luZ3Jlc3MnLCAnZWdyZXNzJ107XG5cbiAgICBpZiAoXG4gICAgICAhcG9saWN5VHlwZXM/Lmxlbmd0aCAmJlxuICAgICAgIXJ1bGVUeXBlcy5zb21lKHR5cGUgPT4gaGFzKHJlc291cmNlLnNwZWMsIHR5cGUpKVxuICAgICkge1xuICAgICAgdGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcC5pbmdyZXNzID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwb2xpY3lUeXBlcz8uZm9yRWFjaChwb2xpY3lUeXBlID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBwb2xpY3lUeXBlLnRvTG93ZXJDYXNlKCkgYXMgTG93ZXJjYXNlPFBvbGljeVR5cGU+O1xuICAgICAgdGhpcy5ydWxlRGlzYWJsZWRTdGF0ZU1hcFt0eXBlXSA9ICFyZXNvdXJjZS5zcGVjW3R5cGVdPy5sZW5ndGg7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIGF1aUZvcm1cbiAgYWNsU2Nyb2xsVG9GaXJzdEludmFsaWRcbj5cbiAgPG5nLWNvbnRhaW5lciBmb3JtR3JvdXBOYW1lPVwibWV0YWRhdGFcIj5cbiAgICA8YXVpLWZvcm0taXRlbSB3aWR0aD1cImxhcmdlXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD5cbiAgICAgICAge3sgJ25hbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnRpcCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICBtYXhsZW5ndGg9XCI2M1wiXG4gICAgICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzVXBkYXRlXCJcbiAgICAgIC8+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImZvcm0uZ2V0KCdtZXRhZGF0YS5uYW1lJykuZXJyb3JzXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICAgICAgcGF0dGVybjogSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnRpcCB8IHRyYW5zbGF0ZSxcbiAgICAgICAgfVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbm5vdGF0aW9uc1wiPlxuICAgICAgPGF1aS1mb3JtLWl0ZW0gd2lkdGg9XCJsYXJnZVwiPlxuICAgICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnZGlzcGxheV9uYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRpc3BsYXlOYW1lS2V5XCJcbiAgICAgICAgLz5cbiAgICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cInJjLXNlY29uZGFyeS10aXRsZVwiPlxuICAgIHt7ICduZXR3b3JrLnRhcmdldF9wb2QnIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJzcGVjXCI+XG4gICAgPGF1aS1mb3JtLWl0ZW0gZm9ybUdyb3VwTmFtZT1cInBvZFNlbGVjdG9yXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD5cbiAgICAgICAge3sgJ25ldHdvcmsucG9kX3NlbGVjdG9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxhY2wta2V5LXZhbHVlLWZvcm0tdGFibGVcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIFt6ZXJvU3RhdGVUZW1wbGF0ZV09XCJ6ZXJvU3RhdGVUZW1wbGF0ZVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1hdGNoTGFiZWxzXCJcbiAgICAgICAgW3ZhbGlkYXRvcl09XCJsYWJlbFZhbGlkYXRvclwiXG4gICAgICAgIFtlcnJvck1hcHBlcl09XCJsYWJlbEVycm9yTWFwcGVyJCB8IGFzeW5jXCJcbiAgICAgID48L2FjbC1rZXktdmFsdWUtZm9ybS10YWJsZT5cbiAgICAgIDxkaXYgYXVpRm9ybUl0ZW1IaW50PlxuICAgICAgICA8YWNsLXBvZC1wcmV2aWV3XG4gICAgICAgICAgW2hpbnRdPVwiJ25ldHdvcmsudGFyZ2V0X3BvZF9hZmZlY3RlZF9ieV9zdHJhdGVneV9oaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2Jhc2VQYXJhbXNdPVwiYmFzZVBhcmFtc1wiXG4gICAgICAgICAgW3BvZExhYmVsU2VsZWN0b3JdPVwiXG4gICAgICAgICAgICBmb3JtLmdldChbJ3NwZWMnLCAncG9kU2VsZWN0b3InLCAnbWF0Y2hMYWJlbHMnXSkudmFsdWVcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9hY2wtcG9kLXByZXZpZXc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjemVyb1N0YXRlVGVtcGxhdGU+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlciAhdHctYm9yZGVyLTAgIXR3LW1pbi1oLVs0OHB4XSAhdHctcHktMTRcIlxuICAgICAgICAgID57eyAnbmV0d29yay50YXJnZXRfcG9kX3NlbGVjdG9yX25vX2RhdGFfdGlwJyB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcG9saWN5VHlwZSBvZiBQb2xpY3lUeXBlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidHctZmxleCB0dy13LWZ1bGwgdHctaXRlbXMtY2VudGVyXCJcbiAgICAgIFtjbGFzc109XCJpID09PSAxID8gJ3R3LW10LTE2JyA6ICcnXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwicmMtc2Vjb25kYXJ5LXRpdGxlXCI+XG4gICAgICAgIHt7ICduZXR3b3JrLmRpcmVjdGlvbl8nICsgcG9saWN5VHlwZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1tYi0xNiB0dy1tbC0xNiB0dy1qdXN0aWZ5LWJldHdlZW4gdHctZmxleC0xXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhdWktYnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXVwiXG4gICAgICAgICAgKGNsaWNrKT1cImFkZFJ1bGUocG9saWN5VHlwZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGF1aS1pY29uIGljb249XCJwbHVzX2NpcmNsZV9zXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICB7eyAnYWRkX3h4eCcgfCB0cmFuc2xhdGU6IHsgeHh4OiAocG9saWN5VHlwZSB8IHRyYW5zbGF0ZSkgfSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGF1aS1jaGVja2JveFxuICAgICAgICAgIFt2YWx1ZV09XCJydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXVwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInJ1bGVEaXNhYmxlZENoYW5nZWQoJGV2ZW50LCBwb2xpY3lUeXBlKVwiXG4gICAgICAgICAgPnt7XG4gICAgICAgICAgICAnbmV0d29yay5ibG9ja19hbGxfJyArIHBvbGljeVR5cGUgKyAnX3RyYWZmaWMnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L2F1aS1jaGVja2JveFxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqZGVjbGFyZT1cIlxuICAgICAgICAkYW55KHRoaXMuZm9ybS5nZXQoWydzcGVjJywgcG9saWN5VHlwZV0pKS5jb250cm9scyBhcyBydWxlQ29udHJvbHNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIiFydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXSAmJiBydWxlQ29udHJvbHMubGVuZ3RoXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS10YWItZ3JvdXBcbiAgICAgICAgICBmb3JtR3JvdXBOYW1lPVwic3BlY1wiXG4gICAgICAgICAgdHlwZT1cImNhcmRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGF1aS10YWJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJ1bGVDb250cm9sczsgaW5kZXggYXMgaW5kZXhcIlxuICAgICAgICAgICAgW2Nsb3NlYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIChjbG9zZSk9XCJyZW1vdmVSdWxlKGluZGV4LCBwb2xpY3lUeXBlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0gYXMgY29udHJvbFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICphdWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLS1lcnJvclwiXG4gICAgICAgICAgICAgICAgICBpY29uPVwieG1hcmtfY2lyY2xlX3NcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cIjE2XCJcbiAgICAgICAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIHt7IHBvbGljeVR5cGUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxhY2wtbmV0d29yay1wb2xpY3ktcnVsZS1mb3JtXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkoY29udHJvbClcIlxuICAgICAgICAgICAgICAgIFtiYXNlUGFyYW1zXT1cImJhc2VQYXJhbXNcIlxuICAgICAgICAgICAgICAgIFtwb2xpY3lUeXBlXT1cInBvbGljeVR5cGVcIlxuICAgICAgICAgICAgICA+PC9hY2wtbmV0d29yay1wb2xpY3ktcnVsZS1mb3JtPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9hdWktdGFiPlxuICAgICAgICA8L2F1aS10YWItZ3JvdXA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCIhcnVsZUNvbnRyb2xzLmxlbmd0aCB8fCBydWxlRGlzYWJsZWRTdGF0ZU1hcFtwb2xpY3lUeXBlXVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eVRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgcG9saWN5VHlwZTogcG9saWN5VHlwZSxcbiAgICAgICAgICAgIHJ1bGVEaXNhYmxlZDogcnVsZURpc2FibGVkU3RhdGVNYXBbcG9saWN5VHlwZV0sXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGVcbiAgICAjZW1wdHlUZW1wbGF0ZVxuICAgIGxldC1wb2xpY3lUeXBlPVwicG9saWN5VHlwZVwiXG4gICAgbGV0LXJ1bGVEaXNhYmxlZD1cInJ1bGVEaXNhYmxlZFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidHctcHQtWzQwcHhdIHR3LXRleHQtY2VudGVyIHR3LXBiLVs0MHB4XSB0dy1iZy1uLTlcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwidHctdGV4dC1uLTRcIlxuICAgICAgICAqbmdJZj1cIiFydWxlRGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICB7eyAnbmV0d29yay4nICsgcG9saWN5VHlwZSArICdfcnVsZV9ub19kYXRhX3RpcCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwicnVsZURpc2FibGVkXCI+e3tcbiAgICAgICAgJ25ldHdvcmsuYmxvY2tfYWxsXycgKyBwb2xpY3lUeXBlICsgJ190aXAnIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZm9ybT5cbiJdfQ==