@stratio/egeo
Version:
320 lines • 23.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/st-modal/st-modal.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* © 2017 Stratio Big Data Inc., Sucursal en España.
*
* This software is licensed under the Apache License, Version 2.0.
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the terms of the License for more details.
*
* SPDX-License-Identifier: Apache-2.0.
*/
import { ComponentFactoryResolver, Injectable } from '@angular/core';
import { Subject } from 'rxjs';
/* local dependencies */
import { StModalComponent } from './st-modal.component';
import { StModalResponse, StModalBasicType } from './st-modal.model';
var StModalService = /** @class */ (function () {
function StModalService(_cfr) {
this._cfr = _cfr;
this._containerRef = undefined;
this.dynamicModal = undefined;
}
Object.defineProperty(StModalService.prototype, "container", {
/* External API */
set: /* External API */
/**
* @param {?} container
* @return {?}
*/
function (container) {
this._containerRef = container;
},
enumerable: true,
configurable: true
});
// - Public methods
// - Public methods
/**
* @param {?} config
* @param {?=} component
* @return {?}
*/
StModalService.prototype.show =
// - Public methods
/**
* @param {?} config
* @param {?=} component
* @return {?}
*/
function (config, component) {
/** @type {?} */
var errors = this.canCreateModal(config, component);
if (errors && errors.length > 0) {
throw new Error(errors.join(' '));
}
this.notifyButtonInteraction = new Subject();
this.createModal(this.createConfig(config), component);
return this.notifyButtonInteraction.asObservable();
};
/**
* @param {?} type
* @param {?} modalTitle
* @param {?} messageTitle
* @param {?} message
* @param {?} okButton
* @param {?=} cancelButton
* @param {?=} maxWidth
* @param {?=} minWidth
* @param {?=} icon
* @return {?}
*/
StModalService.prototype.showBasicModal = /**
* @param {?} type
* @param {?} modalTitle
* @param {?} messageTitle
* @param {?} message
* @param {?} okButton
* @param {?=} cancelButton
* @param {?=} maxWidth
* @param {?=} minWidth
* @param {?=} icon
* @return {?}
*/
function (type, modalTitle, messageTitle, message, okButton, cancelButton, maxWidth, minWidth, icon) {
if (cancelButton === void 0) { cancelButton = ''; }
if (maxWidth === void 0) { maxWidth = 600; }
if (minWidth === void 0) { minWidth = 400; }
if (icon === void 0) { icon = ''; }
/** @type {?} */
var iconStatus;
/** @type {?} */
var buttons = [{
label: okButton,
classes: (type === StModalBasicType.DELETE) ? 'button-critical' : 'button-primary',
responseValue: StModalResponse.YES,
closeOnClick: true
}];
if (type !== StModalBasicType.INFO) {
buttons.unshift({
label: cancelButton,
classes: (type === StModalBasicType.DELETE) ? 'button-borderless' : 'button-secondary',
responseValue: StModalResponse.NO,
closeOnClick: true
});
}
switch (type) {
case StModalBasicType.DELETE:
iconStatus = 'icon-circle-cross';
break;
case StModalBasicType.WARNING:
iconStatus = 'icon-alert';
break;
default:
iconStatus = icon;
break;
}
return this.show({
fullscreen: false,
message: message,
messageTitle: messageTitle,
modalTitle: modalTitle,
buttons: buttons,
maxWidth: maxWidth,
minWidth: minWidth,
iconStatus: iconStatus
});
};
/**
* @return {?}
*/
StModalService.prototype.close = /**
* @return {?}
*/
function () {
this.destroy();
};
/* INTERNAL METHODS FOR WORK WITH MODALS */
/* INTERNAL METHODS FOR WORK WITH MODALS */
/**
* @private
* @param {?} modalConfig
* @param {?=} component
* @return {?}
*/
StModalService.prototype.createModal = /* INTERNAL METHODS FOR WORK WITH MODALS */
/**
* @private
* @param {?} modalConfig
* @param {?=} component
* @return {?}
*/
function (modalConfig, component) {
/** @type {?} */
var stModalFactory = this._cfr.resolveComponentFactory(StModalComponent);
if (stModalFactory) {
this._containerRef.clear();
this.dynamicModal = this._containerRef.createComponent(stModalFactory);
this.bindVars(modalConfig, component);
}
};
/**
* @private
* @return {?}
*/
StModalService.prototype.destroy = /**
* @private
* @return {?}
*/
function () {
if (this.dynamicModal) {
this.dynamicModal.destroy();
this.dynamicModal = undefined;
this.notifyButtonInteraction.next(StModalResponse.CLOSE);
this.notifyButtonInteraction.complete();
}
};
/**
* @private
* @param {?} modalConfig
* @param {?} component
* @return {?}
*/
StModalService.prototype.bindVars = /**
* @private
* @param {?} modalConfig
* @param {?} component
* @return {?}
*/
function (modalConfig, component) {
this.dynamicModal.instance.component = component;
this.dynamicModal.instance.click.subscribe(this.notify.bind(this));
this.dynamicModal.instance.modalConfig = modalConfig;
this.dynamicModal.changeDetectorRef.detectChanges();
};
/**
* @private
* @param {?} buttonResponse
* @return {?}
*/
StModalService.prototype.notify = /**
* @private
* @param {?} buttonResponse
* @return {?}
*/
function (buttonResponse) {
this.notifyButtonInteraction.next(buttonResponse.response);
if (buttonResponse.close) {
this.close();
}
};
/**
* @private
* @param {?} config
* @param {?=} component
* @return {?}
*/
StModalService.prototype.canCreateModal = /**
* @private
* @param {?} config
* @param {?=} component
* @return {?}
*/
function (config, component) {
/** @type {?} */
var errors = [];
if (!this._containerRef) {
errors.push("[ERROR]: StModalService => Cant find container, are you sure you declarate in MAIN APP component in html and typescript?");
}
if (this.dynamicModal !== undefined) {
errors.push("[ERROR]: StModalService => Can't create modal beacause already exists one. Are you sure that you call close method?)");
}
if (!component && !config.message && !config.html) {
errors.push("[ERROR]: StModalService => Can't find message, html or component to show in modal");
}
return errors;
};
/**
* @private
* @param {?} config
* @return {?}
*/
StModalService.prototype.createConfig = /**
* @private
* @param {?} config
* @return {?}
*/
function (config) {
/** @type {?} */
var defaultConfig = {
fullscreen: false,
inputs: {},
outputs: {},
modalTitle: 'Default title',
messageTitle: 'Default subtitle',
buttons: [],
message: undefined,
html: undefined,
maxWidth: undefined,
minWidth: undefined,
empty: false
};
/** @type {?} */
var checkedConfig = Object.assign({}, defaultConfig, config);
checkedConfig.buttons = this.checkButtons(checkedConfig.buttons);
return checkedConfig;
};
/**
* @private
* @param {?} buttons
* @return {?}
*/
StModalService.prototype.checkButtons = /**
* @private
* @param {?} buttons
* @return {?}
*/
function (buttons) {
return buttons.map((/**
* @param {?} button
* @return {?}
*/
function (button) { return Object.assign({}, { label: 'Button', closeOnClick: false }, button); }));
};
StModalService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
StModalService.ctorParameters = function () { return [
{ type: ComponentFactoryResolver }
]; };
return StModalService;
}());
export { StModalService };
if (false) {
/**
* @type {?}
* @private
*/
StModalService.prototype._containerRef;
/**
* @type {?}
* @private
*/
StModalService.prototype.dynamicModal;
/**
* @type {?}
* @private
*/
StModalService.prototype.notifyButtonInteraction;
/**
* @type {?}
* @private
*/
StModalService.prototype._cfr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtbW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdHJhdGlvL2VnZW8vIiwic291cmNlcyI6WyJsaWIvc3QtbW9kYWwvc3QtbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFVQSxPQUFPLEVBRUosd0JBQXdCLEVBRXhCLFVBQVUsRUFHWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUdKLGVBQWUsRUFFZixnQkFBZ0IsRUFDbEIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQjtJQU9HLHdCQUFvQixJQUE4QjtRQUE5QixTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUoxQyxrQkFBYSxHQUFxQixTQUFTLENBQUM7UUFDNUMsaUJBQVksR0FBbUMsU0FBUyxDQUFDO0lBR1gsQ0FBQztJQUd2RCxzQkFBSSxxQ0FBUztRQURiLGtCQUFrQjs7Ozs7O1FBQ2xCLFVBQWMsU0FBMkI7WUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDbEMsQ0FBQzs7O09BQUE7SUFFRCxtQkFBbUI7Ozs7Ozs7SUFDbkIsNkJBQUk7Ozs7Ozs7SUFBSixVQUFLLE1BQXFCLEVBQUUsU0FBcUI7O1lBQzFDLE1BQU0sR0FBYSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7UUFDN0QsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7UUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJ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KlxuICogwqkgMjAxNyBTdHJhdGlvIEJpZyBEYXRhIEluYy4sIFN1Y3Vyc2FsIGVuIEVzcGHDsWEuXG4gKlxuICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTtcbiAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuXG4gKiBTZWUgdGhlIHRlcm1zIG9mIHRoZSBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAuXG4gKi9cbmltcG9ydCB7XG4gICBDb21wb25lbnRGYWN0b3J5LFxuICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgQ29tcG9uZW50UmVmLFxuICAgSW5qZWN0YWJsZSxcbiAgIFR5cGUsXG4gICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSAsICBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qIGxvY2FsIGRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgU3RNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vc3QtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICBTdE1vZGFsQnV0dG9uLFxuICAgU3RNb2RhbENvbmZpZyxcbiAgIFN0TW9kYWxSZXNwb25zZSxcbiAgIFN0TW9kYWxCdXR0b25SZXNwb25zZSxcbiAgIFN0TW9kYWxCYXNpY1R5cGVcbn0gZnJvbSAnLi9zdC1tb2RhbC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdE1vZGFsU2VydmljZSB7XG5cbiAgIHByaXZhdGUgX2NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiA9IHVuZGVmaW5lZDtcbiAgIHByaXZhdGUgZHluYW1pY01vZGFsOiBDb21wb25lbnRSZWY8U3RNb2RhbENvbXBvbmVudD4gPSB1bmRlZmluZWQ7XG4gICBwcml2YXRlIG5vdGlmeUJ1dHRvbkludGVyYWN0aW9uOiBTdWJqZWN0PFN0TW9kYWxSZXNwb25zZT47XG5cbiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSB7IH1cblxuICAgLyogRXh0ZXJuYWwgQVBJICovXG4gICBzZXQgY29udGFpbmVyKGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgdGhpcy5fY29udGFpbmVyUmVmID0gY29udGFpbmVyO1xuICAgfVxuXG4gICAvLyAtIFB1YmxpYyBtZXRob2RzXG4gICBzaG93KGNvbmZpZzogU3RNb2RhbENvbmZpZywgY29tcG9uZW50PzogVHlwZTxhbnk+KTogT2JzZXJ2YWJsZTxTdE1vZGFsUmVzcG9uc2U+IHtcbiAgICAgIGxldCBlcnJvcnM6IHN0cmluZ1tdID0gdGhpcy5jYW5DcmVhdGVNb2RhbChjb25maWcsIGNvbXBvbmVudCk7XG4gICAgICBpZiAoZXJyb3JzICYmIGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLmpvaW4oJyAnKSk7XG4gICAgICB9XG4gICAgICB0aGlzLm5vdGlmeUJ1dHRvbkludGVyYWN0aW9uID0gbmV3IFN1YmplY3Q8U3RNb2RhbFJlc3BvbnNlPigpO1xuICAgICAgdGhpcy5jcmVhdGVNb2RhbCh0aGlzLmNyZWF0ZUNvbmZpZyhjb25maWcpLCBjb21wb25lbnQpO1xuICAgICAgcmV0dXJuIHRoaXMubm90aWZ5QnV0dG9uSW50ZXJhY3Rpb24uYXNPYnNlcnZhYmxlKCk7XG4gICB9XG5cbiAgIHNob3dCYXNpY01vZGFsKFxuICAgICAgdHlwZTogU3RNb2RhbEJhc2ljVHlwZSxcbiAgICAgIG1vZGFsVGl0bGU6IHN0cmluZyxcbiAgICAgIG1lc3NhZ2VUaXRsZTogc3RyaW5nLFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgb2tCdXR0b246IHN0cmluZyxcbiAgICAgIGNhbmNlbEJ1dHRvbjogc3RyaW5nID0gJycsXG4gICAgICBtYXhXaWR0aDogbnVtYmVyID0gNjAwLFxuICAgICAgbWluV2lkdGg6IG51bWJlciA9IDQwMCxcbiAgICAgIGljb246IHN0cmluZyA9ICcnXG4gICApOiBPYnNlcnZhYmxlPFN0TW9kYWxSZXNwb25zZT4ge1xuICAgICAgbGV0IGljb25TdGF0dXM6IHN0cmluZztcblxuICAgICAgY29uc3QgYnV0dG9uczogU3RNb2RhbEJ1dHRvbltdID0gW3tcbiAgICAgICAgIGxhYmVsOiBva0J1dHRvbixcbiAgICAgICAgIGNsYXNzZXM6ICh0eXBlID09PSBTdE1vZGFsQmFzaWNUeXBlLkRFTEVURSkgPyAnYnV0dG9uLWNyaXRpY2FsJyA6ICdidXR0b24tcHJpbWFyeScsXG4gICAgICAgICByZXNwb25zZVZhbHVlOiBTdE1vZGFsUmVzcG9uc2UuWUVTLFxuICAgICAgICAgY2xvc2VPbkNsaWNrOiB0cnVlXG4gICAgICB9XTtcblxuICAgICAgaWYgKHR5cGUgIT09IFN0TW9kYWxCYXNpY1R5cGUuSU5GTykge1xuICAgICAgICAgYnV0dG9ucy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGxhYmVsOiBjYW5jZWxCdXR0b24sXG4gICAgICAgICAgICBjbGFzc2VzOiAodHlwZSA9PT0gU3RNb2RhbEJhc2ljVHlwZS5ERUxFVEUpID8gJ2J1dHRvbi1ib3JkZXJsZXNzJyA6ICdidXR0b24tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgIHJlc3BvbnNlVmFsdWU6IFN0TW9kYWxSZXNwb25zZS5OTyxcbiAgICAgICAgICAgIGNsb3NlT25DbGljazogdHJ1ZVxuICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgY2FzZSBTdE1vZGFsQmFzaWNUeXBlLkRFTEVURTpcbiAgICAgICAgICAgIGljb25TdGF0dXMgPSAnaWNvbi1jaXJjbGUtY3Jvc3MnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICBjYXNlIFN0TW9kYWxCYXNpY1R5cGUuV0FSTklORzpcbiAgICAgICAgICAgIGljb25TdGF0dXMgPSAnaWNvbi1hbGVydCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpY29uU3RhdHVzID0gaWNvbjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5zaG93KHtcbiAgICAgICAgIGZ1bGxzY3JlZW46IGZhbHNlLFxuICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgIG1lc3NhZ2VUaXRsZSxcbiAgICAgICAgIG1vZGFsVGl0bGUsXG4gICAgICAgICBidXR0b25zLFxuICAgICAgICAgbWF4V2lkdGgsXG4gICAgICAgICBtaW5XaWR0aCxcbiAgICAgICAgIGljb25TdGF0dXNcbiAgICAgIH0pO1xuICAgfVxuXG4gICBjbG9zZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgfVxuXG4gICAvKiBJTlRFUk5BTCBNRVRIT0RTIEZPUiBXT1JLIFdJVEggTU9EQUxTICovXG4gICBwcml2YXRlIGNyZWF0ZU1vZGFsKG1vZGFsQ29uZmlnOiBTdE1vZGFsQ29uZmlnLCBjb21wb25lbnQ/OiBUeXBlPGFueT4pOiB2b2lkIHtcbiAgICAgIGxldCBzdE1vZGFsRmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxTdE1vZGFsQ29tcG9uZW50PiA9IHRoaXMuX2Nmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShTdE1vZGFsQ29tcG9uZW50KTtcbiAgICAgIGlmIChzdE1vZGFsRmFjdG9yeSkge1xuICAgICAgICAgdGhpcy5fY29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICB0aGlzLmR5bmFtaWNNb2RhbCA9IHRoaXMuX2NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8U3RNb2RhbENvbXBvbmVudD4oc3RNb2RhbEZhY3RvcnkpO1xuICAgICAgICAgdGhpcy5iaW5kVmFycyhtb2RhbENvbmZpZywgY29tcG9uZW50KTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuZHluYW1pY01vZGFsKSB7XG4gICAgICAgICB0aGlzLmR5bmFtaWNNb2RhbC5kZXN0cm95KCk7XG4gICAgICAgICB0aGlzLmR5bmFtaWNNb2RhbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgIHRoaXMubm90aWZ5QnV0dG9uSW50ZXJhY3Rpb24ubmV4dChTdE1vZGFsUmVzcG9uc2UuQ0xPU0UpO1xuICAgICAgICAgdGhpcy5ub3RpZnlCdXR0b25JbnRlcmFjdGlvbi5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIGJpbmRWYXJzKG1vZGFsQ29uZmlnOiBTdE1vZGFsQ29uZmlnLCBjb21wb25lbnQ6IFR5cGU8YW55Pik6IHZvaWQge1xuICAgICAgdGhpcy5keW5hbWljTW9kYWwuaW5zdGFuY2UuY29tcG9uZW50ID0gY29tcG9uZW50O1xuXG4gICAgICB0aGlzLmR5bmFtaWNNb2RhbC5pbnN0YW5jZS5jbGljay5zdWJzY3JpYmUodGhpcy5ub3RpZnkuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmR5bmFtaWNNb2RhbC5pbnN0YW5jZS5tb2RhbENvbmZpZyA9IG1vZGFsQ29uZmlnO1xuXG4gICAgICB0aGlzLmR5bmFtaWNNb2RhbC5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICB9XG5cbiAgIHByaXZhdGUgbm90aWZ5KGJ1dHRvblJlc3BvbnNlOiBTdE1vZGFsQnV0dG9uUmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgIHRoaXMubm90aWZ5QnV0dG9uSW50ZXJhY3Rpb24ubmV4dChidXR0b25SZXNwb25zZS5yZXNwb25zZSk7XG4gICAgICBpZiAoYnV0dG9uUmVzcG9uc2UuY2xvc2UpIHtcbiAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBjYW5DcmVhdGVNb2RhbChjb25maWc6IFN0TW9kYWxDb25maWcsIGNvbXBvbmVudD86IFR5cGU8YW55Pik6IHN0cmluZ1tdIHtcbiAgICAgIGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgICBpZiAoIXRoaXMuX2NvbnRhaW5lclJlZikge1xuICAgICAgICAgZXJyb3JzLnB1c2goYFtFUlJPUl06IFN0TW9kYWxTZXJ2aWNlID0+IENhbnQgZmluZCBjb250YWluZXIsIGFyZSB5b3Ugc3VyZSB5b3UgZGVjbGFyYXRlIGluIE1BSU4gQVBQIGNvbXBvbmVudCBpbiBodG1sIGFuZCB0eXBlc2NyaXB0P2ApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZHluYW1pY01vZGFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgIGVycm9ycy5wdXNoKGBbRVJST1JdOiBTdE1vZGFsU2VydmljZSA9PiBDYW4ndCBjcmVhdGUgbW9kYWwgYmVhY2F1c2UgYWxyZWFkeSBleGlzdHMgb25lLiBBcmUgeW91IHN1cmUgdGhhdCB5b3UgY2FsbCBjbG9zZSBtZXRob2Q/KWApO1xuICAgICAgfVxuICAgICAgaWYgKCFjb21wb25lbnQgJiYgIWNvbmZpZy5tZXNzYWdlICYmICFjb25maWcuaHRtbCkge1xuICAgICAgICAgZXJyb3JzLnB1c2goYFtFUlJPUl06IFN0TW9kYWxTZXJ2aWNlID0+IENhbid0IGZpbmQgbWVzc2FnZSwgaHRtbCBvciBjb21wb25lbnQgdG8gc2hvdyBpbiBtb2RhbGApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9ycztcbiAgIH1cblxuICAgcHJpdmF0ZSBjcmVhdGVDb25maWcoY29uZmlnOiBTdE1vZGFsQ29uZmlnKTogU3RNb2RhbENvbmZpZyB7XG4gICAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBTdE1vZGFsQ29uZmlnID0ge1xuICAgICAgICAgZnVsbHNjcmVlbjogZmFsc2UsXG4gICAgICAgICBpbnB1dHM6IHt9LFxuICAgICAgICAgb3V0cHV0czoge30sXG4gICAgICAgICBtb2RhbFRpdGxlOiAnRGVmYXVsdCB0aXRsZScsXG4gICAgICAgICBtZXNzYWdlVGl0bGU6ICdEZWZhdWx0IHN1YnRpdGxlJyxcbiAgICAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgICAgbWVzc2FnZTogdW5kZWZpbmVkLFxuICAgICAgICAgaHRtbDogdW5kZWZpbmVkLFxuICAgICAgICAgbWF4V2lkdGg6IHVuZGVmaW5lZCxcbiAgICAgICAgIG1pbldpZHRoOiB1bmRlZmluZWQsXG4gICAgICAgICBlbXB0eTogZmFsc2VcbiAgICAgIH07XG4gICAgICBjb25zdCBjaGVja2VkQ29uZmlnOiBTdE1vZGFsQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENvbmZpZywgY29uZmlnKTtcbiAgICAgIGNoZWNrZWRDb25maWcuYnV0dG9ucyA9IHRoaXMuY2hlY2tCdXR0b25zKGNoZWNrZWRDb25maWcuYnV0dG9ucyk7XG4gICAgICByZXR1cm4gY2hlY2tlZENvbmZpZztcbiAgIH1cblxuICAgcHJpdmF0ZSBjaGVja0J1dHRvbnMoYnV0dG9uczogU3RNb2RhbEJ1dHRvbltdKTogU3RNb2RhbEJ1dHRvbltdIHtcbiAgICAgIHJldHVybiBidXR0b25zLm1hcChidXR0b24gPT4gT2JqZWN0LmFzc2lnbih7fSwgeyBsYWJlbDogJ0J1dHRvbicsIGNsb3NlT25DbGljazogZmFsc2UgfSwgYnV0dG9uKSk7XG4gICB9XG59XG4iXX0=