@ks89/angular-modal-gallery 10.0.0-rc.1 → 10.0.1

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.
Files changed (83) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/CONTRIBUTING.md +5 -5
  3. package/README.md +11 -12
  4. package/esm2020/lib/components/accessible.component.mjs +5 -5
  5. package/esm2020/lib/components/carousel/carousel-previews/carousel-previews.component.mjs +3 -3
  6. package/esm2020/lib/components/carousel/carousel.component.mjs +5 -5
  7. package/esm2020/lib/components/components.mjs +2 -2
  8. package/esm2020/lib/components/current-image/current-image.component.mjs +5 -5
  9. package/esm2020/lib/components/current-image/loading-spinner/loading-spinner.component.mjs +4 -4
  10. package/esm2020/lib/components/dots/dots.component.mjs +5 -5
  11. package/esm2020/lib/components/modal-gallery/modal-gallery-ref.mjs +2 -2
  12. package/esm2020/lib/components/modal-gallery/modal-gallery.component.mjs +4 -4
  13. package/esm2020/lib/components/modal-gallery/modal-gallery.service.mjs +3 -3
  14. package/esm2020/lib/components/modal-gallery/modal-gallery.tokens.mjs +2 -2
  15. package/esm2020/lib/components/plain-gallery/plain-gallery.component.mjs +5 -5
  16. package/esm2020/lib/components/previews/previews.component.mjs +5 -5
  17. package/esm2020/lib/components/upper-buttons/upper-buttons.component.mjs +5 -5
  18. package/esm2020/lib/directives/a-tag-bg-image.directive.mjs +5 -5
  19. package/esm2020/lib/directives/click-outside.directive.mjs +5 -5
  20. package/esm2020/lib/directives/description.directive.mjs +5 -5
  21. package/esm2020/lib/directives/direction.directive.mjs +5 -5
  22. package/esm2020/lib/directives/directives.mjs +2 -2
  23. package/esm2020/lib/directives/fallback-image.directive.mjs +5 -5
  24. package/esm2020/lib/directives/keyboard-navigation.directive.mjs +5 -5
  25. package/esm2020/lib/directives/margin.directive.mjs +5 -5
  26. package/esm2020/lib/directives/max-size.directive.mjs +5 -5
  27. package/esm2020/lib/directives/size.directive.mjs +5 -5
  28. package/esm2020/lib/directives/wrap.directive.mjs +5 -5
  29. package/esm2020/lib/modal-gallery.module.mjs +9 -9
  30. package/esm2020/lib/model/accessibility.interface.mjs +2 -2
  31. package/esm2020/lib/model/action.enum.mjs +2 -2
  32. package/esm2020/lib/model/buttons-config.interface.mjs +2 -2
  33. package/esm2020/lib/model/carousel-config.interface.mjs +2 -2
  34. package/esm2020/lib/model/carousel-image-config.interface.mjs +2 -2
  35. package/esm2020/lib/model/carousel-preview-config.interface.mjs +2 -2
  36. package/esm2020/lib/model/current-image-config.interface.mjs +2 -2
  37. package/esm2020/lib/model/description.interface.mjs +2 -2
  38. package/esm2020/lib/model/dots-config.interface.mjs +2 -2
  39. package/esm2020/lib/model/image-internal.class.mjs +2 -2
  40. package/esm2020/lib/model/image.class.mjs +2 -2
  41. package/esm2020/lib/model/keyboard-config.interface.mjs +2 -2
  42. package/esm2020/lib/model/keyboard-service-config.interface.mjs +2 -2
  43. package/esm2020/lib/model/keyboard.enum.mjs +2 -2
  44. package/esm2020/lib/model/lib-config.interface.mjs +2 -2
  45. package/esm2020/lib/model/loading-config.interface.mjs +2 -2
  46. package/esm2020/lib/model/max-size.interface.mjs +2 -2
  47. package/esm2020/lib/model/modal-gallery-config.interface.mjs +2 -2
  48. package/esm2020/lib/model/plain-gallery-config.interface.mjs +2 -2
  49. package/esm2020/lib/model/play-config.interface.mjs +2 -2
  50. package/esm2020/lib/model/preview-config.interface.mjs +2 -2
  51. package/esm2020/lib/model/size.interface.mjs +2 -2
  52. package/esm2020/lib/model/slide-config.interface.mjs +2 -2
  53. package/esm2020/lib/services/config.service.mjs +5 -5
  54. package/esm2020/lib/services/id-validator.service.mjs +5 -5
  55. package/esm2020/lib/services/keyboard.service.mjs +5 -5
  56. package/esm2020/lib/utils/image.util.mjs +2 -2
  57. package/esm2020/lib/utils/user-input.util.mjs +2 -2
  58. package/esm2020/public-api.mjs +2 -2
  59. package/fesm2015/ks89-angular-modal-gallery.mjs +116 -115
  60. package/fesm2015/ks89-angular-modal-gallery.mjs.map +1 -1
  61. package/fesm2020/ks89-angular-modal-gallery.mjs +116 -115
  62. package/fesm2020/ks89-angular-modal-gallery.mjs.map +1 -1
  63. package/lib/components/accessible.component.d.ts +1 -1
  64. package/lib/components/carousel/carousel-previews/carousel-previews.component.d.ts +1 -1
  65. package/lib/components/carousel/carousel.component.d.ts +1 -1
  66. package/lib/components/current-image/current-image.component.d.ts +1 -1
  67. package/lib/components/current-image/loading-spinner/loading-spinner.component.d.ts +1 -1
  68. package/lib/components/dots/dots.component.d.ts +1 -1
  69. package/lib/components/modal-gallery/modal-gallery.component.d.ts +1 -1
  70. package/lib/components/plain-gallery/plain-gallery.component.d.ts +1 -1
  71. package/lib/components/previews/previews.component.d.ts +1 -1
  72. package/lib/components/upper-buttons/upper-buttons.component.d.ts +1 -1
  73. package/lib/directives/a-tag-bg-image.directive.d.ts +1 -1
  74. package/lib/directives/click-outside.directive.d.ts +1 -1
  75. package/lib/directives/description.directive.d.ts +1 -1
  76. package/lib/directives/direction.directive.d.ts +1 -1
  77. package/lib/directives/fallback-image.directive.d.ts +1 -1
  78. package/lib/directives/keyboard-navigation.directive.d.ts +1 -1
  79. package/lib/directives/margin.directive.d.ts +1 -1
  80. package/lib/directives/max-size.directive.d.ts +1 -1
  81. package/lib/directives/size.directive.d.ts +1 -1
  82. package/lib/directives/wrap.directive.d.ts +1 -1
  83. package/package.json +7 -7
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  The MIT License (MIT)
3
3
 
4
- Copyright (C) 2017-2021 Stefano Cappa (Ks89)
4
+ Copyright (C) 2017-2022 Stefano Cappa (Ks89)
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  of this software and associated documentation files (the "Software"), to deal
@@ -232,9 +232,9 @@ export class PlainGalleryComponent extends AccessibleComponent {
232
232
  }
233
233
  }
234
234
  }
235
- PlainGalleryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PlainGalleryComponent, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
236
- PlainGalleryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: PlainGalleryComponent, selector: "ks-plain-gallery", inputs: { id: "id", images: "images", config: "config" }, outputs: { clickImage: "clickImage" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"plain-container\"\n ksWrap [wrap]=\"wrapStyle\" [width]=\"widthStyle\"\n ksDirection [direction]=\"directionStyle\" [justify]=\"justifyStyle\"\n [attr.aria-label]=\"accessibilityConfig?.plainGalleryContentAriaLabel\"\n [title]=\"accessibilityConfig?.plainGalleryContentTitle\">\n\n <ng-container *ngFor=\"let imgRow of imageGrid; let i = index\">\n <ng-container *ngFor=\"let imgCol of imgRow; let j = index\">\n\n <ng-container *ngIf=\"!plainGalleryConfig?.advanced?.aTags; else aTags\">\n <img *ngIf=\"imgCol?.modal?.img\"\n [src]=\"imgCol.plain?.img! ? imgCol.plain?.img! : imgCol.modal.img\"\n ksFallbackImage [fallbackImg]=\"imgCol.plain?.fallbackImg ? imgCol.plain?.fallbackImg : imgCol.modal.fallbackImg\"\n class=\"image\"\n ksSize [sizeConfig]=\"{width: size?.width!, height: size?.height!}\"\n [attr.aria-label]=\"imgCol.plain?.ariaLabel\"\n [title]=\"(imgCol.plain?.title || imgCol.plain?.title === '') ? imgCol.plain?.title : getTitleDisplay(imgCol)\"\n alt=\"{{imgCol.plain?.alt! ? imgCol.plain?.alt! : getAltPlainDescriptionByImage(imgCol)}}\"\n [tabIndex]=\"0\" role=\"img\"\n (click)=\"showModalGalleryByImage(imgCol)\" (keyup)=\"onNavigationEvent($event, imgCol)\"/>\n </ng-container>\n\n <!-- Add directive to set background with the image url as param to pass thumb or img-->\n <!-- to do something like this <a style=\"background: url('path to image') 50% 50%/cover\">.-->\n <ng-template #aTags>\n <a *ngIf=\"imgCol?.modal?.img\"\n class=\"a-tag-image\"\n ksATagBgImage [image]=\"imgCol\" [style]=\"plainGalleryConfig?.advanced?.additionalBackground\"\n ksSize [sizeConfig]=\"{width: size?.width!, height: size?.height!}\"\n [attr.aria-label]=\"imgCol.plain?.ariaLabel\"\n [title]=\"(imgCol.plain?.title || imgCol.plain?.title === '') ? imgCol.plain?.title : getTitleDisplay(imgCol)\"\n [tabIndex]=\"0\"\n (click)=\"showModalGalleryByImage(imgCol)\" (keyup)=\"onNavigationEvent($event, imgCol)\"></a>\n </ng-template>\n\n </ng-container>\n </ng-container>\n\n</div>\n\n", styles: [".plain-container{align-items:center;display:flex}.plain-container .image{cursor:pointer;height:auto;margin:2px;width:50px}.plain-container .a-tag-image{cursor:pointer;margin:2px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.SizeDirective, selector: "[ksSize]", inputs: ["sizeConfig"] }, { kind: "directive", type: i4.WrapDirective, selector: "[ksWrap]", inputs: ["wrap", "width"] }, { kind: "directive", type: i5.DirectionDirective, selector: "[ksDirection]", inputs: ["direction", "justify"] }, { kind: "directive", type: i6.ATagBgImageDirective, selector: "[ksATagBgImage]", inputs: ["image", "style"] }, { kind: "directive", type: i7.FallbackImageDirective, selector: "[ksFallbackImage]", inputs: ["fallbackImg"], outputs: ["fallbackApplied"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PlainGalleryComponent, decorators: [{
235
+ PlainGalleryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: PlainGalleryComponent, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
236
+ PlainGalleryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: PlainGalleryComponent, selector: "ks-plain-gallery", inputs: { id: "id", images: "images", config: "config" }, outputs: { clickImage: "clickImage" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"plain-container\"\n ksWrap [wrap]=\"wrapStyle\" [width]=\"widthStyle\"\n ksDirection [direction]=\"directionStyle\" [justify]=\"justifyStyle\"\n [attr.aria-label]=\"accessibilityConfig?.plainGalleryContentAriaLabel\"\n [title]=\"accessibilityConfig?.plainGalleryContentTitle\">\n\n <ng-container *ngFor=\"let imgRow of imageGrid; let i = index\">\n <ng-container *ngFor=\"let imgCol of imgRow; let j = index\">\n\n <ng-container *ngIf=\"!plainGalleryConfig?.advanced?.aTags; else aTags\">\n <img *ngIf=\"imgCol?.modal?.img\"\n [src]=\"imgCol.plain?.img! ? imgCol.plain?.img! : imgCol.modal.img\"\n ksFallbackImage [fallbackImg]=\"imgCol.plain?.fallbackImg ? imgCol.plain?.fallbackImg : imgCol.modal.fallbackImg\"\n class=\"image\"\n ksSize [sizeConfig]=\"{width: size?.width!, height: size?.height!}\"\n [attr.aria-label]=\"imgCol.plain?.ariaLabel\"\n [title]=\"(imgCol.plain?.title || imgCol.plain?.title === '') ? imgCol.plain?.title : getTitleDisplay(imgCol)\"\n alt=\"{{imgCol.plain?.alt! ? imgCol.plain?.alt! : getAltPlainDescriptionByImage(imgCol)}}\"\n [tabIndex]=\"0\" role=\"img\"\n (click)=\"showModalGalleryByImage(imgCol)\" (keyup)=\"onNavigationEvent($event, imgCol)\"/>\n </ng-container>\n\n <!-- Add directive to set background with the image url as param to pass thumb or img-->\n <!-- to do something like this <a style=\"background: url('path to image') 50% 50%/cover\">.-->\n <ng-template #aTags>\n <a *ngIf=\"imgCol?.modal?.img\"\n class=\"a-tag-image\"\n ksATagBgImage [image]=\"imgCol\" [style]=\"plainGalleryConfig?.advanced?.additionalBackground\"\n ksSize [sizeConfig]=\"{width: size?.width!, height: size?.height!}\"\n [attr.aria-label]=\"imgCol.plain?.ariaLabel\"\n [title]=\"(imgCol.plain?.title || imgCol.plain?.title === '') ? imgCol.plain?.title : getTitleDisplay(imgCol)\"\n [tabIndex]=\"0\"\n (click)=\"showModalGalleryByImage(imgCol)\" (keyup)=\"onNavigationEvent($event, imgCol)\"></a>\n </ng-template>\n\n </ng-container>\n </ng-container>\n\n</div>\n\n", styles: [".plain-container{align-items:center;display:flex}.plain-container .image{cursor:pointer;height:auto;margin:2px;width:50px}.plain-container .a-tag-image{cursor:pointer;margin:2px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.SizeDirective, selector: "[ksSize]", inputs: ["sizeConfig"] }, { kind: "directive", type: i4.WrapDirective, selector: "[ksWrap]", inputs: ["wrap", "width"] }, { kind: "directive", type: i5.DirectionDirective, selector: "[ksDirection]", inputs: ["direction", "justify"] }, { kind: "directive", type: i6.ATagBgImageDirective, selector: "[ksATagBgImage]", inputs: ["image", "style"] }, { kind: "directive", type: i7.FallbackImageDirective, selector: "[ksFallbackImage]", inputs: ["fallbackImg"], outputs: ["fallbackApplied"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: PlainGalleryComponent, decorators: [{
238
238
  type: Component,
239
239
  args: [{ selector: 'ks-plain-gallery', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"plain-container\"\n ksWrap [wrap]=\"wrapStyle\" [width]=\"widthStyle\"\n ksDirection [direction]=\"directionStyle\" [justify]=\"justifyStyle\"\n [attr.aria-label]=\"accessibilityConfig?.plainGalleryContentAriaLabel\"\n [title]=\"accessibilityConfig?.plainGalleryContentTitle\">\n\n <ng-container *ngFor=\"let imgRow of imageGrid; let i = index\">\n <ng-container *ngFor=\"let imgCol of imgRow; let j = index\">\n\n <ng-container *ngIf=\"!plainGalleryConfig?.advanced?.aTags; else aTags\">\n <img *ngIf=\"imgCol?.modal?.img\"\n [src]=\"imgCol.plain?.img! ? imgCol.plain?.img! : imgCol.modal.img\"\n ksFallbackImage [fallbackImg]=\"imgCol.plain?.fallbackImg ? imgCol.plain?.fallbackImg : imgCol.modal.fallbackImg\"\n class=\"image\"\n ksSize [sizeConfig]=\"{width: size?.width!, height: size?.height!}\"\n [attr.aria-label]=\"imgCol.plain?.ariaLabel\"\n [title]=\"(imgCol.plain?.title || imgCol.plain?.title === '') ? imgCol.plain?.title : getTitleDisplay(imgCol)\"\n alt=\"{{imgCol.plain?.alt! ? imgCol.plain?.alt! : getAltPlainDescriptionByImage(imgCol)}}\"\n [tabIndex]=\"0\" role=\"img\"\n (click)=\"showModalGalleryByImage(imgCol)\" (keyup)=\"onNavigationEvent($event, imgCol)\"/>\n </ng-container>\n\n <!-- Add directive to set background with the image url as param to pass thumb or img-->\n <!-- to do something like this <a style=\"background: url('path to image') 50% 50%/cover\">.-->\n <ng-template #aTags>\n <a *ngIf=\"imgCol?.modal?.img\"\n class=\"a-tag-image\"\n ksATagBgImage [image]=\"imgCol\" [style]=\"plainGalleryConfig?.advanced?.additionalBackground\"\n ksSize [sizeConfig]=\"{width: size?.width!, height: size?.height!}\"\n [attr.aria-label]=\"imgCol.plain?.ariaLabel\"\n [title]=\"(imgCol.plain?.title || imgCol.plain?.title === '') ? imgCol.plain?.title : getTitleDisplay(imgCol)\"\n [tabIndex]=\"0\"\n (click)=\"showModalGalleryByImage(imgCol)\" (keyup)=\"onNavigationEvent($event, imgCol)\"></a>\n </ng-template>\n\n </ng-container>\n </ng-container>\n\n</div>\n\n", styles: [".plain-container{align-items:center;display:flex}.plain-container .image{cursor:pointer;height:auto;margin:2px;width:50px}.plain-container .a-tag-image{cursor:pointer;margin:2px}\n"] }]
240
240
  }], ctorParameters: function () { return [{ type: i1.ConfigService }]; }, propDecorators: { id: [{
@@ -246,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
246
246
  }], clickImage: [{
247
247
  type: Output
248
248
  }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaW4tZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvcGxhaW4tZ2FsbGVyeS9wbGFpbi1nYWxsZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy9wbGFpbi1nYWxsZXJ5L3BsYWluLWdhbGxlcnkuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUtoSixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBc0Isb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU5SCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFHOUQ7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG1CQUFtQjtJQW1FNUQsWUFBb0IsYUFBNEI7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFEVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTNEaEQ7O1dBRUc7UUFFSCxXQUFNLEdBQVksRUFBRSxDQUFDO1FBT3JCOztXQUVHO1FBRUgsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBYTlEOzs7V0FHRztRQUNILGNBQVMsR0FBYyxFQUFFLENBQUM7UUFLMUI7Ozs7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RCxNQUFNLE1BQU0sR0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDekUsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUV6QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNILENBQUM7O2tIQWhRVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixxTUNsRGxDLDBzRUF3Q0E7MkZEVWEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNO29HQVEvQyxFQUFFO3NCQURELEtBQUs7Z0JBT04sTUFBTTtzQkFETCxLQUFLO2dCQU1OLE1BQU07c0JBREwsS0FBSztnQkFPTixVQUFVO3NCQURULE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuXG4gQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgU3RlZmFubyBDYXBwYSAoS3M4OSlcblxuIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OIElORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2UsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2FjY2Vzc2liaWxpdHkuaW50ZXJmYWNlJztcbmltcG9ydCB7IEltYWdlIH0gZnJvbSAnLi4vLi4vbW9kZWwvaW1hZ2UuY2xhc3MnO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gJy4uLy4uL21vZGVsL3NpemUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRMYXlvdXQsIExpbmVMYXlvdXQsIFBsYWluR2FsbGVyeUNvbmZpZywgUGxhaW5HYWxsZXJ5U3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9tb2RlbC9wbGFpbi1nYWxsZXJ5LWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBnZXRJbmRleCB9IGZyb20gJy4uLy4uL3V0aWxzL2ltYWdlLnV0aWwnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IE5FWFQgfSBmcm9tICcuLi8uLi91dGlscy91c2VyLWlucHV0LnV0aWwnO1xuaW1wb3J0IHsgQWNjZXNzaWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2FjY2Vzc2libGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWluTGliQ29uZmlnLCBMaWJDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9saWItY29uZmlnLmludGVyZmFjZSc7XG5cbi8qKlxuICogQ29tcG9uZW50IHdpdGggdGhlIGdhbGxlcnkgb2YgdGh1bWJzLlxuICogSW4gcmVjZWl2ZXMgYW4gYXJyYXkgb2YgSW1hZ2VzLCBhIGJvb2xlYW4gdG8gc2hvdy9oaWRlXG4gKiB0aGUgZ2FsbGVyeSAoZmVhdHVyZSB1c2VkIGJ5IGltYWdlUG9pbnRlcikgYW5kIGEgY29uZmlnXG4gKiBvYmplY3QgdG8gY3VzdG9taXplIHRoZSBiZWhhdmlvdXIgb2YgdGhpcyBjb21wb25lbnQuXG4gKiBBbHNvLCBpdCBlbWl0cyBjbGljayBldmVudHMgYXMgb3V0cHV0cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna3MtcGxhaW4tZ2FsbGVyeScsXG4gIHN0eWxlVXJsczogWydwbGFpbi1nYWxsZXJ5LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICdwbGFpbi1nYWxsZXJ5Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQbGFpbkdhbGxlcnlDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogVW5pcXVlIGlkICg+PTApIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoaXMgbGlicmFyeS4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIHlvdSBhcmUgdXNpbmdcbiAgICogdGhlIHNlcnZpY2UgdG8gY2FsbCBtb2RhbCBnYWxsZXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgaWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQXJyYXkgb2YgYEltYWdlYCB0aGF0IHJlcHJlc2VudCB0aGUgbW9kZWwgb2YgdGhpcyBsaWJyYXJ5IHdpdGggYWxsIGltYWdlcywgdGh1bWJzIGFuZCBzbyBvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGltYWdlczogSW1hZ2VbXSA9IFtdO1xuICAvKipcbiAgICogUGxhaW5MaWJDb25maWcgb2JqZWN0IHRvIGNvbmZpZ3VyZSBwbGFpbi1nYWxsZXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgY29uZmlnOiBQbGFpbkxpYkNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgYW4gZXZlbnQgd2hlbiBhbiBpbWFnZSBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGNsaWNrSW1hZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBQbGFpbkdhbGxlcnlDb25maWdgIHRvIGNvbmZpZ3VyZSB0aGUgcGxhaW4gZ2FsbGVyeS5cbiAgICovXG4gIHBsYWluR2FsbGVyeUNvbmZpZzogUGxhaW5HYWxsZXJ5Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgQWNjZXNzaWJpbGl0eUNvbmZpZ2AgdG8gaW5pdCBjdXN0b20gYWNjZXNzaWJpbGl0eSBmZWF0dXJlcy5cbiAgICogRm9yIGluc3RhbmNlLCBpdCBjb250YWlucyB0aXRsZXMsIGFsdCB0ZXh0cywgYXJpYS1sYWJlbHMgYW5kIHNvIG9uLlxuICAgKi9cbiAgYWNjZXNzaWJpbGl0eUNvbmZpZzogQWNjZXNzaWJpbGl0eUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQmktZGltZW5zaW9uYWwgYXJyYXkgb2YgYEltYWdlYCBvYmplY3QgdG8gc3RvcmUgaW1hZ2VzIHRvIGRpc3BsYXkgYXMgcGxhaW4gZ2FsbGVyeS5cbiAgICogW10gYnkgZGVmYXVsdC5cbiAgICovXG4gIGltYWdlR3JpZDogSW1hZ2VbXVtdID0gW107XG4gIC8qKlxuICAgKiBTaXplIG9iamVjdCB1c2VkIGluIHRoZSB0ZW1wbGF0ZSB0byByZXNpemUgaW1hZ2VzLlxuICAgKi9cbiAgc2l6ZTogU2l6ZSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEJvb2xlYW4gcGFzc2VkIGFzIGlucHV0IHRvIGBrcy13cmFwYCBkaXJlY3RpdmUgdG8gY29uZmlndXJlIGZsZXgtd3JhcCBjc3MgcHJvcGVydHkuXG4gICAqIEhvd2V2ZXIgaXQncyBub3QgZW5vdWdoLCBiZWNhdXNlIHlvdSBuZWVkIHRvIGxpbWl0IHRoZSB3aWR0aCB1c2luZyBgd2lkdGhTdHlsZWAgcHVibGljIHZhcmlhYmxlLlxuICAgKiBGb3IgbW9yZSBpbmZvIGNoZWNrIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2l0L2RvY3MvV2ViL0NTUy9mbGV4LXdyYXBcbiAgICovXG4gIHdyYXBTdHlsZSA9IGZhbHNlO1xuICAvKipcbiAgICogU3RyaW5nIHBhc3NlZCBhcyBpbnB1dCB0byBga3Mtd3JhcGAgZGlyZWN0aXZlIHRvIHNldCB3aWR0aCB0byBiZSBhYmxlIHRvIGZvcmNlIG92ZXJmbG93LlxuICAgKiBJbiB0aGlzIHdheSwgYHdyYXBTdHlsZWAgKGZsZXgtd3JhcCBjc3MgcHJvcGVydHkpIHdpbGwgYmUgdXNlZCBhcyByZXF1ZXN0ZWQuXG4gICAqL1xuICB3aWR0aFN0eWxlID0gJyc7XG4gIC8qKlxuICAgKiBTdHJpbmcgcGFzc2VkIGFzIGlucHV0IHRvIGBrcy1kaXJlY3Rpb25gIGRpcmVjdGl2ZSB0byBzZXQgdGhlIGZsZXgtZGlyZWN0aW9uIGNzcyBwcm9wZXJ0eS5cbiAgICogRm9yIG1vcmUgaW5mbyBjaGVjayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9pdC9kb2NzL1dlYi9DU1MvZmxleC1kaXJlY3Rpb25cbiAgICovXG4gIGRpcmVjdGlvblN0eWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBTdHJpbmcgcGFzc2VkIGFzIGlucHV0IHRvIGBrcy1kaXJlY3Rpb25gIGRpcmVjdGl2ZSB0byBzZXQgdGhlIGp1c3RpZnktY29udGVudCBjc3MgcHJvcGVydHkuXG4gICAqIEZvciBtb3JlIGluZm8gY2hlY2sgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvaXQvZG9jcy9XZWIvQ1NTL2p1c3RpZnktY29udGVudFxuICAgKi9cbiAganVzdGlmeVN0eWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgwrRuZ09uSW5pdMK0IHRvIGluaXQgYm90aCBgY29uZmlnUGxhaW5HYWxsZXJ5YCBjYWxsaW5nIGBpbml0UGxhaW5HYWxsZXJ5Q29uZmlnKClgXG4gICAqIGFuZCBgaW1hZ2VHcmlkIGludm9raW5nIGBpbml0SW1hZ2VHcmlkKClgLlxuICAgKiBUaGlzIGlzIGFuIEFuZ3VsYXIncyBsaWZlY3ljbGUgaG9vaywgc28gaXRzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IEFuZ3VsYXIgaXRzZWxmLlxuICAgKiBJbiBwYXJ0aWN1bGFyLCBpdCdzIGNhbGxlZCBvbmx5IG9uZSB0aW1lISEhXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZCA9PT0gbnVsbCB8fCB0aGlzLmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGlkIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuaWQsIHRoaXMuY29uZmlnKTtcblxuICAgIGNvbnN0IGxpYkNvbmZpZzogTGliQ29uZmlnIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZyh0aGlzLmlkKTtcbiAgICBpZiAoIWxpYkNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIC0gbGliQ29uZmlnIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICB0aGlzLmFjY2Vzc2liaWxpdHlDb25maWcgPSBsaWJDb25maWcuYWNjZXNzaWJpbGl0eUNvbmZpZztcbiAgICB0aGlzLnBsYWluR2FsbGVyeUNvbmZpZyA9IGxpYkNvbmZpZy5wbGFpbkdhbGxlcnlDb25maWc7XG4gICAgdGhpcy5pbml0SW1hZ2VHcmlkKCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIMK0bmdPbkNoYW5nZXPCtCB0byB1cGRhdGUgYm90aCBgaW1hZ2VHcmlkYCBhbmRgcGxhaW5HYWxsZXJ5Q29uZmlnYC5cbiAgICogVGhpcyBpcyBhbiBBbmd1bGFyJ3MgbGlmZWN5Y2xlIGhvb2ssIHNvIGl0cyBjYWxsZWQgYXV0b21hdGljYWxseSBieSBBbmd1bGFyIGl0c2VsZi5cbiAgICogSW4gcGFydGljdWxhciwgaXQncyBjYWxsZWQgd2hlbiBhbnkgZGF0YS1ib3VuZCBwcm9wZXJ0eSBvZiBhIGRpcmVjdGl2ZSBjaGFuZ2VzISEhXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaWQgPT09IG51bGwgfHwgdGhpcy5pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBpZCBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgY29uc3QgbGliQ29uZmlnOiBMaWJDb25maWcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKHRoaXMuaWQpO1xuICAgIGlmICghbGliQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBsaWJDb25maWcgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VzQ2hhbmdlOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLmltYWdlcztcbiAgICBjb25zdCBjb25maWdDaGFuZ2U6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMucGxhaW5HYWxsZXJ5Q29uZmlnO1xuXG4gICAgLy8gSSdtIHVzaW5nICFjaGFuZ2UuZmlyc3RDaGFuZ2UgYmVjYXVzZSB0aGUgZmlyc3QgdGltZSB3aWxsIGJlIGNhbGxlZCBib3RoIG9uSW5pdCBhbmQgb25DaGFuZ2UgYW5kIEkgZG9uJ3RcbiAgICAvLyB3YW50IHRvIGV4ZWN1dGUgaW5pdGlhbGl6YXRpb24gdHdvIHRpbWVzLlxuICAgIGlmIChcbiAgICAgIGNvbmZpZ0NoYW5nZSAmJlxuICAgICAgIWNvbmZpZ0NoYW5nZS5maXJzdENoYW5nZSAmJlxuICAgICAgKGNvbmZpZ0NoYW5nZS5wcmV2aW91c1ZhbHVlICE9PSBjb25maWdDaGFuZ2UuY3VycmVudFZhbHVlIHx8ICghY29uZmlnQ2hhbmdlLnByZXZpb3VzVmFsdWUgJiYgIWNvbmZpZ0NoYW5nZS5jdXJyZW50VmFsdWUpKVxuICAgICkge1xuICAgICAgdGhpcy5wbGFpbkdhbGxlcnlDb25maWcgPSBsaWJDb25maWcucGxhaW5HYWxsZXJ5Q29uZmlnO1xuICAgICAgLy8gdGhpcy5jb25maWdQbGFpbkdhbGxlcnkgPSB0aGlzLmluaXRQbGFpbkdhbGxlcnlDb25maWcoKTtcbiAgICB9XG4gICAgaWYgKGltYWdlc0NoYW5nZSAmJiAhaW1hZ2VzQ2hhbmdlLmZpcnN0Q2hhbmdlICYmIGltYWdlc0NoYW5nZS5wcmV2aW91c1ZhbHVlICE9PSBpbWFnZXNDaGFuZ2UuY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmluaXRJbWFnZUdyaWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCB3aGVuIHlvdSBjbGljayBvbiBhbiBpbWFnZSBvZiB0aGUgcGxhaW4gKG9yIGlubGluZSkgZ2FsbGVyeS5cbiAgICogVGhpcyB3aWxsIGVtaXQgdGhlIHNob3cgZXZlbnQgd2l0aCB0aGUgaW1hZ2UgYXMgcGF5bG9hZC5cbiAgICogQHBhcmFtIEltYWdlIGltZyBpcyB0aGUgSW1hZ2UgdG8gc2hvd1xuICAgKi9cbiAgc2hvd01vZGFsR2FsbGVyeUJ5SW1hZ2UoaW1nOiBJbWFnZSk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLmltYWdlcy5maW5kSW5kZXgoKHZhbDogSW1hZ2UpID0+IHZhbCAmJiBpbWcgJiYgdmFsLmlkID09PSBpbWcuaWQpO1xuICAgIHRoaXMuc2hvd01vZGFsR2FsbGVyeShpbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCB3aGVuIHlvdSBuYXZpZ2F0ZSBiZXR3ZWVuIGltYWdlcy5cbiAgICogVGhpcyB3aWxsIGVtaXQgdGhlIHNob3cgZXZlbnQgd2l0aCB0aGUgaW1hZ2UgYXMgcGF5bG9hZC5cbiAgICogQHBhcmFtIEtleWJvYXJkRXZlbnQgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIG5hdmlnYXRpb25cbiAgICogQHBhcmFtIEltYWdlIGltZyBpcyB0aGUgSW1hZ2UgdG8gc2hvd1xuICAgKi9cbiAgb25OYXZpZ2F0aW9uRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGltZzogSW1hZ2UpOiB2b2lkIHtcbiAgICBjb25zdCByZXN1bHQ6IG51bWJlciA9IHN1cGVyLmhhbmRsZUltYWdlRXZlbnQoZXZlbnQpO1xuICAgIGlmIChyZXN1bHQgPT09IE5FWFQpIHtcbiAgICAgIHRoaXMuc2hvd01vZGFsR2FsbGVyeUJ5SW1hZ2UoaW1nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGdldCBgYWx0IGF0dHJpYnV0ZWAuXG4gICAqIGBhbHRgIHNwZWNpZmllcyBhbiBhbHRlcm5hdGUgdGV4dCBmb3IgYW4gaW1hZ2UsIGlmIHRoZSBpbWFnZSBjYW5ub3QgYmUgZGlzcGxheWVkLlxuICAgKiBAcGFyYW0gSW1hZ2UgaW1hZ2UgdG8gZ2V0IGl0cyBhbHQgZGVzY3JpcHRpb24uXG4gICAqIEByZXR1cm5zIHN0cmluZyBhbHQgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlXG4gICAqL1xuICBnZXRBbHRQbGFpbkRlc2NyaXB0aW9uQnlJbWFnZShpbWFnZTogSW1hZ2UpOiBzdHJpbmcge1xuICAgIGlmICghaW1hZ2UpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGltYWdlLnBsYWluICYmIGltYWdlLnBsYWluLmRlc2NyaXB0aW9uID8gaW1hZ2UucGxhaW4uZGVzY3JpcHRpb24gOiBgSW1hZ2UgJHtnZXRJbmRleChpbWFnZSwgdGhpcy5pbWFnZXMpICsgMX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBnZXQgdGhlIHRpdGxlIGZvciBhbiBpbWFnZS5cbiAgICogQHBhcmFtIEltYWdlIGltYWdlIHRvIGdldCBpdHMgdGl0bGVcbiAgICogQHJldHVybnMgc3RyaW5nIHRoZSB0aXRsZSBvZiB0aGUgaW5wdXQgaW1hZ2VcbiAgICovXG4gIGdldFRpdGxlRGlzcGxheShpbWFnZTogSW1hZ2UpOiBzdHJpbmcge1xuICAgIGxldCBkZXNjcmlwdGlvbiA9ICcnO1xuXG4gICAgaWYgKGltYWdlLnBsYWluICYmIGltYWdlLnBsYWluLmRlc2NyaXB0aW9uKSB7XG4gICAgICBkZXNjcmlwdGlvbiA9IGltYWdlLnBsYWluLmRlc2NyaXB0aW9uO1xuICAgIH0gZWxzZSBpZiAoaW1hZ2UubW9kYWwgJiYgaW1hZ2UubW9kYWwuZGVzY3JpcHRpb24pIHtcbiAgICAgIGRlc2NyaXB0aW9uID0gaW1hZ2UubW9kYWwuZGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudEluZGV4OiBudW1iZXIgPSBnZXRJbmRleChpbWFnZSwgdGhpcy5pbWFnZXMpO1xuICAgIGNvbnN0IHByZXZEZXNjcmlwdGlvbjogc3RyaW5nID0gJ0ltYWdlICcgKyAoY3VycmVudEluZGV4ICsgMSkgKyAnLycgKyB0aGlzLmltYWdlcy5sZW5ndGg7XG4gICAgbGV0IGN1cnJJbWdEZXNjcmlwdGlvbjogc3RyaW5nID0gZGVzY3JpcHRpb24gPyBkZXNjcmlwdGlvbiA6ICcnO1xuXG4gICAgaWYgKGN1cnJJbWdEZXNjcmlwdGlvbiAhPT0gJycpIHtcbiAgICAgIGN1cnJJbWdEZXNjcmlwdGlvbiA9ICcgLSAnICsgY3VyckltZ0Rlc2NyaXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gcHJldkRlc2NyaXB0aW9uICsgY3VyckltZ0Rlc2NyaXB0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGluIHRoZSB0ZW1wbGF0ZSB0byB0cmFjayBpZHMgaW4gbmdGb3IuXG4gICAqIEBwYXJhbSBudW1iZXIgaW5kZXggb2YgdGhlIGFycmF5XG4gICAqIEBwYXJhbSBJbWFnZSBpdGVtIG9mIHRoZSBhcnJheVxuICAgKiBAcmV0dXJucyBudW1iZXIgdGhlIGlkIG9mIHRoZSBpdGVtXG4gICAqL1xuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgaXRlbTogSW1hZ2UpOiBudW1iZXIge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgd2hlbiB5b3UgY2xpY2sgb24gYW4gaW1hZ2Ugb2YgdGhlIHBsYWluIChvciBpbmxpbmUpIGdhbGxlcnkuXG4gICAqIFRoaXMgd2lsbCBlbWl0IHRoZSBzaG93IGV2ZW50IHdpdGggdGhlIGluZGV4IG51bWJlciBhcyBwYXlsb2FkLlxuICAgKiBAcGFyYW0gbnVtYmVyIGluZGV4IG9mIHRoZSBjbGlja2VkIGltYWdlXG4gICAqL1xuICBwcml2YXRlIHNob3dNb2RhbEdhbGxlcnkoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tJbWFnZS5lbWl0KGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBpbml0IGJvdGggYGltYWdlR3JpZGAgYW5kIG90aGVyIHN0eWxlIHZhcmlhYmxlcyxcbiAgICogYmFzZWQgb24gdGhlIGxheW91dCB0eXBlLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0SW1hZ2VHcmlkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wbGFpbkdhbGxlcnlDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIHBsYWluR2FsbGVyeUNvbmZpZyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICAvLyByZXNldCB0aGUgYXJyYXkgdG8gcHJldmVudCBpc3N1ZXMgaW4gY2FzZSBvZiBHcmlkTGF5b3V0XG4gICAgdGhpcy5pbWFnZUdyaWQgPSBbXTtcblxuICAgIGlmICh0aGlzLnBsYWluR2FsbGVyeUNvbmZpZy5sYXlvdXQgaW5zdGFuY2VvZiBMaW5lTGF5b3V0KSB7XG4gICAgICBjb25zdCBsYXlvdXQ6IExpbmVMYXlvdXQgPSB0aGlzLnBsYWluR2FsbGVyeUNvbmZpZy5sYXlvdXQ7XG4gICAgICBjb25zdCByb3c6IEltYWdlW10gPSB0aGlzLmltYWdlcy5maWx0ZXIoKHZhbDogSW1hZ2UsIGk6IG51bWJlcikgPT4gaSA8IGxheW91dC5icmVha0NvbmZpZy5sZW5ndGggfHwgbGF5b3V0LmJyZWFrQ29uZmlnLmxlbmd0aCA9PT0gLTEpO1xuICAgICAgdGhpcy5pbWFnZUdyaWQgPSBbcm93XTtcblxuICAgICAgdGhpcy5zaXplID0gdGhpcy5wbGFpbkdhbGxlcnlDb25maWcubGF5b3V0LnNpemU7XG5cbiAgICAgIHN3aXRjaCAodGhpcy5wbGFpbkdhbGxlcnlDb25maWcuc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSBQbGFpbkdhbGxlcnlTdHJhdGVneS5ST1c6XG4gICAgICAgICAgdGhpcy5kaXJlY3Rpb25TdHlsZSA9ICdyb3cnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFBsYWluR2FsbGVyeVN0cmF0ZWd5LkNPTFVNTjpcbiAgICAgICAgICB0aGlzLmRpcmVjdGlvblN0eWxlID0gJ2NvbHVtbic7XG4gICAgICAgICAgdGhpcy53cmFwU3R5bGUgPSBsYXlvdXQuYnJlYWtDb25maWcud3JhcDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuanVzdGlmeVN0eWxlID0gbGF5b3V0Lmp1c3RpZnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGxhaW5HYWxsZXJ5Q29uZmlnLmxheW91dCBpbnN0YW5jZW9mIEdyaWRMYXlvdXQpIHtcbiAgICAgIGNvbnN0IGxheW91dDogR3JpZExheW91dCA9IHRoaXMucGxhaW5HYWxsZXJ5Q29uZmlnLmxheW91dDtcbiAgICAgIGNvbnN0IGNvdW50OiBudW1iZXIgPSBNYXRoLmNlaWwodGhpcy5pbWFnZXMubGVuZ3RoIC8gbGF5b3V0LmJyZWFrQ29uZmlnLmxlbmd0aCk7XG4gICAgICBsZXQgc3RhcnQgPSAwO1xuICAgICAgbGV0IGVuZDogbnVtYmVyID0gbGF5b3V0LmJyZWFrQ29uZmlnLmxlbmd0aCAtIDE7XG5cbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICBjb25zdCByb3c6IEltYWdlW10gPSB0aGlzLmltYWdlcy5maWx0ZXIoKHZhbDogSW1hZ2UsIGk6IG51bWJlcikgPT4gaSA+PSBzdGFydCAmJiBpIDw9IGVuZCk7XG4gICAgICAgIHRoaXMuaW1hZ2VHcmlkLnB1c2gocm93KTtcbiAgICAgICAgc3RhcnQgPSBlbmQgKyAxO1xuICAgICAgICBlbmQgPSBzdGFydCArIGxheW91dC5icmVha0NvbmZpZy5sZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNpemUgPSB0aGlzLnBsYWluR2FsbGVyeUNvbmZpZy5sYXlvdXQuc2l6ZTtcblxuICAgICAgY29uc3QgcGl4ZWxzOiBudW1iZXIgPSArbGF5b3V0LnNpemUud2lkdGgucmVwbGFjZSgncHgnLCAnJyk7XG5cbiAgICAgIHRoaXMud2lkdGhTdHlsZSA9IHBpeGVscyAqIGxheW91dC5icmVha0NvbmZpZy5sZW5ndGggKyBwaXhlbHMgLyAyICsgJ3B4JztcbiAgICAgIHRoaXMud3JhcFN0eWxlID0gbGF5b3V0LmJyZWFrQ29uZmlnLndyYXA7XG5cbiAgICAgIHRoaXMuZGlyZWN0aW9uU3R5bGUgPSAncm93JztcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwbGFpbi1jb250YWluZXJcIlxuICAgICBrc1dyYXAgW3dyYXBdPVwid3JhcFN0eWxlXCIgW3dpZHRoXT1cIndpZHRoU3R5bGVcIlxuICAgICBrc0RpcmVjdGlvbiBbZGlyZWN0aW9uXT1cImRpcmVjdGlvblN0eWxlXCIgW2p1c3RpZnldPVwianVzdGlmeVN0eWxlXCJcbiAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY2Nlc3NpYmlsaXR5Q29uZmlnPy5wbGFpbkdhbGxlcnlDb250ZW50QXJpYUxhYmVsXCJcbiAgICAgW3RpdGxlXT1cImFjY2Vzc2liaWxpdHlDb25maWc/LnBsYWluR2FsbGVyeUNvbnRlbnRUaXRsZVwiPlxuXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltZ1JvdyBvZiBpbWFnZUdyaWQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWdDb2wgb2YgaW1nUm93OyBsZXQgaiA9IGluZGV4XCI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcGxhaW5HYWxsZXJ5Q29uZmlnPy5hZHZhbmNlZD8uYVRhZ3M7IGVsc2UgYVRhZ3NcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cImltZ0NvbD8ubW9kYWw/LmltZ1wiXG4gICAgICAgICAgICAgW3NyY109XCJpbWdDb2wucGxhaW4/LmltZyEgPyBpbWdDb2wucGxhaW4/LmltZyEgOiBpbWdDb2wubW9kYWwuaW1nXCJcbiAgICAgICAgICAgICBrc0ZhbGxiYWNrSW1hZ2UgW2ZhbGxiYWNrSW1nXT1cImltZ0NvbC5wbGFpbj8uZmFsbGJhY2tJbWcgPyBpbWdDb2wucGxhaW4/LmZhbGxiYWNrSW1nIDogaW1nQ29sLm1vZGFsLmZhbGxiYWNrSW1nXCJcbiAgICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcbiAgICAgICAgICAgICBrc1NpemUgW3NpemVDb25maWddPVwie3dpZHRoOiBzaXplPy53aWR0aCEsIGhlaWdodDogc2l6ZT8uaGVpZ2h0IX1cIlxuICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaW1nQ29sLnBsYWluPy5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgIFt0aXRsZV09XCIoaW1nQ29sLnBsYWluPy50aXRsZSB8fCBpbWdDb2wucGxhaW4/LnRpdGxlID09PSAnJykgPyBpbWdDb2wucGxhaW4/LnRpdGxlIDogZ2V0VGl0bGVEaXNwbGF5KGltZ0NvbClcIlxuICAgICAgICAgICAgIGFsdD1cInt7aW1nQ29sLnBsYWluPy5hbHQhID8gaW1nQ29sLnBsYWluPy5hbHQhIDogZ2V0QWx0UGxhaW5EZXNjcmlwdGlvbkJ5SW1hZ2UoaW1nQ29sKX19XCJcbiAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiMFwiIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgIChjbGljayk9XCJzaG93TW9kYWxHYWxsZXJ5QnlJbWFnZShpbWdDb2wpXCIgKGtleXVwKT1cIm9uTmF2aWdhdGlvbkV2ZW50KCRldmVudCwgaW1nQ29sKVwiLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEFkZCBkaXJlY3RpdmUgdG8gc2V0IGJhY2tncm91bmQgd2l0aCB0aGUgaW1hZ2UgdXJsIGFzIHBhcmFtIHRvIHBhc3MgdGh1bWIgb3IgaW1nLS0+XG4gICAgICA8IS0tIHRvIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMgPGEgc3R5bGU9XCJiYWNrZ3JvdW5kOiB1cmwoJ3BhdGggdG8gaW1hZ2UnKSA1MCUgNTAlL2NvdmVyXCI+Li0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNhVGFncz5cbiAgICAgICAgPGEgKm5nSWY9XCJpbWdDb2w/Lm1vZGFsPy5pbWdcIlxuICAgICAgICAgICBjbGFzcz1cImEtdGFnLWltYWdlXCJcbiAgICAgICAgICAga3NBVGFnQmdJbWFnZSBbaW1hZ2VdPVwiaW1nQ29sXCIgW3N0eWxlXT1cInBsYWluR2FsbGVyeUNvbmZpZz8uYWR2YW5jZWQ/LmFkZGl0aW9uYWxCYWNrZ3JvdW5kXCJcbiAgICAgICAgICAga3NTaXplIFtzaXplQ29uZmlnXT1cInt3aWR0aDogc2l6ZT8ud2lkdGghLCBoZWlnaHQ6IHNpemU/LmhlaWdodCF9XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpbWdDb2wucGxhaW4/LmFyaWFMYWJlbFwiXG4gICAgICAgICAgIFt0aXRsZV09XCIoaW1nQ29sLnBsYWluPy50aXRsZSB8fCBpbWdDb2wucGxhaW4/LnRpdGxlID09PSAnJykgPyBpbWdDb2wucGxhaW4/LnRpdGxlIDogZ2V0VGl0bGVEaXNwbGF5KGltZ0NvbClcIlxuICAgICAgICAgICBbdGFiSW5kZXhdPVwiMFwiXG4gICAgICAgICAgIChjbGljayk9XCJzaG93TW9kYWxHYWxsZXJ5QnlJbWFnZShpbWdDb2wpXCIgKGtleXVwKT1cIm9uTmF2aWdhdGlvbkV2ZW50KCRldmVudCwgaW1nQ29sKVwiPjwvYT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PlxuXG4iXX0=
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaW4tZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvcGxhaW4tZ2FsbGVyeS9wbGFpbi1nYWxsZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy9wbGFpbi1nYWxsZXJ5L3BsYWluLWdhbGxlcnkuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUtoSixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBc0Isb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU5SCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFHOUQ7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG1CQUFtQjtJQW1FNUQsWUFBb0IsYUFBNEI7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFEVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTNEaEQ7O1dBRUc7UUFFSCxXQUFNLEdBQVksRUFBRSxDQUFDO1FBT3JCOztXQUVHO1FBRUgsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBYTlEOzs7V0FHRztRQUNILGNBQVMsR0FBYyxFQUFFLENBQUM7UUFLMUI7Ozs7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RCxNQUFNLE1BQU0sR0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDekUsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUV6QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNILENBQUM7O2tIQWhRVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixxTUNsRGxDLDBzRUF3Q0E7MkZEVWEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNO29HQVEvQyxFQUFFO3NCQURELEtBQUs7Z0JBT04sTUFBTTtzQkFETCxLQUFLO2dCQU1OLE1BQU07c0JBREwsS0FBSztnQkFPTixVQUFVO3NCQURULE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuXG4gQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgU3RlZmFubyBDYXBwYSAoS3M4OSlcblxuIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OIElORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2UsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2FjY2Vzc2liaWxpdHkuaW50ZXJmYWNlJztcbmltcG9ydCB7IEltYWdlIH0gZnJvbSAnLi4vLi4vbW9kZWwvaW1hZ2UuY2xhc3MnO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gJy4uLy4uL21vZGVsL3NpemUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRMYXlvdXQsIExpbmVMYXlvdXQsIFBsYWluR2FsbGVyeUNvbmZpZywgUGxhaW5HYWxsZXJ5U3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9tb2RlbC9wbGFpbi1nYWxsZXJ5LWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBnZXRJbmRleCB9IGZyb20gJy4uLy4uL3V0aWxzL2ltYWdlLnV0aWwnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IE5FWFQgfSBmcm9tICcuLi8uLi91dGlscy91c2VyLWlucHV0LnV0aWwnO1xuaW1wb3J0IHsgQWNjZXNzaWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2FjY2Vzc2libGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWluTGliQ29uZmlnLCBMaWJDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9saWItY29uZmlnLmludGVyZmFjZSc7XG5cbi8qKlxuICogQ29tcG9uZW50IHdpdGggdGhlIGdhbGxlcnkgb2YgdGh1bWJzLlxuICogSW4gcmVjZWl2ZXMgYW4gYXJyYXkgb2YgSW1hZ2VzLCBhIGJvb2xlYW4gdG8gc2hvdy9oaWRlXG4gKiB0aGUgZ2FsbGVyeSAoZmVhdHVyZSB1c2VkIGJ5IGltYWdlUG9pbnRlcikgYW5kIGEgY29uZmlnXG4gKiBvYmplY3QgdG8gY3VzdG9taXplIHRoZSBiZWhhdmlvdXIgb2YgdGhpcyBjb21wb25lbnQuXG4gKiBBbHNvLCBpdCBlbWl0cyBjbGljayBldmVudHMgYXMgb3V0cHV0cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna3MtcGxhaW4tZ2FsbGVyeScsXG4gIHN0eWxlVXJsczogWydwbGFpbi1nYWxsZXJ5LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICdwbGFpbi1nYWxsZXJ5Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQbGFpbkdhbGxlcnlDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogVW5pcXVlIGlkICg+PTApIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoaXMgbGlicmFyeS4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIHlvdSBhcmUgdXNpbmdcbiAgICogdGhlIHNlcnZpY2UgdG8gY2FsbCBtb2RhbCBnYWxsZXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgaWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQXJyYXkgb2YgYEltYWdlYCB0aGF0IHJlcHJlc2VudCB0aGUgbW9kZWwgb2YgdGhpcyBsaWJyYXJ5IHdpdGggYWxsIGltYWdlcywgdGh1bWJzIGFuZCBzbyBvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGltYWdlczogSW1hZ2VbXSA9IFtdO1xuICAvKipcbiAgICogUGxhaW5MaWJDb25maWcgb2JqZWN0IHRvIGNvbmZpZ3VyZSBwbGFpbi1nYWxsZXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgY29uZmlnOiBQbGFpbkxpYkNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgYW4gZXZlbnQgd2hlbiBhbiBpbWFnZSBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGNsaWNrSW1hZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBQbGFpbkdhbGxlcnlDb25maWdgIHRvIGNvbmZpZ3VyZSB0aGUgcGxhaW4gZ2FsbGVyeS5cbiAgICovXG4gIHBsYWluR2FsbGVyeUNvbmZpZzogUGxhaW5HYWxsZXJ5Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgQWNjZXNzaWJpbGl0eUNvbmZpZ2AgdG8gaW5pdCBjdXN0b20gYWNjZXNzaWJpbGl0eSBmZWF0dXJlcy5cbiAgICogRm9yIGluc3RhbmNlLCBpdCBjb250YWlucyB0aXRsZXMsIGFsdCB0ZXh0cywgYXJpYS1sYWJlbHMgYW5kIHNvIG9uLlxuICAgKi9cbiAgYWNjZXNzaWJpbGl0eUNvbmZpZzogQWNjZXNzaWJpbGl0eUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQmktZGltZW5zaW9uYWwgYXJyYXkgb2YgYEltYWdlYCBvYmplY3QgdG8gc3RvcmUgaW1hZ2VzIHRvIGRpc3BsYXkgYXMgcGxhaW4gZ2FsbGVyeS5cbiAgICogW10gYnkgZGVmYXVsdC5cbiAgICovXG4gIGltYWdlR3JpZDogSW1hZ2VbXVtdID0gW107XG4gIC8qKlxuICAgKiBTaXplIG9iamVjdCB1c2VkIGluIHRoZSB0ZW1wbGF0ZSB0byByZXNpemUgaW1hZ2VzLlxuICAgKi9cbiAgc2l6ZTogU2l6ZSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEJvb2xlYW4gcGFzc2VkIGFzIGlucHV0IHRvIGBrcy13cmFwYCBkaXJlY3RpdmUgdG8gY29uZmlndXJlIGZsZXgtd3JhcCBjc3MgcHJvcGVydHkuXG4gICAqIEhvd2V2ZXIgaXQncyBub3QgZW5vdWdoLCBiZWNhdXNlIHlvdSBuZWVkIHRvIGxpbWl0IHRoZSB3aWR0aCB1c2luZyBgd2lkdGhTdHlsZWAgcHVibGljIHZhcmlhYmxlLlxuICAgKiBGb3IgbW9yZSBpbmZvIGNoZWNrIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2l0L2RvY3MvV2ViL0NTUy9mbGV4LXdyYXBcbiAgICovXG4gIHdyYXBTdHlsZSA9IGZhbHNlO1xuICAvKipcbiAgICogU3RyaW5nIHBhc3NlZCBhcyBpbnB1dCB0byBga3Mtd3JhcGAgZGlyZWN0aXZlIHRvIHNldCB3aWR0aCB0byBiZSBhYmxlIHRvIGZvcmNlIG92ZXJmbG93LlxuICAgKiBJbiB0aGlzIHdheSwgYHdyYXBTdHlsZWAgKGZsZXgtd3JhcCBjc3MgcHJvcGVydHkpIHdpbGwgYmUgdXNlZCBhcyByZXF1ZXN0ZWQuXG4gICAqL1xuICB3aWR0aFN0eWxlID0gJyc7XG4gIC8qKlxuICAgKiBTdHJpbmcgcGFzc2VkIGFzIGlucHV0IHRvIGBrcy1kaXJlY3Rpb25gIGRpcmVjdGl2ZSB0byBzZXQgdGhlIGZsZXgtZGlyZWN0aW9uIGNzcyBwcm9wZXJ0eS5cbiAgICogRm9yIG1vcmUgaW5mbyBjaGVjayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9pdC9kb2NzL1dlYi9DU1MvZmxleC1kaXJlY3Rpb25cbiAgICovXG4gIGRpcmVjdGlvblN0eWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBTdHJpbmcgcGFzc2VkIGFzIGlucHV0IHRvIGBrcy1kaXJlY3Rpb25gIGRpcmVjdGl2ZSB0byBzZXQgdGhlIGp1c3RpZnktY29udGVudCBjc3MgcHJvcGVydHkuXG4gICAqIEZvciBtb3JlIGluZm8gY2hlY2sgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvaXQvZG9jcy9XZWIvQ1NTL2p1c3RpZnktY29udGVudFxuICAgKi9cbiAganVzdGlmeVN0eWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgwrRuZ09uSW5pdMK0IHRvIGluaXQgYm90aCBgY29uZmlnUGxhaW5HYWxsZXJ5YCBjYWxsaW5nIGBpbml0UGxhaW5HYWxsZXJ5Q29uZmlnKClgXG4gICAqIGFuZCBgaW1hZ2VHcmlkIGludm9raW5nIGBpbml0SW1hZ2VHcmlkKClgLlxuICAgKiBUaGlzIGlzIGFuIEFuZ3VsYXIncyBsaWZlY3ljbGUgaG9vaywgc28gaXRzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IEFuZ3VsYXIgaXRzZWxmLlxuICAgKiBJbiBwYXJ0aWN1bGFyLCBpdCdzIGNhbGxlZCBvbmx5IG9uZSB0aW1lISEhXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZCA9PT0gbnVsbCB8fCB0aGlzLmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGlkIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuaWQsIHRoaXMuY29uZmlnKTtcblxuICAgIGNvbnN0IGxpYkNvbmZpZzogTGliQ29uZmlnIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZyh0aGlzLmlkKTtcbiAgICBpZiAoIWxpYkNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIC0gbGliQ29uZmlnIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICB0aGlzLmFjY2Vzc2liaWxpdHlDb25maWcgPSBsaWJDb25maWcuYWNjZXNzaWJpbGl0eUNvbmZpZztcbiAgICB0aGlzLnBsYWluR2FsbGVyeUNvbmZpZyA9IGxpYkNvbmZpZy5wbGFpbkdhbGxlcnlDb25maWc7XG4gICAgdGhpcy5pbml0SW1hZ2VHcmlkKCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIMK0bmdPbkNoYW5nZXPCtCB0byB1cGRhdGUgYm90aCBgaW1hZ2VHcmlkYCBhbmRgcGxhaW5HYWxsZXJ5Q29uZmlnYC5cbiAgICogVGhpcyBpcyBhbiBBbmd1bGFyJ3MgbGlmZWN5Y2xlIGhvb2ssIHNvIGl0cyBjYWxsZWQgYXV0b21hdGljYWxseSBieSBBbmd1bGFyIGl0c2VsZi5cbiAgICogSW4gcGFydGljdWxhciwgaXQncyBjYWxsZWQgd2hlbiBhbnkgZGF0YS1ib3VuZCBwcm9wZXJ0eSBvZiBhIGRpcmVjdGl2ZSBjaGFuZ2VzISEhXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaWQgPT09IG51bGwgfHwgdGhpcy5pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBpZCBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgY29uc3QgbGliQ29uZmlnOiBMaWJDb25maWcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKHRoaXMuaWQpO1xuICAgIGlmICghbGliQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBsaWJDb25maWcgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VzQ2hhbmdlOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLmltYWdlcztcbiAgICBjb25zdCBjb25maWdDaGFuZ2U6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMucGxhaW5HYWxsZXJ5Q29uZmlnO1xuXG4gICAgLy8gSSdtIHVzaW5nICFjaGFuZ2UuZmlyc3RDaGFuZ2UgYmVjYXVzZSB0aGUgZmlyc3QgdGltZSB3aWxsIGJlIGNhbGxlZCBib3RoIG9uSW5pdCBhbmQgb25DaGFuZ2UgYW5kIEkgZG9uJ3RcbiAgICAvLyB3YW50IHRvIGV4ZWN1dGUgaW5pdGlhbGl6YXRpb24gdHdvIHRpbWVzLlxuICAgIGlmIChcbiAgICAgIGNvbmZpZ0NoYW5nZSAmJlxuICAgICAgIWNvbmZpZ0NoYW5nZS5maXJzdENoYW5nZSAmJlxuICAgICAgKGNvbmZpZ0NoYW5nZS5wcmV2aW91c1ZhbHVlICE9PSBjb25maWdDaGFuZ2UuY3VycmVudFZhbHVlIHx8ICghY29uZmlnQ2hhbmdlLnByZXZpb3VzVmFsdWUgJiYgIWNvbmZpZ0NoYW5nZS5jdXJyZW50VmFsdWUpKVxuICAgICkge1xuICAgICAgdGhpcy5wbGFpbkdhbGxlcnlDb25maWcgPSBsaWJDb25maWcucGxhaW5HYWxsZXJ5Q29uZmlnO1xuICAgICAgLy8gdGhpcy5jb25maWdQbGFpbkdhbGxlcnkgPSB0aGlzLmluaXRQbGFpbkdhbGxlcnlDb25maWcoKTtcbiAgICB9XG4gICAgaWYgKGltYWdlc0NoYW5nZSAmJiAhaW1hZ2VzQ2hhbmdlLmZpcnN0Q2hhbmdlICYmIGltYWdlc0NoYW5nZS5wcmV2aW91c1ZhbHVlICE9PSBpbWFnZXNDaGFuZ2UuY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmluaXRJbWFnZUdyaWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCB3aGVuIHlvdSBjbGljayBvbiBhbiBpbWFnZSBvZiB0aGUgcGxhaW4gKG9yIGlubGluZSkgZ2FsbGVyeS5cbiAgICogVGhpcyB3aWxsIGVtaXQgdGhlIHNob3cgZXZlbnQgd2l0aCB0aGUgaW1hZ2UgYXMgcGF5bG9hZC5cbiAgICogQHBhcmFtIEltYWdlIGltZyBpcyB0aGUgSW1hZ2UgdG8gc2hvd1xuICAgKi9cbiAgc2hvd01vZGFsR2FsbGVyeUJ5SW1hZ2UoaW1nOiBJbWFnZSk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLmltYWdlcy5maW5kSW5kZXgoKHZhbDogSW1hZ2UpID0+IHZhbCAmJiBpbWcgJiYgdmFsLmlkID09PSBpbWcuaWQpO1xuICAgIHRoaXMuc2hvd01vZGFsR2FsbGVyeShpbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCB3aGVuIHlvdSBuYXZpZ2F0ZSBiZXR3ZWVuIGltYWdlcy5cbiAgICogVGhpcyB3aWxsIGVtaXQgdGhlIHNob3cgZXZlbnQgd2l0aCB0aGUgaW1hZ2UgYXMgcGF5bG9hZC5cbiAgICogQHBhcmFtIEtleWJvYXJkRXZlbnQgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIG5hdmlnYXRpb25cbiAgICogQHBhcmFtIEltYWdlIGltZyBpcyB0aGUgSW1hZ2UgdG8gc2hvd1xuICAgKi9cbiAgb25OYXZpZ2F0aW9uRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGltZzogSW1hZ2UpOiB2b2lkIHtcbiAgICBjb25zdCByZXN1bHQ6IG51bWJlciA9IHN1cGVyLmhhbmRsZUltYWdlRXZlbnQoZXZlbnQpO1xuICAgIGlmIChyZXN1bHQgPT09IE5FWFQpIHtcbiAgICAgIHRoaXMuc2hvd01vZGFsR2FsbGVyeUJ5SW1hZ2UoaW1nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGdldCBgYWx0IGF0dHJpYnV0ZWAuXG4gICAqIGBhbHRgIHNwZWNpZmllcyBhbiBhbHRlcm5hdGUgdGV4dCBmb3IgYW4gaW1hZ2UsIGlmIHRoZSBpbWFnZSBjYW5ub3QgYmUgZGlzcGxheWVkLlxuICAgKiBAcGFyYW0gSW1hZ2UgaW1hZ2UgdG8gZ2V0IGl0cyBhbHQgZGVzY3JpcHRpb24uXG4gICAqIEByZXR1cm5zIHN0cmluZyBhbHQgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlXG4gICAqL1xuICBnZXRBbHRQbGFpbkRlc2NyaXB0aW9uQnlJbWFnZShpbWFnZTogSW1hZ2UpOiBzdHJpbmcge1xuICAgIGlmICghaW1hZ2UpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGltYWdlLnBsYWluICYmIGltYWdlLnBsYWluLmRlc2NyaXB0aW9uID8gaW1hZ2UucGxhaW4uZGVzY3JpcHRpb24gOiBgSW1hZ2UgJHtnZXRJbmRleChpbWFnZSwgdGhpcy5pbWFnZXMpICsgMX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBnZXQgdGhlIHRpdGxlIGZvciBhbiBpbWFnZS5cbiAgICogQHBhcmFtIEltYWdlIGltYWdlIHRvIGdldCBpdHMgdGl0bGVcbiAgICogQHJldHVybnMgc3RyaW5nIHRoZSB0aXRsZSBvZiB0aGUgaW5wdXQgaW1hZ2VcbiAgICovXG4gIGdldFRpdGxlRGlzcGxheShpbWFnZTogSW1hZ2UpOiBzdHJpbmcge1xuICAgIGxldCBkZXNjcmlwdGlvbiA9ICcnO1xuXG4gICAgaWYgKGltYWdlLnBsYWluICYmIGltYWdlLnBsYWluLmRlc2NyaXB0aW9uKSB7XG4gICAgICBkZXNjcmlwdGlvbiA9IGltYWdlLnBsYWluLmRlc2NyaXB0aW9uO1xuICAgIH0gZWxzZSBpZiAoaW1hZ2UubW9kYWwgJiYgaW1hZ2UubW9kYWwuZGVzY3JpcHRpb24pIHtcbiAgICAgIGRlc2NyaXB0aW9uID0gaW1hZ2UubW9kYWwuZGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudEluZGV4OiBudW1iZXIgPSBnZXRJbmRleChpbWFnZSwgdGhpcy5pbWFnZXMpO1xuICAgIGNvbnN0IHByZXZEZXNjcmlwdGlvbjogc3RyaW5nID0gJ0ltYWdlICcgKyAoY3VycmVudEluZGV4ICsgMSkgKyAnLycgKyB0aGlzLmltYWdlcy5sZW5ndGg7XG4gICAgbGV0IGN1cnJJbWdEZXNjcmlwdGlvbjogc3RyaW5nID0gZGVzY3JpcHRpb24gPyBkZXNjcmlwdGlvbiA6ICcnO1xuXG4gICAgaWYgKGN1cnJJbWdEZXNjcmlwdGlvbiAhPT0gJycpIHtcbiAgICAgIGN1cnJJbWdEZXNjcmlwdGlvbiA9ICcgLSAnICsgY3VyckltZ0Rlc2NyaXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gcHJldkRlc2NyaXB0aW9uICsgY3VyckltZ0Rlc2NyaXB0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGluIHRoZSB0ZW1wbGF0ZSB0byB0cmFjayBpZHMgaW4gbmdGb3IuXG4gICAqIEBwYXJhbSBudW1iZXIgaW5kZXggb2YgdGhlIGFycmF5XG4gICAqIEBwYXJhbSBJbWFnZSBpdGVtIG9mIHRoZSBhcnJheVxuICAgKiBAcmV0dXJucyBudW1iZXIgdGhlIGlkIG9mIHRoZSBpdGVtXG4gICAqL1xuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgaXRlbTogSW1hZ2UpOiBudW1iZXIge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgd2hlbiB5b3UgY2xpY2sgb24gYW4gaW1hZ2Ugb2YgdGhlIHBsYWluIChvciBpbmxpbmUpIGdhbGxlcnkuXG4gICAqIFRoaXMgd2lsbCBlbWl0IHRoZSBzaG93IGV2ZW50IHdpdGggdGhlIGluZGV4IG51bWJlciBhcyBwYXlsb2FkLlxuICAgKiBAcGFyYW0gbnVtYmVyIGluZGV4IG9mIHRoZSBjbGlja2VkIGltYWdlXG4gICAqL1xuICBwcml2YXRlIHNob3dNb2RhbEdhbGxlcnkoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY2xpY2tJbWFnZS5lbWl0KGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBpbml0IGJvdGggYGltYWdlR3JpZGAgYW5kIG90aGVyIHN0eWxlIHZhcmlhYmxlcyxcbiAgICogYmFzZWQgb24gdGhlIGxheW91dCB0eXBlLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0SW1hZ2VHcmlkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wbGFpbkdhbGxlcnlDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIHBsYWluR2FsbGVyeUNvbmZpZyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICAvLyByZXNldCB0aGUgYXJyYXkgdG8gcHJldmVudCBpc3N1ZXMgaW4gY2FzZSBvZiBHcmlkTGF5b3V0XG4gICAgdGhpcy5pbWFnZUdyaWQgPSBbXTtcblxuICAgIGlmICh0aGlzLnBsYWluR2FsbGVyeUNvbmZpZy5sYXlvdXQgaW5zdGFuY2VvZiBMaW5lTGF5b3V0KSB7XG4gICAgICBjb25zdCBsYXlvdXQ6IExpbmVMYXlvdXQgPSB0aGlzLnBsYWluR2FsbGVyeUNvbmZpZy5sYXlvdXQ7XG4gICAgICBjb25zdCByb3c6IEltYWdlW10gPSB0aGlzLmltYWdlcy5maWx0ZXIoKHZhbDogSW1hZ2UsIGk6IG51bWJlcikgPT4gaSA8IGxheW91dC5icmVha0NvbmZpZy5sZW5ndGggfHwgbGF5b3V0LmJyZWFrQ29uZmlnLmxlbmd0aCA9PT0gLTEpO1xuICAgICAgdGhpcy5pbWFnZUdyaWQgPSBbcm93XTtcblxuICAgICAgdGhpcy5zaXplID0gdGhpcy5wbGFpbkdhbGxlcnlDb25maWcubGF5b3V0LnNpemU7XG5cbiAgICAgIHN3aXRjaCAodGhpcy5wbGFpbkdhbGxlcnlDb25maWcuc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSBQbGFpbkdhbGxlcnlTdHJhdGVneS5ST1c6XG4gICAgICAgICAgdGhpcy5kaXJlY3Rpb25TdHlsZSA9ICdyb3cnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFBsYWluR2FsbGVyeVN0cmF0ZWd5LkNPTFVNTjpcbiAgICAgICAgICB0aGlzLmRpcmVjdGlvblN0eWxlID0gJ2NvbHVtbic7XG4gICAgICAgICAgdGhpcy53cmFwU3R5bGUgPSBsYXlvdXQuYnJlYWtDb25maWcud3JhcDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuanVzdGlmeVN0eWxlID0gbGF5b3V0Lmp1c3RpZnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGxhaW5HYWxsZXJ5Q29uZmlnLmxheW91dCBpbnN0YW5jZW9mIEdyaWRMYXlvdXQpIHtcbiAgICAgIGNvbnN0IGxheW91dDogR3JpZExheW91dCA9IHRoaXMucGxhaW5HYWxsZXJ5Q29uZmlnLmxheW91dDtcbiAgICAgIGNvbnN0IGNvdW50OiBudW1iZXIgPSBNYXRoLmNlaWwodGhpcy5pbWFnZXMubGVuZ3RoIC8gbGF5b3V0LmJyZWFrQ29uZmlnLmxlbmd0aCk7XG4gICAgICBsZXQgc3RhcnQgPSAwO1xuICAgICAgbGV0IGVuZDogbnVtYmVyID0gbGF5b3V0LmJyZWFrQ29uZmlnLmxlbmd0aCAtIDE7XG5cbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICBjb25zdCByb3c6IEltYWdlW10gPSB0aGlzLmltYWdlcy5maWx0ZXIoKHZhbDogSW1hZ2UsIGk6IG51bWJlcikgPT4gaSA+PSBzdGFydCAmJiBpIDw9IGVuZCk7XG4gICAgICAgIHRoaXMuaW1hZ2VHcmlkLnB1c2gocm93KTtcbiAgICAgICAgc3RhcnQgPSBlbmQgKyAxO1xuICAgICAgICBlbmQgPSBzdGFydCArIGxheW91dC5icmVha0NvbmZpZy5sZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNpemUgPSB0aGlzLnBsYWluR2FsbGVyeUNvbmZpZy5sYXlvdXQuc2l6ZTtcblxuICAgICAgY29uc3QgcGl4ZWxzOiBudW1iZXIgPSArbGF5b3V0LnNpemUud2lkdGgucmVwbGFjZSgncHgnLCAnJyk7XG5cbiAgICAgIHRoaXMud2lkdGhTdHlsZSA9IHBpeGVscyAqIGxheW91dC5icmVha0NvbmZpZy5sZW5ndGggKyBwaXhlbHMgLyAyICsgJ3B4JztcbiAgICAgIHRoaXMud3JhcFN0eWxlID0gbGF5b3V0LmJyZWFrQ29uZmlnLndyYXA7XG5cbiAgICAgIHRoaXMuZGlyZWN0aW9uU3R5bGUgPSAncm93JztcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwbGFpbi1jb250YWluZXJcIlxuICAgICBrc1dyYXAgW3dyYXBdPVwid3JhcFN0eWxlXCIgW3dpZHRoXT1cIndpZHRoU3R5bGVcIlxuICAgICBrc0RpcmVjdGlvbiBbZGlyZWN0aW9uXT1cImRpcmVjdGlvblN0eWxlXCIgW2p1c3RpZnldPVwianVzdGlmeVN0eWxlXCJcbiAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY2Nlc3NpYmlsaXR5Q29uZmlnPy5wbGFpbkdhbGxlcnlDb250ZW50QXJpYUxhYmVsXCJcbiAgICAgW3RpdGxlXT1cImFjY2Vzc2liaWxpdHlDb25maWc/LnBsYWluR2FsbGVyeUNvbnRlbnRUaXRsZVwiPlxuXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltZ1JvdyBvZiBpbWFnZUdyaWQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWdDb2wgb2YgaW1nUm93OyBsZXQgaiA9IGluZGV4XCI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcGxhaW5HYWxsZXJ5Q29uZmlnPy5hZHZhbmNlZD8uYVRhZ3M7IGVsc2UgYVRhZ3NcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cImltZ0NvbD8ubW9kYWw/LmltZ1wiXG4gICAgICAgICAgICAgW3NyY109XCJpbWdDb2wucGxhaW4/LmltZyEgPyBpbWdDb2wucGxhaW4/LmltZyEgOiBpbWdDb2wubW9kYWwuaW1nXCJcbiAgICAgICAgICAgICBrc0ZhbGxiYWNrSW1hZ2UgW2ZhbGxiYWNrSW1nXT1cImltZ0NvbC5wbGFpbj8uZmFsbGJhY2tJbWcgPyBpbWdDb2wucGxhaW4/LmZhbGxiYWNrSW1nIDogaW1nQ29sLm1vZGFsLmZhbGxiYWNrSW1nXCJcbiAgICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcbiAgICAgICAgICAgICBrc1NpemUgW3NpemVDb25maWddPVwie3dpZHRoOiBzaXplPy53aWR0aCEsIGhlaWdodDogc2l6ZT8uaGVpZ2h0IX1cIlxuICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaW1nQ29sLnBsYWluPy5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgIFt0aXRsZV09XCIoaW1nQ29sLnBsYWluPy50aXRsZSB8fCBpbWdDb2wucGxhaW4/LnRpdGxlID09PSAnJykgPyBpbWdDb2wucGxhaW4/LnRpdGxlIDogZ2V0VGl0bGVEaXNwbGF5KGltZ0NvbClcIlxuICAgICAgICAgICAgIGFsdD1cInt7aW1nQ29sLnBsYWluPy5hbHQhID8gaW1nQ29sLnBsYWluPy5hbHQhIDogZ2V0QWx0UGxhaW5EZXNjcmlwdGlvbkJ5SW1hZ2UoaW1nQ29sKX19XCJcbiAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiMFwiIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgIChjbGljayk9XCJzaG93TW9kYWxHYWxsZXJ5QnlJbWFnZShpbWdDb2wpXCIgKGtleXVwKT1cIm9uTmF2aWdhdGlvbkV2ZW50KCRldmVudCwgaW1nQ29sKVwiLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEFkZCBkaXJlY3RpdmUgdG8gc2V0IGJhY2tncm91bmQgd2l0aCB0aGUgaW1hZ2UgdXJsIGFzIHBhcmFtIHRvIHBhc3MgdGh1bWIgb3IgaW1nLS0+XG4gICAgICA8IS0tIHRvIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMgPGEgc3R5bGU9XCJiYWNrZ3JvdW5kOiB1cmwoJ3BhdGggdG8gaW1hZ2UnKSA1MCUgNTAlL2NvdmVyXCI+Li0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNhVGFncz5cbiAgICAgICAgPGEgKm5nSWY9XCJpbWdDb2w/Lm1vZGFsPy5pbWdcIlxuICAgICAgICAgICBjbGFzcz1cImEtdGFnLWltYWdlXCJcbiAgICAgICAgICAga3NBVGFnQmdJbWFnZSBbaW1hZ2VdPVwiaW1nQ29sXCIgW3N0eWxlXT1cInBsYWluR2FsbGVyeUNvbmZpZz8uYWR2YW5jZWQ/LmFkZGl0aW9uYWxCYWNrZ3JvdW5kXCJcbiAgICAgICAgICAga3NTaXplIFtzaXplQ29uZmlnXT1cInt3aWR0aDogc2l6ZT8ud2lkdGghLCBoZWlnaHQ6IHNpemU/LmhlaWdodCF9XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpbWdDb2wucGxhaW4/LmFyaWFMYWJlbFwiXG4gICAgICAgICAgIFt0aXRsZV09XCIoaW1nQ29sLnBsYWluPy50aXRsZSB8fCBpbWdDb2wucGxhaW4/LnRpdGxlID09PSAnJykgPyBpbWdDb2wucGxhaW4/LnRpdGxlIDogZ2V0VGl0bGVEaXNwbGF5KGltZ0NvbClcIlxuICAgICAgICAgICBbdGFiSW5kZXhdPVwiMFwiXG4gICAgICAgICAgIChjbGljayk9XCJzaG93TW9kYWxHYWxsZXJ5QnlJbWFnZShpbWdDb2wpXCIgKGtleXVwKT1cIm9uTmF2aWdhdGlvbkV2ZW50KCRldmVudCwgaW1nQ29sKVwiPjwvYT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PlxuXG4iXX0=
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  The MIT License (MIT)
3
3
 
4
- Copyright (C) 2017-2021 Stefano Cappa (Ks89)
4
+ Copyright (C) 2017-2022 Stefano Cappa (Ks89)
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  of this software and associated documentation files (the "Software"), to deal
@@ -253,9 +253,9 @@ export class PreviewsComponent extends AccessibleComponent {
253
253
  this.previews = this.images.filter((img, i) => i >= this.start && i < this.end);
254
254
  }
255
255
  }
256
- PreviewsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PreviewsComponent, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
257
- PreviewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: PreviewsComponent, selector: "ks-previews", inputs: { id: "id", currentImage: "currentImage", images: "images", customTemplate: "customTemplate" }, outputs: { clickPreview: "clickPreview" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<nav class=\"previews-container\"\n [class.mobile-visible]=\"previewConfig?.mobileVisible\"\n [attr.aria-label]=\"accessibilityConfig?.previewsContainerAriaLabel\"\n [title]=\"accessibilityConfig?.previewsContainerTitle\">\n\n <ng-container *ngIf=\"previewConfig?.visible\">\n <a class=\"nav-left\"\n [attr.aria-label]=\"accessibilityConfig?.previewScrollPrevAriaLabel\"\n [tabIndex]=\"displayLeftPreviewsArrow() ? 0 : -1\" role=\"button\"\n (click)=\"onNavigationEvent('left', $event)\" (keyup)=\"onNavigationEvent('left', $event)\">\n <div class=\"inside {{ displayLeftPreviewsArrow() ? 'left-arrow-preview-image' : 'empty-arrow-preview-image'}}\"\n aria-hidden=\"true\"\n [title]=\"accessibilityConfig?.previewScrollPrevTitle\"></div>\n </a>\n\n <ng-container *ngFor=\"let preview of previews; trackBy: trackById; let index = index\">\n\n <div class=\"preview-container {{!previewConfig?.clickable ? ' unclickable' : ''}}\"\n (click)=\"onImageEvent(preview, $event, clickAction)\"\n (keyup)=\"onImageEvent(preview, $event, keyboardAction)\"\n >\n <ng-container \n *ngTemplateOutlet=\"!customTemplate ? defaultTemplate : customTemplate ; context:{preview, defaultTemplate}\">\n </ng-container>\n <ng-template #defaultTemplate>\n <img *ngIf=\"preview?.modal?.img\"\n class=\"inside preview-image {{isActive(preview) ? 'active' : ''}}\"\n [src]=\"preview.plain?.img ? preview.plain?.img! : preview.modal.img\"\n ksFallbackImage [fallbackImg]=\"preview.plain?.fallbackImg ? preview.plain?.fallbackImg : preview.modal.fallbackImg\"\n ksSize [sizeConfig]=\"{width: previewConfig?.size ? previewConfig?.size?.width! : defaultPreviewSize.width,\n height: previewConfig?.size ? previewConfig?.size?.height! : defaultPreviewSize.height}\"\n [attr.aria-label]=\"preview.modal.ariaLabel ? preview.modal.ariaLabel : ''\"\n [title]=\"(preview.modal.title || preview.modal.title === '') ? preview.modal.title : ''\"\n alt=\"{{preview.modal.alt ? preview.modal.alt : ''}}\"\n [tabIndex]=\"0\" role=\"img\"\n />\n </ng-template>\n </div>\n\n </ng-container>\n\n\n <a class=\"nav-right\"\n [attr.aria-label]=\"accessibilityConfig?.previewScrollNextAriaLabel\"\n [tabIndex]=\"displayRightPreviewsArrow() ? 0 : -1\" role=\"button\"\n (click)=\"onNavigationEvent('right', $event)\" (keyup)=\"onNavigationEvent('right', $event)\">\n <div class=\"inside {{ displayRightPreviewsArrow() ? 'right-arrow-preview-image' : 'empty-arrow-preview-image'}}\"\n aria-hidden=\"true\"\n [title]=\"accessibilityConfig?.previewScrollNextTitle\"></div>\n </a>\n </ng-container>\n\n</nav>\n", styles: ["@media only screen and (max-width: 767px),only screen and (max-device-width: 767px){.previews-container{display:none}.previews-container>.preview-image{display:none}.previews-container>.nav-left{display:none}.previews-container>.nav-right{display:none}.previews-container.mobile-visible{align-items:center;animation:fadein-semi-visible08 .8s;display:flex;flex-direction:row;justify-content:center;margin-bottom:15px}.previews-container.mobile-visible>.nav-left{display:flex}.previews-container.mobile-visible>.nav-right{display:flex}.previews-container.mobile-visible>.preview-image{cursor:pointer;display:flex;margin-left:2px;margin-right:2px;opacity:.7;height:50px}.previews-container.mobile-visible>.preview-image.active{opacity:1}.previews-container.mobile-visible>.preview-image.unclickable{cursor:not-allowed}.previews-container.mobile-visible>.preview-image:hover{opacity:1;transition:all .5s ease;transition-property:opacity}}@media only screen and (min-device-width: 768px){.previews-container{align-items:center;animation:fadein-semi-visible08 .8s;display:flex;flex-direction:row;justify-content:center;margin-bottom:15px}.previews-container .preview-container{margin-left:2px;margin-right:2px;cursor:pointer}.previews-container .preview-container.unclickable{cursor:not-allowed}.previews-container .preview-container .preview-image{opacity:.7;height:50px}.previews-container .preview-container .preview-image.active{opacity:1}.previews-container .preview-container .preview-image:hover{opacity:1;transition:all .5s ease;transition-property:opacity}.previews-container .nav,.previews-container>.nav-right,.previews-container>.nav-left{color:#919191;cursor:pointer;transition:all .5s}.previews-container .nav:hover,.previews-container>.nav-right:hover,.previews-container>.nav-left:hover{transform:scale(1.1)}.previews-container>.nav-left{margin-right:10px}.previews-container>.nav-right{margin-left:10px}}@keyframes fadein-visible{0%{opacity:0}to{opacity:1}}@keyframes fadein-semi-visible05{0%{opacity:0}to{opacity:.5}}@keyframes fadein-semi-visible08{0%{opacity:0}to{opacity:.8}}@keyframes fadein-semi-visible09{0%{opacity:0}to{opacity:.9}}\n", ".arrow-preview-image,.right-arrow-preview-image,.left-arrow-preview-image,.empty-arrow-preview-image{width:15px;height:15px;opacity:.5}.empty-arrow-preview-image{background:black;opacity:0}.left-arrow-preview-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3Ny4xNzUgNDc3LjE3NSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDc3LjE3NSA0NzcuMTc1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48cGF0aCBkPSJNMTQ1LjE4OCwyMzguNTc1bDIxNS41LTIxNS41YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xcy0xMy44LTUuMy0xOS4xLDBsLTIyNS4xLDIyNS4xYy01LjMsNS4zLTUuMywxMy44LDAsMTkuMWwyMjUuMSwyMjUgICBjMi42LDIuNiw2LjEsNCw5LjUsNHM2LjktMS4zLDkuNS00YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xTDE0NS4xODgsMjM4LjU3NXoiIGZpbGw9IiNGRkZGRkYiLz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+);background-size:15px;transition:all .5s}.left-arrow-preview-image:hover{transform:scale(1.2)}.right-arrow-preview-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3Ny4xNzUgNDc3LjE3NSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDc3LjE3NSA0NzcuMTc1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48cGF0aCBkPSJNMzYwLjczMSwyMjkuMDc1bC0yMjUuMS0yMjUuMWMtNS4zLTUuMy0xMy44LTUuMy0xOS4xLDBzLTUuMywxMy44LDAsMTkuMWwyMTUuNSwyMTUuNWwtMjE1LjUsMjE1LjUgICBjLTUuMyw1LjMtNS4zLDEzLjgsMCwxOS4xYzIuNiwyLjYsNi4xLDQsOS41LDRjMy40LDAsNi45LTEuMyw5LjUtNGwyMjUuMS0yMjUuMUMzNjUuOTMxLDI0Mi44NzUsMzY1LjkzMSwyMzQuMjc1LDM2MC43MzEsMjI5LjA3NXogICAiIGZpbGw9IiNGRkZGRkYiLz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+);background-size:15px;transition:all .5s}.right-arrow-preview-image:hover{transform:scale(1.2)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.SizeDirective, selector: "[ksSize]", inputs: ["sizeConfig"] }, { kind: "directive", type: i4.FallbackImageDirective, selector: "[ksFallbackImage]", inputs: ["fallbackImg"], outputs: ["fallbackApplied"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: PreviewsComponent, decorators: [{
256
+ PreviewsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: PreviewsComponent, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
257
+ PreviewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: PreviewsComponent, selector: "ks-previews", inputs: { id: "id", currentImage: "currentImage", images: "images", customTemplate: "customTemplate" }, outputs: { clickPreview: "clickPreview" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<nav class=\"previews-container\"\n [class.mobile-visible]=\"previewConfig?.mobileVisible\"\n [attr.aria-label]=\"accessibilityConfig?.previewsContainerAriaLabel\"\n [title]=\"accessibilityConfig?.previewsContainerTitle\">\n\n <ng-container *ngIf=\"previewConfig?.visible\">\n <a class=\"nav-left\"\n [attr.aria-label]=\"accessibilityConfig?.previewScrollPrevAriaLabel\"\n [tabIndex]=\"displayLeftPreviewsArrow() ? 0 : -1\" role=\"button\"\n (click)=\"onNavigationEvent('left', $event)\" (keyup)=\"onNavigationEvent('left', $event)\">\n <div class=\"inside {{ displayLeftPreviewsArrow() ? 'left-arrow-preview-image' : 'empty-arrow-preview-image'}}\"\n aria-hidden=\"true\"\n [title]=\"accessibilityConfig?.previewScrollPrevTitle\"></div>\n </a>\n\n <ng-container *ngFor=\"let preview of previews; trackBy: trackById; let index = index\">\n\n <div class=\"preview-container {{!previewConfig?.clickable ? ' unclickable' : ''}}\"\n (click)=\"onImageEvent(preview, $event, clickAction)\"\n (keyup)=\"onImageEvent(preview, $event, keyboardAction)\"\n >\n <ng-container \n *ngTemplateOutlet=\"!customTemplate ? defaultTemplate : customTemplate ; context:{preview, defaultTemplate}\">\n </ng-container>\n <ng-template #defaultTemplate>\n <img *ngIf=\"preview?.modal?.img\"\n class=\"inside preview-image {{isActive(preview) ? 'active' : ''}}\"\n [src]=\"preview.plain?.img ? preview.plain?.img! : preview.modal.img\"\n ksFallbackImage [fallbackImg]=\"preview.plain?.fallbackImg ? preview.plain?.fallbackImg : preview.modal.fallbackImg\"\n ksSize [sizeConfig]=\"{width: previewConfig?.size ? previewConfig?.size?.width! : defaultPreviewSize.width,\n height: previewConfig?.size ? previewConfig?.size?.height! : defaultPreviewSize.height}\"\n [attr.aria-label]=\"preview.modal.ariaLabel ? preview.modal.ariaLabel : ''\"\n [title]=\"(preview.modal.title || preview.modal.title === '') ? preview.modal.title : ''\"\n alt=\"{{preview.modal.alt ? preview.modal.alt : ''}}\"\n [tabIndex]=\"0\" role=\"img\"\n />\n </ng-template>\n </div>\n\n </ng-container>\n\n\n <a class=\"nav-right\"\n [attr.aria-label]=\"accessibilityConfig?.previewScrollNextAriaLabel\"\n [tabIndex]=\"displayRightPreviewsArrow() ? 0 : -1\" role=\"button\"\n (click)=\"onNavigationEvent('right', $event)\" (keyup)=\"onNavigationEvent('right', $event)\">\n <div class=\"inside {{ displayRightPreviewsArrow() ? 'right-arrow-preview-image' : 'empty-arrow-preview-image'}}\"\n aria-hidden=\"true\"\n [title]=\"accessibilityConfig?.previewScrollNextTitle\"></div>\n </a>\n </ng-container>\n\n</nav>\n", styles: ["@media only screen and (max-width: 767px),only screen and (max-device-width: 767px){.previews-container{display:none}.previews-container>.preview-image{display:none}.previews-container>.nav-left{display:none}.previews-container>.nav-right{display:none}.previews-container.mobile-visible{align-items:center;animation:fadein-semi-visible08 .8s;display:flex;flex-direction:row;justify-content:center;margin-bottom:15px}.previews-container.mobile-visible>.nav-left{display:flex}.previews-container.mobile-visible>.nav-right{display:flex}.previews-container.mobile-visible>.preview-image{cursor:pointer;display:flex;margin-left:2px;margin-right:2px;opacity:.7;height:50px}.previews-container.mobile-visible>.preview-image.active{opacity:1}.previews-container.mobile-visible>.preview-image.unclickable{cursor:not-allowed}.previews-container.mobile-visible>.preview-image:hover{opacity:1;transition:all .5s ease;transition-property:opacity}}@media only screen and (min-device-width: 768px){.previews-container{align-items:center;animation:fadein-semi-visible08 .8s;display:flex;flex-direction:row;justify-content:center;margin-bottom:15px}.previews-container .preview-container{margin-left:2px;margin-right:2px;cursor:pointer}.previews-container .preview-container.unclickable{cursor:not-allowed}.previews-container .preview-container .preview-image{opacity:.7;height:50px}.previews-container .preview-container .preview-image.active{opacity:1}.previews-container .preview-container .preview-image:hover{opacity:1;transition:all .5s ease;transition-property:opacity}.previews-container .nav,.previews-container>.nav-right,.previews-container>.nav-left{color:#919191;cursor:pointer;transition:all .5s}.previews-container .nav:hover,.previews-container>.nav-right:hover,.previews-container>.nav-left:hover{transform:scale(1.1)}.previews-container>.nav-left{margin-right:10px}.previews-container>.nav-right{margin-left:10px}}@keyframes fadein-visible{0%{opacity:0}to{opacity:1}}@keyframes fadein-semi-visible05{0%{opacity:0}to{opacity:.5}}@keyframes fadein-semi-visible08{0%{opacity:0}to{opacity:.8}}@keyframes fadein-semi-visible09{0%{opacity:0}to{opacity:.9}}\n", ".arrow-preview-image,.right-arrow-preview-image,.left-arrow-preview-image,.empty-arrow-preview-image{width:15px;height:15px;opacity:.5}.empty-arrow-preview-image{background:black;opacity:0}.left-arrow-preview-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3Ny4xNzUgNDc3LjE3NSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDc3LjE3NSA0NzcuMTc1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48cGF0aCBkPSJNMTQ1LjE4OCwyMzguNTc1bDIxNS41LTIxNS41YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xcy0xMy44LTUuMy0xOS4xLDBsLTIyNS4xLDIyNS4xYy01LjMsNS4zLTUuMywxMy44LDAsMTkuMWwyMjUuMSwyMjUgICBjMi42LDIuNiw2LjEsNCw5LjUsNHM2LjktMS4zLDkuNS00YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xTDE0NS4xODgsMjM4LjU3NXoiIGZpbGw9IiNGRkZGRkYiLz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+);background-size:15px;transition:all .5s}.left-arrow-preview-image:hover{transform:scale(1.2)}.right-arrow-preview-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3Ny4xNzUgNDc3LjE3NSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDc3LjE3NSA0NzcuMTc1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48cGF0aCBkPSJNMzYwLjczMSwyMjkuMDc1bC0yMjUuMS0yMjUuMWMtNS4zLTUuMy0xMy44LTUuMy0xOS4xLDBzLTUuMywxMy44LDAsMTkuMWwyMTUuNSwyMTUuNWwtMjE1LjUsMjE1LjUgICBjLTUuMyw1LjMtNS4zLDEzLjgsMCwxOS4xYzIuNiwyLjYsNi4xLDQsOS41LDRjMy40LDAsNi45LTEuMyw5LjUtNGwyMjUuMS0yMjUuMUMzNjUuOTMxLDI0Mi44NzUsMzY1LjkzMSwyMzQuMjc1LDM2MC43MzEsMjI5LjA3NXogICAiIGZpbGw9IiNGRkZGRkYiLz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+);background-size:15px;transition:all .5s}.right-arrow-preview-image:hover{transform:scale(1.2)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.SizeDirective, selector: "[ksSize]", inputs: ["sizeConfig"] }, { kind: "directive", type: i4.FallbackImageDirective, selector: "[ksFallbackImage]", inputs: ["fallbackImg"], outputs: ["fallbackApplied"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: PreviewsComponent, decorators: [{
259
259
  type: Component,
260
260
  args: [{ selector: 'ks-previews', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"previews-container\"\n [class.mobile-visible]=\"previewConfig?.mobileVisible\"\n [attr.aria-label]=\"accessibilityConfig?.previewsContainerAriaLabel\"\n [title]=\"accessibilityConfig?.previewsContainerTitle\">\n\n <ng-container *ngIf=\"previewConfig?.visible\">\n <a class=\"nav-left\"\n [attr.aria-label]=\"accessibilityConfig?.previewScrollPrevAriaLabel\"\n [tabIndex]=\"displayLeftPreviewsArrow() ? 0 : -1\" role=\"button\"\n (click)=\"onNavigationEvent('left', $event)\" (keyup)=\"onNavigationEvent('left', $event)\">\n <div class=\"inside {{ displayLeftPreviewsArrow() ? 'left-arrow-preview-image' : 'empty-arrow-preview-image'}}\"\n aria-hidden=\"true\"\n [title]=\"accessibilityConfig?.previewScrollPrevTitle\"></div>\n </a>\n\n <ng-container *ngFor=\"let preview of previews; trackBy: trackById; let index = index\">\n\n <div class=\"preview-container {{!previewConfig?.clickable ? ' unclickable' : ''}}\"\n (click)=\"onImageEvent(preview, $event, clickAction)\"\n (keyup)=\"onImageEvent(preview, $event, keyboardAction)\"\n >\n <ng-container \n *ngTemplateOutlet=\"!customTemplate ? defaultTemplate : customTemplate ; context:{preview, defaultTemplate}\">\n </ng-container>\n <ng-template #defaultTemplate>\n <img *ngIf=\"preview?.modal?.img\"\n class=\"inside preview-image {{isActive(preview) ? 'active' : ''}}\"\n [src]=\"preview.plain?.img ? preview.plain?.img! : preview.modal.img\"\n ksFallbackImage [fallbackImg]=\"preview.plain?.fallbackImg ? preview.plain?.fallbackImg : preview.modal.fallbackImg\"\n ksSize [sizeConfig]=\"{width: previewConfig?.size ? previewConfig?.size?.width! : defaultPreviewSize.width,\n height: previewConfig?.size ? previewConfig?.size?.height! : defaultPreviewSize.height}\"\n [attr.aria-label]=\"preview.modal.ariaLabel ? preview.modal.ariaLabel : ''\"\n [title]=\"(preview.modal.title || preview.modal.title === '') ? preview.modal.title : ''\"\n alt=\"{{preview.modal.alt ? preview.modal.alt : ''}}\"\n [tabIndex]=\"0\" role=\"img\"\n />\n </ng-template>\n </div>\n\n </ng-container>\n\n\n <a class=\"nav-right\"\n [attr.aria-label]=\"accessibilityConfig?.previewScrollNextAriaLabel\"\n [tabIndex]=\"displayRightPreviewsArrow() ? 0 : -1\" role=\"button\"\n (click)=\"onNavigationEvent('right', $event)\" (keyup)=\"onNavigationEvent('right', $event)\">\n <div class=\"inside {{ displayRightPreviewsArrow() ? 'right-arrow-preview-image' : 'empty-arrow-preview-image'}}\"\n aria-hidden=\"true\"\n [title]=\"accessibilityConfig?.previewScrollNextTitle\"></div>\n </a>\n </ng-container>\n\n</nav>\n", styles: ["@media only screen and (max-width: 767px),only screen and (max-device-width: 767px){.previews-container{display:none}.previews-container>.preview-image{display:none}.previews-container>.nav-left{display:none}.previews-container>.nav-right{display:none}.previews-container.mobile-visible{align-items:center;animation:fadein-semi-visible08 .8s;display:flex;flex-direction:row;justify-content:center;margin-bottom:15px}.previews-container.mobile-visible>.nav-left{display:flex}.previews-container.mobile-visible>.nav-right{display:flex}.previews-container.mobile-visible>.preview-image{cursor:pointer;display:flex;margin-left:2px;margin-right:2px;opacity:.7;height:50px}.previews-container.mobile-visible>.preview-image.active{opacity:1}.previews-container.mobile-visible>.preview-image.unclickable{cursor:not-allowed}.previews-container.mobile-visible>.preview-image:hover{opacity:1;transition:all .5s ease;transition-property:opacity}}@media only screen and (min-device-width: 768px){.previews-container{align-items:center;animation:fadein-semi-visible08 .8s;display:flex;flex-direction:row;justify-content:center;margin-bottom:15px}.previews-container .preview-container{margin-left:2px;margin-right:2px;cursor:pointer}.previews-container .preview-container.unclickable{cursor:not-allowed}.previews-container .preview-container .preview-image{opacity:.7;height:50px}.previews-container .preview-container .preview-image.active{opacity:1}.previews-container .preview-container .preview-image:hover{opacity:1;transition:all .5s ease;transition-property:opacity}.previews-container .nav,.previews-container>.nav-right,.previews-container>.nav-left{color:#919191;cursor:pointer;transition:all .5s}.previews-container .nav:hover,.previews-container>.nav-right:hover,.previews-container>.nav-left:hover{transform:scale(1.1)}.previews-container>.nav-left{margin-right:10px}.previews-container>.nav-right{margin-left:10px}}@keyframes fadein-visible{0%{opacity:0}to{opacity:1}}@keyframes fadein-semi-visible05{0%{opacity:0}to{opacity:.5}}@keyframes fadein-semi-visible08{0%{opacity:0}to{opacity:.8}}@keyframes fadein-semi-visible09{0%{opacity:0}to{opacity:.9}}\n", ".arrow-preview-image,.right-arrow-preview-image,.left-arrow-preview-image,.empty-arrow-preview-image{width:15px;height:15px;opacity:.5}.empty-arrow-preview-image{background:black;opacity:0}.left-arrow-preview-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3Ny4xNzUgNDc3LjE3NSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDc3LjE3NSA0NzcuMTc1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48cGF0aCBkPSJNMTQ1LjE4OCwyMzguNTc1bDIxNS41LTIxNS41YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xcy0xMy44LTUuMy0xOS4xLDBsLTIyNS4xLDIyNS4xYy01LjMsNS4zLTUuMywxMy44LDAsMTkuMWwyMjUuMSwyMjUgICBjMi42LDIuNiw2LjEsNCw5LjUsNHM2LjktMS4zLDkuNS00YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xTDE0NS4xODgsMjM4LjU3NXoiIGZpbGw9IiNGRkZGRkYiLz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+);background-size:15px;transition:all .5s}.left-arrow-preview-image:hover{transform:scale(1.2)}.right-arrow-preview-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3Ny4xNzUgNDc3LjE3NSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDc3LjE3NSA0NzcuMTc1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48cGF0aCBkPSJNMzYwLjczMSwyMjkuMDc1bC0yMjUuMS0yMjUuMWMtNS4zLTUuMy0xMy44LTUuMy0xOS4xLDBzLTUuMywxMy44LDAsMTkuMWwyMTUuNSwyMTUuNWwtMjE1LjUsMjE1LjUgICBjLTUuMyw1LjMtNS4zLDEzLjgsMCwxOS4xYzIuNiwyLjYsNi4xLDQsOS41LDRjMy40LDAsNi45LTEuMyw5LjUtNGwyMjUuMS0yMjUuMUMzNjUuOTMxLDI0Mi44NzUsMzY1LjkzMSwyMzQuMjc1LDM2MC43MzEsMjI5LjA3NXogICAiIGZpbGw9IiNGRkZGRkYiLz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+);background-size:15px;transition:all .5s}.right-arrow-preview-image:hover{transform:scale(1.2)}\n"] }]
261
261
  }], ctorParameters: function () { return [{ type: i1.ConfigService }]; }, propDecorators: { id: [{
@@ -269,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImpor
269
269
  }], clickPreview: [{
270
270
  type: Output
271
271
  }] } });
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXdzL3ByZXZpZXdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy9wcmV2aWV3cy9wcmV2aWV3cy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUE0QyxNQUFNLGVBQWUsQ0FBQztBQUUzSyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc5RCxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSzdFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQUlwRjs7R0FFRztBQU9ILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxtQkFBbUI7SUE0RXhELFlBQW9CLGFBQTRCO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBRFUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFoRGhEOztXQUVHO1FBRUgsaUJBQVksR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQWdCeEU7OztXQUdHO1FBQ0gsZ0JBQVcsR0FBVyxNQUFNLENB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RUFBRTtzQkFERCxLQUFLO2dCQU1OLFlBQVk7c0JBRFgsS0FBSztnQkFPTixNQUFNO3NCQURMLEtBQUs7Z0JBVU4sY0FBYztzQkFEYixLQUFLO2dCQU9OLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY2Nlc3NpYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWNjZXNzaWJsZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWNjZXNzaWJpbGl0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW1hZ2UsIEltYWdlRXZlbnQsIEltYWdlTW9kYWxFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL2ltYWdlLmNsYXNzJztcbmltcG9ydCB7IEludGVybmFsTGliSW1hZ2UgfSBmcm9tICcuLi8uLi9tb2RlbC9pbWFnZS1pbnRlcm5hbC5jbGFzcyc7XG5pbXBvcnQgeyBQcmV2aWV3Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJldmlldy1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNsaWRlQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2xpZGUtY29uZmlnLmludGVyZmFjZSc7XG5cbmltcG9ydCB7IE5FWFQsIFBSRVYgfSBmcm9tICcuLi8uLi91dGlscy91c2VyLWlucHV0LnV0aWwnO1xuaW1wb3J0IHsgZ2V0SW5kZXggfSBmcm9tICcuLi8uLi91dGlscy9pbWFnZS51dGlsJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2FjdGlvbi5lbnVtJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIERFRkFVTFRfUFJFVklFV19TSVpFIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gJy4uLy4uL21vZGVsL3NpemUuaW50ZXJmYWNlJztcbmltcG9ydCB7IExpYkNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2xpYi1jb25maWcuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDb21wb25lbnQgd2l0aCBpbWFnZSBwcmV2aWV3c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrcy1wcmV2aWV3cycsXG4gIHN0eWxlVXJsczogWydwcmV2aWV3cy5zY3NzJywgJy4uL3ByZXZpZXdzLWFycm93cy5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAncHJldmlld3MuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFByZXZpZXdzQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZCAoPj0wKSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGlzIGxpYnJhcnkuIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB5b3UgYXJlIHVzaW5nXG4gICAqIHRoZSBzZXJ2aWNlIHRvIGNhbGwgbW9kYWwgZ2FsbGVyeS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgSW50ZXJuYWxMaWJJbWFnZWAgdGhhdCByZXByZXNlbnQgdGhlIHZpc2libGUgaW1hZ2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBjdXJyZW50SW1hZ2U6IEludGVybmFsTGliSW1hZ2UgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBgSW50ZXJuYWxMaWJJbWFnZWAgdGhhdCByZXByZXNlbnQgdGhlIG1vZGVsIG9mIHRoaXMgbGlicmFyeSB3aXRoIGFsbCBpbWFnZXMsXG4gICAqIHRodW1icyBhbmQgc28gb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBpbWFnZXM6IEludGVybmFsTGliSW1hZ2VbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGVtcGxhdGUgcmVmZXJlbmNlIGZvciB0aGUgcmVuZGVyaW5nIG9mIHByZXZpZXdzLlxuICAgKiBUZW1wbGF0ZSBtYXkgYWNjZXNzIGZvbGxvd2luZyBjb250ZXh0IHZhcmlhYmxlczpcbiAgICogLSBwcmV2aWV3OiB0aGUgYEltYWdlYCBvYmplY3RcbiAgICogLSBkZWZhdWx0VGVtcGxhdGU6IHRoZSB0ZW1wbGF0ZSB1c2VkIGJ5IGRlZmF1bHQgdG8gcmVuZGVyIHRoZSBwcmV2aWV3IChpbiBjYXNlIHRoZSBuZWVkIGlzIHRvIHdyYXAgaXQpXG4gICAqL1xuICBASW5wdXQoKVxuICBjdXN0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgdGhlIGNsaWNrZWQgcHJldmlldy4gVGhlIHBheWxvYWQgY29udGFpbnMgdGhlIGBJbWFnZUV2ZW50YCBhc3NvY2lhdGVkIHRvIHRoZSBjbGlja2VkIHByZXZpZXcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgY2xpY2tQcmV2aWV3OiBFdmVudEVtaXR0ZXI8SW1hZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEltYWdlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBBY2Nlc3NpYmlsaXR5Q29uZmlnYCB0byBpbml0IGN1c3RvbSBhY2Nlc3NpYmlsaXR5IGZlYXR1cmVzLlxuICAgKiBGb3IgaW5zdGFuY2UsIGl0IGNvbnRhaW5zIHRpdGxlcywgYWx0IHRleHRzLCBhcmlhLWxhYmVscyBhbmQgc28gb24uXG4gICAqL1xuICBhY2Nlc3NpYmlsaXR5Q29uZmlnOiBBY2Nlc3NpYmlsaXR5Q29uZmlnIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT2JqZWN0IG9mIHR5cGUgYFNsaWRlQ29uZmlnYCB0byBnZXQgYGluZmluaXRlIHNsaWRpbmdgLlxuICAgKi9cbiAgc2xpZGVDb25maWc6IFNsaWRlQ29uZmlnIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT2JqZWN0IG9mIHR5cGUgYFByZXZpZXdDb25maWdgIHRvIGluaXQgUHJldmlld3NDb21wb25lbnQncyBmZWF0dXJlcy5cbiAgICogRm9yIGluc3RhbmNlLCBpdCBjb250YWlucyBhIHBhcmFtIHRvIHNob3cvaGlkZSB0aGlzIGNvbXBvbmVudCwgc2l6ZXMuXG4gICAqL1xuICBwcmV2aWV3Q29uZmlnOiBQcmV2aWV3Q29uZmlnIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogRW51bSBvZiB0eXBlIGBBY3Rpb25gIHRoYXQgcmVwcmVzZW50cyBhIG1vdXNlIGNsaWNrIG9uIGEgYnV0dG9uLlxuICAgKiBEZWNsYXJlZCBoZXJlIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIGNsaWNrQWN0aW9uOiBBY3Rpb24gPSBBY3Rpb24uQ0xJQ0s7XG4gIC8qKlxuICAgKiBFbnVtIG9mIHR5cGUgYEFjdGlvbmAgdGhhdCByZXByZXNlbnRzIGEga2V5Ym9hcmQgYWN0aW9uLlxuICAgKiBEZWNsYXJlZCBoZXJlIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIGtleWJvYXJkQWN0aW9uOiBBY3Rpb24gPSBBY3Rpb24uS0VZQk9BUkQ7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBgSW50ZXJuYWxMaWJJbWFnZWAgZXhwb3NlZCB0byB0aGUgdGVtcGxhdGUuIFRoaXMgZmllbGQgaXMgaW5pdGlhbGl6ZWRcbiAgICogYXBwbHlpbmcgdHJhbnNmb3JtYXRpb25zLCBkZWZhdWx0IHZhbHVlcyBhbmQgc28gb24gdG8gdGhlIGlucHV0IG9mIHRoZSBzYW1lIHR5cGUuXG4gICAqL1xuICBwcmV2aWV3czogSW50ZXJuYWxMaWJJbWFnZVtdID0gW107XG4gIC8qKlxuICAgKiBTdGFydCBpbmRleCAoaW5jbHVkZWQpIG9mIHRoZSBpbnB1dCBpbWFnZXMgdXNlZCB0byBkaXNwbGF5IHByZXZpZXdzLlxuICAgKi9cbiAgICAvLyBAdHMtaWdub3JlXG4gIHN0YXJ0OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFbmQgaW5kZXggKGV4Y2x1ZGVkKSBvZiB0aGUgaW5wdXQgaW1hZ2VzIHVzZWQgdG8gZGlzcGxheSBwcmV2aWV3cy5cbiAgICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICBlbmQ6IG51bWJlcjtcblxuICBkZWZhdWx0UHJldmlld1NpemU6IFNpemUgPSBERUZBVUxUX1BSRVZJRVdfU0laRTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCDCtG5nT25Jbml0wrQgdG8gYnVpbGQgYGNvbmZpZ1ByZXZpZXdgIGFwcGx5aW5nIGEgZGVmYXVsdCB2YWx1ZSBhbmQgYWxzbyB0b1xuICAgKiBpbml0IHRoZSBgcHJldmlld3NgIGFycmF5LlxuICAgKiBUaGlzIGlzIGFuIEFuZ3VsYXIncyBsaWZlY3ljbGUgaG9vaywgc28gaXRzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IEFuZ3VsYXIgaXRzZWxmLlxuICAgKiBJbiBwYXJ0aWN1bGFyLCBpdCdzIGNhbGxlZCBvbmx5IG9uZSB0aW1lISEhXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZCA9PT0gbnVsbCB8fCB0aGlzLmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGlkIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBjb25zdCBsaWJDb25maWc6IExpYkNvbmZpZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcodGhpcy5pZCk7XG4gICAgaWYgKCFsaWJDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGxpYkNvbmZpZyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgdGhpcy5hY2Nlc3NpYmlsaXR5Q29uZmlnID0gbGliQ29uZmlnLmFjY2Vzc2liaWxpdHlDb25maWc7XG4gICAgdGhpcy5zbGlkZUNvbmZpZyA9IGxpYkNvbmZpZy5zbGlkZUNvbmZpZztcbiAgICB0aGlzLnByZXZpZXdDb25maWcgPSBsaWJDb25maWcucHJldmlld0NvbmZpZztcbiAgICBpZiAoIXRoaXMuY3VycmVudEltYWdlIHx8ICF0aGlzLmltYWdlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIC0gY3VycmVudEltYWdlIGFuZCBpbWFnZXMgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIHRoaXMuaW5pdFByZXZpZXdzKHRoaXMuY3VycmVudEltYWdlLCB0aGlzLmltYWdlcyk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNoZWNrIGlmIGFuIGltYWdlIGlzIGFjdGl2ZSAoaS5lLiBhIHByZXZpZXcgaW1hZ2UpLlxuICAgKiBAcGFyYW0gSW50ZXJuYWxMaWJJbWFnZSBwcmV2aWV3IGlzIGFuIGltYWdlIHRvIGNoZWNrIGlmIGl0J3MgYWN0aXZlIG9yIG5vdFxuICAgKiBAcmV0dXJucyBib29sZWFuIHRydWUgaWYgaXMgYWN0aXZlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGlzQWN0aXZlKHByZXZpZXc6IEludGVybmFsTGliSW1hZ2UpOiBib29sZWFuIHtcbiAgICBpZiAoIXByZXZpZXcgfHwgIXRoaXMuY3VycmVudEltYWdlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBwcmV2aWV3LmlkID09PSB0aGlzLmN1cnJlbnRJbWFnZS5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgwrRuZ09uQ2hhbmdlc8K0IHRvIHVwZGF0ZSBgcHJldmlld3NgIGFycmF5LlxuICAgKiBBbHNvLCBib3RoIGBzdGFydGAgYW5kIGBlbmRgIGxvY2FsIHZhcmlhYmxlcyB3aWxsIGJlIHVwZGF0ZWQgYWNjb3JkaW5nbHkuXG4gICAqIFRoaXMgaXMgYW4gQW5ndWxhcidzIGxpZmVjeWNsZSBob29rLCBzbyBpdHMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgQW5ndWxhciBpdHNlbGYuXG4gICAqIEluIHBhcnRpY3VsYXIsIGl0J3MgY2FsbGVkIHdoZW4gYW55IGRhdGEtYm91bmQgcHJvcGVydHkgb2YgYSBkaXJlY3RpdmUgY2hhbmdlcyEhIVxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gICAgbGV0IGN1cnJlbnRJbWFnZSA9IGNoYW5nZXMuY3VycmVudEltYWdlPy5jdXJyZW50VmFsdWUgPz8gdGhpcy5jdXJyZW50SW1hZ2U7XG4gICAgbGV0IGltYWdlcyA9IGNoYW5nZXMuaW1hZ2VzPy5jdXJyZW50VmFsdWUgPz8gdGhpcy5pbWFnZXM7XG5cbiAgICBpZih0aGlzLnByZXZpZXdDb25maWcgJiYgY3VycmVudEltYWdlICYmIGltYWdlcykge1xuICAgICAgdGhpcy5pbml0UHJldmlld3MoIGN1cnJlbnRJbWFnZSwgaW1hZ2VzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSBldmVudHMgZnJvbSBib3RoIGtleWJvYXJkIGFuZCBtb3VzZSBvbiBhIHByZXZpZXcuXG4gICAqIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBgY2xpY2twcmV2aWV3YCBvdXRwdXQgd2l0aCB0aGUgaW5wdXQgcHJldmlldyBhcyBpdHMgcGF5bG9hZC5cbiAgICogQHBhcmFtIEludGVybmFsTGliSW1hZ2UgcHJldmlldyB0aGF0IHRyaWdnZXJlZCB0aGlzIG1ldGhvZFxuICAgKiBAcGFyYW0gS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKiBAcGFyYW0gQWN0aW9uIGFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGUgc291cmNlIGV2ZW50IG9yIGBBY3Rpb24uTk9STUFMYCBpZiBub3Qgc3BlY2lmaWVkXG4gICAqL1xuICBvbkltYWdlRXZlbnQocHJldmlldzogSW50ZXJuYWxMaWJJbWFnZSwgZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50LCBhY3Rpb246IEFjdGlvbiA9IEFjdGlvbi5OT1JNQUwpOiB2b2lkIHtcbiAgICAvLyBJdCdzIHN1Z2dlc3RlZCB0byBzdG9wIHByb3BhZ2F0aW9uIG9mIHRoZSBldmVudCwgc28gdGhlXG4gICAgLy8gQ2RrIGJhY2tncm91bmQgd2lsbCBub3QgY2F0Y2ggYSBjbGljayBhbmQgY2xvc2UgdGhlIG1vZGFsIChsaWtlIGl0IGRvZXMgb24gV2luZG93cyBDaHJvbWUvRkYpLlxuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuaWQgfHwgIXRoaXMuaW1hZ2VzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBpZCBhbmQgaW1hZ2VzIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucHJldmlld0NvbmZpZyB8fCAhdGhpcy5wcmV2aWV3Q29uZmlnLmNsaWNrYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IG51bWJlciA9IHN1cGVyLmhhbmRsZUltYWdlRXZlbnQoZXZlbnQpO1xuICAgIGlmIChyZXN1bHQgPT09IE5FWFQgfHwgcmVzdWx0ID09PSBQUkVWKSB7XG4gICAgICB0aGlzLmNsaWNrUHJldmlldy5lbWl0KG5ldyBJbWFnZU1vZGFsRXZlbnQodGhpcy5pZCwgYWN0aW9uLCBnZXRJbmRleChwcmV2aWV3LCB0aGlzLmltYWdlcykpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSBldmVudHMgZnJvbSBib3RoIGtleWJvYXJkIGFuZCBtb3VzZSBvbiBhIG5hdmlnYXRpb24gYXJyb3cuXG4gICAqIEl0IGFsc28gZW1pdHMgYW4gZXZlbnQgdG8gc3BlY2lmeSB3aGljaCBhcnJvdy5cbiAgICogQHBhcmFtIHN0cmluZyBkaXJlY3Rpb24gb2YgdGhlIG5hdmlnYXRpb24gdGhhdCBjYW4gYmUgZWl0aGVyICduZXh0JyBvciAncHJldidcbiAgICogQHBhcmFtIEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50IGV2ZW50IHBheWxvYWRcbiAgICogQHBhcmFtIEFjdGlvbiBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIHNvdXJjZSBldmVudCBvciBgQWN0aW9uLk5PUk1BTGAgaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgb25OYXZpZ2F0aW9uRXZlbnQoZGlyZWN0aW9uOiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudCwgYWN0aW9uOiBBY3Rpb24gPSBBY3Rpb24uTk9STUFMKTogdm9pZCB7XG4gICAgY29uc3QgcmVzdWx0OiBudW1iZXIgPSBzdXBlci5oYW5kbGVOYXZpZ2F0aW9uRXZlbnQoZGlyZWN0aW9uLCBldmVudCk7XG4gICAgaWYgKHJlc3VsdCA9PT0gTkVYVCkge1xuICAgICAgdGhpcy5uZXh0KCk7XG4gICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IFBSRVYpIHtcbiAgICAgIHRoaXMucHJldmlvdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgaW4gdGhlIHRlbXBsYXRlIHRvIHRyYWNrIGlkcyBpbiBuZ0Zvci5cbiAgICogQHBhcmFtIG51bWJlciBpbmRleCBvZiB0aGUgYXJyYXlcbiAgICogQHBhcmFtIEltYWdlIGl0ZW0gb2YgdGhlIGFycmF5XG4gICAqIEByZXR1cm5zIG51bWJlciB0aGUgaWQgb2YgdGhlIGl0ZW1cbiAgICovXG4gIHRyYWNrQnlJZChpbmRleDogbnVtYmVyLCBpdGVtOiBJbWFnZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBwcmV2aWV3cyAnbGVmdCBhcnJvdycgc2hvdWxkIGJlIGRpc3BsYXllZCBvciBub3QuXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgZGlzcGxheUxlZnRQcmV2aWV3c0Fycm93KCk6IGJvb2xlYW4ge1xuICAgIC8vIERvbid0IHNob3cgYXJyb3dzIGlmIHJlcXVlc3RlZCBwcmV2aWV3cyBudW1iZXIgZXF1YWxzIG9yIGlzIGdyZWF0ZWQgdGhhbiB0b3RhbCBudW1iZXIgb2YgaW1nYWVzXG4gICAgaWYodGhpcy5wcmV2aWV3Q29uZmlnPy5udW1iZXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmltYWdlcyAmJiB0aGlzLnByZXZpZXdDb25maWc/Lm51bWJlciA+PSB0aGlzLmltYWdlcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5wcmV2aWV3Q29uZmlnPy5hcnJvd3MgJiYgdGhpcy5zdGFydCA+IDApIHx8ICEhdGhpcy5zbGlkZUNvbmZpZz8uaW5maW5pdGU7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBwcmV2aWV3cyAncmlnaHQgYXJyb3cnIHNob3VsZCBiZSBkaXNwbGF5ZWQgb3Igbm90LlxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIGRpc3BsYXlSaWdodFByZXZpZXdzQXJyb3coKTogYm9vbGVhbiB7XG4gICAgLy8gRG9uJ3Qgc2hvdyBhcnJvd3MgaWYgcmVxdWVzdGVkIHByZXZpZXdzIG51bWJlciBlcXVhbHMgb3IgaXMgZ3JlYXRlZCB0aGFuIHRvdGFsIG51bWJlciBvZiBpbWdhZXNcbiAgICBpZih0aGlzLnByZXZpZXdDb25maWc/Lm51bWJlciAhPT0gdW5kZWZpbmVkICYmIHRoaXMuaW1hZ2VzICYmIHRoaXMucHJldmlld0NvbmZpZz8ubnVtYmVyID49IHRoaXMuaW1hZ2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLnByZXZpZXdDb25maWc/LmFycm93cyAmJiB0aGlzLmltYWdlcyAmJiB0aGlzLmVuZCA8IHRoaXMuaW1hZ2VzLmxlbmd0aCkgfHwgISF0aGlzLnNsaWRlQ29uZmlnPy5pbmZpbml0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBpbml0IHByZXZpZXdzIGJhc2VkIG9uIHRoZSBjdXJyZW50SW1hZ2UgYW5kIHRoZSBmdWxsIGFycmF5IG9mIGltYWdlcy5cbiAgICogVGhlIGN1cnJlbnQgaW1hZ2UgaW4gbWFuZGF0b3J5IHRvIHNob3cgYWx3YXlzIHRoZSBjdXJyZW50IHByZXZpZXcgKGFzIGhpZ2hsaWdodGVkKS5cbiAgICogQHBhcmFtIEludGVybmFsTGliSW1hZ2UgY3VycmVudEltYWdlIHRvIGRlY2lkZSBob3cgdG8gc2hvdyBwcmV2aWV3cywgYmVjYXVzZSBJIGFsd2F5cyB3YW50IHRvIHNlZSB0aGUgY3VycmVudCBpbWFnZSBhcyBoaWdobGlnaHRlZFxuICAgKiBAcGFyYW0gSW50ZXJuYWxMaWJJbWFnZVtdIGltYWdlcyBpcyB0aGUgYXJyYXkgb2YgYWxsIGltYWdlcy5cbiAgICovXG4gIHByaXZhdGUgaW5pdFByZXZpZXdzKGN1cnJlbnRJbWFnZTogSW50ZXJuYWxMaWJJbWFnZSwgaW1hZ2VzOiBJbnRlcm5hbExpYkltYWdlW10pOiB2b2lkIHtcbiAgICB0aGlzLnNldEluZGV4ZXNQcmV2aWV3cyhjdXJyZW50SW1hZ2UsIGltYWdlcyk7XG4gICAgdGhpcy5wcmV2aWV3cyA9IGltYWdlcy5maWx0ZXIoKGltZzogSW50ZXJuYWxMaWJJbWFnZSwgaTogbnVtYmVyKSA9PiBpID49IHRoaXMuc3RhcnQgJiYgaSA8IHRoaXMuZW5kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byB1cGRhdGUgYm90aCBgc3RhcnRgIGFuZCBgZW5kYCBiYXNlZCBvbiB0aGUgY3VycmVudEltYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRJbmRleGVzUHJldmlld3MoY3VycmVudEltYWdlOiBJbnRlcm5hbExpYkltYWdlLCBpbWFnZXM6IEludGVybmFsTGliSW1hZ2VbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcmV2aWV3Q29uZmlnIHx8ICFpbWFnZXMgfHwgIWN1cnJlbnRJbWFnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIC0gcHJldmlld0NvbmZpZywgY3VycmVudEltYWdlIGFuZCBpbWFnZXMgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IHByZXZpZXdzTnVtYmVyID0gdGhpcy5wcmV2aWV3Q29uZmlnLm51bWJlciBhcyBudW1iZXI7XG4gICAgbGV0IHN0YXJ0ID0gZ2V0SW5kZXgoY3VycmVudEltYWdlLCBpbWFnZXMpIC0gTWF0aC5mbG9vcihwcmV2aWV3c051bWJlciAvIDIpO1xuICAgIC8vIHN0YXJ0IGlzLCBhdCBhIG1pbmltdW0sIHRoZSBmaXJzdCBpbmRleFxuICAgIGlmKHN0YXJ0IDwgMCkgc3RhcnQgPSAwO1xuICAgIC8vIGVuZCBpbmRleFxuICAgIGxldCBlbmQgPSBzdGFydCArIHByZXZpZXdzTnVtYmVyO1xuICAgIC8vIGVuZCBpcywgYXQgYSBtYXhpbXVtLCB0aGUgbGFzdCBpbmRleFxuICAgIGlmKGVuZCA+IGltYWdlcy5sZW5ndGgpIHtcbiAgICAgIHN0YXJ0IC09IGVuZCAtIGltYWdlcy5sZW5ndGg7XG4gICAgICBpZihzdGFydCA8IDApIHN0YXJ0ID0gMDsgLy8gc3RhcnQgaXMsIGF0IGEgbWluaW11bSwgdGhlIGZpcnN0IGluZGV4XG4gICAgICBlbmQgPSBpbWFnZXMubGVuZ3RoO1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gdXBkYXRlIHRoZSB2aXNpYmxlIHByZXZpZXdzIG5hdmlnYXRpbmcgdG8gdGhlIHJpZ2h0IChuZXh0KS5cbiAgICovXG4gIHByaXZhdGUgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW1hZ2VzIHx8ICF0aGlzLnByZXZpZXdDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGltYWdlcyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYodGhpcy5lbmQgPj0gdGhpcy5pbWFnZXMubGVuZ3RoKSB7XG4gICAgICAvLyBjaGVjayBpZiBuZXh0SW1hZ2Ugc2hvdWxkIGJlIGJsb2NrZWRcbiAgICAgIGNvbnN0IHByZXZlbnRTbGlkaW5nID0gISF0aGlzLnNsaWRlQ29uZmlnICYmIHRoaXMuc2xpZGVDb25maWcuaW5maW5pdGUgPT09IGZhbHNlO1xuICAgICAgaWYocHJldmVudFNsaWRpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zdGFydCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnQrKztcbiAgICB9XG4gICAgdGhpcy5lbmQgPSB0aGlzLnN0YXJ0ICsgTWF0aC5taW4oKHRoaXMucHJldmlld0NvbmZpZy5udW1iZXIgYXMgbnVtYmVyKSwgdGhpcy5pbWFnZXMubGVuZ3RoKTtcblxuICAgIHRoaXMucHJldmlld3MgPSB0aGlzLmltYWdlcy5maWx0ZXIoKGltZzogSW50ZXJuYWxMaWJJbWFnZSwgaTogbnVtYmVyKSA9PiBpID49IHRoaXMuc3RhcnQgJiYgaSA8IHRoaXMuZW5kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byB1cGRhdGUgdGhlIHZpc2libGUgcHJldmlld3MgbmF2aWdhdGluZyB0byB0aGUgbGVmdCAocHJldmlvdXMpLlxuICAgKi9cbiAgcHJpdmF0ZSBwcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW1hZ2VzIHx8ICF0aGlzLnByZXZpZXdDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGltYWdlcyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYodGhpcy5zdGFydCA8PSAwKSB7XG4gICAgICAvLyBjaGVjayBpZiBwcmV2SW1hZ2Ugc2hvdWxkIGJlIGJsb2NrZWRcbiAgICAgIGNvbnN0IHByZXZlbnRTbGlkaW5nID0gISF0aGlzLnNsaWRlQ29uZmlnICYmIHRoaXMuc2xpZGVDb25maWcuaW5maW5pdGUgPT09IGZhbHNlO1xuICAgICAgaWYocHJldmVudFNsaWRpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5lbmQgPSB0aGlzLmltYWdlcy5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5kLS07XG4gICAgfVxuICAgIHRoaXMuc3RhcnQgPSB0aGlzLmVuZCAtIE1hdGgubWluKCh0aGlzLnByZXZpZXdDb25maWcubnVtYmVyIGFzIG51bWJlciksIHRoaXMuaW1hZ2VzLmxlbmd0aCk7XG5cbiAgICB0aGlzLnByZXZpZXdzID0gdGhpcy5pbWFnZXMuZmlsdGVyKChpbWc6IEludGVybmFsTGliSW1hZ2UsIGk6IG51bWJlcikgPT4gaSA+PSB0aGlzLnN0YXJ0ICYmIGkgPCB0aGlzLmVuZCk7XG4gIH1cblxufVxuIiwiPG5hdiBjbGFzcz1cInByZXZpZXdzLWNvbnRhaW5lclwiXG4gICAgIFtjbGFzcy5tb2JpbGUtdmlzaWJsZV09XCJwcmV2aWV3Q29uZmlnPy5tb2JpbGVWaXNpYmxlXCJcbiAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY2Nlc3NpYmlsaXR5Q29uZmlnPy5wcmV2aWV3c0NvbnRhaW5lckFyaWFMYWJlbFwiXG4gICAgIFt0aXRsZV09XCJhY2Nlc3NpYmlsaXR5Q29uZmlnPy5wcmV2aWV3c0NvbnRhaW5lclRpdGxlXCI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXZpZXdDb25maWc/LnZpc2libGVcIj5cbiAgICA8YSBjbGFzcz1cIm5hdi1sZWZ0XCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFjY2Vzc2liaWxpdHlDb25maWc/LnByZXZpZXdTY3JvbGxQcmV2QXJpYUxhYmVsXCJcbiAgICAgICBbdGFiSW5kZXhdPVwiZGlzcGxheUxlZnRQcmV2aWV3c0Fycm93KCkgPyAwIDogLTFcIiByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAoY2xpY2spPVwib25OYXZpZ2F0aW9uRXZlbnQoJ2xlZnQnLCAkZXZlbnQpXCIgKGtleXVwKT1cIm9uTmF2aWdhdGlvbkV2ZW50KCdsZWZ0JywgJGV2ZW50KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImluc2lkZSB7eyBkaXNwbGF5TGVmdFByZXZpZXdzQXJyb3coKSA/ICdsZWZ0LWFycm93LXByZXZpZXctaW1hZ2UnIDogJ2VtcHR5LWFycm93LXByZXZpZXctaW1hZ2UnfX1cIlxuICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICBbdGl0bGVdPVwiYWNjZXNzaWJpbGl0eUNvbmZpZz8ucHJldmlld1Njcm9sbFByZXZUaXRsZVwiPjwvZGl2PlxuICAgIDwvYT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByZXZpZXcgb2YgcHJldmlld3M7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctY29udGFpbmVyIHt7IXByZXZpZXdDb25maWc/LmNsaWNrYWJsZSA/ICcgdW5jbGlja2FibGUnIDogJyd9fVwiXG4gICAgICAgIChjbGljayk9XCJvbkltYWdlRXZlbnQocHJldmlldywgJGV2ZW50LCBjbGlja0FjdGlvbilcIlxuICAgICAgICAoa2V5dXApPVwib25JbWFnZUV2ZW50KHByZXZpZXcsICRldmVudCwga2V5Ym9hcmRBY3Rpb24pXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIiFjdXN0b21UZW1wbGF0ZSA/IGRlZmF1bHRUZW1wbGF0ZSA6IGN1c3RvbVRlbXBsYXRlIDsgY29udGV4dDp7cHJldmlldywgZGVmYXVsdFRlbXBsYXRlfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGU+XG4gICAgICAgICAgPGltZyAqbmdJZj1cInByZXZpZXc/Lm1vZGFsPy5pbWdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImluc2lkZSBwcmV2aWV3LWltYWdlIHt7aXNBY3RpdmUocHJldmlldykgPyAnYWN0aXZlJyA6ICcnfX1cIlxuICAgICAgICAgICAgICBbc3JjXT1cInByZXZpZXcucGxhaW4/LmltZyA/IHByZXZpZXcucGxhaW4/LmltZyEgOiBwcmV2aWV3Lm1vZGFsLmltZ1wiXG4gICAgICAgICAgICAgIGtzRmFsbGJhY2tJbWFnZSBbZmFsbGJhY2tJbWddPVwicHJldmlldy5wbGFpbj8uZmFsbGJhY2tJbWcgPyBwcmV2aWV3LnBsYWluPy5mYWxsYmFja0ltZyA6IHByZXZpZXcubW9kYWwuZmFsbGJhY2tJbWdcIlxuICAgICAgICAgICAgICBrc1NpemUgW3NpemVDb25maWddPVwie3dpZHRoOiBwcmV2aWV3Q29uZmlnPy5zaXplID8gcHJldmlld0NvbmZpZz8uc2l6ZT8ud2lkdGghIDogZGVmYXVsdFByZXZpZXdTaXplLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBwcmV2aWV3Q29uZmlnPy5zaXplID8gcHJldmlld0NvbmZpZz8uc2l6ZT8uaGVpZ2h0ISA6IGRlZmF1bHRQcmV2aWV3U2l6ZS5oZWlnaHR9XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwcmV2aWV3Lm1vZGFsLmFyaWFMYWJlbCA/IHByZXZpZXcubW9kYWwuYXJpYUxhYmVsIDogJydcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiKHByZXZpZXcubW9kYWwudGl0bGUgfHwgcHJldmlldy5tb2RhbC50aXRsZSA9PT0gJycpID8gcHJldmlldy5tb2RhbC50aXRsZSA6ICcnXCJcbiAgICAgICAgICAgICAgYWx0PVwie3twcmV2aWV3Lm1vZGFsLmFsdCA/IHByZXZpZXcubW9kYWwuYWx0IDogJyd9fVwiXG4gICAgICAgICAgICAgIFt0YWJJbmRleF09XCIwXCIgcm9sZT1cImltZ1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgIDxhIGNsYXNzPVwibmF2LXJpZ2h0XCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFjY2Vzc2liaWxpdHlDb25maWc/LnByZXZpZXdTY3JvbGxOZXh0QXJpYUxhYmVsXCJcbiAgICAgICBbdGFiSW5kZXhdPVwiZGlzcGxheVJpZ2h0UHJldmlld3NBcnJvdygpID8gMCA6IC0xXCIgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGlvbkV2ZW50KCdyaWdodCcsICRldmVudClcIiAoa2V5dXApPVwib25OYXZpZ2F0aW9uRXZlbnQoJ3JpZ2h0JywgJGV2ZW50KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImluc2lkZSB7eyBkaXNwbGF5UmlnaHRQcmV2aWV3c0Fycm93KCkgPyAncmlnaHQtYXJyb3ctcHJldmlldy1pbWFnZScgOiAnZW1wdHktYXJyb3ctcHJldmlldy1pbWFnZSd9fVwiXG4gICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgIFt0aXRsZV09XCJhY2Nlc3NpYmlsaXR5Q29uZmlnPy5wcmV2aWV3U2Nyb2xsTmV4dFRpdGxlXCI+PC9kaXY+XG4gICAgPC9hPlxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9uYXY+XG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXdzL3ByZXZpZXdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy9wcmV2aWV3cy9wcmV2aWV3cy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUE0QyxNQUFNLGVBQWUsQ0FBQztBQUUzSyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc5RCxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSzdFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQUlwRjs7R0FFRztBQU9ILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxtQkFBbUI7SUE0RXhELFlBQW9CLGFBQTRCO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBRFUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFoRGhEOztXQUVHO1FBRUgsaUJBQVksR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQWdCeEU7OztXQUdHO1FBQ0gsZ0JBQVcsR0FBVyxNQUFNLENB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RUFBRTtzQkFERCxLQUFLO2dCQU1OLFlBQVk7c0JBRFgsS0FBSztnQkFPTixNQUFNO3NCQURMLEtBQUs7Z0JBVU4sY0FBYztzQkFEYixLQUFLO2dCQU9OLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY2Nlc3NpYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWNjZXNzaWJsZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWNjZXNzaWJpbGl0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW1hZ2UsIEltYWdlRXZlbnQsIEltYWdlTW9kYWxFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL2ltYWdlLmNsYXNzJztcbmltcG9ydCB7IEludGVybmFsTGliSW1hZ2UgfSBmcm9tICcuLi8uLi9tb2RlbC9pbWFnZS1pbnRlcm5hbC5jbGFzcyc7XG5pbXBvcnQgeyBQcmV2aWV3Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJldmlldy1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNsaWRlQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2xpZGUtY29uZmlnLmludGVyZmFjZSc7XG5cbmltcG9ydCB7IE5FWFQsIFBSRVYgfSBmcm9tICcuLi8uLi91dGlscy91c2VyLWlucHV0LnV0aWwnO1xuaW1wb3J0IHsgZ2V0SW5kZXggfSBmcm9tICcuLi8uLi91dGlscy9pbWFnZS51dGlsJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2FjdGlvbi5lbnVtJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIERFRkFVTFRfUFJFVklFV19TSVpFIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gJy4uLy4uL21vZGVsL3NpemUuaW50ZXJmYWNlJztcbmltcG9ydCB7IExpYkNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2xpYi1jb25maWcuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDb21wb25lbnQgd2l0aCBpbWFnZSBwcmV2aWV3c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrcy1wcmV2aWV3cycsXG4gIHN0eWxlVXJsczogWydwcmV2aWV3cy5zY3NzJywgJy4uL3ByZXZpZXdzLWFycm93cy5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAncHJldmlld3MuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFByZXZpZXdzQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZCAoPj0wKSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGlzIGxpYnJhcnkuIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB5b3UgYXJlIHVzaW5nXG4gICAqIHRoZSBzZXJ2aWNlIHRvIGNhbGwgbW9kYWwgZ2FsbGVyeS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgSW50ZXJuYWxMaWJJbWFnZWAgdGhhdCByZXByZXNlbnQgdGhlIHZpc2libGUgaW1hZ2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBjdXJyZW50SW1hZ2U6IEludGVybmFsTGliSW1hZ2UgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBgSW50ZXJuYWxMaWJJbWFnZWAgdGhhdCByZXByZXNlbnQgdGhlIG1vZGVsIG9mIHRoaXMgbGlicmFyeSB3aXRoIGFsbCBpbWFnZXMsXG4gICAqIHRodW1icyBhbmQgc28gb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBpbWFnZXM6IEludGVybmFsTGliSW1hZ2VbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGVtcGxhdGUgcmVmZXJlbmNlIGZvciB0aGUgcmVuZGVyaW5nIG9mIHByZXZpZXdzLlxuICAgKiBUZW1wbGF0ZSBtYXkgYWNjZXNzIGZvbGxvd2luZyBjb250ZXh0IHZhcmlhYmxlczpcbiAgICogLSBwcmV2aWV3OiB0aGUgYEltYWdlYCBvYmplY3RcbiAgICogLSBkZWZhdWx0VGVtcGxhdGU6IHRoZSB0ZW1wbGF0ZSB1c2VkIGJ5IGRlZmF1bHQgdG8gcmVuZGVyIHRoZSBwcmV2aWV3IChpbiBjYXNlIHRoZSBuZWVkIGlzIHRvIHdyYXAgaXQpXG4gICAqL1xuICBASW5wdXQoKVxuICBjdXN0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgdGhlIGNsaWNrZWQgcHJldmlldy4gVGhlIHBheWxvYWQgY29udGFpbnMgdGhlIGBJbWFnZUV2ZW50YCBhc3NvY2lhdGVkIHRvIHRoZSBjbGlja2VkIHByZXZpZXcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgY2xpY2tQcmV2aWV3OiBFdmVudEVtaXR0ZXI8SW1hZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEltYWdlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBBY2Nlc3NpYmlsaXR5Q29uZmlnYCB0byBpbml0IGN1c3RvbSBhY2Nlc3NpYmlsaXR5IGZlYXR1cmVzLlxuICAgKiBGb3IgaW5zdGFuY2UsIGl0IGNvbnRhaW5zIHRpdGxlcywgYWx0IHRleHRzLCBhcmlhLWxhYmVscyBhbmQgc28gb24uXG4gICAqL1xuICBhY2Nlc3NpYmlsaXR5Q29uZmlnOiBBY2Nlc3NpYmlsaXR5Q29uZmlnIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT2JqZWN0IG9mIHR5cGUgYFNsaWRlQ29uZmlnYCB0byBnZXQgYGluZmluaXRlIHNsaWRpbmdgLlxuICAgKi9cbiAgc2xpZGVDb25maWc6IFNsaWRlQ29uZmlnIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT2JqZWN0IG9mIHR5cGUgYFByZXZpZXdDb25maWdgIHRvIGluaXQgUHJldmlld3NDb21wb25lbnQncyBmZWF0dXJlcy5cbiAgICogRm9yIGluc3RhbmNlLCBpdCBjb250YWlucyBhIHBhcmFtIHRvIHNob3cvaGlkZSB0aGlzIGNvbXBvbmVudCwgc2l6ZXMuXG4gICAqL1xuICBwcmV2aWV3Q29uZmlnOiBQcmV2aWV3Q29uZmlnIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogRW51bSBvZiB0eXBlIGBBY3Rpb25gIHRoYXQgcmVwcmVzZW50cyBhIG1vdXNlIGNsaWNrIG9uIGEgYnV0dG9uLlxuICAgKiBEZWNsYXJlZCBoZXJlIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIGNsaWNrQWN0aW9uOiBBY3Rpb24gPSBBY3Rpb24uQ0xJQ0s7XG4gIC8qKlxuICAgKiBFbnVtIG9mIHR5cGUgYEFjdGlvbmAgdGhhdCByZXByZXNlbnRzIGEga2V5Ym9hcmQgYWN0aW9uLlxuICAgKiBEZWNsYXJlZCBoZXJlIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIGtleWJvYXJkQWN0aW9uOiBBY3Rpb24gPSBBY3Rpb24uS0VZQk9BUkQ7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBgSW50ZXJuYWxMaWJJbWFnZWAgZXhwb3NlZCB0byB0aGUgdGVtcGxhdGUuIFRoaXMgZmllbGQgaXMgaW5pdGlhbGl6ZWRcbiAgICogYXBwbHlpbmcgdHJhbnNmb3JtYXRpb25zLCBkZWZhdWx0IHZhbHVlcyBhbmQgc28gb24gdG8gdGhlIGlucHV0IG9mIHRoZSBzYW1lIHR5cGUuXG4gICAqL1xuICBwcmV2aWV3czogSW50ZXJuYWxMaWJJbWFnZVtdID0gW107XG4gIC8qKlxuICAgKiBTdGFydCBpbmRleCAoaW5jbHVkZWQpIG9mIHRoZSBpbnB1dCBpbWFnZXMgdXNlZCB0byBkaXNwbGF5IHByZXZpZXdzLlxuICAgKi9cbiAgICAvLyBAdHMtaWdub3JlXG4gIHN0YXJ0OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFbmQgaW5kZXggKGV4Y2x1ZGVkKSBvZiB0aGUgaW5wdXQgaW1hZ2VzIHVzZWQgdG8gZGlzcGxheSBwcmV2aWV3cy5cbiAgICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICBlbmQ6IG51bWJlcjtcblxuICBkZWZhdWx0UHJldmlld1NpemU6IFNpemUgPSBERUZBVUxUX1BSRVZJRVdfU0laRTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCDCtG5nT25Jbml0wrQgdG8gYnVpbGQgYGNvbmZpZ1ByZXZpZXdgIGFwcGx5aW5nIGEgZGVmYXVsdCB2YWx1ZSBhbmQgYWxzbyB0b1xuICAgKiBpbml0IHRoZSBgcHJldmlld3NgIGFycmF5LlxuICAgKiBUaGlzIGlzIGFuIEFuZ3VsYXIncyBsaWZlY3ljbGUgaG9vaywgc28gaXRzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IEFuZ3VsYXIgaXRzZWxmLlxuICAgKiBJbiBwYXJ0aWN1bGFyLCBpdCdzIGNhbGxlZCBvbmx5IG9uZSB0aW1lISEhXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZCA9PT0gbnVsbCB8fCB0aGlzLmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGlkIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBjb25zdCBsaWJDb25maWc6IExpYkNvbmZpZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcodGhpcy5pZCk7XG4gICAgaWYgKCFsaWJDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGxpYkNvbmZpZyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgdGhpcy5hY2Nlc3NpYmlsaXR5Q29uZmlnID0gbGliQ29uZmlnLmFjY2Vzc2liaWxpdHlDb25maWc7XG4gICAgdGhpcy5zbGlkZUNvbmZpZyA9IGxpYkNvbmZpZy5zbGlkZUNvbmZpZztcbiAgICB0aGlzLnByZXZpZXdDb25maWcgPSBsaWJDb25maWcucHJldmlld0NvbmZpZztcbiAgICBpZiAoIXRoaXMuY3VycmVudEltYWdlIHx8ICF0aGlzLmltYWdlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIC0gY3VycmVudEltYWdlIGFuZCBpbWFnZXMgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIHRoaXMuaW5pdFByZXZpZXdzKHRoaXMuY3VycmVudEltYWdlLCB0aGlzLmltYWdlcyk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNoZWNrIGlmIGFuIGltYWdlIGlzIGFjdGl2ZSAoaS5lLiBhIHByZXZpZXcgaW1hZ2UpLlxuICAgKiBAcGFyYW0gSW50ZXJuYWxMaWJJbWFnZSBwcmV2aWV3IGlzIGFuIGltYWdlIHRvIGNoZWNrIGlmIGl0J3MgYWN0aXZlIG9yIG5vdFxuICAgKiBAcmV0dXJucyBib29sZWFuIHRydWUgaWYgaXMgYWN0aXZlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGlzQWN0aXZlKHByZXZpZXc6IEludGVybmFsTGliSW1hZ2UpOiBib29sZWFuIHtcbiAgICBpZiAoIXByZXZpZXcgfHwgIXRoaXMuY3VycmVudEltYWdlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBwcmV2aWV3LmlkID09PSB0aGlzLmN1cnJlbnRJbWFnZS5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgwrRuZ09uQ2hhbmdlc8K0IHRvIHVwZGF0ZSBgcHJldmlld3NgIGFycmF5LlxuICAgKiBBbHNvLCBib3RoIGBzdGFydGAgYW5kIGBlbmRgIGxvY2FsIHZhcmlhYmxlcyB3aWxsIGJlIHVwZGF0ZWQgYWNjb3JkaW5nbHkuXG4gICAqIFRoaXMgaXMgYW4gQW5ndWxhcidzIGxpZmVjeWNsZSBob29rLCBzbyBpdHMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgQW5ndWxhciBpdHNlbGYuXG4gICAqIEluIHBhcnRpY3VsYXIsIGl0J3MgY2FsbGVkIHdoZW4gYW55IGRhdGEtYm91bmQgcHJvcGVydHkgb2YgYSBkaXJlY3RpdmUgY2hhbmdlcyEhIVxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gICAgbGV0IGN1cnJlbnRJbWFnZSA9IGNoYW5nZXMuY3VycmVudEltYWdlPy5jdXJyZW50VmFsdWUgPz8gdGhpcy5jdXJyZW50SW1hZ2U7XG4gICAgbGV0IGltYWdlcyA9IGNoYW5nZXMuaW1hZ2VzPy5jdXJyZW50VmFsdWUgPz8gdGhpcy5pbWFnZXM7XG5cbiAgICBpZih0aGlzLnByZXZpZXdDb25maWcgJiYgY3VycmVudEltYWdlICYmIGltYWdlcykge1xuICAgICAgdGhpcy5pbml0UHJldmlld3MoIGN1cnJlbnRJbWFnZSwgaW1hZ2VzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSBldmVudHMgZnJvbSBib3RoIGtleWJvYXJkIGFuZCBtb3VzZSBvbiBhIHByZXZpZXcuXG4gICAqIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBgY2xpY2twcmV2aWV3YCBvdXRwdXQgd2l0aCB0aGUgaW5wdXQgcHJldmlldyBhcyBpdHMgcGF5bG9hZC5cbiAgICogQHBhcmFtIEludGVybmFsTGliSW1hZ2UgcHJldmlldyB0aGF0IHRyaWdnZXJlZCB0aGlzIG1ldGhvZFxuICAgKiBAcGFyYW0gS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKiBAcGFyYW0gQWN0aW9uIGFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGUgc291cmNlIGV2ZW50IG9yIGBBY3Rpb24uTk9STUFMYCBpZiBub3Qgc3BlY2lmaWVkXG4gICAqL1xuICBvbkltYWdlRXZlbnQocHJldmlldzogSW50ZXJuYWxMaWJJbWFnZSwgZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50LCBhY3Rpb246IEFjdGlvbiA9IEFjdGlvbi5OT1JNQUwpOiB2b2lkIHtcbiAgICAvLyBJdCdzIHN1Z2dlc3RlZCB0byBzdG9wIHByb3BhZ2F0aW9uIG9mIHRoZSBldmVudCwgc28gdGhlXG4gICAgLy8gQ2RrIGJhY2tncm91bmQgd2lsbCBub3QgY2F0Y2ggYSBjbGljayBhbmQgY2xvc2UgdGhlIG1vZGFsIChsaWtlIGl0IGRvZXMgb24gV2luZG93cyBDaHJvbWUvRkYpLlxuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuaWQgfHwgIXRoaXMuaW1hZ2VzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBpZCBhbmQgaW1hZ2VzIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucHJldmlld0NvbmZpZyB8fCAhdGhpcy5wcmV2aWV3Q29uZmlnLmNsaWNrYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IG51bWJlciA9IHN1cGVyLmhhbmRsZUltYWdlRXZlbnQoZXZlbnQpO1xuICAgIGlmIChyZXN1bHQgPT09IE5FWFQgfHwgcmVzdWx0ID09PSBQUkVWKSB7XG4gICAgICB0aGlzLmNsaWNrUHJldmlldy5lbWl0KG5ldyBJbWFnZU1vZGFsRXZlbnQodGhpcy5pZCwgYWN0aW9uLCBnZXRJbmRleChwcmV2aWV3LCB0aGlzLmltYWdlcykpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSBldmVudHMgZnJvbSBib3RoIGtleWJvYXJkIGFuZCBtb3VzZSBvbiBhIG5hdmlnYXRpb24gYXJyb3cuXG4gICAqIEl0IGFsc28gZW1pdHMgYW4gZXZlbnQgdG8gc3BlY2lmeSB3aGljaCBhcnJvdy5cbiAgICogQHBhcmFtIHN0cmluZyBkaXJlY3Rpb24gb2YgdGhlIG5hdmlnYXRpb24gdGhhdCBjYW4gYmUgZWl0aGVyICduZXh0JyBvciAncHJldidcbiAgICogQHBhcmFtIEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50IGV2ZW50IHBheWxvYWRcbiAgICogQHBhcmFtIEFjdGlvbiBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIHNvdXJjZSBldmVudCBvciBgQWN0aW9uLk5PUk1BTGAgaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgb25OYXZpZ2F0aW9uRXZlbnQoZGlyZWN0aW9uOiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudCwgYWN0aW9uOiBBY3Rpb24gPSBBY3Rpb24uTk9STUFMKTogdm9pZCB7XG4gICAgY29uc3QgcmVzdWx0OiBudW1iZXIgPSBzdXBlci5oYW5kbGVOYXZpZ2F0aW9uRXZlbnQoZGlyZWN0aW9uLCBldmVudCk7XG4gICAgaWYgKHJlc3VsdCA9PT0gTkVYVCkge1xuICAgICAgdGhpcy5uZXh0KCk7XG4gICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IFBSRVYpIHtcbiAgICAgIHRoaXMucHJldmlvdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgaW4gdGhlIHRlbXBsYXRlIHRvIHRyYWNrIGlkcyBpbiBuZ0Zvci5cbiAgICogQHBhcmFtIG51bWJlciBpbmRleCBvZiB0aGUgYXJyYXlcbiAgICogQHBhcmFtIEltYWdlIGl0ZW0gb2YgdGhlIGFycmF5XG4gICAqIEByZXR1cm5zIG51bWJlciB0aGUgaWQgb2YgdGhlIGl0ZW1cbiAgICovXG4gIHRyYWNrQnlJZChpbmRleDogbnVtYmVyLCBpdGVtOiBJbWFnZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBwcmV2aWV3cyAnbGVmdCBhcnJvdycgc2hvdWxkIGJlIGRpc3BsYXllZCBvciBub3QuXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBkaXNwbGF5TGVmdFByZXZpZXdzQXJyb3coKTogYm9vbGVhbiB7XG4gICAgLy8gRG9uJ3Qgc2hvdyBhcnJvd3MgaWYgcmVxdWVzdGVkIHByZXZpZXdzIG51bWJlciBlcXVhbHMgb3IgaXMgZ3JlYXRlZCB0aGFuIHRvdGFsIG51bWJlciBvZiBpbWdhZXNcbiAgICBpZih0aGlzLnByZXZpZXdDb25maWc/Lm51bWJlciAhPT0gdW5kZWZpbmVkICYmIHRoaXMuaW1hZ2VzICYmIHRoaXMucHJldmlld0NvbmZpZz8ubnVtYmVyID49IHRoaXMuaW1hZ2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLnByZXZpZXdDb25maWc/LmFycm93cyAmJiB0aGlzLnN0YXJ0ID4gMCkgfHwgISF0aGlzLnNsaWRlQ29uZmlnPy5pbmZpbml0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHByZXZpZXdzICdyaWdodCBhcnJvdycgc2hvdWxkIGJlIGRpc3BsYXllZCBvciBub3QuXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBkaXNwbGF5UmlnaHRQcmV2aWV3c0Fycm93KCk6IGJvb2xlYW4ge1xuICAgIC8vIERvbid0IHNob3cgYXJyb3dzIGlmIHJlcXVlc3RlZCBwcmV2aWV3cyBudW1iZXIgZXF1YWxzIG9yIGlzIGdyZWF0ZWQgdGhhbiB0b3RhbCBudW1iZXIgb2YgaW1nYWVzXG4gICAgaWYodGhpcy5wcmV2aWV3Q29uZmlnPy5udW1iZXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmltYWdlcyAmJiB0aGlzLnByZXZpZXdDb25maWc/Lm51bWJlciA+PSB0aGlzLmltYWdlcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5wcmV2aWV3Q29uZmlnPy5hcnJvd3MgJiYgdGhpcy5pbWFnZXMgJiYgdGhpcy5lbmQgPCB0aGlzLmltYWdlcy5sZW5ndGgpIHx8ICEhdGhpcy5zbGlkZUNvbmZpZz8uaW5maW5pdGU7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gaW5pdCBwcmV2aWV3cyBiYXNlZCBvbiB0aGUgY3VycmVudEltYWdlIGFuZCB0aGUgZnVsbCBhcnJheSBvZiBpbWFnZXMuXG4gICAqIFRoZSBjdXJyZW50IGltYWdlIGluIG1hbmRhdG9yeSB0byBzaG93IGFsd2F5cyB0aGUgY3VycmVudCBwcmV2aWV3IChhcyBoaWdobGlnaHRlZCkuXG4gICAqIEBwYXJhbSBJbnRlcm5hbExpYkltYWdlIGN1cnJlbnRJbWFnZSB0byBkZWNpZGUgaG93IHRvIHNob3cgcHJldmlld3MsIGJlY2F1c2UgSSBhbHdheXMgd2FudCB0byBzZWUgdGhlIGN1cnJlbnQgaW1hZ2UgYXMgaGlnaGxpZ2h0ZWRcbiAgICogQHBhcmFtIEludGVybmFsTGliSW1hZ2VbXSBpbWFnZXMgaXMgdGhlIGFycmF5IG9mIGFsbCBpbWFnZXMuXG4gICAqL1xuICBwcml2YXRlIGluaXRQcmV2aWV3cyhjdXJyZW50SW1hZ2U6IEludGVybmFsTGliSW1hZ2UsIGltYWdlczogSW50ZXJuYWxMaWJJbWFnZVtdKTogdm9pZCB7XG4gICAgdGhpcy5zZXRJbmRleGVzUHJldmlld3MoY3VycmVudEltYWdlLCBpbWFnZXMpO1xuICAgIHRoaXMucHJldmlld3MgPSBpbWFnZXMuZmlsdGVyKChpbWc6IEludGVybmFsTGliSW1hZ2UsIGk6IG51bWJlcikgPT4gaSA+PSB0aGlzLnN0YXJ0ICYmIGkgPCB0aGlzLmVuZCk7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gdXBkYXRlIGJvdGggYHN0YXJ0YCBhbmQgYGVuZGAgYmFzZWQgb24gdGhlIGN1cnJlbnRJbWFnZS5cbiAgICovXG4gIHByaXZhdGUgc2V0SW5kZXhlc1ByZXZpZXdzKGN1cnJlbnRJbWFnZTogSW50ZXJuYWxMaWJJbWFnZSwgaW1hZ2VzOiBJbnRlcm5hbExpYkltYWdlW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJldmlld0NvbmZpZyB8fCAhaW1hZ2VzIHx8ICFjdXJyZW50SW1hZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIHByZXZpZXdDb25maWcsIGN1cnJlbnRJbWFnZSBhbmQgaW1hZ2VzIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBjb25zdCBwcmV2aWV3c051bWJlciA9IHRoaXMucHJldmlld0NvbmZpZy5udW1iZXIgYXMgbnVtYmVyO1xuICAgIGxldCBzdGFydCA9IGdldEluZGV4KGN1cnJlbnRJbWFnZSwgaW1hZ2VzKSAtIE1hdGguZmxvb3IocHJldmlld3NOdW1iZXIgLyAyKTtcbiAgICAvLyBzdGFydCBpcywgYXQgYSBtaW5pbXVtLCB0aGUgZmlyc3QgaW5kZXhcbiAgICBpZihzdGFydCA8IDApIHN0YXJ0ID0gMDtcbiAgICAvLyBlbmQgaW5kZXhcbiAgICBsZXQgZW5kID0gc3RhcnQgKyBwcmV2aWV3c051bWJlcjtcbiAgICAvLyBlbmQgaXMsIGF0IGEgbWF4aW11bSwgdGhlIGxhc3QgaW5kZXhcbiAgICBpZihlbmQgPiBpbWFnZXMubGVuZ3RoKSB7XG4gICAgICBzdGFydCAtPSBlbmQgLSBpbWFnZXMubGVuZ3RoO1xuICAgICAgaWYoc3RhcnQgPCAwKSBzdGFydCA9IDA7IC8vIHN0YXJ0IGlzLCBhdCBhIG1pbmltdW0sIHRoZSBmaXJzdCBpbmRleFxuICAgICAgZW5kID0gaW1hZ2VzLmxlbmd0aDtcbiAgICB9XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgdmlzaWJsZSBwcmV2aWV3cyBuYXZpZ2F0aW5nIHRvIHRoZSByaWdodCAobmV4dCkuXG4gICAqL1xuICBwcml2YXRlIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmltYWdlcyB8fCAhdGhpcy5wcmV2aWV3Q29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBpbWFnZXMgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmKHRoaXMuZW5kID49IHRoaXMuaW1hZ2VzLmxlbmd0aCkge1xuICAgICAgLy8gY2hlY2sgaWYgbmV4dEltYWdlIHNob3VsZCBiZSBibG9ja2VkXG4gICAgICBjb25zdCBwcmV2ZW50U2xpZGluZyA9ICEhdGhpcy5zbGlkZUNvbmZpZyAmJiB0aGlzLnNsaWRlQ29uZmlnLmluZmluaXRlID09PSBmYWxzZTtcbiAgICAgIGlmKHByZXZlbnRTbGlkaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RhcnQgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0Kys7XG4gICAgfVxuICAgIHRoaXMuZW5kID0gdGhpcy5zdGFydCArIE1hdGgubWluKCh0aGlzLnByZXZpZXdDb25maWcubnVtYmVyIGFzIG51bWJlciksIHRoaXMuaW1hZ2VzLmxlbmd0aCk7XG5cbiAgICB0aGlzLnByZXZpZXdzID0gdGhpcy5pbWFnZXMuZmlsdGVyKChpbWc6IEludGVybmFsTGliSW1hZ2UsIGk6IG51bWJlcikgPT4gaSA+PSB0aGlzLnN0YXJ0ICYmIGkgPCB0aGlzLmVuZCk7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gdXBkYXRlIHRoZSB2aXNpYmxlIHByZXZpZXdzIG5hdmlnYXRpbmcgdG8gdGhlIGxlZnQgKHByZXZpb3VzKS5cbiAgICovXG4gIHByaXZhdGUgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmltYWdlcyB8fCAhdGhpcy5wcmV2aWV3Q29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBpbWFnZXMgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmKHRoaXMuc3RhcnQgPD0gMCkge1xuICAgICAgLy8gY2hlY2sgaWYgcHJldkltYWdlIHNob3VsZCBiZSBibG9ja2VkXG4gICAgICBjb25zdCBwcmV2ZW50U2xpZGluZyA9ICEhdGhpcy5zbGlkZUNvbmZpZyAmJiB0aGlzLnNsaWRlQ29uZmlnLmluZmluaXRlID09PSBmYWxzZTtcbiAgICAgIGlmKHByZXZlbnRTbGlkaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW5kID0gdGhpcy5pbWFnZXMubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuZC0tO1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0ID0gdGhpcy5lbmQgLSBNYXRoLm1pbigodGhpcy5wcmV2aWV3Q29uZmlnLm51bWJlciBhcyBudW1iZXIpLCB0aGlzLmltYWdlcy5sZW5ndGgpO1xuXG4gICAgdGhpcy5wcmV2aWV3cyA9IHRoaXMuaW1hZ2VzLmZpbHRlcigoaW1nOiBJbnRlcm5hbExpYkltYWdlLCBpOiBudW1iZXIpID0+IGkgPj0gdGhpcy5zdGFydCAmJiBpIDwgdGhpcy5lbmQpO1xuICB9XG5cbn1cbiIsIjxuYXYgY2xhc3M9XCJwcmV2aWV3cy1jb250YWluZXJcIlxuICAgICBbY2xhc3MubW9iaWxlLXZpc2libGVdPVwicHJldmlld0NvbmZpZz8ubW9iaWxlVmlzaWJsZVwiXG4gICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWNjZXNzaWJpbGl0eUNvbmZpZz8ucHJldmlld3NDb250YWluZXJBcmlhTGFiZWxcIlxuICAgICBbdGl0bGVdPVwiYWNjZXNzaWJpbGl0eUNvbmZpZz8ucHJldmlld3NDb250YWluZXJUaXRsZVwiPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmV2aWV3Q29uZmlnPy52aXNpYmxlXCI+XG4gICAgPGEgY2xhc3M9XCJuYXYtbGVmdFwiXG4gICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY2Nlc3NpYmlsaXR5Q29uZmlnPy5wcmV2aWV3U2Nyb2xsUHJldkFyaWFMYWJlbFwiXG4gICAgICAgW3RhYkluZGV4XT1cImRpc3BsYXlMZWZ0UHJldmlld3NBcnJvdygpID8gMCA6IC0xXCIgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGlvbkV2ZW50KCdsZWZ0JywgJGV2ZW50KVwiIChrZXl1cCk9XCJvbk5hdmlnYXRpb25FdmVudCgnbGVmdCcsICRldmVudClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnNpZGUge3sgZGlzcGxheUxlZnRQcmV2aWV3c0Fycm93KCkgPyAnbGVmdC1hcnJvdy1wcmV2aWV3LWltYWdlJyA6ICdlbXB0eS1hcnJvdy1wcmV2aWV3LWltYWdlJ319XCJcbiAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgW3RpdGxlXT1cImFjY2Vzc2liaWxpdHlDb25maWc/LnByZXZpZXdTY3JvbGxQcmV2VGl0bGVcIj48L2Rpdj5cbiAgICA8L2E+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcmV2aWV3IG9mIHByZXZpZXdzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpbmRleCA9IGluZGV4XCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWNvbnRhaW5lciB7eyFwcmV2aWV3Q29uZmlnPy5jbGlja2FibGUgPyAnIHVuY2xpY2thYmxlJyA6ICcnfX1cIlxuICAgICAgICAoY2xpY2spPVwib25JbWFnZUV2ZW50KHByZXZpZXcsICRldmVudCwgY2xpY2tBY3Rpb24pXCJcbiAgICAgICAgKGtleXVwKT1cIm9uSW1hZ2VFdmVudChwcmV2aWV3LCAkZXZlbnQsIGtleWJvYXJkQWN0aW9uKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCIhY3VzdG9tVGVtcGxhdGUgPyBkZWZhdWx0VGVtcGxhdGUgOiBjdXN0b21UZW1wbGF0ZSA7IGNvbnRleHQ6e3ByZXZpZXcsIGRlZmF1bHRUZW1wbGF0ZX1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJwcmV2aWV3Py5tb2RhbD8uaW1nXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbnNpZGUgcHJldmlldy1pbWFnZSB7e2lzQWN0aXZlKHByZXZpZXcpID8gJ2FjdGl2ZScgOiAnJ319XCJcbiAgICAgICAgICAgICAgW3NyY109XCJwcmV2aWV3LnBsYWluPy5pbWcgPyBwcmV2aWV3LnBsYWluPy5pbWchIDogcHJldmlldy5tb2RhbC5pbWdcIlxuICAgICAgICAgICAgICBrc0ZhbGxiYWNrSW1hZ2UgW2ZhbGxiYWNrSW1nXT1cInByZXZpZXcucGxhaW4/LmZhbGxiYWNrSW1nID8gcHJldmlldy5wbGFpbj8uZmFsbGJhY2tJbWcgOiBwcmV2aWV3Lm1vZGFsLmZhbGxiYWNrSW1nXCJcbiAgICAgICAgICAgICAga3NTaXplIFtzaXplQ29uZmlnXT1cInt3aWR0aDogcHJldmlld0NvbmZpZz8uc2l6ZSA/IHByZXZpZXdDb25maWc/LnNpemU/LndpZHRoISA6IGRlZmF1bHRQcmV2aWV3U2l6ZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogcHJldmlld0NvbmZpZz8uc2l6ZSA/IHByZXZpZXdDb25maWc/LnNpemU/LmhlaWdodCEgOiBkZWZhdWx0UHJldmlld1NpemUuaGVpZ2h0fVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJldmlldy5tb2RhbC5hcmlhTGFiZWwgPyBwcmV2aWV3Lm1vZGFsLmFyaWFMYWJlbCA6ICcnXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIihwcmV2aWV3Lm1vZGFsLnRpdGxlIHx8IHByZXZpZXcubW9kYWwudGl0bGUgPT09ICcnKSA/IHByZXZpZXcubW9kYWwudGl0bGUgOiAnJ1wiXG4gICAgICAgICAgICAgIGFsdD1cInt7cHJldmlldy5tb2RhbC5hbHQgPyBwcmV2aWV3Lm1vZGFsLmFsdCA6ICcnfX1cIlxuICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiMFwiIHJvbGU9XCJpbWdcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICA8YSBjbGFzcz1cIm5hdi1yaWdodFwiXG4gICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY2Nlc3NpYmlsaXR5Q29uZmlnPy5wcmV2aWV3U2Nyb2xsTmV4dEFyaWFMYWJlbFwiXG4gICAgICAgW3RhYkluZGV4XT1cImRpc3BsYXlSaWdodFByZXZpZXdzQXJyb3coKSA/IDAgOiAtMVwiIHJvbGU9XCJidXR0b25cIlxuICAgICAgIChjbGljayk9XCJvbk5hdmlnYXRpb25FdmVudCgncmlnaHQnLCAkZXZlbnQpXCIgKGtleXVwKT1cIm9uTmF2aWdhdGlvbkV2ZW50KCdyaWdodCcsICRldmVudClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnNpZGUge3sgZGlzcGxheVJpZ2h0UHJldmlld3NBcnJvdygpID8gJ3JpZ2h0LWFycm93LXByZXZpZXctaW1hZ2UnIDogJ2VtcHR5LWFycm93LXByZXZpZXctaW1hZ2UnfX1cIlxuICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICBbdGl0bGVdPVwiYWNjZXNzaWJpbGl0eUNvbmZpZz8ucHJldmlld1Njcm9sbE5leHRUaXRsZVwiPjwvZGl2PlxuICAgIDwvYT5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvbmF2PlxuIl19