@firestitch/filter 18.0.39 → 18.0.40

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.
@@ -11,4 +11,4 @@ import { DateTimeRangeItem } from '../models/items/date-time-range-item';
11
11
  import { RangeItem } from '../models/items/range-item';
12
12
  import { TextItem } from '../models/items/text-item';
13
13
  import { WeekItem } from '../models/items/week-item';
14
- export declare function createFilterItem(item: IFilterConfigItem, config: any, filter: FilterComponent): TextItem | DateRangeItem | DateTimeRangeItem | RangeItem | WeekItem | AutocompleteChipsItem | AutocompleteItem | CheckboxItem | ChipsItem | DateItem | DateTimeItem | import("../models/items/select/multiple-select-item").MultipleSelectItem | import("../models/items/select/simple-select-item").SimpleSelectItem;
14
+ export declare function createFilterItem(item: IFilterConfigItem, config: any, filter: FilterComponent): ChipsItem | TextItem | WeekItem | RangeItem | AutocompleteItem | AutocompleteChipsItem | DateItem | DateTimeItem | DateRangeItem | DateTimeRangeItem | CheckboxItem | import("../models/items/select/simple-select-item").SimpleSelectItem | import("../models/items/select/multiple-select-item").MultipleSelectItem;
@@ -140,7 +140,10 @@ export class FilterComponent {
140
140
  return this._filtersBtnVisible$.asObservable();
141
141
  }
142
142
  get keywordVisible$() {
143
- return this._keywordVisible$.asObservable();
143
+ return this._keywordVisible$.asObservable()
144
+ .pipe(map((visible) => {
145
+ return visible && this.hasKeyword;
146
+ }));
144
147
  }
145
148
  get actionsVisible$() {
146
149
  return this._actions.visible$;
@@ -638,4 +641,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
638
641
  type: HostBinding,
639
642
  args: ['class.has-keyword']
640
643
  }] } });
641
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FB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NkJDM0YzQywwekdBOEdjOzs0RkQzQ0QsZUFBZTtrQkFoQjNCLFNBQVM7K0JBQ0UsV0FBVyxhQUdWO3dCQUNULHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4QiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3FCQUNsQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBMkQ1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjt5UkF0RDNCLFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsUUFBUTtnQkFNSixTQUFTO3NCQURuQixLQUFLO3VCQUFDLFFBQVE7Z0JBS0MsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNXLE1BQU07c0JBQXRCLE1BQU07Z0JBQ1UsTUFBTTtzQkFBdEIsTUFBTTtnQkFDVSxLQUFLO3NCQUFyQixNQUFNO2dCQUdBLFNBQVM7c0JBRGYsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBSS9CLGVBQWU7c0JBRHJCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUl6QyxRQUFRO3NCQURkLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJcEMsY0FBYztzQkFEcEIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBSTFCLGFBQWE7c0JBRG5CLFdBQVc7dUJBQUMsc0JBQXNCO2dCQUk1QixhQUFhO3NCQURuQixXQUFXO3VCQUFDLGlCQUFpQjtnQkFJbkIsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcblxuaW1wb3J0IHsgRHJhd2VyUmVmIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZHJhd2VyJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIGludGVydmFsLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBY3Rpb25zQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYWN0aW9ucy1jb250cm9sbGVyJztcbmltcG9ydCB7IG9iamVjdHNBcmVFcXVhbHMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NvbXBhcmUnO1xuaW1wb3J0IHsgSUZpbHRlclNhdmVkRmlsdGVyLCBJU29ydGluZ0NoYW5nZUV2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGc0ZpbHRlckFjdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBGaWx0ZXJDb25maWcsIEZpbHRlclNvcnQsIElGaWx0ZXJDb25maWdJdGVtLCBTb3J0SXRlbSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IElVcGRhdGVGaWx0ZXJJdGVtQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy91cGRhdGUtZmlsdGVyLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEZzRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbHRlci1jb25maWcnO1xuaW1wb3J0IHsgQmFzZUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaXRlbXMvYmFzZS1pdGVtJztcbmltcG9ydCB7IFRleHRJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2l0ZW1zL3RleHQtaXRlbSc7XG5pbXBvcnQgeyBFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHRlcm5hbC1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9xdWVyeS1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXJ5UGVyc2lzdGFuY2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBlcnNpc3RhbmNlLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTYXZlZEZpbHRlcnNDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3NhdmVkLWZpbHRlcnMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVyT3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWx0ZXItb3ZlcmxheS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvY3VzQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb2N1cy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnNGaWx0ZXJJdGVtc1N0b3JlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaXRlbXMtc3RvcmUuc2VydmljZSc7XG5cbmltcG9ydCB7IEZpbHRlclN0YXR1c0JhckRpcmVjdGl2ZSB9IGZyb20gJy4vLi4vLi4vZGlyZWN0aXZlcy9zdGF0dXMtYmFyL3N0YXR1cy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZTX0ZJTFRFUl9DT05GSUcgfSBmcm9tICcuLy4uLy4uL2luamVjdG9ycy9maWx0ZXItY29uZmlnJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWx0ZXInLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIEZzRmlsdGVyT3ZlcmxheVNlcnZpY2UsXG4gICAgRXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyLFxuICAgIFF1ZXJ5UGVyc2lzdGFuY2VDb250cm9sbGVyLFxuICAgIFF1ZXJ5UGFyYW1zQ29udHJvbGxlcixcbiAgICBGb2N1c0NvbnRyb2xsZXJTZXJ2aWNlLFxuICAgIEZzRmlsdGVySXRlbXNTdG9yZSxcbiAgICBTYXZlZEZpbHRlcnNDb250cm9sbGVyLFxuICAgIEFjdGlvbnNDb250cm9sbGVyLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgnY29uZmlnJylcbiAgcHVibGljIHNldCBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgdGhpcy5faW5pdEZpbHRlcldpdGhDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIEBJbnB1dCgnZmlsdGVyJylcbiAgcHVibGljIHNldCBzZXRGaWx0ZXIoY29uZmlnKSB7XG4gICAgdGhpcy5faW5pdEZpbHRlcldpdGhDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93U29ydEJ5OiBhbnkgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0ZpbHRlcklucHV0ID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAQ29udGVudENoaWxkKEZpbHRlclN0YXR1c0JhckRpcmVjdGl2ZSlcbiAgcHVibGljIHN0YXR1c0JhcjogRmlsdGVyU3RhdHVzQmFyRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoJ2tleXdvcmRNYXRJbnB1dCcsIHsgcmVhZDogTWF0SW5wdXQgfSlcbiAgcHVibGljIGtleXdvcmRNYXRJbnB1dDogTWF0SW5wdXQ7XG5cbiAgQFZpZXdDaGlsZCgncmVsb2FkRWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIHJlbG9hZEVsOiBFbGVtZW50UmVmO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmlsdGVycy1vcGVuJylcbiAgcHVibGljIHNob3dGaWx0ZXJNZW51ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53aW5kb3ctZGVza3RvcCcpXG4gIHB1YmxpYyB3aW5kb3dEZXNrdG9wID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mcy1maWx0ZXInKVxuICBwdWJsaWMgZnNGaWx0ZXJDbGFzcyA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMta2V5d29yZCcpXG4gIHB1YmxpYyBnZXQgaGFzS2V5d29yZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySXRlbXMuaGFzS2V5d29yZDtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hQbGFjZWhvbGRlciA9ICdTZWFyY2gnO1xuICBwdWJsaWMga2V5d29yZCA9ICcnO1xuICBwdWJsaWMgYXV0b1JlbG9hZCA9IHRydWU7XG5cbiAgcHJvdGVjdGVkIF9jb25maWc6IEZzRmlsdGVyQ29uZmlnID0gbnVsbDtcblxuICBwcml2YXRlIF9zb3J0OiBGaWx0ZXJTb3J0O1xuICBwcml2YXRlIF9maWx0ZXJzQnRuVmlzaWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwcml2YXRlIF9rZXl3b3JkVmlzaWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwcml2YXRlIF9oYXNGaWx0ZXJDaGlwcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfa2V5d29yZCQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2RpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2RyYXdlclJlZiA9IGluamVjdChEcmF3ZXJSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7ICBcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZTX0ZJTFRFUl9DT05GSUcpIHByaXZhdGUgX2RlZmF1bHRDb25maWc6IEZzRmlsdGVyQ29uZmlnLFxuICAgIHByaXZhdGUgX2ZpbHRlck92ZXJsYXk6IEZzRmlsdGVyT3ZlcmxheVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX2V4dGVybmFsUGFyYW1zOiBFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfcGVyc2lzdGFuY2VQYXJhbXM6IFF1ZXJ5UGVyc2lzdGFuY2VDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX2ZpbHRlckl0ZW1zOiBGc0ZpbHRlckl0ZW1zU3RvcmUsXG4gICAgcHJpdmF0ZSBfYWN0aW9uczogQWN0aW9uc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJzQ29udHJvbGxlcjogU2F2ZWRGaWx0ZXJzQ29udHJvbGxlcixcbiAgKSB7XG4gICAgdGhpcy5fZmlsdGVySXRlbXMuZmlsdGVyID0gdGhpcztcbiAgICB0aGlzLl9saXN0ZW5XaGVuRmlsdGVyUmVhZHkoKTtcbiAgICB0aGlzLl91cGRhdGVXaW5kb3dXaWR0aCgpO1xuXG4gICAgY29uc3QgaWNvblJlZ2lzdHJ5ID0gaW5qZWN0KE1hdEljb25SZWdpc3RyeSk7XG4gICAgY29uc3Qgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gICAgY29uc3QgZmlsdGVyQWx0ID0gJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIiB3aWR0aD1cIjI0cHhcIj48cGF0aCBkPVwiTTQ0MC0xNjBxLTE3IDAtMjguNS0xMS41VDQwMC0yMDB2LTI0MEwxNjEtNzQ1cS0xNC0xNy00LTM2dDMxLTE5aDU4NHEyMSAwIDMxIDE5dC00IDM2TDU2MC00NDB2MjQwcTAgMTctMTEuNSAyOC41VDUyMC0xNjBoLTgwWm00MC0yNzYgMjQwLTMwNEgyNDBsMjQwIDMwNFptMCAwWlwiLz48L3N2Zz4nO1xuXG4gICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCdmaWx0ZXJPdXRsaW5lJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGZpbHRlckFsdCkpO1xuXG4gICAgdGhpcy5fZmlsdGVyT3ZlcmxheS5hdHRhY2gkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dGaWx0ZXJNZW51ID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZmlsdGVyT3ZlcmxheS5kZXRhY2gkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dGaWx0ZXJNZW51ID0gZmFsc2U7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2xpc3RlbldpbmRvd1Jlc2l6ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb25maWcoKTogRnNGaWx0ZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlclBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySXRlbXMudmFsdWVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluRGlhbG9nKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2RpYWxvZ1JlZiB8fCAhIXRoaXMuX2RyYXdlclJlZjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyUGFyYW1zUXVlcnkoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy52YWx1ZXNBc1F1ZXJ5KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy5pdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZUl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy52aXNpYmxlSXRlbXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGtleXdvcmRJdGVtKCk6IFRleHRJdGVtIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckl0ZW1zLmtleXdvcmRJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtc1JlYWR5JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySXRlbXMucmVhZHkkO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNGaWx0ZXJDaGlwcyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0ZpbHRlckNoaXBzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzVmlzaWJsZUl0ZW1PclNvcnRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDAgfHwgISF0aGlzLl9maWx0ZXJJdGVtcy5zb3J0QnlJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzQnRuVmlzaWJsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnNCdG5WaXNpYmxlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQga2V5d29yZFZpc2libGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9rZXl3b3JkVmlzaWJsZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGlvbnNWaXNpYmxlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy52aXNpYmxlJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aW9ucyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuYWN0aW9ucyQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVBY3Rpb25zJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5tZW51QWN0aW9ucyQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGFjdGl2ZVNhdmVkRmlsdGVyKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpIHtcbiAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5zZXRBY3RpdmVTYXZlZEZpbHRlcihzYXZlZEZpbHRlcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZVNhdmVkRmlsdGVyKCk6IElGaWx0ZXJTYXZlZEZpbHRlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVyc0NvbnRyb2xsZXIuYWN0aXZlRmlsdGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnMoKTogSUZpbHRlclNhdmVkRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNhdmVkRmlsdGVycztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAvLyBBdm9pZCBuZ0NoYW5nZXMgZXJyb3JcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvZm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5faW5pdEF1dG9SZWxvYWQoKTtcbiAgICB0aGlzLl9saXN0ZW5JbnB1dENoYW5nZXMoKTtcbiAgICB0aGlzLl9saXN0ZW5JbnRlcm5hbEl0ZW1zQ2hhbmdlKCk7XG4gICAgdGhpcy5faW5pdE92ZXJsYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95RmlsdGVyRHJhd2VyKCk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKSB7XG4gICAgdGhpcy5rZXl3b3JkTWF0SW5wdXQ/LmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU29ydChzb3J0OiBJU29ydGluZ0NoYW5nZUV2ZW50KSB7XG4gICAgdGhpcy5fZmlsdGVySXRlbXMudXBkYXRlU29ydChzb3J0KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBEbyB1cGRhdGUgdmFsdWUgb2Ygc29tZSBmaWVsZFxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVzIC0gdmFsdWVzIGZvciB1cGRhdGVcbiAgICpcbiAgICogVG8gdXBkYXRlIHRleHQgdmFsdWUganVzdCBwYXNzIG5ldyB0ZXh0IHZhbHVlXG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVTZWxlY3RWYWx1ZSh2YWwpIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IGtleXdvcmQ6IHZhbCB9KTtcbiAgICogfVxuICAgKlxuICAgKiBUbyB1cGRhdGUgc2VsZWN0IG9yIG9ic2VydmFibGUgc2VsZWN0IHlvdSBjb3VsZCBwYXNzIHN1aXRhYmxlIHZhbHVlXG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVTZWxlY3RWYWx1ZSh2YWw6IG51bWJlcikge1xuICAgKiAgIHRoaXMuZmlsdGVyRWwudXBkYXRlVmFsdWVzKHsgc2ltcGxlX3NlbGVjdDogdmFsIH0sIHsgb2JzZXJ2YWJsZV9zZWxlY3Q6IHZhbCB9KTtcbiAgICogfVxuICAgKlxuICAgKiBUbyB1cGRhdGUgY2hlY2tib3ggdmFsdWUganVzdCBwYXNzIHRydWUvZmFsc2UgYXMgdmFsdWVcbiAgICpcbiAgICogcHVibGljIHVwZGF0ZUNoZWNrb3godmFsOiBib29sZWFuKSB7XG4gICAqICAgdGhpcy5maWx0ZXJFbC51cGRhdGVWYWx1ZXMoeyBjaGVja2JveDogdmFsIH0pO1xuICAgKiB9XG4gICAqXG4gICAqIFRvIHVwZGF0ZSByYW5nZSB2YWx1ZSBqdXN0IHBhc3Mgb2JqZWN0IHdpdGggbWluJm1heCBvYmplY3Qgb3IganVzdCB3aXRoIG9uZSBvZiB0YXJnZXRzXG4gICAqXG4gICAqIEV4LjogeyBtaW46IDEwLCBtYXggMTUgfSwgeyBtaW46IDUgfSwgeyBtYXggNSB9XG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVSYW5nZSh2YWwpIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IHJhbmdlOiB2YWwgfSk7XG4gICAqIH1cbiAgICpcbiAgICogVG8gdXBkYXRlIGF1dG9jb21wbGV0ZSBqdXN0IHBhc3Mgb2JqZWN0IHdpdGggbmFtZS92YWx1ZSBmaWVsZHNcbiAgICpcbiAgICogRXguOiB7IG5hbWU6ICdKb2huIERvZScsIHZhbHVlOiAxIH1cbiAgICpcbiAgICogcHVibGljIHVwZGF0ZUF1dG9jb21wbGV0ZSh2YWwpIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IGF1dG9jb21wbGV0ZV91c2VyX2lkOiB2YWwgfSk7XG4gICAqIH1cbiAgICpcbiAgICogVG8gdXBkYXRlIGF1dG9jb21wbGV0ZWNoaXBzIGp1c3QgcGFzczpcbiAgICpcbiAgICogMSkgb2JqZWN0IHdpdGggbmFtZS92YWx1ZSBmaWVsZHMgLSB3aWxsIGJlIGFwcGVuZGVkIHRvIGV4aXN0aW5nIHNldCBvZiB2YWx1ZXNcbiAgICpcbiAgICogeyBuYW1lOiAnSm9obiBEb2UnLCB2YWx1ZTogMSB9XG4gICAqXG4gICAqIDIpIGFycmF5IG9mIG9iamVjdHMgLSB3aWxsIGJlIGFwcGVuZGVkIHRvIGV4aXN0aW5nIHNldCBvZiB2YWx1ZXNcbiAgICpcbiAgICogW3sgbmFtZTogJ0pvaG4gRG9lJywgdmFsdWU6IDEgfSwgeyBuYW1lOiAnRGFyeWEgRmlsaXBvdmEnLCB2YWx1ZTogMiB9XVxuICAgKlxuICAgKiAzKSBudWxsIC0gY2xlYXIgZXhpc3Rpbmcgc2V0IG9mIHZhbHVlc1xuICAgKlxuICAgKiBwdWJsaWMgdXBkYXRlQXV0b2NvbXBsZXRlKHZhbCkge1xuICAgKiAgIHRoaXMuZmlsdGVyRWwudXBkYXRlVmFsdWVzKHsgYXV0b2NvbXBsZXRlY2hpcHNfdXNlcl9pZDogdmFsIH0pO1xuICAgKiB9XG4gICAqXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVmFsdWVzKHZhbHVlcykge1xuICAgIE9iamVjdC5rZXlzKHZhbHVlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJJdGVtID0gdGhpcy5pdGVtc1xuICAgICAgICAuZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBrZXkpO1xuXG4gICAgICBpZiAoIWZpbHRlckl0ZW0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmaWx0ZXJJdGVtLm1vZGVsID0gdmFsdWVzW2tleV07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaGlkZSgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNob3coKSB7XG4gICAgdGhpcy5jaGFuZ2VWaXNpYmlsaXR5KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVZpc2liaWxpdHlDbGljayh2YWx1ZSwgZXZlbnQgPSBudWxsKSB7XG5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGl0ZW1WYWx1ZXMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbm9uRW1wdHlJdGVtVmFsdWVzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0l0ZW1WYWx1ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNcbiAgICAgIC5zb21lKChpdGVtKSA9PiBpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1WYWx1ZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtc1xuICAgICAgLmZpbmQoKF9pdGVtKSA9PiBfaXRlbS5uYW1lID09PSBuYW1lKTtcblxuICAgIHJldHVybiBpdGVtPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93SXRlbShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtKG5hbWUpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGl0ZW0uaGlkZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVJdGVtc1Zpc2libGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRlSXRlbShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtKG5hbWUpO1xuXG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXRlbS5oaWRlID0gdHJ1ZTtcblxuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLnVwZGF0ZUl0ZW1zVmlzaWJsaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJJdGVtKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldEl0ZW0obmFtZSk7XG5cbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpdGVtLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSXRlbUNvbmZpZyhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBJVXBkYXRlRmlsdGVySXRlbUNvbmZpZyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0SXRlbShuYW1lKTtcblxuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGl0ZW0ubGFiZWwgPSBwYXJhbXMubGFiZWwgPz8gaXRlbS5sYWJlbDtcbiAgICBpdGVtLmNoaXBMYWJlbCA9IHBhcmFtcy5jaGlwTGFiZWwgPz8gaXRlbS5jaGlwTGFiZWw7XG5cbiAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVJdGVtc1Zpc2libGl0eSgpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1WYWx1ZUNoYW5nZSQobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXMuZmluZCgoaSkgPT4gaS5uYW1lID09PSBuYW1lKTtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLm1vZGVsO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuXG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVmlzaWJpbGl0eShzdGF0ZTogYm9vbGVhbikge1xuICAgIGlmIChzdGF0ZSA9PT0gdGhpcy5zaG93RmlsdGVyTWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcblxuICAgICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3lGaWx0ZXJEcmF3ZXIoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGFzVmlzaWJsZUl0ZW1PclNvcnRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9saXN0ZW5Fc2NCdXR0b24oKTtcblxuICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcblxuICAgIHRoaXMuX2ZpbHRlck92ZXJsYXkub3BlbigpO1xuICB9XG5cbiAgcHVibGljIGluaXQoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2ZpbHRlckl0ZW1zLnZhbHVlc0FzUXVlcnkoKTtcbiAgICB0aGlzLl9zb3J0ID0gdGhpcy5fZmlsdGVySXRlbXMuZ2V0U29ydCgpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmluaXQpIHtcbiAgICAgIHRoaXMuY29uZmlnLmluaXQoZGF0YSwgdGhpcy5fc29ydCwgdGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ2hpcHNWaXNpYmlsaXR5KCk7XG5cbiAgICB0aGlzLml0ZW1zXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLmluaXQoaXRlbSwgdGhpcyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihldmVudCA9IG51bGwpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLmZpbHRlcnNDbGVhcigpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmNsZWFyKSB7XG4gICAgICB0aGlzLmNvbmZpZy5jbGVhcigpO1xuICAgIH1cblxuICAgIHRoaXMua2V5d29yZCA9ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGZpbHRlciB3aW5kb3cgYW5kIGRvIGNoYW5nZSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHNlYXJjaChldmVudCkge1xuICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eUNsaWNrKGZhbHNlLCBldmVudCk7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKGV2ZW50ID0gbnVsbCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9maWx0ZXJJdGVtcy52YWx1ZXNBc1F1ZXJ5KCk7XG4gICAgY29uc3QgZWwgPSB0aGlzLnJlbG9hZEVsPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYoZWwpIHtcbiAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnYWxsIDAuNzVzIDAuMHMnO1xuICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3JvdGF0ZSgzNjBkZWcpJztcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSBudWxsO1xuICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBudWxsO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLnJlbG9hZCkge1xuICAgICAgdGhpcy5jb25maWcucmVsb2FkKGRhdGEsIHRoaXMuX2ZpbHRlckl0ZW1zLmdldFNvcnQoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEl0ZW0obmFtZSk6IEJhc2VJdGVtPGFueT4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAuZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaFF1ZXJ5UGFyYW1zKCk6IHZvaWQge1xuICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLmZldGNoUXVlcnlQYXJhbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIGNoYW5nZSBjYWxsYmFjayBhbmQgYXBwbHkgbmV3IGZpbHRlciB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBjaGFuZ2UoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2ZpbHRlckl0ZW1zLnZhbHVlc0FzUXVlcnkoKTtcbiAgICBjb25zdCBzb3J0ID0gdGhpcy5fZmlsdGVySXRlbXMuZ2V0U29ydCgpO1xuXG4gICAgY29uc3Qgc29ydGluZ0NoYW5nZWQgPSAoKCFzb3J0IHx8ICF0aGlzLl9zb3J0KSAmJiBzb3J0ICE9PSB0aGlzLl9zb3J0KVxuICAgICAgfHwgKHNvcnQgJiYgdGhpcy5fc29ydCAmJiAhb2JqZWN0c0FyZUVxdWFscyh0aGlzLl9zb3J0LCBzb3J0KSk7XG5cbiAgICBpZiAoc29ydGluZ0NoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3NvcnQgPSBzb3J0O1xuXG4gICAgICBpZiAodGhpcy5jb25maWcuc29ydENoYW5nZSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5zb3J0Q2hhbmdlKGRhdGEsIHNvcnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5jaGFuZ2UpIHtcbiAgICAgIHRoaXMuY29uZmlnLmNoYW5nZShkYXRhLCBzb3J0KTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVDaGlwc1Zpc2liaWxpdHkoKTtcblxuICAgIC8vIHZpc2liaWxpdHkgZm9yIGFjdGlvbnMgY2FuIGRlcGVuZCBvbiBmaWx0ZXJzIHN0YXRlXG4gICAgdGhpcy5fYWN0aW9ucy51cGRhdGVBY3Rpb25zVmlzaWJpbGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBmaWx0ZXIgYWN0aW9ucyBjb25maWdcbiAgICpcbiAgICogQHBhcmFtIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVBY3Rpb25zKGFjdGlvbnM6IEZzRmlsdGVyQWN0aW9uW10pOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpb25zLmluaXRBY3Rpb25zKGFjdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgXCJGaWx0ZXJzXCIgYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgc2hvd0ZpbHRlcnNCdG4oKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyc0J0blZpc2libGUkLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZSBcIkZpbHRlcnNcIiBidXR0b25cbiAgICovXG4gIHB1YmxpYyBoaWRlRmlsdGVyc0J0bigpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJzQnRuVmlzaWJsZSQubmV4dChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBcIktleXdvcmRcIiBmaWVsZCBpZiBpdCBwcmVzZW50XG4gICAqL1xuICBwdWJsaWMgc2hvd0tleXdvcmRGaWVsZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9rZXl3b3JkVmlzaWJsZSQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIFwiS2V5d29yZFwiIGZpZWxkIGlmIGl0IHByZXNlbnRcbiAgICovXG4gIHB1YmxpYyBoaWRlS2V5d29yZEZpZWxkKCk6IHZvaWQge1xuICAgIHRoaXMuX2tleXdvcmRWaXNpYmxlJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHbyB0aHJvdWdoIGFjdGlvbnMgYW5kIGNoZWNrIHNob3coKSBjYWxsYmFjayBhbmQgdXBkYXRlIHZpc2libGUgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZUFjdGlvbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGlvbnMudXBkYXRlQWN0aW9uc1Zpc2liaWxpdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHbyB0aHJvdWdoIGFjdGlvbnMgYW5kIGNoZWNrIGRpc2FibGVkKCkgY2FsbGJhY2sgYW5kIHVwZGF0ZSBkaXNhYmxlZCBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZURpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aW9ucy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbXMoaXRlbXM6IElGaWx0ZXJDb25maWdJdGVtW10pIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy5kZXN0cm95SXRlbXMoKTtcblxuICAgIHRoaXMuY29uZmlnLml0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5fZmlsdGVySXRlbXMuc2V0Q29uZmlnKHRoaXMuX2NvbmZpZyk7XG4gICAgdGhpcy5fZXh0ZXJuYWxQYXJhbXMuaW5pdEl0ZW1zKCk7XG5cbiAgICB0aGlzLl9zeW5jU2VhcmNoSW5wdXRXaXRoS2V5d29yZCgpO1xuICB9XG5cbiAgcHVibGljIGtleXdvcmRDaGFuZ2Uoa2V5d29yZCkge1xuICAgIHRoaXMuX2tleXdvcmQkLm5leHQoa2V5d29yZCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU29ydGluZ3MoaXRlbXM6IFNvcnRJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVTb3J0aW5nSXRlbXNWYWx1ZXMoaXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEZpbHRlcldpdGhDb25maWcoY29uZmlnOiBGaWx0ZXJDb25maWcpIHtcbiAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuX2ZpbHRlckl0ZW1zLmRlc3Ryb3lJdGVtcygpO1xuICAgIH1cblxuICAgIGNvbmZpZyA9IHtcbiAgICAgIC4uLih0aGlzLl9kZWZhdWx0Q29uZmlnIHx8IHt9KSxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICB9O1xuXG4gICAgdGhpcy5fY29uZmlnID0gbmV3IEZzRmlsdGVyQ29uZmlnKGNvbmZpZyk7XG4gICAgdGhpcy5fYWN0aW9ucy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcbiAgICB0aGlzLl9wZXJzaXN0YW5jZVBhcmFtcy5zZXRDb25maWcodGhpcy5fY29uZmlnLCB0aGlzLmluRGlhbG9nKTtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcbiAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcblxuICAgIHRoaXMuX3N5bmNTZWFyY2hJbnB1dFdpdGhLZXl3b3JkKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcucmVsb2FkV2hlbkNvbmZpZ0NoYW5nZWQpIHtcbiAgICAgIHRoaXMuY2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveUZpbHRlckRyYXdlcigpIHtcbiAgICB0aGlzLl9maWx0ZXJPdmVybGF5LmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVXaW5kb3dXaWR0aCgpIHtcbiAgICB0aGlzLndpbmRvd0Rlc2t0b3AgPSB3aW5kb3cuaW5uZXJXaWR0aCA+IDEyMDA7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Fc2NCdXR0b24oKSB7XG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBmcm9tRXZlbnQod2luZG93LCAna2V5dXAnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBldmVudC5jb2RlID09PSAnRXNjYXBlJyksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xvc2VkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlV2luZG93V2lkdGgoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0QXV0b1JlbG9hZCgpIHtcbiAgICBpZih0aGlzLmNvbmZpZy5hdXRvUmVsb2FkKSB7XG4gICAgICBpbnRlcnZhbCh0aGlzLmNvbmZpZy5hdXRvUmVsb2FkLnNlY29uZHMgKiAxMDAwKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5hdXRvUmVsb2FkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVsb2FkKG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5JbnB1dENoYW5nZXMoKSB7XG4gICAgdGhpcy5fa2V5d29yZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleXdvcmRJdGVtID0gdGhpcy5fZmlsdGVySXRlbXMua2V5d29yZEl0ZW07XG4gICAgICAgIGtleXdvcmRJdGVtLm1vZGVsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2hhbmdlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNTZWFyY2hJbnB1dFdpdGhLZXl3b3JkKCk6IHZvaWQge1xuICAgIGNvbnN0IGtleXdvcmRJdGVtID0gdGhpcy5fZmlsdGVySXRlbXMua2V5d29yZEl0ZW07XG4gICAgaWYgKGtleXdvcmRJdGVtKSB7XG4gICAgICB0aGlzLmtleXdvcmQgPSBrZXl3b3JkSXRlbS5tb2RlbDtcbiAgICAgIHRoaXMuc2VhcmNoUGxhY2Vob2xkZXIgPSBrZXl3b3JkSXRlbS5sYWJlbCBhcyBzdHJpbmcgfHwgJ1NlYXJjaCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuSW50ZXJuYWxJdGVtc0NoYW5nZSgpIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtc1xuICAgICAgLml0ZW1zQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2UoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdE92ZXJsYXkoKSB7XG4gICAgdGhpcy5fZmlsdGVyT3ZlcmxheS5zZXRDbGVhckZuKHRoaXMuY2xlYXIuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5fZmlsdGVyT3ZlcmxheS5zZXREb25lRm4odGhpcy5oaWRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLy8gV2UgbWF5IG5lZWQgc29tZSB0aW1lIHRvIHJlY2lldmUgZXh0ZXJuYWwgcGFyYW1zIGFuZCBhZnRlciB0aGF0IHJlYWR5IGNhbiBiZSBlbWl0dGVkXG4gIHByaXZhdGUgX2xpc3RlbldoZW5GaWx0ZXJSZWFkeSgpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgW1xuICAgICAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5wZW5kaW5nJCxcbiAgICAgICAgdGhpcy5pdGVtc1JlYWR5JCxcbiAgICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChbcGVuZGluZ1BhcmFtcywgaXRlbXNSZWFkeV0pID0+ICFwZW5kaW5nUGFyYW1zICYmIGl0ZW1zUmVhZHkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICB0aGlzLl9zeW5jU2VhcmNoSW5wdXRXaXRoS2V5d29yZCgpO1xuXG4gICAgICAgIHRoaXMucmVhZHkuZW1pdCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVDaGlwc1Zpc2liaWxpdHkoKSB7XG4gICAgY29uc3QgaGFzRmlsdGVyQ2hpcHMgPSB0aGlzLl9maWx0ZXJJdGVtcy5pdGVtc1xuICAgICAgLnNvbWUoKGl0ZW06IEJhc2VJdGVtPGFueT4pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaXNDaGlwVmlzaWJsZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5faGFzRmlsdGVyQ2hpcHMkLm5leHQoaGFzRmlsdGVyQ2hpcHMpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWlubmVyLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzS2V5d29yZDsgZWxzZSBmaWx0ZXJLZXl3b3JkXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyU3RhdHVzQmFyQ2hpcHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVG9vbGJhclwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyQWN0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0tleXdvcmRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyU3RhdHVzQmFyQ2hpcHNcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyU3RhdHVzQmFyQ2hpcHM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0dXNCYXJcIj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLXN0YXR1cy1jb250YWluZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtc3RhdHVzJzogISFmaWx0ZXJTdGF0dXMudGV4dENvbnRlbnQgfVwiPlxuICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXN0YXR1c1wiXG4gICAgICAgICAgI2ZpbHRlclN0YXR1cz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c0Jhci50ZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmNoaXBzICYmIGhhc0ZpbHRlckNoaXBzJCB8IGFzeW5jXCI+XG4gICAgPGZzLWZpbHRlci1jaGlwc1xuICAgICAgY2xhc3M9XCJmaWx0ZXItY2hpcHNcIlxuICAgICAgW2ZpbHRlcnNdPVwiaXRlbXNcIj5cbiAgICA8L2ZzLWZpbHRlci1jaGlwcz5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNmaWx0ZXJLZXl3b3JkPlxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWtleXdvcmRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGtleXdvcmRWaXNpYmxlJCB8IGFzeW5jKSAmJiAha2V5d29yZEl0ZW0/LmhpZGUgXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1mb3JtLWZpZWxkIGZvcm0tZmllbGQtcGFkbGVzc1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2hhcy1rZXl3b3JkJzogISFrZXl3b3JkXG4gICAgICAgICAgfVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgbWF0UHJlZml4XG4gICAgICAgICAgICBjbGFzcz1cImljb25cIj5cbiAgICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4PlxuICAgICAgICAgICAgc2VhcmNoXG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAja2V5d29yZE1hdElucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImtleXdvcmRcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImtleXdvcmRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgbmFtZT1cImZpbHRlci1pbnB1dFwiXG4gICAgICAgICAgW2ZzQ2xlYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCI+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2ZpbHRlckFjdGlvbnM+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItYWN0aW9uc1wiPlxuICAgIDxmcy1maWx0ZXItYWN0aW9uc1xuICAgICAgKm5nSWY9XCJhY3Rpb25zVmlzaWJsZSQgfCBhc3luY1wiXG4gICAgICBbYWN0aW9uc109XCJhY3Rpb25zJCB8IGFzeW5jXCJcbiAgICAgIFtrZWJhYkFjdGlvbnNdPVwibWVudUFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICA8L2ZzLWZpbHRlci1hY3Rpb25zPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2ZpbHRlclRvb2xiYXI+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItdG9vbGJhclwiPlxuICAgIEBpZiAoZmlsdGVyc0J0blZpc2libGUkIHwgYXN5bmMpIHtcbiAgICAgIEBpZiAoaGFzVmlzaWJsZUl0ZW1PclNvcnRpbmcpIHtcbiAgICAgICAgPGFcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tZmlsdGVyc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmlzaWJpbGl0eUNsaWNrKCFzaG93RmlsdGVyTWVudSwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiY29uZmlnLmJ1dHRvbi5jb2xvclwiPlxuICAgICAgICAgIEBpZiAoY29uZmlnLmJ1dHRvbi5pY29uKSB7XG4gICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImZpbHRlck91dGxpbmVcIj48L21hdC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICB7eyBjb25maWcuYnV0dG9uLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIH1cbiAgICB9XG4gICAgQGlmIChjb25maWcucmVsb2FkKSB7XG4gICAgICA8YVxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJyZWxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24tcmVsb2FkXCI+XG4gICAgICAgIDxtYXQtaWNvbiAjcmVsb2FkRWw+XG4gICAgICAgICAgcmVmcmVzaFxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9hPlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZy5hdXRvUmVsb2FkKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXJlbG9hZFwiPlxuICAgICAgICBAaWYgKGNvbmZpZy5hdXRvUmVsb2FkKSB7XG4gICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgbmFtZT1cImF1dG9SZWxvYWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF1dG8tcmVsb2FkXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdXRvUmVsb2FkXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgQXV0byByZWZyZXNoXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
644
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FB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XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBpbmplY3QsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cbmltcG9ydCB7IERyYXdlclJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL2RyYXdlcic7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQWN0aW9uc0NvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2FjdGlvbnMtY29udHJvbGxlcic7XG5pbXBvcnQgeyBvYmplY3RzQXJlRXF1YWxzIH0gZnJvbSAnLi4vLi4vaGVscGVycy9jb21wYXJlJztcbmltcG9ydCB7IElGaWx0ZXJTYXZlZEZpbHRlciwgSVNvcnRpbmdDaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRnNGaWx0ZXJBY3Rpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgRmlsdGVyQ29uZmlnLCBGaWx0ZXJTb3J0LCBJRmlsdGVyQ29uZmlnSXRlbSwgU29ydEl0ZW0sXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJVXBkYXRlRmlsdGVySXRlbUNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdXBkYXRlLWZpbHRlci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGc0ZpbHRlckNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXItY29uZmlnJztcbmltcG9ydCB7IEJhc2VJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2l0ZW1zL2Jhc2UtaXRlbSc7XG5pbXBvcnQgeyBUZXh0SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9pdGVtcy90ZXh0LWl0ZW0nO1xuaW1wb3J0IHsgRXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVyeVBhcmFtc0NvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHRlcm5hbC1wYXJhbXMvcXVlcnktcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVyeVBlcnNpc3RhbmNlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9xdWVyeS1wZXJzaXN0YW5jZS1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9zYXZlZC1maWx0ZXJzLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGc0ZpbHRlck92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsdGVyLW92ZXJsYXkuc2VydmljZSc7XG5pbXBvcnQgeyBGb2N1c0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9jdXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2l0ZW1zLXN0b3JlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBGaWx0ZXJTdGF0dXNCYXJEaXJlY3RpdmUgfSBmcm9tICcuLy4uLy4uL2RpcmVjdGl2ZXMvc3RhdHVzLWJhci9zdGF0dXMtYmFyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGU19GSUxURVJfQ09ORklHIH0gZnJvbSAnLi8uLi8uLi9pbmplY3RvcnMvZmlsdGVyLWNvbmZpZyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZmlsdGVyJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBGc0ZpbHRlck92ZXJsYXlTZXJ2aWNlLFxuICAgIEV4dGVybmFsUGFyYW1zQ29udHJvbGxlcixcbiAgICBRdWVyeVBlcnNpc3RhbmNlQ29udHJvbGxlcixcbiAgICBRdWVyeVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgRm9jdXNDb250cm9sbGVyU2VydmljZSxcbiAgICBGc0ZpbHRlckl0ZW1zU3RvcmUsXG4gICAgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlcixcbiAgICBBY3Rpb25zQ29udHJvbGxlcixcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoJ2NvbmZpZycpXG4gIHB1YmxpYyBzZXQgc2V0Q29uZmlnKGNvbmZpZykge1xuICAgIHRoaXMuX2luaXRGaWx0ZXJXaXRoQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBASW5wdXQoJ2ZpbHRlcicpXG4gIHB1YmxpYyBzZXQgc2V0RmlsdGVyKGNvbmZpZykge1xuICAgIHRoaXMuX2luaXRGaWx0ZXJXaXRoQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBASW5wdXQoKSBwdWJsaWMgc2hvd1NvcnRCeTogYW55ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dGaWx0ZXJJbnB1dCA9IHRydWU7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChGaWx0ZXJTdGF0dXNCYXJEaXJlY3RpdmUpXG4gIHB1YmxpYyBzdGF0dXNCYXI6IEZpbHRlclN0YXR1c0JhckRpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdrZXl3b3JkTWF0SW5wdXQnLCB7IHJlYWQ6IE1hdElucHV0IH0pXG4gIHB1YmxpYyBrZXl3b3JkTWF0SW5wdXQ6IE1hdElucHV0O1xuXG4gIEBWaWV3Q2hpbGQoJ3JlbG9hZEVsJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHB1YmxpYyByZWxvYWRFbDogRWxlbWVudFJlZjtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZpbHRlcnMtb3BlbicpXG4gIHB1YmxpYyBzaG93RmlsdGVyTWVudSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2luZG93LWRlc2t0b3AnKVxuICBwdWJsaWMgd2luZG93RGVza3RvcCA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnMtZmlsdGVyJylcbiAgcHVibGljIGZzRmlsdGVyQ2xhc3MgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLWtleXdvcmQnKVxuICBwdWJsaWMgZ2V0IGhhc0tleXdvcmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckl0ZW1zLmhhc0tleXdvcmQ7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoUGxhY2Vob2xkZXIgPSAnU2VhcmNoJztcbiAgcHVibGljIGtleXdvcmQgPSAnJztcbiAgcHVibGljIGF1dG9SZWxvYWQgPSB0cnVlO1xuXG4gIHByb3RlY3RlZCBfY29uZmlnOiBGc0ZpbHRlckNvbmZpZyA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfc29ydDogRmlsdGVyU29ydDtcbiAgcHJpdmF0ZSBfZmlsdGVyc0J0blZpc2libGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHJpdmF0ZSBfa2V5d29yZFZpc2libGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHJpdmF0ZSBfaGFzRmlsdGVyQ2hpcHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2tleXdvcmQkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIF9kcmF3ZXJSZWYgPSBpbmplY3QoRHJhd2VyUmVmLCB7IG9wdGlvbmFsOiB0cnVlIH0pOyAgXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGU19GSUxURVJfQ09ORklHKSBwcml2YXRlIF9kZWZhdWx0Q29uZmlnOiBGc0ZpbHRlckNvbmZpZyxcbiAgICBwcml2YXRlIF9maWx0ZXJPdmVybGF5OiBGc0ZpbHRlck92ZXJsYXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIF9leHRlcm5hbFBhcmFtczogRXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3BlcnNpc3RhbmNlUGFyYW1zOiBRdWVyeVBlcnNpc3RhbmNlQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9maWx0ZXJJdGVtczogRnNGaWx0ZXJJdGVtc1N0b3JlLFxuICAgIHByaXZhdGUgX2FjdGlvbnM6IEFjdGlvbnNDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3NhdmVkRmlsdGVyc0NvbnRyb2xsZXI6IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIsXG4gICkge1xuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLmZpbHRlciA9IHRoaXM7XG4gICAgdGhpcy5fbGlzdGVuV2hlbkZpbHRlclJlYWR5KCk7XG4gICAgdGhpcy5fdXBkYXRlV2luZG93V2lkdGgoKTtcblxuICAgIGNvbnN0IGljb25SZWdpc3RyeSA9IGluamVjdChNYXRJY29uUmVnaXN0cnkpO1xuICAgIGNvbnN0IHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICAgIGNvbnN0IGZpbHRlckFsdCA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyNHB4XCI+PHBhdGggZD1cIk00NDAtMTYwcS0xNyAwLTI4LjUtMTEuNVQ0MDAtMjAwdi0yNDBMMTYxLTc0NXEtMTQtMTctNC0zNnQzMS0xOWg1ODRxMjEgMCAzMSAxOXQtNCAzNkw1NjAtNDQwdjI0MHEwIDE3LTExLjUgMjguNVQ1MjAtMTYwaC04MFptNDAtMjc2IDI0MC0zMDRIMjQwbDI0MCAzMDRabTAgMFpcIi8+PC9zdmc+JztcblxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgnZmlsdGVyT3V0bGluZScsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChmaWx0ZXJBbHQpKTtcblxuICAgIHRoaXMuX2ZpbHRlck92ZXJsYXkuYXR0YWNoJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93RmlsdGVyTWVudSA9IHRydWU7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2ZpbHRlck92ZXJsYXkuZGV0YWNoJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93RmlsdGVyTWVudSA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9saXN0ZW5XaW5kb3dSZXNpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29uZmlnKCk6IEZzRmlsdGVyQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckl0ZW1zLnZhbHVlcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbkRpYWxvZygpIHtcbiAgICByZXR1cm4gISF0aGlzLl9kaWFsb2dSZWYgfHwgISF0aGlzLl9kcmF3ZXJSZWY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlclBhcmFtc1F1ZXJ5KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySXRlbXMudmFsdWVzQXNRdWVyeSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySXRlbXMuaXRlbXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySXRlbXMudmlzaWJsZUl0ZW1zO1xuICB9XG5cbiAgcHVibGljIGdldCBrZXl3b3JkSXRlbSgpOiBUZXh0SXRlbSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJJdGVtcy5rZXl3b3JkSXRlbTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXRlbXNSZWFkeSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckl0ZW1zLnJlYWR5JDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzRmlsdGVyQ2hpcHMkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNGaWx0ZXJDaGlwcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1Zpc2libGVJdGVtT3JTb3J0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggPiAwIHx8ICEhdGhpcy5fZmlsdGVySXRlbXMuc29ydEJ5SXRlbTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyc0J0blZpc2libGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzQnRuVmlzaWJsZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGtleXdvcmRWaXNpYmxlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fa2V5d29yZFZpc2libGUkLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh2aXNpYmxlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHZpc2libGUgJiYgdGhpcy5oYXNLZXl3b3JkO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGlvbnNWaXNpYmxlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy52aXNpYmxlJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aW9ucyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuYWN0aW9ucyQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVBY3Rpb25zJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5tZW51QWN0aW9ucyQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGFjdGl2ZVNhdmVkRmlsdGVyKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpIHtcbiAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5zZXRBY3RpdmVTYXZlZEZpbHRlcihzYXZlZEZpbHRlcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZVNhdmVkRmlsdGVyKCk6IElGaWx0ZXJTYXZlZEZpbHRlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVyc0NvbnRyb2xsZXIuYWN0aXZlRmlsdGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnMoKTogSUZpbHRlclNhdmVkRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNhdmVkRmlsdGVycztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAvLyBBdm9pZCBuZ0NoYW5nZXMgZXJyb3JcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvZm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5faW5pdEF1dG9SZWxvYWQoKTtcbiAgICB0aGlzLl9saXN0ZW5JbnB1dENoYW5nZXMoKTtcbiAgICB0aGlzLl9saXN0ZW5JbnRlcm5hbEl0ZW1zQ2hhbmdlKCk7XG4gICAgdGhpcy5faW5pdE92ZXJsYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95RmlsdGVyRHJhd2VyKCk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoKSB7XG4gICAgdGhpcy5rZXl3b3JkTWF0SW5wdXQ/LmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU29ydChzb3J0OiBJU29ydGluZ0NoYW5nZUV2ZW50KSB7XG4gICAgdGhpcy5fZmlsdGVySXRlbXMudXBkYXRlU29ydChzb3J0KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBEbyB1cGRhdGUgdmFsdWUgb2Ygc29tZSBmaWVsZFxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVzIC0gdmFsdWVzIGZvciB1cGRhdGVcbiAgICpcbiAgICogVG8gdXBkYXRlIHRleHQgdmFsdWUganVzdCBwYXNzIG5ldyB0ZXh0IHZhbHVlXG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVTZWxlY3RWYWx1ZSh2YWwpIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IGtleXdvcmQ6IHZhbCB9KTtcbiAgICogfVxuICAgKlxuICAgKiBUbyB1cGRhdGUgc2VsZWN0IG9yIG9ic2VydmFibGUgc2VsZWN0IHlvdSBjb3VsZCBwYXNzIHN1aXRhYmxlIHZhbHVlXG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVTZWxlY3RWYWx1ZSh2YWw6IG51bWJlcikge1xuICAgKiAgIHRoaXMuZmlsdGVyRWwudXBkYXRlVmFsdWVzKHsgc2ltcGxlX3NlbGVjdDogdmFsIH0sIHsgb2JzZXJ2YWJsZV9zZWxlY3Q6IHZhbCB9KTtcbiAgICogfVxuICAgKlxuICAgKiBUbyB1cGRhdGUgY2hlY2tib3ggdmFsdWUganVzdCBwYXNzIHRydWUvZmFsc2UgYXMgdmFsdWVcbiAgICpcbiAgICogcHVibGljIHVwZGF0ZUNoZWNrb3godmFsOiBib29sZWFuKSB7XG4gICAqICAgdGhpcy5maWx0ZXJFbC51cGRhdGVWYWx1ZXMoeyBjaGVja2JveDogdmFsIH0pO1xuICAgKiB9XG4gICAqXG4gICAqIFRvIHVwZGF0ZSByYW5nZSB2YWx1ZSBqdXN0IHBhc3Mgb2JqZWN0IHdpdGggbWluJm1heCBvYmplY3Qgb3IganVzdCB3aXRoIG9uZSBvZiB0YXJnZXRzXG4gICAqXG4gICAqIEV4LjogeyBtaW46IDEwLCBtYXggMTUgfSwgeyBtaW46IDUgfSwgeyBtYXggNSB9XG4gICAqXG4gICAqIHB1YmxpYyB1cGRhdGVSYW5nZSh2YWwpIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IHJhbmdlOiB2YWwgfSk7XG4gICAqIH1cbiAgICpcbiAgICogVG8gdXBkYXRlIGF1dG9jb21wbGV0ZSBqdXN0IHBhc3Mgb2JqZWN0IHdpdGggbmFtZS92YWx1ZSBmaWVsZHNcbiAgICpcbiAgICogRXguOiB7IG5hbWU6ICdKb2huIERvZScsIHZhbHVlOiAxIH1cbiAgICpcbiAgICogcHVibGljIHVwZGF0ZUF1dG9jb21wbGV0ZSh2YWwpIHtcbiAgICogICB0aGlzLmZpbHRlckVsLnVwZGF0ZVZhbHVlcyh7IGF1dG9jb21wbGV0ZV91c2VyX2lkOiB2YWwgfSk7XG4gICAqIH1cbiAgICpcbiAgICogVG8gdXBkYXRlIGF1dG9jb21wbGV0ZWNoaXBzIGp1c3QgcGFzczpcbiAgICpcbiAgICogMSkgb2JqZWN0IHdpdGggbmFtZS92YWx1ZSBmaWVsZHMgLSB3aWxsIGJlIGFwcGVuZGVkIHRvIGV4aXN0aW5nIHNldCBvZiB2YWx1ZXNcbiAgICpcbiAgICogeyBuYW1lOiAnSm9obiBEb2UnLCB2YWx1ZTogMSB9XG4gICAqXG4gICAqIDIpIGFycmF5IG9mIG9iamVjdHMgLSB3aWxsIGJlIGFwcGVuZGVkIHRvIGV4aXN0aW5nIHNldCBvZiB2YWx1ZXNcbiAgICpcbiAgICogW3sgbmFtZTogJ0pvaG4gRG9lJywgdmFsdWU6IDEgfSwgeyBuYW1lOiAnRGFyeWEgRmlsaXBvdmEnLCB2YWx1ZTogMiB9XVxuICAgKlxuICAgKiAzKSBudWxsIC0gY2xlYXIgZXhpc3Rpbmcgc2V0IG9mIHZhbHVlc1xuICAgKlxuICAgKiBwdWJsaWMgdXBkYXRlQXV0b2NvbXBsZXRlKHZhbCkge1xuICAgKiAgIHRoaXMuZmlsdGVyRWwudXBkYXRlVmFsdWVzKHsgYXV0b2NvbXBsZXRlY2hpcHNfdXNlcl9pZDogdmFsIH0pO1xuICAgKiB9XG4gICAqXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVmFsdWVzKHZhbHVlcykge1xuICAgIE9iamVjdC5rZXlzKHZhbHVlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJJdGVtID0gdGhpcy5pdGVtc1xuICAgICAgICAuZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBrZXkpO1xuXG4gICAgICBpZiAoIWZpbHRlckl0ZW0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmaWx0ZXJJdGVtLm1vZGVsID0gdmFsdWVzW2tleV07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaGlkZSgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNob3coKSB7XG4gICAgdGhpcy5jaGFuZ2VWaXNpYmlsaXR5KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVZpc2liaWxpdHlDbGljayh2YWx1ZSwgZXZlbnQgPSBudWxsKSB7XG5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGl0ZW1WYWx1ZXMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbm9uRW1wdHlJdGVtVmFsdWVzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0l0ZW1WYWx1ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNcbiAgICAgIC5zb21lKChpdGVtKSA9PiBpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1WYWx1ZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtc1xuICAgICAgLmZpbmQoKF9pdGVtKSA9PiBfaXRlbS5uYW1lID09PSBuYW1lKTtcblxuICAgIHJldHVybiBpdGVtPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93SXRlbShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtKG5hbWUpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGl0ZW0uaGlkZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVJdGVtc1Zpc2libGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRlSXRlbShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtKG5hbWUpO1xuXG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXRlbS5oaWRlID0gdHJ1ZTtcblxuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLnVwZGF0ZUl0ZW1zVmlzaWJsaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJJdGVtKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldEl0ZW0obmFtZSk7XG5cbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpdGVtLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSXRlbUNvbmZpZyhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBJVXBkYXRlRmlsdGVySXRlbUNvbmZpZyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0SXRlbShuYW1lKTtcblxuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGl0ZW0ubGFiZWwgPSBwYXJhbXMubGFiZWwgPz8gaXRlbS5sYWJlbDtcbiAgICBpdGVtLmNoaXBMYWJlbCA9IHBhcmFtcy5jaGlwTGFiZWwgPz8gaXRlbS5jaGlwTGFiZWw7XG5cbiAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVJdGVtc1Zpc2libGl0eSgpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1WYWx1ZUNoYW5nZSQobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXMuZmluZCgoaSkgPT4gaS5uYW1lID09PSBuYW1lKTtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLm1vZGVsO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuXG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVmlzaWJpbGl0eShzdGF0ZTogYm9vbGVhbikge1xuICAgIGlmIChzdGF0ZSA9PT0gdGhpcy5zaG93RmlsdGVyTWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcblxuICAgICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3lGaWx0ZXJEcmF3ZXIoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGFzVmlzaWJsZUl0ZW1PclNvcnRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9saXN0ZW5Fc2NCdXR0b24oKTtcblxuICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcblxuICAgIHRoaXMuX2ZpbHRlck92ZXJsYXkub3BlbigpO1xuICB9XG5cbiAgcHVibGljIGluaXQoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2ZpbHRlckl0ZW1zLnZhbHVlc0FzUXVlcnkoKTtcbiAgICB0aGlzLl9zb3J0ID0gdGhpcy5fZmlsdGVySXRlbXMuZ2V0U29ydCgpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmluaXQpIHtcbiAgICAgIHRoaXMuY29uZmlnLmluaXQoZGF0YSwgdGhpcy5fc29ydCwgdGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ2hpcHNWaXNpYmlsaXR5KCk7XG5cbiAgICB0aGlzLml0ZW1zXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLmluaXQoaXRlbSwgdGhpcyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihldmVudCA9IG51bGwpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMuX2ZpbHRlckl0ZW1zLmZpbHRlcnNDbGVhcigpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmNsZWFyKSB7XG4gICAgICB0aGlzLmNvbmZpZy5jbGVhcigpO1xuICAgIH1cblxuICAgIHRoaXMua2V5d29yZCA9ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGZpbHRlciB3aW5kb3cgYW5kIGRvIGNoYW5nZSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHNlYXJjaChldmVudCkge1xuICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eUNsaWNrKGZhbHNlLCBldmVudCk7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKGV2ZW50ID0gbnVsbCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9maWx0ZXJJdGVtcy52YWx1ZXNBc1F1ZXJ5KCk7XG4gICAgY29uc3QgZWwgPSB0aGlzLnJlbG9hZEVsPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYoZWwpIHtcbiAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnYWxsIDAuNzVzIDAuMHMnO1xuICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3JvdGF0ZSgzNjBkZWcpJztcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSBudWxsO1xuICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBudWxsO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLnJlbG9hZCkge1xuICAgICAgdGhpcy5jb25maWcucmVsb2FkKGRhdGEsIHRoaXMuX2ZpbHRlckl0ZW1zLmdldFNvcnQoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEl0ZW0obmFtZSk6IEJhc2VJdGVtPGFueT4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAuZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaFF1ZXJ5UGFyYW1zKCk6IHZvaWQge1xuICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLmZldGNoUXVlcnlQYXJhbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIGNoYW5nZSBjYWxsYmFjayBhbmQgYXBwbHkgbmV3IGZpbHRlciB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBjaGFuZ2UoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2ZpbHRlckl0ZW1zLnZhbHVlc0FzUXVlcnkoKTtcbiAgICBjb25zdCBzb3J0ID0gdGhpcy5fZmlsdGVySXRlbXMuZ2V0U29ydCgpO1xuXG4gICAgY29uc3Qgc29ydGluZ0NoYW5nZWQgPSAoKCFzb3J0IHx8ICF0aGlzLl9zb3J0KSAmJiBzb3J0ICE9PSB0aGlzLl9zb3J0KVxuICAgICAgfHwgKHNvcnQgJiYgdGhpcy5fc29ydCAmJiAhb2JqZWN0c0FyZUVxdWFscyh0aGlzLl9zb3J0LCBzb3J0KSk7XG5cbiAgICBpZiAoc29ydGluZ0NoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3NvcnQgPSBzb3J0O1xuXG4gICAgICBpZiAodGhpcy5jb25maWcuc29ydENoYW5nZSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5zb3J0Q2hhbmdlKGRhdGEsIHNvcnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5jaGFuZ2UpIHtcbiAgICAgIHRoaXMuY29uZmlnLmNoYW5nZShkYXRhLCBzb3J0KTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVDaGlwc1Zpc2liaWxpdHkoKTtcblxuICAgIC8vIHZpc2liaWxpdHkgZm9yIGFjdGlvbnMgY2FuIGRlcGVuZCBvbiBmaWx0ZXJzIHN0YXRlXG4gICAgdGhpcy5fYWN0aW9ucy51cGRhdGVBY3Rpb25zVmlzaWJpbGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBmaWx0ZXIgYWN0aW9ucyBjb25maWdcbiAgICpcbiAgICogQHBhcmFtIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVBY3Rpb25zKGFjdGlvbnM6IEZzRmlsdGVyQWN0aW9uW10pOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpb25zLmluaXRBY3Rpb25zKGFjdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgXCJGaWx0ZXJzXCIgYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgc2hvd0ZpbHRlcnNCdG4oKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyc0J0blZpc2libGUkLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZSBcIkZpbHRlcnNcIiBidXR0b25cbiAgICovXG4gIHB1YmxpYyBoaWRlRmlsdGVyc0J0bigpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJzQnRuVmlzaWJsZSQubmV4dChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBcIktleXdvcmRcIiBmaWVsZCBpZiBpdCBwcmVzZW50XG4gICAqL1xuICBwdWJsaWMgc2hvd0tleXdvcmRGaWVsZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9rZXl3b3JkVmlzaWJsZSQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIFwiS2V5d29yZFwiIGZpZWxkIGlmIGl0IHByZXNlbnRcbiAgICovXG4gIHB1YmxpYyBoaWRlS2V5d29yZEZpZWxkKCk6IHZvaWQge1xuICAgIHRoaXMuX2tleXdvcmRWaXNpYmxlJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHbyB0aHJvdWdoIGFjdGlvbnMgYW5kIGNoZWNrIHNob3coKSBjYWxsYmFjayBhbmQgdXBkYXRlIHZpc2libGUgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZUFjdGlvbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGlvbnMudXBkYXRlQWN0aW9uc1Zpc2liaWxpdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHbyB0aHJvdWdoIGFjdGlvbnMgYW5kIGNoZWNrIGRpc2FibGVkKCkgY2FsbGJhY2sgYW5kIHVwZGF0ZSBkaXNhYmxlZCBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZURpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aW9ucy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbXMoaXRlbXM6IElGaWx0ZXJDb25maWdJdGVtW10pIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy5kZXN0cm95SXRlbXMoKTtcblxuICAgIHRoaXMuY29uZmlnLml0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5fZmlsdGVySXRlbXMuc2V0Q29uZmlnKHRoaXMuX2NvbmZpZyk7XG4gICAgdGhpcy5fZXh0ZXJuYWxQYXJhbXMuaW5pdEl0ZW1zKCk7XG5cbiAgICB0aGlzLl9zeW5jU2VhcmNoSW5wdXRXaXRoS2V5d29yZCgpO1xuICB9XG5cbiAgcHVibGljIGtleXdvcmRDaGFuZ2Uoa2V5d29yZCkge1xuICAgIHRoaXMuX2tleXdvcmQkLm5leHQoa2V5d29yZCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU29ydGluZ3MoaXRlbXM6IFNvcnRJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy51cGRhdGVTb3J0aW5nSXRlbXNWYWx1ZXMoaXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEZpbHRlcldpdGhDb25maWcoY29uZmlnOiBGaWx0ZXJDb25maWcpIHtcbiAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuX2ZpbHRlckl0ZW1zLmRlc3Ryb3lJdGVtcygpO1xuICAgIH1cblxuICAgIGNvbmZpZyA9IHtcbiAgICAgIC4uLih0aGlzLl9kZWZhdWx0Q29uZmlnIHx8IHt9KSxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICB9O1xuXG4gICAgdGhpcy5fY29uZmlnID0gbmV3IEZzRmlsdGVyQ29uZmlnKGNvbmZpZyk7XG4gICAgdGhpcy5fYWN0aW9ucy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcbiAgICB0aGlzLl9wZXJzaXN0YW5jZVBhcmFtcy5zZXRDb25maWcodGhpcy5fY29uZmlnLCB0aGlzLmluRGlhbG9nKTtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcbiAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5zZXRDb25maWcodGhpcy5fY29uZmlnKTtcblxuICAgIHRoaXMuX3N5bmNTZWFyY2hJbnB1dFdpdGhLZXl3b3JkKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcucmVsb2FkV2hlbkNvbmZpZ0NoYW5nZWQpIHtcbiAgICAgIHRoaXMuY2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveUZpbHRlckRyYXdlcigpIHtcbiAgICB0aGlzLl9maWx0ZXJPdmVybGF5LmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVXaW5kb3dXaWR0aCgpIHtcbiAgICB0aGlzLndpbmRvd0Rlc2t0b3AgPSB3aW5kb3cuaW5uZXJXaWR0aCA+IDEyMDA7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Fc2NCdXR0b24oKSB7XG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBmcm9tRXZlbnQod2luZG93LCAna2V5dXAnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBldmVudC5jb2RlID09PSAnRXNjYXBlJyksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuY2xvc2VkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlV2luZG93V2lkdGgoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0QXV0b1JlbG9hZCgpIHtcbiAgICBpZih0aGlzLmNvbmZpZy5hdXRvUmVsb2FkKSB7XG4gICAgICBpbnRlcnZhbCh0aGlzLmNvbmZpZy5hdXRvUmVsb2FkLnNlY29uZHMgKiAxMDAwKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5hdXRvUmVsb2FkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVsb2FkKG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5JbnB1dENoYW5nZXMoKSB7XG4gICAgdGhpcy5fa2V5d29yZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleXdvcmRJdGVtID0gdGhpcy5fZmlsdGVySXRlbXMua2V5d29yZEl0ZW07XG4gICAgICAgIGtleXdvcmRJdGVtLm1vZGVsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2hhbmdlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNTZWFyY2hJbnB1dFdpdGhLZXl3b3JkKCk6IHZvaWQge1xuICAgIGNvbnN0IGtleXdvcmRJdGVtID0gdGhpcy5fZmlsdGVySXRlbXMua2V5d29yZEl0ZW07XG4gICAgaWYgKGtleXdvcmRJdGVtKSB7XG4gICAgICB0aGlzLmtleXdvcmQgPSBrZXl3b3JkSXRlbS5tb2RlbDtcbiAgICAgIHRoaXMuc2VhcmNoUGxhY2Vob2xkZXIgPSBrZXl3b3JkSXRlbS5sYWJlbCBhcyBzdHJpbmcgfHwgJ1NlYXJjaCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuSW50ZXJuYWxJdGVtc0NoYW5nZSgpIHtcbiAgICB0aGlzLl9maWx0ZXJJdGVtc1xuICAgICAgLml0ZW1zQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2UoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdE92ZXJsYXkoKSB7XG4gICAgdGhpcy5fZmlsdGVyT3ZlcmxheS5zZXRDbGVhckZuKHRoaXMuY2xlYXIuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5fZmlsdGVyT3ZlcmxheS5zZXREb25lRm4odGhpcy5oaWRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLy8gV2UgbWF5IG5lZWQgc29tZSB0aW1lIHRvIHJlY2lldmUgZXh0ZXJuYWwgcGFyYW1zIGFuZCBhZnRlciB0aGF0IHJlYWR5IGNhbiBiZSBlbWl0dGVkXG4gIHByaXZhdGUgX2xpc3RlbldoZW5GaWx0ZXJSZWFkeSgpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgW1xuICAgICAgICB0aGlzLl9leHRlcm5hbFBhcmFtcy5wZW5kaW5nJCxcbiAgICAgICAgdGhpcy5pdGVtc1JlYWR5JCxcbiAgICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChbcGVuZGluZ1BhcmFtcywgaXRlbXNSZWFkeV0pID0+ICFwZW5kaW5nUGFyYW1zICYmIGl0ZW1zUmVhZHkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICB0aGlzLl9zeW5jU2VhcmNoSW5wdXRXaXRoS2V5d29yZCgpO1xuXG4gICAgICAgIHRoaXMucmVhZHkuZW1pdCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVDaGlwc1Zpc2liaWxpdHkoKSB7XG4gICAgY29uc3QgaGFzRmlsdGVyQ2hpcHMgPSB0aGlzLl9maWx0ZXJJdGVtcy5pdGVtc1xuICAgICAgLnNvbWUoKGl0ZW06IEJhc2VJdGVtPGFueT4pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaXNDaGlwVmlzaWJsZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5faGFzRmlsdGVyQ2hpcHMkLm5leHQoaGFzRmlsdGVyQ2hpcHMpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWlubmVyLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzS2V5d29yZDsgZWxzZSBmaWx0ZXJLZXl3b3JkXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyU3RhdHVzQmFyQ2hpcHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVG9vbGJhclwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyQWN0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0tleXdvcmRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyU3RhdHVzQmFyQ2hpcHNcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyU3RhdHVzQmFyQ2hpcHM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0dXNCYXJcIj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLXN0YXR1cy1jb250YWluZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdoYXMtc3RhdHVzJzogISFmaWx0ZXJTdGF0dXMudGV4dENvbnRlbnQgfVwiPlxuICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXN0YXR1c1wiXG4gICAgICAgICAgI2ZpbHRlclN0YXR1cz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c0Jhci50ZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmNoaXBzICYmIGhhc0ZpbHRlckNoaXBzJCB8IGFzeW5jXCI+XG4gICAgPGZzLWZpbHRlci1jaGlwc1xuICAgICAgY2xhc3M9XCJmaWx0ZXItY2hpcHNcIlxuICAgICAgW2ZpbHRlcnNdPVwiaXRlbXNcIj5cbiAgICA8L2ZzLWZpbHRlci1jaGlwcz5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNmaWx0ZXJLZXl3b3JkPlxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWtleXdvcmRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGtleXdvcmRWaXNpYmxlJCB8IGFzeW5jKSAmJiAha2V5d29yZEl0ZW0/LmhpZGUgXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1mb3JtLWZpZWxkIGZvcm0tZmllbGQtcGFkbGVzc1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2hhcy1rZXl3b3JkJzogISFrZXl3b3JkXG4gICAgICAgICAgfVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgbWF0UHJlZml4XG4gICAgICAgICAgICBjbGFzcz1cImljb25cIj5cbiAgICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4PlxuICAgICAgICAgICAgc2VhcmNoXG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAja2V5d29yZE1hdElucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImtleXdvcmRcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImtleXdvcmRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgbmFtZT1cImZpbHRlci1pbnB1dFwiXG4gICAgICAgICAgW2ZzQ2xlYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCI+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2ZpbHRlckFjdGlvbnM+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItYWN0aW9uc1wiPlxuICAgIDxmcy1maWx0ZXItYWN0aW9uc1xuICAgICAgKm5nSWY9XCJhY3Rpb25zVmlzaWJsZSQgfCBhc3luY1wiXG4gICAgICBbYWN0aW9uc109XCJhY3Rpb25zJCB8IGFzeW5jXCJcbiAgICAgIFtrZWJhYkFjdGlvbnNdPVwibWVudUFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICA8L2ZzLWZpbHRlci1hY3Rpb25zPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2ZpbHRlclRvb2xiYXI+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItdG9vbGJhclwiPlxuICAgIEBpZiAoZmlsdGVyc0J0blZpc2libGUkIHwgYXN5bmMpIHtcbiAgICAgIEBpZiAoaGFzVmlzaWJsZUl0ZW1PclNvcnRpbmcpIHtcbiAgICAgICAgPGFcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tZmlsdGVyc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmlzaWJpbGl0eUNsaWNrKCFzaG93RmlsdGVyTWVudSwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiY29uZmlnLmJ1dHRvbi5jb2xvclwiPlxuICAgICAgICAgIEBpZiAoY29uZmlnLmJ1dHRvbi5pY29uKSB7XG4gICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImZpbHRlck91dGxpbmVcIj48L21hdC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICB7eyBjb25maWcuYnV0dG9uLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIH1cbiAgICB9XG4gICAgQGlmIChjb25maWcucmVsb2FkKSB7XG4gICAgICA8YVxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJyZWxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24tcmVsb2FkXCI+XG4gICAgICAgIDxtYXQtaWNvbiAjcmVsb2FkRWw+XG4gICAgICAgICAgcmVmcmVzaFxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9hPlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZy5hdXRvUmVsb2FkKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXJlbG9hZFwiPlxuICAgICAgICBAaWYgKGNvbmZpZy5hdXRvUmVsb2FkKSB7XG4gICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgbmFtZT1cImF1dG9SZWxvYWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF1dG8tcmVsb2FkXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdXRvUmVsb2FkXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgQXV0byByZWZyZXNoXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -4028,7 +4028,10 @@ class FilterComponent {
4028
4028
  return this._filtersBtnVisible$.asObservable();
4029
4029
  }
4030
4030
  get keywordVisible$() {
4031
- return this._keywordVisible$.asObservable();
4031
+ return this._keywordVisible$.asObservable()
4032
+ .pipe(map((visible) => {
4033
+ return visible && this.hasKeyword;
4034
+ }));
4032
4035
  }
4033
4036
  get actionsVisible$() {
4034
4037
  return this._actions.visible$;