@esfaenza/core 15.2.50 → 15.2.51

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.
@@ -33,7 +33,7 @@ import * as i11 from "ngx-bootstrap/progressbar";
33
33
  import * as i12 from "@esfaenza/es-table";
34
34
  // Chiamate ai Repository
35
35
  const GET_Jace_GetActiveJaceModules = "/api/Jace/GetActiveJaceModules";
36
- const GET_Adm_ClearAllCaches = "/api/Adm/ClearAllCaches";
36
+ const GET_Cache_ClearAllCaches = "/api/Cache/ClearAllCaches";
37
37
  export class Navbar extends ReactiveComponent {
38
38
  constructor(prefsService, cacheService, globalSearchService, MessageDef, notifications, msgExts, lc, http, cdr, _state, sr, router, cjrService, extensionComponents) {
39
39
  super();
@@ -140,7 +140,7 @@ export class Navbar extends ReactiveComponent {
140
140
  this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
141
141
  }
142
142
  clearCacheServer() {
143
- this.http.get(GET_Adm_ClearAllCaches).subscribe(_ => {
143
+ this.http.get(GET_Cache_ClearAllCaches).subscribe(_ => {
144
144
  this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
145
145
  });
146
146
  }
@@ -148,7 +148,7 @@ export class Navbar extends ReactiveComponent {
148
148
  this.cacheService.clear().subscribe();
149
149
  this.http.resetHttpUntimedCacheStorage();
150
150
  this.http.resetHttpTimedCacheStorage();
151
- this.http.get(GET_Adm_ClearAllCaches).subscribe(_ => {
151
+ this.http.get(GET_Cache_ClearAllCaches).subscribe(_ => {
152
152
  this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
153
153
  });
154
154
  }
@@ -205,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
205
205
  type: ViewChild,
206
206
  args: ["navbar", { static: false }]
207
207
  }] } });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLE1BQU0sRUFBUSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSWxGLFdBQVc7QUFDWCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFtRyxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzNKLFdBQVc7QUFDWCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxN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bXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcclxuaW1wb3J0IHsgTmdJZiwgTmdGb3IsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9zaWduYWxyLW5vdGlmaWNhdGlvbnNcIjtcclxuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlLCBQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL3ByZWZlcmVuY2VzXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UsIExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvaHR0cHNlcnZpY2VcIjtcclxuXHJcbi8vIEVzRmFlbnphXHJcbmltcG9ydCB7IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbiwgRXNUYWJsZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZXMtdGFibGVcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50SG9zdERpcmVjdGl2ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kaXJlY3RpdmVzXCI7XHJcbmltcG9ydCB7IEphY2VJZGVudGl0eSwgQWN0aXZlTW9kdWxlVmlldywgRW52T3B0aW9ucywgQXBwbGljYXRpb25Kb2IsIFNlYXJjaFJlc3VsdCwgU2VhcmNoUmVzdWx0Q29udGFpbmVyLCBOQVZCQVJfRVhURU5TSU9OUyB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgQXBwU3RhdGUsIENvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSwgR2xvYmFsU2VhcmNoU2VydmljZSwgVG9rZW5TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL3NlcnZpY2VzXCI7XHJcblxyXG4vLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBpbnRlcnZhbCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRha2VXaGlsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFByb2dyZXNzYmFyTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvcHJvZ3Jlc3NiYXJcIjtcclxuaW1wb3J0IHsgQnNEcm9wZG93bk1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgTmF2QmFyTG9jIH0gZnJvbSBcIi4vbmF2YmFyLmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8vIENvbXBvbmVudGlcclxuaW1wb3J0IHsgUmVhY3RpdmVDb21wb25lbnQgfSBmcm9tIFwiLi4vYmFzZS9yZWFjdGl2ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSmFjZU1vZHVsZXNCb2FyZENvbXBvbmVudCB9IGZyb20gXCIuL21vZHVsZXMtYm9hcmQvamFjZS1tb2R1bGVzLWJvYXJkLmNvbXBvbmVudFwiO1xyXG5cclxuLy8gQ2hpYW1hdGUgYWkgUmVwb3NpdG9yeVxyXG5jb25zdCBHRVRfSmFjZV9HZXRBY3RpdmVKYWNlTW9kdWxlczogc3RyaW5nID0gXCIvYXBpL0phY2UvR2V0QWN0aXZlSmFjZU1vZHVsZXNcIjtcclxuY29uc3QgR0VUX0FkbV9DbGVhckFsbENhY2hlczogc3RyaW5nID0gXCIvYXBpL0FkbS9DbGVhckFsbENhY2hlc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IEVudk9wdGlvbnM7XHJcbmRlY2xhcmUgdmFyIGRheWpzO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJuYXZiYXJcIixcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOYXZCYXJMb2MgfV0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vbmF2YmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9uYXZiYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbUm91dGVyTGluaywgRm9ybXNNb2R1bGUsIEJzRHJvcGRvd25Nb2R1bGUsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLCBOZ0lmLCBOZ0ZvciwgUHJvZ3Jlc3NiYXJNb2R1bGUsIEphY2VNb2R1bGVzQm9hcmRDb21wb25lbnQsIENvbXBvbmVudEhvc3REaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXQsIEVzVGFibGVNb2R1bGUsIExvY2FsaXphdGlvbk1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmJhciBleHRlbmRzIFJlYWN0aXZlQ29tcG9uZW50IHtcclxuXHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25WZXJzaW9uID0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uO1xyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50O1xyXG5cclxuICAgIHB1YmxpYyBpc01lbnVDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBhbm9tYWxpZXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIEN1cnJlbnRJZGVudGl0eTogSmFjZUlkZW50aXR5O1xyXG5cclxuICAgIHByaXZhdGUgbmV3VmVyc2lvbldhcm5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQFZpZXdDaGlsZChcIm5hdmJhclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbmF2YmFyOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIHB1YmxpYyBNb2R1bGVzOiBBY3RpdmVNb2R1bGVWaWV3W107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBwcmVmc1NlcnZpY2U6IFByZWZlcmVuY2VzU2VydmljZSwgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSwgcHVibGljIGdsb2JhbFNlYXJjaFNlcnZpY2U6IEdsb2JhbFNlYXJjaFNlcnZpY2UsIHByaXZhdGUgTWVzc2FnZURlZjogQmFzZU1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsIHByaXZhdGUgbXNnRXh0czogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgcHJpdmF0ZSBodHRwOiBIVFRQU2VydmljZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHVibGljIF9zdGF0ZTogQXBwU3RhdGUsIHB1YmxpYyBzcjogVG9rZW5TZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGNqclNlcnZpY2U6IENvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSwgQEluamVjdChOQVZCQVJfRVhURU5TSU9OUykgcHVibGljIGV4dGVuc2lvbkNvbXBvbmVudHM6IFR5cGU8YW55PltdKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwibWVudS5pc0NvbGxhcHNlZFwiLCAoaXNDb2xsYXBzZWQpID0+IHsgdGhpcy5pc01lbnVDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZDsgfSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwLmNvbXBsZXRlZEpvYlwiLCAoam9iRGVzY3JpcHRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJKb2IgQ29tcGxldGF0b1wiKSArIFwiOiBcIiArIGpvYkRlc2NyaXB0aW9uKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVCYXNlTm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZlSmFjZU1vZHVsZXMoKTtcclxuXHJcbiAgICAgICAgLy8gQXBwZW5hIGxhIHBhZ2luYSBwYXJ0ZSwgcG9pIG9nbmkgc2Vjb25kbywgY29udHJvbGxvIGwnaWRlbnRpdHkgcGVyIHZlcmlmaWNhcmUgc2UgcmltYW5lIGxhIHN0ZXNzYVxyXG4gICAgICAgIGludGVydmFsKDEwMDApLnBpcGUoXHJcbiAgICAgICAgICAgIHN0YXJ0V2l0aCgwKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXHJcbiAgICAgICAgICAgIHRha2VXaGlsZShfID0+ICFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tJZGVudGl0eSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICAvL1F1YW5kbyB2aWVuZSBkaXN0cnV0dGEgbGEgbmF2YmFyIGRldm8gZGlzdHJ1Z2dlcmUgYW5jaGUgaWwgY2xpZW50IGRpIHNpZ25hbHIgcGVyY2jDqCB2dW9sIGRpcmUgY2hlIGhvIGNoaXVzbyBsYSBwYWdpbmFcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlQmFzZU5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnNlbmQodGhpcy5NZXNzYWdlRGVmLk9VVF9RdWVyeUpvYlN0YXR1cywgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLm9ic2VydmUodGhpcy5NZXNzYWdlRGVmLklOX1NlbmRWZXJzaW9uKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uICYmICF0aGlzLm5ld1ZlcnNpb25XYXJuZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMubGMubG9jKFwiw4ggZGlzcG9uaWJpbGUgdW5hIG51b3ZhIHZlcnNpb25lIHBlciBsJ2FwcGxpY2F6aW9uZSBjb3JyZW50ZS4gU2kgc3VnZ2VyaXNjZSBkaSByaWNhcmljYXJlIGxhIHBhZ2luYSAoQ1RSTCArIEY1KVwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld1ZlcnNpb25XYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0lkZW50aXR5KCkge1xyXG4gICAgICAgIGxldCBpZCA9IHRoaXMuc3IuZ2V0SmFjZUlkZW50aXR5KCk7XHJcbiAgICAgICAgbGV0IGlkTGFzdCA9IHRoaXMuQ3VycmVudElkZW50aXR5O1xyXG5cclxuICAgICAgICBpZiAoIWlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tTZXNzaW9uVGltZW91dChpZCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRJZGVudGl0eSAmJiAoaWQuSWRBY2NvdW50ICE9IGlkTGFzdD8uSWRBY2NvdW50IHx8IGlkLklkVXNlciAhPSBpZExhc3Q/LklkVXNlciB8fCBpZC5JZHRlbmFudCAhPSBpZExhc3Q/LklkdGVuYW50KSkge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlV2FybmluZyh0aGlzLmxjLmxvYyhcIkxlIGluZm9ybWF6aW9uaSBkaSBTZXNzaW9uZSAoVGVuYW50L0FjY291bnQpIHNvbm8gY2FtYmlhdGUgYSBzZWd1aXRvIGRpIHVuIGxvZ2luIHN1IG1vZHVsbyBkaXZlcnNvIHV0aWxpenphbmRvIGRpdmVyc28gVGVuYW50L1V0ZW50ZSBzdWxsbyBzdGVzc28gYnJvd3Nlci4gU2kgc3VnZ2VyaXNjZSBkaSByaWNhcmljYXJlIGxhIHBhZ2luYSAoQ1RSTCArIEY1KVwiKSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5DdXJyZW50SWRlbnRpdHkgPSBpZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBY3RpdmVKYWNlTW9kdWxlcygpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0PEFjdGl2ZU1vZHVsZVZpZXdbXT4oR0VUX0phY2VfR2V0QWN0aXZlSmFjZU1vZHVsZXMpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLk1vZHVsZXMgPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlLk1vZHVsZXMgPSB0aGlzLk1vZHVsZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1Nlc3Npb25UaW1lb3V0KGlkZW50aXR5OiBKYWNlSWRlbnRpdHkpIHtcclxuICAgICAgICBpZiAoZGF5anMoKSA+PSBkYXlqcyhpZGVudGl0eS5FeHBpcmF0aW9uVGltZSkuc3VidHJhY3QoMTAsICdtaW51dGVzJykgJiYgIW15Y29uZmlnLnJlZGlyZWN0SW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICBteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLmV4cGlyZWRTZXNzaW9uTWVzc2FnZShcclxuICAgICAgICAgICAgICAgIHRoaXMubGMubG9jKCdFeHBpcmVkIHNlc3Npb24nKSxcclxuICAgICAgICAgICAgICAgIHRoaXMubGMubG9jKFwiTCdhdHR1YWxlIHNlc3Npb25lIGRpIGxhdm9ybyBub24gw6ggcGnDuSB2YWxpZGEuPGJyPlNpIHByZWdhIGRpIGVzZWd1aXJlIG51b3ZhbWVudGUgaWwgbG9naW4uXCIpLFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG15Y29uZmlnLnJlZGlyZWN0SW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2tTZXNzaW9uVGltZW91dCAtIHJlZGlyZWN0aW5nIHRvIGxvZ2luXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibG9naW5cIl0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0SGVhZGVySGVpZ2h0KHRoaXMubmF2YmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcclxuICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9ICF0aGlzLmlzTWVudUNvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5ub3RpZnlEYXRhQ2hhbmdlZChcIm1lbnUuaXNDb2xsYXBzZWRcIiwgdGhpcy5pc01lbnVDb2xsYXBzZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2dvdXQoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dvdXQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZU1vZHVsZSgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG15Y29uZmlnLkphY2VEYXNoYm9hcmRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVRlbmFudCgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9L2xvZ2luL3RlbmFudD9jbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclVzZXJQcmVmZXJlbmNlcygpIHtcclxuICAgICAgICB0aGlzLnByZWZzU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiUHJlZmVyZW56ZSB1dGVudGUgcmlwdWxpdGVcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVDbGllbnQoKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVW50aW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBUaW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVTZXJ2ZXIoKSB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQWRtX0NsZWFyQWxsQ2FjaGVzKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQWxsKCkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFVudGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEdFVF9BZG1fQ2xlYXJBbGxDYWNoZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJNZXNzYWdlcygpIHtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuY2xlYXJNZXNzYWdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBsZXRlZEpvYkNsaWNrZWQoam9iOiBBcHBsaWNhdGlvbkpvYikge1xyXG4gICAgICAgIHRoaXMuY2pyU2VydmljZS5yZWRpcmVjdChqb2IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEdlc3Rpb25lIFJpY2VyY2EgR2xvYmFsZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgIHB1YmxpYyBTZWxlY3RlZFJlc3VsdDogU2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgIHB1YmxpYyBTaG93U2luZ2xlVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgICBzZWFyY2hpbmdUZXJtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWFyY2hSZXN1bHQ6IFNlYXJjaFJlc3VsdENvbnRhaW5lcjtcclxuXHJcbiAgICBzZWFyY2hSZXF1ZXN0KCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5FbmFibGVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5zZWFyY2godGhpcy5zZWFyY2hUZXJtKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdC5yZXN1bHRzLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0LmVzdF9jb2xzID0gdC5jb2x1bW5zLm1hcChjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sTGluayA9IHRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5nZW5lcmF0ZUNvbHVtbkxpbmsoYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc1RhYmxlQ29sdW1uc0RlZmluaXRpb24oYy5kZXNjcmlwdGlvbiwgYy5pZCwgY29sTGluaz8ucm91dGVQYXRoLCBjb2xMaW5rPy5yb3V0ZVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaE1vZGVsQ2hhbmdlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoaW5nVGVybSlcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW06IFNlYXJjaFJlc3VsdCA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLlNob3dTaW5nbGVUYWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFJlc3VsdCA9IHRoaXMuc2VhcmNoUmVzdWx0Py5yZXN1bHRzPy5maW5kKGYgPT4gZi5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U2luZ2xlVGFibGUgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSIsIjxuYXYgI25hdmJhciBjbGFzcz1cIm5hdiBhei1uYXZiYXIgZml4ZWQtdG9wXCI+XHJcbiAgICA8IS0tIExvZ28gLS0+XHJcbiAgICA8YSBjbGFzcz1cIm5hdmJhci1icmFuZFwiIHJvdXRlckxpbms9XCIvcGFnZXMvZGFzaGJvYXJkXCI+XHJcbiAgICAgICAgPGltZyBzcmM9XCIuLi9hc3NldHMvaW1nL2xvZ28vbG9nby5wbmdcIiBjbGFzcz1cImQtbWQtYmxvY2sgZC1ub25lXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAtMTBweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWZlLXYgZC1tZC1ibG9jayBkLW5vbmVcIj57eyBhcHBsaWNhdGlvblZlcnNpb24gfX08L2Rpdj5cclxuXHJcbiAgICAgICAgPGltZyBzcmM9XCIuLi9hc3NldHMvaW1nL2xvZ28vbG9nb19zbS5wbmdcIiBjbGFzcz1cImQtbWQtbm9uZVwiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWJvdHRvbTogLTEwcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1mZS1zbS12IGQtbWQtbm9uZVwiPnt7IGFwcGxpY2F0aW9uVmVyc2lvbiB9fTwvZGl2PlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDx1bCBjbGFzcz1cIm5hdiBuYXZiYXItbmF2IG5hdmJhci1maWxsYWJsZVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8IS0tIENvbGxhcHNlIG1lbsO5IGEgc2luaXN0cmEgLS0+XHJcbiAgICAgICAgPGxpIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBmb250LXNpemU6IDIwcHg7IGFsaWduLXNlbGY6IGNlbnRlcjtcIiBjbGFzcz1cImZhIGZhLW5hdmljb25cIj48L2E+XHJcbiAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICAgICAgPGxpIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJhcHAtc2VhcmNoXCIgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7XCIgcm9sZT1cInNlYXJjaFwiIChuZ1N1Ym1pdCk9XCJzZWFyY2hSZXF1ZXN0KClcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCIgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoTW9kZWxDaGFuZ2VkKClcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmUgOiB0cnVlfVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICA8YT48aSBjbGFzcz1cImlvbi1pb3Mtc2VhcmNoLXN0cm9uZ1wiPjwvaT48L2E+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGhpZGRlbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdlwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87IHBhZGRpbmctdG9wOiA1cHg7IHBhZGRpbmctcmlnaHQ6IDEwcHg7XCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tRHJvcGRvd24gam9iIGluIGVzZWN1emlvbmUtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uIGFwcC1tYXJnaW4tcmlnaHQtMTBcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW2NsYXNzLmZhLXNwaW5dPVwiX3N0YXRlLmpvYnNJblByb2dyZXNzID4gMFwiIGNsYXNzPVwiZmEgZmEtY29nIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlclwiIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBmb250LXNpemU6IDIwcHg7IGFsaWduLXNlbGY6IGNlbnRlcjtcIiBkcm9wZG93blRvZ2dsZT48L2E+XHJcbiAgICAgICAgICAgICAgICA8dWwgKmRyb3Bkb3duTWVudSBjbGFzcz1cIm5hdi1qb2JzLW1lbnVcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtam9icy1tZW51LWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydKb2IgQXBwbGljYXRpdmknIHwgbG9jYWxpemUgOiBsY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgbS10LW1pbi0yXCI+PG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJfc3RhdGUubm90aWZ5T25Db21wbGV0ZWRKb2JzXCIgKGNsaWNrKT1cImNsZWFyTWVzc2FnZXMoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPjwvbWF0LXNsaWRlLXRvZ2dsZT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBhcHAtbWFyZ2luLXJpZ2h0LTVcIj57eydOb3RpZmljaGUnIHwgbG9jYWxpemUgOiBsY319Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJfc3RhdGUuYWxsSm9icy5sZW5ndGggPT0gMFwiIGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0LWVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7XCJBbCBtb21lbnRvIG5vbiBjJ8OoIG51bGxhIGluIGVzZWN1emlvbmVcIiB8IGxvY2FsaXplIDogbGN9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgam9iIG9mIF9zdGF0ZS5hbGxKb2JzOyBsZXQgbGFzdCA9IGxhc3RcIiBbY2xhc3MuYXBwLW1hcmdpbi1ib3R0b20tNV09XCIhbGFzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3QtZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFqb2IuY29tcGxldGVkXCIgdGl0bGU9XCJ7e2pvYi5kZXNjcmlwdGlvbn19XCI+e3tqb2Iuc21hbGxkZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiIHRpdGxlPVwie3tqb2IuZGVzY3JpcHRpb259fVwiIGNsYXNzPVwiYXBwLWxpbmsgYXBwLW5vLXNlbGVjdGlvbiBhcHAtaW5saW5lIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNvbXBsZXRlZEpvYkNsaWNrZWQoam9iKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPnt7am9iLnNtYWxsZGVzY3JpcHRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwicHVsbC1yaWdodFwiICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIj57e2pvYi5wZXJjZW50YWdlfX0lPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInB1bGwtcmlnaHRcIiAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIj57eyAnQ29tcGxldGVkJyB8IGxvY2FsaXplIDogbGMgfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcyBwcm9ncmVzcy1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9ncmVzc2JhciAqbmdJZj1cIiFqb2IuY29tcGxldGVkXCIgW21heF09XCIxMDBcIiBbdmFsdWVdPVwiam9iLnBlcmNlbnRhZ2VcIiBbc3RyaXBlZF09XCJ0cnVlXCIgW2FuaW1hdGVdPVwidHJ1ZVwiPjwvcHJvZ3Jlc3NiYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb2dyZXNzYmFyICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiIHR5cGU9XCJzdWNjZXNzXCIgW21heF09XCIxMDBcIiBbdmFsdWVdPVwiMTAwXCIgW3N0cmlwZWRdPVwiZmFsc2VcIiBbYW5pbWF0ZV09XCJmYWxzZVwiPjwvcHJvZ3Jlc3NiYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS1Ecm9wZG93biBtb2R1bGktLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uIGFwcC1tYXJnaW4tcmlnaHQtMTBcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmYSBmYS10aCBkcm9wZG93bi10b2dnbGUgYXBwLXBvaW50ZXJcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBmb250LXNpemU6IDIwcHg7IGFsaWduLXNlbGY6IGNlbnRlcjtcIiBkcm9wZG93blRvZ2dsZT48L2E+XHJcbiAgICAgICAgICAgICAgICA8dWwgKmRyb3Bkb3duTWVudSBjbGFzcz1cIm1vZHVsZS1ib2FyZC1tZW51IGNvbnRhaW5lclwiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1yZWxhdGl2ZVwiPjxqYWNlLW1vZHVsZXMtYm9hcmQgW01vZHVsZXNdPVwiTW9kdWxlc1wiPjwvamFjZS1tb2R1bGVzLWJvYXJkPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFB1bnRpIGRpIGVzdGVuc2lvbmUgcGVyIENhbGVuZGFyLCBDaGF0cm9vbSBlIGNoaSBwacO5IG5lIGhhIHBpw7kgbmUgbWV0dGEuLi4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIgKm5nRm9yPVwibGV0IGNvbXAgb2YgZXh0ZW5zaW9uQ29tcG9uZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRIb3N0XT1cImNvbXBcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS1Ecm9wZG93biBVc2VyIE1lbnUtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uXCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiIHN0eWxlPVwiaGVpZ2h0OjQ1cHg7IHBhZGRpbmctcmlnaHQ6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSB1c2VyLWxpbmsgYXBwLXBvaW50ZXJcIiBkcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1sZWZ0IGFwcC1tYXJnaW4tcmlnaHQtMTAgYXBwLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1c2VySWNvbjtcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXdoaXRlLXRleHQgcHVsbC1yaWdodCBkLW5vbmUgZC1zbS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVidWdJbmZvc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0LXVzZXIgYXBwLW5vLXBhZGRpbmdcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInVzZXItaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXNlckljb247IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7cmlnaHQ6IDYyfSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXdoaXRlLXRleHQgYXBwLW1hcmdpbi10b3AtMTAgYXBwLW1hcmdpbi1ib3R0b20tMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlYnVnSW5mb3NcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAqbmdJZj1cImxjLkxvY2FsZSA9PSAnZW4tVVMnXCIgKGNsaWNrKT1cImxjLmNoYW5nZUxvY2FsZSgnaXQtSVQnKVwiPjxpIGNsYXNzPVwiZmEgZmEtZ2xvYmVcIj4mbmJzcDs8L2k+U3dpdGNoIHRvIEl0YWxpYW4gU2l0ZTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAqbmdJZj1cImxjLkxvY2FsZSA9PSAnaXQtSVQnXCIgKGNsaWNrKT1cImxjLmNoYW5nZUxvY2FsZSgnZW4tVVMnKVwiPjxpIGNsYXNzPVwiZmEgZmEtZ2xvYmVcIj4mbmJzcDs8L2k+UGFzc2EgYWwgU2l0byBpbiBJbmdsZXNlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjaGFuZ2VNb2R1bGUoKVwiPjxpIGNsYXNzPVwiZmEgZmEtdGhcIj4mbmJzcDs8L2k+e3snQ2FtYmlhIE1vZHVsbycgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNoYW5nZVRlbmFudCgpXCI+PGkgY2xhc3M9XCJmYSBmYS1idWlsZGluZ1wiPiZuYnNwOzwvaT57eydDYW1iaWEgVGVuYW50JyB8IGxvY2FsaXplIDogbGN9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXJVc2VyUHJlZmVyZW5jZXMoKVwiPjxpIGNsYXNzPVwiZmEgZmEtdXNlci10aW1lc1wiPiZuYnNwOzwvaT57eydSaXB1bGlzY2kgbGUgUHJlZmVyZW56ZSBVdGVudGUnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbGVhckFsbCgpXCI+PGkgY2xhc3M9XCJmYSBmYS1yZWN5Y2xlIFwiPiZuYnNwOzwvaT57eydSaXB1bGlzY2kgbGEgQ2FjaGUnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImxvZ291dCgpXCI+PGkgY2xhc3M9XCJmYSBmYS1wb3dlci1vZmZcIj4mbmJzcDs8L2k+TG9nIG91dDwvYT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L3VsPlxyXG48L25hdj5cclxuXHJcbjwhLS0gVGVtcGxhdGUgcGVyIGwnaWNvbmEgZGVsbCd1dGVudGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdXNlckljb24gbGV0LWNvbnRleHQ+XHJcbiAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy91c2Vycy91c2VyLmpwZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWdcIj5cclxuICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9jaHJpc3RtYXMucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiBbc3R5bGUucmlnaHQucHhdPVwiY29udGV4dD8ucmlnaHQgfHwgdW5kZWZpbmVkXCIgKm5nSWY9XCJfc3RhdGUuY2hyaXN0bWFzVGltZVwiPlxyXG4gICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvZXZlbnRzL2hhbGxvd2Vlbi5wbmcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMFwiIFtzdHlsZS5yaWdodC5weF09XCJjb250ZXh0Py5yaWdodCB8fCB1bmRlZmluZWRcIiAqbmdJZj1cIl9zdGF0ZS5oYWxsb3dlZW5UaW1lXCI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRlbXBsYXRlIHBlciBsZSBpbmZvcm1haXpvbmkgZGkgZGVidWc6IEFtYmllbnRlLCBydW9saSwgcGVybWVzc2kgZWNjIC0tPlxyXG48bmctdGVtcGxhdGUgI2RlYnVnSW5mb3M+XHJcbiAgICA8ZGl2Pnt7Q3VycmVudElkZW50aXR5Py5GdWxsTmFtZX19IC0gKHt7Q3VycmVudElkZW50aXR5Py5UZW5hbnROYW1lfX0pPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbS1jZW50ZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSAyXCI+e3snQW1iaWVudGUgZGkgU3ZpbHVwcG8nIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPT0gNVwiPnt7J0FtYmllbnRlIGRpIFN0YWdpbmcnIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPT0gNlwiPnt7J0FtYmllbnRlIGRpIFN0YWdpbmcgQScgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSAxXCI+e3snQW1iaWVudGUgZGkgUHJvZHV6aW9uZScgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cInRydWVcIj5cclxuICAgICAgICA8ZGl2PlBlcm1pc3Npb25zOjwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHAgb2YgQ3VycmVudElkZW50aXR5LlBlcm1pc3Npb25zXCI+e3twfX08L2Rpdj5cclxuICAgICAgICA8ZGl2PlJvbGVzOjwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHIgb2YgQ3VycmVudElkZW50aXR5LlJvbGVzXCI+e3tyfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBPdmVybGF5IHBlciBsYSByaWNlcmNhIGdsb2JhbGUgLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hpbmdUZXJtIHx8IHNlYXJjaFJlc3VsdFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFwcC1hYnNvbHV0ZSBhcHAtc2VhcmNoLWJhY2tncm91bmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1yZXN1bHQtYm94XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hpbmdUZXJtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+PGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+U3RvIGVmZmV0dHVhbmRvIGxhIHJpY2VyY2EuLi48L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hSZXN1bHQgJiYgIXNlYXJjaGluZ1Rlcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNwYXppbyBhIHNpbmlzdHJhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQmxvY2NvIGNvbiBsZSBjYXRlZ29yaWUgZGVpIHJpc3VsdGF0aSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1yZWxhdGl2ZVwiPjxhIGNsYXNzPVwiZmEgZmEtdGltZXMgdGV4dC1kYW5nZXIgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wIGFwcC1mcy0yMCBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbG9zZVNlYXJjaCgpO1wiPjwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5DYXRlZ29yaWUgZGkgUmljZXJjYTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXBvaW50ZXIgYXBwLWxpbmtcIiBbY2xhc3MuYXBwLWJvbGRdPVwiIVNlbGVjdGVkUmVzdWx0ICYmICFTaG93U2luZ2xlVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiRmlsdGVyU2VhcmNoUmVzdWx0cygpXCI+e3tTZWxlY3RlZFJlc3VsdCA/ICctJyA6ICc+J319IE1vc3RyYSBUdXR0bzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWFyY2hSZXN1bHQucmVzdWx0c1wiIGNsYXNzPVwiYXBwLXBvaW50ZXIgYXBwLWxpbmtcIiBbY2xhc3MuYXBwLWJvbGRdPVwiU2VsZWN0ZWRSZXN1bHQ/LmRlc2NyaXB0aW9uID09IGl0ZW0uZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiRmlsdGVyU2VhcmNoUmVzdWx0cyhpdGVtKVwiPnt7U2VsZWN0ZWRSZXN1bHQ/LmRlc2NyaXB0aW9uID09IGl0ZW0uZGVzY3JpcHRpb24gPyAnPicgOiAnLSd9fSBNb3N0cmEge3tpdGVtLmRlc2NyaXB0aW9ufX0gKHt7aXRlbS5pdGVtcz8ubGVuZ3RofX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGV0dGFnbGlvIHJpc3VsdGF0aSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIiBzdHlsZT1cIm92ZXJmbG93OiBhdXRvOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhU2VsZWN0ZWRSZXN1bHQgJiYgIVNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcmVzIG9mIHNlYXJjaFJlc3VsdC5yZXN1bHRzOyBsZXQgaSA9IGluZGV4O1wiIGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCIgW3N0eWxlLm1hcmdpbi1ib3R0b20ucHhdPVwiaSA9PSAoc2VhcmNoUmVzdWx0LnJlc3VsdHM/Lmxlbmd0aCAtIDEpID8gMiA6IDEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7cmVzLmRlc2NyaXB0aW9ufX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcy10YWJsZSBbKG5nTW9kZWwpXT1cInJlcy5pdGVtc1wiIFtEeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb25dPVwicmVzLmVzdF9jb2xzXCIgW0FycmF5bW9kZUl0ZW1zUGVyUGFnZV09XCIxMFwiPjwvZXMtdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTZWxlY3RlZFJlc3VsdCAmJiBTaG93U2luZ2xlVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tTZWxlY3RlZFJlc3VsdC5kZXNjcmlwdGlvbn19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXMtdGFibGUgWyhuZ01vZGVsKV09XCJTZWxlY3RlZFJlc3VsdC5pdGVtc1wiIFtEeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb25dPVwiU2VsZWN0ZWRSZXN1bHQuZXN0X2NvbHNcIiBbQXJyYXltb2RlSXRlbXNQZXJQYWdlXT1cIjEwXCI+PC9lcy10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNwYXppbyBhIGRlc3RyYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLE1BQU0sRUFBUSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSWxGLFdBQVc7QUFDWCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFtRyxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzNKLFdBQVc7QUFDWCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxN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bXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcclxuaW1wb3J0IHsgTmdJZiwgTmdGb3IsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9zaWduYWxyLW5vdGlmaWNhdGlvbnNcIjtcclxuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlLCBQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL3ByZWZlcmVuY2VzXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UsIExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvaHR0cHNlcnZpY2VcIjtcclxuXHJcbi8vIEVzRmFlbnphXHJcbmltcG9ydCB7IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbiwgRXNUYWJsZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZXMtdGFibGVcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50SG9zdERpcmVjdGl2ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kaXJlY3RpdmVzXCI7XHJcbmltcG9ydCB7IEphY2VJZGVudGl0eSwgQWN0aXZlTW9kdWxlVmlldywgRW52T3B0aW9ucywgQXBwbGljYXRpb25Kb2IsIFNlYXJjaFJlc3VsdCwgU2VhcmNoUmVzdWx0Q29udGFpbmVyLCBOQVZCQVJfRVhURU5TSU9OUyB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgQXBwU3RhdGUsIENvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSwgR2xvYmFsU2VhcmNoU2VydmljZSwgVG9rZW5TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL3NlcnZpY2VzXCI7XHJcblxyXG4vLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBpbnRlcnZhbCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRha2VXaGlsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFByb2dyZXNzYmFyTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvcHJvZ3Jlc3NiYXJcIjtcclxuaW1wb3J0IHsgQnNEcm9wZG93bk1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgTmF2QmFyTG9jIH0gZnJvbSBcIi4vbmF2YmFyLmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8vIENvbXBvbmVudGlcclxuaW1wb3J0IHsgUmVhY3RpdmVDb21wb25lbnQgfSBmcm9tIFwiLi4vYmFzZS9yZWFjdGl2ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSmFjZU1vZHVsZXNCb2FyZENvbXBvbmVudCB9IGZyb20gXCIuL21vZHVsZXMtYm9hcmQvamFjZS1tb2R1bGVzLWJvYXJkLmNvbXBvbmVudFwiO1xyXG5cclxuLy8gQ2hpYW1hdGUgYWkgUmVwb3NpdG9yeVxyXG5jb25zdCBHRVRfSmFjZV9HZXRBY3RpdmVKYWNlTW9kdWxlczogc3RyaW5nID0gXCIvYXBpL0phY2UvR2V0QWN0aXZlSmFjZU1vZHVsZXNcIjtcclxuY29uc3QgR0VUX0NhY2hlX0NsZWFyQWxsQ2FjaGVzOiBzdHJpbmcgPSBcIi9hcGkvQ2FjaGUvQ2xlYXJBbGxDYWNoZXNcIjtcclxuXHJcbmRlY2xhcmUgdmFyIG15Y29uZmlnOiBFbnZPcHRpb25zO1xyXG5kZWNsYXJlIHZhciBkYXlqcztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwibmF2YmFyXCIsXHJcbiAgICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogTmF2QmFyTG9jIH1dLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL25hdmJhci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vbmF2YmFyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1JvdXRlckxpbmssIEZvcm1zTW9kdWxlLCBCc0Ryb3Bkb3duTW9kdWxlLCBNYXRTbGlkZVRvZ2dsZU1vZHVsZSwgTmdJZiwgTmdGb3IsIFByb2dyZXNzYmFyTW9kdWxlLCBKYWNlTW9kdWxlc0JvYXJkQ29tcG9uZW50LCBDb21wb25lbnRIb3N0RGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0LCBFc1RhYmxlTW9kdWxlLCBMb2NhbGl6YXRpb25Nb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZiYXIgZXh0ZW5kcyBSZWFjdGl2ZUNvbXBvbmVudCB7XHJcblxyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uVmVyc2lvbiA9IG15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50VmVyc2lvbjtcclxuICAgIHB1YmxpYyBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudDtcclxuXHJcbiAgICBwdWJsaWMgaXNNZW51Q29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgYW5vbWFsaWVzUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBDdXJyZW50SWRlbnRpdHk6IEphY2VJZGVudGl0eTtcclxuXHJcbiAgICBwcml2YXRlIG5ld1ZlcnNpb25XYXJuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBWaWV3Q2hpbGQoXCJuYXZiYXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIG5hdmJhcjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBwdWJsaWMgTW9kdWxlczogQWN0aXZlTW9kdWxlVmlld1tdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcHJlZnNTZXJ2aWNlOiBQcmVmZXJlbmNlc1NlcnZpY2UsIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBDYWNoZVNlcnZpY2UsIHB1YmxpYyBnbG9iYWxTZWFyY2hTZXJ2aWNlOiBHbG9iYWxTZWFyY2hTZXJ2aWNlLCBwcml2YXRlIE1lc3NhZ2VEZWY6IEJhc2VNZXNzYWdlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBwcml2YXRlIG1zZ0V4dHM6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIHByaXZhdGUgaHR0cDogSFRUUFNlcnZpY2UsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHB1YmxpYyBfc3RhdGU6IEFwcFN0YXRlLCBwdWJsaWMgc3I6IFRva2VuU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjanJTZXJ2aWNlOiBDb21wbGV0ZWRKb2JSZWRpcmVjdGlvblNlcnZpY2UsIEBJbmplY3QoTkFWQkFSX0VYVEVOU0lPTlMpIHB1YmxpYyBleHRlbnNpb25Db21wb25lbnRzOiBUeXBlPGFueT5bXSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcIm1lbnUuaXNDb2xsYXBzZWRcIiwgKGlzQ29sbGFwc2VkKSA9PiB7IHRoaXMuaXNNZW51Q29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7IH0pO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcImFwcC5jb21wbGV0ZWRKb2JcIiwgKGpvYkRlc2NyaXB0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiSm9iIENvbXBsZXRhdG9cIikgKyBcIjogXCIgKyBqb2JEZXNjcmlwdGlvbik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaGFuZGxlQmFzZU5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmdldEFjdGl2ZUphY2VNb2R1bGVzKCk7XHJcblxyXG4gICAgICAgIC8vIEFwcGVuYSBsYSBwYWdpbmEgcGFydGUsIHBvaSBvZ25pIHNlY29uZG8sIGNvbnRyb2xsbyBsJ2lkZW50aXR5IHBlciB2ZXJpZmljYXJlIHNlIHJpbWFuZSBsYSBzdGVzc2FcclxuICAgICAgICBpbnRlcnZhbCgxMDAwKS5waXBlKFxyXG4gICAgICAgICAgICBzdGFydFdpdGgoMCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxyXG4gICAgICAgICAgICB0YWtlV2hpbGUoXyA9PiAhbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrSWRlbnRpdHkoKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgLy9RdWFuZG8gdmllbmUgZGlzdHJ1dHRhIGxhIG5hdmJhciBkZXZvIGRpc3RydWdnZXJlIGFuY2hlIGlsIGNsaWVudCBkaSBzaWduYWxyIHBlcmNow6ggdnVvbCBkaXJlIGNoZSBobyBjaGl1c28gbGEgcGFnaW5hXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZUJhc2VOb3RpZmljYXRpb25zKCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5zZW5kKHRoaXMuTWVzc2FnZURlZi5PVVRfUXVlcnlKb2JTdGF0dXMsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5vYnNlcnZlKHRoaXMuTWVzc2FnZURlZi5JTl9TZW5kVmVyc2lvbikucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IG15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50VmVyc2lvbiAmJiAhdGhpcy5uZXdWZXJzaW9uV2FybmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlV2FybmluZyh0aGlzLmxjLmxvYyhcIsOIIGRpc3BvbmliaWxlIHVuYSBudW92YSB2ZXJzaW9uZSBwZXIgbCdhcHBsaWNhemlvbmUgY29ycmVudGUuIFNpIHN1Z2dlcmlzY2UgZGkgcmljYXJpY2FyZSBsYSBwYWdpbmEgKENUUkwgKyBGNSlcIikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdWZXJzaW9uV2FybmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tJZGVudGl0eSgpIHtcclxuICAgICAgICBsZXQgaWQgPSB0aGlzLnNyLmdldEphY2VJZGVudGl0eSgpO1xyXG4gICAgICAgIGxldCBpZExhc3QgPSB0aGlzLkN1cnJlbnRJZGVudGl0eTtcclxuXHJcbiAgICAgICAgaWYgKCFpZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmNoZWNrU2Vzc2lvblRpbWVvdXQoaWQpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50SWRlbnRpdHkgJiYgKGlkLklkQWNjb3VudCAhPSBpZExhc3Q/LklkQWNjb3VudCB8fCBpZC5JZFVzZXIgIT0gaWRMYXN0Py5JZFVzZXIgfHwgaWQuSWR0ZW5hbnQgIT0gaWRMYXN0Py5JZHRlbmFudCkpIHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5sYy5sb2MoXCJMZSBpbmZvcm1hemlvbmkgZGkgU2Vzc2lvbmUgKFRlbmFudC9BY2NvdW50KSBzb25vIGNhbWJpYXRlIGEgc2VndWl0byBkaSB1biBsb2dpbiBzdSBtb2R1bG8gZGl2ZXJzbyB1dGlsaXp6YW5kbyBkaXZlcnNvIFRlbmFudC9VdGVudGUgc3VsbG8gc3Rlc3NvIGJyb3dzZXIuIFNpIHN1Z2dlcmlzY2UgZGkgcmljYXJpY2FyZSBsYSBwYWdpbmEgKENUUkwgKyBGNSlcIikpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuQ3VycmVudElkZW50aXR5ID0gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWN0aXZlSmFjZU1vZHVsZXMoKSB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldDxBY3RpdmVNb2R1bGVWaWV3W10+KEdFVF9KYWNlX0dldEFjdGl2ZUphY2VNb2R1bGVzKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Nb2R1bGVzID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGF0ZS5Nb2R1bGVzID0gdGhpcy5Nb2R1bGVzO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tTZXNzaW9uVGltZW91dChpZGVudGl0eTogSmFjZUlkZW50aXR5KSB7XHJcbiAgICAgICAgaWYgKGRheWpzKCkgPj0gZGF5anMoaWRlbnRpdHkuRXhwaXJhdGlvblRpbWUpLnN1YnRyYWN0KDEwLCAnbWludXRlcycpICYmICFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5leHBpcmVkU2Vzc2lvbk1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxjLmxvYygnRXhwaXJlZCBzZXNzaW9uJyksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxjLmxvYyhcIkwnYXR0dWFsZSBzZXNzaW9uZSBkaSBsYXZvcm8gbm9uIMOoIHBpw7kgdmFsaWRhLjxicj5TaSBwcmVnYSBkaSBlc2VndWlyZSBudW92YW1lbnRlIGlsIGxvZ2luLlwiKSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrU2Vzc2lvblRpbWVvdXQgLSByZWRpcmVjdGluZyB0byBsb2dpblwiKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImxvZ2luXCJdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnNldEhlYWRlckhlaWdodCh0aGlzLm5hdmJhci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvZ2dsZU1lbnUoKSB7XHJcbiAgICAgICAgdGhpcy5pc01lbnVDb2xsYXBzZWQgPSAhdGhpcy5pc01lbnVDb2xsYXBzZWQ7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUubm90aWZ5RGF0YUNoYW5nZWQoXCJtZW51LmlzQ29sbGFwc2VkXCIsIHRoaXMuaXNNZW51Q29sbGFwc2VkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbG9nb3V0KCkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vbG9nb3V0P2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VNb2R1bGUoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBteWNvbmZpZy5KYWNlRGFzaGJvYXJkVXJsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VUZW5hbnQoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dpbi90ZW5hbnQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJVc2VyUHJlZmVyZW5jZXMoKSB7XHJcbiAgICAgICAgdGhpcy5wcmVmc1NlcnZpY2UuY2xlYXIoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIlByZWZlcmVuemUgdXRlbnRlIHJpcHVsaXRlXCIpKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckNhY2hlQ2xpZW50KCkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFVudGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkNhY2hlIFJpcHVsaXRhXCIpKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckNhY2hlU2VydmVyKCkge1xyXG4gICAgICAgIHRoaXMuaHR0cC5nZXQoR0VUX0NhY2hlX0NsZWFyQWxsQ2FjaGVzKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQWxsKCkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFVudGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEdFVF9DYWNoZV9DbGVhckFsbENhY2hlcykuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkNhY2hlIFJpcHVsaXRhXCIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhck1lc3NhZ2VzKCkge1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5jbGVhck1lc3NhZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcGxldGVkSm9iQ2xpY2tlZChqb2I6IEFwcGxpY2F0aW9uSm9iKSB7XHJcbiAgICAgICAgdGhpcy5janJTZXJ2aWNlLnJlZGlyZWN0KGpvYik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogR2VzdGlvbmUgUmljZXJjYSBHbG9iYWxlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gICAgcHVibGljIFNlbGVjdGVkUmVzdWx0OiBTZWFyY2hSZXN1bHQgPSBudWxsO1xyXG4gICAgcHVibGljIFNob3dTaW5nbGVUYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHNlYXJjaFRlcm06IHN0cmluZztcclxuICAgIHNlYXJjaGluZ1Rlcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNlYXJjaFJlc3VsdDogU2VhcmNoUmVzdWx0Q29udGFpbmVyO1xyXG5cclxuICAgIHNlYXJjaFJlcXVlc3QoKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLkVuYWJsZWQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLnNlYXJjaCh0aGlzLnNlYXJjaFRlcm0pLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0LnJlc3VsdHMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIHQuZXN0X2NvbHMgPSB0LmNvbHVtbnMubWFwKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2xMaW5rID0gdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLmdlbmVyYXRlQ29sdW1uTGluayhjKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbihjLmRlc2NyaXB0aW9uLCBjLmlkLCBjb2xMaW5rPy5yb3V0ZVBhdGgsIGNvbExpbms/LnJvdXRlUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoTW9kZWxDaGFuZ2VkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hpbmdUZXJtKVxyXG4gICAgICAgICAgICB0aGlzLmNsb3NlU2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VTZWFyY2goKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIEZpbHRlclNlYXJjaFJlc3VsdHMoaXRlbTogU2VhcmNoUmVzdWx0ID0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuU2hvd1NpbmdsZVRhYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLlNlbGVjdGVkUmVzdWx0ID0gdGhpcy5zZWFyY2hSZXN1bHQ/LnJlc3VsdHM/LmZpbmQoZiA9PiBmLmRlc2NyaXB0aW9uID09IGl0ZW0uZGVzY3JpcHRpb24pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLlNob3dTaW5nbGVUYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59IiwiPG5hdiAjbmF2YmFyIGNsYXNzPVwibmF2IGF6LW5hdmJhciBmaXhlZC10b3BcIj5cclxuICAgIDwhLS0gTG9nbyAtLT5cclxuICAgIDxhIGNsYXNzPVwibmF2YmFyLWJyYW5kXCIgcm91dGVyTGluaz1cIi9wYWdlcy9kYXNoYm9hcmRcIj5cclxuICAgICAgICA8aW1nIHNyYz1cIi4uL2Fzc2V0cy9pbWcvbG9nby9sb2dvLnBuZ1wiIGNsYXNzPVwiZC1tZC1ibG9jayBkLW5vbmVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206IC0xMHB4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtZmUtdiBkLW1kLWJsb2NrIGQtbm9uZVwiPnt7IGFwcGxpY2F0aW9uVmVyc2lvbiB9fTwvZGl2PlxyXG5cclxuICAgICAgICA8aW1nIHNyYz1cIi4uL2Fzc2V0cy9pbWcvbG9nby9sb2dvX3NtLnBuZ1wiIGNsYXNzPVwiZC1tZC1ub25lXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAtMTBweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWZlLXNtLXYgZC1tZC1ub25lXCI+e3sgYXBwbGljYXRpb25WZXJzaW9uIH19PC9kaXY+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPHVsIGNsYXNzPVwibmF2IG5hdmJhci1uYXYgbmF2YmFyLWZpbGxhYmxlXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDwhLS0gQ29sbGFwc2UgbWVuw7kgYSBzaW5pc3RyYSAtLT5cclxuICAgICAgICA8bGkgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgICA8YSAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCIgc3R5bGU9XCJjb2xvcjogd2hpdGU7IGZvbnQtc2l6ZTogMjBweDsgYWxpZ24tc2VsZjogY2VudGVyO1wiIGNsYXNzPVwiZmEgZmEtbmF2aWNvblwiPjwvYT5cclxuICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgICAgICA8bGkgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImFwcC1zZWFyY2hcIiBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlcjtcIiByb2xlPVwic2VhcmNoXCIgKG5nU3VibWl0KT1cInNlYXJjaFJlcXVlc3QoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIiAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hNb2RlbENoYW5nZWQoKVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZSA6IHRydWV9XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgIDxhPjxpIGNsYXNzPVwiaW9uLWlvcy1zZWFyY2gtc3Ryb25nXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gaGlkZGVuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgPHVsIGNsYXNzPVwibmF2XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bzsgcGFkZGluZy10b3A6IDVweDsgcGFkZGluZy1yaWdodDogMTBweDtcIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS1Ecm9wZG93biBqb2IgaW4gZXNlY3V6aW9uZS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb24gYXBwLW1hcmdpbi1yaWdodC0xMFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbY2xhc3MuZmEtc3Bpbl09XCJfc3RhdGUuam9ic0luUHJvZ3Jlc3MgPiAwXCIgY2xhc3M9XCJmYSBmYS1jb2cgZHJvcGRvd24tdG9nZ2xlIGFwcC1wb2ludGVyXCIgc3R5bGU9XCJjb2xvcjogd2hpdGU7IGZvbnQtc2l6ZTogMjBweDsgYWxpZ24tc2VsZjogY2VudGVyO1wiIGRyb3Bkb3duVG9nZ2xlPjwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwibmF2LWpvYnMtbWVudVwiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J0pvYiBBcHBsaWNhdGl2aScgfCBsb2NhbGl6ZSA6IGxjfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBtLXQtbWluLTJcIj48bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cIl9zdGF0ZS5ub3RpZnlPbkNvbXBsZXRlZEpvYnNcIiAoY2xpY2spPVwiY2xlYXJNZXNzYWdlcygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+PC9tYXQtc2xpZGUtdG9nZ2xlPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGFwcC1tYXJnaW4tcmlnaHQtNVwiPnt7J05vdGlmaWNoZScgfCBsb2NhbGl6ZSA6IGxjfX06PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9zdGF0ZS5hbGxKb2JzLmxlbmd0aCA9PSAwXCIgY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3QtZW1wdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tcIkFsIG1vbWVudG8gbm9uIGMnw6ggbnVsbGEgaW4gZXNlY3V6aW9uZVwiIHwgbG9jYWxpemUgOiBsY319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBqb2Igb2YgX3N0YXRlLmFsbEpvYnM7IGxldCBsYXN0ID0gbGFzdFwiIFtjbGFzcy5hcHAtbWFyZ2luLWJvdHRvbS01XT1cIiFsYXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtbGlzdC1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIiB0aXRsZT1cInt7am9iLmRlc2NyaXB0aW9ufX1cIj57e2pvYi5zbWFsbGRlc2NyaXB0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJqb2IuY29tcGxldGVkXCIgdGl0bGU9XCJ7e2pvYi5kZXNjcmlwdGlvbn19XCIgY2xhc3M9XCJhcHAtbGluayBhcHAtbm8tc2VsZWN0aW9uIGFwcC1pbmxpbmUgYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY29tcGxldGVkSm9iQ2xpY2tlZChqb2IpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+e3tqb2Iuc21hbGxkZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJwdWxsLXJpZ2h0XCIgKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiPnt7am9iLnBlcmNlbnRhZ2V9fSU8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwicHVsbC1yaWdodFwiICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiPnt7ICdDb21wbGV0ZWQnIHwgbG9jYWxpemUgOiBsYyB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb2dyZXNzYmFyICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIiBbbWF4XT1cIjEwMFwiIFt2YWx1ZV09XCJqb2IucGVyY2VudGFnZVwiIFtzdHJpcGVkXT1cInRydWVcIiBbYW5pbWF0ZV09XCJ0cnVlXCI+PC9wcm9ncmVzc2Jhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvZ3Jlc3NiYXIgKm5nSWY9XCJqb2IuY29tcGxldGVkXCIgdHlwZT1cInN1Y2Nlc3NcIiBbbWF4XT1cIjEwMFwiIFt2YWx1ZV09XCIxMDBcIiBbc3RyaXBlZF09XCJmYWxzZVwiIFthbmltYXRlXT1cImZhbHNlXCI+PC9wcm9ncmVzc2Jhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLURyb3Bkb3duIG1vZHVsaS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb24gYXBwLW1hcmdpbi1yaWdodC0xMFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZhIGZhLXRoIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlclwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMjBweDsgYWxpZ24tc2VsZjogY2VudGVyO1wiIGRyb3Bkb3duVG9nZ2xlPjwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwibW9kdWxlLWJvYXJkLW1lbnUgY29udGFpbmVyXCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+PGphY2UtbW9kdWxlcy1ib2FyZCBbTW9kdWxlc109XCJNb2R1bGVzXCI+PC9qYWNlLW1vZHVsZXMtYm9hcmQ+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUHVudGkgZGkgZXN0ZW5zaW9uZSBwZXIgQ2FsZW5kYXIsIENoYXRyb29tIGUgY2hpIHBpw7kgbmUgaGEgcGnDuSBuZSBtZXR0YS4uLiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uIGFwcC1tYXJnaW4tcmlnaHQtMTBcIiAqbmdGb3I9XCJsZXQgY29tcCBvZiBleHRlbnNpb25Db21wb25lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudEhvc3RdPVwiY29tcFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLURyb3Bkb3duIFVzZXIgTWVudS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb25cIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCIgc3R5bGU9XCJoZWlnaHQ6NDVweDsgcGFkZGluZy1yaWdodDogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIHVzZXItbGluayBhcHAtcG9pbnRlclwiIGRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnQgYXBwLW1hcmdpbi1yaWdodC0xMCBhcHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVzZXJJY29uO1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtd2hpdGUtdGV4dCBwdWxsLXJpZ2h0IGQtbm9uZSBkLXNtLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWJ1Z0luZm9zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPHVsICpkcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHQtdXNlciBhcHAtbm8tcGFkZGluZ1wiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1c2VySWNvbjsgY29udGV4dDogeyAkaW1wbGljaXQ6IHtyaWdodDogNjJ9IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtd2hpdGUtdGV4dCBhcHAtbWFyZ2luLXRvcC0xMCBhcHAtbWFyZ2luLWJvdHRvbS0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVidWdJbmZvc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiICpuZ0lmPVwibGMuTG9jYWxlID09ICdlbi1VUydcIiAoY2xpY2spPVwibGMuY2hhbmdlTG9jYWxlKCdpdC1JVCcpXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZVwiPiZuYnNwOzwvaT5Td2l0Y2ggdG8gSXRhbGlhbiBTaXRlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiICpuZ0lmPVwibGMuTG9jYWxlID09ICdpdC1JVCdcIiAoY2xpY2spPVwibGMuY2hhbmdlTG9jYWxlKCdlbi1VUycpXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZVwiPiZuYnNwOzwvaT5QYXNzYSBhbCBTaXRvIGluIEluZ2xlc2U8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNoYW5nZU1vZHVsZSgpXCI+PGkgY2xhc3M9XCJmYSBmYS10aFwiPiZuYnNwOzwvaT57eydDYW1iaWEgTW9kdWxvJyB8IGxvY2FsaXplIDogbGN9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hhbmdlVGVuYW50KClcIj48aSBjbGFzcz1cImZhIGZhLWJ1aWxkaW5nXCI+Jm5ic3A7PC9pPnt7J0NhbWJpYSBUZW5hbnQnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbGVhclVzZXJQcmVmZXJlbmNlcygpXCI+PGkgY2xhc3M9XCJmYSBmYS11c2VyLXRpbWVzXCI+Jm5ic3A7PC9pPnt7J1JpcHVsaXNjaSBsZSBQcmVmZXJlbnplIFV0ZW50ZScgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj48aSBjbGFzcz1cImZhIGZhLXJlY3ljbGUgXCI+Jm5ic3A7PC9pPnt7J1JpcHVsaXNjaSBsYSBDYWNoZScgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwibG9nb3V0KClcIj48aSBjbGFzcz1cImZhIGZhLXBvd2VyLW9mZlwiPiZuYnNwOzwvaT5Mb2cgb3V0PC9hPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvdWw+XHJcbjwvbmF2PlxyXG5cclxuPCEtLSBUZW1wbGF0ZSBwZXIgbCdpY29uYSBkZWxsJ3V0ZW50ZSAtLT5cclxuPG5nLXRlbXBsYXRlICN1c2VySWNvbiBsZXQtY29udGV4dD5cclxuICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL3VzZXJzL3VzZXIuanBnJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZ1wiPlxyXG4gICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvZXZlbnRzL2NocmlzdG1hcy5wbmcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMFwiIFtzdHlsZS5yaWdodC5weF09XCJjb250ZXh0Py5yaWdodCB8fCB1bmRlZmluZWRcIiAqbmdJZj1cIl9zdGF0ZS5jaHJpc3RtYXNUaW1lXCI+XHJcbiAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy9ldmVudHMvaGFsbG93ZWVuLnBuZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWcgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wXCIgW3N0eWxlLnJpZ2h0LnB4XT1cImNvbnRleHQ/LnJpZ2h0IHx8IHVuZGVmaW5lZFwiICpuZ0lmPVwiX3N0YXRlLmhhbGxvd2VlblRpbWVcIj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVGVtcGxhdGUgcGVyIGxlIGluZm9ybWFpem9uaSBkaSBkZWJ1ZzogQW1iaWVudGUsIHJ1b2xpLCBwZXJtZXNzaSBlY2MgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGVidWdJbmZvcz5cclxuICAgIDxkaXY+e3tDdXJyZW50SWRlbnRpdHk/LkZ1bGxOYW1lfX0gLSAoe3tDdXJyZW50SWRlbnRpdHk/LlRlbmFudE5hbWV9fSk8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtLWNlbnRlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBsaWNhdGlvbkVudmlyb25tZW50ID09IDJcIj57eydBbWJpZW50ZSBkaSBTdmlsdXBwbycgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSA1XCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZycgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSA2XCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZyBBJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBsaWNhdGlvbkVudmlyb25tZW50ID09IDFcIj57eydBbWJpZW50ZSBkaSBQcm9kdXppb25lJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXY+UGVybWlzc2lvbnM6PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcCBvZiBDdXJyZW50SWRlbnRpdHkuUGVybWlzc2lvbnNcIj57e3B9fTwvZGl2PlxyXG4gICAgICAgIDxkaXY+Um9sZXM6PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgciBvZiBDdXJyZW50SWRlbnRpdHkuUm9sZXNcIj57e3J9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIE92ZXJsYXkgcGVyIGxhIHJpY2VyY2EgZ2xvYmFsZSAtLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGluZ1Rlcm0gfHwgc2VhcmNoUmVzdWx0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwLWFic29sdXRlIGFwcC1zZWFyY2gtYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLXJlc3VsdC1ib3hcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGluZ1Rlcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj48aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiPjwvaT5TdG8gZWZmZXR0dWFuZG8gbGEgcmljZXJjYS4uLjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaFJlc3VsdCAmJiAhc2VhcmNoaW5nVGVybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BhemlvIGEgc2luaXN0cmEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBCbG9jY28gY29uIGxlIGNhdGVnb3JpZSBkZWkgcmlzdWx0YXRpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+PGEgY2xhc3M9XCJmYSBmYS10aW1lcyB0ZXh0LWRhbmdlciBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTAgYXBwLWZzLTIwIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlU2VhcmNoKCk7XCI+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkNhdGVnb3JpZSBkaSBSaWNlcmNhPC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcG9pbnRlciBhcHAtbGlua1wiIFtjbGFzcy5hcHAtYm9sZF09XCIhU2VsZWN0ZWRSZXN1bHQgJiYgIVNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJGaWx0ZXJTZWFyY2hSZXN1bHRzKClcIj57e1NlbGVjdGVkUmVzdWx0ID8gJy0nIDogJz4nfX0gTW9zdHJhIFR1dHRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlYXJjaFJlc3VsdC5yZXN1bHRzXCIgY2xhc3M9XCJhcHAtcG9pbnRlciBhcHAtbGlua1wiIFtjbGFzcy5hcHAtYm9sZF09XCJTZWxlY3RlZFJlc3VsdD8uZGVzY3JpcHRpb24gPT0gaXRlbS5kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW0pXCI+e3tTZWxlY3RlZFJlc3VsdD8uZGVzY3JpcHRpb24gPT0gaXRlbS5kZXNjcmlwdGlvbiA/ICc+JyA6ICctJ319IE1vc3RyYSB7e2l0ZW0uZGVzY3JpcHRpb259fSAoe3tpdGVtLml0ZW1zPy5sZW5ndGh9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEZXR0YWdsaW8gcmlzdWx0YXRpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IGhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFTZWxlY3RlZFJlc3VsdCAmJiAhU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByZXMgb2Ygc2VhcmNoUmVzdWx0LnJlc3VsdHM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIiBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCJpID09IChzZWFyY2hSZXN1bHQucmVzdWx0cz8ubGVuZ3RoIC0gMSkgPyAyIDogMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tyZXMuZGVzY3JpcHRpb259fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVzLXRhYmxlIFsobmdNb2RlbCldPVwicmVzLml0ZW1zXCIgW0R5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbl09XCJyZXMuZXN0X2NvbHNcIiBbQXJyYXltb2RlSXRlbXNQZXJQYWdlXT1cIjEwXCI+PC9lcy10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNlbGVjdGVkUmVzdWx0ICYmIFNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e1NlbGVjdGVkUmVzdWx0LmRlc2NyaXB0aW9ufX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcy10YWJsZSBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkUmVzdWx0Lml0ZW1zXCIgW0R5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbl09XCJTZWxlY3RlZFJlc3VsdC5lc3RfY29sc1wiIFtBcnJheW1vZGVJdGVtc1BlclBhZ2VdPVwiMTBcIj48L2VzLXRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BhemlvIGEgZGVzdHJhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==