raain-app 1.5.36 → 1.5.37

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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.5.36] - 2025-09-12
11
+
10
12
  ### Changed
11
13
 
12
14
  - 24h period added for admin
@@ -1,5 +1,5 @@
1
1
  import { from, mergeMap, Subject, takeUntil, timer } from 'rxjs';
2
- import { CartesianMeasureValue, CartesianTools, } from 'raain-model';
2
+ import { CartesianMeasureValue, CartesianTools, RadarNode, } from 'raain-model';
3
3
  import { CartesianMapValue, TimeframeContainers } from 'raain-ui';
4
4
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
5
5
  export class RefreshManager {
@@ -121,7 +121,11 @@ export class RefreshManager {
121
121
  range: 'day',
122
122
  periodBegin: this._period.begin,
123
123
  });
124
- const progress = await this.profileService.getRainProgress(this.rainNode.id);
124
+ let progress = 0;
125
+ // Verify progress only for SimpleZone
126
+ if (this.rainNode.getLinks(RadarNode.TYPE).length <= 1) {
127
+ progress = await this.profileService.getRainProgress(this.rainNode.id);
128
+ }
125
129
  this.countsPeriod = {
126
130
  ...counts,
127
131
  progress,
@@ -256,4 +260,4 @@ export class RefreshManager {
256
260
  return values;
257
261
  }
258
262
  }
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmcmVzaE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvdG9vbHMvUmVmcmVzaE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUNILHFCQUFxQixFQUNyQixjQUFjLEdBSWpCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBQyxpQkFBaUIsRUFBc0IsbUJBQW1CLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFNcEYsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFaEYsTUFBTSxPQUFPLGNBQWM7SUFxQ3ZCLFlBQ2MsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsY0FBOEI7UUFGOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUV4QyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNoRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFJRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElB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b3J0IHtmcm9tLCBtZXJnZU1hcCwgU3ViamVjdCwgdGFrZVVudGlsLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIENhcnRlc2lhbk1lYXN1cmVWYWx1ZSxcbiAgICBDYXJ0ZXNpYW5Ub29scyxcbiAgICBJQ2FydGVzaWFuTWVhc3VyZVZhbHVlLFxuICAgIFJhaW5Db21wdXRhdGlvbk1hcCxcbiAgICBSYWluTm9kZSxcbn0gZnJvbSAncmFhaW4tbW9kZWwnO1xuaW1wb3J0IHtDYXJ0ZXNpYW5NYXBWYWx1ZSwgVGltZWZyYW1lQ29udGFpbmVyLCBUaW1lZnJhbWVDb250YWluZXJzfSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge1JhZGFyU2VydmljZX0gZnJvbSAnLi4vcmFkYXIuc2VydmljZSc7XG5pbXBvcnQge1Byb2ZpbGVTZXJ2aWNlfSBmcm9tICcuLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wYXJlTWFuYWdlcn0gZnJvbSAnLi9Db21wYXJlTWFuYWdlcic7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcblxuY29uc3Qgc2xlZXAgPSAobXM6IG51bWJlcikgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcblxuZXhwb3J0IGNsYXNzIFJlZnJlc2hNYW5hZ2VyIHtcbiAgICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwVmVyc2lvbjogc3RyaW5nO1xuICAgIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBEYXRlOiBEYXRlO1xuICAgIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBEb25lRGF0ZTogRGF0ZTtcbiAgICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwTGF1bmNoZWRCeTogc3RyaW5nO1xuICAgIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBUaW1lU3BlbnRJbk1zOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwT3JpZ2luYWxNaW46IG51bWJlcjtcbiAgICBwdWJsaWMgcmFpbkNvbXB1dGF0aW9uTWFwT3JpZ2luYWxNYXg6IG51bWJlcjtcblxuICAgIHB1YmxpYyBzdW1GbjogKGNhcnRlc2lhbk1hcFZhbHVlczogQ2FydGVzaWFuTWFwVmFsdWVbXSkgPT4gbnVtYmVyO1xuICAgIHB1YmxpYyBzdW1WYWx1ZXM6IENhcnRlc2lhbk1hcFZhbHVlW107XG5cbiAgICBwcm90ZWN0ZWQgY2xvc2VSZWZyZXNoVGltZXI6IFN1YmplY3Q8dW5rbm93bj47XG4gICAgcHJvdGVjdGVkIGNvdW50c1BlcmlvZDoge1xuICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgIHF1ZXVlUnVubmluZz86IG51bWJlcjtcbiAgICAgICAgcHJvZ3Jlc3M/OiBudW1iZXI7XG4gICAgfTtcbiAgICBwcm90ZWN0ZWQgdGltZWZyYW1lc0Zyb21SYWRhcnM6IEZyYW1lU2V0W107XG4gICAgcHJvdGVjdGVkIHRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQ6IEZyYW1lU2V0W107XG4gICAgcHJvdGVjdGVkIHRpbWVsaW5lU2VsZWN0ZWRGcmFtZVNldDogRnJhbWVTZXQ7XG4gICAgcHJvdGVjdGVkIHRpbWVmcmFtZURhdGVzOiBEYXRlW107XG4gICAgcHJvdGVjdGVkIGNhcnRlc2lhblRvb2xzOiBDYXJ0ZXNpYW5Ub29scztcbiAgICBwcm90ZWN0ZWQgcmVtb3ZlRHVwbGljYXRlOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBkYXRhSW50ZXJuYWw6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIG9uUmVmcmVzaEluUHJvZ3Jlc3M6IChcbiAgICAgICAgY291bnRQZXJpb2RzOiB7XG4gICAgICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgICAgICBxdWV1ZVJ1bm5pbmc/OiBudW1iZXI7XG4gICAgICAgICAgICBwcm9ncmVzcz86IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgdGltZWZyYW1lRGF0ZXM6IERhdGVbXVxuICAgICkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBwcm90ZWN0ZWQgb25SZWZyZXNoRG9uZTogKHRpbWVmcmFtZURhdGVzOiBEYXRlW10pID0+IFByb21pc2U8dm9pZD47XG4gICAgcHJvdGVjdGVkIG9uRmV0Y2hEb25lOiAodGltZWZyYW1lQ29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVycykgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmFkYXJTZXJ2aWNlOiBSYWRhclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBjb21wYXJlTWFuYWdlcjogQ29tcGFyZU1hbmFnZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5fcGVyaW9kID0ge2JlZ2luOiBuZXcgRGF0ZSgpLCBlbmQ6IG5ldyBEYXRlKCl9O1xuICAgICAgICB0aGlzLmNsb3NlUmVmcmVzaFRpbWVyID0gbmV3IFN1YmplY3Q8dW5rbm93bj4oKTtcbiAgICAgICAgdGhpcy5jYXJ0ZXNpYW5Ub29scyA9IG5ldyBDYXJ0ZXNpYW5Ub29scygpO1xuICAgICAgICB0aGlzLmNsZWFuQWxsKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWluTm9kZTogUmFpbk5vZGU7XG5cbiAgICBwdWJsaWMgZ2V0IHJhaW5Ob2RlKCk6IFJhaW5Ob2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JhaW5Ob2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgcmFpbk5vZGUocmFpbk5vZGU6IFJhaW5Ob2RlKSB7XG4gICAgICAgIHRoaXMuX3JhaW5Ob2RlID0gcmFpbk5vZGU7XG4gICAgICAgIHRoaXMuY2xlYW5BbGwoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3BlcmlvZDoge2JlZ2luOiBEYXRlOyBlbmQ6IERhdGV9O1xuXG4gICAgZ2V0IHBlcmlvZCgpOiB7YmVnaW46IERhdGU7IGVuZDogRGF0ZX0ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVyaW9kO1xuICAgIH1cblxuICAgIHNldCBwZXJpb2QocGVyaW9kOiB7YmVnaW46IERhdGU7IGVuZDogRGF0ZX0pIHtcbiAgICAgICAgdGhpcy5fcGVyaW9kLmJlZ2luID0gbmV3IERhdGUocGVyaW9kLmJlZ2luKTtcbiAgICAgICAgdGhpcy5fcGVyaW9kLmVuZCA9IG5ldyBEYXRlKHBlcmlvZC5lbmQpO1xuICAgICAgICB0aGlzLnJlZnJlc2hDb3VudHMoKS50aGVuKChpZ25vcmVkKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBEZWxheShtczogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZXRob2RzKFxuICAgICAgICBvblJlZnJlc2hJblByb2dyZXNzOiAoXG4gICAgICAgICAgICBjb3VudFBlcmlvZHM6IHtcbiAgICAgICAgICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgICAgICAgICAgcXVldWVSdW5uaW5nPzogbnVtYmVyO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpbWVmcmFtZURhdGVzOiBEYXRlW11cbiAgICAgICAgKSA9PiBQcm9taXNlPHZvaWQ+LFxuICAgICAgICBvblJlZnJlc2hEb25lOiAodGltZWZyYW1lRGF0ZXM6IERhdGVbXSkgPT4gUHJvbWlzZTx2b2lkPixcbiAgICAgICAgb25GZXRjaERvbmU6ICh0aW1lZnJhbWVDb250YWluZXJzOiBUaW1lZnJhbWVDb250YWluZXJzKSA9PiBQcm9taXNlPHZvaWQ+XG4gICAgKSB7XG4gICAgICAgIHRoaXMub25SZWZyZXNoSW5Qcm9ncmVzcyA9IG9uUmVmcmVzaEluUHJvZ3Jlc3M7XG4gICAgICAgIHRoaXMub25SZWZyZXNoRG9uZSA9IG9uUmVmcmVzaERvbmU7XG4gICAgICAgIHRoaXMub25GZXRjaERvbmUgPSBvbkZldGNoRG9uZTtcbiAgICB9XG5cbiAgICBjbGVhbkFsbCgpIHtcbiAgICAgICAgdGhpcy5jb3VudHNQZXJpb2QgPSB7cGVyY2VudEltYWdlczogW10sIHF1ZXVlUnVubmluZzogMCwgcHJvZ3Jlc3M6IDB9O1xuICAgICAgICB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzID0gW107XG4gICAgICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZCA9IFtdO1xuICAgICAgICB0aGlzLnRpbWVmcmFtZURhdGVzID0gW107XG4gICAgICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbG9zZVJlZnJlc2hUaW1lcj8ubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICBhc3luYyBmZXRjaChcbiAgICAgICAgZGF0ZVNob3duOiBEYXRlLFxuICAgICAgICB3aXRoR2F1Z2VzTWVhc3VyZXM6IGJvb2xlYW4sXG4gICAgICAgIGN1bXVsYXRpdmVIb3VycyA9IDBcbiAgICApOiBQcm9taXNlPEZyYW1lU2V0PiB7XG4gICAgICAgIC8vIHNldCB0aGUgdGFyZ2V0XG4gICAgICAgIGNvbnN0IGN1cnJlbnRzID0gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkLmZpbHRlcihcbiAgICAgICAgICAgICh0KSA9PiB0LmRhdGUuZ2V0VGltZSgpID09PSBkYXRlU2hvd24uZ2V0VGltZSgpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjdXJyZW50cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGJ1aWxkIGN1cnJlbnQgRnJhbWVzZXRcbiAgICAgICAgY29uc3QgY3VycmVudDogRnJhbWVTZXQgPSBjdXJyZW50c1swXTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0ge1xuICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgIHdpdGhHYXVnZTogd2l0aEdhdWdlc01lYXN1cmVzLFxuICAgICAgICAgICAgY3VtdWxhdGl2ZUhvdXJzOiBjdW11bGF0aXZlSG91cnMsXG4gICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHRoaXMuZ2V0UmFpbkNvbXB1dGF0aW9uUXVhbGl0eVRhcmdldChjdXJyZW50KSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0aW1lZnJhbWVDb250YWluZXJzID0gYXdhaXQgdGhpcy5yZWZyZXNoTWFwVGltZWZyYW1lQ29udGFpbmVycyh0YXJnZXQpO1xuXG4gICAgICAgIHRoaXMub25GZXRjaERvbmUodGltZWZyYW1lQ29udGFpbmVycylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMucmVmcmVzaENvbXBhcmVRdWFsaXR5KGN1cnJlbnQpKVxuICAgICAgICAgICAgLnRoZW4oKGlnbm9yZWQpID0+IHt9KTsgLy8gTk8gU3luY1xuXG4gICAgICAgIHRoaXMudGltZWxpbmVTZWxlY3RlZEZyYW1lU2V0ID0gY3VycmVudDtcbiAgICB9XG5cbiAgICBnZXRUaW1lbGluZUZyYW1lU2V0KCk6IEZyYW1lU2V0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycztcbiAgICB9XG5cbiAgICBnZXRUaW1lbGluZVNlbGVjdGVkRnJhbWVTZXQoKTogRnJhbWVTZXQge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lbGluZVNlbGVjdGVkRnJhbWVTZXQ7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVmcmVzaChsYXVuY2hRdWFsaXR5QWZ0ZXI6IGJvb2xlYW4sIGRhdGFJbnRlcm5hbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNoZWNrUGVyaW9kKCk7XG5cbiAgICAgICAgdGhpcy5kYXRhSW50ZXJuYWwgPSBkYXRhSW50ZXJuYWw7XG5cbiAgICAgICAgY29uc3QgYXN5bmNEb25lID0gKGVycm9yPzogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBpbiByZWZyZXNoJywgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jbG9zZVJlZnJlc2hUaW1lci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgdGhpcy5vblJlZnJlc2hEb25lKHRoaXMudGltZWZyYW1lRGF0ZXMpLnRoZW4oKF9pZ25vcmVkKSA9PiB7fSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYXN5bmNSZWZyZXNoID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJlZnJlc2hJblByb2dyZXNzKGF3YWl0IHRoaXMucmVmcmVzaENvdW50cygpLCB0aGlzLnRpbWVmcmFtZURhdGVzKS50aGVuKFxuICAgICAgICAgICAgICAgIChfaWdub3JlZCkgPT4ge31cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBkb25lID0gYXdhaXQgdGhpcy5yZWZyZXNoUGVyaW9kSW5zaWRlUG9sbGluZygpO1xuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgICBhc3luY0RvbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aW1lcigxMDAwLCAxMDAwMCkgLy8gV2FpdCAxcywgdGhlbiBldmVyeSAxMHNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IGZyb20oYXN5bmNSZWZyZXNoKCkpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jbG9zZVJlZnJlc2hUaW1lcilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IGFzeW5jRG9uZShKU09OLnN0cmluZ2lmeShlcnJvcikpLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0UmVtb3ZlRHVwbGljYXRlKGI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5yZW1vdmVEdXBsaWNhdGUgPSBiO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRSZXBvcnRQZXJpb2QoZGF0ZTogRGF0ZSkge1xuICAgICAgICBsZXQgdmFsdWVzOiBDYXJ0ZXNpYW5NYXBWYWx1ZVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZnJhbWVTZXQgb2YgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycykge1xuICAgICAgICAgICAgaWYgKGZyYW1lU2V0LmRhdGUuZ2V0VGltZSgpICE9PSBkYXRlLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWVzID0gdmFsdWVzLmNvbmNhdChhd2FpdCB0aGlzLmdldFZhbHVlcyhmcmFtZVNldCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdW1GbiA9IChjYXJ0ZXNpYW5NYXBWYWx1ZXM6IENhcnRlc2lhbk1hcFZhbHVlW10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYXJ0ZXNpYW5NYXBWYWx1ZXMucmVkdWNlKChwLCB2KSA9PiBwICsgKHYudmFsdWUgKiA1KSAvIDYwLCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zdW1WYWx1ZXMgPSB2YWx1ZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNoZWNrUGVyaW9kKCkge1xuICAgICAgICBpZiAodGhpcy5wZXJpb2QuYmVnaW4uZ2V0VGltZSgpID09PSB0aGlzLnBlcmlvZC5lbmQuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25lZWQgYSBwZXJpb2QnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyByZWZyZXNoQ291bnRzKCkge1xuICAgICAgICBpZiAoIXRoaXMucmFpbk5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvdW50c1BlcmlvZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvdW50cyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0Q291bnRzKHRoaXMucmFpbk5vZGUuaWQsIHtcbiAgICAgICAgICAgIHJhbmdlOiAnZGF5JyxcbiAgICAgICAgICAgIHBlcmlvZEJlZ2luOiB0aGlzLl9wZXJpb2QuYmVnaW4sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHByb2dyZXNzID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRSYWluUHJvZ3Jlc3ModGhpcy5yYWluTm9kZS5pZCk7XG4gICAgICAgIHRoaXMuY291bnRzUGVyaW9kID0ge1xuICAgICAgICAgICAgLi4uY291bnRzLFxuICAgICAgICAgICAgcHJvZ3Jlc3MsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRzUGVyaW9kO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRSYWluQ29tcHV0YXRpb25RdWFsaXR5VGFyZ2V0KGZyYW1lc2V0OiBGcmFtZVNldCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChmcmFtZXNldC5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyYW1lc2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdGllc1swXS5pZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaFBlcmlvZEluc2lkZVBvbGxpbmcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkb25lID0gYXdhaXQgdGhpcy5yZWZyZXNoQ2hlY2tJZkRvbmUoKTtcblxuICAgICAgICAgICAgLy8gYmVoaW5kIHJlZnJlc2hcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFRpbWVmcmFtZXNGcm9tUmFkYXJzKGRvbmUpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoR2xvYmFsQ29tcGFyZVJlcG9ydChkb25lKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRvbmU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hDaGVja0lmRG9uZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgYXdhaXQgc2xlZXAoMjAwMCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50c1BlcmlvZC5wcm9ncmVzcyA9PT0gMDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaFRpbWVmcmFtZXNGcm9tUmFkYXJzKGRvbmU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFkb25lIHx8ICF0aGlzLnJhaW5Ob2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYmVnaW5FeHRlbmRlZCA9IG5ldyBEYXRlKHRoaXMucGVyaW9kLmJlZ2luKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZEV4dGVuZGVkID0gbmV3IERhdGUodGhpcy5wZXJpb2QuZW5kKTtcbiAgICAgICAgICAgIGJlZ2luRXh0ZW5kZWQuc2V0TWludXRlcyhiZWdpbkV4dGVuZGVkLmdldE1pbnV0ZXMoKSAtIDcpO1xuICAgICAgICAgICAgZW5kRXh0ZW5kZWQuc2V0TWludXRlcyhlbmRFeHRlbmRlZC5nZXRNaW51dGVzKCkgKyA3KTtcbiAgICAgICAgICAgIHRoaXMucmFpbk5vZGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFJhaW5UaW1lZnJhbWUoXG4gICAgICAgICAgICAgICAgdGhpcy5yYWluTm9kZS5pZCxcbiAgICAgICAgICAgICAgICBiZWdpbkV4dGVuZGVkLFxuICAgICAgICAgICAgICAgIGVuZEV4dGVuZGVkLFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUludGVybmFsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQgPSBhd2FpdCB0aGlzLnJhZGFyU2VydmljZS5nZXRUaW1lbGluZSh0aGlzLnJhaW5Ob2RlKTtcbiAgICAgICAgICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnMgPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWRcbiAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZnJhbWVTZXQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcmlvZC5iZWdpbi5nZXRUaW1lKCkgPD0gZnJhbWVTZXQuZGF0ZS5nZXRUaW1lKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lU2V0LmRhdGUuZ2V0VGltZSgpIDw9IHRoaXMucGVyaW9kLmVuZC5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuZGF0ZS5nZXRUaW1lKCkgLSBiLmRhdGUuZ2V0VGltZSgpKTtcblxuICAgICAgICAgICAgdGhpcy50aW1lZnJhbWVEYXRlcyA9IHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnMubWFwKChmcmFtZVNldCkgPT4gZnJhbWVTZXQuZGF0ZSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZDonLCB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3RpbWVmcmFtZURhdGVzOicsIHRoaXMudGltZWZyYW1lRGF0ZXMpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFycztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcigncmVmcmVzaFRpbWVmcmFtZXNGcm9tUmFkYXJzJywgZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hHbG9iYWxDb21wYXJlUmVwb3J0KGRvbmU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0cyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBmcmFtZVNldCBvZiB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZyYW1lU2V0KSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmRhdGUgPSBuZXcgRGF0ZSh0YXJnZXQuZGF0ZSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZCA9IHRoaXMuZ2V0UmFpbkNvbXB1dGF0aW9uUXVhbGl0eVRhcmdldChmcmFtZVNldCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0cy5wdXNoKHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnJlZnJlc2hHbG9iYWxDb21wYXJlUXVhbGl0eSh0YXJnZXRzLCAhdGhpcy5yZW1vdmVEdXBsaWNhdGUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdyZWZyZXNoR2xvYmFsQ29tcGFyZVJlcG9ydCcsIGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hNYXBUaW1lZnJhbWVDb250YWluZXJzKHRhcmdldDoge1xuICAgICAgICBkYXRlOiBEYXRlO1xuICAgICAgICByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nO1xuICAgICAgICB3aXRoR2F1Z2U6IGJvb2xlYW47XG4gICAgICAgIGN1bXVsYXRpdmVIb3VyczogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgaWYgKCF0YXJnZXQ/LnJhaW5Db21wdXRhdGlvbklkKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYFBiIHdpdGggcmVmcmVzaE1hcFRpbWVmcmFtZUNvbnRhaW5lcnMgaW5zaWdodHMgJHt0YXJnZXQuZGF0ZS50b0lTT1N0cmluZygpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYWluTm9kZSA9IHRoaXMucmFpbk5vZGU7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcnM6IFRpbWVmcmFtZUNvbnRhaW5lcltdID0gW107XG4gICAgICAgIGNvbnN0IG5ld0NyZWF0ZWRUaW1lZnJhbWVDb250YWluZXJzID0gbmV3IFRpbWVmcmFtZUNvbnRhaW5lcnMoY29udGFpbmVycyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcmFpbk5vZGVDYXJ0ZXNpYW5NYXA6IFJhaW5Db21wdXRhdGlvbk1hcDtcblxuICAgICAgICAgICAgaWYgKCF0YXJnZXQuY3VtdWxhdGl2ZUhvdXJzKSB7XG4gICAgICAgICAgICAgICAgcmFpbk5vZGVDYXJ0ZXNpYW5NYXAgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFJhaW5Db21wdXRhdGlvbkNhcnRlc2lhbk1hcEJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIHJhaW5Ob2RlLmlkLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucmFpbkNvbXB1dGF0aW9uSWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByYWluTm9kZUNhcnRlc2lhbk1hcCA9XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UmFpbkNvbXB1dGF0aW9uQ3VtdWxhdGl2ZU1hcEJ5SWQoXG4gICAgICAgICAgICAgICAgICAgICAgICByYWluTm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5yYWluQ29tcHV0YXRpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5jdW11bGF0aXZlSG91cnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJhaW5Ob2RlQ2FydGVzaWFuTWFwKSB7XG4gICAgICAgICAgICAgICAgbmV3Q3JlYXRlZFRpbWVmcmFtZUNvbnRhaW5lcnMuYWRkRnJvbVJhaW5Db21wdXRhdGlvbk1hcChcbiAgICAgICAgICAgICAgICAgICAgcmFpbk5vZGVDYXJ0ZXNpYW5NYXAsXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwVmVyc2lvbiA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLnZlcnNpb247XG4gICAgICAgICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBEYXRlID0gbmV3IERhdGUocmFpbk5vZGVDYXJ0ZXNpYW5NYXAuZGF0ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBEb25lRGF0ZSA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmlzRG9uZURhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBMYXVuY2hlZEJ5ID0gcmFpbk5vZGVDYXJ0ZXNpYW5NYXAubGF1bmNoZWRCeTtcbiAgICAgICAgICAgICAgICB0aGlzLnJhaW5Db21wdXRhdGlvbk1hcFRpbWVTcGVudEluTXMgPSByYWluTm9kZUNhcnRlc2lhbk1hcC50aW1lU3BlbnRJbk1zO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBPcmlnaW5hbE1pbiA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLm9yaWdpbmFsREJaTWluO1xuICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwT3JpZ2luYWxNYXggPSByYWluTm9kZUNhcnRlc2lhbk1hcC5vcmlnaW5hbERCWk1heDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYiB3aXRoIGNvbXB1dGF0aW9ucyBmb3IgaWQ6JywgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkLCBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdDcmVhdGVkVGltZWZyYW1lQ29udGFpbmVycztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaENvbXBhcmVRdWFsaXR5KGZyYW1lU2V0OiBGcmFtZVNldCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnJlZnJlc2hDb21wYXJlUXVhbGl0eShmcmFtZVNldCk7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tcGFyZU1hbmFnZXIuc2V0R2F1Z2VzSW5Db21wYXJlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGdldFZhbHVlcyh0YXJnZXQ6IEZyYW1lU2V0KTogUHJvbWlzZTxDYXJ0ZXNpYW5NYXBWYWx1ZVtdPiB7XG4gICAgICAgIGlmICghdGFyZ2V0Py5yYWluQ29tcHV0YXRpb25JZCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBQYiB3aXRoIHRhcmdldCBpbnNpZ2h0cyAke3RhcmdldD8uZGF0ZS50b0lTT1N0cmluZygpfWApO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlczogQ2FydGVzaWFuTWFwVmFsdWVbXSA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmFpbk5vZGVDYXJ0ZXNpYW5NYXAgPVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UmFpbkNvbXB1dGF0aW9uQ2FydGVzaWFuTWFwQnlJZChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yYWluTm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHJhaW5Ob2RlQ2FydGVzaWFuTWFwKSB7XG4gICAgICAgICAgICAgICAgcmFpbk5vZGVDYXJ0ZXNpYW5NYXAuZ2V0TWFwRGF0YSgpLmZvckVhY2goKG0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG0udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAobS52YWx1ZXMgYXMgSUNhcnRlc2lhbk1lYXN1cmVWYWx1ZVtdKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FydGVzaWFuTWVhc3VyZVZhbHVlID0gQ2FydGVzaWFuTWVhc3VyZVZhbHVlLkZyb20odik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gdmFsdWVzLmNvbmNhdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FydGVzaWFuTWFwVmFsdWUuRnJvbShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbk1lYXN1cmVWYWx1ZS5nZXRDYXJ0ZXNpYW5WYWx1ZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FydGVzaWFuVG9vbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BiIHdpdGggY29tcHV0YXRpb25zIGZvciBpZDonLCB0YXJnZXQucmFpbkNvbXB1dGF0aW9uSWQsIGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG59XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmcmVzaE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvdG9vbHMvUmVmcmVzaE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUNILHFCQUFxQixFQUNyQixjQUFjLEVBRWQsU0FBUyxHQUdaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBQyxpQkFBaUIsRUFBc0IsbUJBQW1CLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFNcEYsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFaEYsTUFBTSxPQUFPLGNBQWM7SUFxQ3ZCLFlBQ2MsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsY0FBOEI7UUFGOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUV4QyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNoRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFJRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FB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QUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDN0U7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZyYW1lU2V0fSBmcm9tICcuL0ZyYW1lU2V0JztcbmltcG9ydCB7ZnJvbSwgbWVyZ2VNYXAsIFN1YmplY3QsIHRha2VVbnRpbCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBDYXJ0ZXNpYW5NZWFzdXJlVmFsdWUsXG4gICAgQ2FydGVzaWFuVG9vbHMsXG4gICAgSUNhcnRlc2lhbk1lYXN1cmVWYWx1ZSxcbiAgICBSYWRhck5vZGUsXG4gICAgUmFpbkNvbXB1dGF0aW9uTWFwLFxuICAgIFJhaW5Ob2RlLFxufSBmcm9tICdyYWFpbi1tb2RlbCc7XG5pbXBvcnQge0NhcnRlc2lhbk1hcFZhbHVlLCBUaW1lZnJhbWVDb250YWluZXIsIFRpbWVmcmFtZUNvbnRhaW5lcnN9IGZyb20gJ3JhYWluLXVpJztcbmltcG9ydCB7UmFkYXJTZXJ2aWNlfSBmcm9tICcuLi9yYWRhci5zZXJ2aWNlJztcbmltcG9ydCB7UHJvZmlsZVNlcnZpY2V9IGZyb20gJy4uL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge0NvbXBhcmVNYW5hZ2VyfSBmcm9tICcuL0NvbXBhcmVNYW5hZ2VyJztcbmltcG9ydCB7WFlUeXBlfSBmcm9tICcuLi94eXR5cGUnO1xuXG5jb25zdCBzbGVlcCA9IChtczogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuXG5leHBvcnQgY2xhc3MgUmVmcmVzaE1hbmFnZXIge1xuICAgIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBWZXJzaW9uOiBzdHJpbmc7XG4gICAgcHVibGljIHJhaW5Db21wdXRhdGlvbk1hcERhdGU6IERhdGU7XG4gICAgcHVibGljIHJhaW5Db21wdXRhdGlvbk1hcERvbmVEYXRlOiBEYXRlO1xuICAgIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBMYXVuY2hlZEJ5OiBzdHJpbmc7XG4gICAgcHVibGljIHJhaW5Db21wdXRhdGlvbk1hcFRpbWVTcGVudEluTXM6IG51bWJlcjtcblxuICAgIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBPcmlnaW5hbE1pbjogbnVtYmVyO1xuICAgIHB1YmxpYyByYWluQ29tcHV0YXRpb25NYXBPcmlnaW5hbE1heDogbnVtYmVyO1xuXG4gICAgcHVibGljIHN1bUZuOiAoY2FydGVzaWFuTWFwVmFsdWVzOiBDYXJ0ZXNpYW5NYXBWYWx1ZVtdKSA9PiBudW1iZXI7XG4gICAgcHVibGljIHN1bVZhbHVlczogQ2FydGVzaWFuTWFwVmFsdWVbXTtcblxuICAgIHByb3RlY3RlZCBjbG9zZVJlZnJlc2hUaW1lcjogU3ViamVjdDx1bmtub3duPjtcbiAgICBwcm90ZWN0ZWQgY291bnRzUGVyaW9kOiB7XG4gICAgICAgIHBlcmNlbnRJbWFnZXM/OiBYWVR5cGVbXTtcbiAgICAgICAgcXVldWVSdW5uaW5nPzogbnVtYmVyO1xuICAgICAgICBwcm9ncmVzcz86IG51bWJlcjtcbiAgICB9O1xuICAgIHByb3RlY3RlZCB0aW1lZnJhbWVzRnJvbVJhZGFyczogRnJhbWVTZXRbXTtcbiAgICBwcm90ZWN0ZWQgdGltZWZyYW1lc0Zyb21SYWRhcnNFeHRlbmRlZDogRnJhbWVTZXRbXTtcbiAgICBwcm90ZWN0ZWQgdGltZWxpbmVTZWxlY3RlZEZyYW1lU2V0OiBGcmFtZVNldDtcbiAgICBwcm90ZWN0ZWQgdGltZWZyYW1lRGF0ZXM6IERhdGVbXTtcbiAgICBwcm90ZWN0ZWQgY2FydGVzaWFuVG9vbHM6IENhcnRlc2lhblRvb2xzO1xuICAgIHByb3RlY3RlZCByZW1vdmVEdXBsaWNhdGU6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIGRhdGFJbnRlcm5hbDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgb25SZWZyZXNoSW5Qcm9ncmVzczogKFxuICAgICAgICBjb3VudFBlcmlvZHM6IHtcbiAgICAgICAgICAgIHBlcmNlbnRJbWFnZXM/OiBYWVR5cGVbXTtcbiAgICAgICAgICAgIHF1ZXVlUnVubmluZz86IG51bWJlcjtcbiAgICAgICAgICAgIHByb2dyZXNzPzogbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB0aW1lZnJhbWVEYXRlczogRGF0ZVtdXG4gICAgKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAgIHByb3RlY3RlZCBvblJlZnJlc2hEb25lOiAodGltZWZyYW1lRGF0ZXM6IERhdGVbXSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBwcm90ZWN0ZWQgb25GZXRjaERvbmU6ICh0aW1lZnJhbWVDb250YWluZXJzOiBUaW1lZnJhbWVDb250YWluZXJzKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCByYWRhclNlcnZpY2U6IFJhZGFyU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGNvbXBhcmVNYW5hZ2VyOiBDb21wYXJlTWFuYWdlclxuICAgICkge1xuICAgICAgICB0aGlzLl9wZXJpb2QgPSB7YmVnaW46IG5ldyBEYXRlKCksIGVuZDogbmV3IERhdGUoKX07XG4gICAgICAgIHRoaXMuY2xvc2VSZWZyZXNoVGltZXIgPSBuZXcgU3ViamVjdDx1bmtub3duPigpO1xuICAgICAgICB0aGlzLmNhcnRlc2lhblRvb2xzID0gbmV3IENhcnRlc2lhblRvb2xzKCk7XG4gICAgICAgIHRoaXMuY2xlYW5BbGwoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3JhaW5Ob2RlOiBSYWluTm9kZTtcblxuICAgIHB1YmxpYyBnZXQgcmFpbk5vZGUoKTogUmFpbk5vZGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmFpbk5vZGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCByYWluTm9kZShyYWluTm9kZTogUmFpbk5vZGUpIHtcbiAgICAgICAgdGhpcy5fcmFpbk5vZGUgPSByYWluTm9kZTtcbiAgICAgICAgdGhpcy5jbGVhbkFsbCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcGVyaW9kOiB7YmVnaW46IERhdGU7IGVuZDogRGF0ZX07XG5cbiAgICBnZXQgcGVyaW9kKCk6IHtiZWdpbjogRGF0ZTsgZW5kOiBEYXRlfSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJpb2Q7XG4gICAgfVxuXG4gICAgc2V0IHBlcmlvZChwZXJpb2Q6IHtiZWdpbjogRGF0ZTsgZW5kOiBEYXRlfSkge1xuICAgICAgICB0aGlzLl9wZXJpb2QuYmVnaW4gPSBuZXcgRGF0ZShwZXJpb2QuYmVnaW4pO1xuICAgICAgICB0aGlzLl9wZXJpb2QuZW5kID0gbmV3IERhdGUocGVyaW9kLmVuZCk7XG4gICAgICAgIHRoaXMucmVmcmVzaENvdW50cygpLnRoZW4oKGlnbm9yZWQpID0+IHt9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIERlbGF5KG1zOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldE1ldGhvZHMoXG4gICAgICAgIG9uUmVmcmVzaEluUHJvZ3Jlc3M6IChcbiAgICAgICAgICAgIGNvdW50UGVyaW9kczoge1xuICAgICAgICAgICAgICAgIHBlcmNlbnRJbWFnZXM/OiBYWVR5cGVbXTtcbiAgICAgICAgICAgICAgICBxdWV1ZVJ1bm5pbmc/OiBudW1iZXI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGltZWZyYW1lRGF0ZXM6IERhdGVbXVxuICAgICAgICApID0+IFByb21pc2U8dm9pZD4sXG4gICAgICAgIG9uUmVmcmVzaERvbmU6ICh0aW1lZnJhbWVEYXRlczogRGF0ZVtdKSA9PiBQcm9taXNlPHZvaWQ+LFxuICAgICAgICBvbkZldGNoRG9uZTogKHRpbWVmcmFtZUNvbnRhaW5lcnM6IFRpbWVmcmFtZUNvbnRhaW5lcnMpID0+IFByb21pc2U8dm9pZD5cbiAgICApIHtcbiAgICAgICAgdGhpcy5vblJlZnJlc2hJblByb2dyZXNzID0gb25SZWZyZXNoSW5Qcm9ncmVzcztcbiAgICAgICAgdGhpcy5vblJlZnJlc2hEb25lID0gb25SZWZyZXNoRG9uZTtcbiAgICAgICAgdGhpcy5vbkZldGNoRG9uZSA9IG9uRmV0Y2hEb25lO1xuICAgIH1cblxuICAgIGNsZWFuQWxsKCkge1xuICAgICAgICB0aGlzLmNvdW50c1BlcmlvZCA9IHtwZXJjZW50SW1hZ2VzOiBbXSwgcXVldWVSdW5uaW5nOiAwLCBwcm9ncmVzczogMH07XG4gICAgICAgIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnMgPSBbXTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkID0gW107XG4gICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5yZW1vdmVEdXBsaWNhdGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsb3NlUmVmcmVzaFRpbWVyPy5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoKFxuICAgICAgICBkYXRlU2hvd246IERhdGUsXG4gICAgICAgIHdpdGhHYXVnZXNNZWFzdXJlczogYm9vbGVhbixcbiAgICAgICAgY3VtdWxhdGl2ZUhvdXJzID0gMFxuICAgICk6IFByb21pc2U8RnJhbWVTZXQ+IHtcbiAgICAgICAgLy8gc2V0IHRoZSB0YXJnZXRcbiAgICAgICAgY29uc3QgY3VycmVudHMgPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQuZmlsdGVyKFxuICAgICAgICAgICAgKHQpID0+IHQuZGF0ZS5nZXRUaW1lKCkgPT09IGRhdGVTaG93bi5nZXRUaW1lKClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGN1cnJlbnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYnVpbGQgY3VycmVudCBGcmFtZXNldFxuICAgICAgICBjb25zdCBjdXJyZW50OiBGcmFtZVNldCA9IGN1cnJlbnRzWzBdO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSB7XG4gICAgICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICAgICAgd2l0aEdhdWdlOiB3aXRoR2F1Z2VzTWVhc3VyZXMsXG4gICAgICAgICAgICBjdW11bGF0aXZlSG91cnM6IGN1bXVsYXRpdmVIb3VycyxcbiAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogdGhpcy5nZXRSYWluQ29tcHV0YXRpb25RdWFsaXR5VGFyZ2V0KGN1cnJlbnQpLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpbWVmcmFtZUNvbnRhaW5lcnMgPSBhd2FpdCB0aGlzLnJlZnJlc2hNYXBUaW1lZnJhbWVDb250YWluZXJzKHRhcmdldCk7XG5cbiAgICAgICAgdGhpcy5vbkZldGNoRG9uZSh0aW1lZnJhbWVDb250YWluZXJzKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5yZWZyZXNoQ29tcGFyZVF1YWxpdHkoY3VycmVudCkpXG4gICAgICAgICAgICAudGhlbigoaWdub3JlZCkgPT4ge30pOyAvLyBOTyBTeW5jXG5cbiAgICAgICAgdGhpcy50aW1lbGluZVNlbGVjdGVkRnJhbWVTZXQgPSBjdXJyZW50O1xuICAgIH1cblxuICAgIGdldFRpbWVsaW5lRnJhbWVTZXQoKTogRnJhbWVTZXRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzO1xuICAgIH1cblxuICAgIGdldFRpbWVsaW5lU2VsZWN0ZWRGcmFtZVNldCgpOiBGcmFtZVNldCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVsaW5lU2VsZWN0ZWRGcmFtZVNldDtcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoKGxhdW5jaFF1YWxpdHlBZnRlcjogYm9vbGVhbiwgZGF0YUludGVybmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY2hlY2tQZXJpb2QoKTtcblxuICAgICAgICB0aGlzLmRhdGFJbnRlcm5hbCA9IGRhdGFJbnRlcm5hbDtcblxuICAgICAgICBjb25zdCBhc3luY0RvbmUgPSAoZXJyb3I/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIGluIHJlZnJlc2gnLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNsb3NlUmVmcmVzaFRpbWVyLm5leHQobnVsbCk7XG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaERvbmUodGhpcy50aW1lZnJhbWVEYXRlcykudGhlbigoX2lnbm9yZWQpID0+IHt9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBhc3luY1JlZnJlc2ggPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaEluUHJvZ3Jlc3MoYXdhaXQgdGhpcy5yZWZyZXNoQ291bnRzKCksIHRoaXMudGltZWZyYW1lRGF0ZXMpLnRoZW4oXG4gICAgICAgICAgICAgICAgKF9pZ25vcmVkKSA9PiB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGRvbmUgPSBhd2FpdCB0aGlzLnJlZnJlc2hQZXJpb2RJbnNpZGVQb2xsaW5nKCk7XG4gICAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgICAgIGFzeW5jRG9uZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHRpbWVyKDEwMDAsIDEwMDAwKSAvLyBXYWl0IDFzLCB0aGVuIGV2ZXJ5IDEwc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gZnJvbShhc3luY1JlZnJlc2goKSkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNsb3NlUmVmcmVzaFRpbWVyKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gYXN5bmNEb25lKEpTT04uc3RyaW5naWZ5KGVycm9yKSksXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRSZW1vdmVEdXBsaWNhdGUoYjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnJlbW92ZUR1cGxpY2F0ZSA9IGI7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFJlcG9ydFBlcmlvZChkYXRlOiBEYXRlKSB7XG4gICAgICAgIGxldCB2YWx1ZXM6IENhcnRlc2lhbk1hcFZhbHVlW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBmcmFtZVNldCBvZiB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzKSB7XG4gICAgICAgICAgICBpZiAoZnJhbWVTZXQuZGF0ZS5nZXRUaW1lKCkgIT09IGRhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KGF3YWl0IHRoaXMuZ2V0VmFsdWVzKGZyYW1lU2V0KSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN1bUZuID0gKGNhcnRlc2lhbk1hcFZhbHVlczogQ2FydGVzaWFuTWFwVmFsdWVbXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhcnRlc2lhbk1hcFZhbHVlcy5yZWR1Y2UoKHAsIHYpID0+IHAgKyAodi52YWx1ZSAqIDUpIC8gNjAsIDApO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnN1bVZhbHVlcyA9IHZhbHVlcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2hlY2tQZXJpb2QoKSB7XG4gICAgICAgIGlmICh0aGlzLnBlcmlvZC5iZWdpbi5nZXRUaW1lKCkgPT09IHRoaXMucGVyaW9kLmVuZC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbmVlZCBhIHBlcmlvZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hDb3VudHMoKSB7XG4gICAgICAgIGlmICghdGhpcy5yYWluTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY291bnRzUGVyaW9kO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY291bnRzID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRDb3VudHModGhpcy5yYWluTm9kZS5pZCwge1xuICAgICAgICAgICAgcmFuZ2U6ICdkYXknLFxuICAgICAgICAgICAgcGVyaW9kQmVnaW46IHRoaXMuX3BlcmlvZC5iZWdpbixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHByb2dyZXNzID0gMDtcblxuICAgICAgICAvLyBWZXJpZnkgcHJvZ3Jlc3Mgb25seSBmb3IgU2ltcGxlWm9uZVxuICAgICAgICBpZiAodGhpcy5yYWluTm9kZS5nZXRMaW5rcyhSYWRhck5vZGUuVFlQRSkubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgIHByb2dyZXNzID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRSYWluUHJvZ3Jlc3ModGhpcy5yYWluTm9kZS5pZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvdW50c1BlcmlvZCA9IHtcbiAgICAgICAgICAgIC4uLmNvdW50cyxcbiAgICAgICAgICAgIHByb2dyZXNzLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50c1BlcmlvZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UmFpbkNvbXB1dGF0aW9uUXVhbGl0eVRhcmdldChmcmFtZXNldDogRnJhbWVTZXQpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZnJhbWVzZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmcmFtZXNldC5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbMF0uaWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hQZXJpb2RJbnNpZGVQb2xsaW5nKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZG9uZSA9IGF3YWl0IHRoaXMucmVmcmVzaENoZWNrSWZEb25lKCk7XG5cbiAgICAgICAgICAgIC8vIGJlaGluZCByZWZyZXNoXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hUaW1lZnJhbWVzRnJvbVJhZGFycyhkb25lKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEdsb2JhbENvbXBhcmVSZXBvcnQoZG9uZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkb25lO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyByZWZyZXNoQ2hlY2tJZkRvbmUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGF3YWl0IHNsZWVwKDIwMDApO1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudHNQZXJpb2QucHJvZ3Jlc3MgPT09IDA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hUaW1lZnJhbWVzRnJvbVJhZGFycyhkb25lOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghZG9uZSB8fCAhdGhpcy5yYWluTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJlZ2luRXh0ZW5kZWQgPSBuZXcgRGF0ZSh0aGlzLnBlcmlvZC5iZWdpbik7XG4gICAgICAgICAgICBjb25zdCBlbmRFeHRlbmRlZCA9IG5ldyBEYXRlKHRoaXMucGVyaW9kLmVuZCk7XG4gICAgICAgICAgICBiZWdpbkV4dGVuZGVkLnNldE1pbnV0ZXMoYmVnaW5FeHRlbmRlZC5nZXRNaW51dGVzKCkgLSA3KTtcbiAgICAgICAgICAgIGVuZEV4dGVuZGVkLnNldE1pbnV0ZXMoZW5kRXh0ZW5kZWQuZ2V0TWludXRlcygpICsgNyk7XG4gICAgICAgICAgICB0aGlzLnJhaW5Ob2RlID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRSYWluVGltZWZyYW1lKFxuICAgICAgICAgICAgICAgIHRoaXMucmFpbk5vZGUuaWQsXG4gICAgICAgICAgICAgICAgYmVnaW5FeHRlbmRlZCxcbiAgICAgICAgICAgICAgICBlbmRFeHRlbmRlZCxcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFJbnRlcm5hbFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkID0gYXdhaXQgdGhpcy5yYWRhclNlcnZpY2UuZ2V0VGltZWxpbmUodGhpcy5yYWluTm9kZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzID0gdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkXG4gICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGZyYW1lU2V0KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJpb2QuYmVnaW4uZ2V0VGltZSgpIDw9IGZyYW1lU2V0LmRhdGUuZ2V0VGltZSgpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFtZVNldC5kYXRlLmdldFRpbWUoKSA8PSB0aGlzLnBlcmlvZC5lbmQuZ2V0VGltZSgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmRhdGUuZ2V0VGltZSgpIC0gYi5kYXRlLmdldFRpbWUoKSk7XG5cbiAgICAgICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSB0aGlzLnRpbWVmcmFtZXNGcm9tUmFkYXJzLm1hcCgoZnJhbWVTZXQpID0+IGZyYW1lU2V0LmRhdGUpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3RpbWVmcmFtZXNGcm9tUmFkYXJzRXh0ZW5kZWQ6JywgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0aW1lZnJhbWVEYXRlczonLCB0aGlzLnRpbWVmcmFtZURhdGVzKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGltZWZyYW1lc0Zyb21SYWRhcnM7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3JlZnJlc2hUaW1lZnJhbWVzRnJvbVJhZGFycycsIGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyByZWZyZXNoR2xvYmFsQ29tcGFyZVJlcG9ydChkb25lOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZnJhbWVTZXQgb2YgdGhpcy50aW1lZnJhbWVzRnJvbVJhZGFyc0V4dGVuZGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmcmFtZVNldCkpO1xuICAgICAgICAgICAgICAgIHRhcmdldC5kYXRlID0gbmV3IERhdGUodGFyZ2V0LmRhdGUpO1xuICAgICAgICAgICAgICAgIHRhcmdldC5yYWluQ29tcHV0YXRpb25RdWFsaXR5SWQgPSB0aGlzLmdldFJhaW5Db21wdXRhdGlvblF1YWxpdHlUYXJnZXQoZnJhbWVTZXQpO1xuICAgICAgICAgICAgICAgIHRhcmdldHMucHVzaCh0YXJnZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5yZWZyZXNoR2xvYmFsQ29tcGFyZVF1YWxpdHkodGFyZ2V0cywgIXRoaXMucmVtb3ZlRHVwbGljYXRlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcigncmVmcmVzaEdsb2JhbENvbXBhcmVSZXBvcnQnLCBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyByZWZyZXNoTWFwVGltZWZyYW1lQ29udGFpbmVycyh0YXJnZXQ6IHtcbiAgICAgICAgZGF0ZTogRGF0ZTtcbiAgICAgICAgcmFpbkNvbXB1dGF0aW9uSWQ6IHN0cmluZztcbiAgICAgICAgd2l0aEdhdWdlOiBib29sZWFuO1xuICAgICAgICBjdW11bGF0aXZlSG91cnM6IG51bWJlcjtcbiAgICB9KSB7XG4gICAgICAgIGlmICghdGFyZ2V0Py5yYWluQ29tcHV0YXRpb25JZCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBQYiB3aXRoIHJlZnJlc2hNYXBUaW1lZnJhbWVDb250YWluZXJzIGluc2lnaHRzICR7dGFyZ2V0LmRhdGUudG9JU09TdHJpbmcoKX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmFpbk5vZGUgPSB0aGlzLnJhaW5Ob2RlO1xuICAgICAgICBjb25zdCBjb250YWluZXJzOiBUaW1lZnJhbWVDb250YWluZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCBuZXdDcmVhdGVkVGltZWZyYW1lQ29udGFpbmVycyA9IG5ldyBUaW1lZnJhbWVDb250YWluZXJzKGNvbnRhaW5lcnMpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHJhaW5Ob2RlQ2FydGVzaWFuTWFwOiBSYWluQ29tcHV0YXRpb25NYXA7XG5cbiAgICAgICAgICAgIGlmICghdGFyZ2V0LmN1bXVsYXRpdmVIb3Vycykge1xuICAgICAgICAgICAgICAgIHJhaW5Ob2RlQ2FydGVzaWFuTWFwID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRSYWluQ29tcHV0YXRpb25DYXJ0ZXNpYW5NYXBCeUlkKFxuICAgICAgICAgICAgICAgICAgICByYWluTm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmFpbk5vZGVDYXJ0ZXNpYW5NYXAgPVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFJhaW5Db21wdXRhdGlvbkN1bXVsYXRpdmVNYXBCeUlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmFpbk5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucmFpbkNvbXB1dGF0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuY3VtdWxhdGl2ZUhvdXJzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyYWluTm9kZUNhcnRlc2lhbk1hcCkge1xuICAgICAgICAgICAgICAgIG5ld0NyZWF0ZWRUaW1lZnJhbWVDb250YWluZXJzLmFkZEZyb21SYWluQ29tcHV0YXRpb25NYXAoXG4gICAgICAgICAgICAgICAgICAgIHJhaW5Ob2RlQ2FydGVzaWFuTWFwLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJhaW5Db21wdXRhdGlvbk1hcFZlcnNpb24gPSByYWluTm9kZUNhcnRlc2lhbk1hcC52ZXJzaW9uO1xuICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwRGF0ZSA9IG5ldyBEYXRlKHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmRhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGUgPSByYWluTm9kZUNhcnRlc2lhbk1hcC5pc0RvbmVEYXRlO1xuICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwTGF1bmNoZWRCeSA9IHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmxhdW5jaGVkQnk7XG4gICAgICAgICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25NYXBUaW1lU3BlbnRJbk1zID0gcmFpbk5vZGVDYXJ0ZXNpYW5NYXAudGltZVNwZW50SW5NcztcblxuICAgICAgICAgICAgICAgIHRoaXMucmFpbkNvbXB1dGF0aW9uTWFwT3JpZ2luYWxNaW4gPSByYWluTm9kZUNhcnRlc2lhbk1hcC5vcmlnaW5hbERCWk1pbjtcbiAgICAgICAgICAgICAgICB0aGlzLnJhaW5Db21wdXRhdGlvbk1hcE9yaWdpbmFsTWF4ID0gcmFpbk5vZGVDYXJ0ZXNpYW5NYXAub3JpZ2luYWxEQlpNYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignUGIgd2l0aCBjb21wdXRhdGlvbnMgZm9yIGlkOicsIHRhcmdldC5yYWluQ29tcHV0YXRpb25JZCwgZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3Q3JlYXRlZFRpbWVmcmFtZUNvbnRhaW5lcnM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hDb21wYXJlUXVhbGl0eShmcmFtZVNldDogRnJhbWVTZXQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5yZWZyZXNoQ29tcGFyZVF1YWxpdHkoZnJhbWVTZXQpO1xuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNldEdhdWdlc0luQ29tcGFyZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBnZXRWYWx1ZXModGFyZ2V0OiBGcmFtZVNldCk6IFByb21pc2U8Q2FydGVzaWFuTWFwVmFsdWVbXT4ge1xuICAgICAgICBpZiAoIXRhcmdldD8ucmFpbkNvbXB1dGF0aW9uSWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUGIgd2l0aCB0YXJnZXQgaW5zaWdodHMgJHt0YXJnZXQ/LmRhdGUudG9JU09TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZXM6IENhcnRlc2lhbk1hcFZhbHVlW10gPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJhaW5Ob2RlQ2FydGVzaWFuTWFwID1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFJhaW5Db21wdXRhdGlvbkNhcnRlc2lhbk1hcEJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmFpbk5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5yYWluQ29tcHV0YXRpb25JZFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChyYWluTm9kZUNhcnRlc2lhbk1hcCkge1xuICAgICAgICAgICAgICAgIHJhaW5Ob2RlQ2FydGVzaWFuTWFwLmdldE1hcERhdGEoKS5mb3JFYWNoKChtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtLnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgKG0udmFsdWVzIGFzIElDYXJ0ZXNpYW5NZWFzdXJlVmFsdWVbXSkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhcnRlc2lhbk1lYXN1cmVWYWx1ZSA9IENhcnRlc2lhbk1lYXN1cmVWYWx1ZS5Gcm9tKHYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5jb25jYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhcnRlc2lhbk1hcFZhbHVlLkZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW5NZWFzdXJlVmFsdWUuZ2V0Q2FydGVzaWFuVmFsdWVzKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcnRlc2lhblRvb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYiB3aXRoIGNvbXB1dGF0aW9ucyBmb3IgaWQ6JywgdGFyZ2V0LnJhaW5Db21wdXRhdGlvbklkLCBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, EventEmitter, Component, Input, Output, ViewChild, HostListener, Pipe, Directive, NgModule, Optional, SkipSelf } from '@angular/core';
3
- import { CartesianTools, SpeedMatrixContainer, GaugeNode, CartesianMeasureValue, Link, EventNode, TeamNode, RadarNode, RainNode, RainComputation, RainComputationMap, RainComputationQuality, GaugeMeasure } from 'raain-model';
3
+ import { CartesianTools, SpeedMatrixContainer, GaugeNode, RadarNode, CartesianMeasureValue, Link, EventNode, TeamNode, RainNode, RainComputation, RainComputationMap, RainComputationQuality, GaugeMeasure } from 'raain-model';
4
4
  import { ElementsFactory, MapLatLng, ChartScaleColors, ScaleElementInput, CompareElementInput, ConfigurationElementInput, Tools, DateRange, DateStatusElementInput, DynamicDateStatusElementInput, SpeedMatrixElementInput, EarthMapElementInput, TimeframeContainers, CartesianMapValue, PolarMapValue } from 'raain-ui';
5
5
  import * as i2 from 'fidj-angular';
6
6
  import { LocalStorage, LoggerLevelEnum } from 'fidj-angular';
@@ -1639,7 +1639,11 @@ class RefreshManager {
1639
1639
  range: 'day',
1640
1640
  periodBegin: this._period.begin,
1641
1641
  });
1642
- const progress = yield this.profileService.getRainProgress(this.rainNode.id);
1642
+ let progress = 0;
1643
+ // Verify progress only for SimpleZone
1644
+ if (this.rainNode.getLinks(RadarNode.TYPE).length <= 1) {
1645
+ progress = yield this.profileService.getRainProgress(this.rainNode.id);
1646
+ }
1643
1647
  this.countsPeriod = Object.assign(Object.assign({}, counts), { progress });
1644
1648
  return this.countsPeriod;
1645
1649
  });