@fundamental-ngx/core 0.36.0-rc.1 → 0.36.0-rc.2

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 (103) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/content-density/package.json +3 -3
  16. package/date-picker/package.json +1 -1
  17. package/datetime/package.json +1 -1
  18. package/datetime-picker/package.json +1 -1
  19. package/dialog/package.json +1 -1
  20. package/dynamic-page/package.json +1 -1
  21. package/dynamic-side-content/package.json +1 -1
  22. package/esm2020/wizard/wizard.component.mjs +4 -2
  23. package/facets/package.json +1 -1
  24. package/feed-input/package.json +1 -1
  25. package/feed-list-item/package.json +1 -1
  26. package/fesm2015/fundamental-ngx-core-wizard.mjs +3 -1
  27. package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
  28. package/fesm2020/fundamental-ngx-core-wizard.mjs +3 -1
  29. package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
  30. package/file-uploader/package.json +1 -1
  31. package/fixed-card-layout/package.json +1 -1
  32. package/flexible-column-layout/package.json +1 -1
  33. package/form/package.json +1 -1
  34. package/formatted-text/package.json +1 -1
  35. package/grid-list/package.json +1 -1
  36. package/icon/package.json +1 -1
  37. package/illustrated-message/package.json +1 -1
  38. package/infinite-scroll/package.json +1 -1
  39. package/info-label/package.json +1 -1
  40. package/inline-help/package.json +1 -1
  41. package/input-group/package.json +1 -1
  42. package/layout-grid/package.json +1 -1
  43. package/layout-panel/package.json +1 -1
  44. package/link/package.json +1 -1
  45. package/list/package.json +1 -1
  46. package/menu/package.json +1 -1
  47. package/message-box/package.json +1 -1
  48. package/message-strip/package.json +1 -1
  49. package/message-toast/package.json +1 -1
  50. package/micro-process-flow/package.json +1 -1
  51. package/mobile-mode/package.json +1 -1
  52. package/multi-input/package.json +1 -1
  53. package/nested-list/package.json +1 -1
  54. package/notification/package.json +1 -1
  55. package/object-identifier/package.json +1 -1
  56. package/object-marker/package.json +1 -1
  57. package/object-number/package.json +1 -1
  58. package/object-status/package.json +1 -1
  59. package/overflow-layout/package.json +13 -13
  60. package/package.json +1 -1
  61. package/pagination/package.json +1 -1
  62. package/panel/package.json +1 -1
  63. package/popover/package.json +1 -1
  64. package/product-switch/package.json +1 -1
  65. package/progress-indicator/package.json +1 -1
  66. package/quick-view/package.json +1 -1
  67. package/radio/package.json +1 -1
  68. package/rating-indicator/package.json +1 -1
  69. package/resizable-card-layout/package.json +1 -1
  70. package/scroll-spy/package.json +1 -1
  71. package/scrollbar/package.json +1 -1
  72. package/segmented-button/package.json +1 -1
  73. package/select/package.json +1 -1
  74. package/shared/package.json +1 -1
  75. package/shellbar/package.json +1 -1
  76. package/side-navigation/package.json +1 -1
  77. package/slider/package.json +1 -1
  78. package/split-button/package.json +1 -1
  79. package/splitter/package.json +1 -1
  80. package/status-indicator/package.json +1 -1
  81. package/step-input/package.json +1 -1
  82. package/switch/package.json +1 -1
  83. package/table/package.json +1 -1
  84. package/tabs/package.json +1 -1
  85. package/text/package.json +1 -1
  86. package/theming/package.json +1 -1
  87. package/tile/package.json +1 -1
  88. package/time/package.json +1 -1
  89. package/time-picker/package.json +1 -1
  90. package/timeline/package.json +1 -1
  91. package/title/package.json +1 -1
  92. package/token/package.json +1 -1
  93. package/toolbar/package.json +1 -1
  94. package/tree/package.json +1 -1
  95. package/upload-collection/package.json +1 -1
  96. package/utils/package.json +1 -1
  97. package/vertical-navigation/package.json +1 -1
  98. package/wizard/esm2020/wizard.component.mjs +4 -2
  99. package/wizard/fesm2015/fundamental-ngx-core-wizard.mjs +3 -1
  100. package/wizard/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
  101. package/wizard/fesm2020/fundamental-ngx-core-wizard.mjs +3 -1
  102. package/wizard/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
  103. package/wizard/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-bar",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-sheet",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/alert",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar-group",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/bar/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/bar",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/breadcrumb",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/busy-indicator",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/button",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/calendar",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/card/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/card",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/carousel",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/checkbox",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/combobox",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/content-density",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0",
7
7
  "rxjs": "7.5.6",
8
8
  "@angular/cdk": "~13.2.4",
9
- "@fundamental-ngx/core/utils": "0.36.0-rc.1",
10
- "@fundamental-ngx/core/shared": "0.36.0-rc.1",
9
+ "@fundamental-ngx/core/utils": "0.36.0-rc.2",
10
+ "@fundamental-ngx/core/shared": "0.36.0-rc.2",
11
11
  "core-js": "3.21.1",
12
12
  "zone.js": "0.11.4",
13
13
  "@angular/platform-browser-dynamic": "~13.2.4",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/date-picker",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime-picker",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dialog",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dynamic-page",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dynamic-side-content",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -351,7 +351,9 @@ export class WizardComponent {
351
351
  /** @hidden */
352
352
  _handleStepOrStatusChanges() {
353
353
  if (this._isCurrentStepSummary() && !this.displaySummaryStep) {
354
- this.progressBar.visible = false;
354
+ setTimeout(() => {
355
+ this.progressBar.visible = false;
356
+ });
355
357
  this._showSummary();
356
358
  }
357
359
  else {
@@ -522,4 +524,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
522
524
  type: HostListener,
523
525
  args: ['window:resize']
524
526
  }] } });
525
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFFVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQUVsRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLDhCQUE4QixDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLDBC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QkFzQkE7MkZEK0NhLGVBQWU7a0JBakIzQixTQUFTOytCQUNJLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsTUFBTTs0QkFDZixXQUFXLGlCQUFpQjt5QkFDL0I7cUJBQ0osUUFDSzt3QkFDRixJQUFJLEVBQUUsUUFBUTt3QkFDZCxtQkFBbUIsRUFBRSxXQUFXO3FCQUNuQzs7MEJBb0VJLFFBQVE7NENBNURiLGNBQWM7c0JBRGIsS0FBSztnQkFRTixhQUFhO3NCQURaLEtBQUs7Z0JBUU4sa0JBQWtCO3NCQUZqQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHNDQUFzQztnQkFJbkQsa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixLQUFLO3NCQURKLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUszRCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUt4QyxhQUFhO3NCQURaLGVBQWU7dUJBQUMsc0JBQXNCO2dCQUt2QyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBNkI3QixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGlhbG9nQm9keUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgc2Nyb2xsVG9wIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBXaXphcmRTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtc3RlcC93aXphcmQtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmUgfSBmcm9tICcuL3dpemFyZC1wcm9ncmVzcy1iYXIvd2l6YXJkLXByb2dyZXNzLWJhci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2l6YXJkQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vd2l6YXJkLWNvbnRlbnQvd2l6YXJkLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEFDVElWRV9TVEVQX1NUQVRVUywgQ1VSUkVOVF9TVEVQX1NUQVRVUywgVVBDT01JTkdfU1RFUF9TVEFUVVMsIENPTVBMRVRFRF9TVEVQX1NUQVRVUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdJWkFSRCB9IGZyb20gJy4vd2l6YXJkLWluamVjdGlvbi10b2tlbic7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gYXBwZW5kIHRoZSBzdGVwIHRvIHRoZSB3aXphcmQuIElmIGZhbHNlLCBlYWNoIHN0ZXAgd2lsbCBiZSBkaXNwbGF5ZWQgb24gYSBkaWZmZXJlbnQgcGFnZS5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUb1dpemFyZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gaGVpZ2h0IHRvIHVzZSBmb3IgdGhlIHdpemFyZCdzIGNvbnRlbnQgcGFuZS4gQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZSBpcyBjYWxjKDEwMHZoIC0gMTQ0cHgpLCB3aGVyZSAxNDRweFxuICAgICAqIGlzIHRoZSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHNoZWxsYmFyLCB3aXphcmQgaGVhZGVyIGFuZCB3aXphcmQgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudEhlaWdodDogTnVsbGFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhcHBseSByZXNwb25zaXZlIHBhZGRpbmdzIHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXdpemFyZC0tcmVzcG9uc2l2ZS1wYWRkaW5ncycpXG4gICAgcmVzcG9uc2l2ZVBhZGRpbmdzID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqIGFkZGluZyBhcmlhIGxhYmVsIHRvIHRoZSBjb21wb25lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbCA9ICdXaXphcmQnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZFN0ZXBDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBzdGVwczogUXVlcnlMaXN0PFdpemFyZFN0ZXBDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlKVxuICAgIHByb2dyZXNzQmFyOiBXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRDb250ZW50Q29tcG9uZW50KVxuICAgIHdpemFyZENvbnRlbnQ6IFdpemFyZENvbnRlbnRDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3dyYXBwZXJDb250YWluZXInKVxuICAgIHdyYXBwZXJDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb250ZW50VGVtcGxhdGVzOiBUZW1wbGF0ZVJlZjxhbnk+W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhY2tlZFN0ZXBzTGVmdDogV2l6YXJkU3RlcENvbXBvbmVudFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YWNrZWRTdGVwc1JpZ2h0OiBXaXphcmRTdGVwQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcEV2ZW50U3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwTGlzdENoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNXaWR0aDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpYWxvZ0JvZHlDb21wb25lbnQ6IERpYWxvZ0JvZHlDb21wb25lbnRcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIHJlc2l6ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpemFyZFdpZHRoID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLl9wcmV2aW91c1dpZHRoIHx8IHdpemFyZFdpZHRoIDw9IHRoaXMuX3ByZXZpb3VzV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHdpemFyZFdpZHRoID4gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcmV2aW91c1dpZHRoID0gd2l6YXJkV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyQW5kVGFsbENvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8vIGZpeGVzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBMaXN0Q2hhbmdlc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBTdGVwRXZlbnRzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGFuZGxlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N0ZXBMaXN0Q2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwcml2YXRlXG4gICAgICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpemFyZCBjb250ZW50IGJ5IGxvb2tpbmcgZm9yIHRoZSBkb2N1bWVudCdzIHNoZWxsYmFyLCB0aGUgd2l6YXJkXG4gICAgICogbmF2aWdhdGlvbiBhbmQgdGhlIHdpemFyZCBmb290ZXIsIGFuZCBjYWxjdWxhdGluZyB0aGUgaGVpZ2h0IGJhc2VkIG9uIHRoZWlyIHByZXNlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpemFyZE5hdkhlaWdodCA9IDA7XG4gICAgICAgIGNvbnN0IHNoZWxsYmFySGVpZ2h0ID0gdGhpcy5fZ2V0U2hlbGxiYXJIZWlnaHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpIHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICB3aXphcmROYXZIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmROYXZIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aXphcmRGb290ZXJIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nT2Zmc2V0ID0gdGhpcy5fZ2V0RGlhbG9nT2Zmc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHNoZWxsYmFySGVpZ2h0ICsgd2l6YXJkTmF2SGVpZ2h0ICsgd2l6YXJkRm9vdGVySGVpZ2h0ICsgZGlhbG9nT2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2hlbGxiYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuJyArIFNIRUxMQkFSX0NMQVNTKT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmROYXZIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZEZvb3RlckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RGlhbG9nT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICBpZiAodGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keSA9IHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoZGlhbG9nQm9keS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdmZC1kaWFsb2ctYm9keScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50LmRpYWxvZ0NvbmZpZy52ZXJ0aWNhbFBhZGRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dCb2R5VGl0bGUgPSBkaWFsb2dCb2R5LnF1ZXJ5U2VsZWN0b3IoJy5mZC10aXRsZS0taDInKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlhbG9nQm9keVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IGRpYWxvZ0JvZHlUaXRsZS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArIHdpbmRvdy5pbm5lckhlaWdodCAtIGRpYWxvZ0JvZHkub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRhaW5lckFuZFRhbGxDb250ZW50SGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb21iaW5lZEhlaWdodCA9IHRoaXMuY29udGVudEhlaWdodCA/IHRoaXMuY29udGVudEhlaWdodCA6IHRoaXMuX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICB9XG4gICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIFdJWkFSRF9DT05URU5UX0NMQVNTKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLm9mZnNldEhlaWdodCA8XG4gICAgICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICdjYWxjKDEwMHZoIC0gJyArIGNvbWJpbmVkSGVpZ2h0ICsgJ3B4KSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLnBhZGRpbmdCb3R0b20gPSAnMjRweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwU3RlcEV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHN0ZXAuc3RlcENsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3JJdGVtQ2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0ZXBDbGlja2VkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIG5lZWQgdG8gY2FsbCB3aXphcmRTaHJpbmtpbmcgZm9yIGVhY2ggc3RlcCA8IDE2OHB4IG9uIGZpcnN0IGxvYWRcbiAgICAgICAgICAgIGlmIChzdGVwLndpemFyZExhYmVsICYmIHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3dpemFyZFNocmlua2luZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLl9nZXRDdXJyZW50U3RlcCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjdXJyZW50U3RlcCAmJlxuICAgICAgICAgICAgKCFjdXJyZW50U3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApICYmXG4gICAgICAgICAgICBjdXJyZW50U3RlcC53aXphcmRMYWJlbCAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2hpZGVTb21lU3RlcChjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRTdGFja2VkVG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRlbnRUZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlc0xlbmd0aCA9IHRoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtdO1xuICAgICAgICBsZXQgX3N0ZXBJZCA9IDA7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGVwcykge1xuICAgICAgICAgICAgaWYgKHN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC53aXphcmRDb250ZW50SWQgPSBfc3RlcElkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGVwLl9zdGVwSWQgPSBfc3RlcElkO1xuICAgICAgICAgICAgX3N0ZXBJZCsrO1xuICAgICAgICAgICAgc3RlcC5zZXRGaW5hbFN0ZXAoZmFsc2UpO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICBJZiB0aGUgc3RlcCBpcyBjb21wbGV0ZWQgYW5kIGFwcGVuZFRvV2l6YXJkIGlzIHRydWUsIGhpZGUgdGhlIG5leHRTdGVwIGJ1dHRvbiwgdW5sZXNzIGl0J3MgdGhlIGxhc3Qgc3RlcCxcbiAgICAgICAgICAgICBvciBpZiB0aGVyZSdzIGEgc3VtbWFyeSBhbmQgaXQgaXMgdGhlIHNlY29uZCB0byBsYXN0IHN0ZXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkICYmXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRUb1dpemFyZCAmJlxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudD8ubmV4dFN0ZXA/LmNhbkhpZGUgJiZcbiAgICAgICAgICAgICAgICBzdGVwICE9PSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Lm5leHRTdGVwLl9oaWRlRWxlbWVudCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwICYmXG4gICAgICAgICAgICAgICAgKChzdGVwLmNvbXBsZXRlZCAmJiB0aGlzLmFwcGVuZFRvV2l6YXJkKSB8fFxuICAgICAgICAgICAgICAgICAgICAoc3RlcC52aXNpdGVkICYmIHN0ZXAuYnJhbmNoaW5nICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5fc2hvd0VsZW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgfHxcbiAgICAgICAgICAgICAgICAoKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTIHx8IHN0ZXAuc3RhdHVzID09PSBDT01QTEVURURfU1RFUF9TVEFUVVMpICYmIHN0ZXAuY29udGVudClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5jb21wbGV0ZWQgfHwgIXRoaXMuYXBwZW5kVG9XaXphcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50U3RlcCA9ICF0aGlzLmFwcGVuZFRvV2l6YXJkICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0ZW1wbGF0ZXNMZW5ndGggfHwgaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZV07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgbmVlZGVkIHN0ZXAsIGJyZWFrIHRoZSBjeWNsZSwgc2luY2UgaXQgbWlnaHQgc2V0IHdyb25nIHN0ZXAgbGF0ZXIuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCAmJiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMucHVzaChzdGVwLmNvbnRlbnQuY29udGVudFRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0VmlzaWJsZVRlbXBsYXRlID0gc3RlcHNbdGhpcy5jb250ZW50VGVtcGxhdGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAobGFzdFZpc2libGVUZW1wbGF0ZSAmJiBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxhc3RWaXNpYmxlVGVtcGxhdGUuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0RmluYWxTdGVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxUb0N1cnJlbnRTdGVwKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCkge1xuICAgICAgICAgICAgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZE5hdmlnYXRpb25IZWlnaHQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTU1xuICAgICAgICAgICAgICAgICAgICApLmNsaWVudEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3AodGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIGNoaWxkLm9mZnNldFRvcCAtIHdpemFyZE5hdmlnYXRpb25IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRVcFNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGlkZVNvbWVTdGVwKGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIC8vIElmIGEgc21hbGwgc3RlcCB3YXMgZm91bmQsIGdldCB0aGUgc3RlcCB3aXRoIGEgdmlzaWJsZSBsYWJlbCBmdXJ0aGVzdCBhd2F5IGZyb20gdGhlIGN1cnJlbnQgc3RlcCBhbmQgaGlkZSB0aGUgbGFiZWxcbiAgICAgICAgbGV0IHN0ZXBzQXJyYXkgPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKTtcbiAgICAgICAgc3RlcHNBcnJheSA9IHN0ZXBzQXJyYXkuZmlsdGVyKChzdGVwKSA9PiAhc3RlcC5oYXNMYWJlbChTVEVQX05PX0xBQkVMX0NMQVNTKSk7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgc3RlcHNBcnJheS5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RlcHNBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFN0ZXBJbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgc3RlcFRvSGlkZTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwSW5kZXggPSBzdGVwc0FycmF5LmluZGV4T2YoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA+IChzdGVwc0FycmF5Lmxlbmd0aCAtIDEpIC8gMlxuICAgICAgICAgICAgICAgID8gKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5WzBdKVxuICAgICAgICAgICAgICAgIDogKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5W3N0ZXBzQXJyYXkubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgc3RlcFRvSGlkZS5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgaWYgKHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA8IGN1cnJlbnRTdGVwSW5kZXggJiYgIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwVG9IaWRlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwVG9IaWRlKSwgMCwgc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA+IGN1cnJlbnRTdGVwSW5kZXggJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5zdGFja2VkU3RlcHNSaWdodC5pbmNsdWRlcyhzdGVwVG9IaWRlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNSaWdodC51bnNoaWZ0KHN0ZXBUb0hpZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRTdGFja2VkVG9wKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuX2dldEN1cnJlbnRTdGVwKCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwLnN0ZXBJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KClbaW5kZXggKyAxXSA9PT0gY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwKSAmJiB0aGlzLnN0YWNrZWRTdGVwc0xlZnQubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQuc3BsaWNlKGluZGV4LCAwLCBzdGVwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9yLnN0YWNrZWRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpLnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTdGVwQ2xhc3NlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fc2hvd1N1bW1hcnkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRTdGVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRGaW5hbFN0ZXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEZpbmFsU3RlcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdE5vblN1bW1hcnlTdGVwID0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk7XG4gICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMubGFzdC5yZW1vdmVGcm9tRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdE5vblN1bW1hcnlTdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuc2V0RmluYWxTdGVwKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG93U3VtbWFyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuc3RlcHMuZmluZCgoc3RlcCkgPT4gc3RlcC5pc1N1bW1hcnkpO1xuICAgICAgICBpZiAoc3VtbWFyeSkge1xuICAgICAgICAgICAgc3VtbWFyeS5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtzdW1tYXJ5LmNvbnRlbnQuY29udGVudFRlbXBsYXRlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNDdXJyZW50U3RlcFN1bW1hcnkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmIHN0ZXAuaXNTdW1tYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1cnJlbnRTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoXG4gICAgICAgICAgICAoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgfHwgc3RlcC5zdGF0dXMgPT09IEFDVElWRV9TVEVQX1NUQVRVU1xuICAgICAgICApWzBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTogdm9pZCB7XG4gICAgICAgIC8vIEFkZCBzbWFsbCBkZWxheSBmb3IgZWxlbWVudHMgdG8gcmVuZGVyIGFwcHJvcHJpYXRlbHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZpcnN0LnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yLnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0U3RlcENsYXNzZXMoKTtcbiAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLl9hbnlTdGVwSXNUb29OYXJyb3coKSAmJiBpIDwgdGhpcy5zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbnlTdGVwSXNUb29OYXJyb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwQ2xpY2tlZChjbGlja2VkU3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICBjbGlja2VkU3RlcCA9IHRoaXMuc3RlcHMuZmlyc3Q7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xpY2tlZFN0ZXBJbmRleCA9IHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2YoY2xpY2tlZFN0ZXApO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwID09PSBjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KENVUlJFTlRfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwICE9PSBjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXApIDwgY2xpY2tlZFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENPTVBMRVRFRF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChDT01QTEVURURfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwKSA+IGNsaWNrZWRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBVUENPTUlOR19TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChVUENPTUlOR19TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpOyAvLyB0aGlzIGZ1bmN0aW9uIGNhbiBmb2N1cyBzdGVwIGluZGljYXRvcnMgdW5kZXNpcmFibHlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMudG9BcnJheSgpW3RoaXMuc3RlcHMubGVuZ3RoIC0gMl07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5sYXN0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2Nyb2xsU3B5Q2hhbmdlKCRldmVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLl9zdGVwSWQudG9TdHJpbmcoKSA9PT0gJGV2ZW50LmNoaWxkcmVuWzBdLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAuX3N0ZXBJZCA8IHBhcnNlSW50KCRldmVudC5jaGlsZHJlblswXS5pZCwgMTApKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImZkLXdpemFyZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXdpemFyZC1uYXZpZ2F0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJhcHBlbmRUb1dpemFyZFwiXG4gICAgICAgIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCJcbiAgICAgICAgI3dyYXBwZXJDb250YWluZXJcbiAgICAgICAgZmRTY3JvbGxTcHlcbiAgICAgICAgY2RrU2Nyb2xsYWJsZVxuICAgICAgICBbdHJhY2tlZFRhZ3NdPVwiWydkaXYnXVwiXG4gICAgICAgIChzcHlDaGFuZ2UpPVwic2Nyb2xsU3B5Q2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFhcHBlbmRUb1dpemFyZFwiIGNka1Njcm9sbGFibGUgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zZWN0aW9uPlxuIl19
527
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFFVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQUVsRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLDhCQUE4QixDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLDBC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LDBCQUEwQiwyREFKdkIsbUJBQW1CLG1FQVFuQixzQkFBc0IsbUpDM0czQywrekJBc0JBOzJGRCtDYSxlQUFlO2tCQWpCM0IsU0FBUzsrQkFDSSxXQUFXLGlCQUdOLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLE1BQU07NEJBQ2YsV0FBVyxpQkFBaUI7eUJBQy9CO3FCQUNKLFFBQ0s7d0JBQ0YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsbUJBQW1CLEVBQUUsV0FBVztxQkFDbkM7OzBCQW9FSSxRQUFROzRDQTVEYixjQUFjO3NCQURiLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQVFOLGtCQUFrQjtzQkFGakIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBSW5ELGtCQUFrQjtzQkFEakIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLM0QsV0FBVztzQkFEVixZQUFZO3VCQUFDLDBCQUEwQjtnQkFLeEMsYUFBYTtzQkFEWixlQUFlO3VCQUFDLHNCQUFzQjtnQkFLdkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQTZCN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERpYWxvZ0JvZHlDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgV2l6YXJkU3RlcENvbXBvbmVudCB9IGZyb20gJy4vd2l6YXJkLXN0ZXAvd2l6YXJkLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1jb250ZW50L3dpemFyZC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENVUlJFTlRfU1RFUF9TVEFUVVMsIFVQQ09NSU5HX1NURVBfU1RBVFVTLCBDT01QTEVURURfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXSVpBUkQgfSBmcm9tICcuL3dpemFyZC1pbmplY3Rpb24tdG9rZW4nO1xuXG5leHBvcnQgY29uc3QgU1RFUF9NSU5fV0lEVEggPSAxNjg7XG5leHBvcnQgY29uc3QgU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQtdG9wJztcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1zdGFja2VkJztcbmV4cG9ydCBjb25zdCBTVEVQX05PX0xBQkVMX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tbm8tbGFiZWwnO1xuXG5leHBvcnQgY29uc3QgV0laQVJEX05BVklHQVRJT05fQ0xBU1MgPSAnZmQtd2l6YXJkX19uYXZpZ2F0aW9uJztcbmV4cG9ydCBjb25zdCBXSVpBUkRfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmRfX2NvbnRlbnQnO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUyA9ICdmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXInO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MgPSAnZmQtd2l6YXJkLXRhbGwtY29udGVudCc7XG5leHBvcnQgY29uc3QgU0hFTExCQVJfQ0xBU1MgPSAnZmQtc2hlbGxiYXInO1xuZXhwb3J0IGNvbnN0IEJBUl9GT09URVJfQ0xBU1MgPSAnZmQtYmFyLS1mb290ZXInO1xuZXhwb3J0IGNvbnN0IEJBUl9GTE9BVElOR19GT09URVJfQ0xBU1MgPSAnZmQtYmFyLS1mbG9hdGluZy1mb290ZXInO1xuXG5leHBvcnQgbGV0IF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcDtcbmV4cG9ydCBsZXQgdGltZXI6IGFueSA9IG51bGw7XG5leHBvcnQgY29uc3QgaGFuZGxlVGltZW91dFJlZmVyZW5jZSA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGltZXIgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB9XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwID0gZmFsc2U7XG4gICAgfSwgMTUwKTtcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtd2l6YXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi93aXphcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBXSVpBUkQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogV2l6YXJkQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3JlZ2lvbicsXG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdhcmlhTGFiZWwnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGFwcGVuZCB0aGUgc3RlcCB0byB0aGUgd2l6YXJkLiBJZiBmYWxzZSwgZWFjaCBzdGVwIHdpbGwgYmUgZGlzcGxheWVkIG9uIGEgZGlmZmVyZW50IHBhZ2UuXG4gICAgICogRGVmYXVsdCBpcyB0cnVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG9XaXphcmQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGhlaWdodCB0byB1c2UgZm9yIHRoZSB3aXphcmQncyBjb250ZW50IHBhbmUuIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgY2FsYygxMDB2aCAtIDE0NHB4KSwgd2hlcmUgMTQ0cHhcbiAgICAgKiBpcyB0aGUgY29tYmluZWQgaGVpZ2h0IG9mIHRoZSBzaGVsbGJhciwgd2l6YXJkIGhlYWRlciBhbmQgd2l6YXJkIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRIZWlnaHQ6IE51bGxhYmxlPHN0cmluZyB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgYXBwbHkgcmVzcG9uc2l2ZSBwYWRkaW5ncyBzdHlsaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC13aXphcmQtLXJlc3BvbnNpdmUtcGFkZGluZ3MnKVxuICAgIHJlc3BvbnNpdmVQYWRkaW5ncyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKiBhZGRpbmcgYXJpYSBsYWJlbCB0byB0aGUgY29tcG9uZW50ICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWwgPSAnV2l6YXJkJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc3RlcHM6IFF1ZXJ5TGlzdDxXaXphcmRTdGVwQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZSlcbiAgICBwcm9ncmVzc0JhcjogV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oV2l6YXJkQ29udGVudENvbXBvbmVudClcbiAgICB3aXphcmRDb250ZW50OiBXaXphcmRDb250ZW50Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd3cmFwcGVyQ29udGFpbmVyJylcbiAgICB3cmFwcGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29udGVudFRlbXBsYXRlczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YWNrZWRTdGVwc0xlZnQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNSaWdodDogV2l6YXJkU3RlcENvbXBvbmVudFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcExpc3RDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzV2lkdGg6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kaWFsb2dCb2R5Q29tcG9uZW50OiBEaWFsb2dCb2R5Q29tcG9uZW50XG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICByZXNpemVIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aXphcmRXaWR0aCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGlmICghdGhpcy5fcHJldmlvdXNXaWR0aCB8fCB3aXphcmRXaWR0aCA8PSB0aGlzLl9wcmV2aW91c1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmRXaWR0aCA+IHRoaXMuX3ByZXZpb3VzV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldmlvdXNXaWR0aCA9IHdpemFyZFdpZHRoO1xuICAgICAgICBpZiAodGhpcy5jb250ZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRhaW5lckFuZFRhbGxDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBmaXhlcyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwTGlzdENoYW5nZXNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwU3RlcEV2ZW50cygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBTdGVwRXZlbnRzKCk7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdGVwTGlzdENoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVRpbWVvdXRSZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSB3aXphcmQgY29udGVudCBieSBsb29raW5nIGZvciB0aGUgZG9jdW1lbnQncyBzaGVsbGJhciwgdGhlIHdpemFyZFxuICAgICAqIG5hdmlnYXRpb24gYW5kIHRoZSB3aXphcmQgZm9vdGVyLCBhbmQgY2FsY3VsYXRpbmcgdGhlIGhlaWdodCBiYXNlZCBvbiB0aGVpciBwcmVzZW5jZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVDb250ZW50SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCB3aXphcmROYXZIZWlnaHQgPSAwO1xuICAgICAgICBjb25zdCBzaGVsbGJhckhlaWdodCA9IHRoaXMuX2dldFNoZWxsYmFySGVpZ2h0KCk7XG4gICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgd2l6YXJkTmF2SGVpZ2h0ID0gdGhpcy5fZ2V0V2l6YXJkTmF2SGVpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgd2l6YXJkRm9vdGVySGVpZ2h0ID0gdGhpcy5fZ2V0V2l6YXJkRm9vdGVySGVpZ2h0KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ09mZnNldCA9IHRoaXMuX2dldERpYWxvZ09mZnNldCgpO1xuXG4gICAgICAgIHJldHVybiBzaGVsbGJhckhlaWdodCArIHdpemFyZE5hdkhlaWdodCArIHdpemFyZEZvb3RlckhlaWdodCArIGRpYWxvZ09mZnNldDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFNoZWxsYmFySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLicgKyBTSEVMTEJBUl9DTEFTUyk/LmNsaWVudEhlaWdodCA/PyAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0V2l6YXJkTmF2SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHdpemFyZCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCByZXRWYWw7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKS5jbGllbnRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRWYWwgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICByZXRWYWwgPSB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRk9PVEVSX0NMQVNTKS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GTE9BVElOR19GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldERpYWxvZ09mZnNldCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgcmV0VmFsID0gMDtcbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0JvZHkgPSB0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50LmVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZmQtZGlhbG9nLWJvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudC5kaWFsb2dDb25maWcudmVydGljYWxQYWRkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keVRpdGxlID0gZGlhbG9nQm9keS5xdWVyeVNlbGVjdG9yKCcuZmQtdGl0bGUtLWgyJyk7XG4gICAgICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHlUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBkaWFsb2dCb2R5VGl0bGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyB3aW5kb3cuaW5uZXJIZWlnaHQgLSBkaWFsb2dCb2R5Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29tYmluZWRIZWlnaHQgPSB0aGlzLmNvbnRlbnRIZWlnaHQgPyB0aGlzLmNvbnRlbnRIZWlnaHQgOiB0aGlzLl9jYWxjdWxhdGVDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgJ2NhbGMoMTAwdmggLSAnICsgY29tYmluZWRIZWlnaHQgKyAncHgpJztcbiAgICAgICAgfVxuICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvckFsbCgnLicgKyBXSVpBUkRfQ09OVEVOVF9DTEFTUykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5vZmZzZXRIZWlnaHQgPFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5wYWRkaW5nQm90dG9tID0gJzI0cHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cFN0ZXBFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBDbGlja2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RlcENsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9ySXRlbUNsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIGNhbGwgd2l6YXJkU2hyaW5raW5nIGZvciBlYWNoIHN0ZXAgPCAxNjhweCBvbiBmaXJzdCBsb2FkXG4gICAgICAgICAgICBpZiAoc3RlcC53aXphcmRMYWJlbCAmJiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF93aXphcmRTaHJpbmtpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3VycmVudFN0ZXAgJiZcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAud2l6YXJkTGFiZWwgJiZcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhY2tlZFRvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250ZW50VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZXNMZW5ndGggPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgbGV0IF9zdGVwSWQgPSAwO1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQud2l6YXJkQ29udGVudElkID0gX3N0ZXBJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RlcC5fc3RlcElkID0gX3N0ZXBJZDtcbiAgICAgICAgICAgIF9zdGVwSWQrKztcbiAgICAgICAgICAgIHN0ZXAuc2V0RmluYWxTdGVwKGZhbHNlKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgSWYgdGhlIHN0ZXAgaXMgY29tcGxldGVkIGFuZCBhcHBlbmRUb1dpemFyZCBpcyB0cnVlLCBoaWRlIHRoZSBuZXh0U3RlcCBidXR0b24sIHVubGVzcyBpdCdzIHRoZSBsYXN0IHN0ZXAsXG4gICAgICAgICAgICAgb3IgaWYgdGhlcmUncyBhIHN1bW1hcnkgYW5kIGl0IGlzIHRoZSBzZWNvbmQgdG8gbGFzdCBzdGVwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kVG9XaXphcmQgJiZcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwPy5jYW5IaWRlICYmXG4gICAgICAgICAgICAgICAgc3RlcCAhPT0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5faGlkZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Py5uZXh0U3RlcCAmJlxuICAgICAgICAgICAgICAgICgoc3RlcC5jb21wbGV0ZWQgJiYgdGhpcy5hcHBlbmRUb1dpemFyZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHN0ZXAudmlzaXRlZCAmJiBzdGVwLmJyYW5jaGluZyAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUykpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQubmV4dFN0ZXAuX3Nob3dFbGVtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC52aXNpdGVkIHx8XG4gICAgICAgICAgICAgICAgKChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQ09NUExFVEVEX1NURVBfU1RBVFVTKSAmJiBzdGVwLmNvbnRlbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyAmJiAoIXN0ZXAuY29tcGxldGVkIHx8ICF0aGlzLmFwcGVuZFRvV2l6YXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFN0ZXAgPSAhdGhpcy5hcHBlbmRUb1dpemFyZCAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcblxuICAgICAgICAgICAgICAgIGlmICghdGVtcGxhdGVzTGVuZ3RoIHx8IGlzQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N0ZXAuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIG5lZWRlZCBzdGVwLCBicmVhayB0aGUgY3ljbGUsIHNpbmNlIGl0IG1pZ2h0IHNldCB3cm9uZyBzdGVwIGxhdGVyLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLnB1c2goc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFZpc2libGVUZW1wbGF0ZSA9IHN0ZXBzW3RoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGxhc3RWaXNpYmxlVGVtcGxhdGUgJiYgbGFzdFZpc2libGVUZW1wbGF0ZS5jb250ZW50KSB7XG4gICAgICAgICAgICBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9DdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQpIHtcbiAgICAgICAgICAgIF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0ID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1NcbiAgICAgICAgICAgICAgICAgICAgKS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wKHRoaXMud3JhcHBlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCBjaGlsZC5vZmZzZXRUb3AgLSB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBTY3JvbGxMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVRpbWVvdXRSZWZlcmVuY2UsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hpZGVTb21lU3RlcChjdXJyZW50U3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICAvLyBJZiBhIHNtYWxsIHN0ZXAgd2FzIGZvdW5kLCBnZXQgdGhlIHN0ZXAgd2l0aCBhIHZpc2libGUgbGFiZWwgZnVydGhlc3QgYXdheSBmcm9tIHRoZSBjdXJyZW50IHN0ZXAgYW5kIGhpZGUgdGhlIGxhYmVsXG4gICAgICAgIGxldCBzdGVwc0FycmF5ID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIHN0ZXBzQXJyYXkgPSBzdGVwc0FycmF5LmZpbHRlcigoc3RlcCkgPT4gIXN0ZXAuaGFzTGFiZWwoU1RFUF9OT19MQUJFTF9DTEFTUykpO1xuICAgICAgICBpZiAodGhpcy5zdGVwcy5sYXN0LmlzU3VtbWFyeSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHN0ZXBzQXJyYXkucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0ZXBzQXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRTdGVwSW5kZXggPSAwLFxuICAgICAgICAgICAgICAgIHN0ZXBUb0hpZGU7XG4gICAgICAgICAgICBpZiAoY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50U3RlcEluZGV4ID0gc3RlcHNBcnJheS5pbmRleE9mKGN1cnJlbnRTdGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRTdGVwSW5kZXggPiAoc3RlcHNBcnJheS5sZW5ndGggLSAxKSAvIDJcbiAgICAgICAgICAgICAgICA/IChzdGVwVG9IaWRlID0gc3RlcHNBcnJheVswXSlcbiAgICAgICAgICAgICAgICA6IChzdGVwVG9IaWRlID0gc3RlcHNBcnJheVtzdGVwc0FycmF5Lmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgIHN0ZXBUb0hpZGUuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfTk9fTEFCRUxfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcFRvSGlkZS5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9TVEFDS0VEX0NMQVNTKTtcbiAgICAgICAgICAgIGlmIChzdGVwc0FycmF5LmluZGV4T2Yoc3RlcFRvSGlkZSkgPCBjdXJyZW50U3RlcEluZGV4ICYmICF0aGlzLnN0YWNrZWRTdGVwc0xlZnQuaW5jbHVkZXMoc3RlcFRvSGlkZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQuc3BsaWNlKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcFRvSGlkZSksIDAsIHN0ZXBUb0hpZGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwc0FycmF5LmluZGV4T2Yoc3RlcFRvSGlkZSkgPiBjdXJyZW50U3RlcEluZGV4ICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQuaW5jbHVkZXMoc3RlcFRvSGlkZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQudW5zaGlmdChzdGVwVG9IaWRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0U3RhY2tlZFRvcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLl9nZXRDdXJyZW50U3RlcCgpO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RlcC5zdGVwSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpW2luZGV4ICsgMV0gPT09IGN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnN0YWNrZWRTdGVwc0xlZnQuaW5jbHVkZXMoc3RlcCkgJiYgdGhpcy5zdGFja2VkU3RlcHNMZWZ0Lmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0LnNwbGljZShpbmRleCwgMCwgc3RlcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9yLnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc0xlZnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RlcEluZGljYXRvci5zdGFja2VkSXRlbXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yLnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U3RlcENsYXNzZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzQmFyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2hvd1N1bW1hcnkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRTdGVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRGaW5hbFN0ZXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEZpbmFsU3RlcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdE5vblN1bW1hcnlTdGVwID0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk7XG4gICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMubGFzdC5yZW1vdmVGcm9tRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdE5vblN1bW1hcnlTdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuc2V0RmluYWxTdGVwKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG93U3VtbWFyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuc3RlcHMuZmluZCgoc3RlcCkgPT4gc3RlcC5pc1N1bW1hcnkpO1xuICAgICAgICBpZiAoc3VtbWFyeSkge1xuICAgICAgICAgICAgc3VtbWFyeS5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtzdW1tYXJ5LmNvbnRlbnQuY29udGVudFRlbXBsYXRlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNDdXJyZW50U3RlcFN1bW1hcnkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmIHN0ZXAuaXNTdW1tYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1cnJlbnRTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoXG4gICAgICAgICAgICAoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgfHwgc3RlcC5zdGF0dXMgPT09IEFDVElWRV9TVEVQX1NUQVRVU1xuICAgICAgICApWzBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTogdm9pZCB7XG4gICAgICAgIC8vIEFkZCBzbWFsbCBkZWxheSBmb3IgZWxlbWVudHMgdG8gcmVuZGVyIGFwcHJvcHJpYXRlbHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZpcnN0LnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yLnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0U3RlcENsYXNzZXMoKTtcbiAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLl9hbnlTdGVwSXNUb29OYXJyb3coKSAmJiBpIDwgdGhpcy5zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbnlTdGVwSXNUb29OYXJyb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwQ2xpY2tlZChjbGlja2VkU3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICBjbGlja2VkU3RlcCA9IHRoaXMuc3RlcHMuZmlyc3Q7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xpY2tlZFN0ZXBJbmRleCA9IHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2YoY2xpY2tlZFN0ZXApO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwID09PSBjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KENVUlJFTlRfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwICE9PSBjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXApIDwgY2xpY2tlZFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENPTVBMRVRFRF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChDT01QTEVURURfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwKSA+IGNsaWNrZWRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBVUENPTUlOR19TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChVUENPTUlOR19TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpOyAvLyB0aGlzIGZ1bmN0aW9uIGNhbiBmb2N1cyBzdGVwIGluZGljYXRvcnMgdW5kZXNpcmFibHlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMudG9BcnJheSgpW3RoaXMuc3RlcHMubGVuZ3RoIC0gMl07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5sYXN0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2Nyb2xsU3B5Q2hhbmdlKCRldmVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLl9zdGVwSWQudG9TdHJpbmcoKSA9PT0gJGV2ZW50LmNoaWxkcmVuWzBdLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAuX3N0ZXBJZCA8IHBhcnNlSW50KCRldmVudC5jaGlsZHJlblswXS5pZCwgMTApKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImZkLXdpemFyZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXdpemFyZC1uYXZpZ2F0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJhcHBlbmRUb1dpemFyZFwiXG4gICAgICAgIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCJcbiAgICAgICAgI3dyYXBwZXJDb250YWluZXJcbiAgICAgICAgZmRTY3JvbGxTcHlcbiAgICAgICAgY2RrU2Nyb2xsYWJsZVxuICAgICAgICBbdHJhY2tlZFRhZ3NdPVwiWydkaXYnXVwiXG4gICAgICAgIChzcHlDaGFuZ2UpPVwic2Nyb2xsU3B5Q2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFhcHBlbmRUb1dpemFyZFwiIGNka1Njcm9sbGFibGUgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zZWN0aW9uPlxuIl19
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/facets",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-input",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-list-item",
3
- "version": "0.36.0-rc.1",
3
+ "version": "0.36.0-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -683,7 +683,9 @@ class WizardComponent {
683
683
  /** @hidden */
684
684
  _handleStepOrStatusChanges() {
685
685
  if (this._isCurrentStepSummary() && !this.displaySummaryStep) {
686
- this.progressBar.visible = false;
686
+ setTimeout(() => {
687
+ this.progressBar.visible = false;
688
+ });
687
689
  this._showSummary();
688
690
  }
689
691
  else {