UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

194 lines 20.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { UiSearchDefinitionService } from 'e5core-angular-services'; import { FieldDataType } from '../../enums/field-data-type'; import { UiStyleService } from '../../services/ui-style.service'; import { SearchDeliveryService } from '../../services/search-delivery.service'; var E5coreUiSearchFormComponent = /** @class */ (function () { function E5coreUiSearchFormComponent(style, searchDeliveryService, search, cd) { this.style = style; this.searchDeliveryService = searchDeliveryService; this.search = search; this.cd = cd; this.queryChange = new EventEmitter(); } /** * @return {?} */ E5coreUiSearchFormComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; if (this.searchForm$ == null) { console.error('e5core-ui-search-form [searchForm$] must have a BehaviorSubject<SearchFormModel>'); return; } if (this.searchDefinitionId) { this.searchDeliveryService.getSearchDefinition(this.searchForm$, this.searchDefinitionId).subscribe(function (s) { _this.applyDefaultValues(_this.defaultValues); }, function (error) { _this.errorMessage = error.message || "Unable to get data from server."; console.error(error); _this.cd.markForCheck(); }); } else { console.warn("e5core-ui-search-form searchId is missing. Expecting one later..."); } this.searchForm$.subscribe(function (searchModel) { _this.errorMessage = ""; _this.zones = (searchModel) ? searchModel.zones : undefined; _this.zoneTemplateId = (searchModel && searchModel.zoneTemplateId) ? searchModel.zoneTemplateId.toUpperCase() : ""; _this.cd.markForCheck(); _this.queryChange.emit(_this.createDataSourceQuery(searchModel)); }); }; /** * @private * @param {?} model * @return {?} */ E5coreUiSearchFormComponent.prototype.createDataSourceQuery = /** * @private * @param {?} model * @return {?} */ function (model) { /** @type {?} */ var query = null; if (model && model.properties && model.properties.length > 0) { query = { Expressions: model.properties .filter(function (p) { return p.value; }) .map(function (p) { return (/** @type {?} */ ({ Field: p.propertyId, Value: p.value })); }) }; } return (query); }; /** * If there are any default values on the form, then set them. * @param values the default values to use on the form */ /** * If there are any default values on the form, then set them. * @private * @param {?} values the default values to use on the form * @param {?=} reset * @return {?} */ E5coreUiSearchFormComponent.prototype.applyDefaultValues = /** * If there are any default values on the form, then set them. * @private * @param {?} values the default values to use on the form * @param {?=} reset * @return {?} */ function (values, reset) { /** @type {?} */ var searchForm = (/** @type {?} */ (tslib_1.__assign({}, this.searchForm$.getValue()))); /** @type {?} */ var updated = false; if (reset) { searchForm.properties.forEach(function (p) { p.value = undefined; p.resolvedValue = undefined; }); updated = true; } if (values) { if (searchForm.properties) { Object.keys(values).forEach(function (key) { /** @type {?} */ var property = searchForm.properties.find(function (p) { return p.propertyId == key; }); if (property) { updated = true; /** @type {?} */ var value = values[key]; property.value = value; // will be set to undefined if not specified if (property.fieldDataType != FieldDataType.List && property.fieldDataType != FieldDataType.Lookup) // if it's not a list or lookup property.resolvedValue = value; } }); } } if (updated) this.searchForm$.next(searchForm); }; /** * Reset the serch form to the original default values, or clear it. */ /** * Reset the serch form to the original default values, or clear it. * @return {?} */ E5coreUiSearchFormComponent.prototype.reset = /** * Reset the serch form to the original default values, or clear it. * @return {?} */ function () { this.applyDefaultValues(this.defaultValues, true /* reset */); this.cd.markForCheck(); }; E5coreUiSearchFormComponent.decorators = [ { type: Component, args: [{ selector: 'e5core-ui-search-form', template: "\n <span *ngIf=\"searchForm$\" [ngSwitch]=\"style.current()\">\n <e5core-ui-search-form-box *ngSwitchCase='0' [searchForm$]='searchForm$' [zones]='zones' [zoneTemplateId]='zoneTemplateId'></e5core-ui-search-form-box>\n <e5core-ui-search-form-bootstrap *ngSwitchCase='1' [searchForm$]='searchForm$' [zones]='zones' [zoneTemplateId]='zoneTemplateId'></e5core-ui-search-form-bootstrap>\n <e5core-ui-search-form-material *ngSwitchCase='2' [searchForm$]='searchForm$' [zones]='zones' [zoneTemplateId]='zoneTemplateId'></e5core-ui-search-form-material>\n </span>\n <div *ngIf=\"!searchForm$\" class=\"e5core-component-error\">&lt;e5core-ui-search-form&gt; [searchForm$] must have a BehaviorSubject&lt;SearchModel&gt;</div>\n <div *ngIf=\"errorMessage\" class=\"e5core-component-error\">&lt;e5core-ui-search-form&gt; error : {{errorMessage}}</div>", styles: [".e5core-component-error{border-left:5px solid red;background-color:#ffbaba;color:#d8000c;padding:12px;box-sizing:content-box;border-radius:4pt;display:inline-block;font-family:Arial,Helvetica,sans-serif;margin:5pt 0}.e5-component{margin:5pt;border:solid #00f;box-sizing:content-box;padding:5pt}.e5-component .e5-title{color:#00f;font-weight:700}"] }] } ]; /** @nocollapse */ E5coreUiSearchFormComponent.ctorParameters = function () { return [ { type: UiStyleService }, { type: SearchDeliveryService }, { type: UiSearchDefinitionService }, { type: ChangeDetectorRef } ]; }; E5coreUiSearchFormComponent.propDecorators = { searchForm$: [{ type: Input }], searchDefinitionId: [{ type: Input }], defaultValues: [{ type: Input }], queryChange: [{ type: Output }] }; return E5coreUiSearchFormComponent; }()); export { E5coreUiSearchFormComponent }; if (false) { /** @type {?} */ E5coreUiSearchFormComponent.prototype.searchForm$; /** @type {?} */ E5coreUiSearchFormComponent.prototype.searchDefinitionId; /** @type {?} */ E5coreUiSearchFormComponent.prototype.defaultValues; /** @type {?} */ E5coreUiSearchFormComponent.prototype.queryChange; /** @type {?} */ E5coreUiSearchFormComponent.prototype.zones; /** @type {?} */ E5coreUiSearchFormComponent.prototype.errorMessage; /** @type {?} */ E5coreUiSearchFormComponent.prototype.zoneTemplateId; /** @type {?} */ E5coreUiSearchFormComponent.prototype.style; /** * @type {?} * @private */ E5coreUiSearchFormComponent.prototype.searchDeliveryService; /** @type {?} */ E5coreUiSearchFormComponent.prototype.search; /** * @type {?} * @private */ E5coreUiSearchFormComponent.prototype.cd; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2U1Y29yZS1hbmd1bGFyLXVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZTVjb3JlLXVpLXNlYXJjaC1mb3JtL2U1Y29yZS11aS1zZWFyY2gtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBMkIsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBcUIseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FO0lBd0JDLHFDQUNRLEtBQXFCLEVBQ3BCLHFCQUE0QyxFQUM3QyxNQUFnQyxFQUMvQixFQUFxQjtRQUh0QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNwQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQTBCO1FBQy9CLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBVnBCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUE7SUFXM0QsQ0FBQzs7OztJQUVELDhDQUFROzs7SUFBUjtRQUFBLGlCQTZCQztRQTVCQSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0ZBQWtGLENBQUMsQ0FBQztZQUNsRyxPQUFPO1NBQ1A7UUFDRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZ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bURBQXFCOztJQUNyQixxREFBdUI7O0lBR3RCLDRDQUE0Qjs7Ozs7SUFDNUIsNERBQW9EOztJQUNwRCw2Q0FBdUM7Ozs7O0lBQ3ZDLHlDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVSVNlYXJjaFpvbmVNb2RlbCwgVWlTZWFyY2hEZWZpbml0aW9uU2VydmljZSB9IGZyb20gJ2U1Y29yZS1hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IFNlYXJjaEZvcm1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zZWFyY2gtZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvZmllbGQtZGF0YS10eXBlJztcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyeSwgUXVlcnlFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9kYXRhLXNvdXJjZS1xdWVyeSc7XG5pbXBvcnQgeyBVaVN0eWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VpLXN0eWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoRGVsaXZlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VhcmNoLWRlbGl2ZXJ5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdlNWNvcmUtdWktc2VhcmNoLWZvcm0nLFxuXHRzdHlsZVVybHM6IFsnLi8uLi8uLi9jc3MvZGVmYXVsdC5jc3MnXSxcblx0dGVtcGxhdGU6IGBcbiAgPHNwYW4gKm5nSWY9XCJzZWFyY2hGb3JtJFwiIFtuZ1N3aXRjaF09XCJzdHlsZS5jdXJyZW50KClcIj5cbiAgICA8ZTVjb3JlLXVpLXNlYXJjaC1mb3JtLWJveCAqbmdTd2l0Y2hDYXNlPScwJyBbc2VhcmNoRm9ybSRdPSdzZWFyY2hGb3JtJCcgW3pvbmVzXT0nem9uZXMnIFt6b25lVGVtcGxhdGVJZF09J3pvbmVUZW1wbGF0ZUlkJz48L2U1Y29yZS11aS1zZWFyY2gtZm9ybS1ib3g+XG4gICAgPGU1Y29yZS11aS1zZWFyY2gtZm9ybS1ib290c3RyYXAgKm5nU3dpdGNoQ2FzZT0nMScgW3NlYXJjaEZvcm0kXT0nc2VhcmNoRm9ybSQnIFt6b25lc109J3pvbmVzJyBbem9uZVRlbXBsYXRlSWRdPSd6b25lVGVtcGxhdGVJZCc+PC9lNWNvcmUtdWktc2VhcmNoLWZvcm0tYm9vdHN0cmFwPlxuICAgIDxlNWNvcmUtdWktc2VhcmNoLWZvcm0tbWF0ZXJpYWwgKm5nU3dpdGNoQ2FzZT0nMicgW3NlYXJjaEZvcm0kXT0nc2VhcmNoRm9ybSQnIFt6b25lc109J3pvbmVzJyBbem9uZVRlbXBsYXRlSWRdPSd6b25lVGVtcGxhdGVJZCc+PC9lNWNvcmUtdWktc2VhcmNoLWZvcm0tbWF0ZXJpYWw+XG4gIDwvc3Bhbj5cbiAgPGRpdiAqbmdJZj1cIiFzZWFyY2hGb3JtJFwiIGNsYXNzPVwiZTVjb3JlLWNvbXBvbmVudC1lcnJvclwiPiZsdDtlNWNvcmUtdWktc2VhcmNoLWZvcm0mZ3Q7IFtzZWFyY2hGb3JtJF0gbXVzdCBoYXZlIGEgQmVoYXZpb3JTdWJqZWN0Jmx0O1NlYXJjaE1vZGVsJmd0OzwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJlNWNvcmUtY29tcG9uZW50LWVycm9yXCI+Jmx0O2U1Y29yZS11aS1zZWFyY2gtZm9ybSZndDsgZXJyb3IgOiB7e2Vycm9yTWVzc2FnZX19PC9kaXY+YCxcblx0Ly9jaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBFNWNvcmVVaVNlYXJjaEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG5cdEBJbnB1dCgpIHNlYXJjaEZvcm0kOiBCZWhhdmlvclN1YmplY3Q8U2VhcmNoRm9ybU1vZGVsPjtcblx0QElucHV0KCkgc2VhcmNoRGVmaW5pdGlvbklkOiBudW1iZXI7XG5cdEBJbnB1dCgpIGRlZmF1bHRWYWx1ZXM6IHsgW3M6IHN0cmluZ106IHN0cmluZzsgfTtcblx0QE91dHB1dCgpIHF1ZXJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhU291cmNlUXVlcnk+KClcblxuXHR6b25lczogVUlTZWFyY2hab25lTW9kZWxbXTtcblx0ZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cdHpvbmVUZW1wbGF0ZUlkOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHVibGljIHN0eWxlOiBVaVN0eWxlU2VydmljZSwgXG5cdFx0cHJpdmF0ZSBzZWFyY2hEZWxpdmVyeVNlcnZpY2U6IFNlYXJjaERlbGl2ZXJ5U2VydmljZSwgXG5cdFx0cHVibGljIHNlYXJjaDpVaVNlYXJjaERlZmluaXRpb25TZXJ2aWNlLFxuXHRcdHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHRpZiAodGhpcy5zZWFyY2hGb3JtJCA9PSBudWxsKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKCdlNWNvcmUtdWktc2VhcmNoLWZvcm0gW3NlYXJjaEZvcm0kXSBtdXN0IGhhdmUgYSBCZWhhdmlvclN1YmplY3Q8U2VhcmNoRm9ybU1vZGVsPicpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAodGhpcy5zZWFyY2hEZWZpbml0aW9uSWQpIHtcblx0XHRcdHRoaXMuc2VhcmNoRGVsaXZlcnlTZXJ2aWNlLmdldFNlYXJjaERlZmluaXRpb24odGhpcy5zZWFyY2hGb3JtJCwgdGhpcy5zZWFyY2hEZWZpbml0aW9uSWQpLnN1YnNjcmliZShcblx0XHRcdFx0cyA9PiB7XG5cdFx0XHRcdFx0dGhpcy5hcHBseURlZmF1bHRWYWx1ZXModGhpcy5kZWZhdWx0VmFsdWVzKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZXJyb3IgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IubWVzc2FnZSB8fCBcIlVuYWJsZSB0byBnZXQgZGF0YSBmcm9tIHNlcnZlci5cIjtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKTtcblx0XHRcdFx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLndhcm4oXCJlNWNvcmUtdWktc2VhcmNoLWZvcm0gc2VhcmNoSWQgaXMgbWlzc2luZy4gRXhwZWN0aW5nIG9uZSBsYXRlci4uLlwiKTtcblx0XHR9XG5cblx0XHR0aGlzLnNlYXJjaEZvcm0kLnN1YnNjcmliZShcblx0XHRcdHNlYXJjaE1vZGVsID0+IHtcblx0XHRcdFx0dGhpcy5lcnJvck1lc3NhZ2UgPSBcIlwiO1xuXHRcdFx0XHR0aGlzLnpvbmVzID0gKHNlYXJjaE1vZGVsKSA/IHNlYXJjaE1vZGVsLnpvbmVzIDogdW5kZWZpbmVkO1xuXHRcdFx0XHR0aGlzLnpvbmVUZW1wbGF0ZUlkID0gKHNlYXJjaE1vZGVsICYmIHNlYXJjaE1vZGVsLnpvbmVUZW1wbGF0ZUlkKSA/IHNlYXJjaE1vZGVsLnpvbmVUZW1wbGF0ZUlkLnRvVXBwZXJDYXNlKCkgOiBcIlwiO1xuXHRcdFx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuXHRcdFx0XHR0aGlzLnF1ZXJ5Q2hhbmdlLmVtaXQodGhpcy5jcmVhdGVEYXRhU291cmNlUXVlcnkoc2VhcmNoTW9kZWwpKTtcblx0XHRcdH1cblx0XHQpXG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZURhdGFTb3VyY2VRdWVyeShtb2RlbDogU2VhcmNoRm9ybU1vZGVsKTogRGF0YVNvdXJjZVF1ZXJ5IHtcblx0XHRsZXQgcXVlcnk6IERhdGFTb3VyY2VRdWVyeSA9IG51bGw7XG5cdFx0aWYgKG1vZGVsICYmIG1vZGVsLnByb3BlcnRpZXMgJiYgbW9kZWwucHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0RXhwcmVzc2lvbnM6IG1vZGVsLnByb3BlcnRpZXNcblx0XHRcdFx0XHQuZmlsdGVyKHAgPT4gcC52YWx1ZSlcblx0XHRcdFx0XHQubWFwPFF1ZXJ5RXhwcmVzc2lvbj4ocCA9PiA8UXVlcnlFeHByZXNzaW9uPntcblx0XHRcdFx0XHRcdEZpZWxkOiBwLnByb3BlcnR5SWQsXG5cdFx0XHRcdFx0XHRWYWx1ZTogcC52YWx1ZVxuXHRcdFx0XHRcdH0pXG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAocXVlcnkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIElmIHRoZXJlIGFyZSBhbnkgZGVmYXVsdCB2YWx1ZXMgb24gdGhlIGZvcm0sIHRoZW4gc2V0IHRoZW0uXG5cdCAqIEBwYXJhbSB2YWx1ZXMgdGhlIGRlZmF1bHQgdmFsdWVzIHRvIHVzZSBvbiB0aGUgZm9ybVxuXHQgKi9cblx0cHJpdmF0ZSBhcHBseURlZmF1bHRWYWx1ZXModmFsdWVzOiB7IFtzOiBzdHJpbmddOiBzdHJpbmc7IH0sIHJlc2V0PzogYm9vbGVhbikge1xuXHRcdGxldCBzZWFyY2hGb3JtID0gPFNlYXJjaEZvcm1Nb2RlbD57IC4uLnRoaXMuc2VhcmNoRm9ybSQuZ2V0VmFsdWUoKSB9O1xuXHRcdGxldCB1cGRhdGVkID0gZmFsc2U7XG5cdFx0aWYgKHJlc2V0KSB7XG5cdFx0XHRzZWFyY2hGb3JtLnByb3BlcnRpZXMuZm9yRWFjaChwID0+IHtcblx0XHRcdFx0cC52YWx1ZSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0cC5yZXNvbHZlZFZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdFx0fSlcblx0XHRcdHVwZGF0ZWQgPSB0cnVlO1xuXHRcdH1cblx0XHRpZiAodmFsdWVzKSB7XG5cdFx0XHRpZiAoc2VhcmNoRm9ybS5wcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdE9iamVjdC5rZXlzKHZhbHVlcykuZm9yRWFjaChrZXkgPT4ge1xuXHRcdFx0XHRcdGxldCBwcm9wZXJ0eSA9IHNlYXJjaEZvcm0ucHJvcGVydGllcy5maW5kKHAgPT4gcC5wcm9wZXJ0eUlkID09IGtleSlcblx0XHRcdFx0XHRpZiAocHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0bGV0IHZhbHVlID0gdmFsdWVzW2tleV1cblx0XHRcdFx0XHRcdHByb3BlcnR5LnZhbHVlID0gdmFsdWU7IC8vIHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZCBpZiBub3Qgc3BlY2lmaWVkXG5cdFx0XHRcdFx0XHRpZiAocHJvcGVydHkuZmllbGREYXRhVHlwZSAhPSBGaWVsZERhdGFUeXBlLkxpc3QgJiYgcHJvcGVydHkuZmllbGREYXRhVHlwZSAhPSBGaWVsZERhdGFUeXBlLkxvb2t1cCkgLy8gaWYgaXQncyBub3QgYSBsaXN0IG9yIGxvb2t1cFxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5yZXNvbHZlZFZhbHVlID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHVwZGF0ZWQpXG5cdFx0XHR0aGlzLnNlYXJjaEZvcm0kLm5leHQoc2VhcmNoRm9ybSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVzZXQgdGhlIHNlcmNoIGZvcm0gdG8gdGhlIG9yaWdpbmFsIGRlZmF1bHQgdmFsdWVzLCBvciBjbGVhciBpdC5cblx0ICovXG5cdHB1YmxpYyByZXNldCgpIHtcblx0XHR0aGlzLmFwcGx5RGVmYXVsdFZhbHVlcyh0aGlzLmRlZmF1bHRWYWx1ZXMsIHRydWUgLyogcmVzZXQgKi8pO1xuXHRcdHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG5cdH1cbn1cbiJdfQ==