UNPKG

acr-assist-simulator-module

Version:

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.7.4.

226 lines (225 loc) 26.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import { DataElementCreationBaseService } from './data-element-creation-base-service'; import { DiagramService } from './diagram.service'; import { ChoiceDataElement } from '../../../core/elements/models/choice-data-element-model'; import { Choice } from '../../../core/elements/models/choice.model'; import { ImageMap } from '../../../core/elements/models/image-map.model'; import { Area } from '../../../core/elements/models/area-model'; import { AreaMap } from '../../../core/elements/models/area-map.model'; import { ArrayCheckerService } from './array-checker.service'; import { NotRelevantDataElements } from '../../../core/models/notrelevantdataelements.model'; import { ConditionalProperty } from '../../../core/elements/models/conditionalproperty.model'; import { ConditionsCreationService } from './conditions-creation.service'; import { ComputedValueCreationService } from './computed-value-creation.service'; var ChoiceDataElementCreationService = /** @class */ (function (_super) { tslib_1.__extends(ChoiceDataElementCreationService, _super); function ChoiceDataElementCreationService(diagramService, arrayCheckerService, conditionsCreationService, computedValueCreationService) { var _this = _super.call(this, diagramService) || this; _this.arrayCheckerService = arrayCheckerService; _this.conditionsCreationService = conditionsCreationService; _this.computedValueCreationService = computedValueCreationService; _this.elementType = 'ChoiceDataElement'; return _this; } /** * @param {?} choiceItem * @return {?} */ ChoiceDataElementCreationService.prototype.returnChoice = /** * @param {?} choiceItem * @return {?} */ function (choiceItem) { var /** @type {?} */ choice = new Choice(); choice.label = choiceItem.Label; choice.value = choiceItem.Value; choice.hint = choiceItem.Hint; choice.reportText = choiceItem.ReportText; choice.default = false; if (choiceItem.Attr && choiceItem.Attr.IsDefault) { choice.default = choiceItem.Attr.IsDefault; } return choice; }; /** * @param {?} areaJSON * @return {?} */ ChoiceDataElementCreationService.prototype.returnArea = /** * @param {?} areaJSON * @return {?} */ function (areaJSON) { var /** @type {?} */ area = new Area(); area.choiceValue = areaJSON.Attr.ChoiceValue; area.coords = areaJSON.Attr.Coords; area.shape = areaJSON.Attr.Shape; return area; }; /** * @param {?} data * @return {?} */ ChoiceDataElementCreationService.prototype.createElement = /** * @param {?} data * @return {?} */ function (data) { var /** @type {?} */ dataElement = new ChoiceDataElement(); _super.prototype.populateBasicData.call(this, data, dataElement); dataElement.allowFreetext = data.Attr.AllowFreetext ? data.Attr.AllowFreetext : false; var /** @type {?} */ choiceItems = data.ChoiceInfo.Choice; var /** @type {?} */ defaultValue; if (choiceItems !== undefined) { dataElement.choiceInfo = new Array(); if (this.arrayCheckerService.isArray(choiceItems)) { try { for (var choiceItems_1 = tslib_1.__values(choiceItems), choiceItems_1_1 = choiceItems_1.next(); !choiceItems_1_1.done; choiceItems_1_1 = choiceItems_1.next()) { var choiceItem = choiceItems_1_1.value; var /** @type {?} */ choice = this.returnChoice(choiceItem); if (choice.default) { defaultValue = choice.value; } dataElement.choiceInfo.push(choice); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (choiceItems_1_1 && !choiceItems_1_1.done && (_a = choiceItems_1.return)) _a.call(choiceItems_1); } finally { if (e_1) throw e_1.error; } } } else { var /** @type {?} */ choice = this.returnChoice(choiceItems); if (choice.default) { defaultValue = choice.value; } dataElement.choiceInfo.push(choice); } } dataElement.defaultValue = defaultValue; dataElement.currentValue = defaultValue; var /** @type {?} */ imageMap = data.ImageMap; if (imageMap !== undefined) { dataElement.imageMap = new ImageMap(); dataElement.imageMap.location = imageMap.Location; var /** @type {?} */ areaMaps = imageMap.Map.Area; if (areaMaps !== undefined) { dataElement.imageMap.map = new AreaMap(); dataElement.imageMap.map.areas = new Array(); if (this.arrayCheckerService.isArray(areaMaps)) { try { for (var areaMaps_1 = tslib_1.__values(areaMaps), areaMaps_1_1 = areaMaps_1.next(); !areaMaps_1_1.done; areaMaps_1_1 = areaMaps_1.next()) { var areaMap = areaMaps_1_1.value; dataElement.imageMap.map.areas.push(this.returnArea(areaMap)); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (areaMaps_1_1 && !areaMaps_1_1.done && (_b = areaMaps_1.return)) _b.call(areaMaps_1); } finally { if (e_2) throw e_2.error; } } } else { dataElement.imageMap.map.areas.push(this.returnArea(areaMaps)); } } } var /** @type {?} */ ConditionalProperties = data.ConditionalProperties; if (ConditionalProperties !== undefined) { var /** @type {?} */ notRelevantDataElements = new NotRelevantDataElements(); var /** @type {?} */ dataElementRefs = data.ConditionalProperties; // .NotRelevantDataElements.DataElementRef; if (data.ConditionalProperties !== undefined) { dataElement.conditionalProperties = new Array(); if (data.ConditionalProperties.ConditionalProperty instanceof Array) { try { for (var _c = tslib_1.__values(data.ConditionalProperties.ConditionalProperty), _d = _c.next(); !_d.done; _d = _c.next()) { var conditionalProperty = _d.value; dataElement.conditionalProperties.push(this.GetConditionalProperties(conditionalProperty)); } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (_d && !_d.done && (_e = _c.return)) _e.call(_c); } finally { if (e_3) throw e_3.error; } } } else { dataElement.conditionalProperties.push(this.GetConditionalProperties(data.ConditionalProperties.ConditionalProperty)); } } } return dataElement; var e_1, _a, e_2, _b, e_3, _e; }; /** * @param {?} conditionalProperty * @return {?} */ ChoiceDataElementCreationService.prototype.GetConditionalProperties = /** * @param {?} conditionalProperty * @return {?} */ function (conditionalProperty) { var /** @type {?} */ _conditionalProperty = new ConditionalProperty(); _conditionalProperty.condition = this.conditionsCreationService.returnCondition(conditionalProperty); // var test = this.computedValueCreationService.createComputedValue(conditionalProperty); if (this.conditionsCreationService.isComposite(conditionalProperty)) { _conditionalProperty.compositeCondition = this.conditionsCreationService.returnCompositeCondition(conditionalProperty); } _conditionalProperty.isRelevant = conditionalProperty.IsRelevant; _conditionalProperty.isRequired = conditionalProperty.IsRequired; _conditionalProperty.DisplaySequence = conditionalProperty.DisplaySequence; if (conditionalProperty.ChoiceNotRelevant !== undefined) { _conditionalProperty.ChoiceNotRelevant = new Array(); try { for (var _a = tslib_1.__values(conditionalProperty.ChoiceNotRelevant), _b = _a.next(); !_b.done; _b = _a.next()) { var choiceNotRelevant = _b.value; _conditionalProperty.ChoiceNotRelevant.push(choiceNotRelevant.Attr.ChoiceValue); } } catch (e_4_1) { e_4 = { error: e_4_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_4) throw e_4.error; } } } return _conditionalProperty; var e_4, _c; }; ChoiceDataElementCreationService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ ChoiceDataElementCreationService.ctorParameters = function () { return [ { type: DiagramService }, { type: ArrayCheckerService }, { type: ConditionsCreationService }, { type: ComputedValueCreationService } ]; }; return ChoiceDataElementCreationService; }(DataElementCreationBaseService)); export { ChoiceDataElementCreationService }; function ChoiceDataElementCreationService_tsickle_Closure_declarations() { /** @type {?} */ ChoiceDataElementCreationService.prototype.arrayCheckerService; /** @type {?} */ ChoiceDataElementCreationService.prototype.conditionsCreationService; /** @type {?} */ ChoiceDataElementCreationService.prototype.computedValueCreationService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvaWNlLWRhdGEtZWxlbWVudC1jcmVhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWNyLWFzc2lzdC1zaW11bGF0b3ItbW9kdWxlLyIsInNvdXJjZXMiOlsic3JjL2FwcC9tb2R1bGVzL2Fjci1hc3Npc3Qtc2ltdWxhdG9yL3NoYXJlZC9zZXJ2aWNlcy9jaG9pY2UtZGF0YS1lbGVtZW50LWNyZWF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUU1RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDN0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0lBSTNCLDREQUE4QjtJQUVsRiwwQ0FBWSxjQUE4QixFQUFVLG1CQUF3QyxFQUNsRiwyQkFDQTtRQUZWLFlBSUUsa0JBQU0sY0FBYyxDQUFDLFNB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bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YUVsZW1lbnRDcmVhdGlvbkJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLWVsZW1lbnQtY3JlYXRpb24tYmFzZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhZ3JhbVNlcnZpY2UgfSBmcm9tICcuL2RpYWdyYW0uc2VydmljZSc7XHJcbmltcG9ydCB7IENob2ljZURhdGFFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbGVtZW50cy9tb2RlbHMvY2hvaWNlLWRhdGEtZWxlbWVudC1tb2RlbCc7XHJcbmltcG9ydCB7IEJhc2VEYXRhRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZWxlbWVudHMvbW9kZWxzL2Jhc2UtZGF0YS1lbGVtZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgQ2hvaWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbGVtZW50cy9tb2RlbHMvY2hvaWNlLm1vZGVsJztcclxuaW1wb3J0IHsgSW1hZ2VNYXAgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VsZW1lbnRzL21vZGVscy9pbWFnZS1tYXAubW9kZWwnO1xyXG5pbXBvcnQgeyBBcmVhIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbGVtZW50cy9tb2RlbHMvYXJlYS1tb2RlbCc7XHJcbmltcG9ydCB7IEFyZWFNYXAgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VsZW1lbnRzL21vZGVscy9hcmVhLW1hcC5tb2RlbCc7XHJcbmltcG9ydCB7IEFycmF5Q2hlY2tlclNlcnZpY2UgfSBmcm9tICcuL2FycmF5LWNoZWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdFJlbGV2YW50RGF0YUVsZW1lbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvbm90cmVsZXZhbnRkYXRhZWxlbWVudHMubW9kZWwnO1xyXG5pbXBvcnQgeyBDb25kaXRpb25hbFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbGVtZW50cy9tb2RlbHMvY29uZGl0aW9uYWxwcm9wZXJ0eS5tb2RlbCc7XHJcbmltcG9ydCB7IENvbmRpdGlvbnNDcmVhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbmRpdGlvbnMtY3JlYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXB1dGVkVmFsdWVDcmVhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbXB1dGVkLXZhbHVlLWNyZWF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCcmFuY2ggfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9icmFuY2gubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hvaWNlRGF0YUVsZW1lbnRDcmVhdGlvblNlcnZpY2UgZXh0ZW5kcyBEYXRhRWxlbWVudENyZWF0aW9uQmFzZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihkaWFncmFtU2VydmljZTogRGlhZ3JhbVNlcnZpY2UsIHByaXZhdGUgYXJyYXlDaGVja2VyU2VydmljZTogQXJyYXlDaGVja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZGl0aW9uc0NyZWF0aW9uU2VydmljZTogQ29uZGl0aW9uc0NyZWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tcHV0ZWRWYWx1ZUNyZWF0aW9uU2VydmljZTogQ29tcHV0ZWRWYWx1ZUNyZWF0aW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoZGlhZ3JhbVNlcnZpY2UpO1xyXG4gICAgdGhpcy5lbGVtZW50VHlwZSA9ICdDaG9pY2VEYXRhRWxlbWVudCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJldHVybkNob2ljZShjaG9pY2VJdGVtOiBhbnkpOiBDaG9pY2Uge1xyXG4gICAgY29uc3QgY2hvaWNlID0gbmV3IENob2ljZSgpO1xyXG4gICAgY2hvaWNlLmxhYmVsID0gY2hvaWNlSXRlbS5MYWJlbDtcclxuICAgIGNob2ljZS52YWx1ZSA9IGNob2ljZUl0ZW0uVmFsdWU7XHJcbiAgICBjaG9pY2UuaGludCA9IGNob2ljZUl0ZW0uSGludDtcclxuICAgIGNob2ljZS5yZXBvcnRUZXh0ID0gY2hvaWNlSXRlbS5SZXBvcnRUZXh0O1xyXG4gICAgY2hvaWNlLmRlZmF1bHQgPSBmYWxzZTtcclxuICAgIGlmIChjaG9pY2VJdGVtLkF0dHIgJiYgY2hvaWNlSXRlbS5BdHRyLklzRGVmYXVsdCkge1xyXG4gICAgICBjaG9pY2UuZGVmYXVsdCA9IGNob2ljZUl0ZW0uQXR0ci5Jc0RlZmF1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2hvaWNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXR1cm5BcmVhKGFyZWFKU09OOiBhbnkpOiBBcmVhIHtcclxuICAgIGNvbnN0IGFyZWEgPSBuZXcgQXJlYSgpO1xyXG4gICAgYXJlYS5jaG9pY2VWYWx1ZSA9IGFyZWFKU09OLkF0dHIuQ2hvaWNlVmFsdWU7XHJcbiAgICBhcmVhLmNvb3JkcyA9IGFyZWFKU09OLkF0dHIuQ29vcmRzO1xyXG4gICAgYXJlYS5zaGFwZSA9IGFyZWFKU09OLkF0dHIuU2hhcGU7XHJcbiAgICByZXR1cm4gYXJlYTtcclxuICB9XHJcblxyXG5cclxuICBjcmVhdGVFbGVtZW50KGRhdGE6IGFueSk6IEJhc2VEYXRhRWxlbWVudCB7XHJcbiAgICBjb25zdCBkYXRhRWxlbWVudCA9IG5ldyBDaG9pY2VEYXRhRWxlbWVudCgpO1xyXG4gICAgc3VwZXIucG9wdWxhdGVCYXNpY0RhdGEoZGF0YSwgZGF0YUVsZW1lbnQpO1xyXG4gICAgZGF0YUVsZW1lbnQuYWxsb3dGcmVldGV4dCA9IGRhdGEuQXR0ci5BbGxvd0ZyZWV0ZXh0ID8gZGF0YS5BdHRyLkFsbG93RnJlZXRleHQgOiBmYWxzZTtcclxuICAgIGNvbnN0IGNob2ljZUl0ZW1zID0gZGF0YS5DaG9pY2VJbmZvLkNob2ljZTtcclxuICAgIGxldCBkZWZhdWx0VmFsdWU6IGFueTtcclxuICAgIGlmIChjaG9pY2VJdGVtcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRhdGFFbGVtZW50LmNob2ljZUluZm8gPSBuZXcgQXJyYXk8Q2hvaWNlPigpO1xyXG4gICAgICBpZiAodGhpcy5hcnJheUNoZWNrZXJTZXJ2aWNlLmlzQXJyYXkoY2hvaWNlSXRlbXMpKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjaG9pY2VJdGVtIG9mIGNob2ljZUl0ZW1zKSB7XHJcbiAgICAgICAgICBjb25zdCBjaG9pY2UgPSB0aGlzLnJldHVybkNob2ljZShjaG9pY2VJdGVtKTtcclxuICAgICAgICAgIGlmIChjaG9pY2UuZGVmYXVsdCkge1xyXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBjaG9pY2UudmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhRWxlbWVudC5jaG9pY2VJbmZvLnB1c2goY2hvaWNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY2hvaWNlID0gdGhpcy5yZXR1cm5DaG9pY2UoY2hvaWNlSXRlbXMpO1xyXG4gICAgICAgIGlmIChjaG9pY2UuZGVmYXVsdCkge1xyXG4gICAgICAgICAgZGVmYXVsdFZhbHVlID0gY2hvaWNlLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhRWxlbWVudC5jaG9pY2VJbmZvLnB1c2goY2hvaWNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZGF0YUVsZW1lbnQuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG4gICAgZGF0YUVsZW1lbnQuY3VycmVudFZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG4gICAgY29uc3QgaW1hZ2VNYXAgPSBkYXRhLkltYWdlTWFwO1xyXG4gICAgaWYgKGltYWdlTWFwICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZGF0YUVsZW1lbnQuaW1hZ2VNYXAgPSBuZXcgSW1hZ2VNYXAoKTtcclxuICAgICAgZGF0YUVsZW1lbnQuaW1hZ2VNYXAubG9jYXRpb24gPSBpbWFnZU1hcC5Mb2NhdGlvbjtcclxuICAgICAgY29uc3QgYXJlYU1hcHMgPSBpbWFnZU1hcC5NYXAuQXJlYTtcclxuICAgICAgaWYgKGFyZWFNYXBzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBkYXRhRWxlbWVudC5pbWFnZU1hcC5tYXAgPSBuZXcgQXJlYU1hcCgpO1xyXG4gICAgICAgIGRhdGFFbGVtZW50LmltYWdlTWFwLm1hcC5hcmVhcyA9IG5ldyBBcnJheTxBcmVhPigpO1xyXG4gICAgICAgIGlmICh0aGlzLmFycmF5Q2hlY2tlclNlcnZpY2UuaXNBcnJheShhcmVhTWFwcykpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgYXJlYU1hcCBvZiBhcmVhTWFwcykge1xyXG4gICAgICAgICAgICBkYXRhRWxlbWVudC5pbWFnZU1hcC5tYXAuYXJlYXMucHVzaCh0aGlzLnJldHVybkFyZWEoYXJlYU1hcCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhRWxlbWVudC5pbWFnZU1hcC5tYXAuYXJlYXMucHVzaCh0aGlzLnJldHVybkFyZWEoYXJlYU1hcHMpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uc3QgQ29uZGl0aW9uYWxQcm9wZXJ0aWVzID0gZGF0YS5Db25kaXRpb25hbFByb3BlcnRpZXM7XHJcbiAgICBpZiAoQ29uZGl0aW9uYWxQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uc3Qgbm90UmVsZXZhbnREYXRhRWxlbWVudHMgPSBuZXcgTm90UmVsZXZhbnREYXRhRWxlbWVudHMoKTtcclxuICAgICAgY29uc3QgZGF0YUVsZW1lbnRSZWZzID0gZGF0YS5Db25kaXRpb25hbFByb3BlcnRpZXM7XHJcbiAgICAgIC8vIC5Ob3RSZWxldmFudERhdGFFbGVtZW50cy5EYXRhRWxlbWVudFJlZjtcclxuXHJcbiAgICAgIGlmIChkYXRhLkNvbmRpdGlvbmFsUHJvcGVydGllcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZGF0YUVsZW1lbnQuY29uZGl0aW9uYWxQcm9wZXJ0aWVzID0gbmV3IEFycmF5PENvbmRpdGlvbmFsUHJvcGVydHk+KCk7XHJcbiAgICAgICAgaWYgKGRhdGEuQ29uZGl0aW9uYWxQcm9wZXJ0aWVzLkNvbmRpdGlvbmFsUHJvcGVydHkgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb25hbFByb3BlcnR5IG9mIGRhdGEuQ29uZGl0aW9uYWxQcm9wZXJ0aWVzLkNvbmRpdGlvbmFsUHJvcGVydHkpIHtcclxuICAgICAgICAgICAgZGF0YUVsZW1lbnQuY29uZGl0aW9uYWxQcm9wZXJ0aWVzLnB1c2godGhpcy5HZXRDb25kaXRpb25hbFByb3BlcnRpZXMoY29uZGl0aW9uYWxQcm9wZXJ0eSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhRWxlbWVudC5jb25kaXRpb25hbFByb3BlcnRpZXMucHVzaCh0aGlzLkdldENvbmRpdGlvbmFsUHJvcGVydGllcyhkYXRhLkNvbmRpdGlvbmFsUHJvcGVydGllcy5Db25kaXRpb25hbFByb3BlcnR5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGFFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBHZXRDb25kaXRpb25hbFByb3BlcnRpZXMoY29uZGl0aW9uYWxQcm9wZXJ0eSk6IENvbmRpdGlvbmFsUHJvcGVydHkge1xyXG4gICAgY29uc3QgX2NvbmRpdGlvbmFsUHJvcGVydHkgPSBuZXcgQ29uZGl0aW9uYWxQcm9wZXJ0eSgpO1xyXG4gICAgX2NvbmRpdGlvbmFsUHJvcGVydHkuY29uZGl0aW9uID0gdGhpcy5jb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlLnJldHVybkNvbmRpdGlvbihjb25kaXRpb25hbFByb3BlcnR5KTtcclxuICAgIC8vIHZhciB0ZXN0ID0gdGhpcy5jb21wdXRlZFZhbHVlQ3JlYXRpb25TZXJ2aWNlLmNyZWF0ZUNvbXB1dGVkVmFsdWUoY29uZGl0aW9uYWxQcm9wZXJ0eSk7XHJcbiAgICBpZiAodGhpcy5jb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlLmlzQ29tcG9zaXRlKGNvbmRpdGlvbmFsUHJvcGVydHkpKSB7XHJcbiAgICAgIF9jb25kaXRpb25hbFByb3BlcnR5LmNvbXBvc2l0ZUNvbmRpdGlvbiA9IHRoaXMuY29uZGl0aW9uc0NyZWF0aW9uU2VydmljZS5yZXR1cm5Db21wb3NpdGVDb25kaXRpb24oY29uZGl0aW9uYWxQcm9wZXJ0eSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2NvbmRpdGlvbmFsUHJvcGVydHkuaXNSZWxldmFudCA9IGNvbmRpdGlvbmFsUHJvcGVydHkuSXNSZWxldmFudDtcclxuICAgIF9jb25kaXRpb25hbFByb3BlcnR5LmlzUmVxdWlyZWQgPSBjb25kaXRpb25hbFByb3BlcnR5LklzUmVxdWlyZWQ7XHJcbiAgICBfY29uZGl0aW9uYWxQcm9wZXJ0eS5EaXNwbGF5U2VxdWVuY2UgPSBjb25kaXRpb25hbFByb3BlcnR5LkRpc3BsYXlTZXF1ZW5jZTtcclxuICAgIGlmIChjb25kaXRpb25hbFByb3BlcnR5LkNob2ljZU5vdFJlbGV2YW50ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgX2NvbmRpdGlvbmFsUHJvcGVydHkuQ2hvaWNlTm90UmVsZXZhbnQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gICAgICBmb3IgKGNvbnN0IGNob2ljZU5vdFJlbGV2YW50IG9mIGNvbmRpdGlvbmFsUHJvcGVydHkuQ2hvaWNlTm90UmVsZXZhbnQpIHtcclxuICAgICAgICBfY29uZGl0aW9uYWxQcm9wZXJ0eS5DaG9pY2VOb3RSZWxldmFudC5wdXNoKGNob2ljZU5vdFJlbGV2YW50LkF0dHIuQ2hvaWNlVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIF9jb25kaXRpb25hbFByb3BlcnR5O1xyXG4gIH1cclxufVxyXG4iXX0=