ng-kinintel 0.0.397 → 20.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/fesm2022/ng-kinintel.mjs +11874 -0
  2. package/fesm2022/ng-kinintel.mjs.map +1 -0
  3. package/index.d.ts +2818 -5
  4. package/package.json +6 -14
  5. package/esm2020/lib/components/alert-groups/alert-groups.component.mjs +0 -76
  6. package/esm2020/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.mjs +0 -83
  7. package/esm2020/lib/components/dashboard-editor/configure-item/configure-item.component.mjs +0 -853
  8. package/esm2020/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.mjs +0 -56
  9. package/esm2020/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.mjs +0 -114
  10. package/esm2020/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.mjs +0 -163
  11. package/esm2020/lib/components/dashboard-editor/configure-item/vis-network-options.json +0 -135
  12. package/esm2020/lib/components/dashboard-editor/dashboard-editor.component.mjs +0 -580
  13. package/esm2020/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.mjs +0 -15
  14. package/esm2020/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.mjs +0 -50
  15. package/esm2020/lib/components/dashboard-editor/item-component/item-component.component.mjs +0 -1226
  16. package/esm2020/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.mjs +0 -111
  17. package/esm2020/lib/components/dashboards/dashboards.component.mjs +0 -163
  18. package/esm2020/lib/components/dashboards/view-dashboard/view-dashboard.component.mjs +0 -429
  19. package/esm2020/lib/components/data-explorer/change-source-warning/change-source-warning.component.mjs +0 -20
  20. package/esm2020/lib/components/data-explorer/data-explorer.component.mjs +0 -243
  21. package/esm2020/lib/components/data-explorer/export-data/export-data.component.mjs +0 -62
  22. package/esm2020/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.mjs +0 -70
  23. package/esm2020/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.mjs +0 -190
  24. package/esm2020/lib/components/data-picker/data-picker.component.mjs +0 -79
  25. package/esm2020/lib/components/data-search/data-search.component.mjs +0 -11
  26. package/esm2020/lib/components/data-sharing-invite/data-sharing-invite.component.mjs +0 -52
  27. package/esm2020/lib/components/dataset/create-dataset/create-dataset.component.mjs +0 -47
  28. package/esm2020/lib/components/dataset/dataset-editor/available-columns/available-columns.component.mjs +0 -28
  29. package/esm2020/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.mjs +0 -344
  30. package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.mjs +0 -80
  31. package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.mjs +0 -54
  32. package/esm2020/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.mjs +0 -67
  33. package/esm2020/lib/components/dataset/dataset-editor/dataset-editor.component.mjs +0 -1134
  34. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.mjs +0 -201
  35. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.mjs +0 -25
  36. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.mjs +0 -72
  37. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.mjs +0 -62
  38. package/esm2020/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.mjs +0 -41
  39. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.mjs +0 -78
  40. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.mjs +0 -39
  41. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.mjs +0 -75
  42. package/esm2020/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.mjs +0 -107
  43. package/esm2020/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.mjs +0 -20
  44. package/esm2020/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.mjs +0 -20
  45. package/esm2020/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.mjs +0 -58
  46. package/esm2020/lib/components/dataset/dataset-editor/share-query/share-query.component.mjs +0 -110
  47. package/esm2020/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.mjs +0 -20
  48. package/esm2020/lib/components/dataset/dataset.component.mjs +0 -294
  49. package/esm2020/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.mjs +0 -130
  50. package/esm2020/lib/components/datasource/create-datasource/api-access/api-access.component.mjs +0 -132
  51. package/esm2020/lib/components/datasource/create-datasource/create-datasource.component.mjs +0 -729
  52. package/esm2020/lib/components/datasource/create-datasource/import-data/import-data.component.mjs +0 -146
  53. package/esm2020/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.mjs +0 -165
  54. package/esm2020/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.mjs +0 -145
  55. package/esm2020/lib/components/datasource/datasource.component.mjs +0 -162
  56. package/esm2020/lib/components/datasource/document-datasource/document-datasource.component.mjs +0 -297
  57. package/esm2020/lib/components/export-project/export-project.component.mjs +0 -29
  58. package/esm2020/lib/components/feeds/feed/feed.component.mjs +0 -92
  59. package/esm2020/lib/components/feeds/feeds.component.mjs +0 -145
  60. package/esm2020/lib/components/job-tasks/job-tasks.component.mjs +0 -25
  61. package/esm2020/lib/components/marketplace/marketplace.component.mjs +0 -65
  62. package/esm2020/lib/components/metadata/metadata.component.mjs +0 -65
  63. package/esm2020/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.mjs +0 -113
  64. package/esm2020/lib/components/notification-groups/notification-groups.component.mjs +0 -86
  65. package/esm2020/lib/components/project-picker/project-picker.component.mjs +0 -118
  66. package/esm2020/lib/components/project-settings/project-link-selection/project-link-selection.component.mjs +0 -104
  67. package/esm2020/lib/components/project-settings/project-settings.component.mjs +0 -155
  68. package/esm2020/lib/components/query-caching/edit-query-cache/edit-query-cache.component.mjs +0 -51
  69. package/esm2020/lib/components/query-caching/query-cache-view/query-cache-view.component.mjs +0 -121
  70. package/esm2020/lib/components/query-caching/query-caching.component.mjs +0 -162
  71. package/esm2020/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.mjs +0 -45
  72. package/esm2020/lib/components/shared-with-me/shared-with-me.component.mjs +0 -174
  73. package/esm2020/lib/components/snapshots/snapshots.component.mjs +0 -244
  74. package/esm2020/lib/components/tag-picker/tag-picker.component.mjs +0 -74
  75. package/esm2020/lib/components/task-time-periods/task-time-periods.component.mjs +0 -55
  76. package/esm2020/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.mjs +0 -40
  77. package/esm2020/lib/guards/dashboard-changes.guard.mjs +0 -22
  78. package/esm2020/lib/kinintel-config.mjs +0 -3
  79. package/esm2020/lib/ng-kinintel.module.mjs +0 -437
  80. package/esm2020/lib/objects/action-event.mjs +0 -16
  81. package/esm2020/lib/services/alert.service.mjs +0 -52
  82. package/esm2020/lib/services/dashboard.service.mjs +0 -75
  83. package/esm2020/lib/services/data-processor.service.mjs +0 -56
  84. package/esm2020/lib/services/data-search.service.mjs +0 -36
  85. package/esm2020/lib/services/dataset.service.mjs +0 -187
  86. package/esm2020/lib/services/datasource.service.mjs +0 -93
  87. package/esm2020/lib/services/external.service.mjs +0 -33
  88. package/esm2020/lib/services/feed.service.mjs +0 -50
  89. package/esm2020/lib/services/notification.service.mjs +0 -41
  90. package/esm2020/lib/services/project.service.mjs +0 -130
  91. package/esm2020/lib/services/tag.service.mjs +0 -63
  92. package/esm2020/ng-kinintel.mjs +0 -5
  93. package/esm2020/public-api.mjs +0 -43
  94. package/fesm2015/ng-kinintel.mjs +0 -12182
  95. package/fesm2015/ng-kinintel.mjs.map +0 -1
  96. package/fesm2020/ng-kinintel.mjs +0 -11872
  97. package/fesm2020/ng-kinintel.mjs.map +0 -1
  98. package/lib/components/alert-groups/alert-groups.component.d.ts +0 -30
  99. package/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.d.ts +0 -28
  100. package/lib/components/dashboard-editor/configure-item/configure-item.component.d.ts +0 -256
  101. package/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.d.ts +0 -16
  102. package/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.d.ts +0 -59
  103. package/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.d.ts +0 -26
  104. package/lib/components/dashboard-editor/dashboard-editor.component.d.ts +0 -85
  105. package/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.d.ts +0 -8
  106. package/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.d.ts +0 -22
  107. package/lib/components/dashboard-editor/item-component/item-component.component.d.ts +0 -264
  108. package/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.d.ts +0 -30
  109. package/lib/components/dashboards/dashboards.component.d.ts +0 -56
  110. package/lib/components/dashboards/view-dashboard/view-dashboard.component.d.ts +0 -81
  111. package/lib/components/data-explorer/change-source-warning/change-source-warning.component.d.ts +0 -11
  112. package/lib/components/data-explorer/data-explorer.component.d.ts +0 -61
  113. package/lib/components/data-explorer/export-data/export-data.component.d.ts +0 -17
  114. package/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.d.ts +0 -25
  115. package/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.d.ts +0 -44
  116. package/lib/components/data-picker/data-picker.component.d.ts +0 -32
  117. package/lib/components/data-search/data-search.component.d.ts +0 -5
  118. package/lib/components/data-sharing-invite/data-sharing-invite.component.d.ts +0 -21
  119. package/lib/components/dataset/create-dataset/create-dataset.component.d.ts +0 -17
  120. package/lib/components/dataset/dataset-editor/available-columns/available-columns.component.d.ts +0 -12
  121. package/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.d.ts +0 -61
  122. package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.d.ts +0 -21
  123. package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.d.ts +0 -20
  124. package/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.d.ts +0 -19
  125. package/lib/components/dataset/dataset-editor/dataset-editor.component.d.ts +0 -131
  126. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.d.ts +0 -63
  127. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.d.ts +0 -11
  128. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.d.ts +0 -20
  129. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.d.ts +0 -16
  130. package/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.d.ts +0 -18
  131. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.d.ts +0 -23
  132. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.d.ts +0 -13
  133. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.d.ts +0 -22
  134. package/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.d.ts +0 -27
  135. package/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.d.ts +0 -11
  136. package/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.d.ts +0 -11
  137. package/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.d.ts +0 -25
  138. package/lib/components/dataset/dataset-editor/share-query/share-query.component.d.ts +0 -41
  139. package/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.d.ts +0 -11
  140. package/lib/components/dataset/dataset.component.d.ts +0 -74
  141. package/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.d.ts +0 -26
  142. package/lib/components/datasource/create-datasource/api-access/api-access.component.d.ts +0 -31
  143. package/lib/components/datasource/create-datasource/create-datasource.component.d.ts +0 -112
  144. package/lib/components/datasource/create-datasource/import-data/import-data.component.d.ts +0 -28
  145. package/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.d.ts +0 -40
  146. package/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.d.ts +0 -34
  147. package/lib/components/datasource/datasource.component.d.ts +0 -46
  148. package/lib/components/datasource/document-datasource/document-datasource.component.d.ts +0 -64
  149. package/lib/components/export-project/export-project.component.d.ts +0 -9
  150. package/lib/components/feeds/feed/feed.component.d.ts +0 -30
  151. package/lib/components/feeds/feeds.component.d.ts +0 -47
  152. package/lib/components/job-tasks/job-tasks.component.d.ts +0 -11
  153. package/lib/components/marketplace/marketplace.component.d.ts +0 -42
  154. package/lib/components/metadata/metadata.component.d.ts +0 -24
  155. package/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.d.ts +0 -37
  156. package/lib/components/notification-groups/notification-groups.component.d.ts +0 -28
  157. package/lib/components/project-picker/project-picker.component.d.ts +0 -37
  158. package/lib/components/project-settings/project-link-selection/project-link-selection.component.d.ts +0 -32
  159. package/lib/components/project-settings/project-settings.component.d.ts +0 -40
  160. package/lib/components/query-caching/edit-query-cache/edit-query-cache.component.d.ts +0 -17
  161. package/lib/components/query-caching/query-cache-view/query-cache-view.component.d.ts +0 -35
  162. package/lib/components/query-caching/query-caching.component.d.ts +0 -38
  163. package/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.d.ts +0 -21
  164. package/lib/components/shared-with-me/shared-with-me.component.d.ts +0 -43
  165. package/lib/components/snapshots/snapshots.component.d.ts +0 -52
  166. package/lib/components/tag-picker/tag-picker.component.d.ts +0 -27
  167. package/lib/components/task-time-periods/task-time-periods.component.d.ts +0 -20
  168. package/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.d.ts +0 -17
  169. package/lib/guards/dashboard-changes.guard.d.ts +0 -11
  170. package/lib/kinintel-config.d.ts +0 -10
  171. package/lib/ng-kinintel.module.d.ts +0 -116
  172. package/lib/objects/action-event.d.ts +0 -12
  173. package/lib/services/alert.service.d.ts +0 -17
  174. package/lib/services/dashboard.service.d.ts +0 -25
  175. package/lib/services/data-processor.service.d.ts +0 -18
  176. package/lib/services/data-search.service.d.ts +0 -14
  177. package/lib/services/dataset.service.d.ts +0 -56
  178. package/lib/services/datasource.service.d.ts +0 -34
  179. package/lib/services/external.service.d.ts +0 -12
  180. package/lib/services/feed.service.d.ts +0 -19
  181. package/lib/services/notification.service.d.ts +0 -16
  182. package/lib/services/project.service.d.ts +0 -27
  183. package/lib/services/tag.service.d.ts +0 -19
  184. package/public-api.d.ts +0 -38
@@ -1,107 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
3
- import { copyArrayItem, moveItemInArray } from '@angular/cdk/drag-drop';
4
- import * as lodash from 'lodash';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/legacy-dialog";
7
- import * as i2 from "@angular/common";
8
- import * as i3 from "@angular/material/legacy-button";
9
- import * as i4 from "@angular/material/icon";
10
- import * as i5 from "@angular/cdk/drag-drop";
11
- import * as i6 from "@angular/forms";
12
- import * as i7 from "@angular/material/legacy-select";
13
- import * as i8 from "@angular/material/legacy-core";
14
- import * as i9 from "../../../whitelisted-sql-functions/whitelisted-sql-functions.component";
15
- const _ = lodash.default;
16
- export class DatasetSummariseComponent {
17
- constructor(dialogRef, data) {
18
- this.dialogRef = dialogRef;
19
- this.data = data;
20
- this.availableColumns = [];
21
- this.summariseFields = [];
22
- this.summariseExpressions = [];
23
- this._ = _;
24
- this.showDocs = false;
25
- this.viewExample = false;
26
- this.expressionTypes = [
27
- { label: 'No. of Values', value: 'COUNT' },
28
- { label: 'No. of Unique Values', value: 'COUNT_DISTINCT' },
29
- { label: 'No. of Values as Percentage', value: 'COUNT_PERCENT' },
30
- { label: 'Sum of Values', value: 'SUM' },
31
- { label: 'Sum of Values as Percentage', value: 'SUM_PERCENT' },
32
- { label: 'Minimum Value', value: 'MIN' },
33
- { label: 'Maximum Value', value: 'MAX' },
34
- { label: 'Average Value', value: 'AVG' },
35
- { label: 'Join values together with comma', value: 'GROUP_CONCAT' }
36
- ];
37
- }
38
- ngOnInit() {
39
- this.availableColumns = this.data.availableColumns;
40
- this.originDataItemTitle = this.data.originDataItemTitle;
41
- if (this.data.config) {
42
- this.summariseFields = this.data.config.summariseFieldNames.map(field => {
43
- return _.find(this.availableColumns, { name: field });
44
- });
45
- this.summariseExpressions = this.data.config.expressions;
46
- // Add in the existing column titles for display
47
- this.summariseExpressions.map(expression => {
48
- const column = _.find(this.availableColumns, { name: expression.fieldName });
49
- expression.title = column ? column.title : _.startCase(expression.fieldName);
50
- return expression;
51
- });
52
- }
53
- }
54
- drop(event) {
55
- if (event.previousContainer === event.container) {
56
- moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
57
- }
58
- else {
59
- if (event.previousContainer.id === 'availableColumns') {
60
- copyArrayItem(_.cloneDeep(event.previousContainer.data), event.container.data, event.previousIndex, event.currentIndex);
61
- if (event.container.id === 'summariseExpressions') {
62
- const item = event.container.data[event.currentIndex];
63
- item.expressionType = 'SUM';
64
- }
65
- }
66
- }
67
- }
68
- removeListItem(list, index) {
69
- list.splice(index, 1);
70
- }
71
- createCustomExpression() {
72
- this.summariseExpressions.push({
73
- expressionType: 'CUSTOM'
74
- });
75
- }
76
- applySettings() {
77
- const summariseTransformation = {
78
- summariseFieldNames: _.map(this.summariseFields, 'name'),
79
- expressions: _.map(this.summariseExpressions, expression => {
80
- const summariseExpression = {
81
- expressionType: expression.expressionType
82
- };
83
- if (expression.expressionType !== 'CUSTOM') {
84
- summariseExpression.fieldName = expression.name || expression.fieldName;
85
- }
86
- else {
87
- summariseExpression.customExpression = expression.customExpression;
88
- }
89
- if (expression.customLabel) {
90
- summariseExpression.customLabel = expression.customLabel;
91
- }
92
- return summariseExpression;
93
- })
94
- };
95
- this.dialogRef.close(summariseTransformation);
96
- }
97
- }
98
- DatasetSummariseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DatasetSummariseComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
99
- DatasetSummariseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DatasetSummariseComponent, selector: "ki-dataset-summarise", host: { classAttribute: "dialog-wrapper" }, ngImport: i0, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Summarise Data</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content p-4\">\n\n <div class=\"border-t bg-blue-50 p-4 mb-4 -mx-4 -mt-4\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <!-- Heroicon name: mini/information-circle -->\n <svg class=\"h-5 w-5 text-blue-400\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M19 10.5a8.5 8.5 0 11-17 0 8.5 8.5 0 0117 0zM8.25 9.75A.75.75 0 019 9h.253a1.75 1.75 0 011.709 2.13l-.46 2.066a.25.25 0 00.245.304H11a.75.75 0 010 1.5h-.253a1.75 1.75 0 01-1.709-2.13l.46-2.066a.25.25 0 00-.245-.304H9a.75.75 0 01-.75-.75zM10 7a1 1 0 100-2 1 1 0 000 2z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3 flex-1 md:flex md:justify-between\">\n <p class=\"text-sm text-blue-700 mb-0\">\n The Summarise transformation is analogous to a <span class=\"font-medium\">SQL GROUP BY</span> expression.\n The <b>Summarise Fields</b> represent the columns to group by, and the <b>Summarise Expression</b> items\n represent columns to Select. <b>Drag</b> the available column to the desired section.<br>\n <a (click)=\"viewExample = true;\" class=\"font-medium hover:underline\">\n View an example of how this summarisation would appear as a SQL statement.</a>\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"drop-container\" cdkDropListGroup>\n <div class=\"example-container\">\n <div class=\"border rounded-t bg-gray-100 text-lg px-2 font-medium py-1 border-gray-300\">\n Available Columns</div>\n\n <div\n cdkDropList\n id=\"availableColumns\"\n [cdkDropListData]=\"availableColumns\"\n class=\"example-list\"\n cdkDropListSortingDisabled\n (cdkDropListDropped)=\"drop($event)\">\n <div class=\"example-box\" *ngFor=\"let item of availableColumns\" cdkDrag>{{item.title}}</div>\n </div>\n </div>\n\n <div class=\"example-container\">\n <div class=\"border rounded-t bg-gray-100 text-lg px-2 font-medium py-1 border-gray-300\">\n Summarise Fields</div>\n\n <div\n cdkDropList\n [cdkDropListData]=\"summariseFields\"\n class=\"example-list\"\n (cdkDropListDropped)=\"drop($event)\">\n <div class=\"example-box p-0 pl-2 h-12\" *ngFor=\"let item of summariseFields; let i = index\" cdkDrag>\n {{item.title}}\n <div class=\"bg-gray-50 h-full flex items-center\">\n <button mat-icon-button color=\"warn\" (click)=\"removeListItem(summariseFields, i)\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"example-container mr-0\">\n <div class=\"border rounded-t bg-gray-100 text-lg px-2 font-medium py-1 border-gray-300\">\n Summarise Expressions</div>\n\n <div\n cdkDropList\n [cdkDropListData]=\"summariseExpressions\"\n id=\"summariseExpressions\"\n class=\"example-list\"\n (cdkDropListDropped)=\"drop($event)\">\n <div class=\"example-box expression\"\n *ngFor=\"let item of summariseExpressions; let i = index\"\n cdkDrag >\n <div class=\"h-full w-full flex flex-row\">\n <div class=\"flex-1 px-1\">\n <div *ngIf=\"item.expressionType !== 'CUSTOM'\"\n class=\"px-2 pt-2 w-full flex items-center flex-row\">\n <div class=\"font-medium w-20 text-gray-600 text-xs\">Column</div>\n <div class=\"truncate w-48\">{{item.title}}</div>\n </div>\n\n <ng-template [ngIf]=\"item.expressionType !== 'CUSTOM'\">\n <div class=\"p-2 w-full flex items-center flex-row\">\n <div class=\"font-medium w-20 text-gray-600 text-xs\">Expression</div>\n <mat-select class=\"p-2 w-48\" [(ngModel)]=\"item.expressionType\">\n <mat-option class=\"text-sm\" *ngFor=\"let type of expressionTypes\"\n [value]=\"type.value\">{{type.label}}</mat-option>\n </mat-select>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"item.expressionType === 'CUSTOM'\">\n <div class=\"top\">\n <div class=\"custom-container\">\n <div class=\"font-medium w-20 text-gray-600 text-xs pb-2\">Expression</div>\n <textarea class=\"w-full\" rows=\"4\" [(ngModel)]=\"item.customExpression\"></textarea>\n </div>\n\n </div>\n </ng-template>\n <div class=\"px-2 pb-2 w-full flex items-center flex-row\">\n <div class=\"font-medium w-20 text-gray-600 text-xs\">Label<span class=\"text-red-500 text-xs\">&nbsp;*</span></div>\n <input type=\"text\" class=\"p-2 w-48\"\n [placeholder]=\"item.expressionType === 'CUSTOM' ? 'custom_expression' : item.expressionType + '_of_' + item.name\"\n [(ngModel)]=\"item.customLabel\" [ngClass]=\"{'border border-red-500': !item.customLabel}\">\n </div>\n </div>\n\n <div class=\"bg-gray-50 flex items-center justify-center\">\n <button mat-icon-button color=\"warn\" (click)=\"removeListItem(summariseExpressions, i)\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n </div>\n\n <div *ngIf=\"viewExample\" class=\"rounded bg-gray-50 p-4 my-2\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 20 20\" stroke-width=\"1.5\" stroke=\"currentColor\"\n class=\"h-5 w-5 text-gray-400\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 18v-5.25m0 0a6.01 6.01 0 001.5-.189m-1.5.189a6.01 6.01 0 01-1.5-.189m3.75 7.478a12.06 12.06 0 01-4.5 0m3.75 2.383a14.406 14.406 0 01-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 10-7.517 0c.85.493 1.509 1.333 1.509 2.316V18\" />\n </svg>\n </div>\n <div class=\"ml-3 flex-1 md:flex md:justify-between\">\n <p class=\"text-sm text-gray-700 mb-0\">\n <b>SELECT&nbsp;</b><span *ngFor=\"let expression of summariseExpressions; let i = index\"><span *ngIf=\"i > 0\">, </span>{{expression.customExpression || expression.expressionType + '(' + (expression.name || '') + ')'}}</span><b>&nbsp;FROM&nbsp;</b>{{originDataItemTitle}}<ng-template [ngIf]=\"summariseFields.length\"><b>&nbsp;GROUP BY&nbsp;</b> {{_.chain(summariseFields).map('name').valueOf().join(', ')}}</ng-template>\n </p>\n </div>\n </div>\n </div>\n\n <ki-whitelisted-sql-functions *ngIf=\"showDocs\" [fields]=\"availableColumns\"></ki-whitelisted-sql-functions>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close>Cancel</button>\n\n <div class=\"flex items-center\">\n <a (click)=\"showDocs = !showDocs\"\n class=\"text-xs mr-2 hover:underline flex items-center primary\">\n view help docs&nbsp;\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-4 w-4\" viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n d=\"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z\"/>\n <path\n d=\"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z\"/>\n </svg>\n </a>\n <button mat-stroked-button color=\"primary\" (click)=\"createCustomExpression()\"\n class=\"create-custom-button\">\n <mat-icon>construction</mat-icon>\n Create custom expression\n </button>\n <button mat-flat-button color=\"primary\" (click)=\"applySettings()\"\n [disabled]=\"!_.every(summariseExpressions, 'customLabel')\">Apply Settings</button>\n </div>\n\n </div>\n\n</div>\n\n\n", styles: [".drop-container{display:flex;align-items:center;justify-content:space-between}.example-container{width:350px;max-width:100%;display:inline-block;vertical-align:top;margin-right:1rem}.example-list{border:solid 1px #ccc;border-top:none;background:white;border-bottom-left-radius:4px;border-bottom-right-radius:4px;display:block;height:500px;max-height:500px;overflow-x:auto}.example-box{padding:16px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:white;font-size:14px;max-height:60px}.example-box mat-select{width:35%}.example-box.expression{padding:0;max-height:inherit}.example-box.expression .custom-container,.example-box.expression .custom-container textarea{width:100%}.example-box.expression .top,.example-box.expression .bottom{padding:10px;width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.example-box.expression .bottom{padding-top:0}.example-box.expression .bottom span{margin-right:.5rem;font-weight:500}.example-box.expression .bottom input{flex:1}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.create-custom-button{margin-right:.5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9.WhitelistedSqlFunctionsComponent, selector: "ki-whitelisted-sql-functions", inputs: ["search", "fields"] }] });
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DatasetSummariseComponent, decorators: [{
101
- type: Component,
102
- args: [{ selector: 'ki-dataset-summarise', host: { class: 'dialog-wrapper' }, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Summarise Data</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content p-4\">\n\n <div class=\"border-t bg-blue-50 p-4 mb-4 -mx-4 -mt-4\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <!-- Heroicon name: mini/information-circle -->\n <svg class=\"h-5 w-5 text-blue-400\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M19 10.5a8.5 8.5 0 11-17 0 8.5 8.5 0 0117 0zM8.25 9.75A.75.75 0 019 9h.253a1.75 1.75 0 011.709 2.13l-.46 2.066a.25.25 0 00.245.304H11a.75.75 0 010 1.5h-.253a1.75 1.75 0 01-1.709-2.13l.46-2.066a.25.25 0 00-.245-.304H9a.75.75 0 01-.75-.75zM10 7a1 1 0 100-2 1 1 0 000 2z\" clip-rule=\"evenodd\" />\n </svg>\n </div>\n <div class=\"ml-3 flex-1 md:flex md:justify-between\">\n <p class=\"text-sm text-blue-700 mb-0\">\n The Summarise transformation is analogous to a <span class=\"font-medium\">SQL GROUP BY</span> expression.\n The <b>Summarise Fields</b> represent the columns to group by, and the <b>Summarise Expression</b> items\n represent columns to Select. <b>Drag</b> the available column to the desired section.<br>\n <a (click)=\"viewExample = true;\" class=\"font-medium hover:underline\">\n View an example of how this summarisation would appear as a SQL statement.</a>\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"drop-container\" cdkDropListGroup>\n <div class=\"example-container\">\n <div class=\"border rounded-t bg-gray-100 text-lg px-2 font-medium py-1 border-gray-300\">\n Available Columns</div>\n\n <div\n cdkDropList\n id=\"availableColumns\"\n [cdkDropListData]=\"availableColumns\"\n class=\"example-list\"\n cdkDropListSortingDisabled\n (cdkDropListDropped)=\"drop($event)\">\n <div class=\"example-box\" *ngFor=\"let item of availableColumns\" cdkDrag>{{item.title}}</div>\n </div>\n </div>\n\n <div class=\"example-container\">\n <div class=\"border rounded-t bg-gray-100 text-lg px-2 font-medium py-1 border-gray-300\">\n Summarise Fields</div>\n\n <div\n cdkDropList\n [cdkDropListData]=\"summariseFields\"\n class=\"example-list\"\n (cdkDropListDropped)=\"drop($event)\">\n <div class=\"example-box p-0 pl-2 h-12\" *ngFor=\"let item of summariseFields; let i = index\" cdkDrag>\n {{item.title}}\n <div class=\"bg-gray-50 h-full flex items-center\">\n <button mat-icon-button color=\"warn\" (click)=\"removeListItem(summariseFields, i)\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"example-container mr-0\">\n <div class=\"border rounded-t bg-gray-100 text-lg px-2 font-medium py-1 border-gray-300\">\n Summarise Expressions</div>\n\n <div\n cdkDropList\n [cdkDropListData]=\"summariseExpressions\"\n id=\"summariseExpressions\"\n class=\"example-list\"\n (cdkDropListDropped)=\"drop($event)\">\n <div class=\"example-box expression\"\n *ngFor=\"let item of summariseExpressions; let i = index\"\n cdkDrag >\n <div class=\"h-full w-full flex flex-row\">\n <div class=\"flex-1 px-1\">\n <div *ngIf=\"item.expressionType !== 'CUSTOM'\"\n class=\"px-2 pt-2 w-full flex items-center flex-row\">\n <div class=\"font-medium w-20 text-gray-600 text-xs\">Column</div>\n <div class=\"truncate w-48\">{{item.title}}</div>\n </div>\n\n <ng-template [ngIf]=\"item.expressionType !== 'CUSTOM'\">\n <div class=\"p-2 w-full flex items-center flex-row\">\n <div class=\"font-medium w-20 text-gray-600 text-xs\">Expression</div>\n <mat-select class=\"p-2 w-48\" [(ngModel)]=\"item.expressionType\">\n <mat-option class=\"text-sm\" *ngFor=\"let type of expressionTypes\"\n [value]=\"type.value\">{{type.label}}</mat-option>\n </mat-select>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"item.expressionType === 'CUSTOM'\">\n <div class=\"top\">\n <div class=\"custom-container\">\n <div class=\"font-medium w-20 text-gray-600 text-xs pb-2\">Expression</div>\n <textarea class=\"w-full\" rows=\"4\" [(ngModel)]=\"item.customExpression\"></textarea>\n </div>\n\n </div>\n </ng-template>\n <div class=\"px-2 pb-2 w-full flex items-center flex-row\">\n <div class=\"font-medium w-20 text-gray-600 text-xs\">Label<span class=\"text-red-500 text-xs\">&nbsp;*</span></div>\n <input type=\"text\" class=\"p-2 w-48\"\n [placeholder]=\"item.expressionType === 'CUSTOM' ? 'custom_expression' : item.expressionType + '_of_' + item.name\"\n [(ngModel)]=\"item.customLabel\" [ngClass]=\"{'border border-red-500': !item.customLabel}\">\n </div>\n </div>\n\n <div class=\"bg-gray-50 flex items-center justify-center\">\n <button mat-icon-button color=\"warn\" (click)=\"removeListItem(summariseExpressions, i)\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n </div>\n\n <div *ngIf=\"viewExample\" class=\"rounded bg-gray-50 p-4 my-2\">\n <div class=\"flex\">\n <div class=\"flex-shrink-0\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 20 20\" stroke-width=\"1.5\" stroke=\"currentColor\"\n class=\"h-5 w-5 text-gray-400\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 18v-5.25m0 0a6.01 6.01 0 001.5-.189m-1.5.189a6.01 6.01 0 01-1.5-.189m3.75 7.478a12.06 12.06 0 01-4.5 0m3.75 2.383a14.406 14.406 0 01-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 10-7.517 0c.85.493 1.509 1.333 1.509 2.316V18\" />\n </svg>\n </div>\n <div class=\"ml-3 flex-1 md:flex md:justify-between\">\n <p class=\"text-sm text-gray-700 mb-0\">\n <b>SELECT&nbsp;</b><span *ngFor=\"let expression of summariseExpressions; let i = index\"><span *ngIf=\"i > 0\">, </span>{{expression.customExpression || expression.expressionType + '(' + (expression.name || '') + ')'}}</span><b>&nbsp;FROM&nbsp;</b>{{originDataItemTitle}}<ng-template [ngIf]=\"summariseFields.length\"><b>&nbsp;GROUP BY&nbsp;</b> {{_.chain(summariseFields).map('name').valueOf().join(', ')}}</ng-template>\n </p>\n </div>\n </div>\n </div>\n\n <ki-whitelisted-sql-functions *ngIf=\"showDocs\" [fields]=\"availableColumns\"></ki-whitelisted-sql-functions>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close>Cancel</button>\n\n <div class=\"flex items-center\">\n <a (click)=\"showDocs = !showDocs\"\n class=\"text-xs mr-2 hover:underline flex items-center primary\">\n view help docs&nbsp;\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-4 w-4\" viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n d=\"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z\"/>\n <path\n d=\"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z\"/>\n </svg>\n </a>\n <button mat-stroked-button color=\"primary\" (click)=\"createCustomExpression()\"\n class=\"create-custom-button\">\n <mat-icon>construction</mat-icon>\n Create custom expression\n </button>\n <button mat-flat-button color=\"primary\" (click)=\"applySettings()\"\n [disabled]=\"!_.every(summariseExpressions, 'customLabel')\">Apply Settings</button>\n </div>\n\n </div>\n\n</div>\n\n\n", styles: [".drop-container{display:flex;align-items:center;justify-content:space-between}.example-container{width:350px;max-width:100%;display:inline-block;vertical-align:top;margin-right:1rem}.example-list{border:solid 1px #ccc;border-top:none;background:white;border-bottom-left-radius:4px;border-bottom-right-radius:4px;display:block;height:500px;max-height:500px;overflow-x:auto}.example-box{padding:16px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:white;font-size:14px;max-height:60px}.example-box mat-select{width:35%}.example-box.expression{padding:0;max-height:inherit}.example-box.expression .custom-container,.example-box.expression .custom-container textarea{width:100%}.example-box.expression .top,.example-box.expression .bottom{padding:10px;width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.example-box.expression .bottom{padding-top:0}.example-box.expression .bottom span{margin-right:.5rem;font-weight:500}.example-box.expression .bottom input{flex:1}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.create-custom-button{margin-right:.5rem}\n"] }]
103
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
104
- type: Inject,
105
- args: [MAT_DIALOG_DATA]
106
- }] }]; } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1zdW1tYXJpc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3IvZGF0YXNldC1zdW1tYXJpc2UvZGF0YXNldC1zdW1tYXJpc2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3IvZGF0YXNldC1zdW1tYXJpc2UvZGF0YXNldC1zdW1tYXJpc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUNILHNCQUFzQixJQUFJLGVBQWUsRUFFNUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQWMsYUFBYSxFQUFFLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ25GLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7OztBQUVqQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBUXpCLE1BQU0sT0FBTyx5QkFBeUI7SUFzQmxDLFlBQW1CLFNBQWtELEVBQ3pCLElBQVM7UUFEbEMsY0FBUyxHQUFULFNBQVMsQ0FBeUM7UUFDekIsU0FBSSxHQUFKLElBQUksQ0FBSztRQXJCOUMscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBQzFCLHlCQUFvQixHQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ04sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVYLG9CQUFlLEdBQUc7WUFDOUIsRUFBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUM7WUFDeEMsRUFBQyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFDO1lBQ3hELEVBQUMsS0FBSyxFQUFFLDZCQUE2QixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUM7WUFDOUQsRUFBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUM7WUFDdEMsRUFBQyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBQztZQUM1RCxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQztZQUN0QyxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQztZQUN0QyxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQztZQUN0QyxFQUFDLEtBQUssRUFBRSxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFDO1NBQ3BFLENBQUM7SUFJRixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ25ELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBRXpELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3BFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDekQsZ0RBQWdEO1lBQ2hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3ZDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDO2dCQUMzRSxVQUFVLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzdFLE9BQU8sVUFBVSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQTRCO1FBQzdCLElBQUksS0FBSyxDQUFDLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDN0MsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2xGO2FBQU07WUFDSCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssa0JBQWtCLEVBQUU7Z0JBQ25ELGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFDbkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQ3BCLEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFeEIsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxzQkFBc0IsRUFBRTtvQkFDL0MsTUFBTSxJQUFJLEdBQVEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMzRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztpQkFDL0I7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sc0JBQXNCO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7WUFDM0IsY0FBYyxFQUFFLFFBQVE7U0FDM0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGFBQWE7UUFDaEIsTUFBTSx1QkFBdUIsR0FBUTtZQUNqQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDO1lBQ3hELFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDdkQsTUFBTSxtQkFBbUIsR0FBUTtvQkFDN0IsY0FBYyxFQUFFLFVBQVUsQ0FBQyxjQUFjO2lCQUM1QyxDQUFDO2dCQUVGLElBQUksVUFBVSxDQUFDLGNBQWMsS0FBSyxRQUFRLEVBQUU7b0JBQ3hDLG1CQUFtQixDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUM7aUJBQzNFO3FCQUFNO29CQUNILG1CQUFtQixDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDdEU7Z0JBRUQsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFO29CQUN4QixtQkFBbUIsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztpQkFDNUQ7Z0JBRUQsT0FBTyxtQkFBbUIsQ0FBQztZQUMvQixDQUFDLENBQUM7U0FDTCxDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNsRCxDQUFDOzt1SEEvRlEseUJBQXlCLG9EQXVCZCxlQUFlOzJHQXZCMUIseUJBQXlCLHdHQ2hCdEMsMi9UQWlMQTs0RkRqS2EseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNJLHNCQUFzQixRQUcxQixFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBQzs7MEJBeUJsQixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBNQVRfTEVHQUNZX0RJQUxPR19EQVRBIGFzIE1BVF9ESUFMT0dfREFUQSxcbiAgICBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHtDZGtEcmFnRHJvcCwgY29weUFycmF5SXRlbSwgbW92ZUl0ZW1JbkFycmF5fSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCAqIGFzIGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBfID0gbG9kYXNoLmRlZmF1bHQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2ktZGF0YXNldC1zdW1tYXJpc2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRhc2V0LXN1bW1hcmlzZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0YXNldC1zdW1tYXJpc2UuY29tcG9uZW50LnNhc3MnXSxcbiAgICBob3N0OiB7Y2xhc3M6ICdkaWFsb2ctd3JhcHBlcid9XG59KVxuZXhwb3J0IGNsYXNzIERhdGFzZXRTdW1tYXJpc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgcHVibGljIGF2YWlsYWJsZUNvbHVtbnM6IGFueSA9IFtdO1xuICAgIHB1YmxpYyBzdW1tYXJpc2VGaWVsZHM6IGFueSA9IFtdO1xuICAgIHB1YmxpYyBzdW1tYXJpc2VFeHByZXNzaW9uczogYW55ID0gW107XG4gICAgcHVibGljIF8gPSBfO1xuICAgIHB1YmxpYyBzaG93RG9jcyA9IGZhbHNlO1xuICAgIHB1YmxpYyBvcmlnaW5EYXRhSXRlbVRpdGxlOiBzdHJpbmc7XG4gICAgcHVibGljIHZpZXdFeGFtcGxlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZXhwcmVzc2lvblR5cGVzID0gW1xuICAgICAgICB7bGFiZWw6ICdOby4gb2YgVmFsdWVzJywgdmFsdWU6ICdDT1VOVCd9LFxuICAgICAgICB7bGFiZWw6ICdOby4gb2YgVW5pcXVlIFZhbHVlcycsIHZhbHVlOiAnQ09VTlRfRElTVElOQ1QnfSxcbiAgICAgICAge2xhYmVsOiAnTm8uIG9mIFZhbHVlcyBhcyBQZXJjZW50YWdlJywgdmFsdWU6ICdDT1VOVF9QRVJDRU5UJ30sXG4gICAgICAgIHtsYWJlbDogJ1N1bSBvZiBWYWx1ZXMnLCB2YWx1ZTogJ1NVTSd9LFxuICAgICAgICB7bGFiZWw6ICdTdW0gb2YgVmFsdWVzIGFzIFBlcmNlbnRhZ2UnLCB2YWx1ZTogJ1NVTV9QRVJDRU5UJ30sXG4gICAgICAgIHtsYWJlbDogJ01pbmltdW0gVmFsdWUnLCB2YWx1ZTogJ01JTid9LFxuICAgICAgICB7bGFiZWw6ICdNYXhpbXVtIFZhbHVlJywgdmFsdWU6ICdNQVgnfSxcbiAgICAgICAge2xhYmVsOiAnQXZlcmFnZSBWYWx1ZScsIHZhbHVlOiAnQVZHJ30sXG4gICAgICAgIHtsYWJlbDogJ0pvaW4gdmFsdWVzIHRvZ2V0aGVyIHdpdGggY29tbWEnLCB2YWx1ZTogJ0dST1VQX0NPTkNBVCd9XG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEYXRhc2V0U3VtbWFyaXNlQ29tcG9uZW50PixcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUNvbHVtbnMgPSB0aGlzLmRhdGEuYXZhaWxhYmxlQ29sdW1ucztcbiAgICAgICAgdGhpcy5vcmlnaW5EYXRhSXRlbVRpdGxlID0gdGhpcy5kYXRhLm9yaWdpbkRhdGFJdGVtVGl0bGU7XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5jb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuc3VtbWFyaXNlRmllbGRzID0gdGhpcy5kYXRhLmNvbmZpZy5zdW1tYXJpc2VGaWVsZE5hbWVzLm1hcChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF8uZmluZCh0aGlzLmF2YWlsYWJsZUNvbHVtbnMsIHtuYW1lOiBmaWVsZH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1bW1hcmlzZUV4cHJlc3Npb25zID0gdGhpcy5kYXRhLmNvbmZpZy5leHByZXNzaW9ucztcbiAgICAgICAgICAgIC8vIEFkZCBpbiB0aGUgZXhpc3RpbmcgY29sdW1uIHRpdGxlcyBmb3IgZGlzcGxheVxuICAgICAgICAgICAgdGhpcy5zdW1tYXJpc2VFeHByZXNzaW9ucy5tYXAoZXhwcmVzc2lvbiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gXy5maW5kKHRoaXMuYXZhaWxhYmxlQ29sdW1ucywge25hbWU6IGV4cHJlc3Npb24uZmllbGROYW1lfSk7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbi50aXRsZSA9IGNvbHVtbiA/IGNvbHVtbi50aXRsZSA6IF8uc3RhcnRDYXNlKGV4cHJlc3Npb24uZmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhwcmVzc2lvbjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIuaWQgPT09ICdhdmFpbGFibGVDb2x1bW5zJykge1xuICAgICAgICAgICAgICAgIGNvcHlBcnJheUl0ZW0oXy5jbG9uZURlZXAoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSksXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmNvbnRhaW5lci5pZCA9PT0gJ3N1bW1hcmlzZUV4cHJlc3Npb25zJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtOiBhbnkgPSBldmVudC5jb250YWluZXIuZGF0YVtldmVudC5jdXJyZW50SW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmV4cHJlc3Npb25UeXBlID0gJ1NVTSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUxpc3RJdGVtKGxpc3QsIGluZGV4KSB7XG4gICAgICAgIGxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlQ3VzdG9tRXhwcmVzc2lvbigpIHtcbiAgICAgICAgdGhpcy5zdW1tYXJpc2VFeHByZXNzaW9ucy5wdXNoKHtcbiAgICAgICAgICAgIGV4cHJlc3Npb25UeXBlOiAnQ1VTVE9NJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXBwbHlTZXR0aW5ncygpIHtcbiAgICAgICAgY29uc3Qgc3VtbWFyaXNlVHJhbnNmb3JtYXRpb246IGFueSA9IHtcbiAgICAgICAgICAgIHN1bW1hcmlzZUZpZWxkTmFtZXM6IF8ubWFwKHRoaXMuc3VtbWFyaXNlRmllbGRzLCAnbmFtZScpLFxuICAgICAgICAgICAgZXhwcmVzc2lvbnM6IF8ubWFwKHRoaXMuc3VtbWFyaXNlRXhwcmVzc2lvbnMsIGV4cHJlc3Npb24gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1bW1hcmlzZUV4cHJlc3Npb246IGFueSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvblR5cGU6IGV4cHJlc3Npb24uZXhwcmVzc2lvblR5cGVcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24uZXhwcmVzc2lvblR5cGUgIT09ICdDVVNUT00nKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcmlzZUV4cHJlc3Npb24uZmllbGROYW1lID0gZXhwcmVzc2lvbi5uYW1lIHx8IGV4cHJlc3Npb24uZmllbGROYW1lO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcmlzZUV4cHJlc3Npb24uY3VzdG9tRXhwcmVzc2lvbiA9IGV4cHJlc3Npb24uY3VzdG9tRXhwcmVzc2lvbjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi5jdXN0b21MYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBzdW1tYXJpc2VFeHByZXNzaW9uLmN1c3RvbUxhYmVsID0gZXhwcmVzc2lvbi5jdXN0b21MYWJlbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3VtbWFyaXNlRXhwcmVzc2lvbjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoc3VtbWFyaXNlVHJhbnNmb3JtYXRpb24pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2dcIiBjZGtEcmFnIGNka0RyYWdSb290RWxlbWVudD1cIi5jZGstb3ZlcmxheS1wYW5lXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLXRpdGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+U3VtbWFyaXNlIERhdGE8L2gyPlxuXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGVudCBwLTRcIj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXQgYmctYmx1ZS01MCBwLTQgbWItNCAtbXgtNCAtbXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIEhlcm9pY29uIG5hbWU6IG1pbmkvaW5mb3JtYXRpb24tY2lyY2xlIC0tPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSB0ZXh0LWJsdWUtNDAwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xOSAxMC41YTguNSA4LjUgMCAxMS0xNyAwIDguNSA4LjUgMCAwMTE3IDB6TTguMjUgOS43NUEuNzUuNzUgMCAwMTkgOWguMjUzYTEuNzUgMS43NSAwIDAxMS43MDkgMi4xM2wtLjQ2IDIuMDY2YS4yNS4yNSAwIDAwLjI0NS4zMDRIMTFhLjc1Ljc1IDAgMDEwIDEuNWgtLjI1M2ExLjc1IDEuNzUgMCAwMS0xLjcwOS0yLjEzbC40Ni0yLjA2NmEuMjUuMjUgMCAwMC0uMjQ1LS4zMDRIOWEuNzUuNzUgMCAwMS0uNzUtLjc1ek0xMCA3YTEgMSAwIDEwMC0yIDEgMSAwIDAwMCAyelwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMyBmbGV4LTEgbWQ6ZmxleCBtZDpqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtYmx1ZS03MDAgbWItMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFN1bW1hcmlzZSB0cmFuc2Zvcm1hdGlvbiBpcyBhbmFsb2dvdXMgdG8gYSA8c3BhbiBjbGFzcz1cImZvbnQtbWVkaXVtXCI+U1FMIEdST1VQIEJZPC9zcGFuPiBleHByZXNzaW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxiPlN1bW1hcmlzZSBGaWVsZHM8L2I+IHJlcHJlc2VudCB0aGUgY29sdW1ucyB0byBncm91cCBieSwgYW5kIHRoZSA8Yj5TdW1tYXJpc2UgRXhwcmVzc2lvbjwvYj4gaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudCBjb2x1bW5zIHRvIFNlbGVjdC4gPGI+RHJhZzwvYj4gdGhlIGF2YWlsYWJsZSBjb2x1bW4gdG8gdGhlIGRlc2lyZWQgc2VjdGlvbi48YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwidmlld0V4YW1wbGUgPSB0cnVlO1wiIGNsYXNzPVwiZm9udC1tZWRpdW0gaG92ZXI6dW5kZXJsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIHN1bW1hcmlzYXRpb24gd291bGQgYXBwZWFyIGFzIGEgU1FMIHN0YXRlbWVudC48L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1jb250YWluZXJcIiBjZGtEcm9wTGlzdEdyb3VwPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLXQgYmctZ3JheS0xMDAgdGV4dC1sZyBweC0yIGZvbnQtbWVkaXVtIHB5LTEgYm9yZGVyLWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgIEF2YWlsYWJsZSBDb2x1bW5zPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYXZhaWxhYmxlQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiYXZhaWxhYmxlQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhhbXBsZS1saXN0XCJcbiAgICAgICAgICAgICAgICAgICAgY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtYm94XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYXZhaWxhYmxlQ29sdW1uc1wiIGNka0RyYWc+e3tpdGVtLnRpdGxlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtdCBiZy1ncmF5LTEwMCB0ZXh0LWxnIHB4LTIgZm9udC1tZWRpdW0gcHktMSBib3JkZXItZ3JheS0zMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgU3VtbWFyaXNlIEZpZWxkczwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInN1bW1hcmlzZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhhbXBsZS1saXN0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtYm94IHAtMCBwbC0yIGgtMTJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdW1tYXJpc2VGaWVsZHM7IGxldCBpID0gaW5kZXhcIiBjZGtEcmFnPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLnRpdGxlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LTUwIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJyZW1vdmVMaXN0SXRlbShzdW1tYXJpc2VGaWVsZHMsIGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtY29udGFpbmVyIG1yLTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtdCBiZy1ncmF5LTEwMCB0ZXh0LWxnIHB4LTIgZm9udC1tZWRpdW0gcHktMSBib3JkZXItZ3JheS0zMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgU3VtbWFyaXNlIEV4cHJlc3Npb25zPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwic3VtbWFyaXNlRXhwcmVzc2lvbnNcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cInN1bW1hcmlzZUV4cHJlc3Npb25zXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJleGFtcGxlLWxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1ib3ggZXhwcmVzc2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3VtbWFyaXNlRXhwcmVzc2lvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWcgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCB3LWZ1bGwgZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgcHgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5leHByZXNzaW9uVHlwZSAhPT0gJ0NVU1RPTSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0yIHB0LTIgdy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1tZWRpdW0gdy0yMCB0ZXh0LWdyYXktNjAwIHRleHQteHNcIj5Db2x1bW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnVuY2F0ZSB3LTQ4XCI+e3tpdGVtLnRpdGxlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIml0ZW0uZXhwcmVzc2lvblR5cGUgIT09ICdDVVNUT00nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yIHctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB3LTIwIHRleHQtZ3JheS02MDAgdGV4dC14c1wiPkV4cHJlc3Npb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cInAtMiB3LTQ4XCIgWyhuZ01vZGVsKV09XCJpdGVtLmV4cHJlc3Npb25UeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwidGV4dC1zbVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIGV4cHJlc3Npb25UeXBlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0eXBlLnZhbHVlXCI+e3t0eXBlLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpdGVtLmV4cHJlc3Npb25UeXBlID09PSAnQ1VTVE9NJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB3LTIwIHRleHQtZ3JheS02MDAgdGV4dC14cyBwYi0yXCI+RXhwcmVzc2lvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJ3LWZ1bGxcIiByb3dzPVwiNFwiIFsobmdNb2RlbCldPVwiaXRlbS5jdXN0b21FeHByZXNzaW9uXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHBiLTIgdy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1tZWRpdW0gdy0yMCB0ZXh0LWdyYXktNjAwIHRleHQteHNcIj5MYWJlbDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwIHRleHQteHNcIj4mbmJzcDsqPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJwLTIgdy00OFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0uZXhwcmVzc2lvblR5cGUgPT09ICdDVVNUT00nID8gJ2N1c3RvbV9leHByZXNzaW9uJyA6IGl0ZW0uZXhwcmVzc2lvblR5cGUgKyAnX29mXycgKyBpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5jdXN0b21MYWJlbFwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyIGJvcmRlci1yZWQtNTAwJzogIWl0ZW0uY3VzdG9tTGFiZWx9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLWdyYXktNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cInJlbW92ZUxpc3RJdGVtKHN1bW1hcmlzZUV4cHJlc3Npb25zLCBpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3RXhhbXBsZVwiIGNsYXNzPVwicm91bmRlZCBiZy1ncmF5LTUwIHAtNCBteS0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC01IHctNSB0ZXh0LWdyYXktNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMTIgMTh2LTUuMjVtMCAwYTYuMDEgNi4wMSAwIDAwMS41LS4xODltLTEuNS4xODlhNi4wMSA2LjAxIDAgMDEtMS41LS4xODltMy43NSA3LjQ3OGExMi4wNiAxMi4wNiAwIDAxLTQuNSAwbTMuNzUgMi4zODNhMTQuNDA2IDE0LjQwNiAwIDAxLTMgME0xNC4yNSAxOHYtLjE5MmMwLS45ODMuNjU4LTEuODIzIDEuNTA4LTIuMzE2YTcuNSA3LjUgMCAxMC03LjUxNyAwYy44NS40OTMgMS41MDkgMS4zMzMgMS41MDkgMi4zMTZWMThcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0zIGZsZXgtMSBtZDpmbGV4IG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTcwMCBtYi0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj5TRUxFQ1QmbmJzcDs8L2I+PHNwYW4gKm5nRm9yPVwibGV0IGV4cHJlc3Npb24gb2Ygc3VtbWFyaXNlRXhwcmVzc2lvbnM7IGxldCBpID0gaW5kZXhcIj48c3BhbiAqbmdJZj1cImkgPiAwXCI+LCA8L3NwYW4+e3tleHByZXNzaW9uLmN1c3RvbUV4cHJlc3Npb24gfHwgZXhwcmVzc2lvbi5leHByZXNzaW9uVHlwZSArICcoJyArIChleHByZXNzaW9uLm5hbWUgfHwgJycpICsgJyknfX08L3NwYW4+PGI+Jm5ic3A7RlJPTSZuYnNwOzwvYj57e29yaWdpbkRhdGFJdGVtVGl0bGV9fTxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdW1tYXJpc2VGaWVsZHMubGVuZ3RoXCI+PGI+Jm5ic3A7R1JPVVAgQlkmbmJzcDs8L2I+IHt7Xy5jaGFpbihzdW1tYXJpc2VGaWVsZHMpLm1hcCgnbmFtZScpLnZhbHVlT2YoKS5qb2luKCcsICcpfX08L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGtpLXdoaXRlbGlzdGVkLXNxbC1mdW5jdGlvbnMgKm5nSWY9XCJzaG93RG9jc1wiIFtmaWVsZHNdPVwiYXZhaWxhYmxlQ29sdW1uc1wiPjwva2ktd2hpdGVsaXN0ZWQtc3FsLWZ1bmN0aW9ucz5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1mb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+Q2FuY2VsPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8YSAoY2xpY2spPVwic2hvd0RvY3MgPSAhc2hvd0RvY3NcIlxuICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIG1yLTIgaG92ZXI6dW5kZXJsaW5lIGZsZXggaXRlbXMtY2VudGVyIHByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICB2aWV3IGhlbHAgZG9jcyZuYnNwO1xuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiaC00IHctNFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAzYTEgMSAwIDEwMCAyaDIuNTg2bC02LjI5MyA2LjI5M2ExIDEgMCAxMDEuNDE0IDEuNDE0TDE1IDYuNDE0VjlhMSAxIDAgMTAyIDBWNGExIDEgMCAwMC0xLTFoLTV6XCIvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk01IDVhMiAyIDAgMDAtMiAydjhhMiAyIDAgMDAyIDJoOGEyIDIgMCAwMDItMnYtM2ExIDEgMCAxMC0yIDB2M0g1VjdoM2ExIDEgMCAwMDAtMkg1elwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjcmVhdGVDdXN0b21FeHByZXNzaW9uKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3JlYXRlLWN1c3RvbS1idXR0b25cIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y29uc3RydWN0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICBDcmVhdGUgY3VzdG9tIGV4cHJlc3Npb25cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImFwcGx5U2V0dGluZ3MoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfLmV2ZXJ5KHN1bW1hcmlzZUV4cHJlc3Npb25zLCAnY3VzdG9tTGFiZWwnKVwiPkFwcGx5IFNldHRpbmdzPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbjwvZGl2PlxuXG5cbiJdfQ==
@@ -1,20 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/material/legacy-dialog";
4
- export class MoveTransformationConfirmationComponent {
5
- constructor(dialogRef) {
6
- this.dialogRef = dialogRef;
7
- }
8
- ngOnInit() {
9
- }
10
- close(res) {
11
- this.dialogRef.close(res);
12
- }
13
- }
14
- MoveTransformationConfirmationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveTransformationConfirmationComponent, deps: [{ token: i1.MatLegacyDialogRef }], target: i0.ɵɵFactoryTarget.Component });
15
- MoveTransformationConfirmationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveTransformationConfirmationComponent, selector: "ki-move-transformation-confirmation", ngImport: i0, template: "<div class=\"flex flex-col h-full justify-between p-8\">\n <div>\n <div class=\"mx-auto flex h-12 w-12 items-center justify-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"\n class=\"w-12 h-12 text-orange-500\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\" />\n </svg>\n\n </div>\n <div class=\"mt-3 text-center sm:mt-5\">\n <h3 class=\"text-lg font-medium leading-6 text-gray-900\" id=\"modal-title\">Move Transformation?</h3>\n <div class=\"mt-2\">\n <p class=\"text-sm text-gray-500\">\n You have made changes which may result in upstream transformations becoming incompatible, causing\n the evaluation to fail.\n </p>\n\n <p class=\"text-sm text-gray-500\">\n You can choose to proceed with the evaluation based on the new position\n of the selected transformation or cancel the changes you have made.\n </p>\n </div>\n </div>\n </div>\n <div class=\"mt-5 flex align-center justify-between\">\n <button type=\"button\" (click)=\"close()\"\n class=\"mr-2 inline-flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm\">Cancel</button>\n <button type=\"button\" (click)=\"close('proceed')\"\n class=\"mx-2 inline-flex w-full justify-center rounded-md border border-primary text-primary bg-white px-4 py-2 text-sm font-medium shadow-sm\">Proceed Anyway</button>\n </div>\n</div>\n\n", styles: [""] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveTransformationConfirmationComponent, decorators: [{
17
- type: Component,
18
- args: [{ selector: 'ki-move-transformation-confirmation', template: "<div class=\"flex flex-col h-full justify-between p-8\">\n <div>\n <div class=\"mx-auto flex h-12 w-12 items-center justify-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"\n class=\"w-12 h-12 text-orange-500\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\" />\n </svg>\n\n </div>\n <div class=\"mt-3 text-center sm:mt-5\">\n <h3 class=\"text-lg font-medium leading-6 text-gray-900\" id=\"modal-title\">Move Transformation?</h3>\n <div class=\"mt-2\">\n <p class=\"text-sm text-gray-500\">\n You have made changes which may result in upstream transformations becoming incompatible, causing\n the evaluation to fail.\n </p>\n\n <p class=\"text-sm text-gray-500\">\n You can choose to proceed with the evaluation based on the new position\n of the selected transformation or cancel the changes you have made.\n </p>\n </div>\n </div>\n </div>\n <div class=\"mt-5 flex align-center justify-between\">\n <button type=\"button\" (click)=\"close()\"\n class=\"mr-2 inline-flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm\">Cancel</button>\n <button type=\"button\" (click)=\"close('proceed')\"\n class=\"mx-2 inline-flex w-full justify-center rounded-md border border-primary text-primary bg-white px-4 py-2 text-sm font-medium shadow-sm\">Proceed Anyway</button>\n </div>\n</div>\n\n" }]
19
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }]; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS10cmFuc2Zvcm1hdGlvbi1jb25maXJtYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3IvbW92ZS10cmFuc2Zvcm1hdGlvbi1jb25maXJtYXRpb24vbW92ZS10cmFuc2Zvcm1hdGlvbi1jb25maXJtYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3IvbW92ZS10cmFuc2Zvcm1hdGlvbi1jb25maXJtYXRpb24vbW92ZS10cmFuc2Zvcm1hdGlvbi1jb25maXJtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQzs7O0FBUWhELE1BQU0sT0FBTyx1Q0FBdUM7SUFFaEQsWUFBbUIsU0FBZ0U7UUFBaEUsY0FBUyxHQUFULFNBQVMsQ0FBdUQ7SUFDbkYsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUk7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDOztxSUFWUSx1Q0FBdUM7eUhBQXZDLHVDQUF1QywyRUNScEQsdTVEQWdDQTs0RkR4QmEsdUNBQXVDO2tCQUxuRCxTQUFTOytCQUNJLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdraS1tb3ZlLXRyYW5zZm9ybWF0aW9uLWNvbmZpcm1hdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21vdmUtdHJhbnNmb3JtYXRpb24tY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tb3ZlLXRyYW5zZm9ybWF0aW9uLWNvbmZpcm1hdGlvbi5jb21wb25lbnQuc2FzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1vdmVUcmFuc2Zvcm1hdGlvbkNvbmZpcm1hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TW92ZVRyYW5zZm9ybWF0aW9uQ29uZmlybWF0aW9uQ29tcG9uZW50Pikge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZShyZXM/KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlcyk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsIGp1c3RpZnktYmV0d2VlbiBwLThcIj5cbiAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBmbGV4IGgtMTIgdy0xMiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMiBoLTEyIHRleHQtb3JhbmdlLTUwMFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMTIgOXYzLjc1bS05LjMwMyAzLjM3NmMtLjg2NiAxLjUuMjE3IDMuMzc0IDEuOTQ4IDMuMzc0aDE0LjcxYzEuNzMgMCAyLjgxMy0xLjg3NCAxLjk0OC0zLjM3NEwxMy45NDkgMy4zNzhjLS44NjYtMS41LTMuMDMyLTEuNS0zLjg5OCAwTDIuNjk3IDE2LjEyNnpNMTIgMTUuNzVoLjAwN3YuMDA4SDEydi0uMDA4elwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgdGV4dC1jZW50ZXIgc206bXQtNVwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSBsZWFkaW5nLTYgdGV4dC1ncmF5LTkwMFwiIGlkPVwibW9kYWwtdGl0bGVcIj5Nb3ZlIFRyYW5zZm9ybWF0aW9uPzwvaDM+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIFlvdSBoYXZlIG1hZGUgY2hhbmdlcyB3aGljaCBtYXkgcmVzdWx0IGluIHVwc3RyZWFtIHRyYW5zZm9ybWF0aW9ucyBiZWNvbWluZyBpbmNvbXBhdGlibGUsIGNhdXNpbmdcbiAgICAgICAgICAgICAgICAgICAgdGhlIGV2YWx1YXRpb24gdG8gZmFpbC5cbiAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNob29zZSB0byBwcm9jZWVkIHdpdGggdGhlIGV2YWx1YXRpb24gYmFzZWQgb24gdGhlIG5ldyBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc2VsZWN0ZWQgdHJhbnNmb3JtYXRpb24gb3IgY2FuY2VsIHRoZSBjaGFuZ2VzIHlvdSBoYXZlIG1hZGUuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtdC01IGZsZXggYWxpZ24tY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtci0yIGlubGluZS1mbGV4IHctZnVsbCBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBzaGFkb3ctc21cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKCdwcm9jZWVkJylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMiBpbmxpbmUtZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5IGJnLXdoaXRlIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHNoYWRvdy1zbVwiPlByb2NlZWQgQW55d2F5PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuIl19
@@ -1,20 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/material/legacy-dialog";
4
- export class RemoveTransformationWarningComponent {
5
- constructor(dialogRef) {
6
- this.dialogRef = dialogRef;
7
- }
8
- ngOnInit() {
9
- }
10
- close(res) {
11
- this.dialogRef.close(res);
12
- }
13
- }
14
- RemoveTransformationWarningComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveTransformationWarningComponent, deps: [{ token: i1.MatLegacyDialogRef }], target: i0.ɵɵFactoryTarget.Component });
15
- RemoveTransformationWarningComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RemoveTransformationWarningComponent, selector: "ki-remove-transformation-warning", ngImport: i0, template: "<div class=\"flex flex-col h-full justify-between p-8\">\n <div>\n <div class=\"mx-auto flex h-12 w-12 items-center justify-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"\n class=\"w-12 h-12 text-orange-500\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\" />\n </svg>\n\n </div>\n <div class=\"mt-3 text-center sm:mt-5\">\n <h3 class=\"text-lg font-medium leading-6 text-gray-900\" id=\"modal-title\">Remove Transformation?</h3>\n <div class=\"mt-2\">\n <p class=\"text-sm text-gray-500\">\n You are about to remove a transformation which may result in upstream transformations becoming\n incompatible, causing the evaluation to fail.\n </p>\n\n <p class=\"text-sm text-gray-500\">\n You can choose to proceed with the removal or cancel the change.\n </p>\n </div>\n </div>\n </div>\n <div class=\"mt-5 flex align-center justify-between\">\n <button type=\"button\" mat-dialog-close\n class=\"mr-2 inline-flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm\">\n Cancel\n </button>\n <button type=\"button\" [matDialogClose]=\"true\"\n class=\"mx-2 inline-flex w-full justify-center rounded-md border border-primary text-primary bg-white px-4 py-2 text-sm font-medium shadow-sm\">\n Proceed Anyway\n </button>\n\n\n </div>\n</div>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RemoveTransformationWarningComponent, decorators: [{
17
- type: Component,
18
- args: [{ selector: 'ki-remove-transformation-warning', template: "<div class=\"flex flex-col h-full justify-between p-8\">\n <div>\n <div class=\"mx-auto flex h-12 w-12 items-center justify-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"\n class=\"w-12 h-12 text-orange-500\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\" />\n </svg>\n\n </div>\n <div class=\"mt-3 text-center sm:mt-5\">\n <h3 class=\"text-lg font-medium leading-6 text-gray-900\" id=\"modal-title\">Remove Transformation?</h3>\n <div class=\"mt-2\">\n <p class=\"text-sm text-gray-500\">\n You are about to remove a transformation which may result in upstream transformations becoming\n incompatible, causing the evaluation to fail.\n </p>\n\n <p class=\"text-sm text-gray-500\">\n You can choose to proceed with the removal or cancel the change.\n </p>\n </div>\n </div>\n </div>\n <div class=\"mt-5 flex align-center justify-between\">\n <button type=\"button\" mat-dialog-close\n class=\"mr-2 inline-flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm\">\n Cancel\n </button>\n <button type=\"button\" [matDialogClose]=\"true\"\n class=\"mx-2 inline-flex w-full justify-center rounded-md border border-primary text-primary bg-white px-4 py-2 text-sm font-medium shadow-sm\">\n Proceed Anyway\n </button>\n\n\n </div>\n</div>\n\n" }]
19
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }]; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLXRyYW5zZm9ybWF0aW9uLXdhcm5pbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3IvcmVtb3ZlLXRyYW5zZm9ybWF0aW9uLXdhcm5pbmcvcmVtb3ZlLXRyYW5zZm9ybWF0aW9uLXdhcm5pbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3IvcmVtb3ZlLXRyYW5zZm9ybWF0aW9uLXdhcm5pbmcvcmVtb3ZlLXRyYW5zZm9ybWF0aW9uLXdhcm5pbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQzs7O0FBUWhELE1BQU0sT0FBTyxvQ0FBb0M7SUFDN0MsWUFBbUIsU0FBNkQ7UUFBN0QsY0FBUyxHQUFULFNBQVMsQ0FBb0Q7SUFDaEYsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUk7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDOztrSUFUUSxvQ0FBb0M7c0hBQXBDLG9DQUFvQyx3RUNSakQsMDNEQXFDQTs0RkQ3QmEsb0NBQW9DO2tCQUxoRCxTQUFTOytCQUNJLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdraS1yZW1vdmUtdHJhbnNmb3JtYXRpb24td2FybmluZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JlbW92ZS10cmFuc2Zvcm1hdGlvbi13YXJuaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZW1vdmUtdHJhbnNmb3JtYXRpb24td2FybmluZy5jb21wb25lbnQuc2FzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlbW92ZVRyYW5zZm9ybWF0aW9uV2FybmluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFJlbW92ZVRyYW5zZm9ybWF0aW9uV2FybmluZ0NvbXBvbmVudD4pIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UocmVzPykge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXMpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGgtZnVsbCBqdXN0aWZ5LWJldHdlZW4gcC04XCI+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gZmxleCBoLTEyIHctMTIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTIgaC0xMiB0ZXh0LW9yYW5nZS01MDBcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBkPVwiTTEyIDl2My43NW0tOS4zMDMgMy4zNzZjLS44NjYgMS41LjIxNyAzLjM3NCAxLjk0OCAzLjM3NGgxNC43MWMxLjczIDAgMi44MTMtMS44NzQgMS45NDgtMy4zNzRMMTMuOTQ5IDMuMzc4Yy0uODY2LTEuNS0zLjAzMi0xLjUtMy44OTggMEwyLjY5NyAxNi4xMjZ6TTEyIDE1Ljc1aC4wMDd2LjAwOEgxMnYtLjAwOHpcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHRleHQtY2VudGVyIHNtOm10LTVcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtbGcgZm9udC1tZWRpdW0gbGVhZGluZy02IHRleHQtZ3JheS05MDBcIiBpZD1cIm1vZGFsLXRpdGxlXCI+UmVtb3ZlIFRyYW5zZm9ybWF0aW9uPzwvaDM+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIFlvdSBhcmUgYWJvdXQgdG8gcmVtb3ZlIGEgdHJhbnNmb3JtYXRpb24gd2hpY2ggbWF5IHJlc3VsdCBpbiB1cHN0cmVhbSB0cmFuc2Zvcm1hdGlvbnMgYmVjb21pbmdcbiAgICAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlLCBjYXVzaW5nIHRoZSBldmFsdWF0aW9uIHRvIGZhaWwuXG4gICAgICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gcHJvY2VlZCB3aXRoIHRoZSByZW1vdmFsIG9yIGNhbmNlbCB0aGUgY2hhbmdlLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNSBmbGV4IGFsaWduLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWRpYWxvZy1jbG9zZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXItMiBpbmxpbmUtZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgc2hhZG93LXNtXCI+XG4gICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXREaWFsb2dDbG9zZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm14LTIgaW5saW5lLWZsZXggdy1mdWxsIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSBiZy13aGl0ZSBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSBzaGFkb3ctc21cIj5cbiAgICAgICAgICAgIFByb2NlZWQgQW55d2F5XG4gICAgICAgIDwvYnV0dG9uPlxuXG5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
@@ -1,58 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
3
- import * as lodash from 'lodash';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/legacy-dialog";
6
- import * as i2 from "@angular/common/http";
7
- import * as i3 from "../../../../services/project.service";
8
- import * as i4 from "@angular/common";
9
- import * as i5 from "@angular/material/legacy-button";
10
- import * as i6 from "@angular/material/icon";
11
- import * as i7 from "@angular/cdk/drag-drop";
12
- import * as i8 from "@angular/forms";
13
- import * as i9 from "@angular/material/legacy-slide-toggle";
14
- import * as i10 from "@angular/material/legacy-list";
15
- const _ = lodash.default;
16
- export class SaveAsQueryComponent {
17
- constructor(dialogRef, data, http, projectService) {
18
- this.dialogRef = dialogRef;
19
- this.data = data;
20
- this.http = http;
21
- this.projectService = projectService;
22
- this.categories = [];
23
- this.includeAllTransformations = true;
24
- this._ = _;
25
- this.filteredTransformations = [];
26
- this.projectKey = '';
27
- }
28
- ngOnInit() {
29
- this.datasetInstanceSummary = this.data.datasetInstanceSummary;
30
- this.transformations = this.data.transformations;
31
- this.updateExcludedTransformations();
32
- this.projectKey = this.projectService.activeProject.getValue() ? this.projectService.activeProject.getValue().projectKey : '';
33
- this.loadCategories();
34
- }
35
- updateExcludedTransformations() {
36
- this.filteredTransformations = _.filter(this.transformations, transformation => {
37
- return this.includeAllTransformations ? true : (!transformation.exclude || transformation.type === 'multisort');
38
- });
39
- }
40
- showSelected(o1, o2) {
41
- return o1 && o2 && o1.key === o2.key;
42
- }
43
- async loadCategories() {
44
- this.categories = await this.http.get('/account/metadata/category?projectKey=' + this.projectKey, {
45
- params: { limit: '100' }
46
- }).toPromise();
47
- }
48
- }
49
- SaveAsQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SaveAsQueryComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.HttpClient }, { token: i3.ProjectService }], target: i0.ɵɵFactoryTarget.Component });
50
- SaveAsQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SaveAsQueryComponent, selector: "ki-save-as-query", host: { classAttribute: "dialog-wrapper" }, ngImport: i0, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Copy Query</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n\n <div class=\"my-4\">\n <p><b>Title</b></p>\n <input class=\"full\" type=\"text\" placeholder=\"Enter title\" [(ngModel)]=\"datasetInstanceSummary.title\">\n </div>\n\n <div *ngIf=\"transformations.length\" class=\"my-4\">\n <p><b>Transformations</b></p>\n\n <ng-template [ngIf]=\"_.filter(transformations, 'exclude').length\">\n <mat-slide-toggle [(ngModel)]=\"includeAllTransformations\" (ngModelChange)=\"updateExcludedTransformations()\">\n Include disabled transformations</mat-slide-toggle>\n <div class=\"text-xs text-gray-400\">When saving this new query you can decide to exclude any\n disabled transformations in the current query.</div>\n\n </ng-template>\n\n <div class=\"mt-4 text-sm text-gray-500\">Transformations being copied...</div>\n\n <div class=\"flex flex-wrap\">\n <div class=\"bg-white border rounded-full px-2 py-1 mr-2 text-gray-500\"\n *ngFor=\"let transformation of filteredTransformations\">\n {{_.startCase(transformation.type)}}\n </div>\n </div>\n\n </div>\n\n <div class=\"my-4\">\n <p><b>Summary</b></p>\n <input class=\"full\" type=\"text\" placeholder=\"Enter summary\" [(ngModel)]=\"datasetInstanceSummary.summary\">\n </div>\n\n <div class=\"my-4\">\n <p><b>Description</b></p>\n <textarea [(ngModel)]=\"datasetInstanceSummary.description\" placeholder=\"Enter description\" rows=\"5\"\n class=\"w-full\"></textarea>\n </div>\n\n <div class=\"my-4\">\n <p><b>Categories</b></p>\n\n <mat-selection-list [compareWith]=\"showSelected\" [(ngModel)]=\"datasetInstanceSummary.categories\" >\n <mat-list-option *ngFor=\"let category of categories\" checkboxPosition=\"before\" [value]=\"category\">\n {{category.category}}\n </mat-list-option>\n </mat-selection-list>\n </div>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close>Cancel</button>\n\n <button mat-flat-button color=\"primary\" [mat-dialog-close]=\"filteredTransformations\">Save Copy</button>\n </div>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatLegacySlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i10.MatLegacySelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i10.MatLegacyListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }] });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SaveAsQueryComponent, decorators: [{
52
- type: Component,
53
- args: [{ selector: 'ki-save-as-query', host: { class: 'dialog-wrapper' }, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>Copy Query</h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n\n <div class=\"my-4\">\n <p><b>Title</b></p>\n <input class=\"full\" type=\"text\" placeholder=\"Enter title\" [(ngModel)]=\"datasetInstanceSummary.title\">\n </div>\n\n <div *ngIf=\"transformations.length\" class=\"my-4\">\n <p><b>Transformations</b></p>\n\n <ng-template [ngIf]=\"_.filter(transformations, 'exclude').length\">\n <mat-slide-toggle [(ngModel)]=\"includeAllTransformations\" (ngModelChange)=\"updateExcludedTransformations()\">\n Include disabled transformations</mat-slide-toggle>\n <div class=\"text-xs text-gray-400\">When saving this new query you can decide to exclude any\n disabled transformations in the current query.</div>\n\n </ng-template>\n\n <div class=\"mt-4 text-sm text-gray-500\">Transformations being copied...</div>\n\n <div class=\"flex flex-wrap\">\n <div class=\"bg-white border rounded-full px-2 py-1 mr-2 text-gray-500\"\n *ngFor=\"let transformation of filteredTransformations\">\n {{_.startCase(transformation.type)}}\n </div>\n </div>\n\n </div>\n\n <div class=\"my-4\">\n <p><b>Summary</b></p>\n <input class=\"full\" type=\"text\" placeholder=\"Enter summary\" [(ngModel)]=\"datasetInstanceSummary.summary\">\n </div>\n\n <div class=\"my-4\">\n <p><b>Description</b></p>\n <textarea [(ngModel)]=\"datasetInstanceSummary.description\" placeholder=\"Enter description\" rows=\"5\"\n class=\"w-full\"></textarea>\n </div>\n\n <div class=\"my-4\">\n <p><b>Categories</b></p>\n\n <mat-selection-list [compareWith]=\"showSelected\" [(ngModel)]=\"datasetInstanceSummary.categories\" >\n <mat-list-option *ngFor=\"let category of categories\" checkboxPosition=\"before\" [value]=\"category\">\n {{category.category}}\n </mat-list-option>\n </mat-selection-list>\n </div>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close>Cancel</button>\n\n <button mat-flat-button color=\"primary\" [mat-dialog-close]=\"filteredTransformations\">Save Copy</button>\n </div>\n\n</div>\n" }]
54
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
55
- type: Inject,
56
- args: [MAT_DIALOG_DATA]
57
- }] }, { type: i2.HttpClient }, { type: i3.ProjectService }]; } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1hcy1xdWVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raW5pbnRlbC9zcmMvbGliL2NvbXBvbmVudHMvZGF0YXNldC9kYXRhc2V0LWVkaXRvci9zYXZlLWFzLXF1ZXJ5L3NhdmUtYXMtcXVlcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGFzZXQvZGF0YXNldC1lZGl0b3Ivc2F2ZS1hcy1xdWVyeS9zYXZlLWFzLXF1ZXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFDSCxzQkFBc0IsSUFBSSxlQUFlLEVBRTVDLE1BQU0saUNBQWlDLENBQUM7QUFHekMsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7Ozs7OztBQUNqQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBUXpCLE1BQU0sT0FBTyxvQkFBb0I7SUFXN0IsWUFBbUIsU0FBNkMsRUFDcEIsSUFBUyxFQUNqQyxJQUFnQixFQUNoQixjQUE4QjtRQUgvQixjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWDNDLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFFckIsOEJBQXlCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE1BQUMsR0FBRyxDQUFDLENBQUM7UUFDTiw0QkFBdUIsR0FBUSxFQUFFLENBQUM7UUFFakMsZUFBVSxHQUFHLEVBQUUsQ0FBQztJQU14QixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQy9ELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDakQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFOUgsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSw2QkFBNkI7UUFDaEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsRUFBRTtZQUMzRSxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQ3BILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFlBQVksQ0FBQyxFQUFPLEVBQUUsRUFBTztRQUNoQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsd0NBQXdDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM5RixNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDO1NBQ3pCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOztrSEF4Q1Esb0JBQW9CLG9EQVlULGVBQWU7c0dBWjFCLG9CQUFvQixvR0NoQmpDLG1yRkFxRUE7NEZEckRhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDSSxrQkFBa0IsUUFHdEIsRUFBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUM7OzBCQWNsQixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBNQVRfTEVHQUNZX0RJQUxPR19EQVRBIGFzIE1BVF9ESUFMT0dfREFUQSxcbiAgICBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1Byb2plY3RTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgbG9kYXNoIGZyb20gJ2xvZGFzaCc7XG5jb25zdCBfID0gbG9kYXNoLmRlZmF1bHQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2ktc2F2ZS1hcy1xdWVyeScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NhdmUtYXMtcXVlcnkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NhdmUtYXMtcXVlcnkuY29tcG9uZW50LnNhc3MnXSxcbiAgICBob3N0OiB7Y2xhc3M6ICdkaWFsb2ctd3JhcHBlcid9XG59KVxuZXhwb3J0IGNsYXNzIFNhdmVBc1F1ZXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBkYXRhc2V0SW5zdGFuY2VTdW1tYXJ5OiBhbnk7XG4gICAgcHVibGljIGNhdGVnb3JpZXM6IGFueSA9IFtdO1xuICAgIHB1YmxpYyB0cmFuc2Zvcm1hdGlvbnM6IGFueTtcbiAgICBwdWJsaWMgaW5jbHVkZUFsbFRyYW5zZm9ybWF0aW9ucyA9IHRydWU7XG4gICAgcHVibGljIF8gPSBfO1xuICAgIHB1YmxpYyBmaWx0ZXJlZFRyYW5zZm9ybWF0aW9uczogYW55ID0gW107XG5cbiAgICBwcml2YXRlIHByb2plY3RLZXkgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTYXZlQXNRdWVyeUNvbXBvbmVudD4sXG4gICAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZGF0YXNldEluc3RhbmNlU3VtbWFyeSA9IHRoaXMuZGF0YS5kYXRhc2V0SW5zdGFuY2VTdW1tYXJ5O1xuICAgICAgICB0aGlzLnRyYW5zZm9ybWF0aW9ucyA9IHRoaXMuZGF0YS50cmFuc2Zvcm1hdGlvbnM7XG4gICAgICAgIHRoaXMudXBkYXRlRXhjbHVkZWRUcmFuc2Zvcm1hdGlvbnMoKTtcbiAgICAgICAgdGhpcy5wcm9qZWN0S2V5ID0gdGhpcy5wcm9qZWN0U2VydmljZS5hY3RpdmVQcm9qZWN0LmdldFZhbHVlKCkgPyB0aGlzLnByb2plY3RTZXJ2aWNlLmFjdGl2ZVByb2plY3QuZ2V0VmFsdWUoKS5wcm9qZWN0S2V5IDogJyc7XG5cbiAgICAgICAgdGhpcy5sb2FkQ2F0ZWdvcmllcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVFeGNsdWRlZFRyYW5zZm9ybWF0aW9ucygpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZFRyYW5zZm9ybWF0aW9ucyA9IF8uZmlsdGVyKHRoaXMudHJhbnNmb3JtYXRpb25zLCB0cmFuc2Zvcm1hdGlvbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbmNsdWRlQWxsVHJhbnNmb3JtYXRpb25zID8gdHJ1ZSA6ICghdHJhbnNmb3JtYXRpb24uZXhjbHVkZSB8fCB0cmFuc2Zvcm1hdGlvbi50eXBlID09PSAnbXVsdGlzb3J0Jyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93U2VsZWN0ZWQobzE6IGFueSwgbzI6IGFueSkge1xuICAgICAgICByZXR1cm4gbzEgJiYgbzIgJiYgbzEua2V5ID09PSBvMi5rZXk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkQ2F0ZWdvcmllcygpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5odHRwLmdldCgnL2FjY291bnQvbWV0YWRhdGEvY2F0ZWdvcnk/cHJvamVjdEtleT0nICsgdGhpcy5wcm9qZWN0S2V5LCB7XG4gICAgICAgICAgICBwYXJhbXM6IHtsaW1pdDogJzEwMCd9XG4gICAgICAgIH0pLnRvUHJvbWlzZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2dcIiBjZGtEcmFnIGNka0RyYWdSb290RWxlbWVudD1cIi5jZGstb3ZlcmxheS1wYW5lXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLXRpdGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+Q29weSBRdWVyeTwvaDI+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj5cbiAgICAgICAgICAgIDxwPjxiPlRpdGxlPC9iPjwvcD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZ1bGxcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGl0bGVcIiBbKG5nTW9kZWwpXT1cImRhdGFzZXRJbnN0YW5jZVN1bW1hcnkudGl0bGVcIj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cInRyYW5zZm9ybWF0aW9ucy5sZW5ndGhcIiBjbGFzcz1cIm15LTRcIj5cbiAgICAgICAgICAgIDxwPjxiPlRyYW5zZm9ybWF0aW9uczwvYj48L3A+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJfLmZpbHRlcih0cmFuc2Zvcm1hdGlvbnMsICdleGNsdWRlJykubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJpbmNsdWRlQWxsVHJhbnNmb3JtYXRpb25zXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlRXhjbHVkZWRUcmFuc2Zvcm1hdGlvbnMoKVwiPlxuICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGRpc2FibGVkIHRyYW5zZm9ybWF0aW9uczwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+V2hlbiBzYXZpbmcgdGhpcyBuZXcgcXVlcnkgeW91IGNhbiBkZWNpZGUgdG8gZXhjbHVkZSBhbnlcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQgdHJhbnNmb3JtYXRpb25zIGluIHRoZSBjdXJyZW50IHF1ZXJ5LjwvZGl2PlxuXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5UcmFuc2Zvcm1hdGlvbnMgYmVpbmcgY29waWVkLi4uPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBib3JkZXIgcm91bmRlZC1mdWxsIHB4LTIgcHktMSBtci0yIHRleHQtZ3JheS01MDBcIlxuICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRyYW5zZm9ybWF0aW9uIG9mIGZpbHRlcmVkVHJhbnNmb3JtYXRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Xy5zdGFydENhc2UodHJhbnNmb3JtYXRpb24udHlwZSl9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj5cbiAgICAgICAgICAgIDxwPjxiPlN1bW1hcnk8L2I+PC9wPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZnVsbFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBzdW1tYXJ5XCIgWyhuZ01vZGVsKV09XCJkYXRhc2V0SW5zdGFuY2VTdW1tYXJ5LnN1bW1hcnlcIj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj5cbiAgICAgICAgICAgIDxwPjxiPkRlc2NyaXB0aW9uPC9iPjwvcD5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cImRhdGFzZXRJbnN0YW5jZVN1bW1hcnkuZGVzY3JpcHRpb25cIiBwbGFjZWhvbGRlcj1cIkVudGVyIGRlc2NyaXB0aW9uXCIgcm93cz1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj5cbiAgICAgICAgICAgIDxwPjxiPkNhdGVnb3JpZXM8L2I+PC9wPlxuXG4gICAgICAgICAgICA8bWF0LXNlbGVjdGlvbi1saXN0IFtjb21wYXJlV2l0aF09XCJzaG93U2VsZWN0ZWRcIiBbKG5nTW9kZWwpXT1cImRhdGFzZXRJbnN0YW5jZVN1bW1hcnkuY2F0ZWdvcmllc1wiID5cbiAgICAgICAgICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCIgY2hlY2tib3hQb3NpdGlvbj1cImJlZm9yZVwiIFt2YWx1ZV09XCJjYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2NhdGVnb3J5LmNhdGVnb3J5fX1cbiAgICAgICAgICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1mb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+Q2FuY2VsPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW21hdC1kaWFsb2ctY2xvc2VdPVwiZmlsdGVyZWRUcmFuc2Zvcm1hdGlvbnNcIj5TYXZlIENvcHk8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=