@trudb/tru-common-lib 0.0.947 → 0.0.950

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.
@@ -62,16 +62,17 @@ export class TruDataChangeParser {
62
62
  return entity.entityAspect.originalValues.hasOwnProperty(propertyName);
63
63
  };
64
64
  applyPropertyChanges = (change, entity) => {
65
- var stateBeforePropertyChange = entity.entityAspect.entityState;
66
- var originalValues = entity.entityAspect.originalValues;
65
+ let stateBeforePropertyChange = entity.entityAspect.entityState;
66
+ let originalValues = entity.entityAspect.originalValues;
67
67
  entity['Data_Notification'] = true;
68
68
  Object.keys(change.properties).forEach((key) => {
69
- var entityType = this.propertyTypes.get(change.tableName + '.' + key);
69
+ let propertyName = change.tableName + '.' + key;
70
+ let entityType = this.propertyTypes.get(propertyName);
70
71
  if (!entityType) {
71
72
  entityType = new TruPropertyConfigBase();
72
73
  entityType.typeName = 'text-bounded';
73
74
  }
74
- var propertyModified = this.hasPropertyAlreadyBeenModified(key, entity);
75
+ let propertyModified = this.hasPropertyAlreadyBeenModified(key, entity);
75
76
  if (key === 'Updated' || key === 'UpdatedRef') {
76
77
  entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);
77
78
  if (originalValues.hasOwnProperty(key))
@@ -275,4 +276,4 @@ export class TruDataChangeParser {
275
276
  this.dataChanged(dataChangeArgs);
276
277
  };
277
278
  }
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY2hhbmdlLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY2xhc3Nlcy90cnUtZGF0YS1jaGFuZ2UtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBS2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsTUFBTSxPQUFPLG1CQUFtQjtJQUN0QixhQUFhLENBQW9CO0lBQ2pDLFdBQVcsQ0FBaUI7SUFDNUIsTUFBTSxDQUFNO0lBQ1osU0FBUyxDQUFTO0lBQ2xCLFNBQVMsQ0FBMkI7SUFDcEMsZ0JBQWdCLENBQVk7SUFDNUIsY0FBYyxDQUFNO0lBQ3BCLGNBQWMsQ0FBSztJQUNuQixXQUFXLENBQWdCO0lBQzNCLFFBQVEsQ0FBZ0I7SUFDeEIsS0FBSyxDQUFxQjtJQUMxQixhQUFhLENBQXFDO0lBRWxELGlCQUFpQixDQUF3QjtJQUN6QyxlQUFlLEdBQXlCLEVBQUUsQ0FBQztJQUUzQyxZQUFZLEdBQTJCLElBQUksT0FBTyxFQUFpQixDQUFDO0lBRTVFLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFxQjtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFDRSxVQUFlLEVBQ2YsYUFBZ0MsRUFDaEMsV0FBMkIsRUFDM0IsaUJBQXdDLEVBQ3hDLE1BQTRCLEVBQzVCLFNBQWlC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QUFhLEVBQUUsQ0FBQztRQUN6QyxjQUFjLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDN0MsY0FBYyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgVHJ1RW50aXR5QmFzZSB9IGZyb20gXCIuLi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlXCI7XHJcbmltcG9ydCB7IFRydVByb3BlcnR5Q29uZmlnQmFzZSB9IGZyb20gXCIuLi9iYXNlLWNsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1iYXNlXCI7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RydS1hcHAtZW52aXJvbm1lbnRcIjtcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tIFwiLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dFwiO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFByb3BlcnR5TG9va3VwIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RydS1tb2RlbC1wcm9wZXJ0eS1sb29rdXBcIjtcclxuaW1wb3J0IHsgVHJ1TW9kZWxUeXBlTG9va3VwIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RydS1tb2RlbC10eXBlLWxvb2t1cFwiO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ2hhbmdlIH0gZnJvbSBcIi4vdHJ1LWRhdGEtY2hhbmdlXCI7XHJcbmltcG9ydCB7IFRydU1lcmdlRGF0YSB9IGZyb20gXCIuL3RydS1tZXJnZS1kYXRhXCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFRydURhdGFDaGFuZ2VQYXJzZXIge1xyXG4gIHByaXZhdGUgYXBwRW52aW9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQ7XHJcbiAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQ7XHJcbiAgcHJpdmF0ZSBlbnRpdHk6IGFueTtcclxuICBwcml2YXRlIHRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgYWRkRW50aXR5OiAobmV3RW50aXR5OiBhbnkpID0+IHZvaWQ7XHJcbiAgcHJpdmF0ZSBnZXRMYXRlc3RSZXN1bHRzOiAoKSA9PiBhbnk7XHJcbiAgcHJpdmF0ZSBnZXRMYXRlc3RRdWVyeTogYW55O1xyXG4gIHByaXZhdGUgY29udGV4dEZpbHRlcnM6IFtdO1xyXG4gIHByaXZhdGUgZXhwYW5kUGF0aHM6IEFycmF5PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBpc0xvYWRlZDogKCkgPT4gYm9vbGVhbjtcclxuICBwcml2YXRlIHR5cGVzOiBUcnVNb2RlbFR5cGVMb29rdXA7XHJcbiAgcHJpdmF0ZSBwcm9wZXJ0eVR5cGVzOiBNYXA8c3RyaW5nLCBUcnVQcm9wZXJ0eUNvbmZpZ0Jhc2U+O1xyXG5cclxuICBwcml2YXRlIGdsb2JhbERhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCB8IG51bGw7XHJcbiAgcHJpdmF0ZSB3YWl0aW5nRW50aXRpZXM6IEFycmF5PFRydUVudGl0eUJhc2U+ID0gW107XHJcblxyXG4gIHByaXZhdGUgZGF0YUNoYW5nZWQkOiBTdWJqZWN0PFRydURhdGFDaGFuZ2U+ID0gbmV3IFN1YmplY3Q8VHJ1RGF0YUNoYW5nZT4oKTtcclxuXHJcbiAgb25EYXRhQ2hhbmdlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFDaGFuZ2VkJDtcclxuICB9XHJcblxyXG4gIGRhdGFDaGFuZ2VkKGNoYW5nZTogVHJ1RGF0YUNoYW5nZSkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlZCQubmV4dChjaGFuZ2UpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb25uZWN0aW9uOiBhbnksXHJcbiAgICBhcHBFbnZpcm9tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIGdsb2JhbERhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCB8IG51bGwsXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBhZGRFbnRpdHk6IGFueSxcclxuICAgIGdldExhdGVzdFJlc3VsdHM6IGFueSxcclxuICAgIGdldExhdGVzdFF1ZXJ5OiBhbnksXHJcbiAgICBjb250ZXh0RmlsdGVyczogW10sXHJcbiAgICBleHBhbmRQYXRoczogQXJyYXk8c3RyaW5nPixcclxuICAgIGlzTG9hZGVkOiAoKSA9PiBib29sZWFuLFxyXG4gICAgbW9kZWxUeXBlTG9va3VwOiBUcnVNb2RlbFR5cGVMb29rdXAsXHJcbiAgICBtb2RlbFByb3BlcnR5TG9va3VwOiBUcnVNb2RlbFByb3BlcnR5TG9va3VwXHJcbiAgKSB7XHJcbiAgICB0aGlzLmFwcEVudmlvbm1lbnQgPSBhcHBFbnZpcm9tZW50O1xyXG4gICAgdGhpcy5kYXRhQ29udGV4dCA9IGRhdGFDb250ZXh0O1xyXG4gICAgdGhpcy5nbG9iYWxEYXRhQ29udGV4dCA9IGdsb2JhbERhdGFDb250ZXh0O1xyXG4gICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XHJcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRhYmxlTmFtZTtcclxuICAgIHRoaXMuYWRkRW50aXR5ID0gYWRkRW50aXR5O1xyXG4gICAgdGhpcy5nZXRMYXRlc3RSZXN1bHRzID0gZ2V0TGF0ZXN0UmVzdWx0cztcclxuICAgIHRoaXMuZ2V0TGF0ZXN0UXVlcnkgPSBnZXRMYXRlc3RRdWVyeTtcclxuICAgIHRoaXMuY29udGV4dEZpbHRlcnMgPSBjb250ZXh0RmlsdGVycztcclxuICAgIHRoaXMuZXhwYW5kUGF0aHMgPSBleHBhbmRQYXRocztcclxuICAgIHRoaXMuaXNMb2FkZWQgPSBpc0xvYWRlZDtcclxuICAgIHRoaXMudHlwZXMgPSBtb2RlbFR5cGVMb29rdXA7IFxyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVzID0gbW9kZWxQcm9wZXJ0eUxvb2t1cC5sb29rdXA7XHJcblxyXG4gICAgY29ubmVjdGlvbi5vbihcImNoYW5nZVwiLCAocGF5bG9hZDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlKHBheWxvYWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRFbnRpdHlJbkNhY2hlID0gKGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpO1xyXG4gICAgcmV0dXJuIGVudGl0eUFjY2Vzc29yLnNlYXJjaEJ5UmVmQ2FjaGVPbmx5KHRoaXMudHlwZXMuZ2V0VHlwZShjaGFuZ2UudGFibGVOYW1lKSwgcGFyc2VJbnQoY2hhbmdlLnRhYmxlUmVmLCAxMCksIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kRW50aXR5SW5HbG9iYWxDYWNoZSA9IChjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgdmFyIGVudGl0eUFjY2Vzc29yID0gdGhpcy5nbG9iYWxEYXRhQ29udGV4dCEuZW50aXR5QWNjZXNzKCk7XHJcbiAgICByZXR1cm4gZW50aXR5QWNjZXNzb3Iuc2VhcmNoQnlSZWZDYWNoZU9ubHkodGhpcy50eXBlcy5nZXRUeXBlKGNoYW5nZS50YWJsZU5hbWUpLCBwYXJzZUludChjaGFuZ2UudGFibGVSZWYsIDEwKSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrSWZEYXRlVGltZSA9IChuZXdWYWx1ZTogYW55LCBjdXJyZW50VmFsdWU6IGFueSwgdHlwZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgaWYgKHR5cGVOYW1lID09PSAnZGF0ZS10aW1lJyB8fCB0eXBlTmFtZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGlmIChtb21lbnQobmV3VmFsdWUsIFwiWVlZWS1NTS1ERCBISDptbTpzcy5zc3Nzc3NzXCIsIHRydWUpLmlzVmFsaWQoKSlcclxuICAgICAgICByZXR1cm4gbW9tZW50KG1vbWVudC51dGMobmV3VmFsdWUpLnRvRGF0ZSgpKS5mb3JtYXQoJ01NL0REL1lZWVkgaGg6bW0gQScpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1ZhbHVlXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1Byb3BlcnR5QWxyZWFkeUJlZW5Nb2RpZmllZCA9IChwcm9wZXJ0eU5hbWU6IHN0cmluZywgZW50aXR5OiBhbnkpID0+IHtcclxuICAgIHJldHVybiBlbnRpdHkuZW50aXR5QXNwZWN0Lm9yaWdpbmFsVmFsdWVzLmhhc093blByb3BlcnR5KHByb3BlcnR5TmFtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5UHJvcGVydHlDaGFuZ2VzID0gKGNoYW5nZTogYW55LCBlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgdmFyIHN0YXRlQmVmb3JlUHJvcGVydHlDaGFuZ2UgPSBlbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gICAgdmFyIG9yaWdpbmFsVmFsdWVzID0gZW50aXR5LmVudGl0eUFzcGVjdC5vcmlnaW5hbFZhbHVlcztcclxuXHJcbiAgICBlbnRpdHlbJ0RhdGFfTm90aWZpY2F0aW9uJ10gPSB0cnVlO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKGNoYW5nZS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgdmFyIGVudGl0eVR5cGUgPSB0aGlzLnByb3BlcnR5VHlwZXMuZ2V0KGNoYW5nZS50YWJsZU5hbWUgKyAnLicgKyBrZXkpO1xyXG4gICAgICBpZiAoIWVudGl0eVR5cGUpIHtcclxuICAgICAgICBlbnRpdHlUeXBlID0gbmV3IFRydVByb3BlcnR5Q29uZmlnQmFzZSgpO1xyXG4gICAgICAgIGVudGl0eVR5cGUudHlwZU5hbWUgPSAndGV4dC1ib3VuZGVkJztcclxuICAgICAgfVxyXG4gICAgICB2YXIgcHJvcGVydHlNb2RpZmllZCA9IHRoaXMuaGFzUHJvcGVydHlBbHJlYWR5QmVlbk1vZGlmaWVkKGtleSwgZW50aXR5KVxyXG4gICAgICBpZiAoa2V5ID09PSAnVXBkYXRlZCcgfHwga2V5ID09PSAnVXBkYXRlZFJlZicpIHtcclxuICAgICAgICBlbnRpdHlba2V5XSA9IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKTtcclxuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1trZXldO1xyXG4gICAgICB9IGVsc2UgaWYgKGVudGl0eVtrZXldICE9PSB0aGlzLmNoZWNrSWZEYXRlVGltZShjaGFuZ2UucHJvcGVydGllc1trZXldLCBlbnRpdHlba2V5XSwgZW50aXR5VHlwZS50eXBlTmFtZSkpIHtcclxuICAgICAgICBpZiAoIXByb3BlcnR5TW9kaWZpZWQpIHtcclxuICAgICAgICAgIGVudGl0eVtrZXldID0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpO1xyXG4gICAgICAgICAgZGVsZXRlIG9yaWdpbmFsVmFsdWVzW2tleV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKTtcclxuICAgICAgICAgIGxldCBtb2RpZmllZEJ5ID0gY2hhbmdlLm1vZGlmaWVkQnk7XHJcbiAgICAgICAgICBsZXQgaGlkID0gY2hhbmdlLnByb3BlcnRpZXNba2V5ICsgJ0hJRCddO1xyXG4gICAgICAgICAgbGV0IG1lcmdlRGF0YSA9IG5ldyBUcnVNZXJnZURhdGEodmFsdWUsIG1vZGlmaWVkQnksIGhpZCk7XHJcbiAgICAgICAgICBlbnRpdHkuTWVyZ2VfRGF0YV9TZXQuc2V0KGtleSwgbWVyZ2VEYXRhKTtcclxuICAgICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3QudmFsaWRhdGVQcm9wZXJ0eShrZXkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiAob3JpZ2luYWxWYWx1ZXNba2V5XSkgIT09ICd1bmRlZmluZWQnKVxyXG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZXNba2V5XSA9IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1trZXldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBlbnRpdHlbJ3Jvd3ZlciddID0gY2hhbmdlLnJvd3ZlcjtcclxuICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1sncm93dmVyJ107XHJcblxyXG4gICAgaWYgKHN0YXRlQmVmb3JlUHJvcGVydHlDaGFuZ2UubmFtZSAhPT0gXCJNb2RpZmllZFwiIHx8IChPYmplY3Qua2V5cyhvcmlnaW5hbFZhbHVlcykubGVuZ3RoID09PSAwICYmIG9yaWdpbmFsVmFsdWVzLmNvbnN0cnVjdG9yID09PSBPYmplY3QpKSB7XHJcbiAgICAgIGlmICghZW50aXR5LmVudGl0eUFzcGVjdC5pc0JlaW5nU2F2ZWQpIHtcclxuICAgICAgICBlbnRpdHkuZW50aXR5QXNwZWN0LnNldFVuY2hhbmdlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMud2FpdGluZ0VudGl0aWVzLnB1c2goZW50aXR5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZSBlbnRpdHlbJ0RhdGFfTm90aWZpY2F0aW9uJ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFdhaXRpbmdFbnRpdGllc1RvVW5jaGFuZ2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy53YWl0aW5nRW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVudGl0eSAmJiBlbnRpdHkuZW50aXR5QXNwZWN0KVxyXG4gICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3Quc2V0VW5jaGFuZ2VkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW50aXR5Rm91bmRCeVF1ZXJ5ID0gKGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpO1xyXG4gICAgdmFyIGVudGl0aWVzID0gZW50aXR5QWNjZXNzb3Iuc2VhcmNoQnlSZWZBcnJheUNhY2hlT25seSh0aGlzLmVudGl0eSwgdGhpcy5nZXRMYXRlc3RRdWVyeSgpLCBbY2hhbmdlLnRhYmxlUmVmXSk7XHJcblxyXG4gICAgaWYgKCFlbnRpdGllcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQhLmVudGl0eUFjY2VzcygpO1xyXG4gICAgICBlbnRpdGllcyA9IGVudGl0eUFjY2Vzc29yLnNlYXJjaEJ5UmVmQXJyYXlDYWNoZU9ubHkodGhpcy5lbnRpdHksIHRoaXMuZ2V0TGF0ZXN0UXVlcnkoKSwgW2NoYW5nZS50YWJsZVJlZl0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlbnRpdGllcyA9PT0gbnVsbCA/IDAgOiBlbnRpdGllcy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVudGl0eUZyb21TZXJ2ZXIgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCk7XHJcbiAgICB2YXIgZW50aXRpeSA9IGVudGl0eUFjY2Vzc29yLnNlYXJjaEJ5UmVmV2l0aFF1ZXJ5KHRoaXMuZW50aXR5LCB0aGlzLmdldExhdGVzdFF1ZXJ5KCksIGNoYW5nZS50YWJsZVJlZik7XHJcbiAgICByZXR1cm4gZW50aXRpeTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW50aXR5RnJvbVJlc3VsdHMgPSAocmVzdWx0czogYW55LCBjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIHJlc3VsdHMuZmlsdGVyKChlOiBhbnkpID0+IHsgcmV0dXJuIGUuUmVmID09PSBjaGFuZ2UudGFibGVSZWYgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU2F2aW5nID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdmFyIGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5hcHBFbnZpb25tZW50LmlzU2F2aW5nKSB7XHJcbiAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMDApXHJcbiAgICB9KVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlID0gYXN5bmMgKHBheWxvYWQ6IGFueSkgPT4ge1xyXG4gICAgYXdhaXQgdGhpcy5pc1NhdmluZygpO1xyXG5cclxuICAgIHZhciByZWxvYWRSZXN1bHRzID0gZmFsc2U7XHJcbiAgICBwYXlsb2FkLmNoYW5nZXMuZm9yRWFjaChhc3luYyAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgICAgdmFyIGZvdW5kRW50aXRpZXMgPSBbXTtcclxuICAgICAgdmFyIGxvY2FsRW50aXR5ID0gdGhpcy5maW5kRW50aXR5SW5DYWNoZShjaGFuZ2UpO1xyXG4gICAgICB2YXIgZ2xvYmFsRW50aXR5ID0gdGhpcy5maW5kRW50aXR5SW5HbG9iYWxDYWNoZShjaGFuZ2UpO1xyXG4gICAgICBpZiAobG9jYWxFbnRpdHkpXHJcbiAgICAgICAgZm91bmRFbnRpdGllcy5wdXNoKGxvY2FsRW50aXR5KTtcclxuICAgICAgaWYgKGdsb2JhbEVudGl0eSlcclxuICAgICAgICBmb3VuZEVudGl0aWVzLnB1c2goZ2xvYmFsRW50aXR5KTtcclxuXHJcbiAgICAgIGlmIChmb3VuZEVudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgIGZvdW5kRW50aXRpZXMuZm9yRWFjaChhc3luYyAoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2UudGFibGVOYW1lID09PSB0aGlzLnRhYmxlTmFtZSkge1xyXG5cclxuICAgICAgICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdVJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG5cclxuICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmVudGl0eUZvdW5kQnlRdWVyeShjaGFuZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW50aXR5QWxyZWFkeUluUmVzdWx0cyA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIGlmICghZW50aXR5QWxyZWFkeUluUmVzdWx0cy5sZW5ndGggJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRW50aXR5KGVudGl0eSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudGl0eVRvUmVtb3ZlID0gdGhpcy5nZXRFbnRpdHlGcm9tUmVzdWx0cyhyZXN1bHRzLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eVRvUmVtb3ZlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICByZXN1bHRzLnNwbGljZShyZXN1bHRzLmluZGV4T2YoZW50aXR5VG9SZW1vdmVbMF0pLCAxKTtcclxuICAgICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdEJykge1xyXG4gICAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgICAgdmFyIGVudGl0eVRvRGVsZXRlID0gdGhpcy5nZXRFbnRpdHlGcm9tUmVzdWx0cyhyZXN1bHRzLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgICAgIGlmIChlbnRpdHlUb0RlbGV0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGVudGl0eVRvRGVsZXRlWzBdLmVudGl0eUFzcGVjdC5zZXREZXRhY2hlZCgpO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UocmVzdWx0cy5pbmRleE9mKGVudGl0eVRvRGVsZXRlWzBdKSwgMSk7XHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ0knKSB7XHJcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLmdldExhdGVzdFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgICB2YXIgZW50aXR5QWxyZWFkeUluUmVzdWx0cyA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5lbnRpdHlGb3VuZEJ5UXVlcnkoY2hhbmdlKSAmJiAhZW50aXR5QWxyZWFkeUluUmVzdWx0cy5sZW5ndGggJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWxvY2FsRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhciBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmVudGl0eSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgcGtleU5hbWUgPSBjaGFuZ2UudGFibGVOYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgICAgICAgICAgICAgICBuZXdFbnRpdHlbcGtleU5hbWVdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTG9hZGVkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEVudGl0eShuZXdFbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVudGl0eSA9PT0gbG9jYWxFbnRpdHkpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIGVudGl0eSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRW50aXR5KGVudGl0eSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgZW50aXR5QWxyZWFkeUluUmVzdWx0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBlbnRpdHlUb0RlbGV0ZSA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlUb0RlbGV0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UocmVzdWx0cy5pbmRleE9mKGVudGl0eUFscmVhZHlJblJlc3VsdHNbMF0pLCAxKTtcclxuICAgICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICghZ2xvYmFsRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV3RW50aXR5ID0gdGhpcy5nbG9iYWxEYXRhQ29udGV4dCEuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMuZW50aXR5LCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICAgICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBrZXlOYW1lID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgICAgICAgICAgIG5ld0VudGl0eVtwa2V5TmFtZV0gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gIT09ICdEJykge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgZW50aXR5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnVScgJiYgY2hhbmdlLnRhYmxlTmFtZSA9PT0gdGhpcy50YWJsZU5hbWUpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldEVudGl0eUZyb21TZXJ2ZXIoY2hhbmdlKS5zdWJzY3JpYmUoKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW50aXR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRFbnRpdHkobmV3RW50aXR5KTtcclxuICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnSScgJiYgY2hhbmdlLnRhYmxlTmFtZSA9PT0gdGhpcy50YWJsZU5hbWUpIHtcclxuICAgICAgICAgIHZhciBuZXdFbnRpdHkgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0IS5lbnRpdHlBY2Nlc3MoKS5hZGQodGhpcy5lbnRpdHksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICAgICAgY29uc3QgcGtleU5hbWUxID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgICAgIG5ld0VudGl0eVtwa2V5TmFtZTFdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGhpcy5lbnRpdHksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgdHlwZSBPYmplY3RLZXkyID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgIGNvbnN0IHBrZXlOYW1lMiA9IGNoYW5nZS50YWJsZU5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXkyO1xyXG4gICAgICAgICAgbmV3RW50aXR5W3BrZXlOYW1lMl0gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5lbnRpdHlGb3VuZEJ5UXVlcnkoY2hhbmdlKSAmJiB0aGlzLmlzTG9hZGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRFbnRpdHkobmV3RW50aXR5KTtcclxuICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnSScpIHtcclxuICAgICAgICAgIGxldCBlbnRpdHlUeXBlID0gdGhpcy50eXBlcy5nZXRUeXBlKGNoYW5nZS50YWJsZU5hbWUpO1xyXG4gICAgICAgICAgdmFyIG5ld0VudGl0eSA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQhLmVudGl0eUFjY2VzcygpLmFkZChlbnRpdHlUeXBlIGFzIGFueSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgICBjb25zdCBwa2V5TmFtZTEgPSBjaGFuZ2UudGFibGVOYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgICAgICAgbmV3RW50aXR5W3BrZXlOYW1lMV0gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZChlbnRpdHlUeXBlIGFzIGFueSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICB0eXBlIE9iamVjdEtleTIgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICAgICAgY29uc3QgcGtleU5hbWUyID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTI7XHJcbiAgICAgICAgICBuZXdFbnRpdHlbcGtleU5hbWUyXSA9IGNoYW5nZS50YWJsZVJlZjtcclxuICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBuZXdFbnRpdHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZXhwYW5kUGF0aHMgJiYgdGhpcy5leHBhbmRQYXRocy5sZW5ndGggJiYgdGhpcy5leHBhbmRQYXRocy5pbmNsdWRlcygnbycgKyBjaGFuZ2UudGFibGVOYW1lKSlcclxuICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBkYXRhQ2hhbmdlQXJncyA9IG5ldyBUcnVEYXRhQ2hhbmdlKCk7XHJcbiAgICBkYXRhQ2hhbmdlQXJncy5kYXRhQ2hhbmdlcyA9IHBheWxvYWQuY2hhbmdlcztcclxuICAgIGRhdGFDaGFuZ2VBcmdzLnJlbG9hZCA9IHJlbG9hZFJlc3VsdHM7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkKGRhdGFDaGFuZ2VBcmdzKTtcclxuICB9XHJcbn1cclxuIl19
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY2hhbmdlLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY2xhc3Nlcy90cnUtZGF0YS1jaGFuZ2UtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBS2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsTUFBTSxPQUFPLG1CQUFtQjtJQUN0QixhQUFhLENBQW9CO0lBQ2pDLFdBQVcsQ0FBaUI7SUFDNUIsTUFBTSxDQUFNO0lBQ1osU0FBUyxDQUFTO0lBQ2xCLFNBQVMsQ0FBMkI7SUFDcEMsZ0JBQWdCLENBQVk7SUFDNUIsY0FBYyxDQUFNO0lBQ3BCLGNBQWMsQ0FBSztJQUNuQixXQUFXLENBQWdCO0lBQzNCLFFBQVEsQ0FBZ0I7SUFDeEIsS0FBSyxDQUFxQjtJQUMxQixhQUFhLENBQXFDO0lBRWxELGlCQUFpQixDQUF3QjtJQUN6QyxlQUFlLEdBQXlCLEVBQUUsQ0FBQztJQUUzQyxZQUFZLEdBQTJCLElBQUksT0FBTyxFQUFpQixDQUFDO0lBRTVFLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFxQjtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFDRSxVQUFlLEVBQ2YsYUFBZ0MsRUFDaEMsV0FBMkIsRUFDM0IsaUJBQXdDLEVBQ3hDLE1BQTRCLEVBQzVCLFNBQWlC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Q0FBQztRQUVILElBQUksY0FBYyxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDekMsY0FBYyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzdDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tIFwiLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVQcm9wZXJ0eUNvbmZpZ0Jhc2UgfSBmcm9tIFwiLi4vYmFzZS1jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gXCIuLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50XCI7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHRcIjtcclxuaW1wb3J0IHsgVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCB9IGZyb20gXCIuLi9zZXJ2aWNlcy90cnUtbW9kZWwtcHJvcGVydHktbG9va3VwXCI7XHJcbmltcG9ydCB7IFRydU1vZGVsVHlwZUxvb2t1cCB9IGZyb20gXCIuLi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXBcIjtcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gXCIuL3RydS1kYXRhLWNoYW5nZVwiO1xyXG5pbXBvcnQgeyBUcnVNZXJnZURhdGEgfSBmcm9tIFwiLi90cnUtbWVyZ2UtZGF0YVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBUcnVEYXRhQ2hhbmdlUGFyc2VyIHtcclxuICBwcml2YXRlIGFwcEVudmlvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50O1xyXG4gIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0O1xyXG4gIHByaXZhdGUgZW50aXR5OiBhbnk7XHJcbiAgcHJpdmF0ZSB0YWJsZU5hbWU6IHN0cmluZztcclxuICBwcml2YXRlIGFkZEVudGl0eTogKG5ld0VudGl0eTogYW55KSA9PiB2b2lkO1xyXG4gIHByaXZhdGUgZ2V0TGF0ZXN0UmVzdWx0czogKCkgPT4gYW55O1xyXG4gIHByaXZhdGUgZ2V0TGF0ZXN0UXVlcnk6IGFueTtcclxuICBwcml2YXRlIGNvbnRleHRGaWx0ZXJzOiBbXTtcclxuICBwcml2YXRlIGV4cGFuZFBhdGhzOiBBcnJheTxzdHJpbmc+O1xyXG4gIHByaXZhdGUgaXNMb2FkZWQ6ICgpID0+IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSB0eXBlczogVHJ1TW9kZWxUeXBlTG9va3VwO1xyXG4gIHByaXZhdGUgcHJvcGVydHlUeXBlczogTWFwPHN0cmluZywgVHJ1UHJvcGVydHlDb25maWdCYXNlPjtcclxuXHJcbiAgcHJpdmF0ZSBnbG9iYWxEYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQgfCBudWxsO1xyXG4gIHByaXZhdGUgd2FpdGluZ0VudGl0aWVzOiBBcnJheTxUcnVFbnRpdHlCYXNlPiA9IFtdO1xyXG5cclxuICBwcml2YXRlIGRhdGFDaGFuZ2VkJDogU3ViamVjdDxUcnVEYXRhQ2hhbmdlPiA9IG5ldyBTdWJqZWN0PFRydURhdGFDaGFuZ2U+KCk7XHJcblxyXG4gIG9uRGF0YUNoYW5nZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhQ2hhbmdlZCQ7XHJcbiAgfVxyXG5cclxuICBkYXRhQ2hhbmdlZChjaGFuZ2U6IFRydURhdGFDaGFuZ2UpIHtcclxuICAgIHRoaXMuZGF0YUNoYW5nZWQkLm5leHQoY2hhbmdlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgY29ubmVjdGlvbjogYW55LFxyXG4gICAgYXBwRW52aXJvbWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBnbG9iYWxEYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQgfCBudWxsLFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgYWRkRW50aXR5OiBhbnksXHJcbiAgICBnZXRMYXRlc3RSZXN1bHRzOiBhbnksXHJcbiAgICBnZXRMYXRlc3RRdWVyeTogYW55LFxyXG4gICAgY29udGV4dEZpbHRlcnM6IFtdLFxyXG4gICAgZXhwYW5kUGF0aHM6IEFycmF5PHN0cmluZz4sXHJcbiAgICBpc0xvYWRlZDogKCkgPT4gYm9vbGVhbixcclxuICAgIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgbW9kZWxQcm9wZXJ0eUxvb2t1cDogVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cFxyXG4gICkge1xyXG4gICAgdGhpcy5hcHBFbnZpb25tZW50ID0gYXBwRW52aXJvbWVudDtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQgPSBkYXRhQ29udGV4dDtcclxuICAgIHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQgPSBnbG9iYWxEYXRhQ29udGV4dDtcclxuICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XHJcbiAgICB0aGlzLmFkZEVudGl0eSA9IGFkZEVudGl0eTtcclxuICAgIHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cyA9IGdldExhdGVzdFJlc3VsdHM7XHJcbiAgICB0aGlzLmdldExhdGVzdFF1ZXJ5ID0gZ2V0TGF0ZXN0UXVlcnk7XHJcbiAgICB0aGlzLmNvbnRleHRGaWx0ZXJzID0gY29udGV4dEZpbHRlcnM7XHJcbiAgICB0aGlzLmV4cGFuZFBhdGhzID0gZXhwYW5kUGF0aHM7XHJcbiAgICB0aGlzLmlzTG9hZGVkID0gaXNMb2FkZWQ7XHJcbiAgICB0aGlzLnR5cGVzID0gbW9kZWxUeXBlTG9va3VwOyBcclxuICAgIHRoaXMucHJvcGVydHlUeXBlcyA9IG1vZGVsUHJvcGVydHlMb29rdXAubG9va3VwO1xyXG5cclxuICAgIGNvbm5lY3Rpb24ub24oXCJjaGFuZ2VcIiwgKHBheWxvYWQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZShwYXlsb2FkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kRW50aXR5SW5DYWNoZSA9IChjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgdmFyIGVudGl0eUFjY2Vzc29yID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKTtcclxuICAgIHJldHVybiBlbnRpdHlBY2Nlc3Nvci5zZWFyY2hCeVJlZkNhY2hlT25seSh0aGlzLnR5cGVzLmdldFR5cGUoY2hhbmdlLnRhYmxlTmFtZSksIHBhcnNlSW50KGNoYW5nZS50YWJsZVJlZiwgMTApLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEVudGl0eUluR2xvYmFsQ2FjaGUgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQhLmVudGl0eUFjY2VzcygpO1xyXG4gICAgcmV0dXJuIGVudGl0eUFjY2Vzc29yLnNlYXJjaEJ5UmVmQ2FjaGVPbmx5KHRoaXMudHlwZXMuZ2V0VHlwZShjaGFuZ2UudGFibGVOYW1lKSwgcGFyc2VJbnQoY2hhbmdlLnRhYmxlUmVmLCAxMCksIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0lmRGF0ZVRpbWUgPSAobmV3VmFsdWU6IGFueSwgY3VycmVudFZhbHVlOiBhbnksIHR5cGVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICAgIGlmICh0eXBlTmFtZSA9PT0gJ2RhdGUtdGltZScgfHwgdHlwZU5hbWUgPT09ICdkYXRlJykge1xyXG4gICAgICBpZiAobW9tZW50KG5ld1ZhbHVlLCBcIllZWVktTU0tREQgSEg6bW06c3Muc3Nzc3Nzc1wiLCB0cnVlKS5pc1ZhbGlkKCkpXHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChtb21lbnQudXRjKG5ld1ZhbHVlKS50b0RhdGUoKSkuZm9ybWF0KCdNTS9ERC9ZWVlZIGhoOm1tIEEnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdWYWx1ZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQcm9wZXJ0eUFscmVhZHlCZWVuTW9kaWZpZWQgPSAocHJvcGVydHlOYW1lOiBzdHJpbmcsIGVudGl0eTogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gZW50aXR5LmVudGl0eUFzcGVjdC5vcmlnaW5hbFZhbHVlcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVByb3BlcnR5Q2hhbmdlcyA9IChjaGFuZ2U6IGFueSwgZW50aXR5OiBhbnkpID0+IHtcclxuICAgIGxldCBzdGF0ZUJlZm9yZVByb3BlcnR5Q2hhbmdlID0gZW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlcyA9IGVudGl0eS5lbnRpdHlBc3BlY3Qub3JpZ2luYWxWYWx1ZXM7XHJcblxyXG4gICAgZW50aXR5WydEYXRhX05vdGlmaWNhdGlvbiddID0gdHJ1ZTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhjaGFuZ2UucHJvcGVydGllcykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBjaGFuZ2UudGFibGVOYW1lICsgJy4nICsga2V5XHJcbiAgICAgIGxldCBlbnRpdHlUeXBlID0gdGhpcy5wcm9wZXJ0eVR5cGVzLmdldChwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICBpZiAoIWVudGl0eVR5cGUpIHtcclxuICAgICAgICBlbnRpdHlUeXBlID0gbmV3IFRydVByb3BlcnR5Q29uZmlnQmFzZSgpO1xyXG4gICAgICAgIGVudGl0eVR5cGUudHlwZU5hbWUgPSAndGV4dC1ib3VuZGVkJztcclxuICAgICAgfVxyXG4gICAgICBsZXQgcHJvcGVydHlNb2RpZmllZCA9IHRoaXMuaGFzUHJvcGVydHlBbHJlYWR5QmVlbk1vZGlmaWVkKGtleSwgZW50aXR5KVxyXG4gICAgICBpZiAoa2V5ID09PSAnVXBkYXRlZCcgfHwga2V5ID09PSAnVXBkYXRlZFJlZicpIHtcclxuICAgICAgICBlbnRpdHlba2V5XSA9IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKTtcclxuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1trZXldO1xyXG4gICAgICB9IGVsc2UgaWYgKGVudGl0eVtrZXldICE9PSB0aGlzLmNoZWNrSWZEYXRlVGltZShjaGFuZ2UucHJvcGVydGllc1trZXldLCBlbnRpdHlba2V5XSwgZW50aXR5VHlwZS50eXBlTmFtZSkpIHtcclxuICAgICAgICBpZiAoIXByb3BlcnR5TW9kaWZpZWQpIHtcclxuICAgICAgICAgIGVudGl0eVtrZXldID0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpO1xyXG4gICAgICAgICAgZGVsZXRlIG9yaWdpbmFsVmFsdWVzW2tleV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKTtcclxuICAgICAgICAgIGxldCBtb2RpZmllZEJ5ID0gY2hhbmdlLm1vZGlmaWVkQnk7XHJcbiAgICAgICAgICBsZXQgaGlkID0gY2hhbmdlLnByb3BlcnRpZXNba2V5ICsgJ0hJRCddO1xyXG4gICAgICAgICAgbGV0IG1lcmdlRGF0YSA9IG5ldyBUcnVNZXJnZURhdGEodmFsdWUsIG1vZGlmaWVkQnksIGhpZCk7XHJcbiAgICAgICAgICBlbnRpdHkuTWVyZ2VfRGF0YV9TZXQuc2V0KGtleSwgbWVyZ2VEYXRhKTtcclxuICAgICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3QudmFsaWRhdGVQcm9wZXJ0eShrZXkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiAob3JpZ2luYWxWYWx1ZXNba2V5XSkgIT09ICd1bmRlZmluZWQnKVxyXG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZXNba2V5XSA9IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1trZXldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBlbnRpdHlbJ3Jvd3ZlciddID0gY2hhbmdlLnJvd3ZlcjtcclxuICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1sncm93dmVyJ107XHJcblxyXG4gICAgaWYgKHN0YXRlQmVmb3JlUHJvcGVydHlDaGFuZ2UubmFtZSAhPT0gXCJNb2RpZmllZFwiIHx8IChPYmplY3Qua2V5cyhvcmlnaW5hbFZhbHVlcykubGVuZ3RoID09PSAwICYmIG9yaWdpbmFsVmFsdWVzLmNvbnN0cnVjdG9yID09PSBPYmplY3QpKSB7XHJcbiAgICAgIGlmICghZW50aXR5LmVudGl0eUFzcGVjdC5pc0JlaW5nU2F2ZWQpIHtcclxuICAgICAgICBlbnRpdHkuZW50aXR5QXNwZWN0LnNldFVuY2hhbmdlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMud2FpdGluZ0VudGl0aWVzLnB1c2goZW50aXR5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZSBlbnRpdHlbJ0RhdGFfTm90aWZpY2F0aW9uJ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFdhaXRpbmdFbnRpdGllc1RvVW5jaGFuZ2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy53YWl0aW5nRW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVudGl0eSAmJiBlbnRpdHkuZW50aXR5QXNwZWN0KVxyXG4gICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3Quc2V0VW5jaGFuZ2VkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW50aXR5Rm91bmRCeVF1ZXJ5ID0gKGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpO1xyXG4gICAgdmFyIGVudGl0aWVzID0gZW50aXR5QWNjZXNzb3Iuc2VhcmNoQnlSZWZBcnJheUNhY2hlT25seSh0aGlzLmVudGl0eSwgdGhpcy5nZXRMYXRlc3RRdWVyeSgpLCBbY2hhbmdlLnRhYmxlUmVmXSk7XHJcblxyXG4gICAgaWYgKCFlbnRpdGllcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQhLmVudGl0eUFjY2VzcygpO1xyXG4gICAgICBlbnRpdGllcyA9IGVudGl0eUFjY2Vzc29yLnNlYXJjaEJ5UmVmQXJyYXlDYWNoZU9ubHkodGhpcy5lbnRpdHksIHRoaXMuZ2V0TGF0ZXN0UXVlcnkoKSwgW2NoYW5nZS50YWJsZVJlZl0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlbnRpdGllcyA9PT0gbnVsbCA/IDAgOiBlbnRpdGllcy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVudGl0eUZyb21TZXJ2ZXIgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCk7XHJcbiAgICB2YXIgZW50aXRpeSA9IGVudGl0eUFjY2Vzc29yLnNlYXJjaEJ5UmVmV2l0aFF1ZXJ5KHRoaXMuZW50aXR5LCB0aGlzLmdldExhdGVzdFF1ZXJ5KCksIGNoYW5nZS50YWJsZVJlZik7XHJcbiAgICByZXR1cm4gZW50aXRpeTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW50aXR5RnJvbVJlc3VsdHMgPSAocmVzdWx0czogYW55LCBjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIHJlc3VsdHMuZmlsdGVyKChlOiBhbnkpID0+IHsgcmV0dXJuIGUuUmVmID09PSBjaGFuZ2UudGFibGVSZWYgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU2F2aW5nID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdmFyIGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5hcHBFbnZpb25tZW50LmlzU2F2aW5nKSB7XHJcbiAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMDApXHJcbiAgICB9KVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlID0gYXN5bmMgKHBheWxvYWQ6IGFueSkgPT4ge1xyXG4gICAgYXdhaXQgdGhpcy5pc1NhdmluZygpO1xyXG5cclxuICAgIHZhciByZWxvYWRSZXN1bHRzID0gZmFsc2U7XHJcbiAgICBwYXlsb2FkLmNoYW5nZXMuZm9yRWFjaChhc3luYyAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgICAgdmFyIGZvdW5kRW50aXRpZXMgPSBbXTtcclxuICAgICAgdmFyIGxvY2FsRW50aXR5ID0gdGhpcy5maW5kRW50aXR5SW5DYWNoZShjaGFuZ2UpO1xyXG4gICAgICB2YXIgZ2xvYmFsRW50aXR5ID0gdGhpcy5maW5kRW50aXR5SW5HbG9iYWxDYWNoZShjaGFuZ2UpO1xyXG4gICAgICBpZiAobG9jYWxFbnRpdHkpXHJcbiAgICAgICAgZm91bmRFbnRpdGllcy5wdXNoKGxvY2FsRW50aXR5KTtcclxuICAgICAgaWYgKGdsb2JhbEVudGl0eSlcclxuICAgICAgICBmb3VuZEVudGl0aWVzLnB1c2goZ2xvYmFsRW50aXR5KTtcclxuXHJcbiAgICAgIGlmIChmb3VuZEVudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgIGZvdW5kRW50aXRpZXMuZm9yRWFjaChhc3luYyAoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2UudGFibGVOYW1lID09PSB0aGlzLnRhYmxlTmFtZSkge1xyXG5cclxuICAgICAgICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdVJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG5cclxuICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmVudGl0eUZvdW5kQnlRdWVyeShjaGFuZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW50aXR5QWxyZWFkeUluUmVzdWx0cyA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIGlmICghZW50aXR5QWxyZWFkeUluUmVzdWx0cy5sZW5ndGggJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRW50aXR5KGVudGl0eSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudGl0eVRvUmVtb3ZlID0gdGhpcy5nZXRFbnRpdHlGcm9tUmVzdWx0cyhyZXN1bHRzLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eVRvUmVtb3ZlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICByZXN1bHRzLnNwbGljZShyZXN1bHRzLmluZGV4T2YoZW50aXR5VG9SZW1vdmVbMF0pLCAxKTtcclxuICAgICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdEJykge1xyXG4gICAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgICAgdmFyIGVudGl0eVRvRGVsZXRlID0gdGhpcy5nZXRFbnRpdHlGcm9tUmVzdWx0cyhyZXN1bHRzLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgICAgIGlmIChlbnRpdHlUb0RlbGV0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGVudGl0eVRvRGVsZXRlWzBdLmVudGl0eUFzcGVjdC5zZXREZXRhY2hlZCgpO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UocmVzdWx0cy5pbmRleE9mKGVudGl0eVRvRGVsZXRlWzBdKSwgMSk7XHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ0knKSB7XHJcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLmdldExhdGVzdFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgICB2YXIgZW50aXR5QWxyZWFkeUluUmVzdWx0cyA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5lbnRpdHlGb3VuZEJ5UXVlcnkoY2hhbmdlKSAmJiAhZW50aXR5QWxyZWFkeUluUmVzdWx0cy5sZW5ndGggJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWxvY2FsRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhciBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmVudGl0eSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgcGtleU5hbWUgPSBjaGFuZ2UudGFibGVOYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgICAgICAgICAgICAgICBuZXdFbnRpdHlbcGtleU5hbWVdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTG9hZGVkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEVudGl0eShuZXdFbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVudGl0eSA9PT0gbG9jYWxFbnRpdHkpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIGVudGl0eSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRW50aXR5KGVudGl0eSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgZW50aXR5QWxyZWFkeUluUmVzdWx0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBlbnRpdHlUb0RlbGV0ZSA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlUb0RlbGV0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UocmVzdWx0cy5pbmRleE9mKGVudGl0eUFscmVhZHlJblJlc3VsdHNbMF0pLCAxKTtcclxuICAgICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICghZ2xvYmFsRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV3RW50aXR5ID0gdGhpcy5nbG9iYWxEYXRhQ29udGV4dCEuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMuZW50aXR5LCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICAgICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBrZXlOYW1lID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgICAgICAgICAgIG5ld0VudGl0eVtwa2V5TmFtZV0gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gIT09ICdEJykge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgZW50aXR5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnVScgJiYgY2hhbmdlLnRhYmxlTmFtZSA9PT0gdGhpcy50YWJsZU5hbWUpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldEVudGl0eUZyb21TZXJ2ZXIoY2hhbmdlKS5zdWJzY3JpYmUoKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW50aXR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRFbnRpdHkobmV3RW50aXR5KTtcclxuICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnSScgJiYgY2hhbmdlLnRhYmxlTmFtZSA9PT0gdGhpcy50YWJsZU5hbWUpIHtcclxuICAgICAgICAgIHZhciBuZXdFbnRpdHkgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0IS5lbnRpdHlBY2Nlc3MoKS5hZGQodGhpcy5lbnRpdHksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICAgICAgY29uc3QgcGtleU5hbWUxID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTtcclxuICAgICAgICAgIG5ld0VudGl0eVtwa2V5TmFtZTFdID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGhpcy5lbnRpdHksIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgdHlwZSBPYmplY3RLZXkyID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICAgIGNvbnN0IHBrZXlOYW1lMiA9IGNoYW5nZS50YWJsZU5hbWUgKyAnUmVmJyBhcyBPYmplY3RLZXkyO1xyXG4gICAgICAgICAgbmV3RW50aXR5W3BrZXlOYW1lMl0gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5lbnRpdHlGb3VuZEJ5UXVlcnkoY2hhbmdlKSAmJiB0aGlzLmlzTG9hZGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRFbnRpdHkobmV3RW50aXR5KTtcclxuICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnSScpIHtcclxuICAgICAgICAgIGxldCBlbnRpdHlUeXBlID0gdGhpcy50eXBlcy5nZXRUeXBlKGNoYW5nZS50YWJsZU5hbWUpO1xyXG4gICAgICAgICAgdmFyIG5ld0VudGl0eSA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQhLmVudGl0eUFjY2VzcygpLmFkZChlbnRpdHlUeXBlIGFzIGFueSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgICBjb25zdCBwa2V5TmFtZTEgPSBjaGFuZ2UudGFibGVOYW1lICsgJ1JlZicgYXMgT2JqZWN0S2V5O1xyXG4gICAgICAgICAgbmV3RW50aXR5W3BrZXlOYW1lMV0gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZChlbnRpdHlUeXBlIGFzIGFueSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICB0eXBlIE9iamVjdEtleTIgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICAgICAgY29uc3QgcGtleU5hbWUyID0gY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnIGFzIE9iamVjdEtleTI7XHJcbiAgICAgICAgICBuZXdFbnRpdHlbcGtleU5hbWUyXSA9IGNoYW5nZS50YWJsZVJlZjtcclxuICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBuZXdFbnRpdHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZXhwYW5kUGF0aHMgJiYgdGhpcy5leHBhbmRQYXRocy5sZW5ndGggJiYgdGhpcy5leHBhbmRQYXRocy5pbmNsdWRlcygnbycgKyBjaGFuZ2UudGFibGVOYW1lKSlcclxuICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBkYXRhQ2hhbmdlQXJncyA9IG5ldyBUcnVEYXRhQ2hhbmdlKCk7XHJcbiAgICBkYXRhQ2hhbmdlQXJncy5kYXRhQ2hhbmdlcyA9IHBheWxvYWQuY2hhbmdlcztcclxuICAgIGRhdGFDaGFuZ2VBcmdzLnJlbG9hZCA9IHJlbG9hZFJlc3VsdHM7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkKGRhdGFDaGFuZ2VBcmdzKTtcclxuICB9XHJcbn1cclxuIl19
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
18
18
  providedIn: 'root',
19
19
  }]
20
20
  }], ctorParameters: () => [] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LW1vZGVsLXR5cGUtbG9va3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixPQUFPLEdBQXNDLElBQUksR0FBRyxFQUFnQyxDQUFDO0lBRTdGLGdCQUFnQixDQUFDO0lBRWpCLE9BQU8sQ0FBQyxRQUFnQjtRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBeUIsQ0FBQztJQUM1RCxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWdCLEVBQUUsSUFBMEI7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7dUdBWFUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSBcIi4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVNb2RlbFR5cGVMb29rdXAge1xyXG4gIHByaXZhdGUgX2xvb2t1cDogTWFwPHN0cmluZywgdHlwZW9mIFRydUVudGl0eUJhc2U+ID0gbmV3IE1hcDxzdHJpbmcsIHR5cGVvZiBUcnVFbnRpdHlCYXNlPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBnZXRUeXBlKHR5cGVOYW1lOiBzdHJpbmcpOiB0eXBlb2YgVHJ1RW50aXR5QmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9va3VwLmdldCh0eXBlTmFtZSkgYXMgdHlwZW9mIFRydUVudGl0eUJhc2U7XHJcbiAgfVxyXG5cclxuICBzZXRUeXBlKHR5cGVOYW1lOiBzdHJpbmcsIHR5cGU6IHR5cGVvZiBUcnVFbnRpdHlCYXNlKSB7XHJcbiAgICB0aGlzLl9sb29rdXAuc2V0KHR5cGVOYW1lLCB0eXBlKTtcclxuICB9XHJcbn1cclxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LW1vZGVsLXR5cGUtbG9va3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixPQUFPLEdBQXNDLElBQUksR0FBRyxFQUFnQyxDQUFDO0lBRTdGLGdCQUFnQixDQUFDO0lBRWpCLE9BQU8sQ0FBQyxRQUFnQjtRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBeUIsQ0FBQztJQUM1RCxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWdCLEVBQUUsSUFBMEI7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7dUdBWFUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSBcIi4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVNb2RlbFR5cGVMb29rdXAge1xyXG4gIHByaXZhdGUgX2xvb2t1cDogTWFwPHN0cmluZywgdHlwZW9mIFRydUVudGl0eUJhc2U+ID0gbmV3IE1hcDxzdHJpbmcsIHR5cGVvZiBUcnVFbnRpdHlCYXNlPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBnZXRUeXBlKHR5cGVOYW1lOiBzdHJpbmcpOiB0eXBlb2YgVHJ1RW50aXR5QmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9va3VwLmdldCh0eXBlTmFtZSkgYXMgdHlwZW9mIFRydUVudGl0eUJhc2U7XHJcbiAgfVxyXG5cclxuICBzZXRUeXBlKHR5cGVOYW1lOiBzdHJpbmcsIHR5cGU6IHR5cGVvZiBUcnVFbnRpdHlCYXNlKSB7XHJcbiAgICB0aGlzLl9sb29rdXAuc2V0KHR5cGVOYW1lLCB0eXBlKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -2873,16 +2873,17 @@ class TruDataChangeParser {
2873
2873
  return entity.entityAspect.originalValues.hasOwnProperty(propertyName);
2874
2874
  };
2875
2875
  applyPropertyChanges = (change, entity) => {
2876
- var stateBeforePropertyChange = entity.entityAspect.entityState;
2877
- var originalValues = entity.entityAspect.originalValues;
2876
+ let stateBeforePropertyChange = entity.entityAspect.entityState;
2877
+ let originalValues = entity.entityAspect.originalValues;
2878
2878
  entity['Data_Notification'] = true;
2879
2879
  Object.keys(change.properties).forEach((key) => {
2880
- var entityType = this.propertyTypes.get(change.tableName + '.' + key);
2880
+ let propertyName = change.tableName + '.' + key;
2881
+ let entityType = this.propertyTypes.get(propertyName);
2881
2882
  if (!entityType) {
2882
2883
  entityType = new TruPropertyConfigBase();
2883
2884
  entityType.typeName = 'text-bounded';
2884
2885
  }
2885
- var propertyModified = this.hasPropertyAlreadyBeenModified(key, entity);
2886
+ let propertyModified = this.hasPropertyAlreadyBeenModified(key, entity);
2886
2887
  if (key === 'Updated' || key === 'UpdatedRef') {
2887
2888
  entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);
2888
2889
  if (originalValues.hasOwnProperty(key))