@smarterplan/ngx-smarterplan-locations 0.0.21 → 0.1.0

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 (35) hide show
  1. package/esm2020/lib/components/detail-location/detail-location.component.mjs +3 -3
  2. package/esm2020/lib/components/form-location/form-location.component.mjs +3 -3
  3. package/esm2020/lib/components/images/images.component.mjs +3 -3
  4. package/esm2020/lib/components/locations/locations.component.mjs +3 -3
  5. package/esm2020/lib/components/locations/map/map-popup/map-popup.component.mjs +1 -1
  6. package/esm2020/lib/components/locations/map/map.component.mjs +1 -1
  7. package/esm2020/lib/components/plans/calibration/calibration.component.mjs +3 -3
  8. package/esm2020/lib/components/plans/edit-plan/edit-plan.component.mjs +3 -3
  9. package/esm2020/lib/components/plans/plans.component.mjs +3 -3
  10. package/esm2020/lib/components/tab-navigation/tab-navigation.component.mjs +1 -1
  11. package/esm2020/lib/components/visits/visits.component.mjs +3 -3
  12. package/esm2020/lib/components/zones/add-zone/add-zone.component.mjs +52 -111
  13. package/esm2020/lib/components/zones/zones.component.mjs +13 -9
  14. package/esm2020/lib/helper.service.mjs +97 -2
  15. package/esm2020/lib/ngx-smarterplan-locations.module.mjs +2 -2
  16. package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs +157 -118
  17. package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
  18. package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs +157 -116
  19. package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
  20. package/lib/components/detail-location/detail-location.component.d.ts +1 -1
  21. package/lib/components/form-location/form-location.component.d.ts +1 -1
  22. package/lib/components/images/images.component.d.ts +1 -1
  23. package/lib/components/locations/locations.component.d.ts +1 -1
  24. package/lib/components/locations/map/map-popup/map-popup.component.d.ts +1 -1
  25. package/lib/components/locations/map/map.component.d.ts +1 -1
  26. package/lib/components/plans/calibration/calibration.component.d.ts +1 -1
  27. package/lib/components/plans/edit-plan/edit-plan.component.d.ts +1 -1
  28. package/lib/components/plans/plans.component.d.ts +1 -1
  29. package/lib/components/tab-navigation/tab-navigation.component.d.ts +1 -1
  30. package/lib/components/visits/visits.component.d.ts +1 -1
  31. package/lib/components/zones/add-zone/add-zone.component.d.ts +8 -30
  32. package/lib/components/zones/zones.component.d.ts +2 -2
  33. package/lib/helper.service.d.ts +39 -0
  34. package/lib/ngx-smarterplan-locations.module.d.ts +1 -1
  35. package/package.json +3 -3
@@ -1,9 +1,9 @@
1
1
  import { Component, ViewChild } from '@angular/core';
2
2
  import { getDocument } from "pdfjs-dist";
3
- import { getMetaForImage } from 'ngx-smarterplan-core';
3
+ import { getMetaForImage } from '@smarterplan/ngx-smarterplan-core';
4
4
  import panzoom from 'panzoom';
5
5
  import * as i0 from "@angular/core";
6
- import * as i1 from "ngx-smarterplan-core";
6
+ import * as i1 from "@smarterplan/ngx-smarterplan-core";
7
7
  import * as i2 from "@angular/router";
8
8
  import * as i3 from "@ngx-translate/core";
9
9
  import * as i4 from "../../tab-navigation/tab-navigation.component";
@@ -481,4 +481,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
481
481
  type: ViewChild,
482
482
  args: ["canvasDiv"]
483
483
  }] } });
484
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsaWJyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvY2FsaWJyYXRpb24vY2FsaWJyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvY2FsaWJyYXRpb24vY2FsaWJyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTyxFQUFzRyxlQUFlLEVBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDcEwsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7QUFPOUIsTUFBTSxPQUFPLG9CQUFvQjtJQXFGN0IsWUFDWSx1QkFBZ0QsRUFDaEQsV0FBd0IsRUFDeEIsS0FBcUIsRUFDckIsTUFBYyxFQUNkLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNwQyxTQUEyQjtRQVAzQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBM0Z2QyxxQ0FBcUM7UUFDckMsY0FBUyxHQUFlLEVBQUUs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QkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7U0FDM0Q7SUFDTCxDQUFDOztpSEEvbEJRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLCtKQ2JqQyxneElBMEZNOzJGRDdFTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzhTQWFELFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZ2V0RG9jdW1lbnQgfSBmcm9tIFwicGRmanMtZGlzdFwiO1xuaW1wb3J0IHsgUERGRG9jdW1lbnRQcm94eSB9IGZyb20gXCJuZzItcGRmLXZpZXdlclwiO1xuaW1wb3J0IHsgWm9uZSwgTWVudUl0ZW0sIFBsYW4sIFNwYWNlLCBOYXZpZ2F0aW9uLCBQbGFuU2VydmljZSwgWm9uZVNlcnZpY2UsIFNwYWNlU2VydmljZSwgTmF2aWdhdGlvblNlcnZpY2UsIGdldE1ldGFGb3JJbWFnZSwgTWF0dGVycG9ydEltcG9ydFNlcnZpY2UgfSBmcm9tICduZ3gtc21hcnRlcnBsYW4tY29yZSc7XG5pbXBvcnQgcGFuem9vbSBmcm9tICdwYW56b29tJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNhbGlicmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGlicmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsaWJyYXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYWxpYnJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICAvKiogSXRlbSB0byBkaXNwbGF5IGZvciB0aGUgbmF2YmFyICovXG4gICAgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG5cbiAgICAvKiogQ2FudmFzIChQbGFuKSAqL1xuICAgIGNhbnZhcztcblxuICAgIC8qKiBDYW52YXNEaXYgKERpdiB0aGF0IGNvbnRhaW4gdGhlIGNhbnZhcyArIG1hdHRlcnBvcnQgaWZyYW1lKSAqL1xuICAgIEBWaWV3Q2hpbGQoXCJjYW52YXNEaXZcIikgY2FudmFzRGl2OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIFNpemUgb2YgdGhlIGNhbnZhcyAmIG1hdHRlcnBvcnQgaWZyYW1lICovXG4gICAgY2FudmFzU2l6ZTogeyB3OiBudW1iZXI7IGg6IG51bWJlciB9O1xuXG4gICAgLyoqIFpvb20gcmF0aW8gb2YgdGhlIGNhbnZhcy9wbGFuICAqL1xuICAgIGNhbnZhc1pvb20gPSAwO1xuXG4gICAgLyoqIE9wYWNpdHkgZm9yIG1hdHRlcnBvcnQgaWZyYW1lICovXG4gICAgb3BhY2l0eTogbnVtYmVyID0gNTA7XG5cbiAgICAvKiogQ3VycmVudCByb3RhdGlvbiBmb3IgbWF0dGVycG9ydCwgWzAtMzYwXSwgIG1hdHRlcnBvcnQgcm90YXRpb24gaXMgYmluZCB0byBpbnB1dCByYW5nZSAqL1xuICAgIHJvdGF0aW9uOiBudW1iZXIgPSAxODA7XG5cbiAgICAvKiogUHJldmlvdXMgcm90YXRpb24sIHVzZSB0byBjYWxjdWxhdGUgdGhlIGRlbHRhUm90YXRpb24gdG8gcm90YXRlLCB3aGVuIHVzZXIgY2hhbmdlIHJvdGF0aW9uIHZhbHVlIHVzaW5nIHJhbmdlIGlucHV0ICovXG4gICAgcHJldlJvdGF0aW9uOiBudW1iZXIgPSAxODA7XG5cbiAgICAvKiogQ3VycmVudCBDYW1lcmEgUG9zZSAqL1xuICAgIGNhbWVyYVBvc2U6IGFueTtcblxuICAgIC8qKiBUcnVlIHdoZW4gdGhlIHVzZXIgaXMgY3VycmVudGx5IHJvdGF0aW5nIHdpdGggdGhlIGlucHV0IHJhbmdlLCB0aGUgbWF0dGVycG9ydCByb3RhdGlvbiBldmVudHMgd2lsbCBiZSBpZ25vcmVkICovXG4gICAgaXNSb3RhdGluZ1JhbmdlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogUm90YXRpbmcgcXVldWUgZXZlbnQgdG8gc2VuZCB0byBtYXR0ZXJwb3J0ICovXG4gICAgcm90YXRpbmdRdWV1ZUV2ZW50OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLyoqIFRydWUgd2hlbiBWZXJ0aWNhbCBzeW1tZXRyeSBpcyBlbmFibGVkICovXG4gICAgcmVmbGVjdFYgPSBmYWxzZTtcblxuICAgIC8qKiBUcnVlIHdoZW4gSG9yaXpvbnRhbCBzeW1tZXRyeSBpcyBlbmFibGVkICovXG4gICAgcmVmbGVjdEggPSBmYWxzZTtcblxuICAgIGNob3NlblBsYW46IFBsYW47XG5cbiAgICBzcGFjZUlEOiBzdHJpbmc7XG5cbiAgICBjdXJyZW50U3BhY2U6IFNwYWNlO1xuXG4gICAgY3VycmVudFpvbmU6IFpvbmU7XG5cbiAgICBjaG9zZW5QbGFuSXNQZGYgPSBmYWxzZTtcblxuICAgIC8qKiBGaXJzdCBQb2ludCBpbiB2aXNpdCwgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGNhbGlicmF0aW9uICAqL1xuICAgIGZpcnN0TWFya1Zpc2l0ID0geyB4OiAwLCB5OiAwIH07XG5cbiAgICAvKiogU2Vjb25kIFBvaW50IGluIHZpc2l0LCB1c2VkIHRvIGRldGVybWluZSB0aGUgY2FsaWJyYXRpb24gICovXG4gICAgc2Vjb25kTWFya1Zpc2l0ID0geyB4OiAwLjUsIHk6IDAuNSB9O1xuXG4gICAgLyoqIEVxdWl2YWxlbnQgb2YgJ2ZpcnN0TWFya1Zpc2l0JyBpbiBjYW52YXMgICovXG4gICAgZmlyc3RNYXJrUGxhbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9ID0geyB4OiAwLCB5OiAwIH07XG5cbiAgICAvKiogRXF1aXZhbGVudCBvZiAnc2Vjb25kTWFya1Zpc2l0JyBpbiBjYW52YXMgICovXG4gICAgc2Vjb25kTWFya1BsYW46IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IHsgeDogMCwgeTogMCB9O1xuXG4gICAgLyoqIENhbGlicmF0aW9uIHJlc3VsdCwgKG9mZnNldFgsIG9mZnNldFksIHgsIHkpICovXG4gICAgY2FsaWJyYWdlOiBhbnkgPSB7fTtcblxuICAgIC8qKiBJcyBpbiBwcmV2aWV3IG1vZGUgKHNlZSBzY2FuIHJlc3VsdCkgKi9cbiAgICBwcmV2aWV3ID0gZmFsc2U7XG5cbiAgICAvKiogTWF0dGVycG9ydCBpcyBsb2FkaW5nICovXG4gICAgbG9hZGluZyA9IHRydWU7XG5cbiAgICAvKiBmb3IgcGFuIGFuZCB6b29tIG9mIGNhbnZhcyAqL1xuICAgIHBhbnpvb206IGFueTtcblxuICAgIGN1cnJlbnROYXZpZ2F0aW9uczogTmF2aWdhdGlvbltdO1xuXG4gICAgcG9zaXRpb25zOiB7IG5hdklEOiBzdHJpbmc7IHBsYW5JRDogc3RyaW5nOyB4OiBudW1iZXI7IHk6IG51bWJlciB9W10gPSBbXTtcblxuICAgIGZsb29yczogYW55W10gPSBbXTtcblxuICAgIGN1cnJlbnRGbG9vcjtcblxuICAgIHpvb21DYW5CZUNoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0SW1wb3J0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBwbGFuU2VydmljZTogUGxhblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzcGFjZVNlcnZpY2U6IFNwYWNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICkge31cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5yZW1vdmVGcmFtZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3BhY2VJRCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuc3BhY2VJRDtcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2UgPSBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS5nZXRTcGFjZSh0aGlzLnNwYWNlSUQpO1xuXG4gICAgICAgIC8qKiBNZW51IG5hdiBiYXIgKi9cbiAgICAgICAgdGhpcy5zZXR1cE1lbnVJdGVtcygpO1xuXG4gICAgICAgIHRoaXMuY2hvc2VuUGxhbiA9IHRoaXMucGxhblNlcnZpY2UuZ2V0Q2hvc2VuUGxhbigpO1xuXG4gICAgICAgIGlmICh0aGlzLmNob3NlblBsYW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2hvc2VuUGxhbklzUGRmID0gdGhpcy5jaG9zZW5QbGFuLmFubmV4ZS5pbmNsdWRlcyhcInBkZlwiKTtcbiAgICAgICAgICAgIHRoaXMubGF1bmNoVmlld2VyKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZUNhbnZhcygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbnpvb20gPSBwYW56b29tKHRoaXMuY2FudmFzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNQYWRkaW5nOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4Wm9vbTogMi41LFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluWm9vbTogMC4xLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFpvb206IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB6b29tU3BlZWQ6IDAuMDIsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICAgICBcIi9kYXNoYm9hcmQvbG9jYWxpc2F0aW9uXCIsXG4gICAgICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgICAgIFwicGxhbnNcIixcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVOVSBOQVYgQkFSXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4gICAgc2V0dXBNZW51SXRlbXMoKSB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zID0gW1xuICAgICAgICAgICAgeyBsYWJlbDogXCJMb2NhdGlvbnNcIiwgdXJsOiBcIi9sb2NhbGlzYXRpb25cIiB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmN1cnJlbnRTcGFjZS5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLnNwYWNlSUR9YCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiUGxhbnNcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAvbG9jYWxpc2F0aW9uLyR7dGhpcy5jdXJyZW50U3BhY2UuaWR9L3BsYW5zYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiQ2FsaWJyYXRpb25cIixcbiAgICAgICAgICAgICAgICB1cmw6IGAvbG9jYWxpc2F0aW9uLyR7dGhpcy5jdXJyZW50U3BhY2UuaWR9L3BsYW4tY2FsaWJyYXRpb24/c3BhY2VJRD0ke3RoaXMuY3VycmVudFNwYWNlLmlkfWAsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOVkFTXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbiAgICAvKiogRGlzcGxheSB0aGUgcGxhbiAqL1xuICAgIGFzeW5jIGNvbmZpZ3VyZUNhbnZhcygpIHtcbiAgICAgICAgLyoqIEdldCBjYW52YXMgKi9cbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcykge1xuICAgICAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICBcIiNjYW52YXNcIixcbiAgICAgICAgICAgICkgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5jaG9zZW5QbGFuSXNQZGYpIHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gYXdhaXQgZ2V0TWV0YUZvckltYWdlKHRoaXMuY2hvc2VuUGxhbi5maWxlcGF0aCk7XG4gICAgICAgICAgICAvKiogQ29tcHV0ZSB0aGUgbmV3IHNpemUgZm9yIHRoZSBjYW52YXMvbWF0dGVycG9ydCwgYmFzZSBvbiB0aGUgZGltZW5zaW9uIG9mIHRoZSBwbGFuLCBrZWVwaW5nIHRoZSByYXRpbyAqL1xuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuZ2V0U2l6ZUZvckNhbnZhcyhpbWFnZS53aWR0aCwgaW1hZ2UuaGVpZ2h0KTtcblxuICAgICAgICAgICAgLyoqIENvbXB1dGUgdGhlIHBsYW4gem9vbSByYXRpbyAodXNlIGZvciB0aGUgY2FsaWJyYXRpb24gbGF0ZXIpICovXG4gICAgICAgICAgICB0aGlzLmNhbnZhc1pvb20gPSBzaXplLncgLyBpbWFnZS53aWR0aDtcblxuICAgICAgICAgICAgdGhpcy5yZXNpemVWaWV3KHNpemUpO1xuXG4gICAgICAgICAgICAvKiogRHJhdyBQbGFuIG9uIHRoZSBjYW52YXMgKi9cbiAgICAgICAgICAgIHRoaXMuZHJhd0ltYWdlKHRoaXMuY2hvc2VuUGxhbi5maWxlcGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICB0aGlzLnBkZlRvQ2FudmFzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVXBkYXRlIHNpemUgb2YgdGhlIGNhbnZhcy9tYXR0ZXJwb3J0ICovXG4gICAgcmVzaXplVmlldyhzaXplKSB7XG4gICAgICAgIHRoaXMuY2FudmFzRGl2Lm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtzaXplLnd9cHhgO1xuICAgICAgICB0aGlzLmNhbnZhc0Rpdi5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3NpemUuaH1weGA7XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gYCR7c2l6ZS53fXB4YDtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0ID0gYCR7c2l6ZS5ofXB4YDtcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSBzaXplLnc7XG4gICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IHNpemUuaDtcbiAgICAgICAgdGhpcy5jYW52YXNTaXplID0gc2l6ZTtcbiAgICB9XG5cbiAgICAvKiogRHJhdyBzb21ldGhpbmcgb24gdGhlIGNhbnZhcyAqL1xuICAgIGRyYXdJbWFnZSh1cmw6IHN0cmluZywgeCA9IDAsIHkgPSAwLCBpY29uZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNhbnZhc1NpemU7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG5cbiAgICAgICAgLyoqIEZsaXAgdGhlIGNvbnRleHQsIGZvciBzeW1tZXRyeSAqL1xuICAgICAgICAvLyBpZiAodGhpcy5yZWZsZWN0Vikge1xuICAgICAgICAvLyAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZS53LCAwKTtcbiAgICAgICAgLy8gICAgIGNvbnRleHQuc2NhbGUoLTEsIDEpO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmICh0aGlzLnJlZmxlY3RIKSB7XG4gICAgICAgIC8vICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBzaXplLmgpO1xuICAgICAgICAvLyAgICAgY29udGV4dC5zY2FsZSgxLCAtMSk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICBsZXQgaW1hZ2VXaWR0aCA9IHNpemUudztcbiAgICAgICAgbGV0IGltYWdlSGVpZ2h0ID0gc2l6ZS5oO1xuICAgICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWNvbmUpIHtcbiAgICAgICAgICAgICAgICBpbWFnZVdpZHRoID0gaW1hZ2Uud2lkdGg7XG4gICAgICAgICAgICAgICAgaW1hZ2VIZWlnaHQgPSBpbWFnZS5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShcbiAgICAgICAgICAgICAgICBpbWFnZSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgaW1hZ2Uud2lkdGgsXG4gICAgICAgICAgICAgICAgaW1hZ2UuaGVpZ2h0LFxuICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgeSxcbiAgICAgICAgICAgICAgICBpbWFnZVdpZHRoLFxuICAgICAgICAgICAgICAgIGltYWdlSGVpZ2h0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGltYWdlLnNyYyA9IHVybDtcbiAgICB9XG5cbiAgICAvKiogR2V0IHRoZSBzaXplIGZvciB0aGUgY2FudmFzLCBiYXNlZCBvbiB0aGUgcGxhbiBzaXplLCBrZWVwaW5nIHRoZSByYXRpbyAqL1xuICAgIGdldFNpemVGb3JDYW52YXModywgaCkge1xuICAgICAgICBsZXQgY2FudmFzVyA9IHRoaXMuY2FudmFzRGl2Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGxldCBjYW52YXNIID0gdGhpcy5jYW52YXNEaXYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgaW1hZ2VSYXRpbyA9IHcgLyBoO1xuICAgICAgICBjb25zdCBjYW52YXNSYXRpbyA9IGNhbnZhc1cgLyBjYW52YXNIO1xuXG4gICAgICAgIGlmIChpbWFnZVJhdGlvID4gY2FudmFzUmF0aW8pIHtcbiAgICAgICAgICAgIGNhbnZhc0ggPSBjYW52YXNXIC8gaW1hZ2VSYXRpbztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhbnZhc1cgPSBjYW52YXNIICogaW1hZ2VSYXRpbztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB3OiBjYW52YXNXLCBoOiBjYW52YXNIIH07XG4gICAgfVxuXG4gICAgLyoqIFtUT0RPXSBDb252ZXJ0IGEgUERGIHRvIGEgQ2FudmFzICovXG4gICAgYXN5bmMgcGRmVG9DYW52YXMoKSB7XG4gICAgICAgIGNvbnN0IHBkZmpzID0gYXdhaXQgaW1wb3J0KFwicGRmanMtZGlzdC9idWlsZC9wZGZcIik7XG4gICAgICAgIGNvbnN0IHBkZmpzV29ya2VyID0gYXdhaXQgaW1wb3J0KFwicGRmanMtZGlzdC9idWlsZC9wZGYud29ya2VyLmVudHJ5XCIpO1xuXG4gICAgICAgIHBkZmpzLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjID0gcGRmanNXb3JrZXI7XG5cbiAgICAgICAgY29uc3QgcGRmOiBQREZEb2N1bWVudFByb3h5ID0gYXdhaXQgZ2V0RG9jdW1lbnQoXG4gICAgICAgICAgICB0aGlzLmNob3NlblBsYW4uZmlsZXBhdGgsXG4gICAgICAgICkucHJvbWlzZTtcbiAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHBkZi5nZXRQYWdlKDEpO1xuXG4gICAgICAgIGNvbnN0IHZpZXdQb3J0UGFyYW1ldGVycyA9IHsgc2NhbGU6IDEgfTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBwYWdlLmdldFZpZXdwb3J0KHZpZXdQb3J0UGFyYW1ldGVycyk7XG5cbiAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gdmlld3BvcnQuaGVpZ2h0O1xuICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHZpZXdwb3J0LndpZHRoO1xuXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmdldFNpemVGb3JDYW52YXModmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdodCk7XG4gICAgICAgIGNvbnNvbGUubG9nKHNpemUpO1xuICAgICAgICB0aGlzLmNhbnZhc1NpemUgPSBzaXplO1xuXG4gICAgICAgIHRoaXMuY2FudmFzWm9vbSA9IHNpemUudyAvIHZpZXdwb3J0LndpZHRoO1xuXG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KFxuICAgICAgICAgICAgXCIyZFwiLFxuICAgICAgICApIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgICAgICAgY29uc3QgcmVuZGVyQ29udGV4dCA9IHtcbiAgICAgICAgICAgIGNhbnZhc0NvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgICAgICB2aWV3cG9ydCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVuZGVyVGFzayA9IHBhZ2UucmVuZGVyKHJlbmRlckNvbnRleHQpLnByb21pc2U7XG5cbiAgICAgICAgcmVuZGVyVGFzay50aGVuKCgpID0+IGNvbnNvbGUubG9nKFwiUGFnZSByZW5kZXJlZFwiKSk7XG5cbiAgICAgICAgLy8gY29uc3QgcmVzID0gY2FudmFzLnRvRGF0YVVSTCgpO1xuICAgICAgICAvLyBpZiAocGRmICE9IG51bGwpIHBkZi5kZXN0cm95KCk7XG4gICAgICAgIC8vIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLyoqIFVzZXIgY2xpY2sgdG8gdXNlciBTeW1tZXRyeSBWZXJ0aWNhbCAqL1xuICAgIG9uUmVmbGVjdFYoKSB7XG4gICAgICAgIHRoaXMucmVmbGVjdFYgPSAhdGhpcy5yZWZsZWN0VjtcbiAgICAgICAgdGhpcy5jb25maWd1cmVDYW52YXMoKTtcbiAgICB9XG5cbiAgICAvKiogVXNlciBjbGljayB0byB1c2VyIFN5bW1ldHJ5IEhvcml6b250YWwgKi9cbiAgICBvblJlZmxlY3RIKCkge1xuICAgICAgICB0aGlzLnJlZmxlY3RIID0gIXRoaXMucmVmbGVjdEg7XG4gICAgICAgIHRoaXMuY29uZmlndXJlQ2FudmFzKCk7XG4gICAgfVxuXG4gICAgLyoqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVRURVJQT1JUXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbiAgICAvKiogTGF1bmNoIG1hdHRlcnBvcnQgKi9cbiAgICBhc3luYyBsYXVuY2hWaWV3ZXIoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2UuaW5pdFNka0Zvck1vZGVsKFxuICAgICAgICAgICAgdGhpcy5jaG9zZW5QbGFuLm1vZGVsM2QsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgeyBzZGsgfSA9IHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2U7XG4gICAgICAgIHRoaXMuZmxvb3JzID0gT2JqZWN0LnZhbHVlcyh0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLmZsb29ycyk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZmxvb3JzKTtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAvKiogTW92ZSBGbG9vciBtb2RlICovXG4gICAgICAgICAgICBhd2FpdCBzZGsuTW9kZS5tb3ZlVG8oc2RrLk1vZGUuTW9kZS5GTE9PUlBMQU4pO1xuICAgICAgICAgICAgLyoqIERpc3BsYXkgdGhlIGNvcnJlY3QgZmxvb3IgZm9yIHRoZSBwbGFuICovXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2UubW92ZVRvRmxvb3IoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hvc2VuUGxhbi5uYW1lLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNvdWxkbm90IG1vdmUgdG8gZmxvb3JcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qKiBXZSBjYW4gZGlzcGxheSB0aGUgbWF0dGVycG9ydCB2aWV3IG5vdyAqL1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0sIDMwMCk7XG5cbiAgICAgICAgLyoqIFdoZW4gdGhlIHVzZXIgdHJ5IHRvIGNoYW5nZSB0aGUgdmlldyBtb2RlIHdlIHNldCBpdCBiYWNrIHRvIGZsb29ycGFuICovXG5cbiAgICAgICAgc2RrLm9uKHNkay5Nb2RlLkV2ZW50LkNIQU5HRV9FTkQsIChvbGRNb2RlLCBuZXdNb2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAobmV3TW9kZSAhPT0gc2RrLk1vZGUuTW9kZS5GTE9PUlBMQU4pIHtcbiAgICAgICAgICAgICAgICBzZGsuTW9kZS5tb3ZlVG8oc2RrLk1vZGUuTW9kZS5GTE9PUlBMQU4sIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2l0aW9uLmluc3RhbnRcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLyoqIFVwZGF0ZSBjdXJyZW50IGNhbWVyYSBwb3NlIGFuZCByb3RhdGlvbiAqL1xuICAgICAgICBzZGsuQ2FtZXJhLnBvc2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgLyoqIFdlIHVwZGF0ZSBvbmx5IGlmIHRoZSB1c2VyIGlzIG5vdCBjaGFuZ2luZyB0aGUgcm90YXRpb24gd2l0aCB0aGUgPGlucHV0PiByYW5nZSwgdG8gbm90IG92ZXJyaWRlIHRoZSA8aW5wdXQ+IHZhbHVlICovXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNSb3RhdGluZ1JhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3RhdGlvbiA9IGV2ZW50LnJvdGF0aW9uLnkgKyAxODA7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2Um90YXRpb24gPSB0aGlzLnJvdGF0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FtZXJhUG9zZSA9IGV2ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogV2hlbiB0aGUgPGlucHV0PiByYW5nZSwgZm9yIHJvdGF0aW9uLCBjaGFuZ2UgKi9cbiAgICBhc3luYyBvblJvdGF0aW9uQ2hhbmdlKCkge1xuICAgICAgICBjb25zdCByb3RhdGlvbkRlbHRhID0gdGhpcy5yb3RhdGlvbiAtIHRoaXMucHJldlJvdGF0aW9uO1xuICAgICAgICB0aGlzLnByZXZSb3RhdGlvbiA9IHRoaXMucm90YXRpb247XG5cbiAgICAgICAgLyoqIFNlbmQgdGhlIHJvdGF0aW9uRGVsdGEgdG8gdGggcXVldWUgZXZlbnQgaW4gb3JkZXIgdG8gYmUgc2VuZCB0byBtYXR0ZXJwb3J0ICovXG4gICAgICAgIHRoaXMucm90YXRpbmdRdWV1ZUV2ZW50LnB1c2gocm90YXRpb25EZWx0YSk7XG5cbiAgICAgICAgLyoqIFN0YXJ0IHRvIHByb2Nlc3MgdGhlIHF1ZXVlLCBpZiBpdCdzIHRoZSBmaXJzdCBldmVudCAqL1xuICAgICAgICBpZiAoIXRoaXMuaXNSb3RhdGluZ1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmlzUm90YXRpbmdSYW5nZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NSb3RhdGluZ1F1ZXVlRXZlbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBQcm9jZXNzIHRoZSByb3RhdGluZyBldmVudCBxdWV1ZSwgc2VuZCBldmVudCBvbmUgYnkgb25lIHRvIG1hdHRlcnBvcnQgICovXG4gICAgYXN5bmMgcHJvY2Vzc1JvdGF0aW5nUXVldWVFdmVudCgpIHtcbiAgICAgICAgY29uc3QgeyBzZGsgfSA9IHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2U7XG5cbiAgICAgICAgLyoqIFdoaWxlIHRoZSBxdWV1ZSBpcyBub3QgZW1wdHkgKi9cbiAgICAgICAgd2hpbGUgKHRoaXMucm90YXRpbmdRdWV1ZUV2ZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8qKiBSb3RhdGUgbWF0dGVycG9ydCBieSBkZWx0YVJvdGF0aW9uIGFuZCByZW1vdmUgZXZlbnQgZnJvbSBxdWV1ZSAqL1xuICAgICAgICAgICAgYXdhaXQgc2RrLkNhbWVyYS5yb3RhdGUodGhpcy5yb3RhdGluZ1F1ZXVlRXZlbnQuc2hpZnQoKSwgMCwge1xuICAgICAgICAgICAgICAgIHNwZWVkOiAzNjAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKiBXaGVuIHRoZSBxdWV1ZSBpcyBlbXB0eSwgdGhlbiB0aGUgdXNlciBpcyBub3Qgcm90YXRpbmcgd2l0aCB0aGUgPGlucHV0PiByYW5nZSBhbnltb3JlICovXG4gICAgICAgIHRoaXMuaXNSb3RhdGluZ1JhbmdlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0VSIEFDVElPTlNcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cblxuICAgIC8qKiBQcmV2aWV3IGNhbGlicmF0aW9uICovXG4gICAgYXN5bmMgb25QcmV2aWV3KCkge1xuICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAvKiogUGxhY2Ugc3dlZXBzICovXG4gICAgICAgIHRoaXMub25QbGFjZVN3ZWVwcygpO1xuICAgIH1cblxuICAgIGFzeW5jIGNhbGlicmF0ZSgpIHtcbiAgICAgICAgY29uc3QgW25hdmlnYXRpb25dID0gdGhpcy5jdXJyZW50TmF2aWdhdGlvbnM7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gSlNPTi5wYXJzZShuYXZpZ2F0aW9uLnBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy5maXJzdE1hcmtQbGFuID1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2Uuc2RrLlJlbmRlcmVyLmdldFNjcmVlblBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgICB4OiBwb3NpdGlvbi54LFxuICAgICAgICAgICAgICAgIHk6IHBvc2l0aW9uLnksXG4gICAgICAgICAgICAgICAgejogcG9zaXRpb24ueixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlY29uZE1hcmtQbGFuID1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2Uuc2RrLlJlbmRlcmVyLmdldFNjcmVlblBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgICB4OiBwb3NpdGlvbi54LFxuICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgejogMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZWx0YVpWaXNpdCA9IDAgLSBwb3NpdGlvbi56O1xuICAgICAgICBsZXQgZGVsdGFYUGxhbiA9IHRoaXMuc2Vjb25kTWFya1BsYW4ueCAtIHRoaXMuZmlyc3RNYXJrUGxhbi54O1xuICAgICAgICBpZiAoZGVsdGFYUGxhbiA9PT0gMCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJ3ZSBtb3ZlZCBhbG9uZyBZIGF4aXMgb24gUGxhblwiKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWVBsYW4gPSB0aGlzLnNlY29uZE1hcmtQbGFuLnkgLSB0aGlzLmZpcnN0TWFya1BsYW4ueTtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVZQXhpcyA9IFwielwiO1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UubmFtZVhBeGlzID0gXCJ4XCI7XG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5vZmZzZXRZID0gdGhpcy5zZWNvbmRNYXJrUGxhbi55O1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uuc2NhbGVZID0gZGVsdGFZUGxhbiAvIGRlbHRhWlZpc2l0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIgd2UgbW92ZWQgYWxvbmcgWCBheGlzIG9uIFBsYW5cIik7XG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5uYW1lWUF4aXMgPSBcInhcIjtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVYQXhpcyA9IFwielwiO1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WCA9IHRoaXMuc2Vjb25kTWFya1BsYW4ueDtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlWCA9IGRlbHRhWFBsYW4gLyBkZWx0YVpWaXNpdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0aGlyZE1hcmtQbGFuID1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2Uuc2RrLlJlbmRlcmVyLmdldFNjcmVlblBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgejogcG9zaXRpb24ueixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZWx0YVhWaXNpdCA9IDAgLSBwb3NpdGlvbi54O1xuICAgICAgICBpZiAoZGVsdGFYUGxhbiA9PT0gMCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIgd2UgbW92ZWQgYWxvbmcgWCBheGlzIG9uIFBsYW5cIik7XG4gICAgICAgICAgICBkZWx0YVhQbGFuID0gdGhpcmRNYXJrUGxhbi54IC0gdGhpcy5maXJzdE1hcmtQbGFuLng7XG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5vZmZzZXRYID0gdGhpcmRNYXJrUGxhbi54O1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uuc2NhbGVYID0gZGVsdGFYUGxhbiAvIGRlbHRhWFZpc2l0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGVsdGFZUGxhbiA9IHRoaXJkTWFya1BsYW4ueSAtIHRoaXMuZmlyc3RNYXJrUGxhbi55O1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WSA9IHRoaXJkTWFya1BsYW4ueTtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlWSA9IGRlbHRhWVBsYW4gLyBkZWx0YVhWaXNpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKiBUYWtlIGNvbnNpZGlyYXRpb24gb2YgcGFuIGFuZCB6b29tIG9mIHBsYW4gb24gY2FudmFzICovXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybUluZm8gPSB0aGlzLnBhbnpvb20uZ2V0VHJhbnNmb3JtKCk7XG4gICAgICAgIGNvbnN0IHsgc2NhbGUsIHgsIHkgfSA9IHRyYW5zZm9ybUluZm87XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRyYW5zZm9ybUluZm8pO1xuICAgICAgICB0aGlzLmNhbGlicmFnZS5vZmZzZXRYUGxhbiA9IHg7XG4gICAgICAgIHRoaXMuY2FsaWJyYWdlLm9mZnNldFlQbGFuID0geTtcbiAgICAgICAgdGhpcy5jYWxpYnJhZ2Uuc2NhbGVQbGFuID0gc2NhbGU7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2FsaWJyYWdlKTtcbiAgICB9XG5cbiAgICAvKiogUGxhY2Ugc3dlZXBzICovXG4gICAgYXN5bmMgb25QbGFjZVN3ZWVwcygpIHtcbiAgICAgICAgLyoqIERpc3BsYXkgYWxsIHNjYW4gKi9cbiAgICAgICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZSh0aGlzLmNob3NlblBsYW4uem9uZUlEKTtcblxuICAgICAgICBpZiAoem9uZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IHpvbmU7XG4gICAgICAgICAgICBjb25zdCBuYXZpZ2F0aW9ucyA9XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXROYXZpZ2F0aW9uc0ZvclpvbmUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE5hdmlnYXRpb25zID0gbmF2aWdhdGlvbnM7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNhbGlicmF0ZSgpO1xuICAgICAgICAgICAgaWYgKG5hdmlnYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5hdmlnYXRpb24gb2YgbmF2aWdhdGlvbnMpIHsgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXN0UG9zaXRpb24gPSBKU09OLnBhcnNlKG5hdmlnYXRpb24ucG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvblggPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UubmFtZVhBeGlzID09PSBcInhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGVzdFBvc2l0aW9uLnhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRlc3RQb3NpdGlvbi56O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvblkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UubmFtZVlBeGlzID09PSBcInhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGVzdFBvc2l0aW9uLnhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRlc3RQb3NpdGlvbi56O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXN0WCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblggKiB0aGlzLmNhbGlicmFnZS5zY2FsZVggK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVzdFkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25ZICogdGhpcy5jYWxpYnJhZ2Uuc2NhbGVZICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm9mZnNldFk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwidGVzdCBwb3NpdGlvbiBHUkVFTlwiLCB0ZXN0WCwgdGVzdFkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFggPVxuICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RYIC0gdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WFBsYW4pIC9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlUGxhbjsgLy8gd2UgYXJlIHVuZG9pbmcgdGhlIHBhbiBhbmQgem9vbVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RZIC0gdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WVBsYW4pIC9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlUGxhbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZJRDogbmF2aWdhdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5JRDogdGhpcy5jaG9zZW5QbGFuLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgeDogdHJhbnNmb3JtZWRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgeTogdHJhbnNmb3JtZWRZLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWNvblNpemUgPSAzMCAqIHRoaXMuY2FsaWJyYWdlLnNjYWxlUGxhbjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hpZnQgPSBpY29uU2l6ZSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0ltYWdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnbi9tZGk6YWRqdXN0LnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MzAmd2lkdGg9MzBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkWCAtIHNoaWZ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRZIC0gc2hpZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBTYXZlIGNhbGlicmF0aW9uICovXG4gICAgYXN5bmMgb25TYXZlKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Wm9uZSkge1xuICAgICAgICAgICAgLyoqIE5vcm1hbGl6ZSB3aXRoIHRoZSB6b29tICovXG4gICAgICAgICAgICAvLyB0aGlzLmNhbGlicmFnZS5vZmZzZXRYIC89IHRoaXMuY2FudmFzWm9vbTtcbiAgICAgICAgICAgIC8vIHRoaXMuY2FsaWJyYWdlLm9mZnNldFkgLz0gdGhpcy5jYW52YXNab29tO1xuICAgICAgICAgICAgLy8gdGhpcy5jYWxpYnJhZ2UueCAvPSB0aGlzLmNhbnZhc1pvb207XG4gICAgICAgICAgICAvLyB0aGlzLmNhbGlicmFnZS55IC89IHRoaXMuY2FudmFzWm9vbTtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5ldyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5pbWdXaWR0aCA9IHRoaXMuY2FudmFzU2l6ZS53O1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UuaW1nSGVpZ2h0ID0gdGhpcy5jYW52YXNTaXplLmg7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGxhblNlcnZpY2UudXBkYXRlUGxhbih7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuY2hvc2VuUGxhbi5pZCxcbiAgICAgICAgICAgICAgICBjYWxpYnJhdGlvbjogSlNPTi5zdHJpbmdpZnkodGhpcy5jYWxpYnJhZ2UpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9ucy5tYXAoYXN5bmMgKHBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbmF2SUQgfSA9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcG9zaXRpb24ubmF2SUQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hdiA9IHRoaXMuY3VycmVudE5hdmlnYXRpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoX25hdikgPT4gX25hdi5pZCA9PT0gbmF2SUQsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnNEYXRhVG9VcGRhdGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuYXYucG9zaXRpb25PblBsYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uT25QbGFuID0gbmF2LnBvc2l0aW9uT25QbGFuLm1hcCgoZW50cnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5wYXJzZShlbnRyeSksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25Gb3JDdXJyZW50UGxhbiA9IHBvc2l0aW9uT25QbGFuLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVudHJ5KSA9PiBlbnRyeS5wbGFuSUQgPT09IHRoaXMuY2hvc2VuUGxhbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zaXRpb25Gb3JDdXJyZW50UGxhbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uT25QbGFuLnNwbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25PblBsYW4uaW5kZXhPZihwb3NpdGlvbkZvckN1cnJlbnRQbGFuKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25PblBsYW4ucHVzaChwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnNEYXRhVG9VcGRhdGUgPSBbLi4ucG9zaXRpb25PblBsYW5dO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zRGF0YVRvVXBkYXRlID0gW3Bvc2l0aW9uXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhwb3NpdGlvbnNEYXRhVG9VcGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLnVwZGF0ZU5hdmlnYXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG5hdklELFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25PblBsYW46IHBvc2l0aW9uc0RhdGFUb1VwZGF0ZS5tYXAoKGVudHJ5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGVudHJ5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLnJlbW92ZUZyYW1lKCk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xuICAgICAgICAgICAgXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLFxuICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgXCJwbGFuc1wiLFxuICAgICAgICBdKTtcbiAgICAgICAgYWxlcnQodGhpcy50cmFuc2xhdGUuaW5zdGFudChcImNhbGlicmF0aW9uLnN1Y2Nlc3NcIikpO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCB0aGUgY2FudmFzICovXG4gICAgb25SZXNldCgpIHtcbiAgICAgICAgdGhpcy5yZWZsZWN0SCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlZmxlY3RWID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY29uZmlndXJlQ2FudmFzKCk7XG4gICAgfVxuXG4gICAgLyoqIENhbmNlbCwgbGVhdmUgKi9cbiAgICBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5yZW1vdmVGcmFtZSgpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAgICAgICBcIi9kYXNoYm9hcmQvbG9jYWxpc2F0aW9uXCIsXG4gICAgICAgICAgICB0aGlzLnNwYWNlSUQsXG4gICAgICAgICAgICBcInBsYW5zXCIsXG4gICAgICAgIF0pO1xuICAgICAgICBhbGVydCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiY2FsaWJyYXRpb24uY2FuY2VsZWRcIikpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uRmxvb3JDbGljayhmbG9vcikge1xuICAgICAgICB0aGlzLmN1cnJlbnRGbG9vciA9IGZsb29yO1xuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLm1vdmVUb0Zsb29yKGZsb29yLmlkKTtcbiAgICB9XG5cbiAgICBvbkFjdGl2YXRlWm9vbUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy56b29tQ2FuQmVDaGFuZ2VkID0gIXRoaXMuem9vbUNhbkJlQ2hhbmdlZDtcbiAgICAgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiN2aWV3ZXItZnJhbWVcIikgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChpZnJhbWUpIHtcbiAgICAgICAgICAgIGlmcmFtZS5zdHlsZS56SW5kZXggPSB0aGlzLnpvb21DYW5CZUNoYW5nZWQgPyBcIjFcIiA6IFwiMFwiO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTNcIj5cbiAgICAgICAgICAgIDxsaWItdGFiLW5hdmlnYXRpb24gW21lbnVJdGVtc109J21lbnVJdGVtcyc+PC9saWItdGFiLW5hdmlnYXRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgaWQ9XCJyb3dDYW52YXNcIj5cbiAgICA8ZGl2ICNjYW52YXNEaXYgaWQ9XCJjYW52YXNEaXZcIj5cblxuICAgICAgICA8ZGl2IGlkPVwidmlld2VyLWZyYW1lXCIgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cInpvb21DYW5CZUNoYW5nZWQ/J2F1dG8nOidub25lJ1wiPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYmx1clwiPjwvZGl2PiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxjYW52YXMgaWQ9XCJjYW52YXNcIiBbbmdTdHlsZV09XCJ7J29wYWNpdHknOiAocHJldmlld3x8bG9hZGluZykgPyAnMScgOiAnY2FsYygnICsgb3BhY2l0eSArICcvIDEwMCknfVwiPjwvY2FudmFzPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNhbGlicmF0aW9uLXRvb2xzIGNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwiIShwcmV2aWV3IHx8IGxvYWRpbmcpXCI+XG4gICAgICAgIDxoMT57eydDYWxpYnJhdGlvbiB0b29sJyB8IHRyYW5zbGF0ZX19PC9oMT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXMtMCBtZS0wIGxlZ2VuZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieydvcGFjaXR5JzogJ2NhbGMoJyArICgtKG9wYWNpdHktMTAwKSsxMCkgKyAnLyAxMDApJ31cIj57eydMZXNzJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC10aXRsZVwiPnt7J1BsYW4gT3BhY2l0eScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnb3BhY2l0eSc6ICdjYWxjKCcgKyAob3BhY2l0eSsxMCkgKyAnLyAxMDApJ31cIj57eydNb3JlJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXMtMCBtZS0wIFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgWyhuZ01vZGVsKV09XCJvcGFjaXR5XCIgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXJhbmdlXCIgbWluPVwiMFwiIG1heD1cIjEwMFwiIHZhbHVlPVwiNTBcIiBpZD1cIm9wYWNpdHlcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXMtMCBtZS0wIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1sZWdlbmRcIj57eydDaGFuZ2UgVmlzaXQgRmxvb3InIHwgdHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbXMtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1sYWJlbC1maWxlIHJvdW5kZWQtcGlsbFwiIGlkPVwiZHJvcGRvd25CYXNpYzFcIiBuZ2JEcm9wZG93blRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y3VycmVudEZsb29yID8gY3VycmVudEZsb29yLmlkIDogKCdGbG9vcicgfCB0cmFuc2xhdGUpIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duQmFzaWMxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAqbmdGb3I9XCJsZXQgZmxvb3Igb2YgZmxvb3JzXCIgKGNsaWNrKT1cIm9uRmxvb3JDbGljayhmbG9vcilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmbG9vci5uYW1lLmxlbmd0aCA+IDAgPyBmbG9vci5uYW1lIDogKCdGbG9vciAnICsgZmxvb3IuaWQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXMtMCBtZS0wIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1sZWdlbmQgbWUtM1wiPnt7J1Bhbi9ab29tIFZpc2l0JyB8IHRyYW5zbGF0ZX19IHt7em9vbUNhbkJlQ2hhbmdlZCA/IFwiT05cIiA6IFwiT0ZGXCJ9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cIm9uQWN0aXZhdGVab29tQ2hhbmdlKClcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDVweDtcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBib3JkZXItd2FybmluZyBtYi0zIG10LTNcIiAqbmdJZj1cInpvb21DYW5CZUNoYW5nZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSB0ZXh0LXdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGVcIj57e1wiY2FsaWJyYXRpb24ud2FpdC1tZXNzYWdlXCIgfCB0cmFuc2xhdGV9fTwvaDU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25cIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uUHJldmlldygpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiem9vbUNhbkJlQ2hhbmdlZFwiPnt7J1ByZXZpZXcnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57eydDYW5jZWwnIHxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhbGlicmF0aW9uLXRvb2xzIGNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgICA8aDE+e3snVmFsaWRhdGlvbicgfCB0cmFuc2xhdGV9fTwvaDE+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25cIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+e3snVmFsaWRhdGUnIHxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIiAoY2xpY2spPVwib25SZXNldCgpXCI+e3snUmVzZXQnIHxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPnt7J0NhbmNlbCcgfFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cblxuICAgIDxkaXYgY2xhc3M9XCJjYWxpYnJhdGlvbi10b29scyBjb250YWluZXItZmx1aWRcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgPGgzPnt7XCJXYWl0aW5nIGZvciBNYXR0ZXJwb3J0XCIgfCB0cmFuc2xhdGV9fS4uLjwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyXCIgcm9sZT1cInN0YXR1c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuPC9kaXY+Il19
484
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsaWJyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvY2FsaWJyYXRpb24vY2FsaWJyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvY2FsaWJyYXRpb24vY2FsaWJyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTyxFQUFzRyxlQUFlLEVBQTJCLE1BQU0sbUNBQW1DLENBQUM7QUFDak0sT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7QUFPOUIsTUFBTSxPQUFPLG9CQUFvQjtJQXFGN0IsWUFDWSx1QkFBZ0QsRUFDaEQsV0FBd0IsRUFDeEIsS0FBcUIsRUFDckIsTUFBYyxFQUNkLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNwQyxTQUEyQjtRQVAzQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBM0Z2QyxxQ0FBcUM7UUFDckMsY0FBUyxHQUFlLEVBQUUs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QkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7U0FDM0Q7SUFDTCxDQUFDOztpSEEvbEJRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLCtKQ2JqQyxneElBMEZNOzJGRDdFTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzhTQWFELFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZ2V0RG9jdW1lbnQgfSBmcm9tIFwicGRmanMtZGlzdFwiO1xuaW1wb3J0IHsgUERGRG9jdW1lbnRQcm94eSB9IGZyb20gXCJuZzItcGRmLXZpZXdlclwiO1xuaW1wb3J0IHsgWm9uZSwgTWVudUl0ZW0sIFBsYW4sIFNwYWNlLCBOYXZpZ2F0aW9uLCBQbGFuU2VydmljZSwgWm9uZVNlcnZpY2UsIFNwYWNlU2VydmljZSwgTmF2aWdhdGlvblNlcnZpY2UsIGdldE1ldGFGb3JJbWFnZSwgTWF0dGVycG9ydEltcG9ydFNlcnZpY2UgfSBmcm9tICdAc21hcnRlcnBsYW4vbmd4LXNtYXJ0ZXJwbGFuLWNvcmUnO1xuaW1wb3J0IHBhbnpvb20gZnJvbSAncGFuem9vbSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jYWxpYnJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxpYnJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGlicmF0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FsaWJyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLyoqIEl0ZW0gdG8gZGlzcGxheSBmb3IgdGhlIG5hdmJhciAqL1xuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIENhbnZhcyAoUGxhbikgKi9cbiAgICBjYW52YXM7XG5cbiAgICAvKiogQ2FudmFzRGl2IChEaXYgdGhhdCBjb250YWluIHRoZSBjYW52YXMgKyBtYXR0ZXJwb3J0IGlmcmFtZSkgKi9cbiAgICBAVmlld0NoaWxkKFwiY2FudmFzRGl2XCIpIGNhbnZhc0RpdjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBTaXplIG9mIHRoZSBjYW52YXMgJiBtYXR0ZXJwb3J0IGlmcmFtZSAqL1xuICAgIGNhbnZhc1NpemU6IHsgdzogbnVtYmVyOyBoOiBudW1iZXIgfTtcblxuICAgIC8qKiBab29tIHJhdGlvIG9mIHRoZSBjYW52YXMvcGxhbiAgKi9cbiAgICBjYW52YXNab29tID0gMDtcblxuICAgIC8qKiBPcGFjaXR5IGZvciBtYXR0ZXJwb3J0IGlmcmFtZSAqL1xuICAgIG9wYWNpdHk6IG51bWJlciA9IDUwO1xuXG4gICAgLyoqIEN1cnJlbnQgcm90YXRpb24gZm9yIG1hdHRlcnBvcnQsIFswLTM2MF0sICBtYXR0ZXJwb3J0IHJvdGF0aW9uIGlzIGJpbmQgdG8gaW5wdXQgcmFuZ2UgKi9cbiAgICByb3RhdGlvbjogbnVtYmVyID0gMTgwO1xuXG4gICAgLyoqIFByZXZpb3VzIHJvdGF0aW9uLCB1c2UgdG8gY2FsY3VsYXRlIHRoZSBkZWx0YVJvdGF0aW9uIHRvIHJvdGF0ZSwgd2hlbiB1c2VyIGNoYW5nZSByb3RhdGlvbiB2YWx1ZSB1c2luZyByYW5nZSBpbnB1dCAqL1xuICAgIHByZXZSb3RhdGlvbjogbnVtYmVyID0gMTgwO1xuXG4gICAgLyoqIEN1cnJlbnQgQ2FtZXJhIFBvc2UgKi9cbiAgICBjYW1lcmFQb3NlOiBhbnk7XG5cbiAgICAvKiogVHJ1ZSB3aGVuIHRoZSB1c2VyIGlzIGN1cnJlbnRseSByb3RhdGluZyB3aXRoIHRoZSBpbnB1dCByYW5nZSwgdGhlIG1hdHRlcnBvcnQgcm90YXRpb24gZXZlbnRzIHdpbGwgYmUgaWdub3JlZCAqL1xuICAgIGlzUm90YXRpbmdSYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFJvdGF0aW5nIHF1ZXVlIGV2ZW50IHRvIHNlbmQgdG8gbWF0dGVycG9ydCAqL1xuICAgIHJvdGF0aW5nUXVldWVFdmVudDogbnVtYmVyW10gPSBbXTtcblxuICAgIC8qKiBUcnVlIHdoZW4gVmVydGljYWwgc3ltbWV0cnkgaXMgZW5hYmxlZCAqL1xuICAgIHJlZmxlY3RWID0gZmFsc2U7XG5cbiAgICAvKiogVHJ1ZSB3aGVuIEhvcml6b250YWwgc3ltbWV0cnkgaXMgZW5hYmxlZCAqL1xuICAgIHJlZmxlY3RIID0gZmFsc2U7XG5cbiAgICBjaG9zZW5QbGFuOiBQbGFuO1xuXG4gICAgc3BhY2VJRDogc3RyaW5nO1xuXG4gICAgY3VycmVudFNwYWNlOiBTcGFjZTtcblxuICAgIGN1cnJlbnRab25lOiBab25lO1xuXG4gICAgY2hvc2VuUGxhbklzUGRmID0gZmFsc2U7XG5cbiAgICAvKiogRmlyc3QgUG9pbnQgaW4gdmlzaXQsIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBjYWxpYnJhdGlvbiAgKi9cbiAgICBmaXJzdE1hcmtWaXNpdCA9IHsgeDogMCwgeTogMCB9O1xuXG4gICAgLyoqIFNlY29uZCBQb2ludCBpbiB2aXNpdCwgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGNhbGlicmF0aW9uICAqL1xuICAgIHNlY29uZE1hcmtWaXNpdCA9IHsgeDogMC41LCB5OiAwLjUgfTtcblxuICAgIC8qKiBFcXVpdmFsZW50IG9mICdmaXJzdE1hcmtWaXNpdCcgaW4gY2FudmFzICAqL1xuICAgIGZpcnN0TWFya1BsYW46IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IHsgeDogMCwgeTogMCB9O1xuXG4gICAgLyoqIEVxdWl2YWxlbnQgb2YgJ3NlY29uZE1hcmtWaXNpdCcgaW4gY2FudmFzICAqL1xuICAgIHNlY29uZE1hcmtQbGFuOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gPSB7IHg6IDAsIHk6IDAgfTtcblxuICAgIC8qKiBDYWxpYnJhdGlvbiByZXN1bHQsIChvZmZzZXRYLCBvZmZzZXRZLCB4LCB5KSAqL1xuICAgIGNhbGlicmFnZTogYW55ID0ge307XG5cbiAgICAvKiogSXMgaW4gcHJldmlldyBtb2RlIChzZWUgc2NhbiByZXN1bHQpICovXG4gICAgcHJldmlldyA9IGZhbHNlO1xuXG4gICAgLyoqIE1hdHRlcnBvcnQgaXMgbG9hZGluZyAqL1xuICAgIGxvYWRpbmcgPSB0cnVlO1xuXG4gICAgLyogZm9yIHBhbiBhbmQgem9vbSBvZiBjYW52YXMgKi9cbiAgICBwYW56b29tOiBhbnk7XG5cbiAgICBjdXJyZW50TmF2aWdhdGlvbnM6IE5hdmlnYXRpb25bXTtcblxuICAgIHBvc2l0aW9uczogeyBuYXZJRDogc3RyaW5nOyBwbGFuSUQ6IHN0cmluZzsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVtdID0gW107XG5cbiAgICBmbG9vcnM6IGFueVtdID0gW107XG5cbiAgICBjdXJyZW50Rmxvb3I7XG5cbiAgICB6b29tQ2FuQmVDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBtYXR0ZXJwb3J0SW1wb3J0U2VydmljZTogTWF0dGVycG9ydEltcG9ydFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3BhY2VTZXJ2aWNlOiBTcGFjZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICApIHt9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2UucmVtb3ZlRnJhbWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnNwYWNlSUQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnNwYWNlSUQ7XG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlID0gYXdhaXQgdGhpcy5zcGFjZVNlcnZpY2UuZ2V0U3BhY2UodGhpcy5zcGFjZUlEKTtcblxuICAgICAgICAvKiogTWVudSBuYXYgYmFyICovXG4gICAgICAgIHRoaXMuc2V0dXBNZW51SXRlbXMoKTtcblxuICAgICAgICB0aGlzLmNob3NlblBsYW4gPSB0aGlzLnBsYW5TZXJ2aWNlLmdldENob3NlblBsYW4oKTtcblxuICAgICAgICBpZiAodGhpcy5jaG9zZW5QbGFuKSB7XG4gICAgICAgICAgICB0aGlzLmNob3NlblBsYW5Jc1BkZiA9IHRoaXMuY2hvc2VuUGxhbi5hbm5leGUuaW5jbHVkZXMoXCJwZGZcIik7XG4gICAgICAgICAgICB0aGlzLmxhdW5jaFZpZXdlcigpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmVDYW52YXMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW56b29tID0gcGFuem9vbSh0aGlzLmNhbnZhcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzUGFkZGluZzogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFpvb206IDIuNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pblpvb206IDAuMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxab29tOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgem9vbVNwZWVkOiAwLjAyLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAgICAgICAgICAgXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLFxuICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VJRCxcbiAgICAgICAgICAgICAgICBcInBsYW5zXCIsXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FTlUgTkFWIEJBUlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuICAgIHNldHVwTWVudUl0ZW1zKCkge1xuICAgICAgICB0aGlzLm1lbnVJdGVtcyA9IFtcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiTG9jYXRpb25zXCIsIHVybDogXCIvbG9jYWxpc2F0aW9uXCIgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jdXJyZW50U3BhY2UubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IGAvbG9jYWxpc2F0aW9uLyR7dGhpcy5zcGFjZUlEfWAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlBsYW5zXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuY3VycmVudFNwYWNlLmlkfS9wbGFuc2AsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBcIkNhbGlicmF0aW9uXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuY3VycmVudFNwYWNlLmlkfS9wbGFuLWNhbGlicmF0aW9uP3NwYWNlSUQ9JHt0aGlzLmN1cnJlbnRTcGFjZS5pZH1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTlZBU1xuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4gICAgLyoqIERpc3BsYXkgdGhlIHBsYW4gKi9cbiAgICBhc3luYyBjb25maWd1cmVDYW52YXMoKSB7XG4gICAgICAgIC8qKiBHZXQgY2FudmFzICovXG4gICAgICAgIGlmICghdGhpcy5jYW52YXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgXCIjY2FudmFzXCIsXG4gICAgICAgICAgICApIGFzIEhUTUxDYW52YXNFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuY2hvc2VuUGxhbklzUGRmKSB7XG4gICAgICAgICAgICBjb25zdCBpbWFnZSA9IGF3YWl0IGdldE1ldGFGb3JJbWFnZSh0aGlzLmNob3NlblBsYW4uZmlsZXBhdGgpO1xuICAgICAgICAgICAgLyoqIENvbXB1dGUgdGhlIG5ldyBzaXplIGZvciB0aGUgY2FudmFzL21hdHRlcnBvcnQsIGJhc2Ugb24gdGhlIGRpbWVuc2lvbiBvZiB0aGUgcGxhbiwga2VlcGluZyB0aGUgcmF0aW8gKi9cbiAgICAgICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmdldFNpemVGb3JDYW52YXMoaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCk7XG5cbiAgICAgICAgICAgIC8qKiBDb21wdXRlIHRoZSBwbGFuIHpvb20gcmF0aW8gKHVzZSBmb3IgdGhlIGNhbGlicmF0aW9uIGxhdGVyKSAqL1xuICAgICAgICAgICAgdGhpcy5jYW52YXNab29tID0gc2l6ZS53IC8gaW1hZ2Uud2lkdGg7XG5cbiAgICAgICAgICAgIHRoaXMucmVzaXplVmlldyhzaXplKTtcblxuICAgICAgICAgICAgLyoqIERyYXcgUGxhbiBvbiB0aGUgY2FudmFzICovXG4gICAgICAgICAgICB0aGlzLmRyYXdJbWFnZSh0aGlzLmNob3NlblBsYW4uZmlsZXBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgdGhpcy5wZGZUb0NhbnZhcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSBzaXplIG9mIHRoZSBjYW52YXMvbWF0dGVycG9ydCAqL1xuICAgIHJlc2l6ZVZpZXcoc2l6ZSkge1xuICAgICAgICB0aGlzLmNhbnZhc0Rpdi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7c2l6ZS53fXB4YDtcbiAgICAgICAgdGhpcy5jYW52YXNEaXYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtzaXplLmh9cHhgO1xuICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9IGAke3NpemUud31weGA7XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLmhlaWdodCA9IGAke3NpemUuaH1weGA7XG4gICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gc2l6ZS53O1xuICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSBzaXplLmg7XG4gICAgICAgIHRoaXMuY2FudmFzU2l6ZSA9IHNpemU7XG4gICAgfVxuXG4gICAgLyoqIERyYXcgc29tZXRoaW5nIG9uIHRoZSBjYW52YXMgKi9cbiAgICBkcmF3SW1hZ2UodXJsOiBzdHJpbmcsIHggPSAwLCB5ID0gMCwgaWNvbmUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5jYW52YXNTaXplO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuXG4gICAgICAgIC8qKiBGbGlwIHRoZSBjb250ZXh0LCBmb3Igc3ltbWV0cnkgKi9cbiAgICAgICAgLy8gaWYgKHRoaXMucmVmbGVjdFYpIHtcbiAgICAgICAgLy8gICAgIGNvbnRleHQudHJhbnNsYXRlKHNpemUudywgMCk7XG4gICAgICAgIC8vICAgICBjb250ZXh0LnNjYWxlKC0xLCAxKTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBpZiAodGhpcy5yZWZsZWN0SCkge1xuICAgICAgICAvLyAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgc2l6ZS5oKTtcbiAgICAgICAgLy8gICAgIGNvbnRleHQuc2NhbGUoMSwgLTEpO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgbGV0IGltYWdlV2lkdGggPSBzaXplLnc7XG4gICAgICAgIGxldCBpbWFnZUhlaWdodCA9IHNpemUuaDtcbiAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGljb25lKSB7XG4gICAgICAgICAgICAgICAgaW1hZ2VXaWR0aCA9IGltYWdlLndpZHRoO1xuICAgICAgICAgICAgICAgIGltYWdlSGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgICAgICAgICAgaW1hZ2UsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIGltYWdlLndpZHRoLFxuICAgICAgICAgICAgICAgIGltYWdlLmhlaWdodCxcbiAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgIHksXG4gICAgICAgICAgICAgICAgaW1hZ2VXaWR0aCxcbiAgICAgICAgICAgICAgICBpbWFnZUhlaWdodCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICBpbWFnZS5zcmMgPSB1cmw7XG4gICAgfVxuXG4gICAgLyoqIEdldCB0aGUgc2l6ZSBmb3IgdGhlIGNhbnZhcywgYmFzZWQgb24gdGhlIHBsYW4gc2l6ZSwga2VlcGluZyB0aGUgcmF0aW8gKi9cbiAgICBnZXRTaXplRm9yQ2FudmFzKHcsIGgpIHtcbiAgICAgICAgbGV0IGNhbnZhc1cgPSB0aGlzLmNhbnZhc0Rpdi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBsZXQgY2FudmFzSCA9IHRoaXMuY2FudmFzRGl2Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgIGNvbnN0IGltYWdlUmF0aW8gPSB3IC8gaDtcbiAgICAgICAgY29uc3QgY2FudmFzUmF0aW8gPSBjYW52YXNXIC8gY2FudmFzSDtcblxuICAgICAgICBpZiAoaW1hZ2VSYXRpbyA+IGNhbnZhc1JhdGlvKSB7XG4gICAgICAgICAgICBjYW52YXNIID0gY2FudmFzVyAvIGltYWdlUmF0aW87XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYW52YXNXID0gY2FudmFzSCAqIGltYWdlUmF0aW87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdzogY2FudmFzVywgaDogY2FudmFzSCB9O1xuICAgIH1cblxuICAgIC8qKiBbVE9ET10gQ29udmVydCBhIFBERiB0byBhIENhbnZhcyAqL1xuICAgIGFzeW5jIHBkZlRvQ2FudmFzKCkge1xuICAgICAgICBjb25zdCBwZGZqcyA9IGF3YWl0IGltcG9ydChcInBkZmpzLWRpc3QvYnVpbGQvcGRmXCIpO1xuICAgICAgICBjb25zdCBwZGZqc1dvcmtlciA9IGF3YWl0IGltcG9ydChcInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlci5lbnRyeVwiKTtcblxuICAgICAgICBwZGZqcy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyA9IHBkZmpzV29ya2VyO1xuXG4gICAgICAgIGNvbnN0IHBkZjogUERGRG9jdW1lbnRQcm94eSA9IGF3YWl0IGdldERvY3VtZW50KFxuICAgICAgICAgICAgdGhpcy5jaG9zZW5QbGFuLmZpbGVwYXRoLFxuICAgICAgICApLnByb21pc2U7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBwZGYuZ2V0UGFnZSgxKTtcblxuICAgICAgICBjb25zdCB2aWV3UG9ydFBhcmFtZXRlcnMgPSB7IHNjYWxlOiAxIH07XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gcGFnZS5nZXRWaWV3cG9ydCh2aWV3UG9ydFBhcmFtZXRlcnMpO1xuXG4gICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IHZpZXdwb3J0LmhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSB2aWV3cG9ydC53aWR0aDtcblxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5nZXRTaXplRm9yQ2FudmFzKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpO1xuICAgICAgICBjb25zb2xlLmxvZyhzaXplKTtcbiAgICAgICAgdGhpcy5jYW52YXNTaXplID0gc2l6ZTtcblxuICAgICAgICB0aGlzLmNhbnZhc1pvb20gPSBzaXplLncgLyB2aWV3cG9ydC53aWR0aDtcblxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dChcbiAgICAgICAgICAgIFwiMmRcIixcbiAgICAgICAgKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gICAgICAgIGNvbnN0IHJlbmRlckNvbnRleHQgPSB7XG4gICAgICAgICAgICBjYW52YXNDb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgICAgdmlld3BvcnQsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlbmRlclRhc2sgPSBwYWdlLnJlbmRlcihyZW5kZXJDb250ZXh0KS5wcm9taXNlO1xuXG4gICAgICAgIHJlbmRlclRhc2sudGhlbigoKSA9PiBjb25zb2xlLmxvZyhcIlBhZ2UgcmVuZGVyZWRcIikpO1xuXG4gICAgICAgIC8vIGNvbnN0IHJlcyA9IGNhbnZhcy50b0RhdGFVUkwoKTtcbiAgICAgICAgLy8gaWYgKHBkZiAhPSBudWxsKSBwZGYuZGVzdHJveSgpO1xuICAgICAgICAvLyByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8qKiBVc2VyIGNsaWNrIHRvIHVzZXIgU3ltbWV0cnkgVmVydGljYWwgKi9cbiAgICBvblJlZmxlY3RWKCkge1xuICAgICAgICB0aGlzLnJlZmxlY3RWID0gIXRoaXMucmVmbGVjdFY7XG4gICAgICAgIHRoaXMuY29uZmlndXJlQ2FudmFzKCk7XG4gICAgfVxuXG4gICAgLyoqIFVzZXIgY2xpY2sgdG8gdXNlciBTeW1tZXRyeSBIb3Jpem9udGFsICovXG4gICAgb25SZWZsZWN0SCgpIHtcbiAgICAgICAgdGhpcy5yZWZsZWN0SCA9ICF0aGlzLnJlZmxlY3RIO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyZUNhbnZhcygpO1xuICAgIH1cblxuICAgIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFUVEVSUE9SVFxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuXG4gICAgLyoqIExhdW5jaCBtYXR0ZXJwb3J0ICovXG4gICAgYXN5bmMgbGF1bmNoVmlld2VyKCkge1xuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLmluaXRTZGtGb3JNb2RlbChcbiAgICAgICAgICAgIHRoaXMuY2hvc2VuUGxhbi5tb2RlbDNkLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHsgc2RrIH0gPSB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlO1xuICAgICAgICB0aGlzLmZsb29ycyA9IE9iamVjdC52YWx1ZXModGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5mbG9vcnMpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmZsb29ycyk7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLyoqIE1vdmUgRmxvb3IgbW9kZSAqL1xuICAgICAgICAgICAgYXdhaXQgc2RrLk1vZGUubW92ZVRvKHNkay5Nb2RlLk1vZGUuRkxPT1JQTEFOKTtcbiAgICAgICAgICAgIC8qKiBEaXNwbGF5IHRoZSBjb3JyZWN0IGZsb29yIGZvciB0aGUgcGxhbiAqL1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLm1vdmVUb0Zsb29yKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNob3NlblBsYW4ubmFtZSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjb3VsZG5vdCBtb3ZlIHRvIGZsb29yXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiogV2UgY2FuIGRpc3BsYXkgdGhlIG1hdHRlcnBvcnQgdmlldyBub3cgKi9cbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9LCAzMDApO1xuXG4gICAgICAgIC8qKiBXaGVuIHRoZSB1c2VyIHRyeSB0byBjaGFuZ2UgdGhlIHZpZXcgbW9kZSB3ZSBzZXQgaXQgYmFjayB0byBmbG9vcnBhbiAqL1xuXG4gICAgICAgIHNkay5vbihzZGsuTW9kZS5FdmVudC5DSEFOR0VfRU5ELCAob2xkTW9kZSwgbmV3TW9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5ld01vZGUgIT09IHNkay5Nb2RlLk1vZGUuRkxPT1JQTEFOKSB7XG4gICAgICAgICAgICAgICAgc2RrLk1vZGUubW92ZVRvKHNkay5Nb2RlLk1vZGUuRkxPT1JQTEFOLCB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNpdGlvbi5pbnN0YW50XCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qKiBVcGRhdGUgY3VycmVudCBjYW1lcmEgcG9zZSBhbmQgcm90YXRpb24gKi9cbiAgICAgICAgc2RrLkNhbWVyYS5wb3NlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8qKiBXZSB1cGRhdGUgb25seSBpZiB0aGUgdXNlciBpcyBub3QgY2hhbmdpbmcgdGhlIHJvdGF0aW9uIHdpdGggdGhlIDxpbnB1dD4gcmFuZ2UsIHRvIG5vdCBvdmVycmlkZSB0aGUgPGlucHV0PiB2YWx1ZSAqL1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzUm90YXRpbmdSYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucm90YXRpb24gPSBldmVudC5yb3RhdGlvbi55ICsgMTgwO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldlJvdGF0aW9uID0gdGhpcy5yb3RhdGlvbjtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbWVyYVBvc2UgPSBldmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIFdoZW4gdGhlIDxpbnB1dD4gcmFuZ2UsIGZvciByb3RhdGlvbiwgY2hhbmdlICovXG4gICAgYXN5bmMgb25Sb3RhdGlvbkNoYW5nZSgpIHtcbiAgICAgICAgY29uc3Qgcm90YXRpb25EZWx0YSA9IHRoaXMucm90YXRpb24gLSB0aGlzLnByZXZSb3RhdGlvbjtcbiAgICAgICAgdGhpcy5wcmV2Um90YXRpb24gPSB0aGlzLnJvdGF0aW9uO1xuXG4gICAgICAgIC8qKiBTZW5kIHRoZSByb3RhdGlvbkRlbHRhIHRvIHRoIHF1ZXVlIGV2ZW50IGluIG9yZGVyIHRvIGJlIHNlbmQgdG8gbWF0dGVycG9ydCAqL1xuICAgICAgICB0aGlzLnJvdGF0aW5nUXVldWVFdmVudC5wdXNoKHJvdGF0aW9uRGVsdGEpO1xuXG4gICAgICAgIC8qKiBTdGFydCB0byBwcm9jZXNzIHRoZSBxdWV1ZSwgaWYgaXQncyB0aGUgZmlyc3QgZXZlbnQgKi9cbiAgICAgICAgaWYgKCF0aGlzLmlzUm90YXRpbmdSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5pc1JvdGF0aW5nUmFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzUm90YXRpbmdRdWV1ZUV2ZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUHJvY2VzcyB0aGUgcm90YXRpbmcgZXZlbnQgcXVldWUsIHNlbmQgZXZlbnQgb25lIGJ5IG9uZSB0byBtYXR0ZXJwb3J0ICAqL1xuICAgIGFzeW5jIHByb2Nlc3NSb3RhdGluZ1F1ZXVlRXZlbnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2RrIH0gPSB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlO1xuXG4gICAgICAgIC8qKiBXaGlsZSB0aGUgcXVldWUgaXMgbm90IGVtcHR5ICovXG4gICAgICAgIHdoaWxlICh0aGlzLnJvdGF0aW5nUXVldWVFdmVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvKiogUm90YXRlIG1hdHRlcnBvcnQgYnkgZGVsdGFSb3RhdGlvbiBhbmQgcmVtb3ZlIGV2ZW50IGZyb20gcXVldWUgKi9cbiAgICAgICAgICAgIGF3YWl0IHNkay5DYW1lcmEucm90YXRlKHRoaXMucm90YXRpbmdRdWV1ZUV2ZW50LnNoaWZ0KCksIDAsIHtcbiAgICAgICAgICAgICAgICBzcGVlZDogMzYwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvKiogV2hlbiB0aGUgcXVldWUgaXMgZW1wdHksIHRoZW4gdGhlIHVzZXIgaXMgbm90IHJvdGF0aW5nIHdpdGggdGhlIDxpbnB1dD4gcmFuZ2UgYW55bW9yZSAqL1xuICAgICAgICB0aGlzLmlzUm90YXRpbmdSYW5nZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNFUiBBQ1RJT05TXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbiAgICAvKiogUHJldmlldyBjYWxpYnJhdGlvbiAqL1xuICAgIGFzeW5jIG9uUHJldmlldygpIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgLyoqIFBsYWNlIHN3ZWVwcyAqL1xuICAgICAgICB0aGlzLm9uUGxhY2VTd2VlcHMoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjYWxpYnJhdGUoKSB7XG4gICAgICAgIGNvbnN0IFtuYXZpZ2F0aW9uXSA9IHRoaXMuY3VycmVudE5hdmlnYXRpb25zO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IEpTT04ucGFyc2UobmF2aWdhdGlvbi5wb3NpdGlvbik7XG4gICAgICAgIHRoaXMuZmlyc3RNYXJrUGxhbiA9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLnNkay5SZW5kZXJlci5nZXRTY3JlZW5Qb3NpdGlvbih7XG4gICAgICAgICAgICAgICAgeDogcG9zaXRpb24ueCxcbiAgICAgICAgICAgICAgICB5OiBwb3NpdGlvbi55LFxuICAgICAgICAgICAgICAgIHo6IHBvc2l0aW9uLnosXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWNvbmRNYXJrUGxhbiA9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLnNkay5SZW5kZXJlci5nZXRTY3JlZW5Qb3NpdGlvbih7XG4gICAgICAgICAgICAgICAgeDogcG9zaXRpb24ueCxcbiAgICAgICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgICAgIHo6IDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVsdGFaVmlzaXQgPSAwIC0gcG9zaXRpb24uejtcbiAgICAgICAgbGV0IGRlbHRhWFBsYW4gPSB0aGlzLnNlY29uZE1hcmtQbGFuLnggLSB0aGlzLmZpcnN0TWFya1BsYW4ueDtcbiAgICAgICAgaWYgKGRlbHRhWFBsYW4gPT09IDApIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwid2UgbW92ZWQgYWxvbmcgWSBheGlzIG9uIFBsYW5cIik7XG4gICAgICAgICAgICBjb25zdCBkZWx0YVlQbGFuID0gdGhpcy5zZWNvbmRNYXJrUGxhbi55IC0gdGhpcy5maXJzdE1hcmtQbGFuLnk7XG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5uYW1lWUF4aXMgPSBcInpcIjtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVYQXhpcyA9IFwieFwiO1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WSA9IHRoaXMuc2Vjb25kTWFya1BsYW4ueTtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlWSA9IGRlbHRhWVBsYW4gLyBkZWx0YVpWaXNpdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiIHdlIG1vdmVkIGFsb25nIFggYXhpcyBvbiBQbGFuXCIpO1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UubmFtZVlBeGlzID0gXCJ4XCI7XG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5uYW1lWEF4aXMgPSBcInpcIjtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm9mZnNldFggPSB0aGlzLnNlY29uZE1hcmtQbGFuLng7XG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5zY2FsZVggPSBkZWx0YVhQbGFuIC8gZGVsdGFaVmlzaXQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGhpcmRNYXJrUGxhbiA9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlLnNkay5SZW5kZXJlci5nZXRTY3JlZW5Qb3NpdGlvbih7XG4gICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgICAgIHo6IHBvc2l0aW9uLnosXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVsdGFYVmlzaXQgPSAwIC0gcG9zaXRpb24ueDtcbiAgICAgICAgaWYgKGRlbHRhWFBsYW4gPT09IDApIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiIHdlIG1vdmVkIGFsb25nIFggYXhpcyBvbiBQbGFuXCIpO1xuICAgICAgICAgICAgZGVsdGFYUGxhbiA9IHRoaXJkTWFya1BsYW4ueCAtIHRoaXMuZmlyc3RNYXJrUGxhbi54O1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WCA9IHRoaXJkTWFya1BsYW4ueDtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlWCA9IGRlbHRhWFBsYW4gLyBkZWx0YVhWaXNpdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWVBsYW4gPSB0aGlyZE1hcmtQbGFuLnkgLSB0aGlzLmZpcnN0TWFya1BsYW4ueTtcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm9mZnNldFkgPSB0aGlyZE1hcmtQbGFuLnk7XG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5zY2FsZVkgPSBkZWx0YVlQbGFuIC8gZGVsdGFYVmlzaXQ7XG4gICAgICAgIH1cblxuICAgICAgICAvKiogVGFrZSBjb25zaWRpcmF0aW9uIG9mIHBhbiBhbmQgem9vbSBvZiBwbGFuIG9uIGNhbnZhcyAqL1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1JbmZvID0gdGhpcy5wYW56b29tLmdldFRyYW5zZm9ybSgpO1xuICAgICAgICBjb25zdCB7IHNjYWxlLCB4LCB5IH0gPSB0cmFuc2Zvcm1JbmZvO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0cmFuc2Zvcm1JbmZvKTtcbiAgICAgICAgdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WFBsYW4gPSB4O1xuICAgICAgICB0aGlzLmNhbGlicmFnZS5vZmZzZXRZUGxhbiA9IHk7XG4gICAgICAgIHRoaXMuY2FsaWJyYWdlLnNjYWxlUGxhbiA9IHNjYWxlO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhbGlicmFnZSk7XG4gICAgfVxuXG4gICAgLyoqIFBsYWNlIHN3ZWVwcyAqL1xuICAgIGFzeW5jIG9uUGxhY2VTd2VlcHMoKSB7XG4gICAgICAgIC8qKiBEaXNwbGF5IGFsbCBzY2FuICovXG4gICAgICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmUodGhpcy5jaG9zZW5QbGFuLnpvbmVJRCk7XG5cbiAgICAgICAgaWYgKHpvbmUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSB6b25lO1xuICAgICAgICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3Jab25lKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnROYXZpZ2F0aW9ucyA9IG5hdmlnYXRpb25zO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jYWxpYnJhdGUoKTtcbiAgICAgICAgICAgIGlmIChuYXZpZ2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBuYXZpZ2F0aW9uIG9mIG5hdmlnYXRpb25zKSB7ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVzdFBvc2l0aW9uID0gSlNPTi5wYXJzZShuYXZpZ2F0aW9uLnBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25YID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVYQXhpcyA9PT0gXCJ4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRlc3RQb3NpdGlvbi54XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXN0UG9zaXRpb24uejtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25ZID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm5hbWVZQXhpcyA9PT0gXCJ4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRlc3RQb3NpdGlvbi54XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXN0UG9zaXRpb24uejtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVzdFggPVxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25YICogdGhpcy5jYWxpYnJhZ2Uuc2NhbGVYICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLm9mZnNldFg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RZID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uWSAqIHRoaXMuY2FsaWJyYWdlLnNjYWxlWSArXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5vZmZzZXRZO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInRlc3QgcG9zaXRpb24gR1JFRU5cIiwgdGVzdFgsIHRlc3RZKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRYID1cbiAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0WCAtIHRoaXMuY2FsaWJyYWdlLm9mZnNldFhQbGFuKSAvXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5zY2FsZVBsYW47IC8vIHdlIGFyZSB1bmRvaW5nIHRoZSBwYW4gYW5kIHpvb21cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRZID1cbiAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0WSAtIHRoaXMuY2FsaWJyYWdlLm9mZnNldFlQbGFuKSAvXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5zY2FsZVBsYW47XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmF2SUQ6IG5hdmlnYXRpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFuSUQ6IHRoaXMuY2hvc2VuUGxhbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHRyYW5zZm9ybWVkWCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHRyYW5zZm9ybWVkWSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGljb25TaXplID0gMzAgKiB0aGlzLmNhbGlicmFnZS5zY2FsZVBsYW47XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoaWZ0ID0gaWNvblNpemUgLyAyO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdJbWFnZShcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vbWRpOmFkanVzdC5zdmc/Y29sb3I9Z3JlZW4maGVpZ2h0PTMwJndpZHRoPTMwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFggLSBzaGlmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkWSAtIHNoaWZ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2F2ZSBjYWxpYnJhdGlvbiAqL1xuICAgIGFzeW5jIG9uU2F2ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFpvbmUpIHtcbiAgICAgICAgICAgIC8qKiBOb3JtYWxpemUgd2l0aCB0aGUgem9vbSAqL1xuICAgICAgICAgICAgLy8gdGhpcy5jYWxpYnJhZ2Uub2Zmc2V0WCAvPSB0aGlzLmNhbnZhc1pvb207XG4gICAgICAgICAgICAvLyB0aGlzLmNhbGlicmFnZS5vZmZzZXRZIC89IHRoaXMuY2FudmFzWm9vbTtcbiAgICAgICAgICAgIC8vIHRoaXMuY2FsaWJyYWdlLnggLz0gdGhpcy5jYW52YXNab29tO1xuICAgICAgICAgICAgLy8gdGhpcy5jYWxpYnJhZ2UueSAvPSB0aGlzLmNhbnZhc1pvb207XG4gICAgICAgICAgICB0aGlzLmNhbGlicmFnZS5uZXcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jYWxpYnJhZ2UuaW1nV2lkdGggPSB0aGlzLmNhbnZhc1NpemUudztcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYWdlLmltZ0hlaWdodCA9IHRoaXMuY2FudmFzU2l6ZS5oO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLnVwZGF0ZVBsYW4oe1xuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmNob3NlblBsYW4uaWQsXG4gICAgICAgICAgICAgICAgY2FsaWJyYXRpb246IEpTT04uc3RyaW5naWZ5KHRoaXMuY2FsaWJyYWdlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMubWFwKGFzeW5jIChwb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG5hdklEIH0gPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBvc2l0aW9uLm5hdklEO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuYXYgPSB0aGlzLmN1cnJlbnROYXZpZ2F0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKF9uYXYpID0+IF9uYXYuaWQgPT09IG5hdklELFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zRGF0YVRvVXBkYXRlO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmF2LnBvc2l0aW9uT25QbGFuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbk9uUGxhbiA9IG5hdi5wb3NpdGlvbk9uUGxhbi5tYXAoKGVudHJ5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoZW50cnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uRm9yQ3VycmVudFBsYW4gPSBwb3NpdGlvbk9uUGxhbi5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbnRyeSkgPT4gZW50cnkucGxhbklEID09PSB0aGlzLmNob3NlblBsYW4uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uRm9yQ3VycmVudFBsYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbk9uUGxhbi5zcGxpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uT25QbGFuLmluZGV4T2YocG9zaXRpb25Gb3JDdXJyZW50UGxhbiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uT25QbGFuLnB1c2gocG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zRGF0YVRvVXBkYXRlID0gWy4uLnBvc2l0aW9uT25QbGFuXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc0RhdGFUb1VwZGF0ZSA9IFtwb3NpdGlvbl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocG9zaXRpb25zRGF0YVRvVXBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS51cGRhdGVOYXZpZ2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBuYXZJRCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uT25QbGFuOiBwb3NpdGlvbnNEYXRhVG9VcGRhdGUubWFwKChlbnRyeSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShlbnRyeSksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5yZW1vdmVGcmFtZSgpO1xuXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgIFwiL2Rhc2hib2FyZC9sb2NhbGlzYXRpb25cIixcbiAgICAgICAgICAgIHRoaXMuc3BhY2VJRCxcbiAgICAgICAgICAgIFwicGxhbnNcIixcbiAgICAgICAgXSk7XG4gICAgICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJjYWxpYnJhdGlvbi5zdWNjZXNzXCIpKTtcbiAgICB9XG5cbiAgICAvKiogUmVzZXQgdGhlIGNhbnZhcyAqL1xuICAgIG9uUmVzZXQoKSB7XG4gICAgICAgIHRoaXMucmVmbGVjdEggPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWZsZWN0ViA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNvbmZpZ3VyZUNhbnZhcygpO1xuICAgIH1cblxuICAgIC8qKiBDYW5jZWwsIGxlYXZlICovXG4gICAgb25DYW5jZWwoKSB7XG4gICAgICAgIHRoaXMubWF0dGVycG9ydEltcG9ydFNlcnZpY2UucmVtb3ZlRnJhbWUoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xuICAgICAgICAgICAgXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLFxuICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgXCJwbGFuc1wiLFxuICAgICAgICBdKTtcbiAgICAgICAgYWxlcnQodGhpcy50cmFuc2xhdGUuaW5zdGFudChcImNhbGlicmF0aW9uLmNhbmNlbGVkXCIpKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkZsb29yQ2xpY2soZmxvb3IpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rmxvb3IgPSBmbG9vcjtcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0SW1wb3J0U2VydmljZS5tb3ZlVG9GbG9vcihmbG9vci5pZCk7XG4gICAgfVxuXG4gICAgb25BY3RpdmF0ZVpvb21DaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuem9vbUNhbkJlQ2hhbmdlZCA9ICF0aGlzLnpvb21DYW5CZUNoYW5nZWQ7XG4gICAgICAgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjdmlld2VyLWZyYW1lXCIpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoaWZyYW1lKSB7XG4gICAgICAgICAgICBpZnJhbWUuc3R5bGUuekluZGV4ID0gdGhpcy56b29tQ2FuQmVDaGFuZ2VkID8gXCIxXCIgOiBcIjBcIjtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0zXCI+XG4gICAgICAgICAgICA8bGliLXRhYi1uYXZpZ2F0aW9uIFttZW51SXRlbXNdPSdtZW51SXRlbXMnPjwvbGliLXRhYi1uYXZpZ2F0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGlkPVwicm93Q2FudmFzXCI+XG4gICAgPGRpdiAjY2FudmFzRGl2IGlkPVwiY2FudmFzRGl2XCI+XG5cbiAgICAgICAgPGRpdiBpZD1cInZpZXdlci1mcmFtZVwiIFtzdHlsZS5wb2ludGVyLWV2ZW50c109XCJ6b29tQ2FuQmVDaGFuZ2VkPydhdXRvJzonbm9uZSdcIj5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImJsdXJcIj48L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Y2FudmFzIGlkPVwiY2FudmFzXCIgW25nU3R5bGVdPVwieydvcGFjaXR5JzogKHByZXZpZXd8fGxvYWRpbmcpID8gJzEnIDogJ2NhbGMoJyArIG9wYWNpdHkgKyAnLyAxMDApJ31cIj48L2NhbnZhcz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYWxpYnJhdGlvbi10b29scyBjb250YWluZXItZmx1aWRcIiAqbmdJZj1cIiEocHJldmlldyB8fCBsb2FkaW5nKVwiPlxuICAgICAgICA8aDE+e3snQ2FsaWJyYXRpb24gdG9vbCcgfCB0cmFuc2xhdGV9fTwvaDE+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1zLTAgbWUtMCBsZWdlbmRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnb3BhY2l0eSc6ICdjYWxjKCcgKyAoLShvcGFjaXR5LTEwMCkrMTApICsgJy8gMTAwKSd9XCI+e3snTGVzcycgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdGl0bGVcIj57eydQbGFuIE9wYWNpdHknIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7J29wYWNpdHknOiAnY2FsYygnICsgKG9wYWNpdHkrMTApICsgJy8gMTAwKSd9XCI+e3snTW9yZScgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1zLTAgbWUtMCBcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgW2Rpc2FibGVkXT1cImZhbHNlXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIFsobmdNb2RlbCldPVwib3BhY2l0eVwiIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1yYW5nZVwiIG1pbj1cIjBcIiBtYXg9XCIxMDBcIiB2YWx1ZT1cIjUwXCIgaWQ9XCJvcGFjaXR5XCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1zLTAgbWUtMCBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtbGVnZW5kXCI+e3snQ2hhbmdlIFZpc2l0IEZsb29yJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1zLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGFiZWwtZmlsZSByb3VuZGVkLXBpbGxcIiBpZD1cImRyb3Bkb3duQmFzaWMxXCIgbmdiRHJvcGRvd25Ub2dnbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2N1cnJlbnRGbG9vciA/IGN1cnJlbnRGbG9vci5pZCA6ICgnRmxvb3InIHwgdHJhbnNsYXRlKSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bkJhc2ljMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKm5nRm9yPVwibGV0IGZsb29yIG9mIGZsb29yc1wiIChjbGljayk9XCJvbkZsb29yQ2xpY2soZmxvb3IpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmxvb3IubmFtZS5sZW5ndGggPiAwID8gZmxvb3IubmFtZSA6ICgnRmxvb3IgJyArIGZsb29yLmlkKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1zLTAgbWUtMCBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtbGVnZW5kIG1lLTNcIj57eydQYW4vWm9vbSBWaXNpdCcgfCB0cmFuc2xhdGV9fSB7e3pvb21DYW5CZUNoYW5nZWQgPyBcIk9OXCIgOiBcIk9GRlwifX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJvbkFjdGl2YXRlWm9vbUNoYW5nZSgpXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiA1cHg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLXdhcm5pbmcgbWItMyBtdC0zXCIgKm5nSWY9XCJ6b29tQ2FuQmVDaGFuZ2VkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgdGV4dC13YXJuaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3tcImNhbGlicmF0aW9uLndhaXQtbWVzc2FnZVwiIHwgdHJhbnNsYXRlfX08L2g1PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiIChjbGljayk9XCJvblByZXZpZXcoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInpvb21DYW5CZUNoYW5nZWRcIj57eydQcmV2aWV3JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+e3snQ2FuY2VsJyB8XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cblxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYWxpYnJhdGlvbi10b29scyBjb250YWluZXItZmx1aWRcIiAqbmdJZj1cInByZXZpZXdcIj5cbiAgICAgICAgPGgxPnt7J1ZhbGlkYXRpb24nIHwgdHJhbnNsYXRlfX08L2gxPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiIChjbGljayk9XCJvblNhdmUoKVwiPnt7J1ZhbGlkYXRlJyB8XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uUmVzZXQoKVwiPnt7J1Jlc2V0JyB8XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57eydDYW5jZWwnIHxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsaWJyYXRpb24tdG9vbHMgY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgIDxoMz57e1wiV2FpdGluZyBmb3IgTWF0dGVycG9ydFwiIHwgdHJhbnNsYXRlfX0uLi48L2gzPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHJvbGU9XCJzdGF0dXNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -1,8 +1,8 @@
1
1
  import { Component, HostListener, ViewChild } from '@angular/core';
2
2
  import { getDocument } from "pdfjs-dist";
3
- import { sortAlphabeticallyOnName, downloadFileAsObject } from 'ngx-smarterplan-core';
3
+ import { sortAlphabeticallyOnName, downloadFileAsObject } from '@smarterplan/ngx-smarterplan-core';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "ngx-smarterplan-core";
5
+ import * as i1 from "@smarterplan/ngx-smarterplan-core";
6
6
  import * as i2 from "@angular/router";
7
7
  import * as i3 from "@ng-bootstrap/ng-bootstrap";
8
8
  import * as i4 from "@ngx-translate/core";
@@ -311,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
311
311
  type: HostListener,
312
312
  args: ["window:message", ["$event"]]
313
313
  }] } });
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1wbGFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1sb2NhdGlvbnMvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5zL2VkaXQtcGxhbi9lZGl0LXBsYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvZWRpdC1wbGFuL2VkaXQtcGxhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6QyxPQUFPLEVBQXFGLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7OztBQU96SyxNQUFNLE9BQU8saUJBQWlCO0lBOEUxQixZQUNZLFdBQXdCLEVBQ3hCLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxZQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixZQUEwQixFQUMxQixTQUEyQjtRQVAzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUF4RXZDLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFVekIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVczQjs7V0FFRztR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QyxTQUFTLENBQUMsU0FBUyxFQUFFO3dCQUN4QyxLQUFLLEVBQUUsd0JBQXdCO3FCQUNsQztpQkFDSixDQUNKLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUQsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSztRQUNYLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUMxQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUN2QyxHQUFHLENBQ04sQ0FBQztTQUNMO2FBQU07WUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQzFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxFQUMxQixHQUFHLENBQ04sQ0FBQztTQUNMO0lBQ0wsQ0FBQzs7OEdBellRLGlCQUFpQjtrR0FBakIsaUJBQWlCLGlaQ2I5Qix1dkhBdUZjOzJGRDFFRCxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsZUFBZTswUkFNRixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBRU0sVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUVDLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkF3SGhCLFlBQVk7c0JBRGpCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gXCJwZGZqcy1kaXN0XCI7XG5pbXBvcnQgeyBQREZEb2N1bWVudFByb3h5IH0gZnJvbSBcIm5nMi1wZGYtdmlld2VyXCI7XG5pbXBvcnQgeyBab25lLCBQbGFuLCBTcGFjZSwgTWVudUl0ZW0sIFBsYW5TZXJ2aWNlLCBab25lU2VydmljZSwgVmlzaXRTZXJ2aWNlLCBTcGFjZVNlcnZpY2UsIHNvcnRBbHBoYWJldGljYWxseU9uTmFtZSwgZG93bmxvYWRGaWxlQXNPYmplY3QgfSBmcm9tICduZ3gtc21hcnRlcnBsYW4tY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1lZGl0LXBsYW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1wbGFuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdC1wbGFuLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRWRpdFBsYW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQFZpZXdDaGlsZChcImRpYWxvZ1wiKSBkaWFsb2chOiBhbnk7XG5cbiAgICBAVmlld0NoaWxkKFwiZGlhbG9nWm9uZVwiKSBkaWFsb2dab25lITogYW55O1xuXG4gICAgQFZpZXdDaGlsZChcInByZXBhcmluZ1wiKSBsb2FkaW5nTW9kYWw6IGFueTtcblxuICAgIHNwYWNlSUQ6IHN0cmluZztcblxuICAgIGNob3NlblBsYW46IFBsYW47XG5cbiAgICBlZGl0ZWRQbGFuOiBQbGFuO1xuXG4gICAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgc3ZnRWRpdG9yO1xuXG4gICAgc3ZnRWRpdG9ySWZyYW1lO1xuXG4gICAgbmF2aWdhdGlvbnM6IHN0cmluZ1tdO1xuXG4gICAgem9uZXM6IFpvbmVbXTtcblxuICAgIGlzTmV3Wm9uZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgbmV3Wm9uZURhdGE7XG5cbiAgICBlZGl0b3JVcmw7XG5cbiAgICBlZGl0ZWRab25lOiBab25lO1xuXG4gICAgaW1hZ2VzMzYwO1xuXG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25zIGZvciBzdmdFZGl0b3JcbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbmZpZzogYW55ID0ge1xuICAgICAgICBub1N0b3JhZ2VPbkxvYWQ6IHRydWUsXG4gICAgICAgIGZvcmNlU3RvcmFnZTogdHJ1ZSxcbiAgICAgICAgLy8gaW1nUGF0aDogXCIvYXNzZXRzL2VkaXRvci9pbWFnZXMvXCIsXG4gICAgICAgIC8vIGV4dFBhdGg6IFwiL2Fzc2V0cy9lZGl0b3IvZXh0ZW5zaW9ucy9cIixcbiAgICAgICAgLy8gbGFuZ1BhdGg6IFwiL2Fzc2V0cy9lZGl0b3IvbG9jYWxlL1wiLFxuICAgICAgICAvLyBjYW52Z1BhdGg6IFwiL2Fzc2V0cy9lZGl0b3IvY2FudmcvXCIsXG4gICAgICAgIC8vIGpzcGRmUGF0aDogXCIvYXNzZXRzL2VkaXRvci9qc3BkZi9cIixcbiAgICAgICAgLy8gakdyYWR1YXRlUGF0aDogXCIvYXNzZXRzL2VkaXRvci9qZ3JhZHVhdGUvaW1hZ2VzL1wiLFxuICAgICAgICAvLyBleHRJY29uc1BhdGg6IFwiL2Fzc2V0cy9lZGl0b3IvZXh0ZW5zaW9ucy9cIixcbiAgICAgICAgLy8gc3R5bGVzaGVldHM6IFtcbiAgICAgICAgLy8gICAgIFwiL2Fzc2V0cy9lZGl0b3IvamdyYWR1YXRlL2Nzcy9qR3JhZHVhdGUuY3NzXCIsXG4gICAgICAgIC8vICAgICBcIi9hc3NldHMvZWRpdG9yL3NwaW5idG4valF1ZXJ5LlNwaW5CdXR0b24uY3NzXCIsXG4gICAgICAgIC8vICAgICBcIi9hc3NldHMvZWRpdG9yL2pncmFkdWF0ZS9jc3MvalBpY2tlci5jc3NcIixcbiAgICAgICAgLy8gICAgIFwiL2Fzc2V0cy9lZGl0b3Ivc3ZnLWVkaXRvci5jc3NcIixcbiAgICAgICAgLy8gXSxcbiAgICAgICAgZGltZW5zaW9uczogWzEwMDAwLCAxMDAwMF0sXG4gICAgICAgIHNob3dsYXllcnM6IHRydWUsXG4gICAgICAgIG5vRGVmYXVsdEV4dGVuc2lvbnM6IHRydWUsXG4gICAgICAgIGJhc2VQYXRoOiBcIi9hc3NldHMvZWRpdG9yL1wiLFxuICAgICAgICBjdXN0b21FeHBvcnRJbWFnZTogdHJ1ZSxcbiAgICAgICAgZXh0ZW5zaW9uczogW1xuICAgICAgICAgICAgXCJleHQtY29ubmVjdG9yXCIsXG4gICAgICAgICAgICAvLyBcImV4dC1leWVkcm9wcGVyXCIsXG4gICAgICAgICAgICAvLyBcImV4dC1ncmlkXCIsXG4gICAgICAgICAgICAvLyBcImV4dC1tYXJrZXJzXCIsXG4gICAgICAgICAgICAvLyBcImV4dC1vdmVydmlld193aW5kb3dcIixcbiAgICAgICAgICAgIC8vIFwiZXh0LXNwaS1saWJyYXJ5XCIsXG4gICAgICAgICAgICAvLyBcImV4dC1zcGktaWNvblwiLFxuICAgICAgICAgICAgXCJleHQtc3Atem9uZVwiLFxuICAgICAgICAgICAgLy8gXCJleHQtYXJyb3dzXCIsXG4gICAgICAgICAgICAvLyBcImV4dC1zcC1jc3NcIixcbiAgICAgICAgICAgIC8vIFwiZXh0LXBsYWNlbWFya1wiLFxuICAgICAgICBdLFxuICAgIH07XG5cbiAgICBjdXJyZW50U3BhY2U6IFNwYWNlO1xuXG4gICAgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwbGFuU2VydmljZTogUGxhblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHZpc2l0U2VydmljZTogVmlzaXRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNwYWNlU2VydmljZTogU3BhY2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5jaG9zZW5QbGFuID0gdGhpcy5wbGFuU2VydmljZS5nZXRDaG9zZW5QbGFuKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yVXJsID0gXCIvYXNzZXRzL2VkaXRvci9tYWluLmh0bWxcIjtcbiAgICAgICAgdGhpcy5zcGFjZUlEID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5zcGFjZUlEO1xuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZSA9IGF3YWl0IHRoaXMuc3BhY2VTZXJ2aWNlLmdldFNwYWNlKHRoaXMuc3BhY2VJRCk7XG4gICAgICAgIHRoaXMuc2V0dXBNZW51SXRlbXMoKTtcbiAgICAgICAgaWYgKHRoaXMuc3BhY2VJRCAmJiAhdGhpcy5wbGFuU2VydmljZS5nZXRDaG9zZW5QbGFuKCkpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICAgICBcIi9kYXNoYm9hcmQvbG9jYWxpc2F0aW9uXCIsXG4gICAgICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgICAgIFwicGxhbnNcIixcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnNwYWNlSUQgJiYgIXRoaXMucGxhblNlcnZpY2UuZ2V0Q2hvc2VuUGxhbigpKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXR1cE1lbnVJdGVtcygpIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSBbXG4gICAgICAgICAgICB7IGxhYmVsOiBcIkxvY2F0aW9uc1wiLCB1cmw6IFwiL2xvY2FsaXNhdGlvblwiIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3VycmVudFNwYWNlLm5hbWUsXG4gICAgICAgICAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuc3BhY2VJRH1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJQbGFuc1wiLFxuICAgICAgICAgICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLmN1cnJlbnRTcGFjZS5pZH0vcGxhbnNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJFZGl0XCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgL2xvY2FsaXNhdGlvbi8ke3RoaXMuY3VycmVudFNwYWNlLmlkfS9wbGFuLWVkaXQ/c3BhY2VJRD0ke3RoaXMuY3VycmVudFNwYWNlLmlkfWAsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6bWVzc2FnZVwiLCBbXCIkZXZlbnRcIl0pXG4gICAgYXN5bmMgc3dpdGNoQWN0aW9uKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQuZGF0YS5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInNhdmVcIjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNhdmUoZXZlbnQuZGF0YS5yZWRpcmVjdCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJjbG9zZVwiOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJuZXctem9uZVwiOlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ZnID0gdW5lc2NhcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdmdFZGl0b3Iuc3ZnQ2FudmFzLmdldFN2Z1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlNjQgPSBgZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwke3dpbmRvdy5idG9hKFxuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnLFxuICAgICAgICAgICAgICAgICAgICApfWA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTcGFjZSA9IGF3YWl0IHRoaXMuc3BhY2VTZXJ2aWNlLmdldFNwYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VzMzYwID0gYXdhaXQgdGhpcy52aXNpdFNlcnZpY2UubG9hZEltYWdlc0ZvclNwYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNwYWNlLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdGVkUGxhbiA9IHsgLi4udGhpcy5jaG9zZW5QbGFuIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdGVkUGxhbi5maWxlcGF0aCA9IGJhc2U2NDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld1pvbmVEYXRhID0gZXZlbnQuZGF0YS56b25lRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmV3Wm9uZURhdGEuZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFJlZmVyZW5jZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQodGhpcy50cmFuc2xhdGUuaW5zdGFudChcImVkaXRpb24ubm8tem9uZVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnpvbmVzID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0J5U3BhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYWNlSUQsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZXMgPSBzb3J0QWxwaGFiZXRpY2FsbHlPbk5hbWUodGhpcy56b25lcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdGVkWm9uZSA9IHRoaXMuem9uZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh6KSA9PiB6Lm5hbWUgPT09IHRoaXMubmV3Wm9uZURhdGEubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldE5hdmlnYXRpb25zKCk7XG4gICAgICAgICAgICAgICAgICAgIG1vZGFsUmVmZXJlbmNlLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5kaWFsb2dab25lKTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcmVzZXROYXZpZ2F0aW9ucygpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9ucyA9IFtdO1xuICAgICAgICBjb25zdCBkZWZhdWx0Wm9uZSA9IHRoaXMuem9uZXMuZmluZCgoem9uZSkgPT4gIXpvbmUucGFyZW50SUQpO1xuICAgICAgICBpZiAoZGVmYXVsdFpvbmUuc3dlZXBJRHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9ucyA9IGRlZmF1bHRab25lLnN3ZWVwSURzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25Mb2FkKHN2Z0VkaXRvcikge1xuICAgICAgICBpZiAoc3ZnRWRpdG9yLmNvbnRlbnRXaW5kb3cuU3ZnRWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnN2Z0VkaXRvcklmcmFtZSA9IHN2Z0VkaXRvcjtcbiAgICAgICAgICAgIHRoaXMuc3ZnRWRpdG9yID0gbmV3IHN2Z0VkaXRvci5jb250ZW50V2luZG93LlN2Z0VkaXRvcigpO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN2Z0VkaXRvci5pbml0KCk7XG4gICAgICAgICAgICAvLyBhd2FpdCB0aGlzLnN2Z0VkaXRvci5wcmVmKGtleSwgdmFsKTtcbiAgICAgICAgICAgIC8vIGF3YWl0IHRoaXMuc3ZnRWRpdG9yLnNldENvbmZpZyh7IGV4dGVudGlvbnM6IHRoaXMuZXh0ZW5zaW9ucyB9KTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3ZnRWRpdG9yLnNldENvbmZpZyh0aGlzLmNvbmZpZywge1xuICAgICAgICAgICAgICAgIGFsbG93SW5pdGlhbFVzZXJPdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jaG9zZW5QbGFuICYmIHRoaXMuY2hvc2VuUGxhbi5leHRlbnNpb24gPT09IFwic3ZnXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRTdmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmNob3NlblBsYW4gJiYgdGhpcy5jaG9zZW5QbGFuLmV4dGVuc2lvbiA9PT0gXCJwZGZcIikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFBkZigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmNob3NlblBsYW4uY2FsaWJyYXRpb24gfHwgIXRoaXMuY2hvc2VuUGxhbi5pc01vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3ZnRWRpdG9ySWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGFjdGlvbjogXCJkaXNhYmxlLXpvbmVcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqXCIsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBvblNhdmUocmVkaXJlY3Q6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgaW1nQmxvYiA9IGF3YWl0IG5ldyBCbG9iKFxuICAgICAgICAgICAgW3RoaXMuc3ZnRWRpdG9yLnN2Z0NhbnZhcy5nZXRTdmdTdHJpbmcoKV0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJpbWFnZS9zdmcreG1sXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IFtuYW1lXSA9IHRoaXMuY2hvc2VuUGxhbi5uYW1lLnNwbGl0KFwiLlwiKTtcblxuICAgICAgICBjb25zdCBpbWdGaWxlOiBGaWxlID0gbmV3IEZpbGUoW2ltZ0Jsb2JdLCBgJHtuYW1lfS1lZGl0ZWQuc3ZnYCwge1xuICAgICAgICAgICAgdHlwZTogXCJpbWFnZS9zdmcreG1sXCIsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBsYW5TZXJ2aWNlLnNldFBsYW5GaWxlQ2FjaGUoaW1nRmlsZSk7XG4gICAgICAgIGlmICh0aGlzLmNob3NlblBsYW4uaXNNb2RpZmllZCkge1xuICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmRpYWxvZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAgICAgICAgICAgXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLFxuICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VJRCxcbiAgICAgICAgICAgICAgICBcInBsYW5zXCIsXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHVwZGF0ZVN2ZygpIHtcbiAgICAgICAgY29uc3QgbmV3VXJsID0gYXdhaXQgdGhpcy5wbGFuU2VydmljZS51cGRhdGVQbGFuRmlsZSgpO1xuICAgICAgICBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLnVwZGF0ZVBsYW4oe1xuICAgICAgICAgICAgaWQ6IHRoaXMuY2hvc2VuUGxhbi5pZCxcbiAgICAgICAgICAgIGFubmV4ZTogbmV3VXJsLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wbGFuU2VydmljZS5zZXRQbGFuRmlsZUNhY2hlKG51bGwpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAgICAgICBcIi9kYXNoYm9hcmQvbG9jYWxpc2F0aW9uXCIsXG4gICAgICAgICAgICB0aGlzLnNwYWNlSUQsXG4gICAgICAgICAgICBcInBsYW5zXCIsXG4gICAgICAgIF0pO1xuICAgIH1cblxuICAgIGFzeW5jIG5ld1N2ZygpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xuICAgICAgICAgICAgXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLFxuICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgXCJwbGFuc1wiLFxuICAgICAgICBdKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xuICAgICAgICAgICAgXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLFxuICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgXCJwbGFuc1wiLFxuICAgICAgICBdKTtcbiAgICAgICAgYWxlcnQodGhpcy50cmFuc2xhdGUuaW5zdGFudChcImVkaXRpb24uY2FuY2VsXCIpKTtcbiAgICB9XG5cbiAgICBhc3luYyBsb2FkU3ZnKCkge1xuICAgICAgICBjb25zdCBzdmdSZXF1ZXN0OiBhbnkgPSBhd2FpdCBkb3dubG9hZEZpbGVBc09iamVjdChcbiAgICAgICAgICAgIHRoaXMuY2hvc2VuUGxhbi5hbm5leGUsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzdmdSZXF1ZXN0KSB7XG4gICAgICAgICAgICBjb25zdCBzdmdCbG9iID0gYXdhaXQgc3ZnUmVxdWVzdC5Cb2R5O1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdmdFZGl0b3IubG9hZEZyb21EYXRhVVJJKHJlYWRlci5yZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHN2Z0Jsb2IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgbG9hZFBkZigpIHtcbiAgICAgICAgdGhpcy5zdmdFZGl0b3JJZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgIHsgYWN0aW9uOiBcImRpc2FibGUtem9uZVwiIH0sXG4gICAgICAgICAgICBcIipcIixcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgIFwiI2NhbnZhczRwZGZcIixcbiAgICAgICAgKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikgYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuXG4gICAgICAgIGNvbnN0IHBkZmpzID0gYXdhaXQgaW1wb3J0KFwicGRmanMtZGlzdC9idWlsZC9wZGZcIik7XG4gICAgICAgIGNvbnN0IHBkZmpzV29ya2VyID0gYXdhaXQgaW1wb3J0KFwicGRmanMtZGlzdC9idWlsZC9wZGYud29ya2VyLmVudHJ5XCIpO1xuXG4gICAgICAgIHBkZmpzLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjID0gcGRmanNXb3JrZXI7XG5cbiAgICAgICAgY29uc3QgcGRmOiBQREZEb2N1bWVudFByb3h5ID0gYXdhaXQgZ2V0RG9jdW1lbnQoXG4gICAgICAgICAgICB0aGlzLmNob3NlblBsYW4uZmlsZXBhdGgsXG4gICAgICAgICkucHJvbWlzZTtcbiAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHBkZi5nZXRQYWdlKDEpO1xuXG4gICAgICAgIGNvbnN0IHZpZXdQb3J0UGFyYW1ldGVycyA9IHsgc2NhbGU6IDEuNSB9O1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IHBhZ2UuZ2V0Vmlld3BvcnQodmlld1BvcnRQYXJhbWV0ZXJzKTtcbiAgICAgICAgdGhpcy5zdmdFZGl0b3Iuc3ZnQ2FudmFzLnNldFJlc29sdXRpb24odmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdodCk7XG5cbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHZpZXdwb3J0LmhlaWdodDtcbiAgICAgICAgY2FudmFzLndpZHRoID0gdmlld3BvcnQud2lkdGg7XG4gICAgICAgIGNvbnN0IHJlbmRlckNvbnRleHQgPSB7XG4gICAgICAgICAgICBjYW52YXNDb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgICAgdmlld3BvcnQsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlbmRlclRhc2sgPSBwYWdlLnJlbmRlcihyZW5kZXJDb250ZXh0KS5wcm9taXNlO1xuICAgICAgICByZW5kZXJUYXNrLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3SW1hZ2UgPSB0aGlzLnN2Z0VkaXRvci5zdmdDYW52YXMuYWRkU1ZHRWxlbWVudEZyb21Kc29uKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBcImltYWdlXCIsXG4gICAgICAgICAgICAgICAgYXR0cjoge1xuICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdmlld3BvcnQud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdmlld3BvcnQuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5zdmdFZGl0b3Iuc3ZnQ2FudmFzLmdldE5leHRJZCgpLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogXCJwb2ludGVyLWV2ZW50czppbmhlcml0XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdmdFZGl0b3Iuc3ZnQ2FudmFzLnNldEhyZWYoXG4gICAgICAgICAgICAgICAgbmV3SW1hZ2UsXG4gICAgICAgICAgICAgICAgY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIG9uTG9hZEltZyhpbWc6IGFueSkge1xuICAgICAgICB0aGlzLnN2Z0VkaXRvcklmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgeyBhY3Rpb246IFwiZGlzYWJsZS16b25lXCIgfSxcbiAgICAgICAgICAgIFwiKlwiLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBpbWdSZXF1ZXN0OiBhbnkgPSBhd2FpdCBkb3dubG9hZEZpbGVBc09iamVjdChcbiAgICAgICAgICAgIHRoaXMuY2hvc2VuUGxhbi5hbm5leGUsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbWdSZXF1ZXN0KSB7XG4gICAgICAgICAgICBjb25zdCBpbWdCbG9iID0gYXdhaXQgaW1nUmVxdWVzdC5Cb2R5O1xuICAgICAgICAgICAgY29uc3QgaW1nV2lkdGggPSBpbWcubmF0dXJhbFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgaW1nSGVpZ2h0ID0gaW1nLm5hdHVyYWxIZWlnaHQ7XG4gICAgICAgICAgICAvLyBhd2FpdCB0aGlzLnN2Z0VkaXRvci5zZXRDb25maWcoe1xuICAgICAgICAgICAgLy8gICAgIGRpbWVuc2lvbnM6IFtpbWdXaWR0aCwgaW1nSGVpZ2h0XSxcbiAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgICAgdGhpcy5zdmdFZGl0b3Iuc3ZnQ2FudmFzLnNldFJlc29sdXRpb24oaW1nV2lkdGgsIGltZ0hlaWdodCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ltYWdlID0gdGhpcy5zdmdFZGl0b3Iuc3ZnQ2FudmFzLmFkZFNWR0VsZW1lbnRGcm9tSnNvbihcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogXCJpbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaW1nV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbWdIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuc3ZnRWRpdG9yLnN2Z0NhbnZhcy5nZXROZXh0SWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogXCJwb2ludGVyLWV2ZW50czppbmhlcml0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdmdFZGl0b3Iuc3ZnQ2FudmFzLnNldEhyZWYobmV3SW1hZ2UsIHJlYWRlci5yZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGltZ0Jsb2IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25OZXdab25lKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNOZXdab25lID0gZmFsc2U7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgdGhpcy5zdmdFZGl0b3JJZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICAgICB7IGFjdGlvbjogXCJyZW5hbWUtbGF5ZXJcIiwgbmFtZTogZXZlbnQgfSxcbiAgICAgICAgICAgICAgICBcIipcIixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN2Z0VkaXRvcklmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHsgYWN0aW9uOiBcImNhbmNlbC1sYXllclwiIH0sXG4gICAgICAgICAgICAgICAgXCIqXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTNcIj5cbiAgICAgICAgICAgIDxsaWItdGFiLW5hdmlnYXRpb24gW21lbnVJdGVtc109J21lbnVJdGVtcyc+PC9saWItdGFiLW5hdmlnYXRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48aWZyYW1lICpuZ0lmPVwiZWRpdG9yVXJsXCIgI3N2Z0VkaXRvciBbc3JjXT1cImVkaXRvclVybCB8IHNhZmVVcmxcIiBmcmFtZWJvcmRlcj1cIjBcIlxuICAgIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO3dpZHRoOjEwMCU7bWluLWhlaWdodDo3NTBweFwiIChsb2FkKT1cIm9uTG9hZChzdmdFZGl0b3IpXCI+PC9pZnJhbWU+XG48IS0tIGNob3NlblBsYW4gJiYgLS0+XG48IS0tIC4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL3N2Z2VkaXRvci9pbmRleC5odG1sIC0tPlxuXG48aW1nICNpbWdQbmcgKm5nSWY9XCJjaG9zZW5QbGFuICYmIGNob3NlblBsYW4uZXh0ZW5zaW9uICE9PSAnc3ZnJyAmJiBzdmdFZGl0b3JcIiBbc3JjXT1cImNob3NlblBsYW4uZmlsZXBhdGhcIlxuICAgIChsb2FkKT1cIm9uTG9hZEltZyhpbWdQbmcpXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuXG48Y2FudmFzIGlkPVwiY2FudmFzNHBkZlwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L2NhbnZhcz5cblxuPGxpYi1hZGQtem9uZSAqbmdJZj1cImlzTmV3Wm9uZVwiIFtpbWFnZXMzNjBdPVwiaW1hZ2VzMzYwXCIgW3NwYWNlSURdPVwic3BhY2VJRFwiIFtuYXZpZ2F0aW9uSURzXT1cIm5hdmlnYXRpb25zXCJcbiAgICBbem9uZUVkaXRdPVwiZWRpdGVkWm9uZVwiIFt6b25lc109XCJ6b25lc1wiICh1cGRhdGVkWm9uZSk9XCJvbk5ld1pvbmUoJGV2ZW50KVwiIFtjaG9zZW5QbGFuXT1cImVkaXRlZFBsYW5cIlxuICAgIFtuZXdab25lRGF0YV09XCJuZXdab25lRGF0YVwiPjwvbGliLWFkZC16b25lPlxuXG48bmctdGVtcGxhdGUgI2RpYWxvZyBsZXQtbW9kYWw+XG5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3snU3VibWl0JyB8IHRyYW5zbGF0ZX19PC9oND5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKCdDcm9zcyBjbGljaycpXCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICB7eydzYXZlIHBsYW4gZWRpdGVkJyB8IHRyYW5zbGF0ZX19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrXCIgKGNsaWNrKT1cIm5ld1N2ZygpO21vZGFsLmNsb3NlKCdDbG9zZSBjbGljaycpXCI+e3snWWVzJyB8XG4gICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrXCIgKGNsaWNrKT1cInVwZGF0ZVN2ZygpO21vZGFsLmNsb3NlKCdDbG9zZSBjbGljaycpXCI+e3snTm8nIHxcbiAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGlhbG9nWm9uZSBsZXQtbW9kYWw+XG5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3snU3VibWl0JyB8IHRyYW5zbGF0ZX19PC9oND5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKCdDcm9zcyBjbGljaycpXCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICB7eydTZWxlY3Qgem9uZScgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWUtM1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGFiZWwtZmlsZSByb3VuZGVkLXBpbGxcIiBpZD1cImRyb3Bkb3duQmFzaWMxXCIgbmdiRHJvcGRvd25Ub2dnbGU+e3tlZGl0ZWRab25lID9cbiAgICAgICAgICAgICAgICBlZGl0ZWRab25lLm5hbWU6ICgnTmV3IHpvbmUnIHwgdHJhbnNsYXRlKSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZWRpdGVkWm9uZSA9IG51bGxcIiB0cmFuc2xhdGU9XCJOZXcgem9uZVwiPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtICpuZ0Zvcj1cImxldCB6b25lIG9mIHpvbmVzXCIgKGNsaWNrKT1cImVkaXRlZFpvbmUgPSB6b25lXCI+e3t6b25lLm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhcmtcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImlzTmV3Wm9uZSA9IHRydWU7bW9kYWwuY2xvc2UoJ0Nsb3NlIGNsaWNrJylcIj57eydWYWxpZGF0ZScgfFxuICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFya1wiIChjbGljayk9XCJtb2RhbC5jbG9zZSgnQ2xvc2UgY2xpY2snKVwiPnt7J0NhbmNlbCcgfFxuICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcmVwYXJpbmcgbGV0LW1vZGFsPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57eydQcm9jZXNzaW5nJyB8IHRyYW5zbGF0ZX19PC9oND5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKCdDcm9zcyBjbGljaycpXCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHJvbGU9XCJzdGF0dXNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbjwvbmctdGVtcGxhdGU+Il19
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1wbGFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1sb2NhdGlvbnMvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5zL2VkaXQtcGxhbi9lZGl0LXBsYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvcGxhbnMvZWRpdC1wbGFuL2VkaXQtcGxhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6QyxPQUFPLEVBQXFGLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7OztBQU90TCxNQUFNLE9BQU8saUJBQWlCO0lBOEUxQixZQUNZLFdBQXdCLEVBQ3hCLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxZQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixZQUEwQixFQUMxQixTQUEyQjtRQVAzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUF4RXZDLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFVekIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVczQjs7V0FFRztR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QyxTQUFTLENBQUMsU0FBUyxFQUFFO3dCQUN4QyxLQUFLLEVBQUUsd0JBQXdCO3FCQUNsQztpQkFDSixDQUNKLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUQsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSztRQUNYLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUMxQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUN2QyxHQUFHLENBQ04sQ0FBQztTQUNMO2FBQU07WUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQzFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxFQUMxQixHQUFHLENBQ04sQ0FBQztTQUNMO0lBQ0wsQ0FBQzs7OEdBellRLGlCQUFpQjtrR0FBakIsaUJBQWlCLGlaQ2I5Qix1dkhBdUZjOzJGRDFFRCxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsZUFBZTswUkFNRixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBRU0sVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUVDLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkF3SGhCLFlBQVk7c0JBRGpCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gXCJwZGZqcy1kaXN0XCI7XG5pbXBvcnQgeyBQREZEb2N1bWVudFByb3h5IH0gZnJvbSBcIm5nMi1wZGYtdmlld2VyXCI7XG5pbXBvcnQgeyBab25lLCBQbGFuLCBTcGFjZSwgTWVudUl0ZW0sIFBsYW5TZXJ2aWNlLCBab25lU2VydmljZSwgVmlzaXRTZXJ2aWNlLCBTcGFjZVNlcnZpY2UsIHNvcnRBbHBoYWJldGljYWxseU9uTmFtZSwgZG93bmxvYWRGaWxlQXNPYmplY3QgfSBmcm9tICdAc21hcnRlcnBsYW4vbmd4LXNtYXJ0ZXJwbGFuLWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZWRpdC1wbGFuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtcGxhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VkaXQtcGxhbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRQbGFuQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBWaWV3Q2hpbGQoXCJkaWFsb2dcIikgZGlhbG9nITogYW55O1xuXG4gICAgQFZpZXdDaGlsZChcImRpYWxvZ1pvbmVcIikgZGlhbG9nWm9uZSE6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoXCJwcmVwYXJpbmdcIikgbG9hZGluZ01vZGFsOiBhbnk7XG5cbiAgICBzcGFjZUlEOiBzdHJpbmc7XG5cbiAgICBjaG9zZW5QbGFuOiBQbGFuO1xuXG4gICAgZWRpdGVkUGxhbjogUGxhbjtcblxuICAgIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHN2Z0VkaXRvcjtcblxuICAgIHN2Z0VkaXRvcklmcmFtZTtcblxuICAgIG5hdmlnYXRpb25zOiBzdHJpbmdbXTtcblxuICAgIHpvbmVzOiBab25lW107XG5cbiAgICBpc05ld1pvbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG5ld1pvbmVEYXRhO1xuXG4gICAgZWRpdG9yVXJsO1xuXG4gICAgZWRpdGVkWm9uZTogWm9uZTtcblxuICAgIGltYWdlczM2MDtcblxuXG4gICAgLyoqXG4gICAgICogT3B0aW9ucyBmb3Igc3ZnRWRpdG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb25maWc6IGFueSA9IHtcbiAgICAgICAgbm9TdG9yYWdlT25Mb2FkOiB0cnVlLFxuICAgICAgICBmb3JjZVN0b3JhZ2U6IHRydWUsXG4gICAgICAgIC8vIGltZ1BhdGg6IFwiL2Fzc2V0cy9lZGl0b3IvaW1hZ2VzL1wiLFxuICAgICAgICAvLyBleHRQYXRoOiBcIi9hc3NldHMvZWRpdG9yL2V4dGVuc2lvbnMvXCIsXG4gICAgICAgIC8vIGxhbmdQYXRoOiBcIi9hc3NldHMvZWRpdG9yL2xvY2FsZS9cIixcbiAgICAgICAgLy8gY2FudmdQYXRoOiBcIi9hc3NldHMvZWRpdG9yL2NhbnZnL1wiLFxuICAgICAgICAvLyBqc3BkZlBhdGg6IFwiL2Fzc2V0cy9lZGl0b3IvanNwZGYvXCIsXG4gICAgICAgIC8vIGpHcmFkdWF0ZVBhdGg6IFwiL2Fzc2V0cy9lZGl0b3IvamdyYWR1YXRlL2ltYWdlcy9cIixcbiAgICAgICAgLy8gZXh0SWNvbnNQYXRoOiBcIi9hc3NldHMvZWRpdG9yL2V4dGVuc2lvbnMvXCIsXG4gICAgICAgIC8vIHN0eWxlc2hlZXRzOiBbXG4gICAgICAgIC8vICAgICBcIi9hc3NldHMvZWRpdG9yL2pncmFkdWF0ZS9jc3MvakdyYWR1YXRlLmNzc1wiLFxuICAgICAgICAvLyAgICAgXCIvYXNzZXRzL2VkaXRvci9zcGluYnRuL2pRdWVyeS5TcGluQnV0dG9uLmNzc1wiLFxuICAgICAgICAvLyAgICAgXCIvYXNzZXRzL2VkaXRvci9qZ3JhZHVhdGUvY3NzL2pQaWNrZXIuY3NzXCIsXG4gICAgICAgIC8vICAgICBcIi9hc3NldHMvZWRpdG9yL3N2Zy1lZGl0b3IuY3NzXCIsXG4gICAgICAgIC8vIF0sXG4gICAgICAgIGRpbWVuc2lvbnM6IFsxMDAwMCwgMTAwMDBdLFxuICAgICAgICBzaG93bGF5ZXJzOiB0cnVlLFxuICAgICAgICBub0RlZmF1bHRFeHRlbnNpb25zOiB0cnVlLFxuICAgICAgICBiYXNlUGF0aDogXCIvYXNzZXRzL2VkaXRvci9cIixcbiAgICAgICAgY3VzdG9tRXhwb3J0SW1hZ2U6IHRydWUsXG4gICAgICAgIGV4dGVuc2lvbnM6IFtcbiAgICAgICAgICAgIFwiZXh0LWNvbm5lY3RvclwiLFxuICAgICAgICAgICAgLy8gXCJleHQtZXllZHJvcHBlclwiLFxuICAgICAgICAgICAgLy8gXCJleHQtZ3JpZFwiLFxuICAgICAgICAgICAgLy8gXCJleHQtbWFya2Vyc1wiLFxuICAgICAgICAgICAgLy8gXCJleHQtb3ZlcnZpZXdfd2luZG93XCIsXG4gICAgICAgICAgICAvLyBcImV4dC1zcGktbGlicmFyeVwiLFxuICAgICAgICAgICAgLy8gXCJleHQtc3BpLWljb25cIixcbiAgICAgICAgICAgIFwiZXh0LXNwLXpvbmVcIixcbiAgICAgICAgICAgIC8vIFwiZXh0LWFycm93c1wiLFxuICAgICAgICAgICAgLy8gXCJleHQtc3AtY3NzXCIsXG4gICAgICAgICAgICAvLyBcImV4dC1wbGFjZW1hcmtcIixcbiAgICAgICAgXSxcbiAgICB9O1xuXG4gICAgY3VycmVudFNwYWNlOiBTcGFjZTtcblxuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxuICAgICAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2aXNpdFNlcnZpY2U6IFZpc2l0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzcGFjZVNlcnZpY2U6IFNwYWNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY2hvc2VuUGxhbiA9IHRoaXMucGxhblNlcnZpY2UuZ2V0Q2hvc2VuUGxhbigpO1xuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmVkaXRvclVybCA9IFwiL2Fzc2V0cy9lZGl0b3IvbWFpbi5odG1sXCI7XG4gICAgICAgIHRoaXMuc3BhY2VJRCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuc3BhY2VJRDtcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2UgPSBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS5nZXRTcGFjZSh0aGlzLnNwYWNlSUQpO1xuICAgICAgICB0aGlzLnNldHVwTWVudUl0ZW1zKCk7XG4gICAgICAgIGlmICh0aGlzLnNwYWNlSUQgJiYgIXRoaXMucGxhblNlcnZpY2UuZ2V0Q2hvc2VuUGxhbigpKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAgICAgICAgICAgXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLFxuICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VJRCxcbiAgICAgICAgICAgICAgICBcInBsYW5zXCIsXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5zcGFjZUlEICYmICF0aGlzLnBsYW5TZXJ2aWNlLmdldENob3NlblBsYW4oKSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2Rhc2hib2FyZC9sb2NhbGlzYXRpb25cIl0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0dXBNZW51SXRlbXMoKSB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zID0gW1xuICAgICAgICAgICAgeyBsYWJlbDogXCJMb2NhdGlvbnNcIiwgdXJsOiBcIi9sb2NhbGlzYXRpb25cIiB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmN1cnJlbnRTcGFjZS5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLnNwYWNlSUR9YCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiUGxhbnNcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAvbG9jYWxpc2F0aW9uLyR7dGhpcy5jdXJyZW50U3BhY2UuaWR9L3BsYW5zYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiRWRpdFwiLFxuICAgICAgICAgICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLmN1cnJlbnRTcGFjZS5pZH0vcGxhbi1lZGl0P3NwYWNlSUQ9JHt0aGlzLmN1cnJlbnRTcGFjZS5pZH1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93Om1lc3NhZ2VcIiwgW1wiJGV2ZW50XCJdKVxuICAgIGFzeW5jIHN3aXRjaEFjdGlvbihldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmRhdGEubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzYXZlXCI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25TYXZlKGV2ZW50LmRhdGEucmVkaXJlY3QpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiY2xvc2VcIjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNhbmNlbCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwibmV3LXpvbmVcIjpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN2ZyA9IHVuZXNjYXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3ZnRWRpdG9yLnN2Z0NhbnZhcy5nZXRTdmdTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gYGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsJHt3aW5kb3cuYnRvYShcbiAgICAgICAgICAgICAgICAgICAgICAgIHN2ZyxcbiAgICAgICAgICAgICAgICAgICAgKX1gO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3BhY2UgPSBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS5nZXRTcGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VJRCxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmltYWdlczM2MCA9IGF3YWl0IHRoaXMudmlzaXRTZXJ2aWNlLmxvYWRJbWFnZXNGb3JTcGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRlZFBsYW4gPSB7IC4uLnRoaXMuY2hvc2VuUGxhbiB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRlZFBsYW4uZmlsZXBhdGggPSBiYXNlNjQ7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdab25lRGF0YSA9IGV2ZW50LmRhdGEuem9uZURhdGE7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5ld1pvbmVEYXRhLmVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxSZWZlcmVuY2UuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJlZGl0aW9uLm5vLXpvbmVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lcyA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnpvbmVzID0gc29ydEFscGhhYmV0aWNhbGx5T25OYW1lKHRoaXMuem9uZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRlZFpvbmUgPSB0aGlzLnpvbmVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeikgPT4gei5uYW1lID09PSB0aGlzLm5ld1pvbmVEYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXROYXZpZ2F0aW9ucygpO1xuICAgICAgICAgICAgICAgICAgICBtb2RhbFJlZmVyZW5jZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuZGlhbG9nWm9uZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHJlc2V0TmF2aWdhdGlvbnMoKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbnMgPSBbXTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFpvbmUgPSB0aGlzLnpvbmVzLmZpbmQoKHpvbmUpID0+ICF6b25lLnBhcmVudElEKTtcbiAgICAgICAgaWYgKGRlZmF1bHRab25lLnN3ZWVwSURzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbnMgPSBkZWZhdWx0Wm9uZS5zd2VlcElEcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIG9uTG9hZChzdmdFZGl0b3IpIHtcbiAgICAgICAgaWYgKHN2Z0VkaXRvci5jb250ZW50V2luZG93LlN2Z0VkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5zdmdFZGl0b3JJZnJhbWUgPSBzdmdFZGl0b3I7XG4gICAgICAgICAgICB0aGlzLnN2Z0VkaXRvciA9IG5ldyBzdmdFZGl0b3IuY29udGVudFdpbmRvdy5TdmdFZGl0b3IoKTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdmdFZGl0b3IuaW5pdCgpO1xuICAgICAgICAgICAgLy8gYXdhaXQgdGhpcy5zdmdFZGl0b3IucHJlZihrZXksIHZhbCk7XG4gICAgICAgICAgICAvLyBhd2FpdCB0aGlzLnN2Z0VkaXRvci5zZXRDb25maWcoeyBleHRlbnRpb25zOiB0aGlzLmV4dGVuc2lvbnMgfSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN2Z0VkaXRvci5zZXRDb25maWcodGhpcy5jb25maWcsIHtcbiAgICAgICAgICAgICAgICBhbGxvd0luaXRpYWxVc2VyT3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY2hvc2VuUGxhbiAmJiB0aGlzLmNob3NlblBsYW4uZXh0ZW5zaW9uID09PSBcInN2Z1wiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkU3ZnKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5jaG9zZW5QbGFuICYmIHRoaXMuY2hvc2VuUGxhbi5leHRlbnNpb24gPT09IFwicGRmXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRQZGYoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5jaG9zZW5QbGFuLmNhbGlicmF0aW9uIHx8ICF0aGlzLmNob3NlblBsYW4uaXNNb2RpZmllZCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN2Z0VkaXRvcklmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBhY3Rpb246IFwiZGlzYWJsZS16b25lXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiKlwiLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25TYXZlKHJlZGlyZWN0OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGltZ0Jsb2IgPSBhd2FpdCBuZXcgQmxvYihcbiAgICAgICAgICAgIFt0aGlzLnN2Z0VkaXRvci5zdmdDYW52YXMuZ2V0U3ZnU3RyaW5nKCldLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiaW1hZ2Uvc3ZnK3htbFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBbbmFtZV0gPSB0aGlzLmNob3NlblBsYW4ubmFtZS5zcGxpdChcIi5cIik7XG5cbiAgICAgICAgY29uc3QgaW1nRmlsZTogRmlsZSA9IG5ldyBGaWxlKFtpbWdCbG9iXSwgYCR7bmFtZX0tZWRpdGVkLnN2Z2AsIHtcbiAgICAgICAgICAgIHR5cGU6IFwiaW1hZ2Uvc3ZnK3htbFwiLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBEYXRlLm5vdygpLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wbGFuU2VydmljZS5zZXRQbGFuRmlsZUNhY2hlKGltZ0ZpbGUpO1xuICAgICAgICBpZiAodGhpcy5jaG9zZW5QbGFuLmlzTW9kaWZpZWQpIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5kaWFsb2cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xuICAgICAgICAgICAgICAgIFwiL2Rhc2hib2FyZC9sb2NhbGlzYXRpb25cIixcbiAgICAgICAgICAgICAgICB0aGlzLnNwYWNlSUQsXG4gICAgICAgICAgICAgICAgXCJwbGFuc1wiLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyB1cGRhdGVTdmcoKSB7XG4gICAgICAgIGNvbnN0IG5ld1VybCA9IGF3YWl0IHRoaXMucGxhblNlcnZpY2UudXBkYXRlUGxhbkZpbGUoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5wbGFuU2VydmljZS51cGRhdGVQbGFuKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmNob3NlblBsYW4uaWQsXG4gICAgICAgICAgICBhbm5leGU6IG5ld1VybCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucGxhblNlcnZpY2Uuc2V0UGxhbkZpbGVDYWNoZShudWxsKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xuICAgICAgICAgICAgXCIvZGFzaGJvYXJkL2xvY2FsaXNhdGlvblwiLFxuICAgICAgICAgICAgdGhpcy5zcGFjZUlELFxuICAgICAgICAgICAgXCJwbGFuc1wiLFxuICAgICAgICBdKTtcbiAgICB9XG5cbiAgICBhc3luYyBuZXdTdmcoKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgIFwiL2Rhc2hib2FyZC9sb2NhbGlzYXRpb25cIixcbiAgICAgICAgICAgIHRoaXMuc3BhY2VJRCxcbiAgICAgICAgICAgIFwicGxhbnNcIixcbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25DYW5jZWwoKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgIFwiL2Rhc2hib2FyZC9sb2NhbGlzYXRpb25cIixcbiAgICAgICAgICAgIHRoaXMuc3BhY2VJRCxcbiAgICAgICAgICAgIFwicGxhbnNcIixcbiAgICAgICAgXSk7XG4gICAgICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJlZGl0aW9uLmNhbmNlbFwiKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgbG9hZFN2ZygpIHtcbiAgICAgICAgY29uc3Qgc3ZnUmVxdWVzdDogYW55ID0gYXdhaXQgZG93bmxvYWRGaWxlQXNPYmplY3QoXG4gICAgICAgICAgICB0aGlzLmNob3NlblBsYW4uYW5uZXhlLFxuICAgICAgICApO1xuICAgICAgICBpZiAoc3ZnUmVxdWVzdCkge1xuICAgICAgICAgICAgY29uc3Qgc3ZnQmxvYiA9IGF3YWl0IHN2Z1JlcXVlc3QuQm9keTtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3ZnRWRpdG9yLmxvYWRGcm9tRGF0YVVSSShyZWFkZXIucmVzdWx0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChzdmdCbG9iKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGxvYWRQZGYoKSB7XG4gICAgICAgIHRoaXMuc3ZnRWRpdG9ySWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICB7IGFjdGlvbjogXCJkaXNhYmxlLXpvbmVcIiB9LFxuICAgICAgICAgICAgXCIqXCIsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICBcIiNjYW52YXM0cGRmXCIsXG4gICAgICAgICkgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcblxuICAgICAgICBjb25zdCBwZGZqcyA9IGF3YWl0IGltcG9ydChcInBkZmpzLWRpc3QvYnVpbGQvcGRmXCIpO1xuICAgICAgICBjb25zdCBwZGZqc1dvcmtlciA9IGF3YWl0IGltcG9ydChcInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlci5lbnRyeVwiKTtcblxuICAgICAgICBwZGZqcy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyA9IHBkZmpzV29ya2VyO1xuXG4gICAgICAgIGNvbnN0IHBkZjogUERGRG9jdW1lbnRQcm94eSA9IGF3YWl0IGdldERvY3VtZW50KFxuICAgICAgICAgICAgdGhpcy5jaG9zZW5QbGFuLmZpbGVwYXRoLFxuICAgICAgICApLnByb21pc2U7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBwZGYuZ2V0UGFnZSgxKTtcblxuICAgICAgICBjb25zdCB2aWV3UG9ydFBhcmFtZXRlcnMgPSB7IHNjYWxlOiAxLjUgfTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBwYWdlLmdldFZpZXdwb3J0KHZpZXdQb3J0UGFyYW1ldGVycyk7XG4gICAgICAgIHRoaXMuc3ZnRWRpdG9yLnN2Z0NhbnZhcy5zZXRSZXNvbHV0aW9uKHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQpO1xuXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSB2aWV3cG9ydC5oZWlnaHQ7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHZpZXdwb3J0LndpZHRoO1xuICAgICAgICBjb25zdCByZW5kZXJDb250ZXh0ID0ge1xuICAgICAgICAgICAgY2FudmFzQ29udGV4dDogY29udGV4dCxcbiAgICAgICAgICAgIHZpZXdwb3J0LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZW5kZXJUYXNrID0gcGFnZS5yZW5kZXIocmVuZGVyQ29udGV4dCkucHJvbWlzZTtcbiAgICAgICAgcmVuZGVyVGFzay50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ltYWdlID0gdGhpcy5zdmdFZGl0b3Iuc3ZnQ2FudmFzLmFkZFNWR0VsZW1lbnRGcm9tSnNvbih7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogXCJpbWFnZVwiLFxuICAgICAgICAgICAgICAgIGF0dHI6IHtcbiAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHZpZXdwb3J0LndpZHRoLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHZpZXdwb3J0LmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuc3ZnRWRpdG9yLnN2Z0NhbnZhcy5nZXROZXh0SWQoKSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IFwicG9pbnRlci1ldmVudHM6aW5oZXJpdFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3ZnRWRpdG9yLnN2Z0NhbnZhcy5zZXRIcmVmKFxuICAgICAgICAgICAgICAgIG5ld0ltYWdlLFxuICAgICAgICAgICAgICAgIGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIiksXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkxvYWRJbWcoaW1nOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zdmdFZGl0b3JJZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgIHsgYWN0aW9uOiBcImRpc2FibGUtem9uZVwiIH0sXG4gICAgICAgICAgICBcIipcIixcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaW1nUmVxdWVzdDogYW55ID0gYXdhaXQgZG93bmxvYWRGaWxlQXNPYmplY3QoXG4gICAgICAgICAgICB0aGlzLmNob3NlblBsYW4uYW5uZXhlLFxuICAgICAgICApO1xuICAgICAgICBpZiAoaW1nUmVxdWVzdCkge1xuICAgICAgICAgICAgY29uc3QgaW1nQmxvYiA9IGF3YWl0IGltZ1JlcXVlc3QuQm9keTtcbiAgICAgICAgICAgIGNvbnN0IGltZ1dpZHRoID0gaW1nLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGltZ0hlaWdodCA9IGltZy5uYXR1cmFsSGVpZ2h0O1xuICAgICAgICAgICAgLy8gYXdhaXQgdGhpcy5zdmdFZGl0b3Iuc2V0Q29uZmlnKHtcbiAgICAgICAgICAgIC8vICAgICBkaW1lbnNpb25zOiBbaW1nV2lkdGgsIGltZ0hlaWdodF0sXG4gICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgIHRoaXMuc3ZnRWRpdG9yLnN2Z0NhbnZhcy5zZXRSZXNvbHV0aW9uKGltZ1dpZHRoLCBpbWdIZWlnaHQpO1xuXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdJbWFnZSA9IHRoaXMuc3ZnRWRpdG9yLnN2Z0NhbnZhcy5hZGRTVkdFbGVtZW50RnJvbUpzb24oXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IFwiaW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGltZ1dpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaW1nSGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLnN2Z0VkaXRvci5zdmdDYW52YXMuZ2V0TmV4dElkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IFwicG9pbnRlci1ldmVudHM6aW5oZXJpdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuc3ZnRWRpdG9yLnN2Z0NhbnZhcy5zZXRIcmVmKG5ld0ltYWdlLCByZWFkZXIucmVzdWx0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpbWdCbG9iKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTmV3Wm9uZShldmVudCkge1xuICAgICAgICB0aGlzLmlzTmV3Wm9uZSA9IGZhbHNlO1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc3ZnRWRpdG9ySWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgeyBhY3Rpb246IFwicmVuYW1lLWxheWVyXCIsIG5hbWU6IGV2ZW50IH0sXG4gICAgICAgICAgICAgICAgXCIqXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdmdFZGl0b3JJZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICAgICB7IGFjdGlvbjogXCJjYW5jZWwtbGF5ZXJcIiB9LFxuICAgICAgICAgICAgICAgIFwiKlwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0zXCI+XG4gICAgICAgICAgICA8bGliLXRhYi1uYXZpZ2F0aW9uIFttZW51SXRlbXNdPSdtZW51SXRlbXMnPjwvbGliLXRhYi1uYXZpZ2F0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGlmcmFtZSAqbmdJZj1cImVkaXRvclVybFwiICNzdmdFZGl0b3IgW3NyY109XCJlZGl0b3JVcmwgfCBzYWZlVXJsXCIgZnJhbWVib3JkZXI9XCIwXCJcbiAgICBzdHlsZT1cImhlaWdodDogMTAwJTt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6NzUwcHhcIiAobG9hZCk9XCJvbkxvYWQoc3ZnRWRpdG9yKVwiPjwvaWZyYW1lPlxuPCEtLSBjaG9zZW5QbGFuICYmIC0tPlxuPCEtLSAuLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9zdmdlZGl0b3IvaW5kZXguaHRtbCAtLT5cblxuPGltZyAjaW1nUG5nICpuZ0lmPVwiY2hvc2VuUGxhbiAmJiBjaG9zZW5QbGFuLmV4dGVuc2lvbiAhPT0gJ3N2ZycgJiYgc3ZnRWRpdG9yXCIgW3NyY109XCJjaG9zZW5QbGFuLmZpbGVwYXRoXCJcbiAgICAobG9hZCk9XCJvbkxvYWRJbWcoaW1nUG5nKVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cblxuPGNhbnZhcyBpZD1cImNhbnZhczRwZGZcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC9jYW52YXM+XG5cbjxsaWItYWRkLXpvbmUgKm5nSWY9XCJpc05ld1pvbmVcIiBbaW1hZ2VzMzYwXT1cImltYWdlczM2MFwiIFtzcGFjZUlEXT1cInNwYWNlSURcIiBbbmF2aWdhdGlvbklEc109XCJuYXZpZ2F0aW9uc1wiXG4gICAgW3pvbmVFZGl0XT1cImVkaXRlZFpvbmVcIiBbem9uZXNdPVwiem9uZXNcIiAodXBkYXRlZFpvbmUpPVwib25OZXdab25lKCRldmVudClcIiBbY2hvc2VuUGxhbl09XCJlZGl0ZWRQbGFuXCJcbiAgICBbbmV3Wm9uZURhdGFdPVwibmV3Wm9uZURhdGFcIj48L2xpYi1hZGQtem9uZT5cblxuPG5nLXRlbXBsYXRlICNkaWFsb2cgbGV0LW1vZGFsPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPnt7J1N1Ym1pdCcgfCB0cmFuc2xhdGV9fTwvaDQ+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygnQ3Jvc3MgY2xpY2snKVwiPlxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAge3snc2F2ZSBwbGFuIGVkaXRlZCcgfCB0cmFuc2xhdGV9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFya1wiIChjbGljayk9XCJuZXdTdmcoKTttb2RhbC5jbG9zZSgnQ2xvc2UgY2xpY2snKVwiPnt7J1llcycgfFxuICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFya1wiIChjbGljayk9XCJ1cGRhdGVTdmcoKTttb2RhbC5jbG9zZSgnQ2xvc2UgY2xpY2snKVwiPnt7J05vJyB8XG4gICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RpYWxvZ1pvbmUgbGV0LW1vZGFsPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPnt7J1N1Ym1pdCcgfCB0cmFuc2xhdGV9fTwvaDQ+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygnQ3Jvc3MgY2xpY2snKVwiPlxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAge3snU2VsZWN0IHpvbmUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1lLTNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxhYmVsLWZpbGUgcm91bmRlZC1waWxsXCIgaWQ9XCJkcm9wZG93bkJhc2ljMVwiIG5nYkRyb3Bkb3duVG9nZ2xlPnt7ZWRpdGVkWm9uZSA/XG4gICAgICAgICAgICAgICAgZWRpdGVkWm9uZS5uYW1lOiAoJ05ldyB6b25lJyB8IHRyYW5zbGF0ZSkgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duQmFzaWMxXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImVkaXRlZFpvbmUgPSBudWxsXCIgdHJhbnNsYXRlPVwiTmV3IHpvbmVcIj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAqbmdGb3I9XCJsZXQgem9uZSBvZiB6b25lc1wiIChjbGljayk9XCJlZGl0ZWRab25lID0gem9uZVwiPnt7em9uZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpc05ld1pvbmUgPSB0cnVlO21vZGFsLmNsb3NlKCdDbG9zZSBjbGljaycpXCI+e3snVmFsaWRhdGUnIHxcbiAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhcmtcIiAoY2xpY2spPVwibW9kYWwuY2xvc2UoJ0Nsb3NlIGNsaWNrJylcIj57eydDYW5jZWwnIHxcbiAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcHJlcGFyaW5nIGxldC1tb2RhbD5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3snUHJvY2Vzc2luZycgfCB0cmFuc2xhdGV9fTwvaDQ+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygnQ3Jvc3MgY2xpY2snKVwiPlxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXJcIiByb2xlPVwic3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPiJdfQ==