@gravitee/ui-policy-studio-angular 15.13.0 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs +1 -1
  2. package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  3. package/fesm2022/gravitee-ui-policy-studio-angular.mjs +92 -95
  4. package/fesm2022/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  5. package/index.d.ts +404 -3
  6. package/package.json +7 -11
  7. package/testing/index.d.ts +369 -3
  8. package/esm2022/gravitee-ui-policy-studio-angular.mjs +0 -5
  9. package/esm2022/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.mjs +0 -43
  10. package/esm2022/lib/components/flow-details/gio-ps-flow-details.component.mjs +0 -184
  11. package/esm2022/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs +0 -115
  12. package/esm2022/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +0 -179
  13. package/esm2022/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +0 -162
  14. package/esm2022/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +0 -81
  15. package/esm2022/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +0 -109
  16. package/esm2022/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.component.mjs +0 -89
  17. package/esm2022/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.mjs +0 -135
  18. package/esm2022/lib/components/flow-form-dialog/gio-ps-flow-form-dialog-result.model.mjs +0 -2
  19. package/esm2022/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +0 -432
  20. package/esm2022/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +0 -165
  21. package/esm2022/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.mjs +0 -53
  22. package/esm2022/lib/components/step-form/gio-ps-step-form.component.mjs +0 -158
  23. package/esm2022/lib/models/ApiProtocolType.mjs +0 -17
  24. package/esm2022/lib/models/ApiType.mjs +0 -17
  25. package/esm2022/lib/models/ConnectorsInfo.mjs +0 -2
  26. package/esm2022/lib/models/PolicySchemaFetcher.mjs +0 -2
  27. package/esm2022/lib/models/SaveOutput.mjs +0 -2
  28. package/esm2022/lib/models/flow/Flow.mjs +0 -2
  29. package/esm2022/lib/models/flow/FlowExecution.mjs +0 -17
  30. package/esm2022/lib/models/flow/HttpMethod.mjs +0 -43
  31. package/esm2022/lib/models/flow/Selector.mjs +0 -2
  32. package/esm2022/lib/models/flow/Step.mjs +0 -2
  33. package/esm2022/lib/models/flow/index.mjs +0 -21
  34. package/esm2022/lib/models/index.mjs +0 -24
  35. package/esm2022/lib/models/plan/Plan.mjs +0 -17
  36. package/esm2022/lib/models/plan/index.mjs +0 -17
  37. package/esm2022/lib/models/policy/GenericPolicy.mjs +0 -24
  38. package/esm2022/lib/models/policy/Policy.mjs +0 -44
  39. package/esm2022/lib/models/policy/SharedPolicyGroupPolicy.mjs +0 -17
  40. package/esm2022/lib/models/policy/index.mjs +0 -19
  41. package/esm2022/lib/policy-group-studio/gio-policy-group-studio.component.mjs +0 -228
  42. package/esm2022/lib/policy-studio/gio-policy-studio.component.mjs +0 -304
  43. package/esm2022/lib/policy-studio/gio-policy-studio.model.mjs +0 -17
  44. package/esm2022/lib/policy-studio/gio-policy-studio.service.mjs +0 -74
  45. package/esm2022/public-api.mjs +0 -22
  46. package/esm2022/testing/gravitee-ui-policy-studio-angular-testing.mjs +0 -5
  47. package/esm2022/testing/lib/components/flow-details/gio-ps-flow-details.harness.mjs +0 -56
  48. package/esm2022/testing/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.harness.mjs +0 -35
  49. package/esm2022/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.mjs +0 -155
  50. package/esm2022/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.mjs +0 -69
  51. package/esm2022/testing/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.harness.mjs +0 -60
  52. package/esm2022/testing/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.harness.mjs +0 -128
  53. package/esm2022/testing/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.harness.mjs +0 -50
  54. package/esm2022/testing/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.harness.mjs +0 -98
  55. package/esm2022/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.mjs +0 -91
  56. package/esm2022/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.mjs +0 -87
  57. package/esm2022/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.mjs +0 -30
  58. package/esm2022/testing/lib/components/step-form/gio-ps-step-form.harness.mjs +0 -56
  59. package/esm2022/testing/lib/models/ApiProtocolType.mjs +0 -17
  60. package/esm2022/testing/lib/models/ApiType.mjs +0 -17
  61. package/esm2022/testing/lib/models/ConnectorsInfo.fixture.mjs +0 -182
  62. package/esm2022/testing/lib/models/ConnectorsInfo.mjs +0 -2
  63. package/esm2022/testing/lib/models/PolicySchemaFetcher.mjs +0 -2
  64. package/esm2022/testing/lib/models/SaveOutput.mjs +0 -2
  65. package/esm2022/testing/lib/models/flow/Flow.fixture.mjs +0 -122
  66. package/esm2022/testing/lib/models/flow/Flow.mjs +0 -2
  67. package/esm2022/testing/lib/models/flow/FlowExecution.fixture.mjs +0 -43
  68. package/esm2022/testing/lib/models/flow/FlowExecution.mjs +0 -17
  69. package/esm2022/testing/lib/models/flow/HttpMethod.mjs +0 -43
  70. package/esm2022/testing/lib/models/flow/Selector.mjs +0 -2
  71. package/esm2022/testing/lib/models/flow/Step.fixture.mjs +0 -92
  72. package/esm2022/testing/lib/models/flow/Step.mjs +0 -2
  73. package/esm2022/testing/lib/models/flow/index-testing.mjs +0 -19
  74. package/esm2022/testing/lib/models/flow/index.mjs +0 -21
  75. package/esm2022/testing/lib/models/index-testing.mjs +0 -20
  76. package/esm2022/testing/lib/models/index.mjs +0 -24
  77. package/esm2022/testing/lib/models/plan/Plan.fixture.mjs +0 -31
  78. package/esm2022/testing/lib/models/plan/Plan.mjs +0 -17
  79. package/esm2022/testing/lib/models/plan/index-testing.mjs +0 -17
  80. package/esm2022/testing/lib/models/plan/index.mjs +0 -17
  81. package/esm2022/testing/lib/models/policy/GenericPolicy.mjs +0 -24
  82. package/esm2022/testing/lib/models/policy/Policy.fixture.mjs +0 -194
  83. package/esm2022/testing/lib/models/policy/Policy.mjs +0 -44
  84. package/esm2022/testing/lib/models/policy/SharedPolicyGroupPolicy.mjs +0 -17
  85. package/esm2022/testing/lib/models/policy/index-testing.mjs +0 -17
  86. package/esm2022/testing/lib/models/policy/index.mjs +0 -19
  87. package/esm2022/testing/lib/policy-group-studio/gio-policy-group-studio.harness.mjs +0 -52
  88. package/esm2022/testing/lib/policy-studio/gio-policy-studio.harness.mjs +0 -202
  89. package/esm2022/testing/lib/policy-studio/gio-policy-studio.model.mjs +0 -17
  90. package/esm2022/testing/public-testing-api.mjs +0 -19
  91. package/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.d.ts +0 -8
  92. package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +0 -29
  93. package/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.d.ts +0 -20
  94. package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +0 -47
  95. package/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.d.ts +0 -33
  96. package/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.d.ts +0 -18
  97. package/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.d.ts +0 -21
  98. package/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.component.d.ts +0 -21
  99. package/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.d.ts +0 -24
  100. package/lib/components/flow-form-dialog/gio-ps-flow-form-dialog-result.model.d.ts +0 -2
  101. package/lib/components/flows-menu/gio-ps-flows-menu.component.d.ts +0 -57
  102. package/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.d.ts +0 -47
  103. package/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.d.ts +0 -24
  104. package/lib/components/step-form/gio-ps-step-form.component.d.ts +0 -35
  105. package/lib/models/ApiProtocolType.d.ts +0 -1
  106. package/lib/models/ApiType.d.ts +0 -1
  107. package/lib/models/ConnectorsInfo.d.ts +0 -7
  108. package/lib/models/PolicySchemaFetcher.d.ts +0 -5
  109. package/lib/models/SaveOutput.d.ts +0 -7
  110. package/lib/models/flow/Flow.d.ts +0 -24
  111. package/lib/models/flow/FlowExecution.d.ts +0 -11
  112. package/lib/models/flow/HttpMethod.d.ts +0 -3
  113. package/lib/models/flow/Selector.d.ts +0 -37
  114. package/lib/models/flow/Step.d.ts +0 -34
  115. package/lib/models/flow/index.d.ts +0 -5
  116. package/lib/models/index.d.ts +0 -8
  117. package/lib/models/plan/Plan.d.ts +0 -6
  118. package/lib/models/plan/index.d.ts +0 -1
  119. package/lib/models/policy/GenericPolicy.d.ts +0 -22
  120. package/lib/models/policy/Policy.d.ts +0 -28
  121. package/lib/models/policy/SharedPolicyGroupPolicy.d.ts +0 -11
  122. package/lib/models/policy/index.d.ts +0 -3
  123. package/lib/policy-group-studio/gio-policy-group-studio.component.d.ts +0 -70
  124. package/lib/policy-studio/gio-policy-studio.component.d.ts +0 -98
  125. package/lib/policy-studio/gio-policy-studio.model.d.ts +0 -17
  126. package/lib/policy-studio/gio-policy-studio.service.d.ts +0 -30
  127. package/public-api.d.ts +0 -3
  128. package/testing/lib/components/flow-details/gio-ps-flow-details.harness.d.ts +0 -12
  129. package/testing/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.harness.d.ts +0 -5
  130. package/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.d.ts +0 -69
  131. package/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.d.ts +0 -21
  132. package/testing/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.harness.d.ts +0 -13
  133. package/testing/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.harness.d.ts +0 -37
  134. package/testing/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.harness.d.ts +0 -17
  135. package/testing/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.harness.d.ts +0 -33
  136. package/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.d.ts +0 -31
  137. package/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.d.ts +0 -20
  138. package/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.d.ts +0 -8
  139. package/testing/lib/components/step-form/gio-ps-step-form.harness.d.ts +0 -18
  140. package/testing/lib/models/ApiProtocolType.d.ts +0 -1
  141. package/testing/lib/models/ApiType.d.ts +0 -1
  142. package/testing/lib/models/ConnectorsInfo.d.ts +0 -7
  143. package/testing/lib/models/ConnectorsInfo.fixture.d.ts +0 -12
  144. package/testing/lib/models/PolicySchemaFetcher.d.ts +0 -5
  145. package/testing/lib/models/SaveOutput.d.ts +0 -7
  146. package/testing/lib/models/flow/Flow.d.ts +0 -24
  147. package/testing/lib/models/flow/Flow.fixture.d.ts +0 -6
  148. package/testing/lib/models/flow/FlowExecution.d.ts +0 -11
  149. package/testing/lib/models/flow/FlowExecution.fixture.d.ts +0 -3
  150. package/testing/lib/models/flow/HttpMethod.d.ts +0 -3
  151. package/testing/lib/models/flow/Selector.d.ts +0 -37
  152. package/testing/lib/models/flow/Step.d.ts +0 -34
  153. package/testing/lib/models/flow/Step.fixture.d.ts +0 -5
  154. package/testing/lib/models/flow/index-testing.d.ts +0 -3
  155. package/testing/lib/models/flow/index.d.ts +0 -5
  156. package/testing/lib/models/index-testing.d.ts +0 -4
  157. package/testing/lib/models/index.d.ts +0 -8
  158. package/testing/lib/models/plan/Plan.d.ts +0 -6
  159. package/testing/lib/models/plan/Plan.fixture.d.ts +0 -2
  160. package/testing/lib/models/plan/index-testing.d.ts +0 -1
  161. package/testing/lib/models/plan/index.d.ts +0 -1
  162. package/testing/lib/models/policy/GenericPolicy.d.ts +0 -22
  163. package/testing/lib/models/policy/Policy.d.ts +0 -28
  164. package/testing/lib/models/policy/Policy.fixture.d.ts +0 -4
  165. package/testing/lib/models/policy/SharedPolicyGroupPolicy.d.ts +0 -11
  166. package/testing/lib/models/policy/index-testing.d.ts +0 -1
  167. package/testing/lib/models/policy/index.d.ts +0 -3
  168. package/testing/lib/policy-group-studio/gio-policy-group-studio.harness.d.ts +0 -20
  169. package/testing/lib/policy-studio/gio-policy-studio.harness.d.ts +0 -78
  170. package/testing/lib/policy-studio/gio-policy-studio.model.d.ts +0 -17
  171. package/testing/public-testing-api.d.ts +0 -3
@@ -1,165 +0,0 @@
1
- /*
2
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component, Inject } from '@angular/core';
17
- import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
18
- import { toLower, uniq } from 'lodash';
19
- import { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
20
- import { startWith, takeUntil } from 'rxjs/operators';
21
- import { Subject } from 'rxjs';
22
- import { CommonModule } from '@angular/common';
23
- import { MatButtonModule } from '@angular/material/button';
24
- import { MatFormFieldModule } from '@angular/material/form-field';
25
- import { MatInputModule } from '@angular/material/input';
26
- import { GioBannerModule, GioIconsModule } from '@gravitee/ui-particles-angular';
27
- import { MatChipsModule } from '@angular/material/chips';
28
- import { MatTooltip } from '@angular/material/tooltip';
29
- import { isPolicy, isSharedPolicyGroupPolicy } from '../../models';
30
- import { GioPolicyStudioStepFormComponent } from '../step-form/gio-ps-step-form.component';
31
- import * as i0 from "@angular/core";
32
- import * as i1 from "@angular/material/dialog";
33
- import * as i2 from "@angular/common";
34
- import * as i3 from "@angular/forms";
35
- import * as i4 from "@angular/material/button";
36
- import * as i5 from "@angular/material/form-field";
37
- import * as i6 from "@angular/material/chips";
38
- import * as i7 from "@angular/material/input";
39
- import * as i8 from "@gravitee/ui-particles-angular";
40
- import * as i9 from "@angular/material/icon";
41
- const flowPhaseLabels = {
42
- REQUEST: 'Request',
43
- RESPONSE: 'Response',
44
- PUBLISH: 'Publish',
45
- SUBSCRIBE: 'Subscribe',
46
- CONNECT: 'Connect',
47
- INTERACT: 'Interact',
48
- };
49
- export class GioPolicyStudioPoliciesCatalogDialogComponent {
50
- constructor(dialogRef, flowDialogData) {
51
- this.dialogRef = dialogRef;
52
- this.policies = [];
53
- this.categories = [];
54
- this.isValid = false;
55
- this.filtersForm = new UntypedFormGroup({
56
- categories: new UntypedFormControl([]),
57
- search: new UntypedFormControl(''),
58
- });
59
- this.allPolicies = [];
60
- this.unsubscribe$ = new Subject();
61
- this.isUnlicensed = false;
62
- this.flowPhase = flowDialogData.flowPhase;
63
- this.apiType = flowDialogData.apiType;
64
- this.flowPhaseLabel = flowPhaseLabels[flowDialogData.flowPhase];
65
- this.allPolicies = flowDialogData.genericPolicies
66
- .filter(genericPolicy => {
67
- if (isPolicy(genericPolicy)) {
68
- switch (flowDialogData.apiType) {
69
- case 'PROXY':
70
- return genericPolicy.flowPhaseCompatibility?.HTTP_PROXY?.includes(flowDialogData.flowPhase);
71
- case 'MESSAGE':
72
- return genericPolicy.flowPhaseCompatibility?.HTTP_MESSAGE?.includes(flowDialogData.flowPhase);
73
- case 'NATIVE':
74
- return genericPolicy.flowPhaseCompatibility?.NATIVE_KAFKA?.includes(flowDialogData.flowPhase);
75
- default:
76
- throw new Error('Unknown API type');
77
- }
78
- }
79
- if (isSharedPolicyGroupPolicy(genericPolicy)) {
80
- return genericPolicy.apiType === flowDialogData.apiType && genericPolicy.phase === flowDialogData.flowPhase;
81
- }
82
- // Not expected
83
- throw new Error('Unknown policy type');
84
- })
85
- .map(policy => ({
86
- category: policy.category ?? 'Others',
87
- _id: policy._id,
88
- name: policy.name,
89
- description: policy.description,
90
- icon: isPolicy(policy) ? policy.icon : undefined,
91
- deployed: isPolicy(policy) ? policy.deployed : undefined,
92
- genericPolicy: policy,
93
- }));
94
- this.categories = uniq(this.allPolicies.map(policy => policy.category.toLowerCase())).sort((a, b) => a.localeCompare(b));
95
- const othersIndex = this.categories.indexOf('others');
96
- if (othersIndex !== -1) {
97
- this.categories.push(this.categories.splice(othersIndex, 1)[0]);
98
- }
99
- this.filtersForm.valueChanges
100
- .pipe(startWith(this.filtersForm.value), takeUntil(this.unsubscribe$))
101
- .subscribe(({ categories, search }) => {
102
- const selectedCategories = categories && categories.length > 0 ? categories : this.categories;
103
- this.policies = this.allPolicies
104
- .filter(policy => {
105
- return selectedCategories.map(toLower).includes(toLower(policy.category));
106
- })
107
- .filter(policy => {
108
- return search ? toLower(policy.name + policy.description).includes(toLower(search)) : true;
109
- });
110
- });
111
- this.trialUrl = flowDialogData.trialUrl;
112
- }
113
- ngOnDestroy() {
114
- this.unsubscribe$.next();
115
- this.unsubscribe$.complete();
116
- }
117
- onSelectPolicy(policy) {
118
- if (policy.deployed === false) {
119
- this.isUnlicensed = true;
120
- }
121
- this.selectedPolicy = policy.genericPolicy;
122
- }
123
- onStepChange(step) {
124
- this.stepToAdd = step;
125
- }
126
- onIsValid(isValid) {
127
- this.isValid = isValid;
128
- }
129
- onAddPolicy() {
130
- this.dialogRef.close({
131
- ...this.stepToAdd,
132
- name: this.selectedPolicy?.name,
133
- enabled: true,
134
- policy: this.selectedPolicy?.policyId,
135
- });
136
- }
137
- onGoBack() {
138
- // Reset to initial value
139
- this.selectedPolicy = undefined;
140
- this.isValid = false;
141
- this.isUnlicensed = false;
142
- }
143
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
144
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioPoliciesCatalogDialogComponent, isStandalone: true, selector: "gio-ps-policies-catalog-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n @if (selectedPolicy) {\n <button class=\"title__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n }\n Policies for <span class=\"title__phase\">{{ flowPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<ng-container>\n <mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div class=\"policiesCatalog__filters\" [formGroup]=\"filtersForm\">\n <mat-form-field class=\"policiesCatalog__filters__search\" appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" cdkFocusInitial />\n <button\n matIconSuffix\n mat-icon-button\n aria-label=\"Clear\"\n *ngIf=\"filtersForm.get('search')?.value\"\n (click)=\"filtersForm.get('search')?.setValue('')\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </mat-form-field>\n <mat-chip-listbox\n *ngIf=\"categories.length > 1\"\n class=\"policiesCatalog__filters__categories\"\n aria-label=\"Categories selection\"\n multiple\n formControlName=\"categories\"\n >\n <mat-chip-option *ngFor=\"let category of categories\" [selected]=\"category\" [value]=\"category\"\n >{{ category | titlecase }}\n </mat-chip-option>\n </mat-chip-listbox>\n </div>\n\n <div *ngIf=\"policies.length; else emptyPoliciesTpl\" class=\"policiesCatalog__list\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__list__policy\">\n <div class=\"policiesCatalog__list__policy__head\">\n <mat-icon class=\"policiesCatalog__list__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__list__policy__head__name\">{{ policy.name }}</span>\n\n <span\n *ngIf=\"policy.genericPolicy.type === 'SHARED_POLICY_GROUP'\"\n class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\"\n matTooltip=\"Shared Policy Group\"\n >\n <mat-icon svgIcon=\"gio:users\"></mat-icon>\n </span>\n </div>\n\n <div class=\"policiesCatalog__list__policy__enterprise\" *ngIf=\"policy.deployed === false\">\n <mat-icon\n class=\"policiesCatalog__list__policy__enterprise__lock\"\n [svgIcon]=\"'gio:lock'\"\n matTooltip=\"This policy is only available for users with an enterprise license.\"\n ></mat-icon>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__list__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__list__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">\n Select\n </button>\n </div>\n </div>\n </mat-dialog-content>\n</ng-container>\n\n<ng-template #emptyPoliciesTpl>\n <div class=\"emptyPoliciesCatalog\">No policies available.</div>\n</ng-template>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <gio-banner *ngIf=\"isUnlicensed\" type=\"error\" icon=\"gio:universe\">\n This policy is only available for users with an enterprise license.\n <span gioBannerBody>Request a license to upgrade your account and unlock this policy</span>\n <div gioBannerAction>\n <a *ngIf=\"trialUrl\" mat-stroked-button [href]=\"trialUrl\" target=\"_blank\">Request upgrade</a>\n </div>\n </gio-banner>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n\n <span *ngIf=\"selectedPolicy.type === 'SHARED_POLICY_GROUP'\" class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\">\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-step-form\n [genericPolicy]=\"selectedPolicy\"\n [flowPhase]=\"flowPhase\"\n [apiType]=\"apiType\"\n (stepChange)=\"onStepChange($event)\"\n (isValid)=\"onIsValid($event)\"\n ></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button\n *ngIf=\"selectedPolicy\"\n class=\"actions__addBtn\"\n color=\"primary\"\n mat-flat-button\n role=\"dialog\"\n [disabled]=\"!isValid || isUnlicensed\"\n (click)=\"onAddPolicy()\"\n >\n Add policy\n </button>\n</mat-dialog-actions>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.title__goBackBtn{margin-right:8px;line-height:normal}.title__closeBtn{top:0;right:-24px;float:right}.policiesCatalog__filters{display:flex;flex-direction:column;padding:0 0 8px;gap:8px}.policiesCatalog__filters__search{width:100%;height:54px;padding-bottom:0}.policiesCatalog__list{--grid-layout-gap: 16px;--grid-column-count: 3;--grid-item-min-width: 200px;--gap-count: calc(var(--grid-column-count) - 1);--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));--grid-item-max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));display:grid;grid-gap:var(--grid-layout-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--grid-item-min-width),var(--grid-item-max-width)),1fr))}.policiesCatalog__list__policy{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;border:1px solid #d2cecd;border-radius:8px;gap:4px}.policiesCatalog__list__policy__head{display:flex;align-items:center;align-self:stretch}.policiesCatalog__list__policy__head__icon{min-width:24px;flex:0 0 24px;margin-right:8px}.policiesCatalog__list__policy__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.policiesCatalog__list__policy__head__badge{float:left}.policiesCatalog__list__policy__enterprise{position:absolute;top:0;right:0;padding:8px 8px 8px 16px;border-radius:0 8px 0 38px;background:#f7f7f8;color:#da3b00}.policiesCatalog__list__policy__enterprise__lock{min-width:16px;max-width:16px;color:#da3b00}.policiesCatalog__list__policy__description{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#322f2f;-webkit-line-clamp:2}.policiesCatalog__list__policy__description:empty{display:none}.policiesCatalog__list__policy__selectBtn{margin-top:8px}.policyForm__goBackBtn{margin:16px 0}.policyForm__info{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;padding-bottom:16px;gap:4px}.policyForm__info__head{display:flex;align-items:center}.policyForm__info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policyForm__info__head__name{flex:1 1 auto}.policyForm__info__description{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#322f2f}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i6.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i6.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i8.GioBannerComponent, selector: "gio-banner", inputs: ["type", "icon", "collapsible"] }, { kind: "directive", type: i8.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "directive", type: i8.GioBannerActionDirective, selector: "[gioBannerAction]" }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["readOnly", "step", "flowPhase", "apiType", "genericPolicy"], outputs: ["stepChange", "isValid"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
145
- }
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, decorators: [{
147
- type: Component,
148
- args: [{ imports: [
149
- CommonModule,
150
- ReactiveFormsModule,
151
- MatButtonModule,
152
- MatDialogModule,
153
- MatFormFieldModule,
154
- MatChipsModule,
155
- MatInputModule,
156
- GioBannerModule,
157
- GioIconsModule,
158
- GioPolicyStudioStepFormComponent,
159
- MatTooltip,
160
- ], selector: 'gio-ps-policies-catalog-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n @if (selectedPolicy) {\n <button class=\"title__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n }\n Policies for <span class=\"title__phase\">{{ flowPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<ng-container>\n <mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div class=\"policiesCatalog__filters\" [formGroup]=\"filtersForm\">\n <mat-form-field class=\"policiesCatalog__filters__search\" appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" cdkFocusInitial />\n <button\n matIconSuffix\n mat-icon-button\n aria-label=\"Clear\"\n *ngIf=\"filtersForm.get('search')?.value\"\n (click)=\"filtersForm.get('search')?.setValue('')\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </mat-form-field>\n <mat-chip-listbox\n *ngIf=\"categories.length > 1\"\n class=\"policiesCatalog__filters__categories\"\n aria-label=\"Categories selection\"\n multiple\n formControlName=\"categories\"\n >\n <mat-chip-option *ngFor=\"let category of categories\" [selected]=\"category\" [value]=\"category\"\n >{{ category | titlecase }}\n </mat-chip-option>\n </mat-chip-listbox>\n </div>\n\n <div *ngIf=\"policies.length; else emptyPoliciesTpl\" class=\"policiesCatalog__list\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__list__policy\">\n <div class=\"policiesCatalog__list__policy__head\">\n <mat-icon class=\"policiesCatalog__list__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__list__policy__head__name\">{{ policy.name }}</span>\n\n <span\n *ngIf=\"policy.genericPolicy.type === 'SHARED_POLICY_GROUP'\"\n class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\"\n matTooltip=\"Shared Policy Group\"\n >\n <mat-icon svgIcon=\"gio:users\"></mat-icon>\n </span>\n </div>\n\n <div class=\"policiesCatalog__list__policy__enterprise\" *ngIf=\"policy.deployed === false\">\n <mat-icon\n class=\"policiesCatalog__list__policy__enterprise__lock\"\n [svgIcon]=\"'gio:lock'\"\n matTooltip=\"This policy is only available for users with an enterprise license.\"\n ></mat-icon>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__list__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__list__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">\n Select\n </button>\n </div>\n </div>\n </mat-dialog-content>\n</ng-container>\n\n<ng-template #emptyPoliciesTpl>\n <div class=\"emptyPoliciesCatalog\">No policies available.</div>\n</ng-template>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <gio-banner *ngIf=\"isUnlicensed\" type=\"error\" icon=\"gio:universe\">\n This policy is only available for users with an enterprise license.\n <span gioBannerBody>Request a license to upgrade your account and unlock this policy</span>\n <div gioBannerAction>\n <a *ngIf=\"trialUrl\" mat-stroked-button [href]=\"trialUrl\" target=\"_blank\">Request upgrade</a>\n </div>\n </gio-banner>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n\n <span *ngIf=\"selectedPolicy.type === 'SHARED_POLICY_GROUP'\" class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\">\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-step-form\n [genericPolicy]=\"selectedPolicy\"\n [flowPhase]=\"flowPhase\"\n [apiType]=\"apiType\"\n (stepChange)=\"onStepChange($event)\"\n (isValid)=\"onIsValid($event)\"\n ></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button\n *ngIf=\"selectedPolicy\"\n class=\"actions__addBtn\"\n color=\"primary\"\n mat-flat-button\n role=\"dialog\"\n [disabled]=\"!isValid || isUnlicensed\"\n (click)=\"onAddPolicy()\"\n >\n Add policy\n </button>\n</mat-dialog-actions>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.title__goBackBtn{margin-right:8px;line-height:normal}.title__closeBtn{top:0;right:-24px;float:right}.policiesCatalog__filters{display:flex;flex-direction:column;padding:0 0 8px;gap:8px}.policiesCatalog__filters__search{width:100%;height:54px;padding-bottom:0}.policiesCatalog__list{--grid-layout-gap: 16px;--grid-column-count: 3;--grid-item-min-width: 200px;--gap-count: calc(var(--grid-column-count) - 1);--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));--grid-item-max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));display:grid;grid-gap:var(--grid-layout-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--grid-item-min-width),var(--grid-item-max-width)),1fr))}.policiesCatalog__list__policy{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;border:1px solid #d2cecd;border-radius:8px;gap:4px}.policiesCatalog__list__policy__head{display:flex;align-items:center;align-self:stretch}.policiesCatalog__list__policy__head__icon{min-width:24px;flex:0 0 24px;margin-right:8px}.policiesCatalog__list__policy__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.policiesCatalog__list__policy__head__badge{float:left}.policiesCatalog__list__policy__enterprise{position:absolute;top:0;right:0;padding:8px 8px 8px 16px;border-radius:0 8px 0 38px;background:#f7f7f8;color:#da3b00}.policiesCatalog__list__policy__enterprise__lock{min-width:16px;max-width:16px;color:#da3b00}.policiesCatalog__list__policy__description{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#322f2f;-webkit-line-clamp:2}.policiesCatalog__list__policy__description:empty{display:none}.policiesCatalog__list__policy__selectBtn{margin-top:8px}.policyForm__goBackBtn{margin:16px 0}.policyForm__info{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;padding-bottom:16px;gap:4px}.policyForm__info__head{display:flex;align-items:center}.policyForm__info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policyForm__info__head__name{flex:1 1 auto}.policyForm__info__description{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#322f2f}\n"] }]
161
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
162
- type: Inject,
163
- args: [MAT_DIALOG_DATA]
164
- }] }] });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cvZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cvZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFnQixlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxN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eEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxPQUFnQjtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNuQixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUk7WUFDL0IsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxRQUFRO1FBQ2IseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7OEdBM0hVLDZDQUE2Qyw4Q0ErQjlDLGVBQWU7a0dBL0JkLDZDQUE2QywwRkM5RTFELHdzTEFnSkEsMmhGRGxGSSxZQUFZLDRUQUNaLG1CQUFtQixtMkJBQ25CLGVBQWUscWZBQ2YsZUFBZSwrbkJBQ2Ysa0JBQWtCLDJhQUNsQixjQUFjLDhjQUNkLGNBQWMsaVlBQ2QsZUFBZSxpVUFDZixjQUFjLG9MQUNkLGdDQUFnQyx3S0FDaEMsVUFBVTs7MkZBTUQsNkNBQTZDO2tCQWxCekQsU0FBUzs4QkFDQzt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxnQ0FBZ0M7d0JBQ2hDLFVBQVU7cUJBQ1gsWUFDUyxnQ0FBZ0M7OzBCQW1DdkMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgdG9Mb3dlciwgdW5pcSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEdpb0Jhbm5lck1vZHVsZSwgR2lvSWNvbnNNb2R1bGUgfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IEFwaVR5cGUsIEZsb3dQaGFzZSwgR2VuZXJpY1BvbGljeSwgaXNQb2xpY3ksIGlzU2hhcmVkUG9saWN5R3JvdXBQb2xpY3ksIFN0ZXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvU3RlcEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9zdGVwLWZvcm0vZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dEYXRhID0ge1xuICBnZW5lcmljUG9saWNpZXM6IEdlbmVyaWNQb2xpY3lbXTtcbiAgZmxvd1BoYXNlOiBGbG93UGhhc2U7XG4gIGFwaVR5cGU6IEFwaVR5cGU7XG4gIHRyaWFsVXJsPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nUmVzdWx0ID0gdW5kZWZpbmVkIHwgU3RlcDtcblxuY29uc3QgZmxvd1BoYXNlTGFiZWxzOiBSZWNvcmQ8Rmxvd1BoYXNlLCBzdHJpbmc+ID0ge1xuICBSRVFVRVNUOiAnUmVxdWVzdCcsXG4gIFJFU1BPTlNFOiAnUmVzcG9uc2UnLFxuICBQVUJMSVNIOiAnUHVibGlzaCcsXG4gIFNVQlNDUklCRTogJ1N1YnNjcmliZScsXG4gIENPTk5FQ1Q6ICdDb25uZWN0JyxcbiAgSU5URVJBQ1Q6ICdJbnRlcmFjdCcsXG59O1xuXG50eXBlIFBvbGljeVZNID0ge1xuICBfaWQ6IHN0cmluZztcbiAgZ2VuZXJpY1BvbGljeTogR2VuZXJpY1BvbGljeTtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgZGVwbG95ZWQ/OiBib29sZWFuO1xuICBjYXRlZ29yeTogc3RyaW5nO1xufTtcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBHaW9CYW5uZXJNb2R1bGUsXG4gICAgR2lvSWNvbnNNb2R1bGUsXG4gICAgR2lvUG9saWN5U3R1ZGlvU3RlcEZvcm1Db21wb25lbnQsXG4gICAgTWF0VG9vbHRpcCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdnaW8tcHMtcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBwb2xpY2llczogUG9saWN5Vk1bXSA9IFtdO1xuXG4gIHB1YmxpYyBmbG93UGhhc2UhOiBGbG93UGhhc2U7XG4gIHB1YmxpYyBmbG93UGhhc2VMYWJlbCE6IHN0cmluZztcblxuICBwdWJsaWMgc2VsZWN0ZWRQb2xpY3k/OiBHZW5lcmljUG9saWN5O1xuXG4gIHB1YmxpYyBzdGVwVG9BZGQ/OiBTdGVwO1xuXG4gIHB1YmxpYyBjYXRlZ29yaWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHB1YmxpYyBpc1ZhbGlkID0gZmFsc2U7XG5cbiAgcHVibGljIGZpbHRlcnNGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgIGNhdGVnb3JpZXM6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woW10pLFxuICAgIHNlYXJjaDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyksXG4gIH0pO1xuXG4gIHByaXZhdGUgYWxsUG9saWNpZXM6IFBvbGljeVZNW10gPSBbXTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGlzVW5saWNlbnNlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0cmlhbFVybD86IHN0cmluZztcblxuICBwdWJsaWMgYXBpVHlwZTogQXBpVHlwZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8R2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dSZXN1bHQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBmbG93RGlhbG9nRGF0YTogR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nRGF0YSxcbiAgKSB7XG4gICAgdGhpcy5mbG93UGhhc2UgPSBmbG93RGlhbG9nRGF0YS5mbG93UGhhc2U7XG4gICAgdGhpcy5hcGlUeXBlID0gZmxvd0RpYWxvZ0RhdGEuYXBpVHlwZTtcbiAgICB0aGlzLmZsb3dQaGFzZUxhYmVsID0gZmxvd1BoYXNlTGFiZWxzW2Zsb3dEaWFsb2dEYXRhLmZsb3dQaGFzZV07XG5cbiAgICB0aGlzLmFsbFBvbGljaWVzID0gZmxvd0RpYWxvZ0RhdGEuZ2VuZXJpY1BvbGljaWVzXG4gICAgICAuZmlsdGVyKGdlbmVyaWNQb2xpY3kgPT4ge1xuICAgICAgICBpZiAoaXNQb2xpY3koZ2VuZXJpY1BvbGljeSkpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZsb3dEaWFsb2dEYXRhLmFwaVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1BST1hZJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyaWNQb2xpY3kuZmxvd1BoYXNlQ29tcGF0aWJpbGl0eT8uSFRUUF9QUk9YWT8uaW5jbHVkZXMoZmxvd0RpYWxvZ0RhdGEuZmxvd1BoYXNlKTtcbiAgICAgICAgICAgIGNhc2UgJ01FU1NBR0UnOlxuICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJpY1BvbGljeS5mbG93UGhhc2VDb21wYXRpYmlsaXR5Py5IVFRQX01FU1NBR0U/LmluY2x1ZGVzKGZsb3dEaWFsb2dEYXRhLmZsb3dQaGFzZSk7XG4gICAgICAgICAgICBjYXNlICdOQVRJVkUnOlxuICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJpY1BvbGljeS5mbG93UGhhc2VDb21wYXRpYmlsaXR5Py5OQVRJVkVfS0FGS0E/LmluY2x1ZGVzKGZsb3dEaWFsb2dEYXRhLmZsb3dQaGFzZSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gQVBJIHR5cGUnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2hhcmVkUG9saWN5R3JvdXBQb2xpY3koZ2VuZXJpY1BvbGljeSkpIHtcbiAgICAgICAgICByZXR1cm4gZ2VuZXJpY1BvbGljeS5hcGlUeXBlID09PSBmbG93RGlhbG9nRGF0YS5hcGlUeXBlICYmIGdlbmVyaWNQb2xpY3kucGhhc2UgPT09IGZsb3dEaWFsb2dEYXRhLmZsb3dQaGFzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBOb3QgZXhwZWN0ZWRcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHBvbGljeSB0eXBlJyk7XG4gICAgICB9KVxuICAgICAgLm1hcChwb2xpY3kgPT4gKHtcbiAgICAgICAgY2F0ZWdvcnk6IHBvbGljeS5jYXRlZ29yeSA/PyAnT3RoZXJzJyxcbiAgICAgICAgX2lkOiBwb2xpY3kuX2lkLFxuICAgICAgICBuYW1lOiBwb2xpY3kubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHBvbGljeS5kZXNjcmlwdGlvbixcbiAgICAgICAgaWNvbjogaXNQb2xpY3kocG9saWN5KSA/IHBvbGljeS5pY29uIDogdW5kZWZpbmVkLFxuICAgICAgICBkZXBsb3llZDogaXNQb2xpY3kocG9saWN5KSA/IHBvbGljeS5kZXBsb3llZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2VuZXJpY1BvbGljeTogcG9saWN5LFxuICAgICAgfSkpO1xuXG4gICAgdGhpcy5jYXRlZ29yaWVzID0gdW5pcSh0aGlzLmFsbFBvbGljaWVzLm1hcChwb2xpY3kgPT4gcG9saWN5LmNhdGVnb3J5LnRvTG93ZXJDYXNlKCkpKS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuICAgIGNvbnN0IG90aGVyc0luZGV4ID0gdGhpcy5jYXRlZ29yaWVzLmluZGV4T2YoJ290aGVycycpO1xuICAgIGlmIChvdGhlcnNJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuY2F0ZWdvcmllcy5wdXNoKHRoaXMuY2F0ZWdvcmllcy5zcGxpY2Uob3RoZXJzSW5kZXgsIDEpWzBdKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcnNGb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMuZmlsdGVyc0Zvcm0udmFsdWUpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoeyBjYXRlZ29yaWVzLCBzZWFyY2ggfTogeyBjYXRlZ29yaWVzPzogc3RyaW5nW107IHNlYXJjaD86IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMgJiYgY2F0ZWdvcmllcy5sZW5ndGggPiAwID8gY2F0ZWdvcmllcyA6IHRoaXMuY2F0ZWdvcmllcztcbiAgICAgICAgdGhpcy5wb2xpY2llcyA9IHRoaXMuYWxsUG9saWNpZXNcbiAgICAgICAgICAuZmlsdGVyKHBvbGljeSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRDYXRlZ29yaWVzLm1hcCh0b0xvd2VyKS5pbmNsdWRlcyh0b0xvd2VyKHBvbGljeS5jYXRlZ29yeSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbHRlcihwb2xpY3kgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNlYXJjaCA/IHRvTG93ZXIocG9saWN5Lm5hbWUgKyBwb2xpY3kuZGVzY3JpcHRpb24pLmluY2x1ZGVzKHRvTG93ZXIoc2VhcmNoKSkgOiB0cnVlO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnRyaWFsVXJsID0gZmxvd0RpYWxvZ0RhdGEudHJpYWxVcmw7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RQb2xpY3kocG9saWN5OiBQb2xpY3lWTSkge1xuICAgIGlmIChwb2xpY3kuZGVwbG95ZWQgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmlzVW5saWNlbnNlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRQb2xpY3kgPSBwb2xpY3kuZ2VuZXJpY1BvbGljeTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBDaGFuZ2Uoc3RlcDogU3RlcCkge1xuICAgIHRoaXMuc3RlcFRvQWRkID0gc3RlcDtcbiAgfVxuXG4gIHB1YmxpYyBvbklzVmFsaWQoaXNWYWxpZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNWYWxpZCA9IGlzVmFsaWQ7XG4gIH1cblxuICBwdWJsaWMgb25BZGRQb2xpY3koKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgLi4udGhpcy5zdGVwVG9BZGQsXG4gICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkUG9saWN5Py5uYW1lLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIHBvbGljeTogdGhpcy5zZWxlY3RlZFBvbGljeT8ucG9saWN5SWQsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Hb0JhY2soKSB7XG4gICAgLy8gUmVzZXQgdG8gaW5pdGlhbCB2YWx1ZVxuICAgIHRoaXMuc2VsZWN0ZWRQb2xpY3kgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc1ZhbGlkID0gZmFsc2U7XG4gICAgdGhpcy5pc1VubGljZW5zZWQgPSBmYWxzZTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48aDIgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz1cInRpdGxlXCI+XG4gIEBpZiAoc2VsZWN0ZWRQb2xpY3kpIHtcbiAgICA8YnV0dG9uIGNsYXNzPVwidGl0bGVfX2dvQmFja0J0blwiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25Hb0JhY2soKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86YXJyb3ctbGVmdFwiPjwvbWF0LWljb24+XG4gICAgICBHbyBiYWNrXG4gICAgPC9idXR0b24+XG4gIH1cbiAgUG9saWNpZXMgZm9yIDxzcGFuIGNsYXNzPVwidGl0bGVfX3BoYXNlXCI+e3sgZmxvd1BoYXNlTGFiZWwgfX08L3NwYW4+IHBoYXNlXG5cbiAgPGJ1dHRvbiBjbGFzcz1cInRpdGxlX19jbG9zZUJ0blwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xvc2UgZGlhbG9nXCIgW21hdC1kaWFsb2ctY2xvc2VdPVwiXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86Y2FuY2VsXCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2gyPlxuXG48bmctY29udGFpbmVyPlxuICA8bWF0LWRpYWxvZy1jb250ZW50ICpuZ0lmPVwiIXNlbGVjdGVkUG9saWN5XCIgY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dcIj5cbiAgICA8ZGl2IGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19maWx0ZXJzXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJzRm9ybVwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19maWx0ZXJzX19zZWFyY2hcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICA8bWF0LWxhYmVsPlNlYXJjaDwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCIgY2RrRm9jdXNJbml0aWFsIC8+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXRJY29uU3VmZml4XG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgICAgICAqbmdJZj1cImZpbHRlcnNGb3JtLmdldCgnc2VhcmNoJyk/LnZhbHVlXCJcbiAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyc0Zvcm0uZ2V0KCdzZWFyY2gnKT8uc2V0VmFsdWUoJycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmNhbmNlbFwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtY2hpcC1saXN0Ym94XG4gICAgICAgICpuZ0lmPVwiY2F0ZWdvcmllcy5sZW5ndGggPiAxXCJcbiAgICAgICAgY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dfX2ZpbHRlcnNfX2NhdGVnb3JpZXNcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiQ2F0ZWdvcmllcyBzZWxlY3Rpb25cIlxuICAgICAgICBtdWx0aXBsZVxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjYXRlZ29yaWVzXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1jaGlwLW9wdGlvbiAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1wiIFtzZWxlY3RlZF09XCJjYXRlZ29yeVwiIFt2YWx1ZV09XCJjYXRlZ29yeVwiXG4gICAgICAgICAgPnt7IGNhdGVnb3J5IHwgdGl0bGVjYXNlIH19XG4gICAgICAgIDwvbWF0LWNoaXAtb3B0aW9uPlxuICAgICAgPC9tYXQtY2hpcC1saXN0Ym94PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInBvbGljaWVzLmxlbmd0aDsgZWxzZSBlbXB0eVBvbGljaWVzVHBsXCIgY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dfX2xpc3RcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHBvbGljeSBvZiBwb2xpY2llc1wiIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fbGlzdF9fcG9saWN5X19oZWFkXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX2hlYWRfX2ljb25cIiBbc3ZnSWNvbl09XCJwb2xpY3kuaWNvbiA/PyAnZ2lvOnB1enpsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb2xpY3kubmFtZVwiIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX2hlYWRfX25hbWVcIj57eyBwb2xpY3kubmFtZSB9fTwvc3Bhbj5cblxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeS5nZW5lcmljUG9saWN5LnR5cGUgPT09ICdTSEFSRURfUE9MSUNZX0dST1VQJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImdpby1iYWRnZS1uZXV0cmFsIHBvbGljaWVzQ2F0YWxvZ19fbGlzdF9fcG9saWN5X19oZWFkX19iYWRnZVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiU2hhcmVkIFBvbGljeSBHcm91cFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86dXNlcnNcIj48L21hdC1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fbGlzdF9fcG9saWN5X19lbnRlcnByaXNlXCIgKm5nSWY9XCJwb2xpY3kuZGVwbG95ZWQgPT09IGZhbHNlXCI+XG4gICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fbGlzdF9fcG9saWN5X19lbnRlcnByaXNlX19sb2NrXCJcbiAgICAgICAgICAgIFtzdmdJY29uXT1cIidnaW86bG9jaydcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlRoaXMgcG9saWN5IGlzIG9ubHkgYXZhaWxhYmxlIGZvciB1c2VycyB3aXRoIGFuIGVudGVycHJpc2UgbGljZW5zZS5cIlxuICAgICAgICAgID48L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwicG9saWN5LmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dfX2xpc3RfX3BvbGljeV9fZGVzY3JpcHRpb25cIj57eyBwb2xpY3kuZGVzY3JpcHRpb24gfX08L2Rpdj5cblxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX3NlbGVjdEJ0blwiIG1hdC1zdHJva2VkLWJ1dHRvbiByb2xlPVwiZGlhbG9nXCIgKGNsaWNrKT1cIm9uU2VsZWN0UG9saWN5KHBvbGljeSlcIj5cbiAgICAgICAgICBTZWxlY3RcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVBvbGljaWVzVHBsPlxuICA8ZGl2IGNsYXNzPVwiZW1wdHlQb2xpY2llc0NhdGFsb2dcIj5ObyBwb2xpY2llcyBhdmFpbGFibGUuPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bWF0LWRpYWxvZy1jb250ZW50ICpuZ0lmPVwic2VsZWN0ZWRQb2xpY3lcIiBjbGFzcz1cInBvbGljeUZvcm1cIj5cbiAgPGdpby1iYW5uZXIgKm5nSWY9XCJpc1VubGljZW5zZWRcIiB0eXBlPVwiZXJyb3JcIiBpY29uPVwiZ2lvOnVuaXZlcnNlXCI+XG4gICAgVGhpcyBwb2xpY3kgaXMgb25seSBhdmFpbGFibGUgZm9yIHVzZXJzIHdpdGggYW4gZW50ZXJwcmlzZSBsaWNlbnNlLlxuICAgIDxzcGFuIGdpb0Jhbm5lckJvZHk+UmVxdWVzdCBhIGxpY2Vuc2UgdG8gdXBncmFkZSB5b3VyIGFjY291bnQgYW5kIHVubG9jayB0aGlzIHBvbGljeTwvc3Bhbj5cbiAgICA8ZGl2IGdpb0Jhbm5lckFjdGlvbj5cbiAgICAgIDxhICpuZ0lmPVwidHJpYWxVcmxcIiBtYXQtc3Ryb2tlZC1idXR0b24gW2hyZWZdPVwidHJpYWxVcmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5SZXF1ZXN0IHVwZ3JhZGU8L2E+XG4gICAgPC9kaXY+XG4gIDwvZ2lvLWJhbm5lcj5cblxuICA8ZGl2IGNsYXNzPVwicG9saWN5Rm9ybV9faW5mb1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwb2xpY3lGb3JtX19pbmZvX19oZWFkXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJwb2xpY3lGb3JtX19pbmZvX19oZWFkX19pY29uXCIgW3N2Z0ljb25dPVwic2VsZWN0ZWRQb2xpY3kuaWNvbiA/PyAnZ2lvOnB1enpsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkUG9saWN5Lm5hbWVcIiBjbGFzcz1cInBvbGljeUZvcm1fX2luZm9fX2hlYWRfX25hbWVcIj57eyBzZWxlY3RlZFBvbGljeS5uYW1lIH19PC9zcGFuPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkUG9saWN5LnR5cGUgPT09ICdTSEFSRURfUE9MSUNZX0dST1VQJ1wiIGNsYXNzPVwiZ2lvLWJhZGdlLW5ldXRyYWwgcG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX2hlYWRfX2JhZGdlXCI+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnVzZXJzXCI+PC9tYXQtaWNvbj4mbmJzcDtTaGFyZWQgUG9saWN5IEdyb3VwXG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRQb2xpY3kuZGVzY3JpcHRpb25cIiBjbGFzcz1cInBvbGljeUZvcm1fX2luZm9fX2Rlc2NyaXB0aW9uXCI+e3sgc2VsZWN0ZWRQb2xpY3kuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGdpby1wcy1zdGVwLWZvcm1cbiAgICBbZ2VuZXJpY1BvbGljeV09XCJzZWxlY3RlZFBvbGljeVwiXG4gICAgW2Zsb3dQaGFzZV09XCJmbG93UGhhc2VcIlxuICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgIChzdGVwQ2hhbmdlKT1cIm9uU3RlcENoYW5nZSgkZXZlbnQpXCJcbiAgICAoaXNWYWxpZCk9XCJvbklzVmFsaWQoJGV2ZW50KVwiXG4gID48L2dpby1wcy1zdGVwLWZvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cImFjdGlvbnNcIiBhbGlnbj1cImVuZFwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uc19fY2FuY2VsQnRuXCIgbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwic2VsZWN0ZWRQb2xpY3lcIlxuICAgIGNsYXNzPVwiYWN0aW9uc19fYWRkQnRuXCJcbiAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIFtkaXNhYmxlZF09XCIhaXNWYWxpZCB8fCBpc1VubGljZW5zZWRcIlxuICAgIChjbGljayk9XCJvbkFkZFBvbGljeSgpXCJcbiAgPlxuICAgIEFkZCBwb2xpY3lcbiAgPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
@@ -1,53 +0,0 @@
1
- /*
2
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component, Inject } from '@angular/core';
17
- import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
18
- import { GioIconsModule } from '@gravitee/ui-particles-angular';
19
- import { CommonModule } from '@angular/common';
20
- import { MatButtonModule } from '@angular/material/button';
21
- import { GioPolicyStudioStepFormComponent } from '../step-form/gio-ps-step-form.component';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "@angular/material/dialog";
24
- import * as i2 from "@angular/common";
25
- import * as i3 from "@angular/material/button";
26
- import * as i4 from "@angular/material/icon";
27
- export class GioPolicyStudioStepEditDialogComponent {
28
- constructor(dialogRef, flowDialogData) {
29
- this.dialogRef = dialogRef;
30
- this.isValid = false;
31
- this.readOnly = false;
32
- this.flowPhase = flowDialogData.flowPhase;
33
- this.apiType = flowDialogData.apiType;
34
- this.genericPolicy = flowDialogData.genericPolicy;
35
- this.step = flowDialogData.step;
36
- this.readOnly = Boolean(flowDialogData.readOnly);
37
- }
38
- onSave() {
39
- this.dialogRef.close({
40
- ...this.step,
41
- });
42
- }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioPolicyStudioStepEditDialogComponent, isStandalone: true, selector: "gio-ps-step-edit-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"genericPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">\n {{ step.name }}\n <span *ngIf=\"genericPolicy.type === 'SHARED_POLICY_GROUP'\" class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\">\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span></span\n >\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ genericPolicy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form\n [readOnly]=\"readOnly\"\n [genericPolicy]=\"genericPolicy\"\n [flowPhase]=\"flowPhase\"\n [apiType]=\"apiType\"\n [(step)]=\"step\"\n (isValid)=\"isValid = $event\"\n ></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.title__icon{margin-right:8px}.title__closeBtn{top:0;right:-24px;float:right}.title__description{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#322f2f}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["readOnly", "step", "flowPhase", "apiType", "genericPolicy"], outputs: ["stepChange", "isValid"] }] }); }
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, decorators: [{
47
- type: Component,
48
- args: [{ imports: [CommonModule, MatButtonModule, MatDialogModule, GioIconsModule, GioPolicyStudioStepFormComponent], selector: 'gio-ps-step-edit-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"genericPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">\n {{ step.name }}\n <span *ngIf=\"genericPolicy.type === 'SHARED_POLICY_GROUP'\" class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\">\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span></span\n >\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ genericPolicy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form\n [readOnly]=\"readOnly\"\n [genericPolicy]=\"genericPolicy\"\n [flowPhase]=\"flowPhase\"\n [apiType]=\"apiType\"\n [(step)]=\"step\"\n (isValid)=\"isValid = $event\"\n ></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.title__icon{margin-right:8px}.title__closeBtn{top:0;right:-24px;float:right}.title__description{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#322f2f}\n"] }]
49
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
50
- type: Inject,
51
- args: [MAT_DIALOG_DATA]
52
- }] }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zdGVwLWVkaXQtZGlhbG9nL2dpby1wcy1zdGVwLWVkaXQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1lZGl0LWRpYWxvZy9naW8tcHMtc3RlcC1lZGl0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzNELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7QUFrQjNGLE1BQU0sT0FBTyxzQ0FBc0M7SUFTakQsWUFDUyxTQUFvRyxFQUNsRixjQUFpRDtRQURuRSxjQUFTLEdBQVQsU0FBUyxDQUEyRjtRQUp0RyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFNdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUk7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXhCVSxzQ0FBc0MsOENBV3ZDLGVBQWU7a0dBWGQsc0NBQXNDLG1GQ3hDbkQsazhEQW1EQSxzYkRoQlksWUFBWSxrSUFBRSxlQUFlLHdVQUFFLGVBQWUsK25CQUFFLGNBQWMsb0xBQUUsZ0NBQWdDOzsyRkFLL0Ysc0NBQXNDO2tCQU5sRCxTQUFTOzhCQUNDLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGdDQUFnQyxDQUFDLFlBQ2pHLHlCQUF5Qjs7MEJBZWhDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBHaW9JY29uc01vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuaW1wb3J0IHsgRmxvd1BoYXNlLCBTdGVwLCBHZW5lcmljUG9saWN5LCBBcGlUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb1N0ZXBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vc3RlcC1mb3JtL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dEYXRhID0ge1xuICBnZW5lcmljUG9saWN5OiBHZW5lcmljUG9saWN5O1xuICBzdGVwOiBTdGVwO1xuICBmbG93UGhhc2U6IEZsb3dQaGFzZTtcbiAgYXBpVHlwZTogQXBpVHlwZTtcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dSZXN1bHQgPSB1bmRlZmluZWQgfCBTdGVwO1xuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXREaWFsb2dNb2R1bGUsIEdpb0ljb25zTW9kdWxlLCBHaW9Qb2xpY3lTdHVkaW9TdGVwRm9ybUNvbXBvbmVudF0sXG4gIHNlbGVjdG9yOiAnZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtc3RlcC1lZGl0LWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0NvbXBvbmVudCB7XG4gIHB1YmxpYyBnZW5lcmljUG9saWN5ITogR2VuZXJpY1BvbGljeTtcbiAgcHVibGljIHN0ZXAhOiBTdGVwO1xuICBwdWJsaWMgZmxvd1BoYXNlITogRmxvd1BoYXNlO1xuICBwdWJsaWMgYXBpVHlwZSE6IEFwaVR5cGU7XG5cbiAgcHVibGljIGlzVmFsaWQgPSBmYWxzZTtcbiAgcHVibGljIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ1Jlc3VsdD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGZsb3dEaWFsb2dEYXRhOiBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0RhdGEsXG4gICkge1xuICAgIHRoaXMuZmxvd1BoYXNlID0gZmxvd0RpYWxvZ0RhdGEuZmxvd1BoYXNlO1xuICAgIHRoaXMuYXBpVHlwZSA9IGZsb3dEaWFsb2dEYXRhLmFwaVR5cGU7XG4gICAgdGhpcy5nZW5lcmljUG9saWN5ID0gZmxvd0RpYWxvZ0RhdGEuZ2VuZXJpY1BvbGljeTtcbiAgICB0aGlzLnN0ZXAgPSBmbG93RGlhbG9nRGF0YS5zdGVwO1xuICAgIHRoaXMucmVhZE9ubHkgPSBCb29sZWFuKGZsb3dEaWFsb2dEYXRhLnJlYWRPbmx5KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgLi4udGhpcy5zdGVwLFxuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cbjxoMiBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwidGl0bGVcIj5cbiAgPG1hdC1pY29uIGNsYXNzPVwidGl0bGVfX2ljb25cIiBbc3ZnSWNvbl09XCJnZW5lcmljUG9saWN5Lmljb24gPz8gJ2dpbzpwdXp6bGUnXCI+PC9tYXQtaWNvbj5cblxuICA8c3BhbiAqbmdJZj1cInN0ZXAubmFtZVwiIGNsYXNzPVwidGl0bGVfX25hbWVcIj5cbiAgICB7eyBzdGVwLm5hbWUgfX1cbiAgICA8c3BhbiAqbmdJZj1cImdlbmVyaWNQb2xpY3kudHlwZSA9PT0gJ1NIQVJFRF9QT0xJQ1lfR1JPVVAnXCIgY2xhc3M9XCJnaW8tYmFkZ2UtbmV1dHJhbCBwb2xpY2llc0NhdGFsb2dfX2xpc3RfX3BvbGljeV9faGVhZF9fYmFkZ2VcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnVzZXJzXCI+PC9tYXQtaWNvbj4mbmJzcDtTaGFyZWQgUG9saWN5IEdyb3VwXG4gICAgPC9zcGFuPjwvc3BhblxuICA+XG5cbiAgPGJ1dHRvbiBjbGFzcz1cInRpdGxlX19jbG9zZUJ0blwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xvc2UgZGlhbG9nXCIgW21hdC1kaWFsb2ctY2xvc2VdPVwiXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86Y2FuY2VsXCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPGRpdiBjbGFzcz1cInRpdGxlX19kZXNjcmlwdGlvblwiPlxuICAgIHt7IGdlbmVyaWNQb2xpY3kuZGVzY3JpcHRpb24gfX1cbiAgPC9kaXY+XG48L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiY29udGVudFwiPlxuICA8Z2lvLXBzLXN0ZXAtZm9ybVxuICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgW2dlbmVyaWNQb2xpY3ldPVwiZ2VuZXJpY1BvbGljeVwiXG4gICAgW2Zsb3dQaGFzZV09XCJmbG93UGhhc2VcIlxuICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgIFsoc3RlcCldPVwic3RlcFwiXG4gICAgKGlzVmFsaWQpPVwiaXNWYWxpZCA9ICRldmVudFwiXG4gID48L2dpby1wcy1zdGVwLWZvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cImFjdGlvbnNcIiBhbGlnbj1cImVuZFwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uc19fY2FuY2VsQnRuXCIgbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbnNfX3NhdmVCdG5cIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b24gcm9sZT1cImRpYWxvZ1wiIChjbGljayk9XCJvblNhdmUoKVwiIFtkaXNhYmxlZF09XCIhaXNWYWxpZFwiPlNhdmU8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
@@ -1,158 +0,0 @@
1
- /*
2
- * Copyright (C) 2022 The Gravitee team (http://gravitee.io)
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component, EventEmitter, Input, Output } from '@angular/core';
17
- import { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
18
- import { catchError, map, takeUntil } from 'rxjs/operators';
19
- import { of, Subject } from 'rxjs';
20
- import { GioBannerModule, GioElAssistantComponent, GioElPromptComponent, GioFormJsonSchemaComponent, GioFormJsonSchemaModule, GioLoaderModule, GioPopoverComponent, PopoverTriggerDirective, } from '@gravitee/ui-particles-angular';
21
- import { isEmpty } from 'lodash';
22
- import { CommonModule } from '@angular/common';
23
- import { MatFormFieldModule } from '@angular/material/form-field';
24
- import { MatInputModule } from '@angular/material/input';
25
- import { GioAsciidoctorModule } from '@gravitee/ui-particles-angular/gio-asciidoctor';
26
- import { MarkdownComponent } from 'ngx-markdown';
27
- import { MatIcon } from '@angular/material/icon';
28
- import { isPolicy, isSharedPolicyGroupPolicy, toPolicy } from '../../models';
29
- import * as i0 from "@angular/core";
30
- import * as i1 from "../../policy-studio/gio-policy-studio.service";
31
- import * as i2 from "@angular/common";
32
- import * as i3 from "@angular/forms";
33
- import * as i4 from "@angular/material/input";
34
- import * as i5 from "@angular/material/form-field";
35
- import * as i6 from "@gravitee/ui-particles-angular";
36
- import * as i7 from "@gravitee/ui-particles-angular/gio-asciidoctor";
37
- export class GioPolicyStudioStepFormComponent {
38
- constructor(policyStudioService) {
39
- this.policyStudioService = policyStudioService;
40
- this.noDocumentationAvailable = { content: 'No documentation available.', language: 'ASCIIDOC' };
41
- this.readOnly = false;
42
- this.stepChange = new EventEmitter();
43
- this.isValid = new EventEmitter();
44
- this.unsubscribe$ = new Subject();
45
- this.isMessage = false;
46
- }
47
- ngOnChanges(changes) {
48
- if (changes.genericPolicy) {
49
- if (isPolicy(this.genericPolicy)) {
50
- this.policySchema$ = this.policyStudioService.getPolicySchema(toPolicy(this.genericPolicy)).pipe(map(schema => {
51
- if (GioFormJsonSchemaComponent.isDisplayable(schema)) {
52
- return schema;
53
- }
54
- return {};
55
- }));
56
- this.policyDocumentation$ = this.policyStudioService.getPolicyDocumentation(toPolicy(this.genericPolicy)).pipe(map(doc => {
57
- if (typeof doc === 'string') {
58
- return { content: doc, language: 'ASCIIDOC' };
59
- }
60
- return isEmpty(doc?.content) ? this.noDocumentationAvailable : doc;
61
- }), catchError(() => of(this.noDocumentationAvailable)));
62
- }
63
- if (isSharedPolicyGroupPolicy(this.genericPolicy)) {
64
- this.policySchema$ = of({});
65
- this.policyDocumentation$ = of({ content: ' ', language: 'ASCIIDOC' });
66
- this.infoBanner = this.genericPolicy.prerequisiteMessage;
67
- }
68
- }
69
- if (changes.flowPhase) {
70
- this.context = {
71
- flowPhase: this.flowPhase,
72
- apiType: this.apiType,
73
- };
74
- this.isMessage = this.flowPhase === 'PUBLISH' || this.flowPhase === 'SUBSCRIBE';
75
- }
76
- }
77
- ngOnInit() {
78
- this.initStepForm();
79
- }
80
- ngOnDestroy() {
81
- this.unsubscribe$.next();
82
- this.unsubscribe$.complete();
83
- }
84
- initStepForm() {
85
- this.stepForm = new UntypedFormGroup({
86
- description: new UntypedFormControl({ value: this.step?.description, disabled: this.readOnly }),
87
- condition: new UntypedFormControl({ value: this.step?.condition, disabled: this.readOnly }),
88
- messageCondition: new FormControl({ value: this.step?.messageCondition, disabled: this.readOnly }),
89
- configuration: new UntypedFormControl({ value: this.step?.configuration, disabled: this.readOnly }),
90
- });
91
- this.stepForm.valueChanges.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
92
- this.emitStepChange();
93
- });
94
- this.stepForm.statusChanges.pipe(takeUntil(this.unsubscribe$)).subscribe(valid => {
95
- this.isValid.emit(valid === 'VALID');
96
- });
97
- }
98
- onJsonSchemaReady(isReady) {
99
- // When ready and if the form is valid, emit
100
- if (isReady) {
101
- this.emitStepChange();
102
- if (this.stepForm?.status === 'VALID') {
103
- this.isValid.emit(true);
104
- }
105
- }
106
- }
107
- emitStepChange() {
108
- let configuration = this.stepForm?.get('configuration')?.value;
109
- if (isSharedPolicyGroupPolicy(this.genericPolicy)) {
110
- configuration = { sharedPolicyGroupId: this.genericPolicy.sharedPolicyGroupId };
111
- }
112
- this.stepChange.emit({
113
- ...this.step,
114
- description: this.stepForm?.get('description')?.value,
115
- condition: this.stepForm?.get('condition')?.value ?? undefined,
116
- messageCondition: this.stepForm?.get('messageCondition')?.value ?? undefined,
117
- configuration,
118
- });
119
- }
120
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioStepFormComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioStepFormComponent, isStandalone: true, selector: "gio-ps-step-form", inputs: { readOnly: "readOnly", step: "step", flowPhase: "flowPhase", apiType: "apiType", genericPolicy: "genericPolicy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n <gio-el-assistant matSuffix />\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n <gio-el-assistant matSuffix />\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n @switch (policyDocumentation.language) {\n @case ('ASCIIDOC') {\n <gio-asciidoctor [content]=\"policyDocumentation.content\"></gio-asciidoctor>\n }\n @case ('MARKDOWN') {\n <markdown class=\"documentation__content__markdown\" [data]=\"policyDocumentation.content\"></markdown>\n }\n }\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-direction:row;border:1px solid #d2cecd;border-radius:8px}::ng-deep gio-ps-step-form .documentation__content__markdown table{overflow:hidden;width:100%;border:1px solid #d2cecd;border-radius:4px;margin-bottom:12px;border-collapse:separate;border-spacing:0}::ng-deep gio-ps-step-form .documentation__content__markdown table th,::ng-deep gio-ps-step-form .documentation__content__markdown table td{padding:8px;border-bottom:1px solid #d2cecd}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td{border-bottom:none}::ng-deep gio-ps-step-form .documentation__content__markdown table th:first-child{border-top-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table th:last-child{border-top-right-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:first-child{border-bottom-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:last-child{border-bottom-right-radius:4px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d2cecd}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d2cecd}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d2cecd;font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "component", type: i6.GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: ["jsonSchema", "context", "options"], outputs: ["ready"] }, { kind: "ngmodule", type: GioAsciidoctorModule }, { kind: "component", type: i7.GioAsciidoctorComponent, selector: "gio-asciidoctor", inputs: ["content", "src"] }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "component", type: MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: GioElAssistantComponent, selector: "gio-el-assistant" }] }); }
122
- }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioStepFormComponent, decorators: [{
124
- type: Component,
125
- args: [{ imports: [
126
- CommonModule,
127
- ReactiveFormsModule,
128
- MatInputModule,
129
- MatFormFieldModule,
130
- GioFormJsonSchemaModule,
131
- GioAsciidoctorModule,
132
- GioLoaderModule,
133
- GioBannerModule,
134
- MarkdownComponent,
135
- GioElPromptComponent,
136
- GioPopoverComponent,
137
- MatIcon,
138
- PopoverTriggerDirective,
139
- GioElAssistantComponent,
140
- ], selector: 'gio-ps-step-form', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n <gio-el-assistant matSuffix />\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n <gio-el-assistant matSuffix />\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n @switch (policyDocumentation.language) {\n @case ('ASCIIDOC') {\n <gio-asciidoctor [content]=\"policyDocumentation.content\"></gio-asciidoctor>\n }\n @case ('MARKDOWN') {\n <markdown class=\"documentation__content__markdown\" [data]=\"policyDocumentation.content\"></markdown>\n }\n }\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-direction:row;border:1px solid #d2cecd;border-radius:8px}::ng-deep gio-ps-step-form .documentation__content__markdown table{overflow:hidden;width:100%;border:1px solid #d2cecd;border-radius:4px;margin-bottom:12px;border-collapse:separate;border-spacing:0}::ng-deep gio-ps-step-form .documentation__content__markdown table th,::ng-deep gio-ps-step-form .documentation__content__markdown table td{padding:8px;border-bottom:1px solid #d2cecd}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td{border-bottom:none}::ng-deep gio-ps-step-form .documentation__content__markdown table th:first-child{border-top-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table th:last-child{border-top-right-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:first-child{border-bottom-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:last-child{border-bottom-right-radius:4px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d2cecd}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d2cecd}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d2cecd;font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}\n"] }]
141
- }], ctorParameters: () => [{ type: i1.GioPolicyStudioService }], propDecorators: { readOnly: [{
142
- type: Input
143
- }], step: [{
144
- type: Input
145
- }], flowPhase: [{
146
- type: Input,
147
- args: [{ required: true }]
148
- }], apiType: [{
149
- type: Input,
150
- args: [{ required: true }]
151
- }], genericPolicy: [{
152
- type: Input
153
- }], stepChange: [{
154
- type: Output
155
- }], isValid: [{
156
- type: Output
157
- }] } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3N0ZXAtZm9ybS9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1mb3JtL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFDTCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBR3ZCLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMs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QWdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsRUFBRSxLQUFLLElBQUksU0FBUztZQUM1RSxhQUFhO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1SFUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0Msd1JDaEU3QywyNUZBZ0ZBLGd4RERuQ0ksWUFBWSx1TEFDWixtQkFBbUIsbTJCQUNuQixjQUFjLHMyQkFDZCxrQkFBa0IsOEJBQ2xCLHVCQUF1Qiw4TEFDdkIsb0JBQW9CLGdKQUNwQixlQUFlLDBHQUNmLGVBQWUsK01BQ2YsaUJBQWlCLGthQUtqQix1QkFBdUI7OzJGQU1kLGdDQUFnQztrQkFyQjVDLFNBQVM7OEJBQ0M7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsdUJBQXVCO3dCQUN2Qix1QkFBdUI7cUJBQ3hCLFlBQ1Msa0JBQWtCOzJGQVFyQixRQUFRO3NCQURkLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFJQSxPQUFPO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBHaW9CYW5uZXJNb2R1bGUsXG4gIEdpb0VsQXNzaXN0YW50Q29tcG9uZW50LFxuICBHaW9FbFByb21wdENvbXBvbmVudCxcbiAgR2lvRm9ybUpzb25TY2hlbWFDb21wb25lbnQsXG4gIEdpb0Zvcm1Kc29uU2NoZW1hTW9kdWxlLFxuICBHaW9Kc29uU2NoZW1hLFxuICBHaW9Kc29uU2NoZW1hQ29udGV4dCxcbiAgR2lvTG9hZGVyTW9kdWxlLFxuICBHaW9Qb3BvdmVyQ29tcG9uZW50LFxuICBQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSxcbn0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBHaW9Bc2NpaWRvY3Rvck1vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhci9naW8tYXNjaWlkb2N0b3InO1xuaW1wb3J0IHsgTWFya2Rvd25Db21wb25lbnQgfSBmcm9tICduZ3gtbWFya2Rvd24nO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5pbXBvcnQgeyBBcGlUeXBlLCBGbG93UGhhc2UsIEdlbmVyaWNQb2xpY3ksIGlzUG9saWN5LCBpc1NoYXJlZFBvbGljeUdyb3VwUG9saWN5LCBTdGVwLCB0b1BvbGljeSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcG9saWN5LXN0dWRpby9naW8tcG9saWN5LXN0dWRpby5zZXJ2aWNlJztcbmltcG9ydCB7IFBvbGljeURvY3VtZW50YXRpb24gfSBmcm9tICcuLi8uLi9wb2xpY3ktc3R1ZGlvL2dpby1wb2xpY3ktc3R1ZGlvLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgR2lvRm9ybUpzb25TY2hlbWFNb2R1bGUsXG4gICAgR2lvQXNjaWlkb2N0b3JNb2R1bGUsXG4gICAgR2lvTG9hZGVyTW9kdWxlLFxuICAgIEdpb0Jhbm5lck1vZHVsZSxcbiAgICBNYXJrZG93bkNvbXBvbmVudCxcbiAgICBHaW9FbFByb21wdENvbXBvbmVudCxcbiAgICBHaW9Qb3BvdmVyQ29tcG9uZW50LFxuICAgIE1hdEljb24sXG4gICAgUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUsXG4gICAgR2lvRWxBc3Npc3RhbnRDb21wb25lbnQsXG4gIF0sXG4gIHNlbGVjdG9yOiAnZ2lvLXBzLXN0ZXAtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9TdGVwRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IG5vRG9jdW1lbnRhdGlvbkF2YWlsYWJsZTogUG9saWN5RG9jdW1lbnRhdGlvbiA9IHsgY29udGVudDogJ05vIGRvY3VtZW50YXRpb24gYXZhaWxhYmxlLicsIGxhbmd1YWdlOiAnQVNDSUlET0MnIH07XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0ZXA/OiBTdGVwO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBmbG93UGhhc2UhOiBGbG93UGhhc2U7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIGFwaVR5cGUhOiBBcGlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZW5lcmljUG9saWN5ITogR2VuZXJpY1BvbGljeTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHN0ZXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpc1ZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBwb2xpY3lTY2hlbWEkPzogT2JzZXJ2YWJsZTxHaW9Kc29uU2NoZW1hIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gIHB1YmxpYyBwb2xpY3lEb2N1bWVudGF0aW9uJD86IE9ic2VydmFibGU8UG9saWN5RG9jdW1lbnRhdGlvbj47XG4gIHB1YmxpYyBpbmZvQmFubmVyPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBzdGVwRm9ybT86IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgcHVibGljIGNvbnRleHQ/OiBHaW9Kc29uU2NoZW1hQ29udGV4dDtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyBpc01lc3NhZ2UgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwb2xpY3lTdHVkaW9TZXJ2aWNlOiBHaW9Qb2xpY3lTdHVkaW9TZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZ2VuZXJpY1BvbGljeSkge1xuICAgICAgaWYgKGlzUG9saWN5KHRoaXMuZ2VuZXJpY1BvbGljeSkpIHtcbiAgICAgICAgdGhpcy5wb2xpY3lTY2hlbWEkID0gdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLmdldFBvbGljeVNjaGVtYSh0b1BvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKS5waXBlKFxuICAgICAgICAgIG1hcChzY2hlbWEgPT4ge1xuICAgICAgICAgICAgaWYgKEdpb0Zvcm1Kc29uU2NoZW1hQ29tcG9uZW50LmlzRGlzcGxheWFibGUoc2NoZW1hIGFzIEdpb0pzb25TY2hlbWEpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzY2hlbWEgYXMgR2lvSnNvblNjaGVtYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnBvbGljeURvY3VtZW50YXRpb24kID0gdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLmdldFBvbGljeURvY3VtZW50YXRpb24odG9Qb2xpY3kodGhpcy5nZW5lcmljUG9saWN5KSkucGlwZShcbiAgICAgICAgICBtYXAoZG9jID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZXR1cm4geyBjb250ZW50OiBkb2MsIGxhbmd1YWdlOiAnQVNDSUlET0MnIH0gYXMgUG9saWN5RG9jdW1lbnRhdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpc0VtcHR5KGRvYz8uY29udGVudCkgPyB0aGlzLm5vRG9jdW1lbnRhdGlvbkF2YWlsYWJsZSA6IGRvYztcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHRoaXMubm9Eb2N1bWVudGF0aW9uQXZhaWxhYmxlKSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoaXNTaGFyZWRQb2xpY3lHcm91cFBvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKSB7XG4gICAgICAgIHRoaXMucG9saWN5U2NoZW1hJCA9IG9mKHt9KTtcbiAgICAgICAgdGhpcy5wb2xpY3lEb2N1bWVudGF0aW9uJCA9IG9mKHsgY29udGVudDogJyAnLCBsYW5ndWFnZTogJ0FTQ0lJRE9DJyB9KTtcbiAgICAgICAgdGhpcy5pbmZvQmFubmVyID0gdGhpcy5nZW5lcmljUG9saWN5LnByZXJlcXVpc2l0ZU1lc3NhZ2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmZsb3dQaGFzZSkge1xuICAgICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgICBmbG93UGhhc2U6IHRoaXMuZmxvd1BoYXNlLFxuICAgICAgICBhcGlUeXBlOiB0aGlzLmFwaVR5cGUsXG4gICAgICB9O1xuICAgICAgdGhpcy5pc01lc3NhZ2UgPSB0aGlzLmZsb3dQaGFzZSA9PT0gJ1BVQkxJU0gnIHx8IHRoaXMuZmxvd1BoYXNlID09PSAnU1VCU0NSSUJFJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0U3RlcEZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN0ZXBGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcEZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBkZXNjcmlwdGlvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLnN0ZXA/LmRlc2NyaXB0aW9uLCBkaXNhYmxlZDogdGhpcy5yZWFkT25seSB9KSxcbiAgICAgIGNvbmRpdGlvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLnN0ZXA/LmNvbmRpdGlvbiwgZGlzYWJsZWQ6IHRoaXMucmVhZE9ubHkgfSksXG4gICAgICBtZXNzYWdlQ29uZGl0aW9uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkPih7IHZhbHVlOiB0aGlzLnN0ZXA/Lm1lc3NhZ2VDb25kaXRpb24sIGRpc2FibGVkOiB0aGlzLnJlYWRPbmx5IH0pLFxuICAgICAgY29uZmlndXJhdGlvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLnN0ZXA/LmNvbmZpZ3VyYXRpb24sIGRpc2FibGVkOiB0aGlzLnJlYWRPbmx5IH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zdGVwRm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5lbWl0U3RlcENoYW5nZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdGVwRm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKHZhbGlkID0+IHtcbiAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KHZhbGlkID09PSAnVkFMSUQnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkpzb25TY2hlbWFSZWFkeShpc1JlYWR5OiBib29sZWFuKSB7XG4gICAgLy8gV2hlbiByZWFkeSBhbmQgaWYgdGhlIGZvcm0gaXMgdmFsaWQsIGVtaXRcbiAgICBpZiAoaXNSZWFkeSkge1xuICAgICAgdGhpcy5lbWl0U3RlcENoYW5nZSgpO1xuXG4gICAgICBpZiAodGhpcy5zdGVwRm9ybT8uc3RhdHVzID09PSAnVkFMSUQnKSB7XG4gICAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbWl0U3RlcENoYW5nZSgpOiB2b2lkIHtcbiAgICBsZXQgY29uZmlndXJhdGlvbiA9IHRoaXMuc3RlcEZvcm0/LmdldCgnY29uZmlndXJhdGlvbicpPy52YWx1ZTtcblxuICAgIGlmIChpc1NoYXJlZFBvbGljeUdyb3VwUG9saWN5KHRoaXMuZ2VuZXJpY1BvbGljeSkpIHtcbiAgICAgIGNvbmZpZ3VyYXRpb24gPSB7IHNoYXJlZFBvbGljeUdyb3VwSWQ6IHRoaXMuZ2VuZXJpY1BvbGljeS5zaGFyZWRQb2xpY3lHcm91cElkIH07XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoe1xuICAgICAgLi4udGhpcy5zdGVwLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuc3RlcEZvcm0/LmdldCgnZGVzY3JpcHRpb24nKT8udmFsdWUsXG4gICAgICBjb25kaXRpb246IHRoaXMuc3RlcEZvcm0/LmdldCgnY29uZGl0aW9uJyk/LnZhbHVlID8/IHVuZGVmaW5lZCxcbiAgICAgIG1lc3NhZ2VDb25kaXRpb246IHRoaXMuc3RlcEZvcm0/LmdldCgnbWVzc2FnZUNvbmRpdGlvbicpPy52YWx1ZSA/PyB1bmRlZmluZWQsXG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPGRpdiBjbGFzcz1cInNldHRpbmdzXCI+XG4gIDxkaXYgY2xhc3M9XCJzZXR0aW5nc19faGVhZGVyXCI+U2V0dGluZ3M8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2V0dGluZ3NfX2NvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcEZvcm0gJiYgKHBvbGljeVNjaGVtYSQgfCBhc3luYykgYXMgcG9saWN5U2NoZW1hOyBlbHNlIGxvYWRpbmdUbXBsXCIgW2Zvcm1Hcm91cF09XCJzdGVwRm9ybVwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPkRlc2NyaXB0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIGNka0ZvY3VzSW5pdGlhbD48L3RleHRhcmVhPlxuICAgICAgICA8bWF0LWhpbnQ+RGVzY3JpYmUgaG93IHlvdXIgcG9saWN5IHdvcmtzLjwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+VHJpZ2dlciBjb25kaXRpb248L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImNvbmRpdGlvblwiIC8+XG4gICAgICAgIDxtYXQtaGludD5UaGUgY29uZGl0aW9uIHRvIGV4ZWN1dGUgdGhpcyBwb2xpY3kuIFN1cHBvcnRzIEV4cHJlc3Npb24gTGFuZ3VhZ2UuPC9tYXQtaGludD5cbiAgICAgICAgPGdpby1lbC1hc3Npc3RhbnQgbWF0U3VmZml4IC8+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICBAaWYgKGlzTWVzc2FnZSkge1xuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5NZXNzYWdlIHRyaWdnZXIgY29uZGl0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VDb25kaXRpb25cIiAvPlxuICAgICAgICAgIDxtYXQtaGludD5UaGUgY29uZGl0aW9uIHRvIGV4ZWN1dGUgdGhpcyBwb2xpY3kgb24gbWVzc2FnZS4gU3VwcG9ydHMgRXhwcmVzc2lvbiBMYW5ndWFnZS48L21hdC1oaW50PlxuICAgICAgICAgIDxnaW8tZWwtYXNzaXN0YW50IG1hdFN1ZmZpeCAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgfVxuXG4gICAgICA8Z2lvLWZvcm0tanNvbi1zY2hlbWFcbiAgICAgICAgKm5nSWY9XCJwb2xpY3lTY2hlbWFcIlxuICAgICAgICBbanNvblNjaGVtYV09XCIkYW55KHBvbGljeVNjaGVtYSlcIlxuICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgKHJlYWR5KT1cIm9uSnNvblNjaGVtYVJlYWR5KCRldmVudClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maWd1cmF0aW9uXCJcbiAgICAgID48L2dpby1mb3JtLWpzb24tc2NoZW1hPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvbl9faGVhZGVyXCI+RG9jdW1lbnRhdGlvbjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkb2N1bWVudGF0aW9uX19jb250ZW50XCI+XG4gICAgPGdpby1iYW5uZXItd2FybmluZyAqbmdJZj1cImluZm9CYW5uZXJcIj5cbiAgICAgIFByZXJlcXVpc2l0ZSBtZXNzYWdlXG4gICAgICA8c3BhbiBnaW9CYW5uZXJCb2R5Pnt7IGluZm9CYW5uZXIgfX08L3NwYW4+XG4gICAgPC9naW8tYmFubmVyLXdhcm5pbmc+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvbGljeURvY3VtZW50YXRpb24kIHwgYXN5bmMgYXMgcG9saWN5RG9jdW1lbnRhdGlvbjsgZWxzZSBsb2FkaW5nVG1wbFwiPlxuICAgICAgQHN3aXRjaCAocG9saWN5RG9jdW1lbnRhdGlvbi5sYW5ndWFnZSkge1xuICAgICAgICBAY2FzZSAoJ0FTQ0lJRE9DJykge1xuICAgICAgICAgIDxnaW8tYXNjaWlkb2N0b3IgW2NvbnRlbnRdPVwicG9saWN5RG9jdW1lbnRhdGlvbi5jb250ZW50XCI+PC9naW8tYXNjaWlkb2N0b3I+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdNQVJLRE9XTicpIHtcbiAgICAgICAgICA8bWFya2Rvd24gY2xhc3M9XCJkb2N1bWVudGF0aW9uX19jb250ZW50X19tYXJrZG93blwiIFtkYXRhXT1cInBvbGljeURvY3VtZW50YXRpb24uY29udGVudFwiPjwvbWFya2Rvd24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVG1wbD5cbiAgPGdpby1sb2FkZXI+PC9naW8tbG9hZGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,17 +0,0 @@
1
- /*
2
- * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export {};
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpUHJvdG9jb2xUeXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvbW9kZWxzL0FwaVByb3RvY29sVHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCB0eXBlIEFwaVByb3RvY29sVHlwZSA9ICdIVFRQX01FU1NBR0UnIHwgJ0hUVFBfUFJPWFknIHwgJ05BVElWRV9LQUZLQSc7XG4iXX0=