@ecodev/natural 47.3.2 → 48.0.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 (104) hide show
  1. package/esm2020/lib/classes/abstract-editable-list.mjs +2 -2
  2. package/esm2020/lib/classes/abstract-list.mjs +1 -1
  3. package/esm2020/lib/modules/alert/alert.module.mjs +4 -4
  4. package/esm2020/lib/modules/alert/alert.service.mjs +5 -5
  5. package/esm2020/lib/modules/alert/confirm.component.mjs +6 -6
  6. package/esm2020/lib/modules/columns-picker/columns-picker.component.mjs +9 -8
  7. package/esm2020/lib/modules/columns-picker/columns-picker.module.mjs +11 -7
  8. package/esm2020/lib/modules/common/common-module.mjs +4 -4
  9. package/esm2020/lib/modules/common/directives/linkable-tab.directive.mjs +5 -5
  10. package/esm2020/lib/modules/detail-header/detail-header.component.mjs +6 -5
  11. package/esm2020/lib/modules/detail-header/detail-header.module.mjs +6 -5
  12. package/esm2020/lib/modules/dialog-trigger/dialog-trigger.component.mjs +4 -4
  13. package/esm2020/lib/modules/dialog-trigger/dialog-trigger.module.mjs +2 -2
  14. package/esm2020/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +7 -7
  15. package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +7 -8
  16. package/esm2020/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +5 -5
  17. package/esm2020/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +4 -4
  18. package/esm2020/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +4 -4
  19. package/esm2020/lib/modules/dropdown-components/type-number/type-number.component.mjs +5 -5
  20. package/esm2020/lib/modules/dropdown-components/type-select/type-select.component.mjs +7 -7
  21. package/esm2020/lib/modules/dropdown-components/type-text/type-text.component.mjs +3 -3
  22. package/esm2020/lib/modules/file/component/file.component.mjs +7 -6
  23. package/esm2020/lib/modules/file/file.module.mjs +5 -4
  24. package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +6 -5
  25. package/esm2020/lib/modules/fixed-button/fixed-button.module.mjs +6 -5
  26. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +2 -2
  27. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +2 -2
  28. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +10 -9
  29. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +8 -8
  30. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +4 -4
  31. package/esm2020/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +8 -8
  32. package/esm2020/lib/modules/icon/icon.directive.mjs +100 -0
  33. package/esm2020/lib/modules/icon/icon.module.mjs +6 -6
  34. package/esm2020/lib/modules/icon/public-api.mjs +2 -2
  35. package/esm2020/lib/modules/panels/panels.module.mjs +2 -2
  36. package/esm2020/lib/modules/panels/panels.service.mjs +4 -4
  37. package/esm2020/lib/modules/relations/relations.component.mjs +10 -9
  38. package/esm2020/lib/modules/relations/relations.module.mjs +13 -9
  39. package/esm2020/lib/modules/search/classes/graphql-doctrine.mjs +1 -1
  40. package/esm2020/lib/modules/search/classes/graphql-doctrine.types.mjs +1 -1
  41. package/esm2020/lib/modules/search/dropdown-container/dropdown-container.component.mjs +3 -3
  42. package/esm2020/lib/modules/search/facet-selector/facet-selector.component.mjs +4 -5
  43. package/esm2020/lib/modules/search/input/input.component.mjs +8 -7
  44. package/esm2020/lib/modules/search/search/search.component.mjs +7 -6
  45. package/esm2020/lib/modules/search/search.module.mjs +12 -8
  46. package/esm2020/lib/modules/search/types/facet.mjs +1 -1
  47. package/esm2020/lib/modules/select/abstract-select.component.mjs +2 -5
  48. package/esm2020/lib/modules/select/select/select.component.mjs +13 -17
  49. package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +4 -4
  50. package/esm2020/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +9 -11
  51. package/esm2020/lib/modules/select/select.module.mjs +14 -10
  52. package/esm2020/lib/modules/sidenav/sidenav.module.mjs +2 -2
  53. package/esm2020/lib/modules/stamp/stamp.component.mjs +3 -3
  54. package/esm2020/lib/modules/table-button/table-button.component.mjs +6 -5
  55. package/esm2020/lib/modules/table-button/table-button.module.mjs +6 -5
  56. package/fesm2015/ecodev-natural.mjs +305 -301
  57. package/fesm2015/ecodev-natural.mjs.map +1 -1
  58. package/fesm2020/ecodev-natural.mjs +307 -301
  59. package/fesm2020/ecodev-natural.mjs.map +1 -1
  60. package/lib/classes/abstract-editable-list.d.ts +2 -2
  61. package/lib/classes/abstract-list.d.ts +1 -1
  62. package/lib/modules/alert/alert.module.d.ts +4 -4
  63. package/lib/modules/alert/alert.service.d.ts +2 -2
  64. package/lib/modules/columns-picker/columns-picker.module.d.ts +6 -5
  65. package/lib/modules/common/common-module.d.ts +4 -4
  66. package/lib/modules/common/directives/linkable-tab.directive.d.ts +2 -2
  67. package/lib/modules/detail-header/detail-header.module.d.ts +3 -2
  68. package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +1 -1
  69. package/lib/modules/dialog-trigger/dialog-trigger.module.d.ts +2 -2
  70. package/lib/modules/dropdown-components/natural-dropdown-components.module.d.ts +7 -7
  71. package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +1 -1
  72. package/lib/modules/file/file.module.d.ts +2 -1
  73. package/lib/modules/fixed-button/fixed-button.module.d.ts +4 -3
  74. package/lib/modules/fixed-button-detail/fixed-button-detail.module.d.ts +2 -2
  75. package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +1 -1
  76. package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +1 -1
  77. package/lib/modules/hierarchic-selector/hierarchic-selector.module.d.ts +8 -8
  78. package/lib/modules/icon/icon.directive.d.ts +43 -0
  79. package/lib/modules/icon/icon.module.d.ts +3 -3
  80. package/lib/modules/icon/public-api.d.ts +1 -1
  81. package/lib/modules/panels/panels.module.d.ts +2 -2
  82. package/lib/modules/panels/panels.service.d.ts +1 -1
  83. package/lib/modules/relations/relations.component.d.ts +1 -1
  84. package/lib/modules/relations/relations.module.d.ts +8 -7
  85. package/lib/modules/search/classes/graphql-doctrine.types.d.ts +23 -23
  86. package/lib/modules/search/search.module.d.ts +6 -5
  87. package/lib/modules/search/types/facet.d.ts +3 -3
  88. package/lib/modules/select/abstract-select.component.d.ts +1 -3
  89. package/lib/modules/select/select/select.component.d.ts +1 -6
  90. package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +0 -3
  91. package/lib/modules/select/select.module.d.ts +9 -8
  92. package/lib/modules/sidenav/sidenav.module.d.ts +2 -2
  93. package/lib/modules/table-button/table-button.module.d.ts +3 -2
  94. package/package.json +1 -1
  95. package/src/lib/_natural.theme.scss +34 -2
  96. package/src/lib/modules/alert/_alert.theme.scss +1 -1
  97. package/src/lib/modules/panels/_panels.external.scss +2 -3
  98. package/src/lib/modules/search/input/_input.theme.scss +2 -2
  99. package/src/lib/styles/_table.scss +4 -4
  100. package/theming/_natural.theme.scss +1 -1
  101. package/esm2020/lib/modules/icon/icon.component.mjs +0 -95
  102. package/lib/modules/icon/icon.component.d.ts +0 -41
  103. package/src/lib/modules/icon/_icon.theme.scss +0 -34
  104. package/src/lib/modules/table-button/_table-button.theme.scss +0 -22
@@ -2,14 +2,14 @@ import { CdkTreeModule } from '@angular/cdk/tree';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { NgModule } from '@angular/core';
4
4
  import { FormsModule } from '@angular/forms';
5
- import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button';
6
- import { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox';
7
- import { MatLegacyChipsModule as MatChipsModule } from '@angular/material/legacy-chips';
8
- import { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';
9
- import { MatLegacyFormFieldModule as MatFormFieldModule } from '@angular/material/legacy-form-field';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import { MatCheckboxModule } from '@angular/material/checkbox';
7
+ import { MatChipsModule } from '@angular/material/chips';
8
+ import { MatDialogModule } from '@angular/material/dialog';
9
+ import { MatFormFieldModule } from '@angular/material/form-field';
10
10
  import { MatIconModule } from '@angular/material/icon';
11
- import { MatLegacyInputModule as MatInputModule } from '@angular/material/legacy-input';
12
- import { MatLegacyProgressSpinnerModule as MatProgressSpinnerModule } from '@angular/material/legacy-progress-spinner';
11
+ import { MatInputModule } from '@angular/material/input';
12
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
13
13
  import { MatTreeModule } from '@angular/material/tree';
14
14
  import { NaturalIconModule } from '../icon/icon.module';
15
15
  import { NaturalSearchModule } from '../search/search.module';
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
76
76
  exports: [NaturalHierarchicSelectorComponent],
77
77
  }]
78
78
  }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpYy1zZWxlY3Rvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLHFCQUFxQixJQUFJLGVBQWUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pGLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxpQkFBaUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQy9GLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxjQUFjLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQUMscUJBQXFCLElBQUksZUFBZSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDekYsT0FBTyxFQUFDLHdCQUF3QixJQUFJLGtCQUFrQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbkcsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxjQUFjLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQUMsOEJBQThCLElBQUksd0JBQXdCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNySCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDM0gsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDdkcsT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDdkgsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7O0FBd0I1RCxNQUFNLE9BQU8sK0JBQStCOzs0SEFBL0IsK0JBQStCOzZIQUEvQiwrQkFBK0IsaUJBckJ6QixrQ0FBa0MsRUFBRSx3Q0FBd0MsYUFFdkYsWUFBWTtRQUNaLFdBQVc7UUFDWCxhQUFhO1FBQ2IsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsYUFBYTtRQUNiLGFBQWE7UUFDYixjQUFjO1FBQ2Qsd0JBQXdCO1FBQ3hCLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsY0FBYztRQUNkLG1CQUFtQjtRQUNuQixtQkFBbUIsYUFHYixrQ0FBa0M7NkhBRW5DLCtCQUErQixhQUg3QixDQUFDLHNDQUFzQyxDQUFDLFlBaEIvQyxZQUFZO1FBQ1osV0FBVztRQUNYLGFBQWE7UUFDYixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixhQUFhO1FBQ2IsYUFBYTtRQUNiLGNBQWM7UUFDZCx3QkFBd0I7UUFDeEIsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsbUJBQW1CO1FBQ25CLG1CQUFtQjsyRkFLZCwrQkFBK0I7a0JBdEIzQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGtDQUFrQyxFQUFFLHdDQUF3QyxDQUFDO29CQUM1RixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDdEI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsc0NBQXNDLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2RrVHJlZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0TGVnYWN5QnV0dG9uTW9kdWxlIGFzIE1hdEJ1dHRvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWJ1dHRvbic7XG5pbXBvcnQge01hdExlZ2FjeUNoZWNrYm94TW9kdWxlIGFzIE1hdENoZWNrYm94TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktY2hlY2tib3gnO1xuaW1wb3J0IHtNYXRMZWdhY3lDaGlwc01vZHVsZSBhcyBNYXRDaGlwc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWNoaXBzJztcbmltcG9ydCB7TWF0TGVnYWN5RGlhbG9nTW9kdWxlIGFzIE1hdERpYWxvZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQge01hdExlZ2FjeUZvcm1GaWVsZE1vZHVsZSBhcyBNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1mb3JtLWZpZWxkJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdExlZ2FjeUlucHV0TW9kdWxlIGFzIE1hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktaW5wdXQnO1xuaW1wb3J0IHtNYXRMZWdhY3lQcm9ncmVzc1NwaW5uZXJNb2R1bGUgYXMgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQge01hdFRyZWVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xuaW1wb3J0IHtOYXR1cmFsSWNvbk1vZHVsZX0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQge05hdHVyYWxTZWFyY2hNb2R1bGV9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gubW9kdWxlJztcbmltcG9ydCB7TmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yQ29tcG9uZW50fSBmcm9tICcuL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nU2VydmljZX0gZnJvbSAnLi9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbENvbW1vbk1vZHVsZX0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi1tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JDb21wb25lbnQsIE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgQ2RrVHJlZU1vZHVsZSxcbiAgICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRUcmVlTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIE5hdHVyYWxJY29uTW9kdWxlLFxuICAgICAgICBNYXRDaGlwc01vZHVsZSxcbiAgICAgICAgTmF0dXJhbFNlYXJjaE1vZHVsZSxcbiAgICAgICAgTmF0dXJhbENvbW1vbk1vZHVsZSxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlXSxcbiAgICBleHBvcnRzOiBbTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JNb2R1bGUge31cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpYy1zZWxlY3Rvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDM0gsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDdkcsT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDdkgsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7O0FBd0I1RCxNQUFNLE9BQU8sK0JBQStCOzs0SEFBL0IsK0JBQStCOzZIQUEvQiwrQkFBK0IsaUJBckJ6QixrQ0FBa0MsRUFBRSx3Q0FBd0MsYUFFdkYsWUFBWTtRQUNaLFdBQVc7UUFDWCxhQUFhO1FBQ2IsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsYUFBYTtRQUNiLGFBQWE7UUFDYixjQUFjO1FBQ2Qsd0JBQXdCO1FBQ3hCLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsY0FBYztRQUNkLG1CQUFtQjtRQUNuQixtQkFBbUIsYUFHYixrQ0FBa0M7NkhBRW5DLCtCQUErQixhQUg3QixDQUFDLHNDQUFzQyxDQUFDLFlBaEIvQyxZQUFZO1FBQ1osV0FBVztRQUNYLGFBQWE7UUFDYixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixhQUFhO1FBQ2IsYUFBYTtRQUNiLGNBQWM7UUFDZCx3QkFBd0I7UUFDeEIsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsbUJBQW1CO1FBQ25CLG1CQUFtQjsyRkFLZCwrQkFBK0I7a0JBdEIzQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGtDQUFrQyxFQUFFLHdDQUF3QyxDQUFDO29CQUM1RixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDdEI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsc0NBQXNDLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2RrVHJlZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtNYXRDaGVja2JveE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHtNYXRDaGlwc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHtNYXREaWFsb2dNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHtNYXRUcmVlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcbmltcG9ydCB7TmF0dXJhbEljb25Nb2R1bGV9IGZyb20gJy4uL2ljb24vaWNvbi5tb2R1bGUnO1xuaW1wb3J0IHtOYXR1cmFsU2VhcmNoTW9kdWxlfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLm1vZHVsZSc7XG5pbXBvcnQge05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dDb21wb25lbnR9IGZyb20gJy4vaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7TmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckNvbXBvbmVudH0gZnJvbSAnLi9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2V9IGZyb20gJy4vaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxDb21tb25Nb2R1bGV9IGZyb20gJy4uL2NvbW1vbi9jb21tb24tbW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yQ29tcG9uZW50LCBOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIENka1RyZWVNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VHJlZU1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgICAgICBOYXR1cmFsSWNvbk1vZHVsZSxcbiAgICAgICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgICAgIE5hdHVyYWxTZWFyY2hNb2R1bGUsXG4gICAgICAgIE5hdHVyYWxDb21tb25Nb2R1bGUsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nU2VydmljZV0sXG4gICAgZXhwb3J0czogW05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,100 @@
1
+ import { Directive, Host, HostBinding, Inject, InjectionToken, Input, Self } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/material/icon";
4
+ import * as i2 from "@angular/platform-browser";
5
+ export const NATURAL_ICONS_CONFIG = new InjectionToken('Configuration for Natural Icons');
6
+ const naturalRegistered = Symbol('Natural icon registered');
7
+ /**
8
+ * Allows to use `<mat-icon>` without knowing where an icon comes from (SVG or font) or with aliases for Material font.
9
+ *
10
+ * SVG icons and Material font aliases must be configured ahead of time, via `NATURAL_ICONS_CONFIG`.
11
+ *
12
+ * It also make it easy to give a specific size to the icon via `[size]`.
13
+ *
14
+ * Usage:
15
+ *
16
+ * ```html
17
+ * <mat-icon naturalIcon="search"></mat-icon>
18
+ * <mat-icon naturalIcon="my-svg-icon-name"></mat-icon>
19
+ * <mat-icon naturalIcon="my-alias-for-search"></mat-icon>
20
+ * <mat-icon naturalIcon="search" [size]="150"></mat-icon>
21
+ * ```
22
+ */
23
+ export class NaturalIconDirective {
24
+ constructor(matIconRegistry, domSanitizer, config, matIconComponent) {
25
+ this.matIconRegistry = matIconRegistry;
26
+ this.domSanitizer = domSanitizer;
27
+ this.config = config;
28
+ this.matIconComponent = matIconComponent;
29
+ this._size = undefined;
30
+ this.classes = '';
31
+ this.registerIcons(config);
32
+ }
33
+ set naturalIcon(value) {
34
+ const newIcon = {
35
+ name: value,
36
+ ...(this.config[value] ?? { font: value }),
37
+ };
38
+ if (newIcon.class) {
39
+ this.classes = newIcon.class;
40
+ }
41
+ this.matIconComponent.fontIcon = undefined;
42
+ this.matIconComponent.svgIcon = undefined;
43
+ if (newIcon.font) {
44
+ this.matIconComponent.fontIcon = newIcon.font;
45
+ }
46
+ else if (newIcon.svg) {
47
+ this.matIconComponent.svgIcon = newIcon.name;
48
+ }
49
+ }
50
+ set size(size) {
51
+ this._size = size ?? undefined;
52
+ }
53
+ registerIcons(config) {
54
+ // Ensure that this specific instance of registry has our our icons
55
+ // exactly once, not less and not more
56
+ const registry = this.matIconRegistry;
57
+ if (registry[naturalRegistered]) {
58
+ return;
59
+ }
60
+ registry[naturalRegistered] = true;
61
+ for (const key of Object.keys(config)) {
62
+ const svg = config[key].svg;
63
+ if (svg) {
64
+ this.matIconRegistry.addSvgIcon(key, this.domSanitizer.bypassSecurityTrustResourceUrl(svg));
65
+ }
66
+ }
67
+ }
68
+ }
69
+ NaturalIconDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalIconDirective, deps: [{ token: i1.MatIconRegistry }, { token: i2.DomSanitizer }, { token: NATURAL_ICONS_CONFIG }, { token: i1.MatIcon, host: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
70
+ NaturalIconDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: { naturalIcon: "naturalIcon", size: "size" }, host: { properties: { "style.font-size.px": "this._size", "style.min-height.px": "this._size", "style.min-width.px": "this._size", "class": "this.classes" } }, ngImport: i0 });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalIconDirective, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ selector: 'mat-icon[naturalIcon]',
75
+ }]
76
+ }], ctorParameters: function () { return [{ type: i1.MatIconRegistry }, { type: i2.DomSanitizer }, { type: undefined, decorators: [{
77
+ type: Inject,
78
+ args: [NATURAL_ICONS_CONFIG]
79
+ }] }, { type: i1.MatIcon, decorators: [{
80
+ type: Host
81
+ }, {
82
+ type: Self
83
+ }] }]; }, propDecorators: { _size: [{
84
+ type: HostBinding,
85
+ args: ['style.font-size.px']
86
+ }, {
87
+ type: HostBinding,
88
+ args: ['style.min-height.px']
89
+ }, {
90
+ type: HostBinding,
91
+ args: ['style.min-width.px']
92
+ }], classes: [{
93
+ type: HostBinding,
94
+ args: ['class']
95
+ }], naturalIcon: [{
96
+ type: Input
97
+ }], size: [{
98
+ type: Input
99
+ }] } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9pY29uL2ljb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFxQmhHLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUFxQixpQ0FBaUMsQ0FBQyxDQUFDO0FBRTlHLE1BQU0saUJBQWlCLEdBQWtCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRTNFOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFRN0IsWUFDcUIsZUFBZ0MsRUFDaEMsWUFBMEIsRUFDSSxNQUEwQixFQUN6QyxnQkFBeUI7UUFIeEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ0ksV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDekMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFTO1FBUnJELFVBQUssR0FBdUIsU0FBUyxDQUFDO1FBRWhCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFRdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFDVyxXQUFXLENBQUMsS0FBYTtRQUNoQyxNQUFNLE9BQU8sR0FBb0I7WUFDN0IsSUFBSSxFQUFFLEtBQUs7WUFDWCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUMsQ0FBQztTQUMzQyxDQUFDO1FBRUYsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxTQUFVLENBQUM7UUFDNUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sR0FBRyxTQUFVLENBQUM7UUFFM0MsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ2pEO2FBQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztTQUNoRDtJQUNMLENBQUM7SUFFRCxJQUNXLElBQUksQ0FBQyxJQUErQjtRQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUEwQjtRQUM1QyxtRUFBbUU7UUFDbkUsc0NBQXNDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFzQixDQUFDO1FBQzdDLElBQUksUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDN0IsT0FBTztTQUNWO1FBQ0QsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBRW5DLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzVCLElBQUksR0FBRyxFQUFFO2dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDL0Y7U0FDSjtJQUNMLENBQUM7O2lIQTFEUSxvQkFBb0IsNkVBV2pCLG9CQUFvQjtxR0FYdkIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtpQkFDcEM7OzBCQVlRLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsSUFBSTs7MEJBQUksSUFBSTs0Q0FSVCxLQUFLO3NCQUhaLFdBQVc7dUJBQUMsb0JBQW9COztzQkFDaEMsV0FBVzt1QkFBQyxxQkFBcUI7O3NCQUNqQyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFHSCxPQUFPO3NCQUFwQyxXQUFXO3VCQUFDLE9BQU87Z0JBWVQsV0FBVztzQkFEckIsS0FBSztnQkFzQkssSUFBSTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEhvc3QsIEhvc3RCaW5kaW5nLCBJbmplY3QsIEluamVjdGlvblRva2VuLCBJbnB1dCwgU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdEljb24sIE1hdEljb25SZWdpc3RyeX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge0RvbVNhbml0aXplcn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmludGVyZmFjZSBOYXR1cmFsSWNvblR5cGUge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdmc/OiBzdHJpbmc7XG4gICAgZm9udD86IHN0cmluZztcbiAgICBjbGFzcz86ICduZWdhdGl2ZScgfCAnbmV1dHJhbCcgfCAncG9zaXRpdmUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdHVyYWxJY29uQ29uZmlnIHtcbiAgICBzdmc/OiBzdHJpbmc7XG4gICAgZm9udD86IHN0cmluZztcbiAgICBjbGFzcz86ICduZWdhdGl2ZScgfCAnbmV1dHJhbCcgfCAncG9zaXRpdmUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdHVyYWxJY29uc0NvbmZpZyB7XG4gICAgW2tleTogc3RyaW5nXTogTmF0dXJhbEljb25Db25maWc7XG59XG5cbmV4cG9ydCBjb25zdCBOQVRVUkFMX0lDT05TX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOYXR1cmFsSWNvbnNDb25maWc+KCdDb25maWd1cmF0aW9uIGZvciBOYXR1cmFsIEljb25zJyk7XG5cbmNvbnN0IG5hdHVyYWxSZWdpc3RlcmVkOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sKCdOYXR1cmFsIGljb24gcmVnaXN0ZXJlZCcpO1xuXG4vKipcbiAqIEFsbG93cyB0byB1c2UgYDxtYXQtaWNvbj5gIHdpdGhvdXQga25vd2luZyB3aGVyZSBhbiBpY29uIGNvbWVzIGZyb20gKFNWRyBvciBmb250KSBvciB3aXRoIGFsaWFzZXMgZm9yIE1hdGVyaWFsIGZvbnQuXG4gKlxuICogU1ZHIGljb25zIGFuZCBNYXRlcmlhbCBmb250IGFsaWFzZXMgbXVzdCBiZSBjb25maWd1cmVkIGFoZWFkIG9mIHRpbWUsIHZpYSBgTkFUVVJBTF9JQ09OU19DT05GSUdgLlxuICpcbiAqIEl0IGFsc28gbWFrZSBpdCBlYXN5IHRvIGdpdmUgYSBzcGVjaWZpYyBzaXplIHRvIHRoZSBpY29uIHZpYSBgW3NpemVdYC5cbiAqXG4gKiBVc2FnZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8bWF0LWljb24gbmF0dXJhbEljb249XCJzZWFyY2hcIj48L21hdC1pY29uPlxuICogPG1hdC1pY29uIG5hdHVyYWxJY29uPVwibXktc3ZnLWljb24tbmFtZVwiPjwvbWF0LWljb24+XG4gKiA8bWF0LWljb24gbmF0dXJhbEljb249XCJteS1hbGlhcy1mb3Itc2VhcmNoXCI+PC9tYXQtaWNvbj5cbiAqIDxtYXQtaWNvbiBuYXR1cmFsSWNvbj1cInNlYXJjaFwiIFtzaXplXT1cIjE1MFwiPjwvbWF0LWljb24+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYXQtaWNvbltuYXR1cmFsSWNvbl0nLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSWNvbkRpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mb250LXNpemUucHgnKVxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWluLWhlaWdodC5weCcpXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgucHgnKVxuICAgIHByaXZhdGUgX3NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBwcml2YXRlIGNsYXNzZXMgPSAnJztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtYXRJY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgQEluamVjdChOQVRVUkFMX0lDT05TX0NPTkZJRykgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IE5hdHVyYWxJY29uc0NvbmZpZyxcbiAgICAgICAgQEhvc3QoKSBAU2VsZigpIHB1YmxpYyByZWFkb25seSBtYXRJY29uQ29tcG9uZW50OiBNYXRJY29uLFxuICAgICkge1xuICAgICAgICB0aGlzLnJlZ2lzdGVySWNvbnMoY29uZmlnKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgbmF0dXJhbEljb24odmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBuZXdJY29uOiBOYXR1cmFsSWNvblR5cGUgPSB7XG4gICAgICAgICAgICBuYW1lOiB2YWx1ZSxcbiAgICAgICAgICAgIC4uLih0aGlzLmNvbmZpZ1t2YWx1ZV0gPz8ge2ZvbnQ6IHZhbHVlfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG5ld0ljb24uY2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3NlcyA9IG5ld0ljb24uY2xhc3M7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1hdEljb25Db21wb25lbnQuZm9udEljb24gPSB1bmRlZmluZWQhO1xuICAgICAgICB0aGlzLm1hdEljb25Db21wb25lbnQuc3ZnSWNvbiA9IHVuZGVmaW5lZCE7XG5cbiAgICAgICAgaWYgKG5ld0ljb24uZm9udCkge1xuICAgICAgICAgICAgdGhpcy5tYXRJY29uQ29tcG9uZW50LmZvbnRJY29uID0gbmV3SWNvbi5mb250O1xuICAgICAgICB9IGVsc2UgaWYgKG5ld0ljb24uc3ZnKSB7XG4gICAgICAgICAgICB0aGlzLm1hdEljb25Db21wb25lbnQuc3ZnSWNvbiA9IG5ld0ljb24ubmFtZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBzaXplKHNpemU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemUgPz8gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJJY29ucyhjb25maWc6IE5hdHVyYWxJY29uc0NvbmZpZyk6IHZvaWQge1xuICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGlzIHNwZWNpZmljIGluc3RhbmNlIG9mIHJlZ2lzdHJ5IGhhcyBvdXIgb3VyIGljb25zXG4gICAgICAgIC8vIGV4YWN0bHkgb25jZSwgbm90IGxlc3MgYW5kIG5vdCBtb3JlXG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gdGhpcy5tYXRJY29uUmVnaXN0cnkgYXMgYW55O1xuICAgICAgICBpZiAocmVnaXN0cnlbbmF0dXJhbFJlZ2lzdGVyZWRdKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVnaXN0cnlbbmF0dXJhbFJlZ2lzdGVyZWRdID0gdHJ1ZTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKSB7XG4gICAgICAgICAgICBjb25zdCBzdmcgPSBjb25maWdba2V5XS5zdmc7XG4gICAgICAgICAgICBpZiAoc3ZnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRJY29uUmVnaXN0cnkuYWRkU3ZnSWNvbihrZXksIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChzdmcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { MatIconModule } from '@angular/material/icon';
4
- import { IconsConfigService, NaturalIconComponent } from './icon.component';
4
+ import { NATURAL_ICONS_CONFIG, NaturalIconDirective } from './icon.directive';
5
5
  import * as i0 from "@angular/core";
6
6
  export class NaturalIconModule {
7
7
  static forRoot(config) {
@@ -9,7 +9,7 @@ export class NaturalIconModule {
9
9
  ngModule: NaturalIconModule,
10
10
  providers: [
11
11
  {
12
- provide: IconsConfigService,
12
+ provide: NATURAL_ICONS_CONFIG,
13
13
  useValue: config,
14
14
  },
15
15
  ],
@@ -17,14 +17,14 @@ export class NaturalIconModule {
17
17
  }
18
18
  }
19
19
  NaturalIconModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
- NaturalIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: NaturalIconModule, declarations: [NaturalIconComponent], imports: [CommonModule, MatIconModule], exports: [NaturalIconComponent] });
20
+ NaturalIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: NaturalIconModule, declarations: [NaturalIconDirective], imports: [CommonModule, MatIconModule], exports: [NaturalIconDirective] });
21
21
  NaturalIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalIconModule, imports: [CommonModule, MatIconModule] });
22
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalIconModule, decorators: [{
23
23
  type: NgModule,
24
24
  args: [{
25
- declarations: [NaturalIconComponent],
25
+ declarations: [NaturalIconDirective],
26
26
  imports: [CommonModule, MatIconModule],
27
- exports: [NaturalIconComponent],
27
+ exports: [NaturalIconDirective],
28
28
  }]
29
29
  }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9pY29uL2ljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFxQixNQUFNLGtCQUFrQixDQUFDOztBQU85RixNQUFNLE9BQU8saUJBQWlCO0lBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBMEI7UUFDNUMsT0FBTztZQUNILFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxrQkFBa0I7b0JBQzNCLFFBQVEsRUFBRSxNQUFNO2lCQUNuQjthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7OzhHQVhRLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQUpYLG9CQUFvQixhQUN6QixZQUFZLEVBQUUsYUFBYSxhQUMzQixvQkFBb0I7K0dBRXJCLGlCQUFpQixZQUhoQixZQUFZLEVBQUUsYUFBYTsyRkFHNUIsaUJBQWlCO2tCQUw3QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7SWNvbnNDb25maWdTZXJ2aWNlLCBOYXR1cmFsSWNvbkNvbXBvbmVudCwgTmF0dXJhbEljb25zQ29uZmlnfSBmcm9tICcuL2ljb24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtOYXR1cmFsSWNvbkNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW05hdHVyYWxJY29uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbEljb25Nb2R1bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWc6IE5hdHVyYWxJY29uc0NvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TmF0dXJhbEljb25Nb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOYXR1cmFsSWNvbk1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogSWNvbnNDb25maWdTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9pY29uL2ljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLG9CQUFvQixFQUFFLG9CQUFvQixFQUFxQixNQUFNLGtCQUFrQixDQUFDOztBQU9oRyxNQUFNLE9BQU8saUJBQWlCO0lBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBMEI7UUFDNUMsT0FBTztZQUNILFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxvQkFBb0I7b0JBQzdCLFFBQVEsRUFBRSxNQUFNO2lCQUNuQjthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7OzhHQVhRLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQUpYLG9CQUFvQixhQUN6QixZQUFZLEVBQUUsYUFBYSxhQUMzQixvQkFBb0I7K0dBRXJCLGlCQUFpQixZQUhoQixZQUFZLEVBQUUsYUFBYTsyRkFHNUIsaUJBQWlCO2tCQUw3QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7TkFUVVJBTF9JQ09OU19DT05GSUcsIE5hdHVyYWxJY29uRGlyZWN0aXZlLCBOYXR1cmFsSWNvbnNDb25maWd9IGZyb20gJy4vaWNvbi5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05hdHVyYWxJY29uRGlyZWN0aXZlXSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTmF0dXJhbEljb25EaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSWNvbk1vZHVsZSB7XG4gICAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogTmF0dXJhbEljb25zQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOYXR1cmFsSWNvbk1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE5hdHVyYWxJY29uTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBOQVRVUkFMX0lDT05TX0NPTkZJRyxcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Public API Surface of natural
3
3
  */
4
- export * from './icon.component';
4
+ export * from './icon.directive';
5
5
  export * from './icon.module';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2ljb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5hdHVyYWxcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi5tb2R1bGUnO1xuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL2ljb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5hdHVyYWxcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2ljb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi5tb2R1bGUnO1xuIl19
@@ -1,6 +1,6 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
- import { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';
3
+ import { MatDialogModule } from '@angular/material/dialog';
4
4
  import { RouterModule } from '@angular/router';
5
5
  import { NaturalPanelsComponent } from './panels.component';
6
6
  import { PanelsHooksConfig } from './types';
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
30
30
  exports: declarations,
31
31
  }]
32
32
  }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3BhbmVscy9wYW5lbHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMscUJBQXFCLElBQUksZUFBZSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDekYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBMkIsaUJBQWlCLEVBQUMsTUFBTSxTQUFTLENBQUM7O0FBRXBFLE1BQU0sWUFBWSxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQU85QyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBZ0M7UUFDbEQsT0FBTztZQUNILFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxLQUFLO2lCQUNsQjthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7O2dIQVhRLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQVBWLHNCQUFzQixhQUk5QixZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsYUFKbkMsc0JBQXNCO2lIQU8vQixtQkFBbUIsWUFIbEIsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlOzJGQUc1QyxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLFlBQVk7b0JBQzFCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxDQUFDO29CQUN0RCxPQUFPLEVBQUUsWUFBWTtpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRMZWdhY3lEaWFsb2dNb2R1bGUgYXMgTWF0RGlhbG9nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtOYXR1cmFsUGFuZWxzQ29tcG9uZW50fSBmcm9tICcuL3BhbmVscy5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsUGFuZWxzSG9va3NDb25maWcsIFBhbmVsc0hvb2tzQ29uZmlnfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgZGVjbGFyYXRpb25zID0gW05hdHVyYWxQYW5lbHNDb21wb25lbnRdO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogZGVjbGFyYXRpb25zLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlXSxcbiAgICBleHBvcnRzOiBkZWNsYXJhdGlvbnMsXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxQYW5lbHNNb2R1bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChob29rcz86IE5hdHVyYWxQYW5lbHNIb29rc0NvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TmF0dXJhbFBhbmVsc01vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE5hdHVyYWxQYW5lbHNNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IFBhbmVsc0hvb2tzQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogaG9va3MsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3BhbmVscy9wYW5lbHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBMkIsaUJBQWlCLEVBQUMsTUFBTSxTQUFTLENBQUM7O0FBRXBFLE1BQU0sWUFBWSxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQU85QyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBZ0M7UUFDbEQsT0FBTztZQUNILFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxLQUFLO2lCQUNsQjthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7O2dIQVhRLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQVBWLHNCQUFzQixhQUk5QixZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsYUFKbkMsc0JBQXNCO2lIQU8vQixtQkFBbUIsWUFIbEIsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlOzJGQUc1QyxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLFlBQVk7b0JBQzFCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxDQUFDO29CQUN0RCxPQUFPLEVBQUUsWUFBWTtpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXREaWFsb2dNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge1JvdXRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TmF0dXJhbFBhbmVsc0NvbXBvbmVudH0gZnJvbSAnLi9wYW5lbHMuY29tcG9uZW50JztcbmltcG9ydCB7TmF0dXJhbFBhbmVsc0hvb2tzQ29uZmlnLCBQYW5lbHNIb29rc0NvbmZpZ30gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGRlY2xhcmF0aW9ucyA9IFtOYXR1cmFsUGFuZWxzQ29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IGRlY2xhcmF0aW9ucyxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIE1hdERpYWxvZ01vZHVsZV0sXG4gICAgZXhwb3J0czogZGVjbGFyYXRpb25zLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsUGFuZWxzTW9kdWxlIHtcbiAgICBwdWJsaWMgc3RhdGljIGZvclJvb3QoaG9va3M/OiBOYXR1cmFsUGFuZWxzSG9va3NDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5hdHVyYWxQYW5lbHNNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOYXR1cmFsUGFuZWxzTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBQYW5lbHNIb29rc0NvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGhvb2tzLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -7,7 +7,7 @@ import { getStackConfig } from './panels.urlmatcher';
7
7
  import { PanelsHooksConfig, } from './types';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/router";
10
- import * as i2 from "@angular/material/legacy-dialog";
10
+ import * as i2 from "@angular/material/dialog";
11
11
  import * as i3 from "@angular/flex-layout";
12
12
  function segmentsToString(segments) {
13
13
  return segments.map(s => s.toString()).join('/');
@@ -311,15 +311,15 @@ export class NaturalPanelsService {
311
311
  * And we cannot make it non-static, because `UrlMatcher` cannot be injected.
312
312
  */
313
313
  NaturalPanelsService._opened = false;
314
- NaturalPanelsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalPanelsService, deps: [{ token: i1.Router }, { token: i2.MatLegacyDialog }, { token: i0.Injector }, { token: PanelsHooksConfig }, { token: i3.MediaObserver }], target: i0.ɵɵFactoryTarget.Injectable });
314
+ NaturalPanelsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalPanelsService, deps: [{ token: i1.Router }, { token: i2.MatDialog }, { token: i0.Injector }, { token: PanelsHooksConfig }, { token: i3.MediaObserver }], target: i0.ɵɵFactoryTarget.Injectable });
315
315
  NaturalPanelsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalPanelsService, providedIn: 'root' });
316
316
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalPanelsService, decorators: [{
317
317
  type: Injectable,
318
318
  args: [{
319
319
  providedIn: 'root',
320
320
  }]
321
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.MatLegacyDialog }, { type: i0.Injector }, { type: undefined, decorators: [{
321
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.MatDialog }, { type: i0.Injector }, { type: undefined, decorators: [{
322
322
  type: Inject,
323
323
  args: [PanelsHooksConfig]
324
324
  }] }, { type: i3.MediaObserver }]; } });
325
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9wYW5lbHMvcGFuZWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVcsTUFBTSxlQUFlLENBQUM7QUFHM0QsT0FBTyxFQUFpQixvQkFBb0IsRUFBRSxlQUFlLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFDMUcsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFNSCxpQkFBaUIsR0FDcEIsTUFBTSxTQUFTLENBQUM7Ozs7O0FBRWpCLFNBQVMsZ0JBQWdCLENBQUMsUUFBc0I7SUFDNUMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxDQUFxQixFQUFFLENBQXFCO0lBQ2hFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3RixDQUFDO0FBRUQ7OztH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fSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01lZGlhT2JzZXJ2ZXJ9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7TWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZywgTWF0TGVnYWN5RGlhbG9nQ29uZmlnIGFzIE1hdERpYWxvZ0NvbmZpZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBEZWZhdWx0VXJsU2VyaWFsaXplciwgTmF2aWdhdGlvbkVycm9yLCBSb3V0ZXIsIFVybFNlZ21lbnR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2RpZmZlcmVuY2VXaXRoLCBmbGF0dGVuLCBpc0VxdWFsfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RQYW5lbH0gZnJvbSAnLi9hYnN0cmFjdC1wYW5lbCc7XG5pbXBvcnQge2dldFN0YWNrQ29uZmlnfSBmcm9tICcuL3BhbmVscy51cmxtYXRjaGVyJztcbmltcG9ydCB7XG4gICAgTmF0dXJhbFBhbmVsQ29uZmlnLFxuICAgIE5hdHVyYWxQYW5lbERhdGEsXG4gICAgTmF0dXJhbFBhbmVsc0JlZm9yZU9wZW5QYW5lbCxcbiAgICBOYXR1cmFsUGFuZWxzSG9va3NDb25maWcsXG4gICAgTmF0dXJhbFBhbmVsc1JvdXRlclJ1bGUsXG4gICAgUGFuZWxzSG9va3NDb25maWcsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBzZWdtZW50c1RvU3RyaW5nKHNlZ21lbnRzOiBVcmxTZWdtZW50W10pOiBzdHJpbmcge1xuICAgIHJldHVybiBzZWdtZW50cy5tYXAocyA9PiBzLnRvU3RyaW5nKCkpLmpvaW4oJy8nKTtcbn1cblxuZnVuY3Rpb24gY29tcGFyZUNvbmZpZ3MoYTogTmF0dXJhbFBhbmVsQ29uZmlnLCBiOiBOYXR1cmFsUGFuZWxDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYS5yb3V0ZS5wYXRoID09PSBiLnJvdXRlLnBhdGggJiYgYS5ydWxlID09PSBiLnJ1bGUgJiYgaXNFcXVhbChhLnBhcmFtcywgYi5wYXJhbXMpO1xufVxuXG4vKipcbiAqIFRPRE86IGltcGxlbWVudCByb3V0ZSB1cGRhdGUgd2hlbiBjbG9zaW5nIGRpYWxvZyB3aXRoIGVzY2FwZVxuICogQGR5bmFtaWNcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFBhbmVsc1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEJlY2F1c2Ugb2YgdGhpcyBzdGF0aWMgcHJvcGVydHkgUGFuZWxzIGFyZSAqKm5vdCoqIGNvbXBhdGlibGUgd2l0aCBTU1IuXG4gICAgICogQW5kIHdlIGNhbm5vdCBtYWtlIGl0IG5vbi1zdGF0aWMsIGJlY2F1c2UgYFVybE1hdGNoZXJgIGNhbm5vdCBiZSBpbmplY3RlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBfb3BlbmVkID0gZmFsc2U7XG4gICAgcHVibGljIHN0YXRpYyBnZXQgb3BlbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3BlbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gYWxsIG9wZW4gZGlhbG9nIGhhdmUgZmluaXNoZWQgY2xvc2luZ1xuICAgICAqL1xuICAgIHB1YmxpYyBhZnRlckFsbENsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FjaGUgZm9yIHBhbmVscyBjb3VudGVyLiBXb3JrcyBtb3JlIGxpa2UgYW4gSUQuXG4gICAgICogSXMgdXNlZCB0byBnaXZlIGFuIHVuaXF1ZSBpZGVudGlmaWVyIHRvIG11bHRpcGxlIHNpbWlsYXIgcGFuZWxzIGNvbmZpZ3VyYXRpb25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb3VudGVyID0gMTtcbiAgICAvKipcbiAgICAgKiBDbGFzcyBhcHBsaWVkIHRvIGRpYWxvZyBvdmVybGF5IHJlbGF0ZWQgd2l0aCBwYW5lbHNcbiAgICAgKiBJZiBjaGFuZ2UsIGNoYW5nZSBDU1MgdG9vXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYW5lbENsYXNzID0gJ3BhbmVsJztcblxuICAgIC8qKlxuICAgICAqIENhY2hlIGZvciBwYW5lbHMgc2V0dXAgYmVmb3JlIG5hdmlnYXRpb24gY2hhbmdlLlxuICAgICAqIFVzZWQgdG8gZGV0ZWN0IHBhbmVscyBvcGVuaW5ncy9jbG9zaW5ncyBhbmQgYWRhcHQgZm9yIG5ldyBjb25maWd1cmF0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbGRGdWxsQ29uZmlnOiBOYXR1cmFsUGFuZWxDb25maWdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQ2FjaGUgZm9yIHN1YnNjcmlwdGlvbiBzdG9wXG4gICAgICovXG4gICAgcHJpdmF0ZSByb3V0ZVN1Yj86IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIENhY2hlIGZvciBzdWJzY3JpcHRpb24gc3RvcFxuICAgICAqL1xuICAgIHByaXZhdGUgbmF2U3ViPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqXG4gICAgICogSG9yaXpvbnRhbCBnYXBzIGJldHdlZW4gcGFuZWxzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYW5lbHNPZmZzZXRIID0gMzU7XG5cbiAgICAvKipcbiAgICAgKiBWZXJ0aWNhbCBnYXBzIGJldHdlZW4gcGFuZWxzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYW5lbHNPZmZzZXRWID0gNDA7XG5cbiAgICAvKipcbiAgICAgKiBDYWNoZSBvZiBwcmV2aW91cyBzY3JlZW4gc2l6ZVxuICAgICAqIFVzZWQgdG8gY2hhbmdlIHBhbmVscyBzdGFjayBvcmllbnRhdGlvbiBvbiBzbWFsbCBzY3JlZW5zXG4gICAgICovXG4gICAgcHJpdmF0ZSBtZWRpYTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFBhbmVsc0hvb2tzQ29uZmlnKSBwcml2YXRlIGhvb2tzQ29uZmlnOiBOYXR1cmFsUGFuZWxzSG9va3NDb25maWcsXG4gICAgICAgIHByaXZhdGUgbWVkaWFTZXJ2aWNlOiBNZWRpYU9ic2VydmVyLFxuICAgICkge1xuICAgICAgICAvLyBXYXRjaCBtZWRpYSB0byBrbm93IGlmIGRpc3BsYXkgcGFuZWxzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5XG4gICAgICAgIHRoaXMubWVkaWFTZXJ2aWNlLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShtZWRpYXMgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtZWRpYSBvZiBtZWRpYXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWRpYSA9IG1lZGlhLm1xQWxpYXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1lZGlhICE9PSBtZWRpYS5tcUFsaWFzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVkaWEgPSBtZWRpYS5tcUFsaWFzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudHNQb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgICAgICBOYXR1cmFsUGFuZWxzU2VydmljZS5fb3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yb3V0ZVN1YiA9IHJvdXRlLnVybC5zdWJzY3JpYmUoc2VnbWVudHMgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQYW5lbHMoc2VnbWVudHMsIHJvdXRlLnNuYXBzaG90LmRhdGEucGFuZWxzUm91dGVzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uYXZTdWIgPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ID0+IHtcbiAgICAgICAgICAgIGlmICghKGV2IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWJvcnQgYW5kIHByb3BhZ2F0ZSBuYXZpZ2F0aW9uIGVycm9yXG4gICAgICAgICAgICBpZiAoZXYudXJsLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcblxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBiaXQgaGFja2lzaDogd2UgaGFyZGNvZGUgYW4gaW1wb3NzaWJsZSB1cmwgdG8gdHJpZ2dlciBub3JtYWwgbmF2aWdhdGlvbiBlcnJvciBtZWNoYW5pc21cbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwYW5lbHMtcmVhY2hlZC1pbnZhbGlkLXVybCcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNvdW50ZXIrKztcblxuICAgICAgICAgICAgLy8gcGMgc3RhbmRzIGZvciBcInBhbmVsIGNvdW50ZXJcIiwgcmVxdWlyZWQgdG8gZ2l2ZSBhbiBpZGVudGlmaWNhdGlvbiB0byBwYW5lbHMgd2l0aCBleGFjdCBzYW1lIGNvbmZpZ1xuICAgICAgICAgICAgLy8gRS5nIC9uZXdcbiAgICAgICAgICAgIGNvbnN0IHdhbnRlZFVybCA9IGV2LnVybCArICc7cGM9JyArIHRoaXMuY291bnRlcjtcblxuICAgICAgICAgICAgLy8gU2VnbWVudHMgbWF0Y2hpbmcgZnJvbSB3YW50ZWQgdXJsLiBFLmcgfiBbJ25ldyddXG4gICAgICAgICAgICBjb25zdCB3YW50ZWRVclNlZ21lbnRzID0gbmV3IERlZmF1bHRVcmxTZXJpYWxpemVyKCkucGFyc2Uod2FudGVkVXJsKS5yb290LmNoaWxkcmVuLnByaW1hcnkuc2VnbWVudHM7XG5cbiAgICAgICAgICAgIC8vIERvbid0IG1hdGNoIGFueSBjb25maWdcbiAgICAgICAgICAgIGNvbnN0IHdhbnRlZENvbmZpZyA9IGdldFN0YWNrQ29uZmlnKHdhbnRlZFVyU2VnbWVudHMsIHJvdXRlLnNuYXBzaG90LmRhdGEucGFuZWxzUm91dGVzLCB0aGlzLmluamVjdG9yKTtcblxuICAgICAgICAgICAgaWYgKHdhbnRlZENvbmZpZy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRDb25maWdUb0N1cnJlbnRVcmwod2FudGVkQ29uZmlnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ3VycmVudGx5IGFjdGl2YXRlZCByb3V0ZXMuIEUuZyBbJ29iamVjdGl2ZScsICdvYmplY3RpdmUnLCAxMjMsICdyaXNrJ11cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWdtZW50cyA9IGZsYXR0ZW4oXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubWFwKGQgPT4gZC5jb21wb25lbnRJbnN0YW5jZS5wYW5lbERhdGEuY29uZmlnLnJvdXRlLnNlZ21lbnRzKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIExhc3Qgc2VnbWVudC4gRS5nIFsncmlzayddXG4gICAgICAgICAgICBjb25zdCBsYXN0T2ZDdXJyZW50U2VnbWVudHMgPSBjdXJyZW50U2VnbWVudHMuc2xpY2UoLTEpO1xuXG4gICAgICAgICAgICAvLyBDb25maWcgZm9yIFsncmlzaycsICduZXcnXVxuICAgICAgICAgICAgY29uc3QgY3VycmVudEFuZFdhbnRlZENvbmZpZyA9IGdldFN0YWNrQ29uZmlnKFxuICAgICAgICAgICAgICAgIGxhc3RPZkN1cnJlbnRTZWdtZW50cy5jb25jYXQod2FudGVkVXJTZWdtZW50cyksXG4gICAgICAgICAgICAgICAgcm91dGUuc25hcHNob3QuZGF0YS5wYW5lbHNSb3V0ZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGVuZENvbmZpZ1RvQ3VycmVudFVybChjdXJyZW50QW5kV2FudGVkQ29uZmlnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlcyBnaXZlbiBjb25maWd1cmF0aW9uIHRvIGFkZCBpbiB0aGUgZW5kIG9mIGN1cnJlbnQgdXJsXG4gICAgICogTmV1dHJhbGl6ZXMgcm91dGVyIGVycm9yIGhhbmRsaW5nXG4gICAgICovXG4gICAgcHJpdmF0ZSBhcHBlbmRDb25maWdUb0N1cnJlbnRVcmwoY29uZmlnOiBOYXR1cmFsUGFuZWxDb25maWdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVycm9ySGFuZGxlciA9IHRoaXMucm91dGVyLmVycm9ySGFuZGxlcjtcblxuICAgICAgICAvLyBOdWxsaWZ5IGVycm9yIGhhbmRsZXIgKHdpbGwgYmUgZGUtbmV1dHJhbGl6ZWQgYWZ0ZXIgcm91dGUgcmVkaXJlY3Rpb24pXG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLmVycm9ySGFuZGxlciA9ICgpID0+IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5hdmlnYXRlIHRvIHNhbWUgdXJsICsgL3Jpc2svbmV3IFJlc3VsdCA6IC9yaXNrL3Jpc2svbmV3XG4gICAgICAgIGNvbnN0IG5ld1VybCA9IGNvbmZpZy5tYXAoY29uZiA9PiBzZWdtZW50c1RvU3RyaW5nKGNvbmYucm91dGUuc2VnbWVudHMpKS5qb2luKCcvJyk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlci51cmwgKyAnLycgKyBuZXdVcmwpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy8gQWZ0ZXIgbmF2aWdhdGlvbiBoYXMgZW5kZWQsIHJlc3RvcmUgb3JpZ2luYWwgZXJyb3IgaGFuZGxlciBiZWNhdXNlIGhlJ3Mgbm90IGEgYmFkIGd1eVxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZXJyb3JIYW5kbGVyID0gb3JpZ2luYWxFcnJvckhhbmRsZXI7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdG9wKCk6IHZvaWQge1xuICAgICAgICBOYXR1cmFsUGFuZWxzU2VydmljZS5fb3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucm91dGVTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubmF2U3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICAgICAgICB0aGlzLm9sZEZ1bGxDb25maWcgPSBbXTtcbiAgICAgICAgdGhpcy5hZnRlckFsbENsb3NlZC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR28gdG8gcGFuZWwgbWF0Y2hpbmcgZ2l2ZW4gY29tcG9uZW50LiBDYXVzZXMgYW4gdXJsIGNoYW5nZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ29Ub1BhbmVsQnlDb21wb25lbnQoY29tcG9uZW50OiBOYXR1cmFsQWJzdHJhY3RQYW5lbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYW5lbEJ5SW5kZXgodGhpcy5nZXRQYW5lbEluZGV4KGNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdvIHRvIHBhbmVsIG1hdGNoaW5nIGdpdmVuIGNvbXBvbmVudC4gQ2F1c2VzIGFuIHVybCBjaGFuZ2UuXG4gICAgICovXG4gICAgcHVibGljIGdvVG9QZW51bHRpbWF0ZVBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYW5lbEJ5SW5kZXgodGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoIC0gMik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbHMgdGhlIG5ldyB1cmwgdGhhdCBvbmx5IGluY2x1ZGVzIHRoZSBzZWdtZW50cyBmcm9tIHRoZSBwYW5lbHMgd2Ugd2FudCB0byBzdGF5IG9wZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdvVG9QYW5lbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBFeHRyYWN0cyB1cmwgc2VnbWVudHMgZnJvbSBuZXh0IHBhbmVsIHVudGlsIGxhc3Qgb25lXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzXG4gICAgICAgICAgICAuc2xpY2UoaW5kZXggKyAxKVxuICAgICAgICAgICAgLm1hcChkaWFsb2cgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWdtZW50c1RvU3RyaW5nKGRpYWxvZy5jb21wb25lbnRJbnN0YW5jZS5wYW5lbERhdGEuY29uZmlnLnJvdXRlLnNlZ21lbnRzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignLycpO1xuXG4gICAgICAgIC8vIFJlbW92ZSBleHRyYSBzZWdtZW50cyBhbmQgcmVkaXJlY3RzIHRvIHJvb3RcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlci51cmwucmVwbGFjZSgnLycgKyB1cmwsICcnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0aW5nIGEgcGFuZWwgaXMgZXF1aXZhbGVudCB0byBjbG9zZSBhbGwgdGhvc2UgdGhhdCBhcmUgaW4gZnJvbnQgb2YgaGltXG4gICAgICogQHBhcmFtIGluZGV4IG9mIHBhbmVsIGluIHN0YWNrLiBUaGUgbW9zdCBiZWhpbmQgKHRoZSBmaXJzdCBvbmUpIGlzIDAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZWxlY3RQYW5lbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBsYXN0RGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NbdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgLy8gVXBkYXRlIG5ldyBwYW5lbHMgc2V0IHBvc2l0aW9uc1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudHNQb3NpdGlvbigpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGggLSAxOyBpID49IGluZGV4ICsgMTsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nc1tpXS5jbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxhc3REaWFsb2cuYWZ0ZXJDbG9zZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVuIG5ldyBwYW5lbHMgaWYgdXJsIGhhcyBjaGFuZ2VkIHdpdGggbmV3IHNlZ21lbnRzXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVQYW5lbHMoc2VnbWVudHM6IFVybFNlZ21lbnRbXSwgcm91dGVzOiBOYXR1cmFsUGFuZWxzUm91dGVyUnVsZVtdKTogdm9pZCB7XG4gICAgICAgIC8vIFRyYW5zZm9ybSB1cmwgc2VnbWVudHMgaW50byBhIGNvbmZpZyB3aXRoIGNvbXBvbmVudCBuYW1lIGFuZCBJRCBpZiBwcm92aWRlZCBpbiBuZXh0IHNlZ21lbnRcbiAgICAgICAgLy8gUmV0dXJucyBhbiBhcnJheSBvZiBjb25maWdzLCBlYWNoIGNvbmZpZyByZXByZXNlbnRzIHRoZSBjb250ZW50IHJlbGF0aXZlIHRvIGEgcGFuZWxcbiAgICAgICAgY29uc3QgbmV3RnVsbENvbmZpZyA9IGdldFN0YWNrQ29uZmlnKHNlZ21lbnRzLCByb3V0ZXMsIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb25maWdzVG9SZW1vdmUgPSBkaWZmZXJlbmNlV2l0aCh0aGlzLm9sZEZ1bGxDb25maWcsIG5ld0Z1bGxDb25maWcsIGNvbXBhcmVDb25maWdzKTtcbiAgICAgICAgY29uc3QgY29uZmlnc1RvQWRkID0gZGlmZmVyZW5jZVdpdGgobmV3RnVsbENvbmZpZywgdGhpcy5vbGRGdWxsQ29uZmlnLCBjb21wYXJlQ29uZmlncyk7XG5cbiAgICAgICAgY29uc3QgaW5kZXhPZk5leHRQYW5lbCA9IHRoaXMub2xkRnVsbENvbmZpZy5sZW5ndGggLSBjb25maWdzVG9SZW1vdmUubGVuZ3RoIC0gMTtcblxuICAgICAgICBpZiAoY29uZmlnc1RvUmVtb3ZlLmxlbmd0aCAmJiBjb25maWdzVG9BZGQubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBBZGQgYW5kIHJlbW92ZSBwYW5lbHNcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UGFuZWxCeUluZGV4KGluZGV4T2ZOZXh0UGFuZWwpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUGFuZWxzKGNvbmZpZ3NUb0FkZCwgbmV3RnVsbENvbmZpZykuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQ29tcG9uZW50c1Bvc2l0aW9uKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uZmlnc1RvUmVtb3ZlLmxlbmd0aCAmJiAhY29uZmlnc1RvQWRkLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gb25seSByZW1vdmUgcGFuZWxzXG4gICAgICAgICAgICB0aGlzLnNlbGVjdFBhbmVsQnlJbmRleChpbmRleE9mTmV4dFBhbmVsKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWNvbmZpZ3NUb1JlbW92ZS5sZW5ndGggJiYgY29uZmlnc1RvQWRkLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gb25seSBhZGQgcGFuZWxzXG4gICAgICAgICAgICB0aGlzLm9wZW5QYW5lbHMoY29uZmlnc1RvQWRkLCBuZXdGdWxsQ29uZmlnKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9sZEZ1bGxDb25maWcgPSBuZXdGdWxsQ29uZmlnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc29sdmUgYWxsIHNlcnZpY2VzLCB0aGVuIG9wZW4gcGFuZWxzXG4gICAgICovXG4gICAgcHJpdmF0ZSBvcGVuUGFuZWxzKFxuICAgICAgICBuZXdJdGVtc0NvbmZpZzogTmF0dXJhbFBhbmVsQ29uZmlnW10sXG4gICAgICAgIGZ1bGxDb25maWc6IE5hdHVyYWxQYW5lbENvbmZpZ1tdLFxuICAgICk6IE9ic2VydmFibGU8T2JzZXJ2YWJsZTxhbnk+IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8T2JzZXJ2YWJsZTxhbnk+IHwgbnVsbD4oKTtcblxuICAgICAgICAvLyBSZXNvbHZlIGV2ZXJ5dGhpbmcgYmVmb3JlIG9wZW5pbmcgYSBzaW5nbGUgcGFuZWxcbiAgICAgICAgY29uc3QgcmVzb2x2ZXMgPSBuZXdJdGVtc0NvbmZpZy5tYXAoKGNvbmY6IE5hdHVyYWxQYW5lbENvbmZpZykgPT4gdGhpcy5nZXRSZXNvbHZlZERhdGEoY29uZikpO1xuXG4gICAgICAgIC8vIEZvcmtKb2luIGVtaXRzIHdoZW4gYWxsIHByb21pc2VzIGFyZSBleGVjdXRlZDtcbiAgICAgICAgZm9ya0pvaW4ocmVzb2x2ZXMpLnN1YnNjcmliZShyZXNvbHZlZFJlc3VsdCA9PiB7XG4gICAgICAgICAgICAvLyBGb3IgZWFjaCBuZXcgY29uZmlnIGVudHJ5LCBvcGVuIGEgbmV3IHBhbmVsXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0l0ZW1zQ29uZmlnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gbmV3SXRlbXNDb25maWdbaV07XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1EYXRhOiBOYXR1cmFsUGFuZWxEYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb25maWcgb2YgYWN0dWFsIHBhbmVsIHJvdXRlXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZzogY29uZmlnLFxuXG4gICAgICAgICAgICAgICAgICAgIC8vIERhdGEgcmVzb2x2ZWQgYnkgc2VydmljZVxuICAgICAgICAgICAgICAgICAgICAvLyBVc2UgaW4gY29tcG9uZW50IGJ5IGNhbGxpbmcgdGhpcy5wYW5lbERhdGEuZGF0YS54eXpcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcmVzb2x2ZWRSZXN1bHRbaV0sXG4gICAgICAgICAgICAgICAgICAgIGxpbmthYmxlT2JqZWN0czogW10sXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhvb2tzQ29uZmlnICYmIHRoaXMuaG9va3NDb25maWcuYmVmb3JlT3BlblBhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50OiBOYXR1cmFsUGFuZWxzQmVmb3JlT3BlblBhbmVsID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbURhdGE6IGl0ZW1EYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxDb25maWc6IGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkUmVzdWx0OiByZXNvbHZlZFJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxQYW5lbHNDb25maWc6IGZ1bGxDb25maWcsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaXRlbURhdGEgPSB0aGlzLmhvb2tzQ29uZmlnLmJlZm9yZU9wZW5QYW5lbCh0aGlzLmluamVjdG9yLCBldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUGFuZWwoY29uZmlnLmNvbXBvbmVudCwgaXRlbURhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nc1t0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGggLSAxXS5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdWJqZWN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmVzb2x2ZWREYXRhKGNvbmZpZzogTmF0dXJhbFBhbmVsQ29uZmlnKTogT2JzZXJ2YWJsZTx7W2tleTogc3RyaW5nXTogdW5rbm93bn0+IHtcbiAgICAgICAgaWYgKCFjb25maWcucmVzb2x2ZSB8fCAoY29uZmlnLnJlc29sdmUgJiYgT2JqZWN0LmtleXMoY29uZmlnLnJlc29sdmUpLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNvbHZlS2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZy5yZXNvbHZlKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWREYXRhOiB7W2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTx1bmtub3duPn0gPSB7fTtcbiAgICAgICAgcmVzb2x2ZUtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZWREYXRhW2tleV0gPSBjb25maWcucmVzb2x2ZVtrZXldLnJlc29sdmUoY29uZmlnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKHJlc29sdmVkRGF0YSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAocmVzdWx0IGFzIGFueSkubW9kZWwgfHwgcmVzdWx0O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuUGFuZWwoY29tcG9uZW50T3JUZW1wbGF0ZVJlZjogQ29tcG9uZW50VHlwZTxOYXR1cmFsQWJzdHJhY3RQYW5lbD4sIGRhdGE6IE5hdHVyYWxQYW5lbERhdGEpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZjogTWF0RGlhbG9nQ29uZmlnID0ge1xuICAgICAgICAgICAgcGFuZWxDbGFzczogdGhpcy5wYW5lbENsYXNzLFxuICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgd2lkdGg6ICc5NjBweCcsXG4gICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgIHRvcDogJzAnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW48TmF0dXJhbEFic3RyYWN0UGFuZWw+KGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsIGNvbmYpO1xuXG4gICAgICAgIC8vIFBhbmVsaXNhYmxlIGludGVyZmFjZSBhdHRyaWJ1dGVzL2Z1bmN0aW9uc1xuICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuaW5pdFBhbmVsKGRhdGEpO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldFBhbmVsSW5kZXgoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgICAgICAgIHRoaXMuZ29Ub1BhbmVsQnlJbmRleChpbmRleCAtIDEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gcGFuZWwgcG9zaXRpb24gKGluZGV4KSBieSBzZWFyY2hpbmcgbWF0Y2hpbmcgY29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQYW5lbEluZGV4KGNvbXBvbmVudDogTmF0dXJhbEFic3RyYWN0UGFuZWwpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmZpbmRJbmRleChkaWFsb2cgPT4gZGlhbG9nLmNvbXBvbmVudEluc3RhbmNlID09PSBjb21wb25lbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcG9zaXRpb25zIHBhbmVscyBmcm9tIHN0YXJ0IHVudGlsIGdpdmVuIGluZGV4XG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIHBhbmVscyB0aGF0IGFyZSBzdGlsbCBvcGVuZWQsIGlnbm9yZSB0aGUgb3RoZXJzIGJlY2F1c2UgdGhleSdsbCBiZSBjbG9zZWRcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRFbGVtZW50cyA9IHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWZmZWN0ZWRFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nID0gYWZmZWN0ZWRFbGVtZW50c1tpXTtcblxuICAgICAgICAgICAgLy8gU2V0IGFsbCBwYW5lbHMgYXMgXCJoaWRkZW5cIiBleGNlcHQgbGFzdCBvbmUuIElzRnJvbnRQYW5lbCBhdHRyaWJ1dGUgY2F1c2VzIGEgQ1NTIHRoYXQgaGlkZXMgYm9keSB2aWEgaG9zdGJpbmRpbmdcbiAgICAgICAgICAgIGRpYWxvZy5jb21wb25lbnRJbnN0YW5jZS5pc0Zyb250UGFuZWwgPSBpID09PSBhZmZlY3RlZEVsZW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBkaWFsb2cuY29tcG9uZW50SW5zdGFuY2UucGFuZWxTZXJ2aWNlID0gdGhpcztcblxuICAgICAgICAgICAgLy8gQXNzaWduIG9mZnNldFxuICAgICAgICAgICAgY29uc3QgZGVlcCA9IGFmZmVjdGVkRWxlbWVudHMubGVuZ3RoIC0gMSAtIGk7XG5cbiAgICAgICAgICAgIGxldCBwb3NpdGlvbjogYW55ID0ge3JpZ2h0OiBkZWVwICogdGhpcy5wYW5lbHNPZmZzZXRIICsgJ3B4J307XG4gICAgICAgICAgICBpZiAodGhpcy5tZWRpYSA9PT0gJ3hzJyAmJiBhZmZlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBpICogdGhpcy5wYW5lbHNPZmZzZXRWICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICcwcHgnLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRpYWxvZy51cGRhdGVQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9wYW5lbHMvcGFuZWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVcsTUFBTSxlQUFlLENBQUM7QUFHM0QsT0FBTyxFQUFpQixvQkFBb0IsRUFBRSxlQUFlLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFDMUcsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFNSCxpQkFBaUIsR0FDcEIsTUFBTSxTQUFTLENBQUM7Ozs7O0FBRWpCLFNBQVMsZ0JBQWdCLENBQUMsUUFBc0I7SUFDNUMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxDQUFxQixFQUFFLENBQXFCO0lBQ2hFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3RixDQUFDO0FBRUQ7OztH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fSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01lZGlhT2JzZXJ2ZXJ9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7TWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWd9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBEZWZhdWx0VXJsU2VyaWFsaXplciwgTmF2aWdhdGlvbkVycm9yLCBSb3V0ZXIsIFVybFNlZ21lbnR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2RpZmZlcmVuY2VXaXRoLCBmbGF0dGVuLCBpc0VxdWFsfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RQYW5lbH0gZnJvbSAnLi9hYnN0cmFjdC1wYW5lbCc7XG5pbXBvcnQge2dldFN0YWNrQ29uZmlnfSBmcm9tICcuL3BhbmVscy51cmxtYXRjaGVyJztcbmltcG9ydCB7XG4gICAgTmF0dXJhbFBhbmVsQ29uZmlnLFxuICAgIE5hdHVyYWxQYW5lbERhdGEsXG4gICAgTmF0dXJhbFBhbmVsc0JlZm9yZU9wZW5QYW5lbCxcbiAgICBOYXR1cmFsUGFuZWxzSG9va3NDb25maWcsXG4gICAgTmF0dXJhbFBhbmVsc1JvdXRlclJ1bGUsXG4gICAgUGFuZWxzSG9va3NDb25maWcsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBzZWdtZW50c1RvU3RyaW5nKHNlZ21lbnRzOiBVcmxTZWdtZW50W10pOiBzdHJpbmcge1xuICAgIHJldHVybiBzZWdtZW50cy5tYXAocyA9PiBzLnRvU3RyaW5nKCkpLmpvaW4oJy8nKTtcbn1cblxuZnVuY3Rpb24gY29tcGFyZUNvbmZpZ3MoYTogTmF0dXJhbFBhbmVsQ29uZmlnLCBiOiBOYXR1cmFsUGFuZWxDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYS5yb3V0ZS5wYXRoID09PSBiLnJvdXRlLnBhdGggJiYgYS5ydWxlID09PSBiLnJ1bGUgJiYgaXNFcXVhbChhLnBhcmFtcywgYi5wYXJhbXMpO1xufVxuXG4vKipcbiAqIFRPRE86IGltcGxlbWVudCByb3V0ZSB1cGRhdGUgd2hlbiBjbG9zaW5nIGRpYWxvZyB3aXRoIGVzY2FwZVxuICogQGR5bmFtaWNcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFBhbmVsc1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEJlY2F1c2Ugb2YgdGhpcyBzdGF0aWMgcHJvcGVydHkgUGFuZWxzIGFyZSAqKm5vdCoqIGNvbXBhdGlibGUgd2l0aCBTU1IuXG4gICAgICogQW5kIHdlIGNhbm5vdCBtYWtlIGl0IG5vbi1zdGF0aWMsIGJlY2F1c2UgYFVybE1hdGNoZXJgIGNhbm5vdCBiZSBpbmplY3RlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBfb3BlbmVkID0gZmFsc2U7XG4gICAgcHVibGljIHN0YXRpYyBnZXQgb3BlbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3BlbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gYWxsIG9wZW4gZGlhbG9nIGhhdmUgZmluaXNoZWQgY2xvc2luZ1xuICAgICAqL1xuICAgIHB1YmxpYyBhZnRlckFsbENsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FjaGUgZm9yIHBhbmVscyBjb3VudGVyLiBXb3JrcyBtb3JlIGxpa2UgYW4gSUQuXG4gICAgICogSXMgdXNlZCB0byBnaXZlIGFuIHVuaXF1ZSBpZGVudGlmaWVyIHRvIG11bHRpcGxlIHNpbWlsYXIgcGFuZWxzIGNvbmZpZ3VyYXRpb25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb3VudGVyID0gMTtcbiAgICAvKipcbiAgICAgKiBDbGFzcyBhcHBsaWVkIHRvIGRpYWxvZyBvdmVybGF5IHJlbGF0ZWQgd2l0aCBwYW5lbHNcbiAgICAgKiBJZiBjaGFuZ2UsIGNoYW5nZSBDU1MgdG9vXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYW5lbENsYXNzID0gJ3BhbmVsJztcblxuICAgIC8qKlxuICAgICAqIENhY2hlIGZvciBwYW5lbHMgc2V0dXAgYmVmb3JlIG5hdmlnYXRpb24gY2hhbmdlLlxuICAgICAqIFVzZWQgdG8gZGV0ZWN0IHBhbmVscyBvcGVuaW5ncy9jbG9zaW5ncyBhbmQgYWRhcHQgZm9yIG5ldyBjb25maWd1cmF0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbGRGdWxsQ29uZmlnOiBOYXR1cmFsUGFuZWxDb25maWdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQ2FjaGUgZm9yIHN1YnNjcmlwdGlvbiBzdG9wXG4gICAgICovXG4gICAgcHJpdmF0ZSByb3V0ZVN1Yj86IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIENhY2hlIGZvciBzdWJzY3JpcHRpb24gc3RvcFxuICAgICAqL1xuICAgIHByaXZhdGUgbmF2U3ViPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqXG4gICAgICogSG9yaXpvbnRhbCBnYXBzIGJldHdlZW4gcGFuZWxzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYW5lbHNPZmZzZXRIID0gMzU7XG5cbiAgICAvKipcbiAgICAgKiBWZXJ0aWNhbCBnYXBzIGJldHdlZW4gcGFuZWxzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYW5lbHNPZmZzZXRWID0gNDA7XG5cbiAgICAvKipcbiAgICAgKiBDYWNoZSBvZiBwcmV2aW91cyBzY3JlZW4gc2l6ZVxuICAgICAqIFVzZWQgdG8gY2hhbmdlIHBhbmVscyBzdGFjayBvcmllbnRhdGlvbiBvbiBzbWFsbCBzY3JlZW5zXG4gICAgICovXG4gICAgcHJpdmF0ZSBtZWRpYTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFBhbmVsc0hvb2tzQ29uZmlnKSBwcml2YXRlIGhvb2tzQ29uZmlnOiBOYXR1cmFsUGFuZWxzSG9va3NDb25maWcsXG4gICAgICAgIHByaXZhdGUgbWVkaWFTZXJ2aWNlOiBNZWRpYU9ic2VydmVyLFxuICAgICkge1xuICAgICAgICAvLyBXYXRjaCBtZWRpYSB0byBrbm93IGlmIGRpc3BsYXkgcGFuZWxzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5XG4gICAgICAgIHRoaXMubWVkaWFTZXJ2aWNlLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShtZWRpYXMgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtZWRpYSBvZiBtZWRpYXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWRpYSA9IG1lZGlhLm1xQWxpYXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1lZGlhICE9PSBtZWRpYS5tcUFsaWFzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVkaWEgPSBtZWRpYS5tcUFsaWFzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudHNQb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgICAgICBOYXR1cmFsUGFuZWxzU2VydmljZS5fb3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yb3V0ZVN1YiA9IHJvdXRlLnVybC5zdWJzY3JpYmUoc2VnbWVudHMgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQYW5lbHMoc2VnbWVudHMsIHJvdXRlLnNuYXBzaG90LmRhdGEucGFuZWxzUm91dGVzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uYXZTdWIgPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ID0+IHtcbiAgICAgICAgICAgIGlmICghKGV2IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWJvcnQgYW5kIHByb3BhZ2F0ZSBuYXZpZ2F0aW9uIGVycm9yXG4gICAgICAgICAgICBpZiAoZXYudXJsLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcblxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBiaXQgaGFja2lzaDogd2UgaGFyZGNvZGUgYW4gaW1wb3NzaWJsZSB1cmwgdG8gdHJpZ2dlciBub3JtYWwgbmF2aWdhdGlvbiBlcnJvciBtZWNoYW5pc21cbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwYW5lbHMtcmVhY2hlZC1pbnZhbGlkLXVybCcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNvdW50ZXIrKztcblxuICAgICAgICAgICAgLy8gcGMgc3RhbmRzIGZvciBcInBhbmVsIGNvdW50ZXJcIiwgcmVxdWlyZWQgdG8gZ2l2ZSBhbiBpZGVudGlmaWNhdGlvbiB0byBwYW5lbHMgd2l0aCBleGFjdCBzYW1lIGNvbmZpZ1xuICAgICAgICAgICAgLy8gRS5nIC9uZXdcbiAgICAgICAgICAgIGNvbnN0IHdhbnRlZFVybCA9IGV2LnVybCArICc7cGM9JyArIHRoaXMuY291bnRlcjtcblxuICAgICAgICAgICAgLy8gU2VnbWVudHMgbWF0Y2hpbmcgZnJvbSB3YW50ZWQgdXJsLiBFLmcgfiBbJ25ldyddXG4gICAgICAgICAgICBjb25zdCB3YW50ZWRVclNlZ21lbnRzID0gbmV3IERlZmF1bHRVcmxTZXJpYWxpemVyKCkucGFyc2Uod2FudGVkVXJsKS5yb290LmNoaWxkcmVuLnByaW1hcnkuc2VnbWVudHM7XG5cbiAgICAgICAgICAgIC8vIERvbid0IG1hdGNoIGFueSBjb25maWdcbiAgICAgICAgICAgIGNvbnN0IHdhbnRlZENvbmZpZyA9IGdldFN0YWNrQ29uZmlnKHdhbnRlZFVyU2VnbWVudHMsIHJvdXRlLnNuYXBzaG90LmRhdGEucGFuZWxzUm91dGVzLCB0aGlzLmluamVjdG9yKTtcblxuICAgICAgICAgICAgaWYgKHdhbnRlZENvbmZpZy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBlbmRDb25maWdUb0N1cnJlbnRVcmwod2FudGVkQ29uZmlnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ3VycmVudGx5IGFjdGl2YXRlZCByb3V0ZXMuIEUuZyBbJ29iamVjdGl2ZScsICdvYmplY3RpdmUnLCAxMjMsICdyaXNrJ11cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWdtZW50cyA9IGZsYXR0ZW4oXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubWFwKGQgPT4gZC5jb21wb25lbnRJbnN0YW5jZS5wYW5lbERhdGEuY29uZmlnLnJvdXRlLnNlZ21lbnRzKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIExhc3Qgc2VnbWVudC4gRS5nIFsncmlzayddXG4gICAgICAgICAgICBjb25zdCBsYXN0T2ZDdXJyZW50U2VnbWVudHMgPSBjdXJyZW50U2VnbWVudHMuc2xpY2UoLTEpO1xuXG4gICAgICAgICAgICAvLyBDb25maWcgZm9yIFsncmlzaycsICduZXcnXVxuICAgICAgICAgICAgY29uc3QgY3VycmVudEFuZFdhbnRlZENvbmZpZyA9IGdldFN0YWNrQ29uZmlnKFxuICAgICAgICAgICAgICAgIGxhc3RPZkN1cnJlbnRTZWdtZW50cy5jb25jYXQod2FudGVkVXJTZWdtZW50cyksXG4gICAgICAgICAgICAgICAgcm91dGUuc25hcHNob3QuZGF0YS5wYW5lbHNSb3V0ZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGVuZENvbmZpZ1RvQ3VycmVudFVybChjdXJyZW50QW5kV2FudGVkQ29uZmlnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlcyBnaXZlbiBjb25maWd1cmF0aW9uIHRvIGFkZCBpbiB0aGUgZW5kIG9mIGN1cnJlbnQgdXJsXG4gICAgICogTmV1dHJhbGl6ZXMgcm91dGVyIGVycm9yIGhhbmRsaW5nXG4gICAgICovXG4gICAgcHJpdmF0ZSBhcHBlbmRDb25maWdUb0N1cnJlbnRVcmwoY29uZmlnOiBOYXR1cmFsUGFuZWxDb25maWdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVycm9ySGFuZGxlciA9IHRoaXMucm91dGVyLmVycm9ySGFuZGxlcjtcblxuICAgICAgICAvLyBOdWxsaWZ5IGVycm9yIGhhbmRsZXIgKHdpbGwgYmUgZGUtbmV1dHJhbGl6ZWQgYWZ0ZXIgcm91dGUgcmVkaXJlY3Rpb24pXG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLmVycm9ySGFuZGxlciA9ICgpID0+IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5hdmlnYXRlIHRvIHNhbWUgdXJsICsgL3Jpc2svbmV3IFJlc3VsdCA6IC9yaXNrL3Jpc2svbmV3XG4gICAgICAgIGNvbnN0IG5ld1VybCA9IGNvbmZpZy5tYXAoY29uZiA9PiBzZWdtZW50c1RvU3RyaW5nKGNvbmYucm91dGUuc2VnbWVudHMpKS5qb2luKCcvJyk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlci51cmwgKyAnLycgKyBuZXdVcmwpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy8gQWZ0ZXIgbmF2aWdhdGlvbiBoYXMgZW5kZWQsIHJlc3RvcmUgb3JpZ2luYWwgZXJyb3IgaGFuZGxlciBiZWNhdXNlIGhlJ3Mgbm90IGEgYmFkIGd1eVxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZXJyb3JIYW5kbGVyID0gb3JpZ2luYWxFcnJvckhhbmRsZXI7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdG9wKCk6IHZvaWQge1xuICAgICAgICBOYXR1cmFsUGFuZWxzU2VydmljZS5fb3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucm91dGVTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubmF2U3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICAgICAgICB0aGlzLm9sZEZ1bGxDb25maWcgPSBbXTtcbiAgICAgICAgdGhpcy5hZnRlckFsbENsb3NlZC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR28gdG8gcGFuZWwgbWF0Y2hpbmcgZ2l2ZW4gY29tcG9uZW50LiBDYXVzZXMgYW4gdXJsIGNoYW5nZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ29Ub1BhbmVsQnlDb21wb25lbnQoY29tcG9uZW50OiBOYXR1cmFsQWJzdHJhY3RQYW5lbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYW5lbEJ5SW5kZXgodGhpcy5nZXRQYW5lbEluZGV4KGNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdvIHRvIHBhbmVsIG1hdGNoaW5nIGdpdmVuIGNvbXBvbmVudC4gQ2F1c2VzIGFuIHVybCBjaGFuZ2UuXG4gICAgICovXG4gICAgcHVibGljIGdvVG9QZW51bHRpbWF0ZVBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYW5lbEJ5SW5kZXgodGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoIC0gMik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbHMgdGhlIG5ldyB1cmwgdGhhdCBvbmx5IGluY2x1ZGVzIHRoZSBzZWdtZW50cyBmcm9tIHRoZSBwYW5lbHMgd2Ugd2FudCB0byBzdGF5IG9wZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdvVG9QYW5lbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBFeHRyYWN0cyB1cmwgc2VnbWVudHMgZnJvbSBuZXh0IHBhbmVsIHVudGlsIGxhc3Qgb25lXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzXG4gICAgICAgICAgICAuc2xpY2UoaW5kZXggKyAxKVxuICAgICAgICAgICAgLm1hcChkaWFsb2cgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWdtZW50c1RvU3RyaW5nKGRpYWxvZy5jb21wb25lbnRJbnN0YW5jZS5wYW5lbERhdGEuY29uZmlnLnJvdXRlLnNlZ21lbnRzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignLycpO1xuXG4gICAgICAgIC8vIFJlbW92ZSBleHRyYSBzZWdtZW50cyBhbmQgcmVkaXJlY3RzIHRvIHJvb3RcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlci51cmwucmVwbGFjZSgnLycgKyB1cmwsICcnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0aW5nIGEgcGFuZWwgaXMgZXF1aXZhbGVudCB0byBjbG9zZSBhbGwgdGhvc2UgdGhhdCBhcmUgaW4gZnJvbnQgb2YgaGltXG4gICAgICogQHBhcmFtIGluZGV4IG9mIHBhbmVsIGluIHN0YWNrLiBUaGUgbW9zdCBiZWhpbmQgKHRoZSBmaXJzdCBvbmUpIGlzIDAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZWxlY3RQYW5lbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBsYXN0RGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NbdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgLy8gVXBkYXRlIG5ldyBwYW5lbHMgc2V0IHBvc2l0aW9uc1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudHNQb3NpdGlvbigpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGggLSAxOyBpID49IGluZGV4ICsgMTsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nc1tpXS5jbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxhc3REaWFsb2cuYWZ0ZXJDbG9zZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVuIG5ldyBwYW5lbHMgaWYgdXJsIGhhcyBjaGFuZ2VkIHdpdGggbmV3IHNlZ21lbnRzXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVQYW5lbHMoc2VnbWVudHM6IFVybFNlZ21lbnRbXSwgcm91dGVzOiBOYXR1cmFsUGFuZWxzUm91dGVyUnVsZVtdKTogdm9pZCB7XG4gICAgICAgIC8vIFRyYW5zZm9ybSB1cmwgc2VnbWVudHMgaW50byBhIGNvbmZpZyB3aXRoIGNvbXBvbmVudCBuYW1lIGFuZCBJRCBpZiBwcm92aWRlZCBpbiBuZXh0IHNlZ21lbnRcbiAgICAgICAgLy8gUmV0dXJucyBhbiBhcnJheSBvZiBjb25maWdzLCBlYWNoIGNvbmZpZyByZXByZXNlbnRzIHRoZSBjb250ZW50IHJlbGF0aXZlIHRvIGEgcGFuZWxcbiAgICAgICAgY29uc3QgbmV3RnVsbENvbmZpZyA9IGdldFN0YWNrQ29uZmlnKHNlZ21lbnRzLCByb3V0ZXMsIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb25maWdzVG9SZW1vdmUgPSBkaWZmZXJlbmNlV2l0aCh0aGlzLm9sZEZ1bGxDb25maWcsIG5ld0Z1bGxDb25maWcsIGNvbXBhcmVDb25maWdzKTtcbiAgICAgICAgY29uc3QgY29uZmlnc1RvQWRkID0gZGlmZmVyZW5jZVdpdGgobmV3RnVsbENvbmZpZywgdGhpcy5vbGRGdWxsQ29uZmlnLCBjb21wYXJlQ29uZmlncyk7XG5cbiAgICAgICAgY29uc3QgaW5kZXhPZk5leHRQYW5lbCA9IHRoaXMub2xkRnVsbENvbmZpZy5sZW5ndGggLSBjb25maWdzVG9SZW1vdmUubGVuZ3RoIC0gMTtcblxuICAgICAgICBpZiAoY29uZmlnc1RvUmVtb3ZlLmxlbmd0aCAmJiBjb25maWdzVG9BZGQubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBBZGQgYW5kIHJlbW92ZSBwYW5lbHNcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UGFuZWxCeUluZGV4KGluZGV4T2ZOZXh0UGFuZWwpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUGFuZWxzKGNvbmZpZ3NUb0FkZCwgbmV3RnVsbENvbmZpZykuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQ29tcG9uZW50c1Bvc2l0aW9uKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uZmlnc1RvUmVtb3ZlLmxlbmd0aCAmJiAhY29uZmlnc1RvQWRkLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gb25seSByZW1vdmUgcGFuZWxzXG4gICAgICAgICAgICB0aGlzLnNlbGVjdFBhbmVsQnlJbmRleChpbmRleE9mTmV4dFBhbmVsKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWNvbmZpZ3NUb1JlbW92ZS5sZW5ndGggJiYgY29uZmlnc1RvQWRkLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gb25seSBhZGQgcGFuZWxzXG4gICAgICAgICAgICB0aGlzLm9wZW5QYW5lbHMoY29uZmlnc1RvQWRkLCBuZXdGdWxsQ29uZmlnKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9sZEZ1bGxDb25maWcgPSBuZXdGdWxsQ29uZmlnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc29sdmUgYWxsIHNlcnZpY2VzLCB0aGVuIG9wZW4gcGFuZWxzXG4gICAgICovXG4gICAgcHJpdmF0ZSBvcGVuUGFuZWxzKFxuICAgICAgICBuZXdJdGVtc0NvbmZpZzogTmF0dXJhbFBhbmVsQ29uZmlnW10sXG4gICAgICAgIGZ1bGxDb25maWc6IE5hdHVyYWxQYW5lbENvbmZpZ1tdLFxuICAgICk6IE9ic2VydmFibGU8T2JzZXJ2YWJsZTxhbnk+IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8T2JzZXJ2YWJsZTxhbnk+IHwgbnVsbD4oKTtcblxuICAgICAgICAvLyBSZXNvbHZlIGV2ZXJ5dGhpbmcgYmVmb3JlIG9wZW5pbmcgYSBzaW5nbGUgcGFuZWxcbiAgICAgICAgY29uc3QgcmVzb2x2ZXMgPSBuZXdJdGVtc0NvbmZpZy5tYXAoKGNvbmY6IE5hdHVyYWxQYW5lbENvbmZpZykgPT4gdGhpcy5nZXRSZXNvbHZlZERhdGEoY29uZikpO1xuXG4gICAgICAgIC8vIEZvcmtKb2luIGVtaXRzIHdoZW4gYWxsIHByb21pc2VzIGFyZSBleGVjdXRlZDtcbiAgICAgICAgZm9ya0pvaW4ocmVzb2x2ZXMpLnN1YnNjcmliZShyZXNvbHZlZFJlc3VsdCA9PiB7XG4gICAgICAgICAgICAvLyBGb3IgZWFjaCBuZXcgY29uZmlnIGVudHJ5LCBvcGVuIGEgbmV3IHBhbmVsXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0l0ZW1zQ29uZmlnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gbmV3SXRlbXNDb25maWdbaV07XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1EYXRhOiBOYXR1cmFsUGFuZWxEYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb25maWcgb2YgYWN0dWFsIHBhbmVsIHJvdXRlXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZzogY29uZmlnLFxuXG4gICAgICAgICAgICAgICAgICAgIC8vIERhdGEgcmVzb2x2ZWQgYnkgc2VydmljZVxuICAgICAgICAgICAgICAgICAgICAvLyBVc2UgaW4gY29tcG9uZW50IGJ5IGNhbGxpbmcgdGhpcy5wYW5lbERhdGEuZGF0YS54eXpcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcmVzb2x2ZWRSZXN1bHRbaV0sXG4gICAgICAgICAgICAgICAgICAgIGxpbmthYmxlT2JqZWN0czogW10sXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhvb2tzQ29uZmlnICYmIHRoaXMuaG9va3NDb25maWcuYmVmb3JlT3BlblBhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50OiBOYXR1cmFsUGFuZWxzQmVmb3JlT3BlblBhbmVsID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbURhdGE6IGl0ZW1EYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxDb25maWc6IGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkUmVzdWx0OiByZXNvbHZlZFJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxQYW5lbHNDb25maWc6IGZ1bGxDb25maWcsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaXRlbURhdGEgPSB0aGlzLmhvb2tzQ29uZmlnLmJlZm9yZU9wZW5QYW5lbCh0aGlzLmluamVjdG9yLCBldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUGFuZWwoY29uZmlnLmNvbXBvbmVudCwgaXRlbURhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nc1t0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGggLSAxXS5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdWJqZWN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmVzb2x2ZWREYXRhKGNvbmZpZzogTmF0dXJhbFBhbmVsQ29uZmlnKTogT2JzZXJ2YWJsZTx7W2tleTogc3RyaW5nXTogdW5rbm93bn0+IHtcbiAgICAgICAgaWYgKCFjb25maWcucmVzb2x2ZSB8fCAoY29uZmlnLnJlc29sdmUgJiYgT2JqZWN0LmtleXMoY29uZmlnLnJlc29sdmUpLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNvbHZlS2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZy5yZXNvbHZlKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWREYXRhOiB7W2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTx1bmtub3duPn0gPSB7fTtcbiAgICAgICAgcmVzb2x2ZUtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZWREYXRhW2tleV0gPSBjb25maWcucmVzb2x2ZVtrZXldLnJlc29sdmUoY29uZmlnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKHJlc29sdmVkRGF0YSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAocmVzdWx0IGFzIGFueSkubW9kZWwgfHwgcmVzdWx0O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuUGFuZWwoY29tcG9uZW50T3JUZW1wbGF0ZVJlZjogQ29tcG9uZW50VHlwZTxOYXR1cmFsQWJzdHJhY3RQYW5lbD4sIGRhdGE6IE5hdHVyYWxQYW5lbERhdGEpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZjogTWF0RGlhbG9nQ29uZmlnID0ge1xuICAgICAgICAgICAgcGFuZWxDbGFzczogdGhpcy5wYW5lbENsYXNzLFxuICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgd2lkdGg6ICc5NjBweCcsXG4gICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgIHRvcDogJzAnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW48TmF0dXJhbEFic3RyYWN0UGFuZWw+KGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsIGNvbmYpO1xuXG4gICAgICAgIC8vIFBhbmVsaXNhYmxlIGludGVyZmFjZSBhdHRyaWJ1dGVzL2Z1bmN0aW9uc1xuICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuaW5pdFBhbmVsKGRhdGEpO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldFBhbmVsSW5kZXgoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgICAgICAgIHRoaXMuZ29Ub1BhbmVsQnlJbmRleChpbmRleCAtIDEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gcGFuZWwgcG9zaXRpb24gKGluZGV4KSBieSBzZWFyY2hpbmcgbWF0Y2hpbmcgY29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQYW5lbEluZGV4KGNvbXBvbmVudDogTmF0dXJhbEFic3RyYWN0UGFuZWwpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmZpbmRJbmRleChkaWFsb2cgPT4gZGlhbG9nLmNvbXBvbmVudEluc3RhbmNlID09PSBjb21wb25lbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcG9zaXRpb25zIHBhbmVscyBmcm9tIHN0YXJ0IHVudGlsIGdpdmVuIGluZGV4XG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVDb21wb25lbnRzUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIHBhbmVscyB0aGF0IGFyZSBzdGlsbCBvcGVuZWQsIGlnbm9yZSB0aGUgb3RoZXJzIGJlY2F1c2UgdGhleSdsbCBiZSBjbG9zZWRcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRFbGVtZW50cyA9IHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWZmZWN0ZWRFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nID0gYWZmZWN0ZWRFbGVtZW50c1tpXTtcblxuICAgICAgICAgICAgLy8gU2V0IGFsbCBwYW5lbHMgYXMgXCJoaWRkZW5cIiBleGNlcHQgbGFzdCBvbmUuIElzRnJvbnRQYW5lbCBhdHRyaWJ1dGUgY2F1c2VzIGEgQ1NTIHRoYXQgaGlkZXMgYm9keSB2aWEgaG9zdGJpbmRpbmdcbiAgICAgICAgICAgIGRpYWxvZy5jb21wb25lbnRJbnN0YW5jZS5pc0Zyb250UGFuZWwgPSBpID09PSBhZmZlY3RlZEVsZW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBkaWFsb2cuY29tcG9uZW50SW5zdGFuY2UucGFuZWxTZXJ2aWNlID0gdGhpcztcblxuICAgICAgICAgICAgLy8gQXNzaWduIG9mZnNldFxuICAgICAgICAgICAgY29uc3QgZGVlcCA9IGFmZmVjdGVkRWxlbWVudHMubGVuZ3RoIC0gMSAtIGk7XG5cbiAgICAgICAgICAgIGxldCBwb3NpdGlvbjogYW55ID0ge3JpZ2h0OiBkZWVwICogdGhpcy5wYW5lbHNPZmZzZXRIICsgJ3B4J307XG4gICAgICAgICAgICBpZiAodGhpcy5tZWRpYSA9PT0gJ3hzJyAmJiBhZmZlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBpICogdGhpcy5wYW5lbHNPZmZzZXRWICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICcwcHgnLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRpYWxvZy51cGRhdGVQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=