ca-components 0.0.90 → 0.0.91

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/esm2022/lib/components/ca-activity-log-list/ca-activity-log-list.component.mjs +84 -9
  2. package/esm2022/lib/components/ca-activity-log-list/config/activity-log-search-filter.config.mjs +16 -0
  3. package/esm2022/lib/components/ca-activity-log-list/config/index.mjs +2 -0
  4. package/esm2022/lib/components/ca-activity-log-list/models/company-user-avatar-file.model.mjs +2 -0
  5. package/esm2022/lib/components/ca-activity-log-list/models/company-user.model.mjs +1 -1
  6. package/esm2022/lib/components/ca-activity-log-list/models/index.mjs +2 -1
  7. package/esm2022/lib/components/ca-activity-log-list/utils/pipes/company-user-name-transform.pipe.mjs +20 -0
  8. package/esm2022/lib/components/ca-activity-log-list/utils/pipes/index.mjs +2 -1
  9. package/esm2022/lib/components/ca-chart/ca-chart.component.mjs +57 -12
  10. package/esm2022/lib/components/ca-chart/config/ca-base-chart-dataset.config.mjs +3 -3
  11. package/esm2022/lib/components/ca-chart/config/index.mjs +1 -1
  12. package/esm2022/lib/components/ca-chart/enums/chart-colors-enum.mjs +3 -1
  13. package/esm2022/lib/components/ca-chart/enums/chart-event-properties-enum.mjs +5 -0
  14. package/esm2022/lib/components/ca-chart/enums/chart-event-types-enum.mjs +5 -0
  15. package/esm2022/lib/components/ca-chart/enums/chart-plugin-ids-enum.mjs +6 -0
  16. package/esm2022/lib/components/ca-chart/enums/chart-types-enum.mjs +1 -1
  17. package/esm2022/lib/components/ca-chart/enums/cubic-interpolation-mode-enum.mjs +1 -1
  18. package/esm2022/lib/components/ca-chart/enums/index.mjs +4 -1
  19. package/esm2022/lib/components/ca-chart/models/chart-base-dataset.model.mjs +1 -1
  20. package/esm2022/lib/components/ca-chart/models/chart-data.model.mjs +1 -1
  21. package/esm2022/lib/components/ca-chart/models/chart-line-dataset.model.mjs +1 -1
  22. package/esm2022/lib/components/ca-chart/models/index.mjs +1 -1
  23. package/esm2022/lib/components/ca-chart/utils/guards/chart-type.guard.mjs +2 -2
  24. package/esm2022/lib/components/ca-chart/utils/guards/index.mjs +2 -2
  25. package/esm2022/lib/components/ca-chart/utils/helpers/chart.helper.mjs +55 -9
  26. package/esm2022/lib/components/ca-chart/utils/helpers/index.mjs +2 -2
  27. package/esm2022/lib/components/ca-filters/components/ca-user-filter/models/index.mjs +3 -0
  28. package/esm2022/lib/components/ca-right-side-panel/ca-right-side-panel.component.mjs +46 -12
  29. package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-menu/ca-right-side-panel-menu.component.mjs +10 -7
  30. package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component.mjs +208 -22
  31. package/esm2022/lib/components/ca-right-side-panel/config/ca-right-side-panel.config.mjs +2 -2
  32. package/esm2022/lib/components/ca-right-side-panel/enums/activity-log-sort-type.enum.mjs +6 -0
  33. package/esm2022/lib/components/ca-right-side-panel/enums/filter-type.enum.mjs +8 -0
  34. package/esm2022/lib/components/ca-right-side-panel/enums/index.mjs +5 -1
  35. package/esm2022/lib/components/ca-right-side-panel/enums/modules-filter-item-label.enum.mjs +5 -0
  36. package/esm2022/lib/components/ca-right-side-panel/enums/right-side-panel-current-tab.enum.mjs +1 -1
  37. package/esm2022/lib/components/ca-right-side-panel/enums/selected-module.enum.mjs +2 -2
  38. package/esm2022/lib/components/ca-right-side-panel/enums/time-filter-type.enum.mjs +11 -0
  39. package/esm2022/lib/components/ca-right-side-panel/models/action-filter/action-filter-input-data.model.mjs +2 -0
  40. package/esm2022/lib/components/ca-right-side-panel/models/activity-log-filter-params.model.mjs +2 -0
  41. package/esm2022/lib/components/ca-right-side-panel/models/activity-log-filter.model.mjs +2 -0
  42. package/esm2022/lib/components/ca-right-side-panel/models/index.mjs +10 -1
  43. package/esm2022/lib/components/ca-right-side-panel/models/module-filter/module-filter-activity-log.model.mjs +2 -0
  44. package/esm2022/lib/components/ca-right-side-panel/models/module-filter/module-filter-input-data.model.mjs +2 -0
  45. package/esm2022/lib/components/ca-right-side-panel/models/navigation-item.model.mjs +1 -1
  46. package/esm2022/lib/components/ca-right-side-panel/models/time-filter/time-filter-event.model.mjs +2 -0
  47. package/esm2022/lib/components/ca-right-side-panel/models/user-filter/user-filter-avatar-file.model.mjs +2 -0
  48. package/esm2022/lib/components/ca-right-side-panel/models/user-filter/user-filter-data.model.mjs +2 -0
  49. package/esm2022/lib/components/ca-right-side-panel/models/user-filter/user-filter-input-data.model.mjs +2 -0
  50. package/esm2022/lib/components/ca-right-side-panel/utils/svg-routes/index.mjs +2 -0
  51. package/esm2022/lib/components/ca-right-side-panel/utils/svg-routes/right-side-panel-top-bar-svg.routes.mjs +10 -0
  52. package/fesm2022/ca-components.mjs +546 -79
  53. package/fesm2022/ca-components.mjs.map +1 -1
  54. package/lib/components/ca-activity-log-list/ca-activity-log-list.component.d.ts +28 -4
  55. package/lib/components/ca-activity-log-list/config/activity-log-search-filter.config.d.ts +5 -0
  56. package/lib/components/ca-activity-log-list/config/index.d.ts +1 -0
  57. package/lib/components/ca-activity-log-list/models/company-user-avatar-file.model.d.ts +9 -0
  58. package/lib/components/ca-activity-log-list/models/company-user.model.d.ts +2 -1
  59. package/lib/components/ca-activity-log-list/models/index.d.ts +1 -0
  60. package/lib/components/ca-activity-log-list/utils/pipes/company-user-name-transform.pipe.d.ts +7 -0
  61. package/lib/components/ca-activity-log-list/utils/pipes/index.d.ts +1 -0
  62. package/lib/components/ca-chart/ca-chart.component.d.ts +3 -1
  63. package/lib/components/ca-chart/config/ca-base-chart-dataset.config.d.ts +1 -1
  64. package/lib/components/ca-chart/enums/chart-colors-enum.d.ts +3 -1
  65. package/lib/components/ca-chart/enums/chart-event-properties-enum.d.ts +3 -0
  66. package/lib/components/ca-chart/enums/chart-event-types-enum.d.ts +3 -0
  67. package/lib/components/ca-chart/enums/chart-plugin-ids-enum.d.ts +4 -0
  68. package/lib/components/ca-chart/enums/index.d.ts +3 -0
  69. package/lib/components/ca-chart/models/chart-base-dataset.model.d.ts +2 -1
  70. package/lib/components/ca-chart/models/chart-data.model.d.ts +1 -1
  71. package/lib/components/ca-chart/models/chart-line-dataset.model.d.ts +5 -1
  72. package/lib/components/ca-chart/utils/guards/chart-type.guard.d.ts +1 -1
  73. package/lib/components/ca-chart/utils/guards/index.d.ts +1 -1
  74. package/lib/components/ca-chart/utils/helpers/chart.helper.d.ts +7 -1
  75. package/lib/components/ca-chart/utils/helpers/index.d.ts +1 -1
  76. package/lib/components/ca-filters/ca-filter.component.d.ts +2 -2
  77. package/lib/components/ca-filters/components/ca-user-filter/models/index.d.ts +2 -0
  78. package/lib/components/ca-right-side-panel/ca-right-side-panel.component.d.ts +11 -5
  79. package/lib/components/ca-right-side-panel/components/ca-right-side-panel-menu/ca-right-side-panel-menu.component.d.ts +2 -1
  80. package/lib/components/ca-right-side-panel/components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component.d.ts +37 -8
  81. package/lib/components/ca-right-side-panel/enums/activity-log-sort-type.enum.d.ts +4 -0
  82. package/lib/components/ca-right-side-panel/enums/filter-type.enum.d.ts +6 -0
  83. package/lib/components/ca-right-side-panel/enums/index.d.ts +4 -0
  84. package/lib/components/ca-right-side-panel/enums/modules-filter-item-label.enum.d.ts +3 -0
  85. package/lib/components/ca-right-side-panel/enums/selected-module.enum.d.ts +1 -1
  86. package/lib/components/ca-right-side-panel/enums/time-filter-type.enum.d.ts +9 -0
  87. package/lib/components/ca-right-side-panel/models/action-filter/action-filter-input-data.model.d.ts +7 -0
  88. package/lib/components/ca-right-side-panel/models/activity-log-filter-params.model.d.ts +11 -0
  89. package/lib/components/ca-right-side-panel/models/activity-log-filter.model.d.ts +6 -0
  90. package/lib/components/ca-right-side-panel/models/index.d.ts +9 -0
  91. package/lib/components/ca-right-side-panel/models/module-filter/module-filter-activity-log.model.d.ts +6 -0
  92. package/lib/components/ca-right-side-panel/models/module-filter/module-filter-input-data.model.d.ts +5 -0
  93. package/lib/components/ca-right-side-panel/models/navigation-item.model.d.ts +1 -1
  94. package/lib/components/ca-right-side-panel/models/time-filter/time-filter-event.model.d.ts +8 -0
  95. package/lib/components/ca-right-side-panel/models/user-filter/user-filter-avatar-file.model.d.ts +9 -0
  96. package/lib/components/ca-right-side-panel/models/user-filter/user-filter-data.model.d.ts +7 -0
  97. package/lib/components/ca-right-side-panel/models/user-filter/user-filter-input-data.model.d.ts +7 -0
  98. package/lib/components/ca-right-side-panel/utils/svg-routes/index.d.ts +1 -0
  99. package/lib/components/ca-right-side-panel/utils/svg-routes/right-side-panel-top-bar-svg.routes.d.ts +9 -0
  100. package/package.json +1 -1
  101. package/src/assets/ca-components/svg/common/ic_action.svg +3 -0
  102. package/src/assets/ca-components/svg/common/ic_module.svg +5 -0
  103. package/src/assets/ca-components/svg/right-side-panel/ic_reload_refresh.svg +3 -0
@@ -1,26 +1,34 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { HttpClientModule } from '@angular/common/http';
3
- import { Component, Input } from '@angular/core';
3
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
4
4
  // components
5
5
  import { CaRightSidePanelMenuComponent } from './components/ca-right-side-panel-menu/ca-right-side-panel-menu.component';
6
6
  import { CaActivityLogListComponent } from '../ca-activity-log-list/ca-activity-log-list.component';
7
7
  import { CaRightSidePanelTopBarComponent } from './components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component';
8
8
  // enums
9
- import { RightSidePanelCurrentTab, SelectedModule } from './enums';
9
+ import { ActivityLogSortType, RightSidePanelCurrentTab, SelectedModule, } from './enums';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/common";
12
12
  export class CaRightSidePanelComponent {
13
13
  constructor() {
14
+ this._activityLogFilterParams = {
15
+ companyUserIds: [],
16
+ actionLogIds: [],
17
+ entityTypeActivityIds: [],
18
+ sort: ActivityLogSortType.DESCENDING,
19
+ userFilterType: RightSidePanelCurrentTab.PERSONAL,
20
+ dateFrom: null,
21
+ dateTo: null,
22
+ search: null,
23
+ };
24
+ this.activityLogFilterParams = new EventEmitter();
25
+ this.selectedTab = RightSidePanelCurrentTab.PERSONAL;
14
26
  this.isPinned = false;
15
27
  this.SelectedModule = SelectedModule;
16
28
  }
17
- ngOnInit() {
18
- this.setSelectedTab();
19
- }
20
- setSelectedTab() {
21
- this.selectedTab = RightSidePanelCurrentTab.PERSONAL;
22
- }
23
29
  selectedNavEvent(selectedNav) {
30
+ if (!selectedNav)
31
+ this.selectedTab = RightSidePanelCurrentTab.PERSONAL;
24
32
  this.selectedNav = selectedNav;
25
33
  }
26
34
  selectedTabEvent(selectedTab) {
@@ -29,10 +37,28 @@ export class CaRightSidePanelComponent {
29
37
  pinSidebarEvent(isPinned) {
30
38
  this.isPinned = isPinned;
31
39
  }
40
+ setActivityLogFilterParams(activityLogFilterParams) {
41
+ this._activityLogFilterParams.companyUserIds =
42
+ activityLogFilterParams.companyUserIds;
43
+ this._activityLogFilterParams.actionLogIds =
44
+ activityLogFilterParams.actionLogIds;
45
+ this._activityLogFilterParams.entityTypeActivityIds =
46
+ activityLogFilterParams.entityTypeActivityIds;
47
+ this._activityLogFilterParams.sort = activityLogFilterParams.sort;
48
+ this._activityLogFilterParams.userFilterType =
49
+ activityLogFilterParams.userFilterType;
50
+ this._activityLogFilterParams.dateFrom = activityLogFilterParams.dateFrom;
51
+ this._activityLogFilterParams.dateTo = activityLogFilterParams.dateTo;
52
+ this.activityLogFilterParams.emit(this._activityLogFilterParams);
53
+ }
54
+ searchEvent(searchText) {
55
+ this._activityLogFilterParams.search = searchText;
56
+ this.activityLogFilterParams.emit(this._activityLogFilterParams);
57
+ }
32
58
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaRightSidePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaRightSidePanelComponent, isStandalone: true, selector: "lib-ca-right-side-panel", inputs: { data: "data" }, ngImport: i0, template: "<div class=\"side-panel-container-box\" [class.with-side-bar]=\"isPinned\">\n <div\n class=\"side-panel-container d-flex flex-column\"\n [class.side-panel-pinned]=\"isPinned\"\n >\n <ng-container *ngIf=\"selectedNav\">\n <lib-ca-right-side-panel-top-bar\n [selectedModuleTitle]=\"selectedNav\"\n (selectedTab)=\"selectedTabEvent($event)\"\n ></lib-ca-right-side-panel-top-bar>\n </ng-container>\n\n <ng-container *ngIf=\"selectedNav == SelectedModule.ACTIVITY_LOG\">\n <lib-ca-activity-log-list\n [activityLogList]=\"data\"\n [selectedTab]=\"selectedTab\"\n ></lib-ca-activity-log-list>\n </ng-container>\n\n <lib-ca-right-side-panel-menu\n (selectedNav)=\"selectedNavEvent($event)\"\n (isPinned)=\"pinSidebarEvent($event)\"\n ></lib-ca-right-side-panel-menu>\n </div>\n</div>\n", styles: [".side-panel-container-box.with-side-bar{margin-right:366px}.side-panel-container-box .side-panel-container{position:fixed;bottom:12px;right:12px;gap:4px;max-height:calc(100vh - 24px)}.side-panel-container-box .side-panel-container.side-panel-pinned{position:absolute;width:350px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: HttpClientModule }, { kind: "component", type:
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CaRightSidePanelComponent, isStandalone: true, selector: "lib-ca-right-side-panel", inputs: { data: "data", usersFilter: "usersFilter", modulesFilter: "modulesFilter", actionsFilter: "actionsFilter" }, outputs: { activityLogFilterParams: "activityLogFilterParams" }, ngImport: i0, template: "<div class=\"side-panel-container-box\" [class.with-side-bar]=\"isPinned\">\n <div\n class=\"side-panel-container d-flex flex-column\"\n [class.side-panel-pinned]=\"isPinned\"\n >\n <ng-container *ngIf=\"selectedNav\">\n <lib-ca-right-side-panel-top-bar\n [selectedModule]=\"selectedNav\"\n [usersFilter]=\"usersFilter\"\n [modulesFilter]=\"modulesFilter\"\n [actionsFilter]=\"actionsFilter\"\n (selectedTab)=\"selectedTabEvent($event)\"\n (activityLogFilterParams)=\"setActivityLogFilterParams($event)\"\n ></lib-ca-right-side-panel-top-bar>\n </ng-container>\n\n <ng-container *ngIf=\"selectedNav == SelectedModule.ACTIVITY_LOG\">\n <lib-ca-activity-log-list\n [activityLogList]=\"data\"\n [selectedTab]=\"selectedTab\"\n (searchText)=\"searchEvent($event)\"\n ></lib-ca-activity-log-list>\n </ng-container>\n\n <lib-ca-right-side-panel-menu\n (selectedNav)=\"selectedNavEvent($event)\"\n (isPinned)=\"pinSidebarEvent($event)\"\n ></lib-ca-right-side-panel-menu>\n </div>\n</div>\n", styles: [".side-panel-container-box.with-side-bar{margin-right:366px}.side-panel-container-box .side-panel-container{position:fixed;bottom:12px;right:12px;gap:4px;max-height:calc(100vh - 24px)}.side-panel-container-box .side-panel-container.side-panel-pinned{position:absolute;width:350px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: HttpClientModule }, { kind: "component", type:
34
60
  // Components
35
- CaRightSidePanelMenuComponent, selector: "lib-ca-right-side-panel-menu", outputs: ["selectedNav", "isPinned"] }, { kind: "component", type: CaActivityLogListComponent, selector: "lib-ca-activity-log-list", inputs: ["activityLogList", "selectedTab"] }, { kind: "component", type: CaRightSidePanelTopBarComponent, selector: "lib-ca-right-side-panel-top-bar", inputs: ["selectedModuleTitle"], outputs: ["selectedTab"] }] }); }
61
+ CaRightSidePanelMenuComponent, selector: "lib-ca-right-side-panel-menu", outputs: ["selectedNav", "isPinned"] }, { kind: "component", type: CaActivityLogListComponent, selector: "lib-ca-activity-log-list", inputs: ["activityLogList", "selectedTab"], outputs: ["searchText"] }, { kind: "component", type: CaRightSidePanelTopBarComponent, selector: "lib-ca-right-side-panel-top-bar", inputs: ["selectedModule", "usersFilter", "modulesFilter", "actionsFilter"], outputs: ["selectedTab", "activityLogFilterParams"] }] }); }
36
62
  }
37
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CaRightSidePanelComponent, decorators: [{
38
64
  type: Component,
@@ -43,8 +69,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
43
69
  CaRightSidePanelMenuComponent,
44
70
  CaActivityLogListComponent,
45
71
  CaRightSidePanelTopBarComponent,
46
- ], template: "<div class=\"side-panel-container-box\" [class.with-side-bar]=\"isPinned\">\n <div\n class=\"side-panel-container d-flex flex-column\"\n [class.side-panel-pinned]=\"isPinned\"\n >\n <ng-container *ngIf=\"selectedNav\">\n <lib-ca-right-side-panel-top-bar\n [selectedModuleTitle]=\"selectedNav\"\n (selectedTab)=\"selectedTabEvent($event)\"\n ></lib-ca-right-side-panel-top-bar>\n </ng-container>\n\n <ng-container *ngIf=\"selectedNav == SelectedModule.ACTIVITY_LOG\">\n <lib-ca-activity-log-list\n [activityLogList]=\"data\"\n [selectedTab]=\"selectedTab\"\n ></lib-ca-activity-log-list>\n </ng-container>\n\n <lib-ca-right-side-panel-menu\n (selectedNav)=\"selectedNavEvent($event)\"\n (isPinned)=\"pinSidebarEvent($event)\"\n ></lib-ca-right-side-panel-menu>\n </div>\n</div>\n", styles: [".side-panel-container-box.with-side-bar{margin-right:366px}.side-panel-container-box .side-panel-container{position:fixed;bottom:12px;right:12px;gap:4px;max-height:calc(100vh - 24px)}.side-panel-container-box .side-panel-container.side-panel-pinned{position:absolute;width:350px}\n"] }]
72
+ ], template: "<div class=\"side-panel-container-box\" [class.with-side-bar]=\"isPinned\">\n <div\n class=\"side-panel-container d-flex flex-column\"\n [class.side-panel-pinned]=\"isPinned\"\n >\n <ng-container *ngIf=\"selectedNav\">\n <lib-ca-right-side-panel-top-bar\n [selectedModule]=\"selectedNav\"\n [usersFilter]=\"usersFilter\"\n [modulesFilter]=\"modulesFilter\"\n [actionsFilter]=\"actionsFilter\"\n (selectedTab)=\"selectedTabEvent($event)\"\n (activityLogFilterParams)=\"setActivityLogFilterParams($event)\"\n ></lib-ca-right-side-panel-top-bar>\n </ng-container>\n\n <ng-container *ngIf=\"selectedNav == SelectedModule.ACTIVITY_LOG\">\n <lib-ca-activity-log-list\n [activityLogList]=\"data\"\n [selectedTab]=\"selectedTab\"\n (searchText)=\"searchEvent($event)\"\n ></lib-ca-activity-log-list>\n </ng-container>\n\n <lib-ca-right-side-panel-menu\n (selectedNav)=\"selectedNavEvent($event)\"\n (isPinned)=\"pinSidebarEvent($event)\"\n ></lib-ca-right-side-panel-menu>\n </div>\n</div>\n", styles: [".side-panel-container-box.with-side-bar{margin-right:366px}.side-panel-container-box .side-panel-container{position:fixed;bottom:12px;right:12px;gap:4px;max-height:calc(100vh - 24px)}.side-panel-container-box .side-panel-container.side-panel-pinned{position:absolute;width:350px}\n"] }]
47
73
  }], propDecorators: { data: [{
48
74
  type: Input
75
+ }], usersFilter: [{
76
+ type: Input
77
+ }], modulesFilter: [{
78
+ type: Input
79
+ }], actionsFilter: [{
80
+ type: Input
81
+ }], activityLogFilterParams: [{
82
+ type: Output
49
83
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtcmlnaHQtc2lkZS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1yaWdodC1zaWRlLXBhbmVsL2NhLXJpZ2h0LXNpZGUtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtcmlnaHQtc2lkZS1wYW5lbC9jYS1yaWdodC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxhQUFhO0FBQ2IsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDekgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDcEcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFLakksUUFBUTtBQUNSLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7OztBQWlCbkUsTUFBTSxPQUFPLHlCQUF5QjtJQWZ0QztRQW9CUyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsY0FBYyxDQUFDO0tBcUJ4QztJQW5CQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxDQUFDO0lBQ3ZELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxXQUEyQjtRQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsV0FBcUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxRQUFpQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDOytHQTFCVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw2R0M5QnRDLGkyQkF5QkEsa1ZESkksWUFBWSxrSUFDWixnQkFBZ0I7Z0JBRWhCLGFBQWE7Z0JBQ2IsNkJBQTZCLCtHQUM3QiwwQkFBMEIsaUhBQzFCLCtCQUErQjs7NEZBR3RCLHlCQUF5QjtrQkFmckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FHdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUVoQixhQUFhO3dCQUNiLDZCQUE2Qjt3QkFDN0IsMEJBQTBCO3dCQUMxQiwrQkFBK0I7cUJBQ2hDOzhCQUdRLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhUmlnaHRTaWRlUGFuZWxNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLXJpZ2h0LXNpZGUtcGFuZWwtbWVudS9jYS1yaWdodC1zaWRlLXBhbmVsLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENhQWN0aXZpdHlMb2dMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2EtYWN0aXZpdHktbG9nLWxpc3QvY2EtYWN0aXZpdHktbG9nLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhUmlnaHRTaWRlUGFuZWxUb3BCYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtcmlnaHQtc2lkZS1wYW5lbC10b3AtYmFyL2NhLXJpZ2h0LXNpZGUtcGFuZWwtdG9wLWJhci5jb21wb25lbnQnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IEFjdGl2aXR5TG9nSXRlbSB9IGZyb20gJy4uL2NhLWFjdGl2aXR5LWxvZy1saXN0L21vZGVscyc7XG5cbi8vIGVudW1zXG5pbXBvcnQgeyBSaWdodFNpZGVQYW5lbEN1cnJlbnRUYWIsIFNlbGVjdGVkTW9kdWxlIH0gZnJvbSAnLi9lbnVtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jYS1yaWdodC1zaWRlLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLXJpZ2h0LXNpZGUtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYS1yaWdodC1zaWRlLXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSHR0cENsaWVudE1vZHVsZSxcblxuICAgIC8vIENvbXBvbmVudHNcbiAgICBDYVJpZ2h0U2lkZVBhbmVsTWVudUNvbXBvbmVudCxcbiAgICBDYUFjdGl2aXR5TG9nTGlzdENvbXBvbmVudCxcbiAgICBDYVJpZ2h0U2lkZVBhbmVsVG9wQmFyQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYVJpZ2h0U2lkZVBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YSE6IEFjdGl2aXR5TG9nSXRlbVtdO1xuXG4gIHB1YmxpYyBzZWxlY3RlZE5hdj86IFNlbGVjdGVkTW9kdWxlO1xuICBwdWJsaWMgc2VsZWN0ZWRUYWIhOiBSaWdodFNpZGVQYW5lbEN1cnJlbnRUYWI7XG4gIHB1YmxpYyBpc1Bpbm5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgU2VsZWN0ZWRNb2R1bGUgPSBTZWxlY3RlZE1vZHVsZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkVGFiKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFNlbGVjdGVkVGFiKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSBSaWdodFNpZGVQYW5lbEN1cnJlbnRUYWIuUEVSU09OQUw7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWROYXZFdmVudChzZWxlY3RlZE5hdjogU2VsZWN0ZWRNb2R1bGUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTmF2ID0gc2VsZWN0ZWROYXY7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWRUYWJFdmVudChzZWxlY3RlZFRhYjogUmlnaHRTaWRlUGFuZWxDdXJyZW50VGFiKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiO1xuICB9XG5cbiAgcHVibGljIHBpblNpZGViYXJFdmVudChpc1Bpbm5lZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNQaW5uZWQgPSBpc1Bpbm5lZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNpZGUtcGFuZWwtY29udGFpbmVyLWJveFwiIFtjbGFzcy53aXRoLXNpZGUtYmFyXT1cImlzUGlubmVkXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNpZGUtcGFuZWwtY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiXG4gICAgW2NsYXNzLnNpZGUtcGFuZWwtcGlubmVkXT1cImlzUGlubmVkXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZE5hdlwiPlxuICAgICAgPGxpYi1jYS1yaWdodC1zaWRlLXBhbmVsLXRvcC1iYXJcbiAgICAgICAgW3NlbGVjdGVkTW9kdWxlVGl0bGVdPVwic2VsZWN0ZWROYXZcIlxuICAgICAgICAoc2VsZWN0ZWRUYWIpPVwic2VsZWN0ZWRUYWJFdmVudCgkZXZlbnQpXCJcbiAgICAgID48L2xpYi1jYS1yaWdodC1zaWRlLXBhbmVsLXRvcC1iYXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWROYXYgPT0gU2VsZWN0ZWRNb2R1bGUuQUNUSVZJVFlfTE9HXCI+XG4gICAgICA8bGliLWNhLWFjdGl2aXR5LWxvZy1saXN0XG4gICAgICAgIFthY3Rpdml0eUxvZ0xpc3RdPVwiZGF0YVwiXG4gICAgICAgIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiXG4gICAgICA+PC9saWItY2EtYWN0aXZpdHktbG9nLWxpc3Q+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bGliLWNhLXJpZ2h0LXNpZGUtcGFuZWwtbWVudVxuICAgICAgKHNlbGVjdGVkTmF2KT1cInNlbGVjdGVkTmF2RXZlbnQoJGV2ZW50KVwiXG4gICAgICAoaXNQaW5uZWQpPVwicGluU2lkZWJhckV2ZW50KCRldmVudClcIlxuICAgID48L2xpYi1jYS1yaWdodC1zaWRlLXBhbmVsLW1lbnU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtcmlnaHQtc2lkZS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1yaWdodC1zaWRlLXBhbmVsL2NhLXJpZ2h0LXNpZGUtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtcmlnaHQtc2lkZS1wYW5lbC9jYS1yaWdodC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLGFBQWE7QUFDYixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQVdqSSxRQUFRO0FBQ1IsT0FBTyxFQUNMLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsY0FBYyxHQUNmLE1BQU0sU0FBUyxDQUFDOzs7QUFpQmpCLE1BQU0sT0FBTyx5QkFBeUI7SUFmdEM7UUFnQlMsNkJBQXdCLEdBQTRCO1lBQ3pELGNBQWMsRUFBRSxFQUFFO1lBQ2xCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLHFCQUFxQixFQUFFLEVBQUU7WUFDekIsSUFBSSxFQUFFLG1CQUFtQixDQUFDLFVBQVU7WUFDcEMsY0FBYyxFQUFFLHdCQUF3QixDQUFDLFFBQVE7WUFDakQsUUFBUSxFQUFFLElBQUk7WUFDZCxNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQU9RLDRCQUF1QixHQUMvQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR2QsZ0JBQVcsR0FDaEIsd0JBQXdCLENBQUMsUUFBUSxDQUFDO1FBQzdCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxjQUFjLENBQUM7S0FvQ3hDO0lBbENRLGdCQUFnQixDQUFDLFdBQTJCO1FBQ2pELElBQUksQ0FBQyxXQUFXO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7UUFDdkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFdBQXFDO1FBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxlQUFlLENBQUMsUUFBaUI7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVNLDBCQUEwQixDQUMvQix1QkFBZ0Q7UUFFaEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWM7WUFDMUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDO1FBQ3pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZO1lBQ3hDLHVCQUF1QixDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsd0JBQXdCLENBQUMscUJBQXFCO1lBQ2pELHVCQUF1QixDQUFDLHFCQUFxQixDQUFDO1FBQ2hELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDO1FBQ2xFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjO1lBQzFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztRQUN6QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQztRQUMxRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQztRQUN0RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxXQUFXLENBQUMsVUFBa0I7UUFDbkMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDbEQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUNuRSxDQUFDOytHQTNEVSx5QkFBeUI7bUdBQXpCLHlCQUF5QiwwUUN4Q3RDLGlsQ0E4QkEsa1ZEQ0ksWUFBWSxrSUFDWixnQkFBZ0I7Z0JBRWhCLGFBQWE7Z0JBQ2IsNkJBQTZCLCtHQUM3QiwwQkFBMEIsMElBQzFCLCtCQUErQjs7NEZBR3RCLHlCQUF5QjtrQkFmckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FHdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUVoQixhQUFhO3dCQUNiLDZCQUE2Qjt3QkFDN0IsMEJBQTBCO3dCQUMxQiwrQkFBK0I7cUJBQ2hDOzhCQWNRLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSx1QkFBdUI7c0JBQWhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhUmlnaHRTaWRlUGFuZWxNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLXJpZ2h0LXNpZGUtcGFuZWwtbWVudS9jYS1yaWdodC1zaWRlLXBhbmVsLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENhQWN0aXZpdHlMb2dMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2EtYWN0aXZpdHktbG9nLWxpc3QvY2EtYWN0aXZpdHktbG9nLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhUmlnaHRTaWRlUGFuZWxUb3BCYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtcmlnaHQtc2lkZS1wYW5lbC10b3AtYmFyL2NhLXJpZ2h0LXNpZGUtcGFuZWwtdG9wLWJhci5jb21wb25lbnQnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IEFjdGl2aXR5TG9nSXRlbSB9IGZyb20gJy4uL2NhLWFjdGl2aXR5LWxvZy1saXN0L21vZGVscyc7XG5pbXBvcnQge1xuICBBY3Rpb25GaWx0ZXJJbnB1dERhdGEsXG4gIEFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLFxuICBNb2R1bGVGaWx0ZXJJbnB1dERhdGEsXG4gIFVzZXJGaWx0ZXJJbnB1dERhdGEsXG59IGZyb20gJy4vbW9kZWxzJztcblxuLy8gZW51bXNcbmltcG9ydCB7XG4gIEFjdGl2aXR5TG9nU29ydFR5cGUsXG4gIFJpZ2h0U2lkZVBhbmVsQ3VycmVudFRhYixcbiAgU2VsZWN0ZWRNb2R1bGUsXG59IGZyb20gJy4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY2EtcmlnaHQtc2lkZS1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS1yaWdodC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtcmlnaHQtc2lkZS1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGUsXG5cbiAgICAvLyBDb21wb25lbnRzXG4gICAgQ2FSaWdodFNpZGVQYW5lbE1lbnVDb21wb25lbnQsXG4gICAgQ2FBY3Rpdml0eUxvZ0xpc3RDb21wb25lbnQsXG4gICAgQ2FSaWdodFNpZGVQYW5lbFRvcEJhckNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FSaWdodFNpZGVQYW5lbENvbXBvbmVudCB7XG4gIHB1YmxpYyBfYWN0aXZpdHlMb2dGaWx0ZXJQYXJhbXM6IEFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zID0ge1xuICAgIGNvbXBhbnlVc2VySWRzOiBbXSxcbiAgICBhY3Rpb25Mb2dJZHM6IFtdLFxuICAgIGVudGl0eVR5cGVBY3Rpdml0eUlkczogW10sXG4gICAgc29ydDogQWN0aXZpdHlMb2dTb3J0VHlwZS5ERVNDRU5ESU5HLFxuICAgIHVzZXJGaWx0ZXJUeXBlOiBSaWdodFNpZGVQYW5lbEN1cnJlbnRUYWIuUEVSU09OQUwsXG4gICAgZGF0ZUZyb206IG51bGwsXG4gICAgZGF0ZVRvOiBudWxsLFxuICAgIHNlYXJjaDogbnVsbCxcbiAgfTtcblxuICBASW5wdXQoKSBkYXRhITogQWN0aXZpdHlMb2dJdGVtW107XG4gIEBJbnB1dCgpIHVzZXJzRmlsdGVyITogVXNlckZpbHRlcklucHV0RGF0YVtdO1xuICBASW5wdXQoKSBtb2R1bGVzRmlsdGVyITogTW9kdWxlRmlsdGVySW5wdXREYXRhW107XG4gIEBJbnB1dCgpIGFjdGlvbnNGaWx0ZXIhOiBBY3Rpb25GaWx0ZXJJbnB1dERhdGFbXTtcblxuICBAT3V0cHV0KCkgYWN0aXZpdHlMb2dGaWx0ZXJQYXJhbXM6IEV2ZW50RW1pdHRlcjxBY3Rpdml0eUxvZ0ZpbHRlclBhcmFtcz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgc2VsZWN0ZWROYXY/OiBTZWxlY3RlZE1vZHVsZTtcbiAgcHVibGljIHNlbGVjdGVkVGFiOiBSaWdodFNpZGVQYW5lbEN1cnJlbnRUYWIgPVxuICAgIFJpZ2h0U2lkZVBhbmVsQ3VycmVudFRhYi5QRVJTT05BTDtcbiAgcHVibGljIGlzUGlubmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBTZWxlY3RlZE1vZHVsZSA9IFNlbGVjdGVkTW9kdWxlO1xuXG4gIHB1YmxpYyBzZWxlY3RlZE5hdkV2ZW50KHNlbGVjdGVkTmF2OiBTZWxlY3RlZE1vZHVsZSk6IHZvaWQge1xuICAgIGlmICghc2VsZWN0ZWROYXYpIHRoaXMuc2VsZWN0ZWRUYWIgPSBSaWdodFNpZGVQYW5lbEN1cnJlbnRUYWIuUEVSU09OQUw7XG4gICAgdGhpcy5zZWxlY3RlZE5hdiA9IHNlbGVjdGVkTmF2O1xuICB9XG5cbiAgcHVibGljIHNlbGVjdGVkVGFiRXZlbnQoc2VsZWN0ZWRUYWI6IFJpZ2h0U2lkZVBhbmVsQ3VycmVudFRhYik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSBzZWxlY3RlZFRhYjtcbiAgfVxuXG4gIHB1YmxpYyBwaW5TaWRlYmFyRXZlbnQoaXNQaW5uZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzUGlubmVkID0gaXNQaW5uZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZpdHlMb2dGaWx0ZXJQYXJhbXMoXG4gICAgYWN0aXZpdHlMb2dGaWx0ZXJQYXJhbXM6IEFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zXG4gICk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLmNvbXBhbnlVc2VySWRzID1cbiAgICAgIGFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLmNvbXBhbnlVc2VySWRzO1xuICAgIHRoaXMuX2FjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLmFjdGlvbkxvZ0lkcyA9XG4gICAgICBhY3Rpdml0eUxvZ0ZpbHRlclBhcmFtcy5hY3Rpb25Mb2dJZHM7XG4gICAgdGhpcy5fYWN0aXZpdHlMb2dGaWx0ZXJQYXJhbXMuZW50aXR5VHlwZUFjdGl2aXR5SWRzID1cbiAgICAgIGFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLmVudGl0eVR5cGVBY3Rpdml0eUlkcztcbiAgICB0aGlzLl9hY3Rpdml0eUxvZ0ZpbHRlclBhcmFtcy5zb3J0ID0gYWN0aXZpdHlMb2dGaWx0ZXJQYXJhbXMuc29ydDtcbiAgICB0aGlzLl9hY3Rpdml0eUxvZ0ZpbHRlclBhcmFtcy51c2VyRmlsdGVyVHlwZSA9XG4gICAgICBhY3Rpdml0eUxvZ0ZpbHRlclBhcmFtcy51c2VyRmlsdGVyVHlwZTtcbiAgICB0aGlzLl9hY3Rpdml0eUxvZ0ZpbHRlclBhcmFtcy5kYXRlRnJvbSA9IGFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLmRhdGVGcm9tO1xuICAgIHRoaXMuX2FjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLmRhdGVUbyA9IGFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLmRhdGVUbztcbiAgICB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLmVtaXQodGhpcy5fYWN0aXZpdHlMb2dGaWx0ZXJQYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaEV2ZW50KHNlYXJjaFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2aXR5TG9nRmlsdGVyUGFyYW1zLnNlYXJjaCA9IHNlYXJjaFRleHQ7XG4gICAgdGhpcy5hY3Rpdml0eUxvZ0ZpbHRlclBhcmFtcy5lbWl0KHRoaXMuX2FjdGl2aXR5TG9nRmlsdGVyUGFyYW1zKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNpZGUtcGFuZWwtY29udGFpbmVyLWJveFwiIFtjbGFzcy53aXRoLXNpZGUtYmFyXT1cImlzUGlubmVkXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNpZGUtcGFuZWwtY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiXG4gICAgW2NsYXNzLnNpZGUtcGFuZWwtcGlubmVkXT1cImlzUGlubmVkXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZE5hdlwiPlxuICAgICAgPGxpYi1jYS1yaWdodC1zaWRlLXBhbmVsLXRvcC1iYXJcbiAgICAgICAgW3NlbGVjdGVkTW9kdWxlXT1cInNlbGVjdGVkTmF2XCJcbiAgICAgICAgW3VzZXJzRmlsdGVyXT1cInVzZXJzRmlsdGVyXCJcbiAgICAgICAgW21vZHVsZXNGaWx0ZXJdPVwibW9kdWxlc0ZpbHRlclwiXG4gICAgICAgIFthY3Rpb25zRmlsdGVyXT1cImFjdGlvbnNGaWx0ZXJcIlxuICAgICAgICAoc2VsZWN0ZWRUYWIpPVwic2VsZWN0ZWRUYWJFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgKGFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zKT1cInNldEFjdGl2aXR5TG9nRmlsdGVyUGFyYW1zKCRldmVudClcIlxuICAgICAgPjwvbGliLWNhLXJpZ2h0LXNpZGUtcGFuZWwtdG9wLWJhcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZE5hdiA9PSBTZWxlY3RlZE1vZHVsZS5BQ1RJVklUWV9MT0dcIj5cbiAgICAgIDxsaWItY2EtYWN0aXZpdHktbG9nLWxpc3RcbiAgICAgICAgW2FjdGl2aXR5TG9nTGlzdF09XCJkYXRhXCJcbiAgICAgICAgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCJcbiAgICAgICAgKHNlYXJjaFRleHQpPVwic2VhcmNoRXZlbnQoJGV2ZW50KVwiXG4gICAgICA+PC9saWItY2EtYWN0aXZpdHktbG9nLWxpc3Q+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bGliLWNhLXJpZ2h0LXNpZGUtcGFuZWwtbWVudVxuICAgICAgKHNlbGVjdGVkTmF2KT1cInNlbGVjdGVkTmF2RXZlbnQoJGV2ZW50KVwiXG4gICAgICAoaXNQaW5uZWQpPVwicGluU2lkZWJhckV2ZW50KCRldmVudClcIlxuICAgID48L2xpYi1jYS1yaWdodC1zaWRlLXBhbmVsLW1lbnU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=