@trudb/tru-common-lib 0.1.619 → 0.1.621

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.
@@ -30,7 +30,7 @@ export class TruCloneView extends TruViewBase {
30
30
  numberOfCopies;
31
31
  selectedNumberOfCopies;
32
32
  contextFilters = null;
33
- rootNode = new Node(null, this.tableName, this.tableName, false, true, null, null, true, null, null);
33
+ rootNode = null;
34
34
  ignorePropertyList = [
35
35
  'CreatedRef',
36
36
  'Created',
@@ -108,7 +108,7 @@ export class TruCloneView extends TruViewBase {
108
108
  let propertyNames = Object.keys(currentEntity);
109
109
  let navigationPropertyNames = propertyNames.filter((n) => { return n.startsWith('o'); });
110
110
  let childNavigationPropertyNames = navigationPropertyNames.filter((n) => {
111
- return childLookup.some((lookup) => { return 'o' + lookup.pluralTableName === n; });
111
+ return childLookup.some((lookup) => { return lookup.name === n; });
112
112
  });
113
113
  let childProperties = [];
114
114
  childNavigationPropertyNames.filter(function (n) {
@@ -242,6 +242,7 @@ export class TruCloneView extends TruViewBase {
242
242
  this.tableName = this.view.window.tableName;
243
243
  this.entities = this.view.entities;
244
244
  this.entity = this.entities[this.view.entityIndex];
245
+ this.rootNode = new Node(null, this.tableName, this.tableName, false, true, null, null, true, null, null);
245
246
  this.setEntityDisplayValues(this.view.window.tableName);
246
247
  this.getDataForCloning();
247
248
  }
@@ -324,4 +325,4 @@ class Node {
324
325
  }
325
326
  };
326
327
  }
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNsb25lLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xvbmUtdmlldy90cnUtY2xvbmUtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jbG9uZS12aWV3L3RydS1jbG9uZS12aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0I3RCxNQUFNLE9BQU8sWUFBYSxTQUFRLFdBQVc7SUFrQy9CO0lBQ0E7SUFDRjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUF4Q1YsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixjQUFjLEdBQVcsa0NBQWtDLENBQUM7SUFDNUQsY0FBYyxDQUFrQztJQUNoRCxzQkFBc0IsQ0FBNEI7SUFDbEQsY0FBYyxHQUFHLElBQUksQ0FBQztJQUN0QixRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRyxrQkFBa0IsR0FBRztRQUNuQixZQUFZO1FBQ1osU0FBUztRQUNULFlBQVk7UUFDWixTQUFTO1FBQ1QsUUFBUTtRQUNSLHlCQUF5QjtRQUN6QixjQUFjO1FBQ2QsdUJBQXVCO1FBQ3ZCLGVBQWU7UUFDZixjQUFjO1FBQ2QsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2YsYUFBYTtRQUNiLGFBQWE7UUFDYix1QkFBdUI7UUFDdkIsS0FBSztLQUNOLENBQUM7SUFDRixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsUUFBUSxHQUFnQixFQUFFLENBQUM7SUFDM0IsYUFBYSxHQUFnQixFQUFFLENBQUM7SUFDaEMsY0FBYyxHQUFXLENBQUMsQ0FBQztJQUMzQixjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QixZQUNZLFdBQTJCLEVBQzNCLGtCQUF5QyxFQUMzQyxXQUEyQixFQUMzQixnQkFBcUMsRUFDckMsbUJBQTJDLEVBQzNDLGVBQW1DLEVBQ25DLCtCQUFtRSxFQUNuRSxjQUFpQztRQUN6QyxLQUFLLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFSN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFDM0MsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUMzQyxvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7UUFDbkMsb0NBQStCLEdBQS9CLCtCQUErQixDQUFvQztRQUNuRSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFFekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8saUJBQWlCLEdBQUcsR0FBcUMsRUFBRTtRQUNqRSxJQUFJLE1BQU0sR0FBcUMsRUFBRSxDQUFDO1FBQ2xELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO2FBQ3BCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUE7SUFFTyxpQkFBaUIsR0FBRyxDQUFDLFlBQW9CLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ3RFLElBQUksWUFBWSxLQUFLLFNBQVMsR0FBRyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDckQsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9DLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxrQkFBa0I7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxnQkFBZ0IsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUcsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUE7SUFFUSxzQkFBc0IsR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO1FBQzdDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUE7SUFFTyxrQ0FBa0MsR0FBRyxDQUFDLGFBQWtCLEVBQUUsRUFBRTtRQUNsRSx3RUFBd0U7UUFDeEUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQWtDLENBQUM7UUFDL0csSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQyxJQUFJLHVCQUF1QixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksNEJBQTRCLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdEUsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsR0FBRyxPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUMsZUFBZSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxlQUFlLEdBQWUsRUFBRSxDQUFDO1FBQ3JDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDN0MsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07Z0JBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUMsQ0FBQTtJQUVPLHlCQUF5QixHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1FBQ3ZELElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUMsQ0FBQTtJQUVLLGNBQWMsR0FBRyxDQUFDLGFBQWtCLEVBQUUsSUFBUyxFQUFFLEVBQUU7UUFDekQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFrQixFQUFFLEVBQUU7WUFDN0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxJQUFJLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FDdEIsSUFBSSxFQUNKLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUNqQyxXQUFXLEVBQUUsV0FBcUIsRUFDbEMsS0FBSyxFQUNMLElBQUksRUFDSixFQUFFLEVBQ0YsRUFBRSxFQUNGLEtBQUssRUFDTCxJQUFJLEVBQ0osSUFBSSxDQUNMLENBQUM7WUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU5QixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBZ0IsRUFBRSxFQUFFO2dCQUN6QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FDdEIsV0FBVyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFDekIsSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLEVBQUUsRUFDRixFQUFFLEVBQ0YsS0FBSyxFQUNMLFNBQVMsRUFDVCxXQUFXLENBQ1osQ0FBQztnQkFFRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFUyxvQkFBb0IsR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFPLEVBQUUsRUFBRTtRQUNuRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUU7WUFDbkMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUE7SUFFTyxhQUFhLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtRQUNyQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDZCxJQUFJLElBQUksR0FBRztZQUNULEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRztZQUNWLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUztTQUN2QixDQUFDO1FBQ0YsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQ2xDLENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsK0JBQStCLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO1lBQzVILElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07Z0JBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsbUJBQW1CLENBQUM7WUFDNUMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQTtJQUVPLElBQUksR0FBRyxHQUFHLEVBQUU7UUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQyxDQUFBO0lBRU8sUUFBUSxHQUFHLENBQUMsSUFBUyxFQUFFLGFBQWtCLEVBQUUsRUFBRTtRQUNuRCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDNUIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLFNBQVMsQ0FBQyxPQUFPO29CQUNuQixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFO3dCQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztvQkFDMUMsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFcEYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO29CQUM5RCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7d0JBQ3pELFNBQVMsQ0FBQyxZQUF5QixDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDbkUsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxTQUFTLENBQUMsV0FBWSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUV0RCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25FLGFBQWEsQ0FBQyxHQUFHLEdBQUcsV0FBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDNUIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFO29CQUNwQyxJQUFJLFNBQVMsQ0FBQyxPQUFPO3dCQUNuQixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFOzRCQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQzt3QkFDdEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNwQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ3BCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUMxQixDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ1gsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVsRixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBRTtnQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25HLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFRCxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ2IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQztRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFcEYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFvQixFQUFFLEVBQUU7Z0JBQ3hFLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDekQsU0FBUyxDQUFDLFlBQXlCLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxTQUFTLENBQUMsV0FBWSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXRELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM5QyxnQ0FBZ0M7UUFDbEMsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQyxDQUFDLENBQUM7SUFFRixRQUFRLEdBQUcsR0FBRyxFQUFFO1FBQ2QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUMsQ0FBQztJQUVGLGVBQWUsR0FBRyxHQUFHLEVBQUU7SUFFdkIsQ0FBQyxDQUFBO0lBRUQsaUJBQWlCLEdBQUcsR0FBRyxFQUFFO0lBRXpCLENBQUMsQ0FBQTtJQUVELHVCQUF1QixHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7SUFFekMsQ0FBQyxDQUFBO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFlLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQzt1R0F2UlUsWUFBWTsyRkFBWixZQUFZLDZFQ25CekIsbTRFQWlEQTs7MkZEOUJhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsZ0JBQWdCOztBQThSNUIsTUFBTSxJQUFJO0lBQ1IsR0FBRyxDQUFnQjtJQUNuQixTQUFTLENBQVM7SUFDbEIsV0FBVyxDQUFTO0lBQ3BCLE9BQU8sQ0FBVTtJQUNqQixLQUFLLENBQU07SUFDWCxVQUFVLENBQU07SUFDaEIsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUM5QixZQUFZLENBQWdCO0lBQzVCLEtBQUssQ0FBTTtJQUNYLElBQUksQ0FBTTtJQUNWLE1BQU0sQ0FBTTtJQUNaLE1BQU0sQ0FBTTtJQUVaLFlBQ0UsR0FBa0IsRUFDbEIsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsS0FBVSxFQUNWLE9BQWdCLEVBQ2hCLGFBQWtCLEVBQ2xCLFlBQTJCLEVBQzNCLElBQWEsRUFDYixNQUFXLEVBQ1gsTUFBVztRQUNYLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWMsR0FBRyxHQUFHLEVBQUU7UUFDcEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUN6QixDQUFDLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQTtJQUVELGdCQUFnQixHQUFHLEdBQUcsRUFBRTtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNwQixPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNULENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNqQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO29CQUNwRCxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLFlBQVk7b0JBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLGlCQUFpQixHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7d0JBQ3pCLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7b0JBQ3pCLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydVZpZXdCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS12aWV3cy90cnUtdmlldy1iYXNlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uL3Rvb2xiYXIvY2xhc3Nlcy90cnUtdG9vbGJhci1kcm9wZG93bi1vcHRpb24nO1xyXG5pbXBvcnQgeyBUcnVUZXh0TWFuYWdlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS10ZXh0LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuLi9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydU1vZGVsVGFibGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdGFibGUtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC1wcm9wZXJ0eS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLW5hdmlnYXRpb24tcHJvcGVydGllcy1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVOYXZpZ2F0aW9uUHJvcGVydHlDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RydS1uYXZpZ2F0aW9uLXByb3BlcnR5LWNvbmZpZyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtY2xvbmUtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1jbG9uZS12aWV3Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1jbG9uZS12aWV3LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDbG9uZVZpZXcgZXh0ZW5kcyBUcnVWaWV3QmFzZSB7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbG9hZGluZ01lc3NhZ2U6IHN0cmluZyA9ICdTZWFyY2hpbmcgZm9yIHJlbGF0ZWQgcmVjb3Jkcy4uLic7XHJcbiAgbnVtYmVyT2ZDb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+XHJcbiAgc2VsZWN0ZWROdW1iZXJPZkNvcGllczogSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbjtcclxuICBjb250ZXh0RmlsdGVycyA9IG51bGw7XHJcbiAgcm9vdE5vZGUgPSBuZXcgTm9kZShudWxsLCB0aGlzLnRhYmxlTmFtZSwgdGhpcy50YWJsZU5hbWUsIGZhbHNlLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlLCBudWxsLCBudWxsKTtcclxuICBpZ25vcmVQcm9wZXJ0eUxpc3QgPSBbXHJcbiAgICAnQ3JlYXRlZFJlZicsXHJcbiAgICAnQ3JlYXRlZCcsXHJcbiAgICAnVXBkYXRlZFJlZicsXHJcbiAgICAnVXBkYXRlZCcsXHJcbiAgICAncm93dmVyJyxcclxuICAgICdfY3VzdG9tVmFsaWRhdGlvbkVycm9ycycsXHJcbiAgICAnZW50aXR5QXNwZWN0JyxcclxuICAgICdfYXNzb2NpYXRlZERhdGFDYWNoZWQnLFxyXG4gICAgJ19iYWNraW5nU3RvcmUnLFxyXG4gICAgJ19zZXREZWZhdWx0cycsXHJcbiAgICAnXyR0eXBlTmFtZScsXHJcbiAgICAnZW50aXR5VHlwZScsXHJcbiAgICAnXyRpbnRlcmNlcHRvcicsXHJcbiAgICAnZ2V0UHJvcGVydHknLFxyXG4gICAgJ3NldFByb3BlcnR5JyxcclxuICAgICdfcGVuZGluZ0JhY2tpbmdTdG9yZXMnLFxyXG4gICAgJ1JlZidcclxuICBdO1xyXG4gIGRhdGFUcmVlID0gW107XHJcbiAgZmxhdExpc3Q6IEFycmF5PE5vZGU+ID0gW107XHJcbiAgY2hpbGRGbGF0TGlzdDogQXJyYXk8Tm9kZT4gPSBbXTtcclxuICBwcm9jZXNzZWRDb3VudDogbnVtYmVyID0gMDtcclxuICBkb25lUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc3BsYXlUcmVlID0gW3RoaXMucm9vdE5vZGVdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB0ZXh0TWFuYWdlcjogVHJ1VGV4dE1hbmFnZXIsXHJcbiAgICBwcm90ZWN0ZWQgd2luZG93RXZlbnRIYW5kbGVyOiBUcnVXaW5kb3dFdmVudEhhbmRsZXIsXHJcbiAgICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgbW9kZWxUYWJsZUxvb2t1cDogVHJ1TW9kZWxUYWJsZUxvb2t1cCxcclxuICAgIHByaXZhdGUgbW9kZWxQcm9wZXJ0eUxvb2t1cDogVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCxcclxuICAgIHByaXZhdGUgbW9kZWxUeXBlTG9va3VwOiBUcnVNb2RlbFR5cGVMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsTmF2aWdhdGlvblByb3BlcnRpZXNMb29rdXA6IFRydU1vZGVsTmF2aWdhdGlvblByb3BlcnRpZXNMb29rdXAsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbikge1xyXG4gICAgc3VwZXIodGV4dE1hbmFnZXIsIHdpbmRvd0V2ZW50SGFuZGxlcik7XHJcbiAgICB0aGlzLm51bWJlck9mQ29waWVzID0gdGhpcy5nZXROdW1iZXJPZkNvcGllcygpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE51bWJlck9mQ29waWVzID0gdGhpcy5udW1iZXJPZkNvcGllc1swXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TnVtYmVyT2ZDb3BpZXMgPSAoKTogQXJyYXk8SVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbj4gPT4ge1xyXG4gICAgbGV0IGNvcGllczogQXJyYXk8SVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbj4gPSBbXTtcclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDI1OyBpKyspIHtcclxuICAgICAgY29waWVzLnB1c2goe1xyXG4gICAgICAgIHZhbHVlOiBpLFxyXG4gICAgICAgIGxhYmVsOiBpLnRvU3RyaW5nKClcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29waWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9wZXJ0eUlzQWxsb3dlZCA9IChwcm9wZXJ0eU5hbWU6IHN0cmluZywgdGFibGVOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09IHRhYmxlTmFtZSArICdSZWYnKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAocHJvcGVydHlOYW1lLnN0YXJ0c1dpdGgoJ28nKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgbGV0IHByb3BlcnR5ID0gdGhpcy5tb2RlbFByb3BlcnR5TG9va3VwLmxvb2t1cC5nZXQocHJvcGVydHlOYW1lKTtcclxuICAgIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5leGNsdWRlRnJvbUNsb25pbmcpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICh0aGlzLmlnbm9yZVByb3BlcnR5TGlzdC5zb21lKGZ1bmN0aW9uIChwcm9wZXJ0eVRvSWdub3JlKSB7IHJldHVybiBwcm9wZXJ0eVRvSWdub3JlID09PSBwcm9wZXJ0eU5hbWU7IH0pKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSAgZ2V0UHJvdG90eXBlUHJvcGVydGllcyA9IChvYmo6IGFueSkgPT4ge1xyXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xyXG4gICAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcclxuICAgICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcclxuICAgICAgICByZXN1bHQucHVzaChwcm9wKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2hpbGRQcm9wZXJ0aWVzRm9yQ3VycmVudEVudGl0eSA9IChjdXJyZW50RW50aXR5OiBhbnkpID0+IHtcclxuICAgIC8vdmFyIHByb3BlcnR5TmFtZXMgPSBPYmplY3Qua2V5cyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudEVudGl0eSkpO1xyXG4gICAgbGV0IGVudGl0eU5hbWUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoY3VycmVudEVudGl0eS4kdHlwZSk7XHJcbiAgICBsZXQgY2hpbGRMb29rdXAgPSB0aGlzLm1vZGVsTmF2aWdhdGlvblByb3BlcnRpZXNMb29rdXAubG9va3VwLmdldChlbnRpdHlOYW1lKSBhcyBUcnVOYXZpZ2F0aW9uUHJvcGVydHlDb25maWdbXTtcclxuICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmtleXMoY3VycmVudEVudGl0eSk7XHJcbiAgICBsZXQgbmF2aWdhdGlvblByb3BlcnR5TmFtZXMgPSBwcm9wZXJ0eU5hbWVzLmZpbHRlcigobikgPT4geyByZXR1cm4gbi5zdGFydHNXaXRoKCdvJyk7IH0pO1xyXG4gICAgbGV0IGNoaWxkTmF2aWdhdGlvblByb3BlcnR5TmFtZXMgPSBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lcy5maWx0ZXIoKG4pID0+IHtcclxuICAgICAgcmV0dXJuIGNoaWxkTG9va3VwLnNvbWUoKGxvb2t1cDogYW55KSA9PiB7IHJldHVybiAnbycgKyBsb29rdXAucGx1cmFsVGFibGVOYW1lID09PSBuOyB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBjaGlsZFByb3BlcnRpZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIGNoaWxkTmF2aWdhdGlvblByb3BlcnR5TmFtZXMuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgIGlmIChjdXJyZW50RW50aXR5W25dICYmIGN1cnJlbnRFbnRpdHlbbl0ubGVuZ3RoKSBjaGlsZFByb3BlcnRpZXMucHVzaChjdXJyZW50RW50aXR5W25dKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjaGlsZFByb3BlcnRpZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUgPSAodHlwZU5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgdmFyIHAxcyA9IHR5cGVOYW1lLnNwbGl0KCcsJylbMF07XHJcbiAgICB2YXIgcDJzID0gcDFzLnNwbGl0KCcuJyk7XHJcbiAgICByZXR1cm4gcDJzW3Aycy5sZW5ndGggLSAxXTtcclxuICB9XHJcblxyXG5wcml2YXRlIGJ1aWxkQ2xvbmVUcmVlID0gKGN1cnJlbnRFbnRpdHk6IGFueSwgbm9kZTogYW55KSA9PiB7XHJcbiAgdmFyIGNoaWxkUHJvcGVydGllcyA9IHRoaXMuZ2V0Q2hpbGRQcm9wZXJ0aWVzRm9yQ3VycmVudEVudGl0eShjdXJyZW50RW50aXR5KTtcclxuICBjaGlsZFByb3BlcnRpZXMuZm9yRWFjaCgoY2hpbGRFbnRpdGllczogYW55KSA9PiB7XHJcbiAgICBsZXQgdHlwZSA9IHRoaXMuZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZShjaGlsZEVudGl0aWVzWzBdLiR0eXBlKTtcclxuICAgIGxldCBjaGlsZExvb2t1cCA9IHRoaXMubW9kZWxUYWJsZUxvb2t1cC5sb29rdXAuZ2V0KHR5cGUpO1xyXG4gICAgbGV0IGdyb3VwTm9kZSA9IG5ldyBOb2RlKFxyXG4gICAgICBudWxsLFxyXG4gICAgICBjaGlsZEVudGl0aWVzWzBdLmNvbnN0cnVjdG9yLm5hbWUsXHJcbiAgICAgIGNoaWxkTG9va3VwPy5wbHVyYWxMYWJlbCBhcyBzdHJpbmcsXHJcbiAgICAgIGZhbHNlLFxyXG4gICAgICB0cnVlLFxyXG4gICAgICBbXSxcclxuICAgICAgJycsXHJcbiAgICAgIGZhbHNlLFxyXG4gICAgICBub2RlLFxyXG4gICAgICBudWxsXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZmxhdExpc3QucHVzaChncm91cE5vZGUpO1xyXG5cclxuICAgIGNoaWxkRW50aXRpZXMuZm9yRWFjaCgoY2hpbGRFbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdHlwZSA9IHRoaXMuZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZShjaGlsZEVudGl0eS4kdHlwZSk7XHJcbiAgICAgIGxldCBjaGlsZE5vZGUgPSBuZXcgTm9kZShcclxuICAgICAgICBjaGlsZEVudGl0eVt0eXBlICsgJ1JlZiddLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICAgW10sXHJcbiAgICAgICAgJycsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZ3JvdXBOb2RlLFxyXG4gICAgICAgIGNoaWxkRW50aXR5XHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmNoaWxkRmxhdExpc3QucHVzaChjaGlsZE5vZGUpO1xyXG4gICAgICBncm91cE5vZGUubm9kZXMucHVzaChjaGlsZE5vZGUpO1xyXG4gICAgICB0aGlzLmJ1aWxkQ2xvbmVUcmVlKGNoaWxkRW50aXR5LCBjaGlsZE5vZGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbm9kZS5ub2Rlcy5wdXNoKGdyb3VwTm9kZSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbiAgcHJpdmF0ZSBhc3luY0ZvckVhY2hSZWNvcmRJZCA9IChhcnI6IGFueSwgY2I6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIGFyci5yZWR1Y2UoKHA6IGFueSwgYzogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBwLnRoZW4oKCkgPT4gY2IoYykpO1xyXG4gICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaFJlY29yZElkID0gKGNoaWxkOiBhbnkpID0+IHtcclxuICAgIHZhciBjID0gY2hpbGQ7XHJcbiAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgcmVmOiBjLnJlZixcclxuICAgICAgdGFibGVOYW1lOiBjLnRhYmxlTmFtZVxyXG4gICAgfTtcclxuICAgIGRhdGEgPSB0aGlzLnRleHRNYW5hZ2VyLmZvcm1hdEFzVXJsUGFyYW1ldGVycyhkYXRhKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IGFueSkgPT4ge1xyXG4gICAgICBjLmRpc3BsYXlOYW1lID0gY2hpbGQuZW50aXR5LkhJRDtcclxuICAgICAgdGhpcy5wcm9jZXNzZWRDb3VudCsrO1xyXG4gICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ0Zvcm1hdHRpbmcgZGF0YS4uLnByb2Nlc3NlZCAoJyArIHRoaXMucHJvY2Vzc2VkQ291bnQgKyAnLycgKyB0aGlzLmNoaWxkRmxhdExpc3QubGVuZ3RoICsgJykgcmVjb3Jkcyc7XHJcbiAgICAgIGlmICh0aGlzLnByb2Nlc3NlZENvdW50ID49IHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGgpXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nTWVzc2FnZSA9ICdSZW5kZXJpbmcgdHJlZS4uLic7XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb25lID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kb25lUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYXZlcnNlID0gKG5vZGU6IGFueSwgY3VycmVudEVudGl0eTogYW55KSA9PiB7XHJcbiAgICB2YXIgZ3JvdXAgPSAhbm9kZS5jaGlsZDtcclxuICAgIGlmIChncm91cCkge1xyXG4gICAgICB2YXIgZ3JvdXBOb2RlcyA9IG5vZGUubm9kZXM7XHJcbiAgICAgIGdyb3VwTm9kZXMuZm9yRWFjaCgoZ3JvdXBOb2RlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXBOb2RlLmNoZWNrZWQpXHJcbiAgICAgICAgICBncm91cE5vZGUubm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmF2ZXJzZShjaGlsZE5vZGUsIGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG5vZGUuY2hlY2tlZCkge1xyXG4gICAgICAgIGxldCB0YWJsZVR5cGUgPSB0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMudGFibGVOYW1lKTtcclxuICAgICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGFibGVUeXBlLCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgdGhpcy5nZXRQcm90b3R5cGVQcm9wZXJ0aWVzKG5ld0VudGl0eSkuZm9yRWFjaCgocHJvcGVydHlOYW1lKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eUlzQWxsb3dlZChwcm9wZXJ0eU5hbWUsIG5vZGUudGFibGVOYW1lKSkge1xyXG4gICAgICAgICAgICBuZXdFbnRpdHlbcHJvcGVydHlOYW1lIGFzIE9iamVjdEtleV0gPSBub2RlLmVudGl0eVtwcm9wZXJ0eU5hbWVdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBuZXdFbnRpdHkuc2V0UHJvcGVydHkhKCdfYXNzb2NpYXRlZERhdGFDYWNoZWQnLCB0cnVlKTtcclxuXHJcbiAgICAgICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmxvb2t1cC5nZXQobm9kZS50YWJsZU5hbWUpO1xyXG4gICAgICAgIGN1cnJlbnRFbnRpdHlbJ28nICsgY2hpbGRMb29rdXAhLnBsdXJhbE5hbWVdLnB1c2gobmV3RW50aXR5KTtcclxuICAgICAgICBsZXQgY2hpbGROb2RlcyA9IG5vZGUubm9kZXM7XHJcbiAgICAgICAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5jaGVja2VkKVxyXG4gICAgICAgICAgICBjaGlsZE5vZGUubm9kZXMuZm9yRWFjaCgoZ3JvdXBOb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRyYXZlcnNlKGdyb3VwTm9kZSwgbmV3RW50aXR5KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcml2YXRlIGdldERhdGFGb3JDbG9uaW5nID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5jbG9uZSh7XHJcbiAgICAgIHJlZjogdGhpcy5lbnRpdHkuUmVmLFxyXG4gICAgICB0YWJsZU5hbWU6IHRoaXMudGFibGVOYW1lXHJcbiAgICB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVRyZWUgPSByZXNwb25zZS5Db250ZW50WzBdO1xyXG4gICAgICAgIHRoaXMuYnVpbGRDbG9uZVRyZWUodGhpcy5kYXRhVHJlZSwgdGhpcy5yb290Tm9kZSk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnRm9ybWF0dGluZyBkYXRhLi4uKDAvJyArIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggKyAnKSByZWNvcmRzJztcclxuICAgICAgICB0aGlzLmFzeW5jRm9yRWFjaFJlY29yZElkKHRoaXMuY2hpbGRGbGF0TGlzdCwgdGhpcy5mZXRjaFJlY29yZElkKS50aGVuKHRoaXMuZG9uZSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlzcGxheVRyZWUgPSBbdGhpcy5yb290Tm9kZV07XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcicsIHRoaXMudWlOb3RpZmljYXRpb24uZXJyb3IoJ1NlcnZlciBFcnJvcjogJyArIGV4LnN0YXR1cywgW2V4LmVycm9yLk1lc3NhZ2VdKSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsb25lID0gKCkgPT4ge1xyXG4gICAgbGV0IGNvcGllcyA9IHRoaXMuc2VsZWN0ZWROdW1iZXJPZkNvcGllcy52YWx1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29waWVzOyBpKyspIHtcclxuICAgICAgbGV0IHRhYmxlVHlwZSA9IHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy50YWJsZU5hbWUpO1xyXG4gICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGFibGVUeXBlLCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICB0aGlzLmdldFByb3RvdHlwZVByb3BlcnRpZXModGhpcy5lbnRpdHkpLmZvckVhY2goKHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHlJc0FsbG93ZWQocHJvcGVydHlOYW1lLCB0aGlzLnRhYmxlTmFtZSkpIHtcclxuICAgICAgICAgIG5ld0VudGl0eVtwcm9wZXJ0eU5hbWUgYXMgT2JqZWN0S2V5XSA9IHRoaXMuZW50aXR5W3Byb3BlcnR5TmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIG5ld0VudGl0eS5zZXRQcm9wZXJ0eSEoJ19hc3NvY2lhdGVkRGF0YUNhY2hlZCcsIHRydWUpO1xyXG5cclxuICAgICAgdGhpcy50cmF2ZXJzZSh0aGlzLmRpc3BsYXlUcmVlWzBdLCBuZXdFbnRpdHkpO1xyXG4gICAgICAvL3RoaXMudmlldy5kYXRhLmFkZChuZXdFbnRpdHkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBvbkNhbmNlbCA9ICgpID0+IHtcclxuICAgIHRoaXMud2luZG93RXZlbnRIYW5kbGVyLmNsb3NlKCk7XHJcbiAgfTtcclxuXHJcbiAgb25FeHBhbmRDbGlja2VkID0gKCkgPT4ge1xyXG5cclxuICB9XHJcbiAgICAgXHJcbiAgb25Db2xsYXBzZUNsaWNrZWQgPSAoKSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgb25OdW1iZXJPZkNvcGllc0NoYW5nZWQgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0aGlzLnZpZXcud2luZG93LnRhYmxlTmFtZTtcclxuICAgIHRoaXMuZW50aXRpZXMgPSB0aGlzLnZpZXcuZW50aXRpZXMgYXMgYW55O1xyXG4gICAgdGhpcy5lbnRpdHkgPSB0aGlzLmVudGl0aWVzW3RoaXMudmlldy5lbnRpdHlJbmRleF07XHJcbiAgICB0aGlzLnNldEVudGl0eURpc3BsYXlWYWx1ZXModGhpcy52aWV3LndpbmRvdy50YWJsZU5hbWUpO1xyXG4gICAgdGhpcy5nZXREYXRhRm9yQ2xvbmluZygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRhdGFUcmVlLmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLmZsYXRMaXN0Lmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLmNoaWxkRmxhdExpc3QubGVuZ3RoID0gMDtcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIE5vZGUge1xyXG4gIHJlZjogbnVtYmVyIHwgbnVsbDtcclxuICB0YWJsZU5hbWU6IHN0cmluZztcclxuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgY2hpbGQ6IGFueTtcclxuICBjaGlsZE5vZGVzOiBhbnk7XHJcbiAgc2hvd0VudGl0aWVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGF0aEZyb21Sb290OiBzdHJpbmcgfCBudWxsO1xyXG4gIG5vZGVzOiBhbnk7XHJcbiAgcm9vdDogYW55O1xyXG4gIHBhcmVudDogYW55O1xyXG4gIGVudGl0eTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCxcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcclxuICAgIGNoaWxkOiBhbnksXHJcbiAgICBjaGVja2VkOiBib29sZWFuLFxyXG4gICAgY2hpbGRFbnRpdGllczogYW55LFxyXG4gICAgcGF0aEZyb21Sb290OiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcm9vdDogYm9vbGVhbixcclxuICAgIHBhcmVudDogYW55LFxyXG4gICAgZW50aXR5OiBhbnkpIHtcclxuICAgIHRoaXMucmVmID0gcmVmO1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XHJcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XHJcbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5jaGlsZCA9IGNoaWxkO1xyXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGRFbnRpdGllcztcclxuICAgIHRoaXMucGF0aEZyb21Sb290ID0gcGF0aEZyb21Sb290O1xyXG4gICAgdGhpcy5yb290ID0gcm9vdDtcclxuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xyXG4gICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XHJcbiAgfVxyXG5cclxuICBvbkdyb3VwRGlzcGxheSA9ICgpID0+IHtcclxuICAgIHZhciBjdXJyZW50VmFsdWUgPSB0aGlzLnNob3dFbnRpdGllcyA9ICF0aGlzLnNob3dFbnRpdGllcztcclxuICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgIG4uc2hvd0VudGl0aWVzID0gY3VycmVudFZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrZWRDaGFuZ2VkID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBwID0gdGhpcy5wYXJlbnQ7XHJcbiAgICAgICAgd2hpbGUgKHApIHtcclxuICAgICAgICAgIHAuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICBwID0gcC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7IG4uY2hlY2tlZCA9IHRydWU7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBhbGxVbmNoZWNrZWQgPSB0aGlzLnBhcmVudC5ub2Rlcy5ldmVyeSgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbi5jaGVja2VkID09PSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoYWxsVW5jaGVja2VkKVxyXG4gICAgICAgICAgdGhpcy5wYXJlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB1bmNoZWNrQ2hpbGROb2RlcyA9IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgIG5vZGUubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgICBuLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5maW5kKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIjxkaXY+XHJcbiAgPHRydS10b29sYmFyPlxyXG4gICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCInZXhwYW5kLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0V4cGFuZCdcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChvbkNsaWNrKT1cIm9uRXhwYW5kQ2xpY2tlZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIidjb2xsYXBzZS1pY29uJ1wiIFt0b29sdGlwXT1cIidDb2xsYXBzZSdcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChvbkNsaWNrKT1cIm9uQ29sbGFwc2VDbGlja2VkKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDx0cnUtdG9vbGJhci10ZXh0IFt0ZXh0XT1cIidDb3BpZXM6J1wiPjwvdHJ1LXRvb2xiYXItdGV4dD5cclxuICAgIDx0cnUtdG9vbGJhci1kcm9wZG93biBbb3B0aW9uc109XCJudW1iZXJPZkNvcGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE9wdGlvbildPVwic2VsZWN0ZWROdW1iZXJPZkNvcGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25OdW1iZXJPZkNvcGllc0NoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgPC90cnUtdG9vbGJhci1kcm9wZG93bj5cclxuICA8L3RydS10b29sYmFyPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGlhbG9nLWNvbnRlbnQgY2xvbmVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXBOb2RlUmVuZGVyZXIgbGV0LWRhdGE+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhZGF0YS5jaGlsZCB8fCBkYXRhLnNob3dFbnRpdGllc1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC10cmVlLWdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGEub25DaGVja2VkQ2hhbmdlZCgpXCJcclxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGEucm9vdFwiXHJcbiAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgICAgPGEgKGNsaWNrKT1cImRhdGEub25Hcm91cERpc3BsYXlOYW1lQ2xpY2tlZCgpXCJcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Nsb25lLW1vZGFsLXRyZWUtZ3JvdXAtcm9vdC1uYW1lJzogZGF0YS5yb290IHx8IGRhdGEuY2hpbGR9XCJcclxuICAgICAgICAgICBbbmdTdHlsZV09XCJ7J21heC13aWR0aCc6IGRhdGEuY2hpbGROb2RlID8gJzMwMHB4JyA6ICdhdXRvJ31cIj57e2RhdGEuZGlzcGxheU5hbWV9fTwvYT5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFkYXRhLnJvb3QgJiYgIWRhdGEuY2hpbGRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZS1ncm91cC1jb3VudFwiPih7e2RhdGEubm9kZXMubGVuZ3RofX0pPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHVsPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkYXRhLm5vZGVzXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBOb2RlUmVuZGVyZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGF9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ01lc3NhZ2VcIlxyXG4gICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLWxvYWRpbmdcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjbG9uZS1tb2RhbC1sb2FkaW5nLW1lc3NhZ2VcIj57e2xvYWRpbmdNZXNzYWdlfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkb25lUHJvY2Vzc2luZ1wiXHJcbiAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZVwiPlxyXG4gICAgICA8dWw+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRpc3BsYXlUcmVlXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBOb2RlUmVuZGVyZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGF9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGlhbG9nLWZvb3RlclwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNsb25lKClcIiAoa2V5dXAuZW50ZXIpPVwib25DbG9uZSgpXCI+Q2xvbmU8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNsb25lLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xvbmUtdmlldy90cnUtY2xvbmUtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jbG9uZS12aWV3L3RydS1jbG9uZS12aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0I3RCxNQUFNLE9BQU8sWUFBYSxTQUFRLFdBQVc7SUFrQy9CO0lBQ0E7SUFDRjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUF4Q1YsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixjQUFjLEdBQVcsa0NBQWtDLENBQUM7SUFDNUQsY0FBYyxDQUFrQztJQUNoRCxzQkFBc0IsQ0FBNEI7SUFDbEQsY0FBYyxHQUFHLElBQUksQ0FBQztJQUN0QixRQUFRLEdBQWdCLElBQUksQ0FBQztJQUM3QixrQkFBa0IsR0FBRztRQUNuQixZQUFZO1FBQ1osU0FBUztRQUNULFlBQVk7UUFDWixTQUFTO1FBQ1QsUUFBUTtRQUNSLHlCQUF5QjtRQUN6QixjQUFjO1FBQ2QsdUJBQXVCO1FBQ3ZCLGVBQWU7UUFDZixjQUFjO1FBQ2QsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2YsYUFBYTtRQUNiLGFBQWE7UUFDYix1QkFBdUI7UUFDdkIsS0FBSztLQUNOLENBQUM7SUFDRixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsUUFBUSxHQUFnQixFQUFFLENBQUM7SUFDM0IsYUFBYSxHQUFnQixFQUFFLENBQUM7SUFDaEMsY0FBYyxHQUFXLENBQUMsQ0FBQztJQUMzQixjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QixZQUNZLFdBQTJCLEVBQzNCLGtCQUF5QyxFQUMzQyxXQUEyQixFQUMzQixnQkFBcUMsRUFDckMsbUJBQTJDLEVBQzNDLGVBQW1DLEVBQ25DLCtCQUFtRSxFQUNuRSxjQUFpQztRQUN6QyxLQUFLLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFSN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFDM0MsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUMzQyxvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7UUFDbkMsb0NBQStCLEdBQS9CLCtCQUErQixDQUFvQztRQUNuRSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFFekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8saUJBQWlCLEdBQUcsR0FBcUMsRUFBRTtRQUNqRSxJQUFJLE1BQU0sR0FBcUMsRUFBRSxDQUFDO1FBQ2xELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO2FBQ3BCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUE7SUFFTyxpQkFBaUIsR0FBRyxDQUFDLFlBQW9CLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ3RFLElBQUksWUFBWSxLQUFLLFNBQVMsR0FBRyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDckQsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9DLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxrQkFBa0I7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxnQkFBZ0IsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUcsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUE7SUFFUSxzQkFBc0IsR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO1FBQzdDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUE7SUFFTyxrQ0FBa0MsR0FBRyxDQUFDLGFBQWtCLEVBQUUsRUFBRTtRQUNsRSx3RUFBd0U7UUFDeEUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQWtDLENBQUM7UUFDL0csSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQyxJQUFJLHVCQUF1QixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksNEJBQTRCLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdEUsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsR0FBRyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLGVBQWUsR0FBZSxFQUFFLENBQUM7UUFDckMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUM3QyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtnQkFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFGLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQyxDQUFBO0lBRU8seUJBQXlCLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUU7UUFDdkQsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQyxDQUFBO0lBRUssY0FBYyxHQUFHLENBQUMsYUFBa0IsRUFBRSxJQUFTLEVBQUUsRUFBRTtRQUN6RCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0UsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWtCLEVBQUUsRUFBRTtZQUM3QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xFLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pELElBQUksU0FBUyxHQUFHLElBQUksSUFBSSxDQUN0QixJQUFJLEVBQ0osYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQ2pDLFdBQVcsRUFBRSxXQUFxQixFQUNsQyxLQUFLLEVBQ0wsSUFBSSxFQUNKLEVBQUUsRUFDRixFQUFFLEVBQ0YsS0FBSyxFQUNMLElBQUksRUFDSixJQUFJLENBQ0wsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTlCLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFnQixFQUFFLEVBQUU7Z0JBQ3pDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdELElBQUksU0FBUyxHQUFHLElBQUksSUFBSSxDQUN0QixXQUFXLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUN6QixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osRUFBRSxFQUNGLEVBQUUsRUFDRixLQUFLLEVBQ0wsU0FBUyxFQUNULFdBQVcsQ0FDWixDQUFDO2dCQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDOUMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQTtJQUVTLG9CQUFvQixHQUFHLENBQUMsR0FBUSxFQUFFLEVBQU8sRUFBRSxFQUFFO1FBQ25ELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtZQUNuQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQTtJQUVPLGFBQWEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNkLElBQUksSUFBSSxHQUFHO1lBQ1QsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHO1lBQ1YsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTO1NBQ3ZCLENBQUM7UUFDRixJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7WUFDbEMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRywrQkFBK0IsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7WUFDNUgsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTtnQkFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQztZQUM1QyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO0lBRU8sSUFBSSxHQUFHLEdBQUcsRUFBRTtRQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDLENBQUE7SUFFTyxRQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQUUsYUFBa0IsRUFBRSxFQUFFO1FBQ25ELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUM1QixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7Z0JBQ3BDLElBQUksU0FBUyxDQUFDLE9BQU87b0JBQ25CLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7d0JBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO29CQUMxQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUVwRixJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7b0JBQzlELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzt3QkFDekQsU0FBUyxDQUFDLFlBQXlCLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNuRSxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILFNBQVMsQ0FBQyxXQUFZLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRXRELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkUsYUFBYSxDQUFDLEdBQUcsR0FBRyxXQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUM1QixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksU0FBUyxDQUFDLE9BQU87d0JBQ25CLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7NEJBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUN0QyxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3BDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7WUFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDWCxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUVsRCxJQUFJLENBQUMsY0FBYyxHQUFHLHVCQUF1QixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztnQkFDeEYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRWxGLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDbkcsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQTtJQUVELE9BQU8sR0FBRyxHQUFHLEVBQUU7UUFDYixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDO1FBQy9DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0QsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUVwRixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQW9CLEVBQUUsRUFBRTtnQkFDeEUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN6RCxTQUFTLENBQUMsWUFBeUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ25FLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILFNBQVMsQ0FBQyxXQUFZLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLGdDQUFnQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUMsQ0FBQztJQUVGLFFBQVEsR0FBRyxHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsQ0FBQyxDQUFDO0lBRUYsZUFBZSxHQUFHLEdBQUcsRUFBRTtJQUV2QixDQUFDLENBQUE7SUFFRCxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7SUFFekIsQ0FBQyxDQUFBO0lBRUQsdUJBQXVCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtJQUV6QyxDQUFDLENBQUE7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQWUsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQzt1R0F4UlUsWUFBWTsyRkFBWixZQUFZLDZFQ25CekIsbTRFQWlEQTs7MkZEOUJhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsZ0JBQWdCOztBQStSNUIsTUFBTSxJQUFJO0lBQ1IsR0FBRyxDQUFnQjtJQUNuQixTQUFTLENBQVM7SUFDbEIsV0FBVyxDQUFTO0lBQ3BCLE9BQU8sQ0FBVTtJQUNqQixLQUFLLENBQU07SUFDWCxVQUFVLENBQU07SUFDaEIsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUM5QixZQUFZLENBQWdCO0lBQzVCLEtBQUssQ0FBTTtJQUNYLElBQUksQ0FBTTtJQUNWLE1BQU0sQ0FBTTtJQUNaLE1BQU0sQ0FBTTtJQUVaLFlBQ0UsR0FBa0IsRUFDbEIsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsS0FBVSxFQUNWLE9BQWdCLEVBQ2hCLGFBQWtCLEVBQ2xCLFlBQTJCLEVBQzNCLElBQWEsRUFDYixNQUFXLEVBQ1gsTUFBVztRQUNYLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWMsR0FBRyxHQUFHLEVBQUU7UUFDcEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUN6QixDQUFDLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQTtJQUVELGdCQUFnQixHQUFHLEdBQUcsRUFBRTtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNwQixPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNULENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNqQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO29CQUNwRCxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLFlBQVk7b0JBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLGlCQUFpQixHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7d0JBQ3pCLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7b0JBQ3pCLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydVZpZXdCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS12aWV3cy90cnUtdmlldy1iYXNlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uL3Rvb2xiYXIvY2xhc3Nlcy90cnUtdG9vbGJhci1kcm9wZG93bi1vcHRpb24nO1xyXG5pbXBvcnQgeyBUcnVUZXh0TWFuYWdlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS10ZXh0LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuLi9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydU1vZGVsVGFibGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdGFibGUtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC1wcm9wZXJ0eS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLW5hdmlnYXRpb24tcHJvcGVydGllcy1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVOYXZpZ2F0aW9uUHJvcGVydHlDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RydS1uYXZpZ2F0aW9uLXByb3BlcnR5LWNvbmZpZyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtY2xvbmUtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1jbG9uZS12aWV3Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1jbG9uZS12aWV3LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDbG9uZVZpZXcgZXh0ZW5kcyBUcnVWaWV3QmFzZSB7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbG9hZGluZ01lc3NhZ2U6IHN0cmluZyA9ICdTZWFyY2hpbmcgZm9yIHJlbGF0ZWQgcmVjb3Jkcy4uLic7XHJcbiAgbnVtYmVyT2ZDb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+XHJcbiAgc2VsZWN0ZWROdW1iZXJPZkNvcGllczogSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbjtcclxuICBjb250ZXh0RmlsdGVycyA9IG51bGw7XHJcbiAgcm9vdE5vZGU6IE5vZGUgfCBudWxsID0gbnVsbDsgXHJcbiAgaWdub3JlUHJvcGVydHlMaXN0ID0gW1xyXG4gICAgJ0NyZWF0ZWRSZWYnLFxyXG4gICAgJ0NyZWF0ZWQnLFxyXG4gICAgJ1VwZGF0ZWRSZWYnLFxyXG4gICAgJ1VwZGF0ZWQnLFxyXG4gICAgJ3Jvd3ZlcicsXHJcbiAgICAnX2N1c3RvbVZhbGlkYXRpb25FcnJvcnMnLFxyXG4gICAgJ2VudGl0eUFzcGVjdCcsXHJcbiAgICAnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJyxcclxuICAgICdfYmFja2luZ1N0b3JlJyxcclxuICAgICdfc2V0RGVmYXVsdHMnLFxyXG4gICAgJ18kdHlwZU5hbWUnLFxyXG4gICAgJ2VudGl0eVR5cGUnLFxyXG4gICAgJ18kaW50ZXJjZXB0b3InLFxyXG4gICAgJ2dldFByb3BlcnR5JyxcclxuICAgICdzZXRQcm9wZXJ0eScsXHJcbiAgICAnX3BlbmRpbmdCYWNraW5nU3RvcmVzJyxcclxuICAgICdSZWYnXHJcbiAgXTtcclxuICBkYXRhVHJlZSA9IFtdO1xyXG4gIGZsYXRMaXN0OiBBcnJheTxOb2RlPiA9IFtdO1xyXG4gIGNoaWxkRmxhdExpc3Q6IEFycmF5PE5vZGU+ID0gW107XHJcbiAgcHJvY2Vzc2VkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgZG9uZVByb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNwbGF5VHJlZSA9IFt0aGlzLnJvb3ROb2RlXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgdGV4dE1hbmFnZXI6IFRydVRleHRNYW5hZ2VyLFxyXG4gICAgcHJvdGVjdGVkIHdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIG1vZGVsVGFibGVMb29rdXA6IFRydU1vZGVsVGFibGVMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsUHJvcGVydHlMb29rdXA6IFRydU1vZGVsUHJvcGVydHlMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBtb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwOiBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24pIHtcclxuICAgIHN1cGVyKHRleHRNYW5hZ2VyLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xyXG4gICAgdGhpcy5udW1iZXJPZkNvcGllcyA9IHRoaXMuZ2V0TnVtYmVyT2ZDb3BpZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWROdW1iZXJPZkNvcGllcyA9IHRoaXMubnVtYmVyT2ZDb3BpZXNbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE51bWJlck9mQ29waWVzID0gKCk6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0+IHtcclxuICAgIGxldCBjb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0gW107XHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAyNTsgaSsrKSB7XHJcbiAgICAgIGNvcGllcy5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogaSxcclxuICAgICAgICBsYWJlbDogaS50b1N0cmluZygpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvcGllcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGVydHlJc0FsbG93ZWQgPSAocHJvcGVydHlOYW1lOiBzdHJpbmcsIHRhYmxlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAocHJvcGVydHlOYW1lID09PSB0YWJsZU5hbWUgKyAnUmVmJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZS5zdGFydHNXaXRoKCdvJykpIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMubW9kZWxQcm9wZXJ0eUxvb2t1cC5sb29rdXAuZ2V0KHByb3BlcnR5TmFtZSk7XHJcbiAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHkuZXhjbHVkZUZyb21DbG9uaW5nKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5pZ25vcmVQcm9wZXJ0eUxpc3Quc29tZShmdW5jdGlvbiAocHJvcGVydHlUb0lnbm9yZSkgeyByZXR1cm4gcHJvcGVydHlUb0lnbm9yZSA9PT0gcHJvcGVydHlOYW1lOyB9KSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgIGdldFByb3RvdHlwZVByb3BlcnRpZXMgPSAob2JqOiBhbnkpID0+IHtcclxuICAgIHZhciByZXN1bHQgPSBbXTtcclxuICAgIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XHJcbiAgICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2gocHJvcCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoaWxkUHJvcGVydGllc0ZvckN1cnJlbnRFbnRpdHkgPSAoY3VycmVudEVudGl0eTogYW55KSA9PiB7XHJcbiAgICAvL3ZhciBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmtleXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cnJlbnRFbnRpdHkpKTtcclxuICAgIGxldCBlbnRpdHlOYW1lID0gdGhpcy5nZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lKGN1cnJlbnRFbnRpdHkuJHR5cGUpO1xyXG4gICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwLmxvb2t1cC5nZXQoZW50aXR5TmFtZSkgYXMgVHJ1TmF2aWdhdGlvblByb3BlcnR5Q29uZmlnW107XHJcbiAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5rZXlzKGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgbGV0IG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gcHJvcGVydHlOYW1lcy5maWx0ZXIoKG4pID0+IHsgcmV0dXJuIG4uc3RhcnRzV2l0aCgnbycpOyB9KTtcclxuICAgIGxldCBjaGlsZE5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gbmF2aWdhdGlvblByb3BlcnR5TmFtZXMuZmlsdGVyKChuKSA9PiB7XHJcbiAgICAgIHJldHVybiBjaGlsZExvb2t1cC5zb21lKChsb29rdXA6IGFueSkgPT4geyByZXR1cm4gbG9va3VwLm5hbWUgPT09IG47IH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGNoaWxkUHJvcGVydGllczogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgY2hpbGROYXZpZ2F0aW9uUHJvcGVydHlOYW1lcy5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcclxuICAgICAgaWYgKGN1cnJlbnRFbnRpdHlbbl0gJiYgY3VycmVudEVudGl0eVtuXS5sZW5ndGgpIGNoaWxkUHJvcGVydGllcy5wdXNoKGN1cnJlbnRFbnRpdHlbbl0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNoaWxkUHJvcGVydGllcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZSA9ICh0eXBlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICB2YXIgcDFzID0gdHlwZU5hbWUuc3BsaXQoJywnKVswXTtcclxuICAgIHZhciBwMnMgPSBwMXMuc3BsaXQoJy4nKTtcclxuICAgIHJldHVybiBwMnNbcDJzLmxlbmd0aCAtIDFdO1xyXG4gIH1cclxuXHJcbnByaXZhdGUgYnVpbGRDbG9uZVRyZWUgPSAoY3VycmVudEVudGl0eTogYW55LCBub2RlOiBhbnkpID0+IHtcclxuICB2YXIgY2hpbGRQcm9wZXJ0aWVzID0gdGhpcy5nZXRDaGlsZFByb3BlcnRpZXNGb3JDdXJyZW50RW50aXR5KGN1cnJlbnRFbnRpdHkpO1xyXG4gIGNoaWxkUHJvcGVydGllcy5mb3JFYWNoKChjaGlsZEVudGl0aWVzOiBhbnkpID0+IHtcclxuICAgIGxldCB0eXBlID0gdGhpcy5nZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lKGNoaWxkRW50aXRpZXNbMF0uJHR5cGUpO1xyXG4gICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmxvb2t1cC5nZXQodHlwZSk7XHJcbiAgICBsZXQgZ3JvdXBOb2RlID0gbmV3IE5vZGUoXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGNoaWxkRW50aXRpZXNbMF0uY29uc3RydWN0b3IubmFtZSxcclxuICAgICAgY2hpbGRMb29rdXA/LnBsdXJhbExhYmVsIGFzIHN0cmluZyxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIHRydWUsXHJcbiAgICAgIFtdLFxyXG4gICAgICAnJyxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIG5vZGUsXHJcbiAgICAgIG51bGxcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5mbGF0TGlzdC5wdXNoKGdyb3VwTm9kZSk7XHJcblxyXG4gICAgY2hpbGRFbnRpdGllcy5mb3JFYWNoKChjaGlsZEVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0eXBlID0gdGhpcy5nZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lKGNoaWxkRW50aXR5LiR0eXBlKTtcclxuICAgICAgbGV0IGNoaWxkTm9kZSA9IG5ldyBOb2RlKFxyXG4gICAgICAgIGNoaWxkRW50aXR5W3R5cGUgKyAnUmVmJ10sXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICBbXSxcclxuICAgICAgICAnJyxcclxuICAgICAgICBmYWxzZSxcclxuICAgICAgICBncm91cE5vZGUsXHJcbiAgICAgICAgY2hpbGRFbnRpdHlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5wdXNoKGNoaWxkTm9kZSk7XHJcbiAgICAgIGdyb3VwTm9kZS5ub2Rlcy5wdXNoKGNoaWxkTm9kZSk7XHJcbiAgICAgIHRoaXMuYnVpbGRDbG9uZVRyZWUoY2hpbGRFbnRpdHksIGNoaWxkTm9kZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBub2RlLm5vZGVzLnB1c2goZ3JvdXBOb2RlKTtcclxuICB9KTtcclxufVxyXG5cclxuICBwcml2YXRlIGFzeW5jRm9yRWFjaFJlY29yZElkID0gKGFycjogYW55LCBjYjogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgocDogYW55LCBjOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHAudGhlbigoKSA9PiBjYihjKSk7XHJcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoUmVjb3JkSWQgPSAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgdmFyIGMgPSBjaGlsZDtcclxuICAgIHZhciBkYXRhID0ge1xyXG4gICAgICByZWY6IGMucmVmLFxyXG4gICAgICB0YWJsZU5hbWU6IGMudGFibGVOYW1lXHJcbiAgICB9O1xyXG4gICAgZGF0YSA9IHRoaXMudGV4dE1hbmFnZXIuZm9ybWF0QXNVcmxQYXJhbWV0ZXJzKGRhdGEpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55KSA9PiB7XHJcbiAgICAgIGMuZGlzcGxheU5hbWUgPSBjaGlsZC5lbnRpdHkuSElEO1xyXG4gICAgICB0aGlzLnByb2Nlc3NlZENvdW50Kys7XHJcbiAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnRm9ybWF0dGluZyBkYXRhLi4ucHJvY2Vzc2VkICgnICsgdGhpcy5wcm9jZXNzZWRDb3VudCArICcvJyArIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggKyAnKSByZWNvcmRzJztcclxuICAgICAgaWYgKHRoaXMucHJvY2Vzc2VkQ291bnQgPj0gdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aClcclxuICAgICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ1JlbmRlcmluZyB0cmVlLi4uJztcclxuICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRvbmUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmRvbmVQcm9jZXNzaW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhdmVyc2UgPSAobm9kZTogYW55LCBjdXJyZW50RW50aXR5OiBhbnkpID0+IHtcclxuICAgIHZhciBncm91cCA9ICFub2RlLmNoaWxkO1xyXG4gICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgIHZhciBncm91cE5vZGVzID0gbm9kZS5ub2RlcztcclxuICAgICAgZ3JvdXBOb2Rlcy5mb3JFYWNoKChncm91cE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChncm91cE5vZGUuY2hlY2tlZClcclxuICAgICAgICAgIGdyb3VwTm9kZS5ub2Rlcy5mb3JFYWNoKChjaGlsZE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRyYXZlcnNlKGNoaWxkTm9kZSwgY3VycmVudEVudGl0eSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAobm9kZS5jaGVja2VkKSB7XHJcbiAgICAgICAgbGV0IHRhYmxlVHlwZSA9IHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy50YWJsZU5hbWUpO1xyXG4gICAgICAgIGxldCBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0YWJsZVR5cGUsIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgICB0aGlzLmdldFByb3RvdHlwZVByb3BlcnRpZXMobmV3RW50aXR5KS5mb3JFYWNoKChwcm9wZXJ0eU5hbWUpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5SXNBbGxvd2VkKHByb3BlcnR5TmFtZSwgbm9kZS50YWJsZU5hbWUpKSB7XHJcbiAgICAgICAgICAgIG5ld0VudGl0eVtwcm9wZXJ0eU5hbWUgYXMgT2JqZWN0S2V5XSA9IG5vZGUuZW50aXR5W3Byb3BlcnR5TmFtZV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIG5ld0VudGl0eS5zZXRQcm9wZXJ0eSEoJ19hc3NvY2lhdGVkRGF0YUNhY2hlZCcsIHRydWUpO1xyXG5cclxuICAgICAgICBsZXQgY2hpbGRMb29rdXAgPSB0aGlzLm1vZGVsVGFibGVMb29rdXAubG9va3VwLmdldChub2RlLnRhYmxlTmFtZSk7XHJcbiAgICAgICAgY3VycmVudEVudGl0eVsnbycgKyBjaGlsZExvb2t1cCEucGx1cmFsTmFtZV0ucHVzaChuZXdFbnRpdHkpO1xyXG4gICAgICAgIGxldCBjaGlsZE5vZGVzID0gbm9kZS5ub2RlcztcclxuICAgICAgICBjaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hpbGROb2RlLmNoZWNrZWQpXHJcbiAgICAgICAgICAgIGNoaWxkTm9kZS5ub2Rlcy5mb3JFYWNoKChncm91cE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhdmVyc2UoZ3JvdXBOb2RlLCBuZXdFbnRpdHkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YUZvckNsb25pbmcgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmNsb25lKHtcclxuICAgICAgcmVmOiB0aGlzLmVudGl0eS5SZWYsXHJcbiAgICAgIHRhYmxlTmFtZTogdGhpcy50YWJsZU5hbWVcclxuICAgIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhVHJlZSA9IHJlc3BvbnNlLkNvbnRlbnRbMF07XHJcbiAgICAgICAgdGhpcy5idWlsZENsb25lVHJlZSh0aGlzLmRhdGFUcmVlLCB0aGlzLnJvb3ROb2RlKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nTWVzc2FnZSA9ICdGb3JtYXR0aW5nIGRhdGEuLi4oMC8nICsgdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aCArICcpIHJlY29yZHMnO1xyXG4gICAgICAgIHRoaXMuYXN5bmNGb3JFYWNoUmVjb3JkSWQodGhpcy5jaGlsZEZsYXRMaXN0LCB0aGlzLmZldGNoUmVjb3JkSWQpLnRoZW4odGhpcy5kb25lKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5VHJlZSA9IFt0aGlzLnJvb3ROb2RlXTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yJywgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcignU2VydmVyIEVycm9yOiAnICsgZXguc3RhdHVzLCBbZXguZXJyb3IuTWVzc2FnZV0pKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2xvbmUgPSAoKSA9PiB7XHJcbiAgICBsZXQgY29waWVzID0gdGhpcy5zZWxlY3RlZE51bWJlck9mQ29waWVzLnZhbHVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3BpZXM7IGkrKykge1xyXG4gICAgICBsZXQgdGFibGVUeXBlID0gdGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICAgIGxldCBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0YWJsZVR5cGUsIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgIHRoaXMuZ2V0UHJvdG90eXBlUHJvcGVydGllcyh0aGlzLmVudGl0eSkuZm9yRWFjaCgocHJvcGVydHlOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eUlzQWxsb3dlZChwcm9wZXJ0eU5hbWUsIHRoaXMudGFibGVOYW1lKSkge1xyXG4gICAgICAgICAgbmV3RW50aXR5W3Byb3BlcnR5TmFtZSBhcyBPYmplY3RLZXldID0gdGhpcy5lbnRpdHlbcHJvcGVydHlOYW1lXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbmV3RW50aXR5LnNldFByb3BlcnR5ISgnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJywgdHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLnRyYXZlcnNlKHRoaXMuZGlzcGxheVRyZWVbMF0sIG5ld0VudGl0eSk7XHJcbiAgICAgIC8vdGhpcy52aWV3LmRhdGEuYWRkKG5ld0VudGl0eSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLndpbmRvd0V2ZW50SGFuZGxlci5jbG9zZSgpO1xyXG4gIH07XHJcblxyXG4gIG9uQ2FuY2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBvbkV4cGFuZENsaWNrZWQgPSAoKSA9PiB7XHJcblxyXG4gIH1cclxuICAgICBcclxuICBvbkNvbGxhcHNlQ2xpY2tlZCA9ICgpID0+IHtcclxuXHJcbiAgfVxyXG5cclxuICBvbk51bWJlck9mQ29waWVzQ2hhbmdlZCA9IChldmVudDogYW55KSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMudmlldy53aW5kb3cudGFibGVOYW1lO1xyXG4gICAgdGhpcy5lbnRpdGllcyA9IHRoaXMudmlldy5lbnRpdGllcyBhcyBhbnk7XHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMuZW50aXRpZXNbdGhpcy52aWV3LmVudGl0eUluZGV4XTtcclxuICAgIHRoaXMucm9vdE5vZGUgPSBuZXcgTm9kZShudWxsLCB0aGlzLnRhYmxlTmFtZSwgdGhpcy50YWJsZU5hbWUsIGZhbHNlLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlLCBudWxsLCBudWxsKTtcclxuICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnZpZXcud2luZG93LnRhYmxlTmFtZSk7XHJcbiAgICB0aGlzLmdldERhdGFGb3JDbG9uaW5nKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YVRyZWUubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuZmxhdExpc3QubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggPSAwO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgTm9kZSB7XHJcbiAgcmVmOiBudW1iZXIgfCBudWxsO1xyXG4gIHRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgY2hlY2tlZDogYm9vbGVhbjtcclxuICBjaGlsZDogYW55O1xyXG4gIGNoaWxkTm9kZXM6IGFueTtcclxuICBzaG93RW50aXRpZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXRoRnJvbVJvb3Q6IHN0cmluZyB8IG51bGw7XHJcbiAgbm9kZXM6IGFueTtcclxuICByb290OiBhbnk7XHJcbiAgcGFyZW50OiBhbnk7XHJcbiAgZW50aXR5OiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsLFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nLFxyXG4gICAgY2hpbGQ6IGFueSxcclxuICAgIGNoZWNrZWQ6IGJvb2xlYW4sXHJcbiAgICBjaGlsZEVudGl0aWVzOiBhbnksXHJcbiAgICBwYXRoRnJvbVJvb3Q6IHN0cmluZyB8IG51bGwsXHJcbiAgICByb290OiBib29sZWFuLFxyXG4gICAgcGFyZW50OiBhbnksXHJcbiAgICBlbnRpdHk6IGFueSkge1xyXG4gICAgdGhpcy5yZWYgPSByZWY7XHJcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRhYmxlTmFtZTtcclxuICAgIHRoaXMuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcclxuICAgIHRoaXMuY2hlY2tlZCA9IGNoZWNrZWQ7XHJcbiAgICB0aGlzLmNoaWxkID0gY2hpbGQ7XHJcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZEVudGl0aWVzO1xyXG4gICAgdGhpcy5wYXRoRnJvbVJvb3QgPSBwYXRoRnJvbVJvb3Q7XHJcbiAgICB0aGlzLnJvb3QgPSByb290O1xyXG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XHJcbiAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcclxuICB9XHJcblxyXG4gIG9uR3JvdXBEaXNwbGF5ID0gKCkgPT4ge1xyXG4gICAgdmFyIGN1cnJlbnRWYWx1ZSA9IHRoaXMuc2hvd0VudGl0aWVzID0gIXRoaXMuc2hvd0VudGl0aWVzO1xyXG4gICAgdGhpcy5ub2Rlcy5maW5kKChuOiBhbnkpID0+IHtcclxuICAgICAgbi5zaG93RW50aXRpZXMgPSBjdXJyZW50VmFsdWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tlZENoYW5nZWQgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5jaGVja2VkKSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkKSB7XHJcbiAgICAgICAgdmFyIHAgPSB0aGlzLnBhcmVudDtcclxuICAgICAgICB3aGlsZSAocCkge1xyXG4gICAgICAgICAgcC5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgIHAgPSBwLnBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5maW5kKChuOiBhbnkpID0+IHsgbi5jaGVja2VkID0gdHJ1ZTsgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkKSB7XHJcbiAgICAgICAgdmFyIGFsbFVuY2hlY2tlZCA9IHRoaXMucGFyZW50Lm5vZGVzLmV2ZXJ5KChuOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBuLmNoZWNrZWQgPT09IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChhbGxVbmNoZWNrZWQpXHJcbiAgICAgICAgICB0aGlzLnBhcmVudC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIHVuY2hlY2tDaGlsZE5vZGVzID0gKG5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbm9kZS5ub2Rlcy5maW5kKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdW5jaGVja0NoaWxkTm9kZXMobik7XHJcbiAgICAgICAgICAgIG4uY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm5vZGVzLmZpbmQoKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgdW5jaGVja0NoaWxkTm9kZXMobik7XHJcbiAgICAgICAgICBuLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdj5cclxuICA8dHJ1LXRvb2xiYXI+XHJcbiAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIidleHBhbmQtaWNvbidcIiBbdG9vbHRpcF09XCInRXhwYW5kJ1wiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgKG9uQ2xpY2spPVwib25FeHBhbmRDbGlja2VkKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ2NvbGxhcHNlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0NvbGxhcHNlJ1wiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgKG9uQ2xpY2spPVwib25Db2xsYXBzZUNsaWNrZWQoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgPHRydS10b29sYmFyLXRleHQgW3RleHRdPVwiJ0NvcGllczonXCI+PC90cnUtdG9vbGJhci10ZXh0PlxyXG4gICAgPHRydS10b29sYmFyLWRyb3Bkb3duIFtvcHRpb25zXT1cIm51bWJlck9mQ29waWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkT3B0aW9uKV09XCJzZWxlY3RlZE51bWJlck9mQ29waWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbk51bWJlck9mQ29waWVzQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICA8L3RydS10b29sYmFyLWRyb3Bkb3duPlxyXG4gIDwvdHJ1LXRvb2xiYXI+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kaWFsb2ctY29udGVudCBjbG9uZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNncm91cE5vZGVSZW5kZXJlciBsZXQtZGF0YT5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFkYXRhLmNoaWxkIHx8IGRhdGEuc2hvd0VudGl0aWVzXCJcclxuICAgICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLXRyZWUtZ3JvdXBcIj5cclxuICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJkYXRhLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0YS5vbkNoZWNrZWRDaGFuZ2VkKClcIlxyXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGF0YS5yb290XCJcclxuICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgLz5cclxuICAgICAgICA8YSAoY2xpY2spPVwiZGF0YS5vbkdyb3VwRGlzcGxheU5hbWVDbGlja2VkKClcIlxyXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2xvbmUtbW9kYWwtdHJlZS1ncm91cC1yb290LW5hbWUnOiBkYXRhLnJvb3QgfHwgZGF0YS5jaGlsZH1cIlxyXG4gICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbWF4LXdpZHRoJzogZGF0YS5jaGlsZE5vZGUgPyAnMzAwcHgnIDogJ2F1dG8nfVwiPnt7ZGF0YS5kaXNwbGF5TmFtZX19PC9hPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWRhdGEucm9vdCAmJiAhZGF0YS5jaGlsZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC10cmVlLWdyb3VwLWNvdW50XCI+KHt7ZGF0YS5ub2Rlcy5sZW5ndGh9fSk8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8dWw+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhdGEubm9kZXNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cE5vZGVSZW5kZXJlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZGF0YX1cIj48L2Rpdj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nTWVzc2FnZVwiXHJcbiAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtbG9hZGluZ1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImNsb25lLW1vZGFsLWxvYWRpbmctbWVzc2FnZVwiPnt7bG9hZGluZ01lc3NhZ2V9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRvbmVQcm9jZXNzaW5nXCJcclxuICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC10cmVlXCI+XHJcbiAgICAgIDx1bD5cclxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGlzcGxheVRyZWVcIj5cclxuICAgICAgICAgIDxkaXYgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cE5vZGVSZW5kZXJlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZGF0YX1cIj48L2Rpdj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kaWFsb2ctZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvbmUoKVwiIChrZXl1cC5lbnRlcik9XCJvbkNsb25lKClcIj5DbG9uZTwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -5637,7 +5637,7 @@ class TruCloneView extends TruViewBase {
5637
5637
  numberOfCopies;
5638
5638
  selectedNumberOfCopies;
5639
5639
  contextFilters = null;
5640
- rootNode = new Node(null, this.tableName, this.tableName, false, true, null, null, true, null, null);
5640
+ rootNode = null;
5641
5641
  ignorePropertyList = [
5642
5642
  'CreatedRef',
5643
5643
  'Created',
@@ -5715,7 +5715,7 @@ class TruCloneView extends TruViewBase {
5715
5715
  let propertyNames = Object.keys(currentEntity);
5716
5716
  let navigationPropertyNames = propertyNames.filter((n) => { return n.startsWith('o'); });
5717
5717
  let childNavigationPropertyNames = navigationPropertyNames.filter((n) => {
5718
- return childLookup.some((lookup) => { return 'o' + lookup.pluralTableName === n; });
5718
+ return childLookup.some((lookup) => { return lookup.name === n; });
5719
5719
  });
5720
5720
  let childProperties = [];
5721
5721
  childNavigationPropertyNames.filter(function (n) {
@@ -5849,6 +5849,7 @@ class TruCloneView extends TruViewBase {
5849
5849
  this.tableName = this.view.window.tableName;
5850
5850
  this.entities = this.view.entities;
5851
5851
  this.entity = this.entities[this.view.entityIndex];
5852
+ this.rootNode = new Node(null, this.tableName, this.tableName, false, true, null, null, true, null, null);
5852
5853
  this.setEntityDisplayValues(this.view.window.tableName);
5853
5854
  this.getDataForCloning();
5854
5855
  }