ngx-mat-tui-calendar 12.0.7 → 12.0.11

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.
@@ -23,7 +23,7 @@ export class NgxMatTuiCalendarEditorDialogComponent {
23
23
  this.closed = false;
24
24
  this.isAllDay = false;
25
25
  this.themeClass = '';
26
- console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: data:', data);
26
+ // console.log('NgxMatTuiCalendarEditorDialogComponent.constructor: data:', data);
27
27
  this.color = data.darkMode ? 'accent' : 'primary';
28
28
  const schedule = data.schedule;
29
29
  if (schedule == null) {
@@ -122,7 +122,7 @@ export class NgxMatTuiCalendarEditorDialogComponent {
122
122
  this.dialogRef.close({ schedule, performDelete: (performDelete == true) });
123
123
  }
124
124
  log(str) {
125
- console.warn(str);
125
+ // console.warn(str);
126
126
  }
127
127
  onUseAllDay() {
128
128
  this.isAllDay = true;
@@ -144,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
144
144
  type: Inject,
145
145
  args: [MAT_DIALOG_DATA]
146
146
  }] }, { type: i1.MatDialogRef }]; } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0LXR1aS1jYWxlbmRhci9zcmMvbGliL25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cvbmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0LXR1aS1jYWxlbmRhci9zcmMvbGliL25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cvbmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUEyQixNQUFNLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUF1QixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQWdCLGVBQWUsRUFBOEIsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7OztBQVM3QyxNQUFNLE9BQU8sc0NBQXNDO0lBZWpELFlBQ2tDLElBQTJCLEVBQ25ELFNBQStEO1FBRXZFLDBGQUEwRjtRQUgxRCxTQUFJLEdBQUosSUFBSSxDQUF1QjtRQUNuRCxjQUFTLEdBQVQsU0FBUyxDQUFzRDtRQWZ6RSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFPeEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBUXRCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkRBQTJELEVB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QVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDOztvSUE3SlUsc0NBQXNDLGtCQWdCdkMsZUFBZTt3SEFoQmQsc0NBQXNDLDBFQ2ZuRCwrM0lBaUVROzRGRGxESyxzQ0FBc0M7a0JBTGxELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztvQkFDOUMsV0FBVyxFQUFFLHFEQUFxRDtvQkFDbEUsU0FBUyxFQUFFLENBQUMscURBQXFELENBQUM7aUJBQ25FOzswQkFpQkksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5nRm9ybSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBEYXRlVHlwZSwgZGVmYXVsdCBhcyBDYWxlbmRhciwgSUV2ZW50U2NoZWR1bGVPYmplY3QsIElTY2hlZHVsZSwgVFpEYXRlIH0gZnJvbSAndHVpLWNhbGVuZGFyJztcblxuaW1wb3J0IHsgTG9jYWxEYXRlIH0gZnJvbSAnLi4vbG9jYWwtZGF0ZS5qcyc7XG5pbXBvcnQgeyBDYWxlbmRhckVkaXRvck9wdGlvbnMgfSBmcm9tICcuLi9jYWxlbmRhci1lZGl0b3Itb3B0aW9ucyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtbWF0LXR1aS1jYWxlbmRhci1lZGl0b3ItZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdFR1aUNhbGVuZGFyRWRpdG9yRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBpZDogc3RyaW5nO1xuICB0aXRsZVN0cjogc3RyaW5nID0gJyc7XG4gIGxvY2F0aW9uU3RyOiBzdHJpbmcgPSAnJztcbiAgY2xvc2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGV2ZW50Rm9ybTogRm9ybUdyb3VwO1xuICBkYXRlOiBEYXRlO1xuICBzdGFydERhdGU6IERhdGU7XG4gIGVuZERhdGU6IERhdGU7XG4gIHN0YXJ0VGltZTogRGF0ZTtcbiAgZW5kVGltZTogRGF0ZTtcbiAgaXNBbGxEYXk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29sb3I6IHN0cmluZztcbiAgdGhlbWVDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBDYWxlbmRhckVkaXRvck9wdGlvbnMsXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRUdWlDYWxlbmRhckVkaXRvckRpYWxvZ0NvbXBvbmVudD4sXG4gICkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdOZ3hNYXRUdWlDYWxlbmRhckVkaXRvckRpYWxvZ0NvbXBvbmVudC5jb25zdHJ1Y3Rvcjogc2NoZWR1bGU6Jywgc2NoZWR1bGUpO1xuXG4gICAgY29uc29sZS5sb2coJ05neE1hdFR1aUNhbGVuZGFyRWRpdG9yRGlhbG9nQ29tcG9uZW50LmNvbnN0cnVjdG9yOiBkYXRhOicsIGRhdGEpO1xuICAgIHRoaXMuY29sb3IgPSBkYXRhLmRhcmtNb2RlID8gJ2FjY2VudCcgOiAncHJpbWFyeSc7XG5cbiAgICBjb25zdCBzY2hlZHVsZSA9IGRhdGEuc2NoZWR1bGU7XG4gICAgaWYgKHNjaGVkdWxlID09IG51bGwpIHtcbiAgICAgIHRoaXMuaWQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc2NoZWR1bGUuaWQpIHtcbiAgICAgICAgdGhpcy5pZCA9IHNjaGVkdWxlLmlkLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudGl0bGVTdHIgPSAoc2NoZWR1bGUudGl0bGUpID8gc2NoZWR1bGUudGl0bGUudG9TdHJpbmcoKSA6ICcnO1xuICAgIHRoaXMubG9jYXRpb25TdHIgPSAoc2NoZWR1bGUubG9jYXRpb24pID8gc2NoZWR1bGUubG9jYXRpb24udG9TdHJpbmcoKSA6ICcnO1xuXG5cbiAgICB0aGlzLmlzQWxsRGF5ID0gKHNjaGVkdWxlLmlzQWxsRGF5ID09IHRydWUpO1xuXG4gICAgdGhpcy5zdGFydERhdGUgPSBMb2NhbERhdGUuY29udmVydFRvSnNEYXRlKHNjaGVkdWxlLnN0YXJ0KSBhcyBEYXRlO1xuICAgIHRoaXMuZW5kRGF0ZSA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUoc2NoZWR1bGUuZW5kKSBhcyBEYXRlO1xuXG4gICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgdGhpcy5lbmRUaW1lID0gbmV3IERhdGUodGhpcy5lbmREYXRlKTtcbiAgICB0aGlzLnN0YXJ0RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAxKTtcbiAgICB0aGlzLmVuZERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMSk7XG5cbiAgICB0aGlzLmV2ZW50Rm9ybSA9IG5ldyBGb3JtR3JvdXAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy50aXRsZVN0ciksXG4gICAgICAgIGxvY2F0aW9uOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5sb2NhdGlvblN0ciksXG4gICAgICAgIHNjaGVkdWxlVHlwZTogbmV3IEZvcm1Db250cm9sKChzY2hlZHVsZS5pc0FsbERheSA9PSB0cnVlKSA/IFwiYWxsLWRheVwiIDogXCJ0aW1lLXNsb3RcIiksXG4gICAgICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5zdGFydERhdGUpLFxuICAgICAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmVuZERhdGUpLFxuICAgICAgICBkYXRlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5zdGFydERhdGUpLFxuICAgICAgICB0aW1lMTogbmV3IEZvcm1Db250cm9sKHRoaXMuc3RhcnRUaW1lKSxcbiAgICAgICAgdGltZTI6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmVuZFRpbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICB9LFxuICAgICAgdGhpcy5nZXREYXRlVmFsaWRhdG9yKCksXG4gICAgKTtcblxuICB9XG5cbiAgZ2V0RGF0ZVZhbGlkYXRvcigpIHtcbiAgICBjb25zdCB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKGdyb3VwOiBGb3JtR3JvdXApOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcbiAgICAgIGNvbnN0IHNjaGVkdWxlVHlwZSA9IGdyb3VwLmdldChcInNjaGVkdWxlVHlwZVwiKS52YWx1ZTtcbiAgICAgIGlmIChncm91cC5nZXQoXCJzY2hlZHVsZVR5cGVcIikudmFsdWUgPT0gXCJ0aW1lLXNsb3RcIikge1xuICAgICAgICBsZXQgdGltZTEgPSBncm91cC5nZXQoXCJ0aW1lMVwiKS52YWx1ZTtcbiAgICAgICAgbGV0IHRpbWUyID0gZ3JvdXAuZ2V0KFwidGltZTJcIikudmFsdWU7XG4gICAgICAgIGlmICh0aW1lMSA+PSB0aW1lMikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlczogXCJFbmQgdGltZSBtdXN0IGJlIGxhdGVyIHRoYW4gdGhlIHN0YXJ0IHRpbWVcIlxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9O1xuICAgIHJldHVybiB2YWxpZGF0b3I7XG4gIH1cblxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGNvbnNvbGUuZGlyKGBEaWFsb2cgY29uZmlnOiAke3RoaXMuZGlhbG9nQ29uZmlnfWApO1xuICAgIC8vIGxldCBzdGFydDogRGF0ZSA9IChMb2NhbERhdGUuY29udmVydFRvSnNEYXRlKHRoaXMuc2NoZWR1bGUuc3RhcnQpKS50b0RhdGUoKTtcbiAgICAvLyBsZXQgZW5kOiBEYXRlID0gKExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5zY2hlZHVsZS5lbmQpKS50b0RhdGUoKTtcbiAgICAvLyB0aGlzLmV2ZW50Rm9ybS5nZXQoXCJkYXRlXCIpLnNldFZhbHVlKHN0YXJ0KTtcbiAgICAvLyB0aGlzLmV2ZW50Rm9ybS5nZXQoXCJzdGFydFwiKS5zZXRWYWx1ZShzdGFydCk7XG4gICAgLy8gdGhpcy5ldmVudEZvcm0uZ2V0KFwiZW5kXCIpLnNldFZhbHVlKGVuZCk7XG5cbiAgfVxuXG5cblxuICBvblNhdmUoZm9ybTogTmdGb3JtKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uU2F2ZSBmb3JtLmludmFsaWQ9JHtmb3JtLmludmFsaWR9OyB0aGlzLmNsb3NlZD0ke3RoaXMuY2xvc2VkfSB0aGlzLnRpdGxlU3RyPSR7dGhpcy50aXRsZVN0cn1gKTtcbiAgICBpZiAoZm9ybS5pbnZhbGlkIHx8IHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgbGV0IHNjaGVkdWxlID0gdGhpcy5kYXRhLnNjaGVkdWxlO1xuICAgIHNjaGVkdWxlLnRpdGxlID0gdGhpcy5ldmVudEZvcm0uZ2V0KFwidGl0bGVcIikudmFsdWU7XG4gICAgc2NoZWR1bGUubG9jYXRpb24gPSB0aGlzLmV2ZW50Rm9ybS5nZXQoXCJsb2NhdGlvblwiKS52YWx1ZTtcbiAgICBzY2hlZHVsZS5pc0FsbERheSA9IHRoaXMuaXNBbGxEYXk7XG4gICAgc2NoZWR1bGUuY2F0ZWdvcnkgPSB0aGlzLmlzQWxsRGF5ID8gJ2FsbGRheScgOiAndGltZSc7ICAvLyBDQVRFR09SWSBNVVNUIEJFIERFRklORUQ6ICdtaWxlc3RvbmUnLCAndGFzaycsIGFsbGRheScsICd0aW1lJ1xuICAgIGlmICh0aGlzLmlzQWxsRGF5KSB7XG4gICAgICBzY2hlZHVsZS5zdGFydCA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwic3RhcnRcIikudmFsdWUpIGFzIERhdGU7XG4gICAgICBzY2hlZHVsZS5zdGFydC5zZXRIb3VycygwLCAwLCAwLCAxKTtcbiAgICAgIHNjaGVkdWxlLmVuZCA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwiZW5kXCIpLnZhbHVlKSBhcyBEYXRlO1xuICAgICAgc2NoZWR1bGUuZW5kLnNldEhvdXJzKDAsIDAsIDAsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZSA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwidGltZTFcIikudmFsdWUpIGFzIERhdGU7XG4gICAgICBzY2hlZHVsZS5zdGFydCA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwiZGF0ZVwiKS52YWx1ZSkgYXMgRGF0ZTtcbiAgICAgIHNjaGVkdWxlLnN0YXJ0LnNldEhvdXJzKFxuICAgICAgICB0aGlzLnN0YXJ0VGltZS5nZXRIb3VycygpLFxuICAgICAgICB0aGlzLnN0YXJ0VGltZS5nZXRNaW51dGVzKCksXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lLmdldFNlY29uZHMoKSxcbiAgICAgICAgdGhpcy5zdGFydFRpbWUuZ2V0TWlsbGlzZWNvbmRzKCksXG4gICAgICApO1xuICAgICAgdGhpcy5lbmRUaW1lID0gTG9jYWxEYXRlLmNvbnZlcnRUb0pzRGF0ZSh0aGlzLmV2ZW50Rm9ybS5nZXQoXCJ0aW1lMlwiKS52YWx1ZSkgYXMgRGF0ZTtcbiAgICAgIHNjaGVkdWxlLmVuZCA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwiZGF0ZVwiKS52YWx1ZSkgYXMgRGF0ZTtcbiAgICAgIHNjaGVkdWxlLmVuZC5zZXRIb3VycyhcbiAgICAgICAgdGhpcy5lbmRUaW1lLmdldEhvdXJzKCksXG4gICAgICAgIHRoaXMuZW5kVGltZS5nZXRNaW51dGVzKCksXG4gICAgICAgIHRoaXMuZW5kVGltZS5nZXRTZWNvbmRzKCksXG4gICAgICAgIHRoaXMuZW5kVGltZS5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKGBwb3AtdXAtZXZlbnQtZWRpdG9yLmNvbXBvbmVudC50czogdXNlciBjbGlja2VkIFNBVkUgZXZlbnQ9JHtzY2hlZHVsZX1gKTtcbiAgICAvLyB0aGlzLmV2ZW50T3V0cHV0LmVtaXQoc2NoZWR1bGUpO1xuICAgIGZvcm0ucmVzZXRGb3JtKCk7XG4gICAgdGhpcy5jbG9zZU1lKHNjaGVkdWxlKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCkge1xuICAgIC8vIHRoaXMuY2FuY2VsbGVkLmVtaXQoKTtcbiAgICAvLyBjb25zb2xlLmxvZygnb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6IHVzZXIgY2xpY2tlZCBDQU5DRUwnKTtcbiAgICB0aGlzLmNsb3NlTWUobnVsbCk7XG4gIH1cblxuICBvbkRlbGV0ZSgpIHtcbiAgICAvLyB0aGlzLmNhbmNlbGxlZC5lbWl0KCk7XG4gICAgLy8gY29uc29sZS5sb2coJ29wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yOiB1c2VyIGNsaWNrZWQgREVMRVRFJyk7XG4gICAgdGhpcy5jbG9zZU1lKHRoaXMuZGF0YS5zY2hlZHVsZSwgdHJ1ZSk7XG4gIH1cblxuXG4gIGNsb3NlTWUoc2NoZWR1bGU6IElTY2hlZHVsZSwgcGVyZm9ybURlbGV0ZT86IGJvb2xlYW4pIHtcbiAgICAvLyBjb25zb2xlLmxvZygnY2xvc2VNZTogVGhlIGRpYWxvZyBpcyBjbG9zaW5nJywgc2NoZWR1bGUpO1xuICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IHNjaGVkdWxlLCBwZXJmb3JtRGVsZXRlOiAocGVyZm9ybURlbGV0ZSA9PSB0cnVlKSB9KTtcbiAgfVxuXG4gIGxvZyhzdHIpIHtcbiAgICBjb25zb2xlLndhcm4oc3RyKTtcbiAgfVxuXG4gIG9uVXNlQWxsRGF5KCkge1xuICAgIHRoaXMuaXNBbGxEYXkgPSB0cnVlO1xuICB9XG4gIG9uVXNlVGltZVNsb3QoKSB7XG4gICAgdGhpcy5pc0FsbERheSA9IGZhbHNlO1xuICB9XG5cbn1cbiIsIjxkaXYgW2NsYXNzTmFtZV09XCJkYXRhLnRoZW1lQ2xhc3MgKyAnICcgKyAnZXZlbnQtZWRpdG9yJ1wiPlxuICAgIDxmb3JtIGlkPVwibXktZm9ybVwiIFtmb3JtR3JvdXBdPVwiZXZlbnRGb3JtXCIgY2xhc3M9XCJldmVudC1lZGl0b3ItZm9ybVwiIChzdWJtaXQpPVwib25TYXZlKHBvc3RGb3JtKTtcIiAjcG9zdEZvcm09XCJuZ0Zvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtdGl0bGVcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJlZGl0b3ItdGl0bGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJ0aXRsZVwiIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCIgcGxhY2Vob2xkZXI9XCJUaXRsZVwiPlxuICAgICAgICAgICAgPCEtLSA8bWF0LWVycm9yIHN0eWxlPVwiaGVpZ2h0OiBmaXQtY29udGVudDtcIiAqbmdJZj1cInRpdGxlLmludmFsaWRcIj5QbGVhc2UgZW50ZXIgYSB0aXRsZSAob2YgMSBjaGFyYWN0ZXJzIG9yIG1vcmUpXG4gICAgICAgICAgICAgIGZvclxuICAgICAgICAgICAgICB5b3VyIGV2ZW50LjwvbWF0LWVycm9yPiAtLT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtbG9jYXRpb25cIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJlZGl0b3ItbG9jYXRpb25cIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwibG9jYXRpb25cIiBuYW1lPVwibG9jYXRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJsb2NhdGlvblwiIHBsYWNlaG9sZGVyPVwiTG9jYXRpb25cIj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtcmFkaW9zXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2NvbG9yXT1cImNvbG9yXCIgYXJpYS1sYWJlbD1cIlNlbGVjdCBhbiBvcHRpb25cIiAgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxZW07XCIgbmFtZT1cInNjaGVkdWxlVHlwZVwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzY2hlZHVsZVR5cGVcIiByZXF1aXJlZD5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIHZhbHVlPVwiYWxsLWRheVwiIChjaGFuZ2UpPVwib25Vc2VBbGxEYXkoKVwiIGlkPVwiYnV0dG9uLWFsbC1kYXlcIiBbY29sb3JdPVwiY29sb3JcIiBjbGFzcz1cInJhZGlvLWJ1dHRvblwiPkFsbCBEYXlcbiAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIHZhbHVlPVwidGltZS1zbG90XCIgKGNoYW5nZSk9XCJvblVzZVRpbWVTbG90KClcIiBpZD1cImJ1dHRvbi10aW1lLXNsb3RcIiBbY29sb3JdPVwiY29sb3JcIiBjbGFzcz1cInJhZGlvLWJ1dHRvblwiPlRpbWUgU2xvdFxuICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtZGF0ZVwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImlzQWxsRGF5XCIgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJkYXRlLXJhbmdlLWZvcm0tZmllbGRcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbCBbY29sb3JdPVwiY29sb3JcIj5QaWNrIGEgRGF0ZSBSYW5nZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtjb2xvcl09XCJjb2xvclwiIFtwYW5lbENsYXNzXT1cImRhdGEudGhlbWVDbGFzc1wiIFtyYW5nZVBpY2tlcl09XCJyYW5nZVBpY2tlclwiICNkYXRlUmFuZ2VJbnB1dD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdFN0YXJ0RGF0ZSBwbGFjZWhvbGRlcj1cIlN0YXJ0IGRhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiIG5hbWU9XCJzdGFydFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBwbGFjZWhvbGRlcj1cIkVuZCBkYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW5kXCIgbmFtZT1cImVuZFwiPlxuICAgICAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBbY29sb3JdPVwiY29sb3JcIiBbcGFuZWxDbGFzc109XCJkYXRhLnRoZW1lQ2xhc3NcIiBtYXRTdWZmaXggW2Zvcl09XCJyYW5nZVBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgPG1hdC1kYXRlLXJhbmdlLXBpY2tlciBbY29sb3JdPVwiY29sb3JcIiBjbGFzcz1cInBpY2tlclwiICNyYW5nZVBpY2tlcj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbY29sb3JdPVwiY29sb3JcIiAqbmdJZj1cIiFpc0FsbERheVwiIGNsYXNzPVwiZGF0ZS1mb3JtLWZpZWxkXCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Q2hvb3NlIGEgZGF0ZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImRwaWNrZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCIgbmFtZT1cImRhdGVcIj5cbiAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgW2NvbG9yXT1cImNvbG9yXCIgbWF0U3VmZml4IFtmb3JdPVwiZHBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyIFtjb2xvcl09XCJjb2xvclwiICNkcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaXNBbGxEYXlcIiBjbGFzcz1cImdyaWQtdGltZSB0aW1lLXNsb3RcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJmb3JtLWZpZWxkLXRpbWVcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGFydDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdFRpbWVwaWNrZXIgW2NvbG9yXT1cImNvbG9yXCIgW3N0cmljdF09XCJmYWxzZVwiIGlkPVwidGltZXBpY2tlci1zdGFydFwiIG1vZGU9XCIxMmhcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aW1lMVwiIG5hbWU9XCJ0aW1lMVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGxlYXNlIHNlbGVjdCB0aW1lLi4uXCI+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJmb3JtLWZpZWxkLXRpbWVcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5FbmQ8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRUaW1lcGlja2VyIFtjb2xvcl09XCJjb2xvclwiIFtzdHJpY3RdPVwiZmFsc2VcIiBpZD1cInRpbWVwaWNrZXItZW5kXCIgbW9kZT1cIjEyaFwiIGZvcm1Db250cm9sTmFtZT1cInRpbWUyXCIgbmFtZT1cInRpbWUyXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQbGVhc2Ugc2VsZWN0IHRpbWUuLi5cIj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0FsbERheVwiIGNsYXNzPVwiZ3JpZC1lcnJvclwiPlxuICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImV2ZW50Rm9ybS5pbnZhbGlkXCI+e3sgZXZlbnRGb3JtLmVycm9ycz8uZGF0ZXMgfX08L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtjb2xvcl09XCJjb2xvclwiIGlkPVwiZWRpdG9yLXN1Ym1pdC1idXR0b25cIiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDRweDtcIj5TQVZFPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gaWQ9XCJlZGl0b3ItZGVsZXRlLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25EZWxldGUoKVwiICpuZ0lmPVwiKGRhdGEuc2NoZWR1bGUuaWQhPW51bGwpXCI+REVMRVRFPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gaWQ9XCJlZGl0b3ItY2FuY2VsLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNBTkNFTDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj4iXX0=
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0LXR1aS1jYWxlbmRhci9zcmMvbGliL25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cvbmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0LXR1aS1jYWxlbmRhci9zcmMvbGliL25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cvbmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUEyQixNQUFNLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUF1QixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQWdCLGVBQWUsRUFBOEIsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7OztBQVM3QyxNQUFNLE9BQU8sc0NBQXNDO0lBZWpELFlBQ2tDLElBQTJCLEVBQ3BELFNBQStEO1FBRXRFLDBGQUEwRjtRQUgxRCxTQUFJLEdBQUosSUFBSSxDQUF1QjtRQUNwRCxjQUFTLEdBQVQsU0FBUyxDQUFzRDtRQWZ4RSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFPeEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBUXRCLGtGQUFrRjtRQUNsRixJQUFJLENBQUMsS0FBSyxH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LENBQUM7SUFDeEIsQ0FBQzs7b0lBN0pVLHNDQUFzQyxrQkFnQnZDLGVBQWU7d0hBaEJkLHNDQUFzQywwRUNmbkQsKzNJQWlFUTs0RkRsREssc0NBQXNDO2tCQUxsRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQ0FBb0M7b0JBQzlDLFdBQVcsRUFBRSxxREFBcUQ7b0JBQ2xFLFNBQVMsRUFBRSxDQUFDLHFEQUFxRCxDQUFDO2lCQUNuRTs7MEJBaUJJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOZ0Zvcm0sIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRGF0ZVR5cGUsIGRlZmF1bHQgYXMgQ2FsZW5kYXIsIElFdmVudFNjaGVkdWxlT2JqZWN0LCBJU2NoZWR1bGUsIFRaRGF0ZSB9IGZyb20gJ3R1aS1jYWxlbmRhcic7XG5cbmltcG9ydCB7IExvY2FsRGF0ZSB9IGZyb20gJy4uL2xvY2FsLWRhdGUuanMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi4vY2FsZW5kYXItZWRpdG9yLW9wdGlvbnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LW1hdC10dWktY2FsZW5kYXItZWRpdG9yLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRUdWlDYWxlbmRhckVkaXRvckRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgaWQ6IHN0cmluZztcbiAgdGl0bGVTdHI6IHN0cmluZyA9ICcnO1xuICBsb2NhdGlvblN0cjogc3RyaW5nID0gJyc7XG4gIGNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBldmVudEZvcm06IEZvcm1Hcm91cDtcbiAgZGF0ZTogRGF0ZTtcbiAgc3RhcnREYXRlOiBEYXRlO1xuICBlbmREYXRlOiBEYXRlO1xuICBzdGFydFRpbWU6IERhdGU7XG4gIGVuZFRpbWU6IERhdGU7XG4gIGlzQWxsRGF5OiBib29sZWFuID0gZmFsc2U7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIHRoZW1lQ2xhc3M6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogQ2FsZW5kYXJFZGl0b3JPcHRpb25zLFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRUdWlDYWxlbmRhckVkaXRvckRpYWxvZ0NvbXBvbmVudD4sXG4gICkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdOZ3hNYXRUdWlDYWxlbmRhckVkaXRvckRpYWxvZ0NvbXBvbmVudC5jb25zdHJ1Y3Rvcjogc2NoZWR1bGU6Jywgc2NoZWR1bGUpO1xuXG4gICAgLy8gY29uc29sZS5sb2coJ05neE1hdFR1aUNhbGVuZGFyRWRpdG9yRGlhbG9nQ29tcG9uZW50LmNvbnN0cnVjdG9yOiBkYXRhOicsIGRhdGEpO1xuICAgIHRoaXMuY29sb3IgPSBkYXRhLmRhcmtNb2RlID8gJ2FjY2VudCcgOiAncHJpbWFyeSc7XG5cbiAgICBjb25zdCBzY2hlZHVsZSA9IGRhdGEuc2NoZWR1bGU7XG4gICAgaWYgKHNjaGVkdWxlID09IG51bGwpIHtcbiAgICAgIHRoaXMuaWQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc2NoZWR1bGUuaWQpIHtcbiAgICAgICAgdGhpcy5pZCA9IHNjaGVkdWxlLmlkLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudGl0bGVTdHIgPSAoc2NoZWR1bGUudGl0bGUpID8gc2NoZWR1bGUudGl0bGUudG9TdHJpbmcoKSA6ICcnO1xuICAgIHRoaXMubG9jYXRpb25TdHIgPSAoc2NoZWR1bGUubG9jYXRpb24pID8gc2NoZWR1bGUubG9jYXRpb24udG9TdHJpbmcoKSA6ICcnO1xuXG5cbiAgICB0aGlzLmlzQWxsRGF5ID0gKHNjaGVkdWxlLmlzQWxsRGF5ID09IHRydWUpO1xuXG4gICAgdGhpcy5zdGFydERhdGUgPSBMb2NhbERhdGUuY29udmVydFRvSnNEYXRlKHNjaGVkdWxlLnN0YXJ0KSBhcyBEYXRlO1xuICAgIHRoaXMuZW5kRGF0ZSA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUoc2NoZWR1bGUuZW5kKSBhcyBEYXRlO1xuXG4gICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgdGhpcy5lbmRUaW1lID0gbmV3IERhdGUodGhpcy5lbmREYXRlKTtcbiAgICB0aGlzLnN0YXJ0RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAxKTtcbiAgICB0aGlzLmVuZERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMSk7XG5cbiAgICB0aGlzLmV2ZW50Rm9ybSA9IG5ldyBGb3JtR3JvdXAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy50aXRsZVN0ciksXG4gICAgICAgIGxvY2F0aW9uOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5sb2NhdGlvblN0ciksXG4gICAgICAgIHNjaGVkdWxlVHlwZTogbmV3IEZvcm1Db250cm9sKChzY2hlZHVsZS5pc0FsbERheSA9PSB0cnVlKSA/IFwiYWxsLWRheVwiIDogXCJ0aW1lLXNsb3RcIiksXG4gICAgICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5zdGFydERhdGUpLFxuICAgICAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmVuZERhdGUpLFxuICAgICAgICBkYXRlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5zdGFydERhdGUpLFxuICAgICAgICB0aW1lMTogbmV3IEZvcm1Db250cm9sKHRoaXMuc3RhcnRUaW1lKSxcbiAgICAgICAgdGltZTI6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmVuZFRpbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICB9LFxuICAgICAgdGhpcy5nZXREYXRlVmFsaWRhdG9yKCksXG4gICAgKTtcblxuICB9XG5cbiAgZ2V0RGF0ZVZhbGlkYXRvcigpIHtcbiAgICBjb25zdCB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKGdyb3VwOiBGb3JtR3JvdXApOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcbiAgICAgIGNvbnN0IHNjaGVkdWxlVHlwZSA9IGdyb3VwLmdldChcInNjaGVkdWxlVHlwZVwiKS52YWx1ZTtcbiAgICAgIGlmIChncm91cC5nZXQoXCJzY2hlZHVsZVR5cGVcIikudmFsdWUgPT0gXCJ0aW1lLXNsb3RcIikge1xuICAgICAgICBsZXQgdGltZTEgPSBncm91cC5nZXQoXCJ0aW1lMVwiKS52YWx1ZTtcbiAgICAgICAgbGV0IHRpbWUyID0gZ3JvdXAuZ2V0KFwidGltZTJcIikudmFsdWU7XG4gICAgICAgIGlmICh0aW1lMSA+PSB0aW1lMikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlczogXCJFbmQgdGltZSBtdXN0IGJlIGxhdGVyIHRoYW4gdGhlIHN0YXJ0IHRpbWVcIlxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9O1xuICAgIHJldHVybiB2YWxpZGF0b3I7XG4gIH1cblxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGNvbnNvbGUuZGlyKGBEaWFsb2cgY29uZmlnOiAke3RoaXMuZGlhbG9nQ29uZmlnfWApO1xuICAgIC8vIGxldCBzdGFydDogRGF0ZSA9IChMb2NhbERhdGUuY29udmVydFRvSnNEYXRlKHRoaXMuc2NoZWR1bGUuc3RhcnQpKS50b0RhdGUoKTtcbiAgICAvLyBsZXQgZW5kOiBEYXRlID0gKExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5zY2hlZHVsZS5lbmQpKS50b0RhdGUoKTtcbiAgICAvLyB0aGlzLmV2ZW50Rm9ybS5nZXQoXCJkYXRlXCIpLnNldFZhbHVlKHN0YXJ0KTtcbiAgICAvLyB0aGlzLmV2ZW50Rm9ybS5nZXQoXCJzdGFydFwiKS5zZXRWYWx1ZShzdGFydCk7XG4gICAgLy8gdGhpcy5ldmVudEZvcm0uZ2V0KFwiZW5kXCIpLnNldFZhbHVlKGVuZCk7XG5cbiAgfVxuXG5cblxuICBvblNhdmUoZm9ybTogTmdGb3JtKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uU2F2ZSBmb3JtLmludmFsaWQ9JHtmb3JtLmludmFsaWR9OyB0aGlzLmNsb3NlZD0ke3RoaXMuY2xvc2VkfSB0aGlzLnRpdGxlU3RyPSR7dGhpcy50aXRsZVN0cn1gKTtcbiAgICBpZiAoZm9ybS5pbnZhbGlkIHx8IHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgbGV0IHNjaGVkdWxlID0gdGhpcy5kYXRhLnNjaGVkdWxlO1xuICAgIHNjaGVkdWxlLnRpdGxlID0gdGhpcy5ldmVudEZvcm0uZ2V0KFwidGl0bGVcIikudmFsdWU7XG4gICAgc2NoZWR1bGUubG9jYXRpb24gPSB0aGlzLmV2ZW50Rm9ybS5nZXQoXCJsb2NhdGlvblwiKS52YWx1ZTtcbiAgICBzY2hlZHVsZS5pc0FsbERheSA9IHRoaXMuaXNBbGxEYXk7XG4gICAgc2NoZWR1bGUuY2F0ZWdvcnkgPSB0aGlzLmlzQWxsRGF5ID8gJ2FsbGRheScgOiAndGltZSc7ICAvLyBDQVRFR09SWSBNVVNUIEJFIERFRklORUQ6ICdtaWxlc3RvbmUnLCAndGFzaycsIGFsbGRheScsICd0aW1lJ1xuICAgIGlmICh0aGlzLmlzQWxsRGF5KSB7XG4gICAgICBzY2hlZHVsZS5zdGFydCA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwic3RhcnRcIikudmFsdWUpIGFzIERhdGU7XG4gICAgICBzY2hlZHVsZS5zdGFydC5zZXRIb3VycygwLCAwLCAwLCAxKTtcbiAgICAgIHNjaGVkdWxlLmVuZCA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwiZW5kXCIpLnZhbHVlKSBhcyBEYXRlO1xuICAgICAgc2NoZWR1bGUuZW5kLnNldEhvdXJzKDAsIDAsIDAsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZSA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwidGltZTFcIikudmFsdWUpIGFzIERhdGU7XG4gICAgICBzY2hlZHVsZS5zdGFydCA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwiZGF0ZVwiKS52YWx1ZSkgYXMgRGF0ZTtcbiAgICAgIHNjaGVkdWxlLnN0YXJ0LnNldEhvdXJzKFxuICAgICAgICB0aGlzLnN0YXJ0VGltZS5nZXRIb3VycygpLFxuICAgICAgICB0aGlzLnN0YXJ0VGltZS5nZXRNaW51dGVzKCksXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lLmdldFNlY29uZHMoKSxcbiAgICAgICAgdGhpcy5zdGFydFRpbWUuZ2V0TWlsbGlzZWNvbmRzKCksXG4gICAgICApO1xuICAgICAgdGhpcy5lbmRUaW1lID0gTG9jYWxEYXRlLmNvbnZlcnRUb0pzRGF0ZSh0aGlzLmV2ZW50Rm9ybS5nZXQoXCJ0aW1lMlwiKS52YWx1ZSkgYXMgRGF0ZTtcbiAgICAgIHNjaGVkdWxlLmVuZCA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUodGhpcy5ldmVudEZvcm0uZ2V0KFwiZGF0ZVwiKS52YWx1ZSkgYXMgRGF0ZTtcbiAgICAgIHNjaGVkdWxlLmVuZC5zZXRIb3VycyhcbiAgICAgICAgdGhpcy5lbmRUaW1lLmdldEhvdXJzKCksXG4gICAgICAgIHRoaXMuZW5kVGltZS5nZXRNaW51dGVzKCksXG4gICAgICAgIHRoaXMuZW5kVGltZS5nZXRTZWNvbmRzKCksXG4gICAgICAgIHRoaXMuZW5kVGltZS5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKGBwb3AtdXAtZXZlbnQtZWRpdG9yLmNvbXBvbmVudC50czogdXNlciBjbGlja2VkIFNBVkUgZXZlbnQ9JHtzY2hlZHVsZX1gKTtcbiAgICAvLyB0aGlzLmV2ZW50T3V0cHV0LmVtaXQoc2NoZWR1bGUpO1xuICAgIGZvcm0ucmVzZXRGb3JtKCk7XG4gICAgdGhpcy5jbG9zZU1lKHNjaGVkdWxlKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCkge1xuICAgIC8vIHRoaXMuY2FuY2VsbGVkLmVtaXQoKTtcbiAgICAvLyBjb25zb2xlLmxvZygnb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6IHVzZXIgY2xpY2tlZCBDQU5DRUwnKTtcbiAgICB0aGlzLmNsb3NlTWUobnVsbCk7XG4gIH1cblxuICBvbkRlbGV0ZSgpIHtcbiAgICAvLyB0aGlzLmNhbmNlbGxlZC5lbWl0KCk7XG4gICAgLy8gY29uc29sZS5sb2coJ29wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yOiB1c2VyIGNsaWNrZWQgREVMRVRFJyk7XG4gICAgdGhpcy5jbG9zZU1lKHRoaXMuZGF0YS5zY2hlZHVsZSwgdHJ1ZSk7XG4gIH1cblxuXG4gIGNsb3NlTWUoc2NoZWR1bGU6IElTY2hlZHVsZSwgcGVyZm9ybURlbGV0ZT86IGJvb2xlYW4pIHtcbiAgICAvLyBjb25zb2xlLmxvZygnY2xvc2VNZTogVGhlIGRpYWxvZyBpcyBjbG9zaW5nJywgc2NoZWR1bGUpO1xuICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IHNjaGVkdWxlLCBwZXJmb3JtRGVsZXRlOiAocGVyZm9ybURlbGV0ZSA9PSB0cnVlKSB9KTtcbiAgfVxuXG4gIGxvZyhzdHIpIHtcbiAgICAvLyBjb25zb2xlLndhcm4oc3RyKTtcbiAgfVxuXG4gIG9uVXNlQWxsRGF5KCkge1xuICAgIHRoaXMuaXNBbGxEYXkgPSB0cnVlO1xuICB9XG4gIG9uVXNlVGltZVNsb3QoKSB7XG4gICAgdGhpcy5pc0FsbERheSA9IGZhbHNlO1xuICB9XG5cbn1cbiIsIjxkaXYgW2NsYXNzTmFtZV09XCJkYXRhLnRoZW1lQ2xhc3MgKyAnICcgKyAnZXZlbnQtZWRpdG9yJ1wiPlxuICAgIDxmb3JtIGlkPVwibXktZm9ybVwiIFtmb3JtR3JvdXBdPVwiZXZlbnRGb3JtXCIgY2xhc3M9XCJldmVudC1lZGl0b3ItZm9ybVwiIChzdWJtaXQpPVwib25TYXZlKHBvc3RGb3JtKTtcIiAjcG9zdEZvcm09XCJuZ0Zvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtdGl0bGVcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJlZGl0b3ItdGl0bGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJ0aXRsZVwiIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCIgcGxhY2Vob2xkZXI9XCJUaXRsZVwiPlxuICAgICAgICAgICAgPCEtLSA8bWF0LWVycm9yIHN0eWxlPVwiaGVpZ2h0OiBmaXQtY29udGVudDtcIiAqbmdJZj1cInRpdGxlLmludmFsaWRcIj5QbGVhc2UgZW50ZXIgYSB0aXRsZSAob2YgMSBjaGFyYWN0ZXJzIG9yIG1vcmUpXG4gICAgICAgICAgICAgIGZvclxuICAgICAgICAgICAgICB5b3VyIGV2ZW50LjwvbWF0LWVycm9yPiAtLT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtbG9jYXRpb25cIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJlZGl0b3ItbG9jYXRpb25cIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwibG9jYXRpb25cIiBuYW1lPVwibG9jYXRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJsb2NhdGlvblwiIHBsYWNlaG9sZGVyPVwiTG9jYXRpb25cIj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtcmFkaW9zXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2NvbG9yXT1cImNvbG9yXCIgYXJpYS1sYWJlbD1cIlNlbGVjdCBhbiBvcHRpb25cIiAgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxZW07XCIgbmFtZT1cInNjaGVkdWxlVHlwZVwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzY2hlZHVsZVR5cGVcIiByZXF1aXJlZD5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIHZhbHVlPVwiYWxsLWRheVwiIChjaGFuZ2UpPVwib25Vc2VBbGxEYXkoKVwiIGlkPVwiYnV0dG9uLWFsbC1kYXlcIiBbY29sb3JdPVwiY29sb3JcIiBjbGFzcz1cInJhZGlvLWJ1dHRvblwiPkFsbCBEYXlcbiAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIHZhbHVlPVwidGltZS1zbG90XCIgKGNoYW5nZSk9XCJvblVzZVRpbWVTbG90KClcIiBpZD1cImJ1dHRvbi10aW1lLXNsb3RcIiBbY29sb3JdPVwiY29sb3JcIiBjbGFzcz1cInJhZGlvLWJ1dHRvblwiPlRpbWUgU2xvdFxuICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtZGF0ZVwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImlzQWxsRGF5XCIgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJkYXRlLXJhbmdlLWZvcm0tZmllbGRcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbCBbY29sb3JdPVwiY29sb3JcIj5QaWNrIGEgRGF0ZSBSYW5nZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtjb2xvcl09XCJjb2xvclwiIFtwYW5lbENsYXNzXT1cImRhdGEudGhlbWVDbGFzc1wiIFtyYW5nZVBpY2tlcl09XCJyYW5nZVBpY2tlclwiICNkYXRlUmFuZ2VJbnB1dD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdFN0YXJ0RGF0ZSBwbGFjZWhvbGRlcj1cIlN0YXJ0IGRhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiIG5hbWU9XCJzdGFydFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBwbGFjZWhvbGRlcj1cIkVuZCBkYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW5kXCIgbmFtZT1cImVuZFwiPlxuICAgICAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBbY29sb3JdPVwiY29sb3JcIiBbcGFuZWxDbGFzc109XCJkYXRhLnRoZW1lQ2xhc3NcIiBtYXRTdWZmaXggW2Zvcl09XCJyYW5nZVBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgPG1hdC1kYXRlLXJhbmdlLXBpY2tlciBbY29sb3JdPVwiY29sb3JcIiBjbGFzcz1cInBpY2tlclwiICNyYW5nZVBpY2tlcj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbY29sb3JdPVwiY29sb3JcIiAqbmdJZj1cIiFpc0FsbERheVwiIGNsYXNzPVwiZGF0ZS1mb3JtLWZpZWxkXCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Q2hvb3NlIGEgZGF0ZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImRwaWNrZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCIgbmFtZT1cImRhdGVcIj5cbiAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgW2NvbG9yXT1cImNvbG9yXCIgbWF0U3VmZml4IFtmb3JdPVwiZHBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyIFtjb2xvcl09XCJjb2xvclwiICNkcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaXNBbGxEYXlcIiBjbGFzcz1cImdyaWQtdGltZSB0aW1lLXNsb3RcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJmb3JtLWZpZWxkLXRpbWVcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGFydDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdFRpbWVwaWNrZXIgW2NvbG9yXT1cImNvbG9yXCIgW3N0cmljdF09XCJmYWxzZVwiIGlkPVwidGltZXBpY2tlci1zdGFydFwiIG1vZGU9XCIxMmhcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aW1lMVwiIG5hbWU9XCJ0aW1lMVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGxlYXNlIHNlbGVjdCB0aW1lLi4uXCI+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2NvbG9yXT1cImNvbG9yXCIgY2xhc3M9XCJmb3JtLWZpZWxkLXRpbWVcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5FbmQ8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRUaW1lcGlja2VyIFtjb2xvcl09XCJjb2xvclwiIFtzdHJpY3RdPVwiZmFsc2VcIiBpZD1cInRpbWVwaWNrZXItZW5kXCIgbW9kZT1cIjEyaFwiIGZvcm1Db250cm9sTmFtZT1cInRpbWUyXCIgbmFtZT1cInRpbWUyXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQbGVhc2Ugc2VsZWN0IHRpbWUuLi5cIj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0FsbERheVwiIGNsYXNzPVwiZ3JpZC1lcnJvclwiPlxuICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImV2ZW50Rm9ybS5pbnZhbGlkXCI+e3sgZXZlbnRGb3JtLmVycm9ycz8uZGF0ZXMgfX08L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtjb2xvcl09XCJjb2xvclwiIGlkPVwiZWRpdG9yLXN1Ym1pdC1idXR0b25cIiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDRweDtcIj5TQVZFPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gaWQ9XCJlZGl0b3ItZGVsZXRlLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25EZWxldGUoKVwiICpuZ0lmPVwiKGRhdGEuc2NoZWR1bGUuaWQhPW51bGwpXCI+REVMRVRFPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gaWQ9XCJlZGl0b3ItY2FuY2VsLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNBTkNFTDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj4iXX0=
@@ -37,15 +37,15 @@ export class NgxMatTuiCalendarComponent {
37
37
  this.appliedOptions = this.getDefaultOptions();
38
38
  }
39
39
  ngOnInit() {
40
- console.warn(`calendar.component.ts: ngOnit`);
40
+ // console.warn(`calendar.component.ts: ngOnit`)
41
41
  this.createTUICalendar();
42
42
  this.bindCallbacks();
43
43
  }
44
44
  ngOnChanges(changes) {
45
- console.warn(changes);
45
+ // console.warn(changes);
46
46
  if (this.calendar) {
47
47
  if (changes.options) {
48
- console.warn(`change.option:`, changes.options);
48
+ // console.warn(`change.option:`, changes.options);
49
49
  let options = changes.options.currentValue;
50
50
  this.setOptions(options);
51
51
  }
@@ -74,15 +74,19 @@ export class NgxMatTuiCalendarComponent {
74
74
  date.setMonth(date.getMonth() + months); // date class does the modular arithmetic
75
75
  date.setDate(date.getDate() + days); // date class does the modular arithmetic
76
76
  this.calendar.setDate(date);
77
+ this.calendar.toggleScheduleView(true);
77
78
  }
78
79
  onCalendarPrev() {
79
80
  this.calendar.prev();
81
+ this.calendar.toggleScheduleView(true);
80
82
  }
81
83
  onCalendarToday() {
82
84
  this.calendar.today();
85
+ this.calendar.toggleScheduleView(true);
83
86
  }
84
87
  onCalendarNext() {
85
88
  this.calendar.next();
89
+ this.calendar.toggleScheduleView(true);
86
90
  }
87
91
  onCalendarLongNext() {
88
92
  let date = this.calendar.getDate().toDate();
@@ -104,12 +108,15 @@ export class NgxMatTuiCalendarComponent {
104
108
  date.setMonth(date.getMonth() + months); // date class does the modular arithmetic
105
109
  date.setDate(date.getDate() + days); // date class does the modular arithmetic
106
110
  this.calendar.setDate(date);
111
+ this.calendar.toggleScheduleView(true);
107
112
  }
108
113
  onMonthView() {
109
114
  this.calendar.changeView('month');
110
115
  }
111
116
  onWeekView() {
117
+ console.log(`onWeekView`);
112
118
  this.calendar.changeView('week');
119
+ this.calendar.render(true); // <-- so that selection is cleared
113
120
  }
114
121
  onDayView() {
115
122
  this.calendar.changeView('day');
@@ -124,9 +131,10 @@ export class NgxMatTuiCalendarComponent {
124
131
  }
125
132
  createTUICalendar() {
126
133
  let ioptions = this.preprocessIOptions(null);
127
- console.warn(`calendar.component.ts: createTUICalendar: ioptions:`, ioptions);
134
+ // console.warn(`calendar.component.ts: createTUICalendar: ioptions:`, ioptions);
128
135
  this.calendar = new Calendar('#calendar', ioptions);
129
- console.warn(`calendar.component.ts: createTUICalendar: this.calendar:`, this.calendar);
136
+ // console.warn(`calendar.component.ts: createTUICalendar: this.calendar:`, this.calendar);
137
+ this.calendar.toggleScheduleView(true);
130
138
  }
131
139
  bindCallbacks() {
132
140
  this.bindAfterRenderSchedule();
@@ -284,7 +292,7 @@ export class NgxMatTuiCalendarComponent {
284
292
  if (this.appliedOptions.themeClass) {
285
293
  dialogConfig.panelClass = this.appliedOptions.themeClass;
286
294
  }
287
- console.warn(`options: `, this.appliedOptions);
295
+ // console.warn(`options: `, this.appliedOptions);
288
296
  dialogConfig.data = { schedule, darkMode: this.appliedOptions.darkMode, themeClass: this.appliedOptions.themeClass };
289
297
  dialogConfig.autoFocus = true;
290
298
  const dialogRef = this.dialog.open(NgxMatTuiCalendarEditorDialogComponent, dialogConfig);
@@ -324,6 +332,7 @@ export class NgxMatTuiCalendarComponent {
324
332
  this.calendar.setOptions(ioptions);
325
333
  this.calendar.setTheme(ioptions.theme);
326
334
  this.calendar.render(true);
335
+ this.calendar.toggleScheduleView(true);
327
336
  return ioptions;
328
337
  }
329
338
  preprocessIOptions(ioptions) {
@@ -376,7 +385,7 @@ export class NgxMatTuiCalendarComponent {
376
385
  const el = document.getElementById(`theme-${name}`);
377
386
  if (el) {
378
387
  const style = window.getComputedStyle(el, null);
379
- console.warn(`theme-${name} color:`, style.color);
388
+ // console.warn(`theme-${name} color:`, style.color);
380
389
  return style.color;
381
390
  }
382
391
  return '';
@@ -525,4 +534,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
525
534
  }], options: [{
526
535
  type: Input
527
536
  }] } });
528
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdC10dWktY2FsZW5kYXIvc3JjL2xpYi9uZ3gtbWF0LXR1aS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0LXR1aS1jYWxlbmRhci9zcmMvbGliL25neC1tYXQtdHVpLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUEwRCxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFDTCxlQUFlLEVBR2YsT0FBTyxFQUNQLFNBQVMsRUFFVCxTQUFTLEVBQ1QsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUNMLE9BQU8sSUFBSSxRQUFRLEdBYXBCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLFdBQVc7QUFDWCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sbUZBQW1GLENBQUM7Ozs7Ozs7O0FBVzNJLE1BQU0sT0FBTywwQkFBMEI7SUFzQnJDLFlBQW9CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFyQnJDLGNBQVMsR0FBRyxlQUFlLENBQUM7UUFDNUIsZ0NBQWdDO1FBQ2hDLGlDQUFpQztRQUNqQyxhQUFRLEdBQUcsV0FBVyxDQUFDO1FB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QyxFQUFFLE1BQU07WUFFM0MsNEJBQTRCO1lBQzVCLDBCQUEwQixFQUFFLFNBQVM7WUFDckMsNkJBQTZCLEVBQUUsTUFBTTtZQUNyQywrQkFBK0IsRUFBRSxNQUFNO1lBRXZDLDhCQUE4QjtZQUM5QixtQ0FBbUMsRUFBRSxLQUFLO1lBQzFDLDZCQUE2QixFQUFFLE1BQU07WUFDckMsZ0NBQWdDLEVBQUUsS0FBSztZQUN2QyxpQ0FBaUMsRUFBRSxLQUFLO1lBQ3hDLGtDQUFrQyxFQUFFLEtBQUs7U0FDaEMsQ0FBQztJQUNkLENBQUM7O3dIQTFqQlUsMEJBQTBCOzRHQUExQiwwQkFBMEIsa1FDbER2Qyxza0lBaUZBOzRGRC9CYSwwQkFBMEI7a0JBUHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLHVDQUF1QztvQkFDcEQsU0FBUyxFQUFFO3dCQUNULHVDQUF1QztxQkFDeEM7aUJBQ0Y7Z0dBaUJXLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3ksIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuaW1wb3J0IGRpc3RpbmN0Q29sb3JzIGZyb20gJ2Rpc3RpbmN0LWNvbG9ycyc7XHJcbmltcG9ydCB7IENvbG9yIH0gZnJvbSBcImNocm9tYS1qc1wiO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuXHJcbmltcG9ydCB7XHJcbiAgZmFDYWxlbmRhckNoZWNrLFxyXG4gIGZhQ2FyZXRTcXVhcmVMZWZ0LFxyXG4gIGZhQ2FyZXRTcXVhcmVSaWdodCxcclxuICBmYVRhYmxlLFxyXG4gIGZhQ29sdW1ucyxcclxuICBmYUxpc3QsXHJcbiAgZmFMaXN0QWx0LFxyXG4gIGZhRm9yd2FyZCxcclxuICBmYUZhc3RCYWNrd2FyZCxcclxuICBmYUJhY2t3YXJkLFxyXG4gIGZhQ2FyZXRMZWZ0LFxyXG4gIGZhQ2FyZXRSaWdodCxcclxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xyXG5pbXBvcnQge1xyXG4gIGRlZmF1bHQgYXMgQ2FsZW5kYXIsXHJcbiAgSUNhbGVuZGFySW5mbyxcclxuICBJRXZlbnREYXRlT2JqZWN0LFxyXG4gIElFdmVudE1vcmVPYmplY3QsXHJcbiAgSUV2ZW50T2JqZWN0LFxyXG4gIElFdmVudFNjaGVkdWxlT2JqZWN0LFxyXG4gIElPcHRpb25zLFxyXG4gIElTY2hlZHVsZSxcclxuICBJVGhlbWUsXHJcbiAgSVRpbWV6b25lLFxyXG4gIElXZWVrT3B0aW9ucyxcclxuICBURXZlbnRCZWZvcmVDcmVhdGVTY2hlZHVsZSxcclxuICBUWkRhdGUsXHJcbn0gZnJvbSAndHVpLWNhbGVuZGFyJztcclxuXHJcbi8vIHByb2plY3QgXHJcbmltcG9ydCB7IExvY2FsRGF0ZSB9IGZyb20gJy4vbG9jYWwtZGF0ZS5qcyc7XHJcbmltcG9ydCB7IE5neE1hdFR1aUNhbGVuZGFyRWRpdG9yRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtbWF0LXR1aS1jYWxlbmRhci1lZGl0b3ItZGlhbG9nL25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FsZW5kYXJPcHRpb25zIH0gZnJvbSAnLi9jYWxlbmRhci1vcHRpb25zJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi9jYWxlbmRhci1lZGl0b3Itb3B0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1tYXQtdHVpLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4vbmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neE1hdFR1aUNhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgaWNvblRvZGF5ID0gZmFDYWxlbmRhckNoZWNrO1xyXG4gIC8vIGljb25QcmV2ID0gZmFDYXJldFNxdWFyZUxlZnQ7XHJcbiAgLy8gaWNvbk5leHQgPSBmYUNhcmV0U3F1YXJlUmlnaHQ7XHJcbiAgaWNvblByZXYgPSBmYUNhcmV0TGVmdDtcclxuICBpY29uTmV4dCA9IGZhQ2FyZXRSaWdodDtcclxuICBpY29uTG9uZ1ByZXYgPSBmYUJhY2t3YXJkO1xyXG4gIGljb25Mb25nTmV4dCA9IGZhRm9yd2FyZDtcclxuICBpY29uQnlNb250aCA9IGZhVGFibGU7XHJcbiAgaWNvbkJ5V2VlayA9IGZhQ29sdW1ucztcclxuICBpY29uQnlEYXkgPSBmYUxpc3RBbHQ7XHJcblxyXG4gIGNhbGVuZGFyOiBDYWxlbmRhcjsgIC8vIHRoZSBUVUkgQ2FsZW5kYXIgT2JqZWN0XHJcbiAgY2FsZW5kYXJJZDogc3RyaW5nO1xyXG4gIGNvbG9yczogQ29sb3JbXTtcclxuICBjb2xvckluZGV4OiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIHVzZXJDcmVhdGVkU2NoZWR1bGU6IEV2ZW50RW1pdHRlcjxJU2NoZWR1bGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1c2VyVXBkYXRlZFNjaGVkdWxlOiBFdmVudEVtaXR0ZXI8SVNjaGVkdWxlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXNlckRlbGV0ZWRTY2hlZHVsZTogRXZlbnRFbWl0dGVyPElTY2hlZHVsZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgb3B0aW9uczogQ2FsZW5kYXJPcHRpb25zO1xyXG4gIGFwcGxpZWRPcHRpb25zOiBDYWxlbmRhck9wdGlvbnM7IC8vIHRoaXMgaXMgbmVlZGVkIGZvciB3aGVuIG9wdGlvbnMgaXMgbm90IGNvbm5lY3RlZFxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7XHJcbiAgICAvLyB3ZSBzbGljZSBvZmYgdGhlIGZpcnN0IGNvbG9yIHNpbmNlIGl0IGlzIGdyYXlcclxuICAgIHRoaXMuY29sb3JzID0gZGlzdGluY3RDb2xvcnMoeyBsaWdodE1pbjogNzAsIGNvdW50OiAxNSB9KS5zbGljZSgxKTtcclxuICAgIHRoaXMuY29sb3JJbmRleCA9IDA7XHJcbiAgICB0aGlzLmNhbGVuZGFySWQgPSB1dWlkdjQoKTtcclxuXHJcbiAgICB0aGlzLmFwcGxpZWRPcHRpb25zID0gdGhpcy5nZXREZWZhdWx0T3B0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zb2xlLndhcm4oYGNhbGVuZGFyLmNvbXBvbmVudC50czogbmdPbml0YClcclxuICAgIHRoaXMuY3JlYXRlVFVJQ2FsZW5kYXIoKTtcclxuICAgIHRoaXMuYmluZENhbGxiYWNrcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc29sZS53YXJuKGNoYW5nZXMpO1xyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXIpIHtcclxuXHJcbiAgICAgIGlmIChjaGFuZ2VzLm9wdGlvbnMpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oYGNoYW5nZS5vcHRpb246YCwgY2hhbmdlcy5vcHRpb25zKTtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IGNoYW5nZXMub3B0aW9ucy5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRPcHRpb25zKG9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIG9uQ2FsZW5kYXJMb25nUHJldigpIHtcclxuICAgIGxldCBkYXRlOiBEYXRlID0gKHRoaXMuY2FsZW5kYXIuZ2V0RGF0ZSgpIGFzIFRaRGF0ZSkudG9EYXRlKCk7XHJcbiAgICBsZXQgZGF5cyA9IDA7XHJcbiAgICBsZXQgbW9udGhzID0gMDtcclxuICAgIGxldCB5ZWFycyA9IDA7XHJcbiAgICBzd2l0Y2ggKHRoaXMuY2FsZW5kYXIuZ2V0Vmlld05hbWUoKSkge1xyXG4gICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgIGRheXMgPSAtNztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd2Vlayc6XHJcbiAgICAgICAgZGF5cyA9IC0yODtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgIHllYXJzID0gLTE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIHllYXJzKTtcclxuICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgbW9udGhzKTsgIC8vIGRhdGUgY2xhc3MgZG9lcyB0aGUgbW9kdWxhciBhcml0aG1ldGljXHJcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkYXlzKTsgIC8vIGRhdGUgY2xhc3MgZG9lcyB0aGUgbW9kdWxhciBhcml0aG1ldGljXHJcbiAgICB0aGlzLmNhbGVuZGFyLnNldERhdGUoZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGVuZGFyUHJldigpIHtcclxuICAgIHRoaXMuY2FsZW5kYXIucHJldigpO1xyXG4gIH1cclxuXHJcbiAgb25DYWxlbmRhclRvZGF5KCkge1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2RheSgpO1xyXG4gIH1cclxuXHJcbiAgb25DYWxlbmRhck5leHQoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm5leHQoKTtcclxuICB9XHJcblxyXG4gIG9uQ2FsZW5kYXJMb25nTmV4dCgpIHtcclxuICAgIGxldCBkYXRlOiBEYXRlID0gKHRoaXMuY2FsZW5kYXIuZ2V0RGF0ZSgpIGFzIFRaRGF0ZSkudG9EYXRlKCk7XHJcbiAgICBsZXQgZGF5cyA9IDA7XHJcbiAgICBsZXQgbW9udGhzID0gMDtcclxuICAgIGxldCB5ZWFycyA9IDA7XHJcbiAgICBzd2l0Y2ggKHRoaXMuY2FsZW5kYXIuZ2V0Vmlld05hbWUoKSkge1xyXG4gICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgIGRheXMgPSA3O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICBkYXlzID0gMjg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICB5ZWFycyA9IDE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIHllYXJzKTtcclxuICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgbW9udGhzKTsgIC8vIGRhdGUgY2xhc3MgZG9lcyB0aGUgbW9kdWxhciBhcml0aG1ldGljXHJcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkYXlzKTsgIC8vIGRhdGUgY2xhc3MgZG9lcyB0aGUgbW9kdWxhciBhcml0aG1ldGljXHJcbiAgICB0aGlzLmNhbGVuZGFyLnNldERhdGUoZGF0ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Nb250aFZpZXcoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNoYW5nZVZpZXcoJ21vbnRoJyk7XHJcbiAgfVxyXG5cclxuICBvbldlZWtWaWV3KCkge1xyXG4gICAgdGhpcy5jYWxlbmRhci5jaGFuZ2VWaWV3KCd3ZWVrJyk7XHJcbiAgfVxyXG5cclxuICBvbkRheVZpZXcoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNoYW5nZVZpZXcoJ2RheScpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERhdGUoKSB7XHJcbiAgICBsZXQgZGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0RGF0ZSgpO1xyXG4gICAgbGV0IHN0ciA9IGRhdGUudG9EYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwge1xyXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgIG1vbnRoOiAnc2hvcnQnLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVFVJQ2FsZW5kYXIoKSB7XHJcbiAgICBsZXQgaW9wdGlvbnMgPSB0aGlzLnByZXByb2Nlc3NJT3B0aW9ucyhudWxsKTtcclxuICAgIGNvbnNvbGUud2FybihgY2FsZW5kYXIuY29tcG9uZW50LnRzOiBjcmVhdGVUVUlDYWxlbmRhcjogaW9wdGlvbnM6YCwgaW9wdGlvbnMpO1xyXG4gICAgdGhpcy5jYWxlbmRhciA9IG5ldyBDYWxlbmRhcignI2NhbGVuZGFyJywgaW9wdGlvbnMpO1xyXG4gICAgY29uc29sZS53YXJuKGBjYWxlbmRhci5jb21wb25lbnQudHM6IGNyZWF0ZVRVSUNhbGVuZGFyOiB0aGlzLmNhbGVuZGFyOmAsIHRoaXMuY2FsZW5kYXIpO1xyXG4gIH1cclxuXHJcblxyXG4gIGJpbmRDYWxsYmFja3MoKSB7XHJcbiAgICB0aGlzLmJpbmRBZnRlclJlbmRlclNjaGVkdWxlKCk7XHJcbiAgICB0aGlzLmJpbmRDbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuKCk7XHJcbiAgICB0aGlzLmJpbmRDbGlja0RheW5hbWUoKTtcclxuICAgIHRoaXMuYmluZENsaWNrTW9yZSgpO1xyXG4gICAgdGhpcy5iaW5kQ2xpY2tTY2hlZHVsZSgpO1xyXG4gICAgdGhpcy5iaW5kQmVmb3JlQ3JlYXRlU2NoZWR1bGUoKTtcclxuICAgIHRoaXMuYmluZEJlZm9yZVVwZGF0ZVNjaGVkdWxlKCk7XHJcbiAgICB0aGlzLmJpbmRCZWZvcmVEZWxldGVTY2hlZHVsZSgpO1xyXG4gIH1cclxuXHJcbiAgYmluZEFmdGVyUmVuZGVyU2NoZWR1bGUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdhZnRlclJlbmRlclNjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiB7IHNjaGVkdWxlOiBJU2NoZWR1bGUgfSkge1xyXG4gICAgICAvLyBjb25zb2xlLndhcm4oYGFmdGVyUmVuZGVyU2NoZWR1bGVgLCBldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRDbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgdGhpcy5jYWxlbmRhci5vbignY2xpY2tUaW1lem9uZXNDb2xsYXBzZUJ0bicsIGZ1bmN0aW9uICh0aW1lem9uZXNDb2xsYXBzZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBjbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuYCwgdGltZXpvbmVzQ29sbGFwc2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGJpbmRDbGlja0RheW5hbWUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja0RheW5hbWUnLCBmdW5jdGlvbiAoZXZlbnQ6IElFdmVudERhdGVPYmplY3QpIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBjbGlja0RheW5hbWVgLCBldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRDbGlja01vcmUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja01vcmUnLCBmdW5jdGlvbiAoZXZlbnQ6IElFdmVudE1vcmVPYmplY3QpIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBjbGlja01vcmVgLCBldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRDbGlja1NjaGVkdWxlKCkge1xyXG4gICAgLy8gb25seSB3b3JrcyBpZiB1c2VEZXRhaWxQb3B1cDogZmFsc2UsXHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja1NjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiBJRXZlbnRTY2hlZHVsZU9iamVjdCkge1xyXG4gICAgICAvLyBjb25zb2xlLndhcm4oYGNsaWNrU2NoZWR1bGVgLCBldmVudCk7XHJcbiAgICAgIGxldCBzY2hlZHVsZTogSVNjaGVkdWxlID0geyAuLi5ldmVudC5zY2hlZHVsZSB9O1xyXG4gICAgICBzY2hlZHVsZS5zdGFydCA9IChuZXcgTG9jYWxEYXRlKHNjaGVkdWxlLnN0YXJ0KSkudG9EYXRlKCk7XHJcbiAgICAgIHNjaGVkdWxlLmVuZCA9IChuZXcgTG9jYWxEYXRlKHNjaGVkdWxlLmVuZCkpLnRvRGF0ZSgpO1xyXG4gICAgICB0aGF0Lm9wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yKHNjaGVkdWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmluZEJlZm9yZUNyZWF0ZVNjaGVkdWxlKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgdGhpcy5jYWxlbmRhci5vbignYmVmb3JlQ3JlYXRlU2NoZWR1bGUnLCBmdW5jdGlvbiAoZXZlbnQ6IFRFdmVudEJlZm9yZUNyZWF0ZVNjaGVkdWxlKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVDcmVhdGVTY2hlZHVsZWAsIGV2ZW50KTtcclxuICAgICAgbGV0IHN0YXJ0OiBEYXRlID0gKG5ldyBMb2NhbERhdGUoZXZlbnQuc3RhcnQpKS50b0RhdGUoKTtcclxuICAgICAgc3RhcnQuc2V0SG91cnMoOSk7XHJcbiAgICAgIGxldCBlbmQ6IERhdGUgPSAobmV3IExvY2FsRGF0ZShldmVudC5lbmQpKS50b0RhdGUoKTtcclxuICAgICAgZW5kLnNldEhvdXJzKDEwKTtcclxuICAgICAgdGhhdC5vcGVuUG9wdXBTY2hlZHVsZUVkaXRvcih7XHJcbiAgICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICAgIHN0YXJ0OiBzdGFydCxcclxuICAgICAgICBlbmQ6IGVuZCxcclxuICAgICAgICBpZDogbnVsbCxcclxuICAgICAgfSBhcyBJU2NoZWR1bGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBiaW5kQmVmb3JlVXBkYXRlU2NoZWR1bGUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdiZWZvcmVVcGRhdGVTY2hlZHVsZScsIGZ1bmN0aW9uIChldmVudDogSUV2ZW50T2JqZWN0KSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVVcGRhdGVTY2hlZHVsZWAsIGV2ZW50KTtcclxuICAgICAgdGhhdC51cGRhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRCZWZvcmVEZWxldGVTY2hlZHVsZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuY2FsZW5kYXIub24oJ2JlZm9yZURlbGV0ZVNjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiBJRXZlbnRTY2hlZHVsZU9iamVjdCkge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhgYmVmb3JlRGVsZXRlU2NoZWR1bGVgLCBldmVudC5zY2hlZHVsZSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVEZWxldGVTY2hlZHVsZWAsIGV2ZW50LnNjaGVkdWxlKTtcclxuICAgICAgdGhhdC5kZWxldGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudCh7IGlkOiBldmVudC5zY2hlZHVsZS5pZCwgY2FsZW5kYXJJZDogZXZlbnQuc2NoZWR1bGUuY2FsZW5kYXJJZCB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmV4dENvbG9yKCkge1xyXG4gICAgbGV0IGNvbG9yID0gdGhpcy5jb2xvcnNbdGhpcy5jb2xvckluZGV4KytdLmhleCgpO1xyXG4gICAgaWYgKHRoaXMuY29sb3JJbmRleCA+PSB0aGlzLmNvbG9ycy5sZW5ndGgpIHRoaXMuY29sb3JJbmRleCA9IDA7XHJcbiAgICByZXR1cm4gY29sb3I7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChhcmdzOiBJU2NoZWR1bGUpIHtcclxuICAgIGxldCBzY2hlZHVsZSA9IHRoaXMuY3JlYXRlU2NoZWR1bGUoYXJncyk7XHJcbiAgICB0aGlzLnVzZXJDcmVhdGVkU2NoZWR1bGUuZW1pdChzY2hlZHVsZSk7XHJcbiAgICByZXR1cm4gc2NoZWR1bGU7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTY2hlZHVsZXMoc2NoZWR1bGVzOiBJU2NoZWR1bGVbXSkge1xyXG4gICAgbGV0IG5ld1NjaGVkdWxlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgc2NoZWR1bGUgb2Ygc2NoZWR1bGVzKSB7XHJcbiAgICAgIG5ld1NjaGVkdWxlcy5wdXNoKHRoaXMuY3JlYXRlU2NoZWR1bGUoc2NoZWR1bGUpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdTY2hlZHVsZXM7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTY2hlZHVsZShhcmdzOiBJU2NoZWR1bGUpOiBJU2NoZWR1bGUge1xyXG4gICAgLy8gaWYgKGZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBhIGNvbG9yXHJcbiAgICBsZXQgY29sb3IgPSB0aGlzLm5leHRDb2xvcigpO1xyXG4gICAgLy8gY29uc29sZS5sb2coY29sb3IpO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBhbiBpZFxyXG4gICAgbGV0IGlkID0gKGFyZ3MuaWQgPT0gbnVsbCkgPyAnJyA6IGFyZ3MuaWQudG9TdHJpbmcoKTtcclxuICAgIGlmIChpZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgaWQgPSB1dWlkdjQoKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc3RhcnQ6IERhdGUgPSBMb2NhbERhdGUuY29udmVydFRvSnNEYXRlKGFyZ3Muc3RhcnQpO1xyXG4gICAgbGV0IGVuZDogRGF0ZSA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUoYXJncy5lbmQpO1xyXG5cclxuICAgIGxldCBzY2hlZHVsZTogSVNjaGVkdWxlID0ge1xyXG4gICAgICBpZCxcclxuICAgICAgY2FsZW5kYXJJZDogKGFyZ3MuY2FsZW5kYXJJZCA9PSBudWxsKSA/IHRoaXMuY2FsZW5kYXJJZCA6IGFyZ3MuY2FsZW5kYXJJZCxcclxuICAgICAgdGl0bGU6IGFyZ3MudGl0bGUsXHJcbiAgICAgIHN0YXJ0OiBzdGFydCxcclxuICAgICAgZW5kOiBlbmQsXHJcbiAgICAgIGNhdGVnb3J5OiBhcmdzLmNhdGVnb3J5LFxyXG4gICAgICBpc0FsbERheTogYXJncy5pc0FsbERheSxcclxuICAgICAgZHVlRGF0ZUNsYXNzOiAnJyxcclxuICAgICAgYmdDb2xvcjogY29sb3IsXHJcbiAgICB9IGFzIElTY2hlZHVsZVxyXG4gICAgLy8gY29uc29sZS5sb2coYGV2ZW50LWNhbGVuZGFyLmNvbXBvbmVudC50czogY3JlYXRlRXZlbnQ6YCwgc2NoZWR1bGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhci5jcmVhdGVTY2hlZHVsZXMoW3NjaGVkdWxlXSk7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRTY2hlZHVsZShzY2hlZHVsZS5pZCwgc2NoZWR1bGUuY2FsZW5kYXJJZCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChhcmdzOiBJU2NoZWR1bGUpIHtcclxuICAgIGxldCBzY2hlZHVsZSA9IHRoaXMudXBkYXRlU2NoZWR1bGUoYXJncyk7XHJcbiAgICB0aGlzLnVzZXJVcGRhdGVkU2NoZWR1bGUuZW1pdChzY2hlZHVsZSk7XHJcbiAgICByZXR1cm4gc2NoZWR1bGU7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTY2hlZHVsZShzY2hlZHVsZTogSVNjaGVkdWxlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhgZXZlbnQtY2FsZW5kYXIuY29tcG9uZW50LnRzOiB1cGRhdGVTY2hlZHVsZTpgLCBzY2hlZHVsZSk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChzY2hlZHVsZS5jYWxlbmRhcklkID09IG51bGwpID8gdGhpcy5jYWxlbmRhcklkIDogc2NoZWR1bGUuY2FsZW5kYXJJZDtcclxuICAgIHRoaXMuY2FsZW5kYXIudXBkYXRlU2NoZWR1bGUoc2NoZWR1bGUuaWQsIGNhbGVuZGFySWQsIHNjaGVkdWxlLCBmYWxzZSk7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRTY2hlZHVsZShzY2hlZHVsZS5pZCwgY2FsZW5kYXJJZCk7XHJcbiAgfVxyXG5cclxuICBnZXRTY2hlZHVsZShhcmdzOiB7IGlkOiBzdHJpbmcsIGNhbGVuZGFySWQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhgZXZlbnQtY2FsZW5kYXIuY29tcG9uZW50LnRzOiBnZXRTY2hlZHVsZTpgLCBzY2hlZHVsZSk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChhcmdzLmNhbGVuZGFySWQgPT0gbnVsbCkgPyB0aGlzLmNhbGVuZGFySWQgOiBhcmdzLmNhbGVuZGFySWQ7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRTY2hlZHVsZShhcmdzLmlkLCBjYWxlbmRhcklkKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KGFyZ3M6IHsgaWQ6IHN0cmluZywgY2FsZW5kYXJJZDogc3RyaW5nIH0pIHtcclxuICAgIHRoaXMuZGVsZXRlU2NoZWR1bGUoYXJncyk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChhcmdzLmNhbGVuZGFySWQgPT0gbnVsbCkgPyB0aGlzLmNhbGVuZGFySWQgOiBhcmdzLmNhbGVuZGFySWQ7XHJcbiAgICB0aGlzLnVzZXJEZWxldGVkU2NoZWR1bGUuZW1pdCh7IGlkOiBhcmdzLmlkLCBjYWxlbmRhcklkIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2NoZWR1bGUoYXJnczogeyBpZDogc3RyaW5nLCBjYWxlbmRhcklkOiBzdHJpbmcgfSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coYGV2ZW50LWNhbGVuZGFyLmNvbXBvbmVudC50czogZGVsZXRlU2NoZWR1bGU6YCwgc2NoZWR1bGUpO1xyXG4gICAgbGV0IGNhbGVuZGFySWQgPSAoYXJncy5jYWxlbmRhcklkID09IG51bGwpID8gdGhpcy5jYWxlbmRhcklkIDogYXJncy5jYWxlbmRhcklkO1xyXG4gICAgdGhpcy5jYWxlbmRhci5kZWxldGVTY2hlZHVsZShhcmdzLmlkLCBjYWxlbmRhcklkLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVBbGxTY2hlZHVsZXMoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuUG9wdXBTY2hlZHVsZUVkaXRvcihzY2hlZHVsZTogSVNjaGVkdWxlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6IGNhbGV2ZW50OicsIHNjaGVkdWxlKTtcclxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgIGlmICh0aGlzLmFwcGxpZWRPcHRpb25zLnRoZW1lQ2xhc3MpIHtcclxuICAgICAgZGlhbG9nQ29uZmlnLnBhbmVsQ2xhc3MgPSB0aGlzLmFwcGxpZWRPcHRpb25zLnRoZW1lQ2xhc3M7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLndhcm4oYG9wdGlvbnM6IGAsIHRoaXMuYXBwbGllZE9wdGlvbnMpO1xyXG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7IHNjaGVkdWxlLCBkYXJrTW9kZTogdGhpcy5hcHBsaWVkT3B0aW9ucy5kYXJrTW9kZSwgdGhlbWVDbGFzczogdGhpcy5hcHBsaWVkT3B0aW9ucy50aGVtZUNsYXNzIH0gYXMgQ2FsZW5kYXJFZGl0b3JPcHRpb25zO1xyXG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdFR1aUNhbGVuZGFyRWRpdG9yRGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xyXG4gICAgLy8gY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRUdWlDYWxlbmRhclNjaGVkdWxlRWRpdG9yRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAvLyAgIGRhdGE6IHNjaGVkdWxlLFxyXG4gICAgLy8gfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogeyBzY2hlZHVsZTogSVNjaGVkdWxlLCBwZXJmb3JtRGVsZXRlOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ29wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yOiBUaGUgZGlhbG9nIHdhcyBjbG9zZWQnLCByZXN1bHQpO1xyXG4gICAgICB0aGlzLmNhbGVuZGFyLnJlbmRlcih0cnVlKTsgIC8vIDwtLSBzbyB0aGF0IHNlbGVjdGlvbiBpcyBjbGVhcmVkXHJcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnNjaGVkdWxlKSB7XHJcbiAgICAgICAgbGV0IHNjaGVkdWxlID0gcmVzdWx0LnNjaGVkdWxlO1xyXG4gICAgICAgIGlmIChyZXN1bHQucGVyZm9ybURlbGV0ZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAvLyBkZWxldGVcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBvcGVuUG9wdXBTY2hlZHVsZUVkaXRvcjphZnRlckNMb3NlZDogZGVsZXRlU2NoZWR1bGVgKTtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlU2NoZWR1bGVBbmROb3RpZnlQYXJlbnQoeyBpZDogc2NoZWR1bGUuaWQsIGNhbGVuZGFySWQ6IHNjaGVkdWxlLmNhbGVuZGFySWQgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlZHVsZS5pZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6YWZ0ZXJDTG9zZWQ6IGFkZFNjaGVkdWxlYCk7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KHNjaGVkdWxlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYG9wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yOmFmdGVyQ0xvc2VkOiB1cGRhdGVTY2hlZHVsZWApO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChzY2hlZHVsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBzZXRPcHRpb25zKG9wdGlvbnM6IENhbGVuZGFyT3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICBvcHRpb25zID0gdGhpcy5nZXREZWZhdWx0T3B0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy5pb3B0aW9ucyA9IHRoaXMuc2V0SU9wdGlvbnMob3B0aW9ucy5pb3B0aW9ucyk7XHJcbiAgICB0aGlzLmFwcGxpZWRPcHRpb25zID0gey4uLm9wdGlvbnN9O1xyXG4gIH1cclxuXHJcbiAgc2V0SU9wdGlvbnMoaW9wdGlvbnNJbjogSU9wdGlvbnMpIHtcclxuICAgIGxldCBpb3B0aW9ucyA9IHRoaXMucHJlcHJvY2Vzc0lPcHRpb25zKGlvcHRpb25zSW4pO1xyXG4gICAgdGhpcy5jYWxlbmRhci5zZXRPcHRpb25zKGlvcHRpb25zKTtcclxuICAgIHRoaXMuY2FsZW5kYXIuc2V0VGhlbWUoaW9wdGlvbnMudGhlbWUpO1xyXG4gICAgdGhpcy5jYWxlbmRhci5yZW5kZXIodHJ1ZSk7XHJcbiAgICByZXR1cm4gaW9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcmVwcm9jZXNzSU9wdGlvbnMoaW9wdGlvbnM6IElPcHRpb25zKTogSU9wdGlvbnMge1xyXG4gICAgbGV0IGRlZnM6IElPcHRpb25zID0gdGhpcy5nZXREZWZhdWx0SU9wdGlvbnMoKTtcclxuICAgIGlmIChpb3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgIGlvcHRpb25zID0gZGVmcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlvcHRpb25zID0geyAuLi5kZWZzLCAuLi5pb3B0aW9ucyB9O1xyXG4gICAgfVxyXG4gICAgaW9wdGlvbnMudXNlQ3JlYXRpb25Qb3B1cCA9IGZhbHNlO1xyXG4gICAgaW9wdGlvbnMudXNlRGV0YWlsUG9wdXAgPSBmYWxzZTtcclxuICAgIGlmICghaW9wdGlvbnMudGhlbWUpIHtcclxuICAgICAgaW9wdGlvbnMudGhlbWUgPSB0aGlzLmdldERlZmF1bHRUaGVtZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlvcHRpb25zO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERlZmF1bHRPcHRpb25zKCk6IENhbGVuZGFyT3B0aW9ucyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXJrTW9kZTogZmFsc2UsXHJcbiAgICAgIHRoZW1lQ2xhc3M6IG51bGwsXHJcbiAgICAgIGlvcHRpb25zOiB0aGlzLmdldERlZmF1bHRJT3B0aW9ucygpLFxyXG4gICAgfSBhcyBDYWxlbmRhck9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0SU9wdGlvbnMoKTogSU9wdGlvbnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGVmYXVsdFZpZXc6ICdtb250aCcsXHJcbiAgICAgIHRhc2tWaWV3OiB0cnVlLFxyXG4gICAgICB1c2VDcmVhdGlvblBvcHVwOiBmYWxzZSxcclxuICAgICAgdXNlRGV0YWlsUG9wdXA6IGZhbHNlLFxyXG4gICAgICB0aGVtZTogdGhpcy5nZXREZWZhdWx0VGhlbWUoKSxcclxuICAgICAgdGVtcGxhdGU6IHtcclxuICAgICAgICBtb250aERheW5hbWU6IGZ1bmN0aW9uIChkYXluYW1lKSB7XHJcbiAgICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwiY2FsZW5kYXItd2Vlay1kYXluYW1lLW5hbWVcIj4nICsgZGF5bmFtZS5sYWJlbCArICc8L3NwYW4+JztcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHdlZWs6IHtcclxuICAgICAgICAvLyBzdGFydERheU9mV2VlazogdW5kZWZpbmVkLFxyXG4gICAgICAgIC8vIGRheW5hbWVzOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbmFycm93V2Vla2VuZDogZmFsc2UsXHJcbiAgICAgICAgLy8gd29ya3dlZWs6IHRydWUsXHJcbiAgICAgICAgc2hvd1RpbWV6b25lQ29sbGFwc2VCdXR0b246IHRydWUsXHJcbiAgICAgICAgdGltZXpvbmVzQ29sbGFwc2VkOiB0cnVlLFxyXG4gICAgICAgIGhvdXJTdGFydDogNyxcclxuICAgICAgICBob3VyRW5kOiAyMCxcclxuICAgICAgfSBhcyBJV2Vla09wdGlvbnMsXHJcbiAgICB9IGFzIElPcHRpb25zO1xyXG5cclxuICB9XHJcblxyXG4gIGdldENvbG9yKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGB0aGVtZS0ke25hbWV9YCk7XHJcbiAgICBpZiAoZWwpIHtcclxuICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCk7XHJcbiAgICAgIGNvbnNvbGUud2FybihgdGhlbWUtJHtuYW1lfSBjb2xvcjpgLCBzdHlsZS5jb2xvcik7XHJcbiAgICAgIHJldHVybiBzdHlsZS5jb2xvcjtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRUaGVtZSgpOiBJVGhlbWUge1xyXG4gICAgZnVuY3Rpb24gYWRqdXN0SGV4T3BhY2l0eShjb2xvciwgb3BhY2l0eSkge1xyXG4gICAgICBjb25zdCByID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMSwgMyksIDE2KTtcclxuICAgICAgY29uc3QgZyA9IHBhcnNlSW50KGNvbG9yLnNsaWNlKDMsIDUpLCAxNik7XHJcbiAgICAgIGNvbnN0IGIgPSBwYXJzZUludChjb2xvci5zbGljZSg1LCA3KSwgMTYpO1xyXG5cclxuICAgICAgcmV0dXJuICdyZ2JhKCcgKyByICsgJywgJyArIGcgKyAnLCAnICsgYiArICcsICcgKyBvcGFjaXR5ICsgJyknO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGRlZmF1bHQga2V5cyBhbmQgc3R5bGVzXHJcbiAgICAvLyBUT0RPOiBhcHBseSBNYXRlcmlhbCBEZXNpZ24gVGhlbWUgXHJcbiAgICBsZXQgYmFja2dyb3VuZCA9IHRoaXMuZ2V0Q29sb3IoXCJiYWNrZ3JvdW5kXCIpO1xyXG4gICAgbGV0IGJvcmRlciA9IHRoaXMuZ2V0Q29sb3IoXCJkaXZpZGVyXCIpO1xyXG4gICAgbGV0IGJvcmRlckxpZ2h0ID0gdGhpcy5nZXRDb2xvcihcImRpdmlkZXItbGlnaHRcIik7XHJcbiAgICBsZXQgc2hhZG93ID0gdGhpcy5nZXRDb2xvcihcImRpdmlkZXJcIik7XHJcbiAgICBsZXQgaGlnaGxpZ2h0ID0gdGhpcy5nZXRDb2xvcihcImhpZ2hsaWdodFwiKTtcclxuICAgIGxldCBwcmltYXJ5ID0gdGhpcy5nZXRDb2xvcihcInByaW1hcnlcIik7XHJcbiAgICBsZXQgd2FybiA9IHRoaXMuZ2V0Q29sb3IoXCJ3YXJuXCIpO1xyXG4gICAgbGV0IHRleHQgPSB0aGlzLmdldENvbG9yKFwiZm9yZWdyb3VuZFwiKTtcclxuICAgIGxldCBwcmltYXJ5U2hhZGVkID0gdGhpcy5nZXRDb2xvcihcInByaW1hcnktc2hhZGVkXCIpO1xyXG5cclxuICAgIC8vIHR1aS1mdWxsLWNhbGVuZGFyLXdlZWtkYXktc2NoZWR1bGUtdGl0bGVcclxuICAgIC8vY2FsZW5kYXItd2Vlay1kYXluYW1lLW5hbWVcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdjb21tb24uYm9yZGVyJzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnY29tbW9uLmJhY2tncm91bmRDb2xvcic6IGJhY2tncm91bmQsXHJcbiAgICAgICdjb21tb24uaG9saWRheS5jb2xvcic6IHdhcm4sXHJcbiAgICAgICdjb21tb24uc2F0dXJkYXkuY29sb3InOiB0ZXh0LFxyXG4gICAgICAnY29tbW9uLmRheW5hbWUuY29sb3InOiB0ZXh0LFxyXG4gICAgICAnY29tbW9uLnRvZGF5LmNvbG9yJzogJyMwZjAnLFxyXG5cclxuICAgICAgLy8gY3JlYXRpb24gZ3VpZGUgc3R5bGVcclxuICAgICAgJ2NvbW1vbi5jcmVhdGlvbkd1aWRlLmJhY2tncm91bmRDb2xvcic6IHByaW1hcnlTaGFkZWQsXHJcbiAgICAgICdjb21tb24uY3JlYXRpb25HdWlkZS5ib3JkZXInOiBgMXB4IHNvbGlkICR7aGlnaGxpZ2h0fWAsXHJcblxyXG4gICAgICAvLyBtb250aCBoZWFkZXIgJ2RheW5hbWUnXHJcbiAgICAgICdtb250aC5kYXluYW1lLmhlaWdodCc6ICczMXB4JyxcclxuICAgICAgJ21vbnRoLmRheW5hbWUuYm9yZGVyTGVmdCc6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ21vbnRoLmRheW5hbWUucGFkZGluZ0xlZnQnOiAnMTBweCcsXHJcbiAgICAgICdtb250aC5kYXluYW1lLnBhZGRpbmdSaWdodCc6ICcxMHB4JyxcclxuICAgICAgJ21vbnRoLmRheW5hbWUuYmFja2dyb3VuZENvbG9yJzogJ2luaGVyaXQnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5mb250U2l6ZSc6ICcxMnB4JyxcclxuICAgICAgJ21vbnRoLmRheW5hbWUuZm9udFdlaWdodCc6ICdub3JtYWwnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS50ZXh0QWxpZ24nOiAnbGVmdCcsXHJcblxyXG4gICAgICAvLyBtb250aCBkYXkgZ3JpZCBjZWxsICdkYXknXHJcbiAgICAgICdtb250aC5ob2xpZGF5RXhjZXB0VGhpc01vbnRoLmNvbG9yJzogJ3JnYmEoMjU1LCA2NCwgNjQsIDAuNCknLFxyXG4gICAgICAnbW9udGguZGF5RXhjZXB0VGhpc01vbnRoLmNvbG9yJzogJ3JnYmEoNTEsIDUxLCA1MSwgMC40KScsXHJcbiAgICAgICdtb250aC53ZWVrZW5kLmJhY2tncm91bmRDb2xvcic6ICdpbmhlcml0JyxcclxuICAgICAgJ21vbnRoLmRheS5mb250U2l6ZSc6ICcxNHB4JyxcclxuICAgICAgJ21vbnRoLnNjaGVkdWxlLmNvbG9yJzogaGlnaGxpZ2h0LFxyXG5cclxuICAgICAgLy8gbW9udGggc2NoZWR1bGUgc3R5bGVcclxuICAgICAgJ21vbnRoLnNjaGVkdWxlLmJvcmRlclJhZGl1cyc6ICcycHgnLFxyXG4gICAgICAnbW9udGguc2NoZWR1bGUuaGVpZ2h0JzogJzI0cHgnLFxyXG4gICAgICAnbW9udGguc2NoZWR1bGUubWFyZ2luVG9wJzogJzJweCcsXHJcbiAgICAgICdtb250aC5zY2hlZHVsZS5tYXJnaW5MZWZ0JzogJzhweCcsXHJcbiAgICAgICdtb250aC5zY2hlZHVsZS5tYXJnaW5SaWdodCc6ICc4cHgnLFxyXG5cclxuICAgICAgLy8gbW9udGggbW9yZSB2aWV3XHJcbiAgICAgICdtb250aC5tb3JlVmlldy5ib3JkZXInOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICdtb250aC5tb3JlVmlldy5ib3hTaGFkb3cnOiBgMCAycHggNnB4IDAgJHtzaGFkb3d9YCxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LmJhY2tncm91bmRDb2xvcic6IGJhY2tncm91bmQsXHJcbiAgICAgICdtb250aC5tb3JlVmlldy5wYWRkaW5nQm90dG9tJzogJzE3cHgnLFxyXG4gICAgICAnbW9udGgubW9yZVZpZXdUaXRsZS5oZWlnaHQnOiAnNDRweCcsXHJcbiAgICAgICdtb250aC5tb3JlVmlld1RpdGxlLm1hcmdpbkJvdHRvbSc6ICcxMnB4JyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3VGl0bGUuYmFja2dyb3VuZENvbG9yJzogJ2luaGVyaXQnLFxyXG4gICAgICAnbW9udGgubW9yZVZpZXdUaXRsZS5ib3JkZXJCb3R0b20nOiAnbm9uZScsXHJcbiAgICAgICdtb250aC5tb3JlVmlld1RpdGxlLnBhZGRpbmcnOiAnMTJweCAxN3B4IDAgMTdweCcsXHJcbiAgICAgICdtb250aC5tb3JlVmlld0xpc3QucGFkZGluZyc6ICcwIDE3cHgnLFxyXG5cclxuICAgICAgLy8gd2VlayBoZWFkZXIgJ2RheW5hbWUnXHJcbiAgICAgICd3ZWVrLmRheW5hbWUuaGVpZ2h0JzogJzQycHgnLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLmJvcmRlclRvcCc6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ3dlZWsuZGF5bmFtZS5ib3JkZXJCb3R0b20nOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICd3ZWVrLmRheW5hbWUuYm9yZGVyTGVmdCc6ICdpbmhlcml0JyxcclxuICAgICAgJ3dlZWsuZGF5bmFtZS5wYWRkaW5nTGVmdCc6ICcwJyxcclxuICAgICAgJ3dlZWsuZGF5bmFtZS5iYWNrZ3JvdW5kQ29sb3InOiAnaW5oZXJpdCcsXHJcbiAgICAgICd3ZWVrLmRheW5hbWUudGV4dEFsaWduJzogJ2xlZnQnLFxyXG4gICAgICAnd2Vlay50b2RheS5jb2xvcic6IHRleHQsXHJcbiAgICAgICd3ZWVrLnBhc3REYXkuY29sb3InOiBib3JkZXJMaWdodCxcclxuXHJcbiAgICAgIC8vIHdlZWsgdmVydGljYWwgcGFuZWwgJ3ZwYW5lbCdcclxuICAgICAgJ3dlZWsudnBhbmVsU3BsaXR0ZXIuYm9yZGVyJzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay52cGFuZWxTcGxpdHRlci5oZWlnaHQnOiAnM3B4JyxcclxuXHJcbiAgICAgIC8vIHdlZWsgZGF5Z3JpZCAnZGF5Z3JpZCdcclxuICAgICAgJ3dlZWsuZGF5Z3JpZC5ib3JkZXJSaWdodCc6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ3dlZWsuZGF5Z3JpZC5iYWNrZ3JvdW5kQ29sb3InOiBiYWNrZ3JvdW5kLFxyXG5cclxuICAgICAgJ3dlZWsuZGF5Z3JpZExlZnQud2lkdGgnOiAnNzJweCcsXHJcbiAgICAgICd3ZWVrLmRheWdyaWRMZWZ0LmJhY2tncm91bmRDb2xvcic6IGJhY2tncm91bmQsXHJcbiAgICAgICd3ZWVrLmRheWdyaWRMZWZ0LnBhZGRpbmdSaWdodCc6ICc4cHgnLFxyXG4gICAgICAnd2Vlay5kYXlncmlkTGVmdC5ib3JkZXJSaWdodCc6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuXHJcblxyXG4gICAgICAnd2Vlay50b2RheS5iYWNrZ3JvdW5kQ29sb3InOiBwcmltYXJ5U2hhZGVkLFxyXG4gICAgICAnd2Vlay53ZWVrZW5kLmJhY2tncm91bmRDb2xvcic6ICdpbmhlcml0JyxcclxuXHJcbiAgICAgIC8vIHdlZWsgdGltZWdyaWQgJ3RpbWVncmlkJ1xyXG4gICAgICAnd2Vlay50aW1lZ3JpZExlZnQud2lkdGgnOiAnNzJweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkTGVmdC5iYWNrZ3JvdW5kQ29sb3InOiAnaW5oZXJpdCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkTGVmdC5ib3JkZXJSaWdodCc6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ3dlZWsudGltZWdyaWRMZWZ0LmZvbnRTaXplJzogJzExcHgnLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZExlZnRUaW1lem9uZUxhYmVsLmhlaWdodCc6ICc0MHB4JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRMZWZ0QWRkaXRpb25hbFRpbWV6b25lLmJhY2tncm91bmRDb2xvcic6IGJhY2tncm91bmQsXHJcblxyXG4gICAgICAnd2Vlay50aW1lZ3JpZE9uZUhvdXIuaGVpZ2h0JzogJzUycHgnLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZEhhbGZIb3VyLmhlaWdodCc6ICcyNnB4JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRIYWxmSG91ci5ib3JkZXJCb3R0b20nOiAnbm9uZScsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkSG9yaXpvbnRhbExpbmUuYm9yZGVyQm90dG9tJzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG5cclxuICAgICAgJ3dlZWsudGltZWdyaWQucGFkZGluZ1JpZ2h0JzogJzhweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkLmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZFNjaGVkdWxlLmJvcmRlclJhZGl1cyc6ICcycHgnLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZFNjaGVkdWxlLnBhZGRpbmdMZWZ0JzogJzJweCcsXHJcblxyXG4gICAgICAvLyAjNTE1Y2U2IGlzIGEgc2xhdGUgYmx1ZVxyXG5cclxuICAgICAgJ3dlZWsuY3VycmVudFRpbWUuY29sb3InOiBoaWdobGlnaHQsXHJcbiAgICAgICd3ZWVrLmN1cnJlbnRUaW1lLmZvbnRTaXplJzogJzExcHgnLFxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZS5mb250V2VpZ2h0JzogJ25vcm1hbCcsXHJcblxyXG4gICAgICAnd2Vlay5wYXN0VGltZS5jb2xvcic6IGJvcmRlckxpZ2h0LFxyXG4gICAgICAnd2Vlay5wYXN0VGltZS5mb250V2VpZ2h0JzogJ25vcm1hbCcsXHJcblxyXG4gICAgICAnd2Vlay5mdXR1cmVUaW1lLmNvbG9yJzogYm9yZGVyLFxyXG4gICAgICAnd2Vlay5mdXR1cmVUaW1lLmZvbnRXZWlnaHQnOiAnbm9ybWFsJyxcclxuXHJcbiAgICAgICd3ZWVrLmN1cnJlbnRUaW1lTGluZVBhc3QuYm9yZGVyJzogYDFweCBkYXNoZWQgJHtoaWdobGlnaHR9YCxcclxuICAgICAgJ3dlZWsuY3VycmVudFRpbWVMaW5lQnVsbGV0LmJhY2tncm91bmRDb2xvcic6IGhpZ2hsaWdodCxcclxuICAgICAgJ3dlZWsuY3VycmVudFRpbWVMaW5lVG9kYXkuYm9yZGVyJzogYDFweCBzb2xpZCAke2hpZ2hsaWdodH1gLFxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZUxpbmVGdXR1cmUuYm9yZGVyJzogJ25vbmUnLFxyXG5cclxuICAgICAgLy8gd2VlayBjcmVhdGlvbiBndWlkZSBzdHlsZVxyXG4gICAgICAnd2Vlay5jcmVhdGlvbkd1aWRlLmNvbG9yJzogaGlnaGxpZ2h0LFxyXG4gICAgICAnd2Vlay5jcmVhdGlvbkd1aWRlLmZvbnRTaXplJzogJzExcHgnLFxyXG4gICAgICAnd2Vlay5jcmVhdGlvbkd1aWRlLmZvbnRXZWlnaHQnOiAnYm9sZCcsXHJcblxyXG4gICAgICAvLyB3ZWVrIGRheWdyaWQgc2NoZWR1bGUgc3R5bGVcclxuICAgICAgJ3dlZWsuZGF5R3JpZFNjaGVkdWxlLmJvcmRlclJhZGl1cyc6ICcycHgnLFxyXG4gICAgICAnd2Vlay5kYXlHcmlkU2NoZWR1bGUuaGVpZ2h0JzogJzI0cHgnLFxyXG4gICAgICAnd2Vlay5kYXlHcmlkU2NoZWR1bGUubWFyZ2luVG9wJzogJzJweCcsXHJcbiAgICAgICd3ZWVrLmRheUdyaWRTY2hlZHVsZS5tYXJnaW5MZWZ0JzogJzhweCcsXHJcbiAgICAgICd3ZWVrLmRheUdyaWRTY2hlZHVsZS5tYXJnaW5SaWdodCc6ICc4cHgnXHJcbiAgICB9IGFzIElUaGVtZTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwiY29udGVudC1jb250YWluZXJcIj5cclxuICAgIDwhLS0gVGhlc2UgZGl2cyBhcmUgaGVyZSBzbyB0aGF0IHdlIGNhbiByZWFkIHRoZSB0aGVtZSBjb2xvcnMgZm9yIHRoZSB0dWkgdGhlbWUgLS0+XHJcbiAgICA8IS0tIFRoZSBvdXRlciBkaXYgZ2l2ZXMgdGhlIGRlZmF1bHQgY29sb3IgZm9yIHdoZW4gdXNlciBkb2VzIG5vdCBwcm92aWRlIGFuIEFuZ3VsYXIgdGhlbWUgLS0+XHJcbiAgICA8ZGl2IHN0eWxlPVwiY29sb3I6IGJsdWU7XCI+IDxkaXYgaWQ9XCJ0aGVtZS1wcmltYXJ5XCI+PC9kaXY+PC9kaXY+XHJcbiAgICA8ZGl2IHN0eWxlPVwiY29sb3I6IGJsdWU7XCI+IDxkaXYgaWQ9XCJ0aGVtZS1oaWdobGlnaHRcIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogYmx1ZTtcIj4gPGRpdiBpZD1cInRoZW1lLWFjY2VudFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiByZWQ7XCI+IDxkaXYgaWQ9XCJ0aGVtZS13YXJuXCI+PC9kaXY+PC9kaXY+XHJcbiAgICA8ZGl2IHN0eWxlPVwiY29sb3I6IHJnYmEoMCwgMCwgMjU1LCAwLjIpO1wiPiA8ZGl2IGlkPVwidGhlbWUtcHJpbWFyeS1zaGFkZWRcIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogIzNlM2UzZTtcIj4gPGRpdiBpZD1cInRoZW1lLWZvcmVncm91bmRcIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogI2UwZTBlMDtcIj4gPGRpdiBpZD1cInRoZW1lLWRpdmlkZXJcIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogd2hpdGU7XCI+IDxkaXYgaWQ9XCJ0aGVtZS1iYWNrZ3JvdW5kXCI+PC9kaXY+PC9kaXY+XHJcbiAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGFpbmVyXCI+XHJcbiAgICAgIDwhLS0gY2FsZW5kYXIgdGl0bGViYXIgLS0+XHJcbiAgICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cIm1lbnUtYmFyXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgPCEtLSA8ZGl2IHN0eWxlPVwiYWxpZ24tc2VsZjogY2VudGVyO2Rpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1wiPiAtLT5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgd2lkdGg6IDEwMCU7ICBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LWRpdlwiPlxyXG4gICAgICAgICAgICA8IS0tIExFRlQgLS0+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBcclxuICAgICAgICAgICAgICBjbGFzcz1cIm5hdmlnYXRpb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50O1wiIFxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbGVuZGFyTG9uZ1ByZXYoKVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25Mb25nUHJldlwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBcclxuICAgICAgICAgICAgICBjbGFzcz1cIm5hdmlnYXRpb24tYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tcmlnaHQ6IDBweDsgZm9udC1zaXplOiAycmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJQcmV2KClcIj5cclxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpY29uUHJldlwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBcclxuICAgICAgICAgICAgICBjbGFzcz1cIm5hdmlnYXRpb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBmb250LXNpemU6IDEuN3JlbSAhaW1wb3J0YW50O1wiIFxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbGVuZGFyVG9kYXkoKVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25Ub2RheVwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBcclxuICAgICAgICAgICAgICBjbGFzcz1cIm5hdmlnYXRpb24tYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tcmlnaHQ6IDBweDsgZm9udC1zaXplOiAycmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJOZXh0KClcIj5cclxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpY29uTmV4dFwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBcclxuICAgICAgICAgICAgICBjbGFzcz1cIm5hdmlnYXRpb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50O1wiIFxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbGVuZGFyTG9uZ05leHQoKVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25Mb25nTmV4dFwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXItZGl2XCI+XHJcbiAgICAgICAgICAgIDwhLS0gQ0VOVEVSIC0tPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV2ZW50LWNhbGVuZGFyLXRpdGxlXCI+e3sgZ2V0RGF0ZSgpIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtZGl2XCI+XHJcbiAgXHJcbiAgICAgICAgICAgIDwhLS0gUklHSFQgLS0+XHJcbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz1cInZpZXctYnV0dG9uXCIgdmFsdWU9XCJtb250aFwiIGlkPVwiQCtpZC90b2dnbGVCdXR0b25cIiBsYXlvdXRfd2lkdGg9XCJ3cmFwX2NvbnRlbnRcIlxyXG4gICAgICAgICAgICAgIGxheW91dF9oZWlnaHQ9XCJ3cmFwX2NvbnRlbnRcIj5cclxuICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWJ1dHRvbiB2YWx1ZT1cIm1vbnRoXCIgY2xhc3M9XCJ2aWV3LWJ1dHRvblwiIChjbGljayk9XCJvbk1vbnRoVmlldygpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpY29uQnlNb250aFwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtYnV0dG9uIHZhbHVlPVwid2Vla1wiIGNsYXNzPVwidmlldy1idXR0b25cIiAoY2xpY2spPVwib25XZWVrVmlldygpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpY29uQnlXZWVrXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIG1hdC1idXR0b24gdmFsdWU9XCJkYXlcIiBjbGFzcz1cInZpZXctYnV0dG9uXCIgKGNsaWNrKT1cIm9uRGF5VmlldygpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpY29uQnlEYXlcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC10b29sYmFyPlxyXG4gICAgICA8bmd4LW1hdC10dWktY2FsZW5kYXItd3JhcHBlcj48L25neC1tYXQtdHVpLWNhbGVuZGFyLXdyYXBwZXI+XHJcbiAgICA8L2Rpdj5cclxuICBcclxuICA8L3NlY3Rpb24+XHJcbiJdfQ==
537
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdC10dWktY2FsZW5kYXIvc3JjL2xpYi9uZ3gtbWF0LXR1aS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0LXR1aS1jYWxlbmRhci9zcmMvbGliL25neC1tYXQtdHVpLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUEwRCxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFDTCxlQUFlLEVBR2YsT0FBTyxFQUNQLFNBQVMsRUFFVCxTQUFTLEVBQ1QsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUNMLE9BQU8sSUFBSSxRQUFRLEdBYXBCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLFdBQVc7QUFDWCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sbUZBQW1GLENBQUM7Ozs7Ozs7O0FBVzNJLE1BQU0sT0FBTywwQkFBMEI7SUFzQnJDLFlBQW1CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFyQnBDLGNBQVMsR0FBRyxlQUFlLENBQUM7UUFDNUIsZ0NBQWdDO1FBQ2hDLGlDQUFpQztRQUNqQyxhQUFRLEdBQUcsV0FBVyxDQUFDO1FB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VztZQUNsQywwQkFBMEIsRUFBRSxRQUFRO1lBRXBDLHVCQUF1QixFQUFFLE1BQU07WUFDL0IsNEJBQTRCLEVBQUUsUUFBUTtZQUV0QyxpQ0FBaUMsRUFBRSxjQUFjLFNBQVMsRUFBRTtZQUM1RCw0Q0FBNEMsRUFBRSxTQUFTO1lBQ3ZELGtDQUFrQyxFQUFFLGFBQWEsU0FBUyxFQUFFO1lBQzVELG1DQUFtQyxFQUFFLE1BQU07WUFFM0MsNEJBQTRCO1lBQzVCLDBCQUEwQixFQUFFLFNBQVM7WUFDckMsNkJBQTZCLEVBQUUsTUFBTTtZQUNyQywrQkFBK0IsRUFBRSxNQUFNO1lBRXZDLDhCQUE4QjtZQUM5QixtQ0FBbUMsRUFBRSxLQUFLO1lBQzFDLDZCQUE2QixFQUFFLE1BQU07WUFDckMsZ0NBQWdDLEVBQUUsS0FBSztZQUN2QyxpQ0FBaUMsRUFBRSxLQUFLO1lBQ3hDLGtDQUFrQyxFQUFFLEtBQUs7U0FDaEMsQ0FBQztJQUNkLENBQUM7O3dIQXBrQlUsMEJBQTBCOzRHQUExQiwwQkFBMEIsa1FDbER2Qyxza0lBaUZBOzRGRC9CYSwwQkFBMEI7a0JBUHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLHVDQUF1QztvQkFDcEQsU0FBUyxFQUFFO3dCQUNULHVDQUF1QztxQkFDeEM7aUJBQ0Y7Z0dBaUJXLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3ksIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuaW1wb3J0IGRpc3RpbmN0Q29sb3JzIGZyb20gJ2Rpc3RpbmN0LWNvbG9ycyc7XHJcbmltcG9ydCB7IENvbG9yIH0gZnJvbSBcImNocm9tYS1qc1wiO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuXHJcbmltcG9ydCB7XHJcbiAgZmFDYWxlbmRhckNoZWNrLFxyXG4gIGZhQ2FyZXRTcXVhcmVMZWZ0LFxyXG4gIGZhQ2FyZXRTcXVhcmVSaWdodCxcclxuICBmYVRhYmxlLFxyXG4gIGZhQ29sdW1ucyxcclxuICBmYUxpc3QsXHJcbiAgZmFMaXN0QWx0LFxyXG4gIGZhRm9yd2FyZCxcclxuICBmYUZhc3RCYWNrd2FyZCxcclxuICBmYUJhY2t3YXJkLFxyXG4gIGZhQ2FyZXRMZWZ0LFxyXG4gIGZhQ2FyZXRSaWdodCxcclxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xyXG5pbXBvcnQge1xyXG4gIGRlZmF1bHQgYXMgQ2FsZW5kYXIsXHJcbiAgSUNhbGVuZGFySW5mbyxcclxuICBJRXZlbnREYXRlT2JqZWN0LFxyXG4gIElFdmVudE1vcmVPYmplY3QsXHJcbiAgSUV2ZW50T2JqZWN0LFxyXG4gIElFdmVudFNjaGVkdWxlT2JqZWN0LFxyXG4gIElPcHRpb25zLFxyXG4gIElTY2hlZHVsZSxcclxuICBJVGhlbWUsXHJcbiAgSVRpbWV6b25lLFxyXG4gIElXZWVrT3B0aW9ucyxcclxuICBURXZlbnRCZWZvcmVDcmVhdGVTY2hlZHVsZSxcclxuICBUWkRhdGUsXHJcbn0gZnJvbSAndHVpLWNhbGVuZGFyJztcclxuXHJcbi8vIHByb2plY3QgXHJcbmltcG9ydCB7IExvY2FsRGF0ZSB9IGZyb20gJy4vbG9jYWwtZGF0ZS5qcyc7XHJcbmltcG9ydCB7IE5neE1hdFR1aUNhbGVuZGFyRWRpdG9yRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtbWF0LXR1aS1jYWxlbmRhci1lZGl0b3ItZGlhbG9nL25neC1tYXQtdHVpLWNhbGVuZGFyLWVkaXRvci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FsZW5kYXJPcHRpb25zIH0gZnJvbSAnLi9jYWxlbmRhci1vcHRpb25zJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi9jYWxlbmRhci1lZGl0b3Itb3B0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1tYXQtdHVpLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4vbmd4LW1hdC10dWktY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neE1hdFR1aUNhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgaWNvblRvZGF5ID0gZmFDYWxlbmRhckNoZWNrO1xyXG4gIC8vIGljb25QcmV2ID0gZmFDYXJldFNxdWFyZUxlZnQ7XHJcbiAgLy8gaWNvbk5leHQgPSBmYUNhcmV0U3F1YXJlUmlnaHQ7XHJcbiAgaWNvblByZXYgPSBmYUNhcmV0TGVmdDtcclxuICBpY29uTmV4dCA9IGZhQ2FyZXRSaWdodDtcclxuICBpY29uTG9uZ1ByZXYgPSBmYUJhY2t3YXJkO1xyXG4gIGljb25Mb25nTmV4dCA9IGZhRm9yd2FyZDtcclxuICBpY29uQnlNb250aCA9IGZhVGFibGU7XHJcbiAgaWNvbkJ5V2VlayA9IGZhQ29sdW1ucztcclxuICBpY29uQnlEYXkgPSBmYUxpc3RBbHQ7XHJcblxyXG4gIGNhbGVuZGFyOiBDYWxlbmRhcjsgIC8vIHRoZSBUVUkgQ2FsZW5kYXIgT2JqZWN0XHJcbiAgY2FsZW5kYXJJZDogc3RyaW5nO1xyXG4gIGNvbG9yczogQ29sb3JbXTtcclxuICBjb2xvckluZGV4OiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIHVzZXJDcmVhdGVkU2NoZWR1bGU6IEV2ZW50RW1pdHRlcjxJU2NoZWR1bGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1c2VyVXBkYXRlZFNjaGVkdWxlOiBFdmVudEVtaXR0ZXI8SVNjaGVkdWxlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXNlckRlbGV0ZWRTY2hlZHVsZTogRXZlbnRFbWl0dGVyPElTY2hlZHVsZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgb3B0aW9uczogQ2FsZW5kYXJPcHRpb25zO1xyXG4gIGFwcGxpZWRPcHRpb25zOiBDYWxlbmRhck9wdGlvbnM7IC8vIHRoaXMgaXMgbmVlZGVkIGZvciB3aGVuIG9wdGlvbnMgaXMgbm90IGNvbm5lY3RlZFxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICAgIC8vIHdlIHNsaWNlIG9mZiB0aGUgZmlyc3QgY29sb3Igc2luY2UgaXQgaXMgZ3JheVxyXG4gICAgdGhpcy5jb2xvcnMgPSBkaXN0aW5jdENvbG9ycyh7IGxpZ2h0TWluOiA3MCwgY291bnQ6IDE1IH0pLnNsaWNlKDEpO1xyXG4gICAgdGhpcy5jb2xvckluZGV4ID0gMDtcclxuICAgIHRoaXMuY2FsZW5kYXJJZCA9IHV1aWR2NCgpO1xyXG5cclxuICAgIHRoaXMuYXBwbGllZE9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRPcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIGNvbnNvbGUud2FybihgY2FsZW5kYXIuY29tcG9uZW50LnRzOiBuZ09uaXRgKVxyXG4gICAgdGhpcy5jcmVhdGVUVUlDYWxlbmRhcigpO1xyXG4gICAgdGhpcy5iaW5kQ2FsbGJhY2tzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLndhcm4oY2hhbmdlcyk7XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xyXG5cclxuICAgICAgaWYgKGNoYW5nZXMub3B0aW9ucykge1xyXG4gICAgICAgIC8vIGNvbnNvbGUud2FybihgY2hhbmdlLm9wdGlvbjpgLCBjaGFuZ2VzLm9wdGlvbnMpO1xyXG4gICAgICAgIGxldCBvcHRpb25zID0gY2hhbmdlcy5vcHRpb25zLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICB0aGlzLnNldE9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY2FsZW5kYXIuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgb25DYWxlbmRhckxvbmdQcmV2KCkge1xyXG4gICAgbGV0IGRhdGU6IERhdGUgPSAodGhpcy5jYWxlbmRhci5nZXREYXRlKCkgYXMgVFpEYXRlKS50b0RhdGUoKTtcclxuICAgIGxldCBkYXlzID0gMDtcclxuICAgIGxldCBtb250aHMgPSAwO1xyXG4gICAgbGV0IHllYXJzID0gMDtcclxuICAgIHN3aXRjaCAodGhpcy5jYWxlbmRhci5nZXRWaWV3TmFtZSgpKSB7XHJcbiAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgZGF5cyA9IC03O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICBkYXlzID0gLTI4O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgeWVhcnMgPSAtMTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgeWVhcnMpO1xyXG4gICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBtb250aHMpOyAgLy8gZGF0ZSBjbGFzcyBkb2VzIHRoZSBtb2R1bGFyIGFyaXRobWV0aWNcclxuICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRheXMpOyAgLy8gZGF0ZSBjbGFzcyBkb2VzIHRoZSBtb2R1bGFyIGFyaXRobWV0aWNcclxuICAgIHRoaXMuY2FsZW5kYXIuc2V0RGF0ZShkYXRlKTtcclxuICAgIHRoaXMuY2FsZW5kYXIudG9nZ2xlU2NoZWR1bGVWaWV3KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25DYWxlbmRhclByZXYoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnByZXYoKTtcclxuICAgIHRoaXMuY2FsZW5kYXIudG9nZ2xlU2NoZWR1bGVWaWV3KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25DYWxlbmRhclRvZGF5KCkge1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2RheSgpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGVuZGFyTmV4dCgpIHtcclxuICAgIHRoaXMuY2FsZW5kYXIubmV4dCgpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGVuZGFyTG9uZ05leHQoKSB7XHJcbiAgICBsZXQgZGF0ZTogRGF0ZSA9ICh0aGlzLmNhbGVuZGFyLmdldERhdGUoKSBhcyBUWkRhdGUpLnRvRGF0ZSgpO1xyXG4gICAgbGV0IGRheXMgPSAwO1xyXG4gICAgbGV0IG1vbnRocyA9IDA7XHJcbiAgICBsZXQgeWVhcnMgPSAwO1xyXG4gICAgc3dpdGNoICh0aGlzLmNhbGVuZGFyLmdldFZpZXdOYW1lKCkpIHtcclxuICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICBkYXlzID0gNztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd2Vlayc6XHJcbiAgICAgICAgZGF5cyA9IDI4O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgeWVhcnMgPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyB5ZWFycyk7XHJcbiAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG1vbnRocyk7ICAvLyBkYXRlIGNsYXNzIGRvZXMgdGhlIG1vZHVsYXIgYXJpdGhtZXRpY1xyXG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGF5cyk7ICAvLyBkYXRlIGNsYXNzIGRvZXMgdGhlIG1vZHVsYXIgYXJpdGhtZXRpY1xyXG4gICAgdGhpcy5jYWxlbmRhci5zZXREYXRlKGRhdGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Nb250aFZpZXcoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNoYW5nZVZpZXcoJ21vbnRoJyk7XHJcbiAgfVxyXG5cclxuICBvbldlZWtWaWV3KCkge1xyXG4gICAgY29uc29sZS5sb2coYG9uV2Vla1ZpZXdgKVxyXG4gICAgdGhpcy5jYWxlbmRhci5jaGFuZ2VWaWV3KCd3ZWVrJyk7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnJlbmRlcih0cnVlKTsgIC8vIDwtLSBzbyB0aGF0IHNlbGVjdGlvbiBpcyBjbGVhcmVkXHJcbiAgfVxyXG5cclxuICBvbkRheVZpZXcoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNoYW5nZVZpZXcoJ2RheScpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERhdGUoKSB7XHJcbiAgICBsZXQgZGF0ZSA9IHRoaXMuY2FsZW5kYXIuZ2V0RGF0ZSgpO1xyXG4gICAgbGV0IHN0ciA9IGRhdGUudG9EYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwge1xyXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgIG1vbnRoOiAnc2hvcnQnLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVFVJQ2FsZW5kYXIoKSB7XHJcbiAgICBsZXQgaW9wdGlvbnMgPSB0aGlzLnByZXByb2Nlc3NJT3B0aW9ucyhudWxsKTtcclxuICAgIC8vIGNvbnNvbGUud2FybihgY2FsZW5kYXIuY29tcG9uZW50LnRzOiBjcmVhdGVUVUlDYWxlbmRhcjogaW9wdGlvbnM6YCwgaW9wdGlvbnMpO1xyXG4gICAgdGhpcy5jYWxlbmRhciA9IG5ldyBDYWxlbmRhcignI2NhbGVuZGFyJywgaW9wdGlvbnMpO1xyXG4gICAgLy8gY29uc29sZS53YXJuKGBjYWxlbmRhci5jb21wb25lbnQudHM6IGNyZWF0ZVRVSUNhbGVuZGFyOiB0aGlzLmNhbGVuZGFyOmAsIHRoaXMuY2FsZW5kYXIpO1xyXG4gICAgdGhpcy5jYWxlbmRhci50b2dnbGVTY2hlZHVsZVZpZXcodHJ1ZSk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGJpbmRDYWxsYmFja3MoKSB7XHJcbiAgICB0aGlzLmJpbmRBZnRlclJlbmRlclNjaGVkdWxlKCk7XHJcbiAgICB0aGlzLmJpbmRDbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuKCk7XHJcbiAgICB0aGlzLmJpbmRDbGlja0RheW5hbWUoKTtcclxuICAgIHRoaXMuYmluZENsaWNrTW9yZSgpO1xyXG4gICAgdGhpcy5iaW5kQ2xpY2tTY2hlZHVsZSgpO1xyXG4gICAgdGhpcy5iaW5kQmVmb3JlQ3JlYXRlU2NoZWR1bGUoKTtcclxuICAgIHRoaXMuYmluZEJlZm9yZVVwZGF0ZVNjaGVkdWxlKCk7XHJcbiAgICB0aGlzLmJpbmRCZWZvcmVEZWxldGVTY2hlZHVsZSgpO1xyXG4gIH1cclxuXHJcbiAgYmluZEFmdGVyUmVuZGVyU2NoZWR1bGUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdhZnRlclJlbmRlclNjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiB7IHNjaGVkdWxlOiBJU2NoZWR1bGUgfSkge1xyXG4gICAgICAvLyBjb25zb2xlLndhcm4oYGFmdGVyUmVuZGVyU2NoZWR1bGVgLCBldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRDbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgdGhpcy5jYWxlbmRhci5vbignY2xpY2tUaW1lem9uZXNDb2xsYXBzZUJ0bicsIGZ1bmN0aW9uICh0aW1lem9uZXNDb2xsYXBzZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBjbGlja1RpbWV6b25lc0NvbGxhcHNlQnRuYCwgdGltZXpvbmVzQ29sbGFwc2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGJpbmRDbGlja0RheW5hbWUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja0RheW5hbWUnLCBmdW5jdGlvbiAoZXZlbnQ6IElFdmVudERhdGVPYmplY3QpIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBjbGlja0RheW5hbWVgLCBldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRDbGlja01vcmUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja01vcmUnLCBmdW5jdGlvbiAoZXZlbnQ6IElFdmVudE1vcmVPYmplY3QpIHtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGBjbGlja01vcmVgLCBldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRDbGlja1NjaGVkdWxlKCkge1xyXG4gICAgLy8gb25seSB3b3JrcyBpZiB1c2VEZXRhaWxQb3B1cDogZmFsc2UsXHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdjbGlja1NjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiBJRXZlbnRTY2hlZHVsZU9iamVjdCkge1xyXG4gICAgICAvLyBjb25zb2xlLndhcm4oYGNsaWNrU2NoZWR1bGVgLCBldmVudCk7XHJcbiAgICAgIGxldCBzY2hlZHVsZTogSVNjaGVkdWxlID0geyAuLi5ldmVudC5zY2hlZHVsZSB9O1xyXG4gICAgICBzY2hlZHVsZS5zdGFydCA9IChuZXcgTG9jYWxEYXRlKHNjaGVkdWxlLnN0YXJ0KSkudG9EYXRlKCk7XHJcbiAgICAgIHNjaGVkdWxlLmVuZCA9IChuZXcgTG9jYWxEYXRlKHNjaGVkdWxlLmVuZCkpLnRvRGF0ZSgpO1xyXG4gICAgICB0aGF0Lm9wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yKHNjaGVkdWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmluZEJlZm9yZUNyZWF0ZVNjaGVkdWxlKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgdGhpcy5jYWxlbmRhci5vbignYmVmb3JlQ3JlYXRlU2NoZWR1bGUnLCBmdW5jdGlvbiAoZXZlbnQ6IFRFdmVudEJlZm9yZUNyZWF0ZVNjaGVkdWxlKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVDcmVhdGVTY2hlZHVsZWAsIGV2ZW50KTtcclxuICAgICAgbGV0IHN0YXJ0OiBEYXRlID0gKG5ldyBMb2NhbERhdGUoZXZlbnQuc3RhcnQpKS50b0RhdGUoKTtcclxuICAgICAgc3RhcnQuc2V0SG91cnMoOSk7XHJcbiAgICAgIGxldCBlbmQ6IERhdGUgPSAobmV3IExvY2FsRGF0ZShldmVudC5lbmQpKS50b0RhdGUoKTtcclxuICAgICAgZW5kLnNldEhvdXJzKDEwKTtcclxuICAgICAgdGhhdC5vcGVuUG9wdXBTY2hlZHVsZUVkaXRvcih7XHJcbiAgICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICAgIHN0YXJ0OiBzdGFydCxcclxuICAgICAgICBlbmQ6IGVuZCxcclxuICAgICAgICBpZDogbnVsbCxcclxuICAgICAgfSBhcyBJU2NoZWR1bGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBiaW5kQmVmb3JlVXBkYXRlU2NoZWR1bGUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICB0aGlzLmNhbGVuZGFyLm9uKCdiZWZvcmVVcGRhdGVTY2hlZHVsZScsIGZ1bmN0aW9uIChldmVudDogSUV2ZW50T2JqZWN0KSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVVcGRhdGVTY2hlZHVsZWAsIGV2ZW50KTtcclxuICAgICAgdGhhdC51cGRhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJpbmRCZWZvcmVEZWxldGVTY2hlZHVsZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuY2FsZW5kYXIub24oJ2JlZm9yZURlbGV0ZVNjaGVkdWxlJywgZnVuY3Rpb24gKGV2ZW50OiBJRXZlbnRTY2hlZHVsZU9iamVjdCkge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhgYmVmb3JlRGVsZXRlU2NoZWR1bGVgLCBldmVudC5zY2hlZHVsZSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBiZWZvcmVEZWxldGVTY2hlZHVsZWAsIGV2ZW50LnNjaGVkdWxlKTtcclxuICAgICAgdGhhdC5kZWxldGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudCh7IGlkOiBldmVudC5zY2hlZHVsZS5pZCwgY2FsZW5kYXJJZDogZXZlbnQuc2NoZWR1bGUuY2FsZW5kYXJJZCB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmV4dENvbG9yKCkge1xyXG4gICAgbGV0IGNvbG9yID0gdGhpcy5jb2xvcnNbdGhpcy5jb2xvckluZGV4KytdLmhleCgpO1xyXG4gICAgaWYgKHRoaXMuY29sb3JJbmRleCA+PSB0aGlzLmNvbG9ycy5sZW5ndGgpIHRoaXMuY29sb3JJbmRleCA9IDA7XHJcbiAgICByZXR1cm4gY29sb3I7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChhcmdzOiBJU2NoZWR1bGUpIHtcclxuICAgIGxldCBzY2hlZHVsZSA9IHRoaXMuY3JlYXRlU2NoZWR1bGUoYXJncyk7XHJcbiAgICB0aGlzLnVzZXJDcmVhdGVkU2NoZWR1bGUuZW1pdChzY2hlZHVsZSk7XHJcbiAgICByZXR1cm4gc2NoZWR1bGU7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTY2hlZHVsZXMoc2NoZWR1bGVzOiBJU2NoZWR1bGVbXSkge1xyXG4gICAgbGV0IG5ld1NjaGVkdWxlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgc2NoZWR1bGUgb2Ygc2NoZWR1bGVzKSB7XHJcbiAgICAgIG5ld1NjaGVkdWxlcy5wdXNoKHRoaXMuY3JlYXRlU2NoZWR1bGUoc2NoZWR1bGUpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdTY2hlZHVsZXM7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTY2hlZHVsZShhcmdzOiBJU2NoZWR1bGUpOiBJU2NoZWR1bGUge1xyXG4gICAgLy8gaWYgKGZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBhIGNvbG9yXHJcbiAgICBsZXQgY29sb3IgPSB0aGlzLm5leHRDb2xvcigpO1xyXG4gICAgLy8gY29uc29sZS5sb2coY29sb3IpO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBhbiBpZFxyXG4gICAgbGV0IGlkID0gKGFyZ3MuaWQgPT0gbnVsbCkgPyAnJyA6IGFyZ3MuaWQudG9TdHJpbmcoKTtcclxuICAgIGlmIChpZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgaWQgPSB1dWlkdjQoKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc3RhcnQ6IERhdGUgPSBMb2NhbERhdGUuY29udmVydFRvSnNEYXRlKGFyZ3Muc3RhcnQpO1xyXG4gICAgbGV0IGVuZDogRGF0ZSA9IExvY2FsRGF0ZS5jb252ZXJ0VG9Kc0RhdGUoYXJncy5lbmQpO1xyXG5cclxuICAgIGxldCBzY2hlZHVsZTogSVNjaGVkdWxlID0ge1xyXG4gICAgICBpZCxcclxuICAgICAgY2FsZW5kYXJJZDogKGFyZ3MuY2FsZW5kYXJJZCA9PSBudWxsKSA/IHRoaXMuY2FsZW5kYXJJZCA6IGFyZ3MuY2FsZW5kYXJJZCxcclxuICAgICAgdGl0bGU6IGFyZ3MudGl0bGUsXHJcbiAgICAgIHN0YXJ0OiBzdGFydCxcclxuICAgICAgZW5kOiBlbmQsXHJcbiAgICAgIGNhdGVnb3J5OiBhcmdzLmNhdGVnb3J5LFxyXG4gICAgICBpc0FsbERheTogYXJncy5pc0FsbERheSxcclxuICAgICAgZHVlRGF0ZUNsYXNzOiAnJyxcclxuICAgICAgYmdDb2xvcjogY29sb3IsXHJcbiAgICB9IGFzIElTY2hlZHVsZVxyXG4gICAgLy8gY29uc29sZS5sb2coYGV2ZW50LWNhbGVuZGFyLmNvbXBvbmVudC50czogY3JlYXRlRXZlbnQ6YCwgc2NoZWR1bGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhci5jcmVhdGVTY2hlZHVsZXMoW3NjaGVkdWxlXSk7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRTY2hlZHVsZShzY2hlZHVsZS5pZCwgc2NoZWR1bGUuY2FsZW5kYXJJZCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChhcmdzOiBJU2NoZWR1bGUpIHtcclxuICAgIGxldCBzY2hlZHVsZSA9IHRoaXMudXBkYXRlU2NoZWR1bGUoYXJncyk7XHJcbiAgICB0aGlzLnVzZXJVcGRhdGVkU2NoZWR1bGUuZW1pdChzY2hlZHVsZSk7XHJcbiAgICByZXR1cm4gc2NoZWR1bGU7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTY2hlZHVsZShzY2hlZHVsZTogSVNjaGVkdWxlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhgZXZlbnQtY2FsZW5kYXIuY29tcG9uZW50LnRzOiB1cGRhdGVTY2hlZHVsZTpgLCBzY2hlZHVsZSk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChzY2hlZHVsZS5jYWxlbmRhcklkID09IG51bGwpID8gdGhpcy5jYWxlbmRhcklkIDogc2NoZWR1bGUuY2FsZW5kYXJJZDtcclxuICAgIHRoaXMuY2FsZW5kYXIudXBkYXRlU2NoZWR1bGUoc2NoZWR1bGUuaWQsIGNhbGVuZGFySWQsIHNjaGVkdWxlLCBmYWxzZSk7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRTY2hlZHVsZShzY2hlZHVsZS5pZCwgY2FsZW5kYXJJZCk7XHJcbiAgfVxyXG5cclxuICBnZXRTY2hlZHVsZShhcmdzOiB7IGlkOiBzdHJpbmcsIGNhbGVuZGFySWQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhgZXZlbnQtY2FsZW5kYXIuY29tcG9uZW50LnRzOiBnZXRTY2hlZHVsZTpgLCBzY2hlZHVsZSk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChhcmdzLmNhbGVuZGFySWQgPT0gbnVsbCkgPyB0aGlzLmNhbGVuZGFySWQgOiBhcmdzLmNhbGVuZGFySWQ7XHJcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRTY2hlZHVsZShhcmdzLmlkLCBjYWxlbmRhcklkKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KGFyZ3M6IHsgaWQ6IHN0cmluZywgY2FsZW5kYXJJZDogc3RyaW5nIH0pIHtcclxuICAgIHRoaXMuZGVsZXRlU2NoZWR1bGUoYXJncyk7XHJcbiAgICBsZXQgY2FsZW5kYXJJZCA9IChhcmdzLmNhbGVuZGFySWQgPT0gbnVsbCkgPyB0aGlzLmNhbGVuZGFySWQgOiBhcmdzLmNhbGVuZGFySWQ7XHJcbiAgICB0aGlzLnVzZXJEZWxldGVkU2NoZWR1bGUuZW1pdCh7IGlkOiBhcmdzLmlkLCBjYWxlbmRhcklkIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2NoZWR1bGUoYXJnczogeyBpZDogc3RyaW5nLCBjYWxlbmRhcklkOiBzdHJpbmcgfSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coYGV2ZW50LWNhbGVuZGFyLmNvbXBvbmVudC50czogZGVsZXRlU2NoZWR1bGU6YCwgc2NoZWR1bGUpO1xyXG4gICAgbGV0IGNhbGVuZGFySWQgPSAoYXJncy5jYWxlbmRhcklkID09IG51bGwpID8gdGhpcy5jYWxlbmRhcklkIDogYXJncy5jYWxlbmRhcklkO1xyXG4gICAgdGhpcy5jYWxlbmRhci5kZWxldGVTY2hlZHVsZShhcmdzLmlkLCBjYWxlbmRhcklkLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVBbGxTY2hlZHVsZXMoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuUG9wdXBTY2hlZHVsZUVkaXRvcihzY2hlZHVsZTogSVNjaGVkdWxlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6IGNhbGV2ZW50OicsIHNjaGVkdWxlKTtcclxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgIGlmICh0aGlzLmFwcGxpZWRPcHRpb25zLnRoZW1lQ2xhc3MpIHtcclxuICAgICAgZGlhbG9nQ29uZmlnLnBhbmVsQ2xhc3MgPSB0aGlzLmFwcGxpZWRPcHRpb25zLnRoZW1lQ2xhc3M7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLndhcm4oYG9wdGlvbnM6IGAsIHRoaXMuYXBwbGllZE9wdGlvbnMpO1xyXG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7IHNjaGVkdWxlLCBkYXJrTW9kZTogdGhpcy5hcHBsaWVkT3B0aW9ucy5kYXJrTW9kZSwgdGhlbWVDbGFzczogdGhpcy5hcHBsaWVkT3B0aW9ucy50aGVtZUNsYXNzIH0gYXMgQ2FsZW5kYXJFZGl0b3JPcHRpb25zO1xyXG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdFR1aUNhbGVuZGFyRWRpdG9yRGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xyXG4gICAgLy8gY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRUdWlDYWxlbmRhclNjaGVkdWxlRWRpdG9yRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAvLyAgIGRhdGE6IHNjaGVkdWxlLFxyXG4gICAgLy8gfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogeyBzY2hlZHVsZTogSVNjaGVkdWxlLCBwZXJmb3JtRGVsZXRlOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ29wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yOiBUaGUgZGlhbG9nIHdhcyBjbG9zZWQnLCByZXN1bHQpO1xyXG4gICAgICB0aGlzLmNhbGVuZGFyLnJlbmRlcih0cnVlKTsgIC8vIDwtLSBzbyB0aGF0IHNlbGVjdGlvbiBpcyBjbGVhcmVkXHJcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnNjaGVkdWxlKSB7XHJcbiAgICAgICAgbGV0IHNjaGVkdWxlID0gcmVzdWx0LnNjaGVkdWxlO1xyXG4gICAgICAgIGlmIChyZXN1bHQucGVyZm9ybURlbGV0ZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAvLyBkZWxldGVcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGBvcGVuUG9wdXBTY2hlZHVsZUVkaXRvcjphZnRlckNMb3NlZDogZGVsZXRlU2NoZWR1bGVgKTtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlU2NoZWR1bGVBbmROb3RpZnlQYXJlbnQoeyBpZDogc2NoZWR1bGUuaWQsIGNhbGVuZGFySWQ6IHNjaGVkdWxlLmNhbGVuZGFySWQgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzY2hlZHVsZS5pZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgb3BlblBvcHVwU2NoZWR1bGVFZGl0b3I6YWZ0ZXJDTG9zZWQ6IGFkZFNjaGVkdWxlYCk7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVNjaGVkdWxlQW5kTm90aWZ5UGFyZW50KHNjaGVkdWxlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYG9wZW5Qb3B1cFNjaGVkdWxlRWRpdG9yOmFmdGVyQ0xvc2VkOiB1cGRhdGVTY2hlZHVsZWApO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVTY2hlZHVsZUFuZE5vdGlmeVBhcmVudChzY2hlZHVsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBzZXRPcHRpb25zKG9wdGlvbnM6IENhbGVuZGFyT3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICBvcHRpb25zID0gdGhpcy5nZXREZWZhdWx0T3B0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy5pb3B0aW9ucyA9IHRoaXMuc2V0SU9wdGlvbnMob3B0aW9ucy5pb3B0aW9ucyk7XHJcbiAgICB0aGlzLmFwcGxpZWRPcHRpb25zID0gey4uLm9wdGlvbnN9O1xyXG4gIH1cclxuXHJcbiAgc2V0SU9wdGlvbnMoaW9wdGlvbnNJbjogSU9wdGlvbnMpIHtcclxuICAgIGxldCBpb3B0aW9ucyA9IHRoaXMucHJlcHJvY2Vzc0lPcHRpb25zKGlvcHRpb25zSW4pO1xyXG4gICAgdGhpcy5jYWxlbmRhci5zZXRPcHRpb25zKGlvcHRpb25zKTtcclxuICAgIHRoaXMuY2FsZW5kYXIuc2V0VGhlbWUoaW9wdGlvbnMudGhlbWUpO1xyXG4gICAgdGhpcy5jYWxlbmRhci5yZW5kZXIodHJ1ZSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyLnRvZ2dsZVNjaGVkdWxlVmlldyh0cnVlKTtcclxuICAgIHJldHVybiBpb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByZXByb2Nlc3NJT3B0aW9ucyhpb3B0aW9uczogSU9wdGlvbnMpOiBJT3B0aW9ucyB7XHJcbiAgICBsZXQgZGVmczogSU9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRJT3B0aW9ucygpO1xyXG4gICAgaWYgKGlvcHRpb25zID09IG51bGwpIHtcclxuICAgICAgaW9wdGlvbnMgPSBkZWZzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaW9wdGlvbnMgPSB7IC4uLmRlZnMsIC4uLmlvcHRpb25zIH07XHJcbiAgICB9XHJcbiAgICBpb3B0aW9ucy51c2VDcmVhdGlvblBvcHVwID0gZmFsc2U7XHJcbiAgICBpb3B0aW9ucy51c2VEZXRhaWxQb3B1cCA9IGZhbHNlO1xyXG4gICAgaWYgKCFpb3B0aW9ucy50aGVtZSkge1xyXG4gICAgICBpb3B0aW9ucy50aGVtZSA9IHRoaXMuZ2V0RGVmYXVsdFRoZW1lKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW9wdGlvbnM7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGVmYXVsdE9wdGlvbnMoKTogQ2FsZW5kYXJPcHRpb25zIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRhcmtNb2RlOiBmYWxzZSxcclxuICAgICAgdGhlbWVDbGFzczogbnVsbCxcclxuICAgICAgaW9wdGlvbnM6IHRoaXMuZ2V0RGVmYXVsdElPcHRpb25zKCksXHJcbiAgICB9IGFzIENhbGVuZGFyT3B0aW9ucztcclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRJT3B0aW9ucygpOiBJT3B0aW9ucyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkZWZhdWx0VmlldzogJ21vbnRoJyxcclxuICAgICAgdGFza1ZpZXc6IHRydWUsXHJcbiAgICAgIHVzZUNyZWF0aW9uUG9wdXA6IGZhbHNlLFxyXG4gICAgICB1c2VEZXRhaWxQb3B1cDogZmFsc2UsXHJcbiAgICAgIHRoZW1lOiB0aGlzLmdldERlZmF1bHRUaGVtZSgpLFxyXG4gICAgICB0ZW1wbGF0ZToge1xyXG4gICAgICAgIG1vbnRoRGF5bmFtZTogZnVuY3Rpb24gKGRheW5hbWUpIHtcclxuICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJjYWxlbmRhci13ZWVrLWRheW5hbWUtbmFtZVwiPicgKyBkYXluYW1lLmxhYmVsICsgJzwvc3Bhbj4nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgd2Vlazoge1xyXG4gICAgICAgIC8vIHN0YXJ0RGF5T2ZXZWVrOiB1bmRlZmluZWQsXHJcbiAgICAgICAgLy8gZGF5bmFtZXM6IHVuZGVmaW5lZCxcclxuICAgICAgICBuYXJyb3dXZWVrZW5kOiBmYWxzZSxcclxuICAgICAgICAvLyB3b3Jrd2VlazogdHJ1ZSxcclxuICAgICAgICBzaG93VGltZXpvbmVDb2xsYXBzZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICB0aW1lem9uZXNDb2xsYXBzZWQ6IHRydWUsXHJcbiAgICAgICAgaG91clN0YXJ0OiA3LFxyXG4gICAgICAgIGhvdXJFbmQ6IDIwLFxyXG4gICAgICB9IGFzIElXZWVrT3B0aW9ucyxcclxuICAgIH0gYXMgSU9wdGlvbnM7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3IobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHRoZW1lLSR7bmFtZX1gKTtcclxuICAgIGlmIChlbCkge1xyXG4gICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKTtcclxuICAgICAgLy8gY29uc29sZS53YXJuKGB0aGVtZS0ke25hbWV9IGNvbG9yOmAsIHN0eWxlLmNvbG9yKTtcclxuICAgICAgcmV0dXJuIHN0eWxlLmNvbG9yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdFRoZW1lKCk6IElUaGVtZSB7XHJcbiAgICBmdW5jdGlvbiBhZGp1c3RIZXhPcGFjaXR5KGNvbG9yLCBvcGFjaXR5KSB7XHJcbiAgICAgIGNvbnN0IHIgPSBwYXJzZUludChjb2xvci5zbGljZSgxLCAzKSwgMTYpO1xyXG4gICAgICBjb25zdCBnID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgICAgY29uc3QgYiA9IHBhcnNlSW50KGNvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcblxyXG4gICAgICByZXR1cm4gJ3JnYmEoJyArIHIgKyAnLCAnICsgZyArICcsICcgKyBiICsgJywgJyArIG9wYWNpdHkgKyAnKSc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGVmYXVsdCBrZXlzIGFuZCBzdHlsZXNcclxuICAgIC8vIFRPRE86IGFwcGx5IE1hdGVyaWFsIERlc2lnbiBUaGVtZSBcclxuICAgIGxldCBiYWNrZ3JvdW5kID0gdGhpcy5nZXRDb2xvcihcImJhY2tncm91bmRcIik7XHJcbiAgICBsZXQgYm9yZGVyID0gdGhpcy5nZXRDb2xvcihcImRpdmlkZXJcIik7XHJcbiAgICBsZXQgYm9yZGVyTGlnaHQgPSB0aGlzLmdldENvbG9yKFwiZGl2aWRlci1saWdodFwiKTtcclxuICAgIGxldCBzaGFkb3cgPSB0aGlzLmdldENvbG9yKFwiZGl2aWRlclwiKTtcclxuICAgIGxldCBoaWdobGlnaHQgPSB0aGlzLmdldENvbG9yKFwiaGlnaGxpZ2h0XCIpO1xyXG4gICAgbGV0IHByaW1hcnkgPSB0aGlzLmdldENvbG9yKFwicHJpbWFyeVwiKTtcclxuICAgIGxldCB3YXJuID0gdGhpcy5nZXRDb2xvcihcIndhcm5cIik7XHJcbiAgICBsZXQgdGV4dCA9IHRoaXMuZ2V0Q29sb3IoXCJmb3JlZ3JvdW5kXCIpO1xyXG4gICAgbGV0IHByaW1hcnlTaGFkZWQgPSB0aGlzLmdldENvbG9yKFwicHJpbWFyeS1zaGFkZWRcIik7XHJcblxyXG4gICAgLy8gdHVpLWZ1bGwtY2FsZW5kYXItd2Vla2RheS1zY2hlZHVsZS10aXRsZVxyXG4gICAgLy9jYWxlbmRhci13ZWVrLWRheW5hbWUtbmFtZVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ2NvbW1vbi5ib3JkZXInOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICdjb21tb24uYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuICAgICAgJ2NvbW1vbi5ob2xpZGF5LmNvbG9yJzogd2FybixcclxuICAgICAgJ2NvbW1vbi5zYXR1cmRheS5jb2xvcic6IHRleHQsXHJcbiAgICAgICdjb21tb24uZGF5bmFtZS5jb2xvcic6IHRleHQsXHJcbiAgICAgICdjb21tb24udG9kYXkuY29sb3InOiAnIzBmMCcsXHJcblxyXG4gICAgICAvLyBjcmVhdGlvbiBndWlkZSBzdHlsZVxyXG4gICAgICAnY29tbW9uLmNyZWF0aW9uR3VpZGUuYmFja2dyb3VuZENvbG9yJzogcHJpbWFyeVNoYWRlZCxcclxuICAgICAgJ2NvbW1vbi5jcmVhdGlvbkd1aWRlLmJvcmRlcic6IGAxcHggc29saWQgJHtoaWdobGlnaHR9YCxcclxuXHJcbiAgICAgIC8vIG1vbnRoIGhlYWRlciAnZGF5bmFtZSdcclxuICAgICAgJ21vbnRoLmRheW5hbWUuaGVpZ2h0JzogJzMxcHgnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5ib3JkZXJMZWZ0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5wYWRkaW5nTGVmdCc6ICcxMHB4JyxcclxuICAgICAgJ21vbnRoLmRheW5hbWUucGFkZGluZ1JpZ2h0JzogJzEwcHgnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5iYWNrZ3JvdW5kQ29sb3InOiAnaW5oZXJpdCcsXHJcbiAgICAgICdtb250aC5kYXluYW1lLmZvbnRTaXplJzogJzEycHgnLFxyXG4gICAgICAnbW9udGguZGF5bmFtZS5mb250V2VpZ2h0JzogJ25vcm1hbCcsXHJcbiAgICAgICdtb250aC5kYXluYW1lLnRleHRBbGlnbic6ICdsZWZ0JyxcclxuXHJcbiAgICAgIC8vIG1vbnRoIGRheSBncmlkIGNlbGwgJ2RheSdcclxuICAgICAgJ21vbnRoLmhvbGlkYXlFeGNlcHRUaGlzTW9udGguY29sb3InOiAncmdiYSgyNTUsIDY0LCA2NCwgMC40KScsXHJcbiAgICAgICdtb250aC5kYXlFeGNlcHRUaGlzTW9udGguY29sb3InOiAncmdiYSg1MSwgNTEsIDUxLCAwLjQpJyxcclxuICAgICAgJ21vbnRoLndlZWtlbmQuYmFja2dyb3VuZENvbG9yJzogJ2luaGVyaXQnLFxyXG4gICAgICAnbW9udGguZGF5LmZvbnRTaXplJzogJzE0cHgnLFxyXG4gICAgICAnbW9udGguc2NoZWR1bGUuY29sb3InOiBoaWdobGlnaHQsXHJcblxyXG4gICAgICAvLyBtb250aCBzY2hlZHVsZSBzdHlsZVxyXG4gICAgICAnbW9udGguc2NoZWR1bGUuYm9yZGVyUmFkaXVzJzogJzJweCcsXHJcbiAgICAgICdtb250aC5zY2hlZHVsZS5oZWlnaHQnOiAnMjRweCcsXHJcbiAgICAgICdtb250aC5zY2hlZHVsZS5tYXJnaW5Ub3AnOiAnMnB4JyxcclxuICAgICAgJ21vbnRoLnNjaGVkdWxlLm1hcmdpbkxlZnQnOiAnOHB4JyxcclxuICAgICAgJ21vbnRoLnNjaGVkdWxlLm1hcmdpblJpZ2h0JzogJzhweCcsXHJcblxyXG4gICAgICAvLyBtb250aCBtb3JlIHZpZXdcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LmJvcmRlcic6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LmJveFNoYWRvdyc6IGAwIDJweCA2cHggMCAke3NoYWRvd31gLFxyXG4gICAgICAnbW9udGgubW9yZVZpZXcuYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3LnBhZGRpbmdCb3R0b20nOiAnMTdweCcsXHJcbiAgICAgICdtb250aC5tb3JlVmlld1RpdGxlLmhlaWdodCc6ICc0NHB4JyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3VGl0bGUubWFyZ2luQm90dG9tJzogJzEycHgnLFxyXG4gICAgICAnbW9udGgubW9yZVZpZXdUaXRsZS5iYWNrZ3JvdW5kQ29sb3InOiAnaW5oZXJpdCcsXHJcbiAgICAgICdtb250aC5tb3JlVmlld1RpdGxlLmJvcmRlckJvdHRvbSc6ICdub25lJyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3VGl0bGUucGFkZGluZyc6ICcxMnB4IDE3cHggMCAxN3B4JyxcclxuICAgICAgJ21vbnRoLm1vcmVWaWV3TGlzdC5wYWRkaW5nJzogJzAgMTdweCcsXHJcblxyXG4gICAgICAvLyB3ZWVrIGhlYWRlciAnZGF5bmFtZSdcclxuICAgICAgJ3dlZWsuZGF5bmFtZS5oZWlnaHQnOiAnNDJweCcsXHJcbiAgICAgICd3ZWVrLmRheW5hbWUuYm9yZGVyVG9wJzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLmJvcmRlckJvdHRvbSc6IGAxcHggc29saWQgJHtib3JkZXJ9YCxcclxuICAgICAgJ3dlZWsuZGF5bmFtZS5ib3JkZXJMZWZ0JzogJ2luaGVyaXQnLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLnBhZGRpbmdMZWZ0JzogJzAnLFxyXG4gICAgICAnd2Vlay5kYXluYW1lLmJhY2tncm91bmRDb2xvcic6ICdpbmhlcml0JyxcclxuICAgICAgJ3dlZWsuZGF5bmFtZS50ZXh0QWxpZ24nOiAnbGVmdCcsXHJcbiAgICAgICd3ZWVrLnRvZGF5LmNvbG9yJzogdGV4dCxcclxuICAgICAgJ3dlZWsucGFzdERheS5jb2xvcic6IGJvcmRlckxpZ2h0LFxyXG5cclxuICAgICAgLy8gd2VlayB2ZXJ0aWNhbCBwYW5lbCAndnBhbmVsJ1xyXG4gICAgICAnd2Vlay52cGFuZWxTcGxpdHRlci5ib3JkZXInOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICd3ZWVrLnZwYW5lbFNwbGl0dGVyLmhlaWdodCc6ICczcHgnLFxyXG5cclxuICAgICAgLy8gd2VlayBkYXlncmlkICdkYXlncmlkJ1xyXG4gICAgICAnd2Vlay5kYXlncmlkLmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay5kYXlncmlkLmJhY2tncm91bmRDb2xvcic6IGJhY2tncm91bmQsXHJcblxyXG4gICAgICAnd2Vlay5kYXlncmlkTGVmdC53aWR0aCc6ICc3MnB4JyxcclxuICAgICAgJ3dlZWsuZGF5Z3JpZExlZnQuYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuICAgICAgJ3dlZWsuZGF5Z3JpZExlZnQucGFkZGluZ1JpZ2h0JzogJzhweCcsXHJcbiAgICAgICd3ZWVrLmRheWdyaWRMZWZ0LmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG5cclxuXHJcbiAgICAgICd3ZWVrLnRvZGF5LmJhY2tncm91bmRDb2xvcic6IHByaW1hcnlTaGFkZWQsXHJcbiAgICAgICd3ZWVrLndlZWtlbmQuYmFja2dyb3VuZENvbG9yJzogJ2luaGVyaXQnLFxyXG5cclxuICAgICAgLy8gd2VlayB0aW1lZ3JpZCAndGltZWdyaWQnXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkTGVmdC53aWR0aCc6ICc3MnB4JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRMZWZ0LmJhY2tncm91bmRDb2xvcic6ICdpbmhlcml0JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRMZWZ0LmJvcmRlclJpZ2h0JzogYDFweCBzb2xpZCAke2JvcmRlcn1gLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZExlZnQuZm9udFNpemUnOiAnMTFweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkTGVmdFRpbWV6b25lTGFiZWwuaGVpZ2h0JzogJzQwcHgnLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZExlZnRBZGRpdGlvbmFsVGltZXpvbmUuYmFja2dyb3VuZENvbG9yJzogYmFja2dyb3VuZCxcclxuXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkT25lSG91ci5oZWlnaHQnOiAnNTJweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkSGFsZkhvdXIuaGVpZ2h0JzogJzI2cHgnLFxyXG4gICAgICAnd2Vlay50aW1lZ3JpZEhhbGZIb3VyLmJvcmRlckJvdHRvbSc6ICdub25lJyxcclxuICAgICAgJ3dlZWsudGltZWdyaWRIb3Jpem9udGFsTGluZS5ib3JkZXJCb3R0b20nOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcblxyXG4gICAgICAnd2Vlay50aW1lZ3JpZC5wYWRkaW5nUmlnaHQnOiAnOHB4JyxcclxuICAgICAgJ3dlZWsudGltZWdyaWQuYm9yZGVyUmlnaHQnOiBgMXB4IHNvbGlkICR7Ym9yZGVyfWAsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkU2NoZWR1bGUuYm9yZGVyUmFkaXVzJzogJzJweCcsXHJcbiAgICAgICd3ZWVrLnRpbWVncmlkU2NoZWR1bGUucGFkZGluZ0xlZnQnOiAnMnB4JyxcclxuXHJcbiAgICAgIC8vICM1MTVjZTYgaXMgYSBzbGF0ZSBibHVlXHJcblxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZS5jb2xvcic6IGhpZ2hsaWdodCxcclxuICAgICAgJ3dlZWsuY3VycmVudFRpbWUuZm9udFNpemUnOiAnMTFweCcsXHJcbiAgICAgICd3ZWVrLmN1cnJlbnRUaW1lLmZvbnRXZWlnaHQnOiAnbm9ybWFsJyxcclxuXHJcbiAgICAgICd3ZWVrLnBhc3RUaW1lLmNvbG9yJzogYm9yZGVyTGlnaHQsXHJcbiAgICAgICd3ZWVrLnBhc3RUaW1lLmZvbnRXZWlnaHQnOiAnbm9ybWFsJyxcclxuXHJcbiAgICAgICd3ZWVrLmZ1dHVyZVRpbWUuY29sb3InOiBib3JkZXIsXHJcbiAgICAgICd3ZWVrLmZ1dHVyZVRpbWUuZm9udFdlaWdodCc6ICdub3JtYWwnLFxyXG5cclxuICAgICAgJ3dlZWsuY3VycmVudFRpbWVMaW5lUGFzdC5ib3JkZXInOiBgMXB4IGRhc2hlZCAke2hpZ2hsaWdodH1gLFxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZUxpbmVCdWxsZXQuYmFja2dyb3VuZENvbG9yJzogaGlnaGxpZ2h0LFxyXG4gICAgICAnd2Vlay5jdXJyZW50VGltZUxpbmVUb2RheS5ib3JkZXInOiBgMXB4IHNvbGlkICR7aGlnaGxpZ2h0fWAsXHJcbiAgICAgICd3ZWVrLmN1cnJlbnRUaW1lTGluZUZ1dHVyZS5ib3JkZXInOiAnbm9uZScsXHJcblxyXG4gICAgICAvLyB3ZWVrIGNyZWF0aW9uIGd1aWRlIHN0eWxlXHJcbiAgICAgICd3ZWVrLmNyZWF0aW9uR3VpZGUuY29sb3InOiBoaWdobGlnaHQsXHJcbiAgICAgICd3ZWVrLmNyZWF0aW9uR3VpZGUuZm9udFNpemUnOiAnMTFweCcsXHJcbiAgICAgICd3ZWVrLmNyZWF0aW9uR3VpZGUuZm9udFdlaWdodCc6ICdib2xkJyxcclxuXHJcbiAgICAgIC8vIHdlZWsgZGF5Z3JpZCBzY2hlZHVsZSBzdHlsZVxyXG4gICAgICAnd2Vlay5kYXlHcmlkU2NoZWR1bGUuYm9yZGVyUmFkaXVzJzogJzJweCcsXHJcbiAgICAgICd3ZWVrLmRheUdyaWRTY2hlZHVsZS5oZWlnaHQnOiAnMjRweCcsXHJcbiAgICAgICd3ZWVrLmRheUdyaWRTY2hlZHVsZS5tYXJnaW5Ub3AnOiAnMnB4JyxcclxuICAgICAgJ3dlZWsuZGF5R3JpZFNjaGVkdWxlLm1hcmdpbkxlZnQnOiAnOHB4JyxcclxuICAgICAgJ3dlZWsuZGF5R3JpZFNjaGVkdWxlLm1hcmdpblJpZ2h0JzogJzhweCdcclxuICAgIH0gYXMgSVRoZW1lO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50LWNvbnRhaW5lclwiPlxyXG4gICAgPCEtLSBUaGVzZSBkaXZzIGFyZSBoZXJlIHNvIHRoYXQgd2UgY2FuIHJlYWQgdGhlIHRoZW1lIGNvbG9ycyBmb3IgdGhlIHR1aSB0aGVtZSAtLT5cclxuICAgIDwhLS0gVGhlIG91dGVyIGRpdiBnaXZlcyB0aGUgZGVmYXVsdCBjb2xvciBmb3Igd2hlbiB1c2VyIGRvZXMgbm90IHByb3ZpZGUgYW4gQW5ndWxhciB0aGVtZSAtLT5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogYmx1ZTtcIj4gPGRpdiBpZD1cInRoZW1lLXByaW1hcnlcIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogYmx1ZTtcIj4gPGRpdiBpZD1cInRoZW1lLWhpZ2hsaWdodFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiBibHVlO1wiPiA8ZGl2IGlkPVwidGhlbWUtYWNjZW50XCI+PC9kaXY+PC9kaXY+XHJcbiAgICA8ZGl2IHN0eWxlPVwiY29sb3I6IHJlZDtcIj4gPGRpdiBpZD1cInRoZW1lLXdhcm5cIj48L2Rpdj48L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJjb2xvcjogcmdiYSgwLCAwLCAyNTUsIDAuMik7XCI+IDxkaXYgaWQ9XCJ0aGVtZS1wcmltYXJ5LXNoYWRlZFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiAjM2UzZTNlO1wiPiA8ZGl2IGlkPVwidGhlbWUtZm9yZWdyb3VuZFwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiAjZTBlMGUwO1wiPiA8ZGl2IGlkPVwidGhlbWUtZGl2aWRlclwiPjwvZGl2PjwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cImNvbG9yOiB3aGl0ZTtcIj4gPGRpdiBpZD1cInRoZW1lLWJhY2tncm91bmRcIj48L2Rpdj48L2Rpdj5cclxuICBcclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXJcIj5cclxuICAgICAgPCEtLSBjYWxlbmRhciB0aXRsZWJhciAtLT5cclxuICAgICAgPG1hdC10b29sYmFyIGNsYXNzPVwibWVudS1iYXJcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICA8IS0tIDxkaXYgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7ZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XCI+IC0tPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICB3aWR0aDogMTAwJTsgIFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtZGl2XCI+XHJcbiAgICAgICAgICAgIDwhLS0gTEVGVCAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJMb25nUHJldigpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaWNvbkxvbmdQcmV2XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIiBcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBmb250LXNpemU6IDJyZW0gIWltcG9ydGFudDtcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DYWxlbmRhclByZXYoKVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25QcmV2XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IGZvbnQtc2l6ZTogMS43cmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJUb2RheSgpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaWNvblRvZGF5XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIiBcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBmb250LXNpemU6IDJyZW0gIWltcG9ydGFudDtcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DYWxlbmRhck5leHQoKVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25OZXh0XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJMb25nTmV4dCgpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaWNvbkxvbmdOZXh0XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlci1kaXZcIj5cclxuICAgICAgICAgICAgPCEtLSBDRU5URVIgLS0+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXZlbnQtY2FsZW5kYXItdGl0bGVcIj57eyBnZXREYXRlKCkgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1kaXZcIj5cclxuICBcclxuICAgICAgICAgICAgPCEtLSBSSUdIVCAtLT5cclxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwidmlldy1idXR0b25cIiB2YWx1ZT1cIm1vbnRoXCIgaWQ9XCJAK2lkL3RvZ2dsZUJ1dHRvblwiIGxheW91dF93aWR0aD1cIndyYXBfY29udGVudFwiXHJcbiAgICAgICAgICAgICAgbGF5b3V0X2hlaWdodD1cIndyYXBfY29udGVudFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBtYXQtYnV0dG9uIHZhbHVlPVwibW9udGhcIiBjbGFzcz1cInZpZXctYnV0dG9uXCIgKGNsaWNrKT1cIm9uTW9udGhWaWV3KClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25CeU1vbnRoXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIG1hdC1idXR0b24gdmFsdWU9XCJ3ZWVrXCIgY2xhc3M9XCJ2aWV3LWJ1dHRvblwiIChjbGljayk9XCJvbldlZWtWaWV3KClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25CeVdlZWtcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgbWF0LWJ1dHRvbiB2YWx1ZT1cImRheVwiIGNsYXNzPVwidmlldy1idXR0b25cIiAoY2xpY2spPVwib25EYXlWaWV3KClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImljb25CeURheVwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXRvb2xiYXI+XHJcbiAgICAgIDxuZ3gtbWF0LXR1aS1jYWxlbmRhci13cmFwcGVyPjwvbmd4LW1hdC10dWktY2FsZW5kYXItd3JhcHBlcj5cclxuICAgIDwvZGl2PlxyXG4gIFxyXG4gIDwvc2VjdGlvbj5cclxuIl19