@gravitee/ui-policy-studio-angular 15.13.0-angular-20-4a9d88b → 15.13.0-fix-cron-e0271bb

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/esm2022/gravitee-ui-policy-studio-angular.mjs +5 -0
  2. package/esm2022/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.mjs +43 -0
  3. package/esm2022/lib/components/flow-details/gio-ps-flow-details.component.mjs +184 -0
  4. package/esm2022/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs +115 -0
  5. package/esm2022/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +179 -0
  6. package/esm2022/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +162 -0
  7. package/esm2022/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +81 -0
  8. package/esm2022/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +109 -0
  9. package/esm2022/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.component.mjs +89 -0
  10. package/esm2022/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.mjs +135 -0
  11. package/esm2022/lib/components/flow-form-dialog/gio-ps-flow-form-dialog-result.model.mjs +2 -0
  12. package/esm2022/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +432 -0
  13. package/esm2022/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +165 -0
  14. package/esm2022/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.mjs +53 -0
  15. package/esm2022/lib/components/step-form/gio-ps-step-form.component.mjs +158 -0
  16. package/esm2022/lib/models/ApiProtocolType.mjs +17 -0
  17. package/esm2022/lib/models/ApiType.mjs +17 -0
  18. package/esm2022/lib/models/ConnectorsInfo.mjs +2 -0
  19. package/esm2022/lib/models/PolicySchemaFetcher.mjs +2 -0
  20. package/esm2022/lib/models/SaveOutput.mjs +2 -0
  21. package/esm2022/lib/models/flow/Flow.mjs +2 -0
  22. package/esm2022/lib/models/flow/FlowExecution.mjs +17 -0
  23. package/esm2022/lib/models/flow/HttpMethod.mjs +43 -0
  24. package/esm2022/lib/models/flow/Selector.mjs +2 -0
  25. package/esm2022/lib/models/flow/Step.mjs +2 -0
  26. package/esm2022/lib/models/flow/index.mjs +21 -0
  27. package/esm2022/lib/models/index.mjs +24 -0
  28. package/esm2022/lib/models/plan/Plan.mjs +17 -0
  29. package/esm2022/lib/models/plan/index.mjs +17 -0
  30. package/esm2022/lib/models/policy/GenericPolicy.mjs +24 -0
  31. package/esm2022/lib/models/policy/Policy.mjs +44 -0
  32. package/esm2022/lib/models/policy/SharedPolicyGroupPolicy.mjs +17 -0
  33. package/esm2022/lib/models/policy/index.mjs +19 -0
  34. package/esm2022/lib/policy-group-studio/gio-policy-group-studio.component.mjs +228 -0
  35. package/esm2022/lib/policy-studio/gio-policy-studio.component.mjs +304 -0
  36. package/esm2022/lib/policy-studio/gio-policy-studio.model.mjs +17 -0
  37. package/esm2022/lib/policy-studio/gio-policy-studio.service.mjs +74 -0
  38. package/esm2022/public-api.mjs +22 -0
  39. package/esm2022/testing/gravitee-ui-policy-studio-angular-testing.mjs +5 -0
  40. package/esm2022/testing/lib/components/flow-details/gio-ps-flow-details.harness.mjs +56 -0
  41. package/esm2022/testing/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.harness.mjs +35 -0
  42. package/esm2022/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.mjs +155 -0
  43. package/esm2022/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.mjs +69 -0
  44. package/esm2022/testing/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.harness.mjs +60 -0
  45. package/esm2022/testing/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.harness.mjs +128 -0
  46. package/esm2022/testing/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.harness.mjs +50 -0
  47. package/esm2022/testing/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.harness.mjs +98 -0
  48. package/esm2022/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.mjs +91 -0
  49. package/esm2022/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.mjs +87 -0
  50. package/esm2022/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.mjs +30 -0
  51. package/esm2022/testing/lib/components/step-form/gio-ps-step-form.harness.mjs +56 -0
  52. package/esm2022/testing/lib/models/ApiProtocolType.mjs +17 -0
  53. package/esm2022/testing/lib/models/ApiType.mjs +17 -0
  54. package/esm2022/testing/lib/models/ConnectorsInfo.fixture.mjs +182 -0
  55. package/esm2022/testing/lib/models/ConnectorsInfo.mjs +2 -0
  56. package/esm2022/testing/lib/models/PolicySchemaFetcher.mjs +2 -0
  57. package/esm2022/testing/lib/models/SaveOutput.mjs +2 -0
  58. package/esm2022/testing/lib/models/flow/Flow.fixture.mjs +122 -0
  59. package/esm2022/testing/lib/models/flow/Flow.mjs +2 -0
  60. package/esm2022/testing/lib/models/flow/FlowExecution.fixture.mjs +43 -0
  61. package/esm2022/testing/lib/models/flow/FlowExecution.mjs +17 -0
  62. package/esm2022/testing/lib/models/flow/HttpMethod.mjs +43 -0
  63. package/esm2022/testing/lib/models/flow/Selector.mjs +2 -0
  64. package/esm2022/testing/lib/models/flow/Step.fixture.mjs +92 -0
  65. package/esm2022/testing/lib/models/flow/Step.mjs +2 -0
  66. package/esm2022/testing/lib/models/flow/index-testing.mjs +19 -0
  67. package/esm2022/testing/lib/models/flow/index.mjs +21 -0
  68. package/esm2022/testing/lib/models/index-testing.mjs +20 -0
  69. package/esm2022/testing/lib/models/index.mjs +24 -0
  70. package/esm2022/testing/lib/models/plan/Plan.fixture.mjs +31 -0
  71. package/esm2022/testing/lib/models/plan/Plan.mjs +17 -0
  72. package/esm2022/testing/lib/models/plan/index-testing.mjs +17 -0
  73. package/esm2022/testing/lib/models/plan/index.mjs +17 -0
  74. package/esm2022/testing/lib/models/policy/GenericPolicy.mjs +24 -0
  75. package/esm2022/testing/lib/models/policy/Policy.fixture.mjs +194 -0
  76. package/esm2022/testing/lib/models/policy/Policy.mjs +44 -0
  77. package/esm2022/testing/lib/models/policy/SharedPolicyGroupPolicy.mjs +17 -0
  78. package/esm2022/testing/lib/models/policy/index-testing.mjs +17 -0
  79. package/esm2022/testing/lib/models/policy/index.mjs +19 -0
  80. package/esm2022/testing/lib/policy-group-studio/gio-policy-group-studio.harness.mjs +52 -0
  81. package/esm2022/testing/lib/policy-studio/gio-policy-studio.harness.mjs +202 -0
  82. package/esm2022/testing/lib/policy-studio/gio-policy-studio.model.mjs +17 -0
  83. package/esm2022/testing/public-testing-api.mjs +19 -0
  84. package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs +1 -1
  85. package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  86. package/fesm2022/gravitee-ui-policy-studio-angular.mjs +95 -92
  87. package/fesm2022/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  88. package/index.d.ts +3 -404
  89. package/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.d.ts +8 -0
  90. package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +29 -0
  91. package/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.d.ts +20 -0
  92. package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +47 -0
  93. package/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.d.ts +33 -0
  94. package/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.d.ts +18 -0
  95. package/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.d.ts +21 -0
  96. package/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.component.d.ts +21 -0
  97. package/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.d.ts +24 -0
  98. package/lib/components/flow-form-dialog/gio-ps-flow-form-dialog-result.model.d.ts +2 -0
  99. package/lib/components/flows-menu/gio-ps-flows-menu.component.d.ts +57 -0
  100. package/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.d.ts +47 -0
  101. package/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.d.ts +24 -0
  102. package/lib/components/step-form/gio-ps-step-form.component.d.ts +35 -0
  103. package/lib/models/ApiProtocolType.d.ts +1 -0
  104. package/lib/models/ApiType.d.ts +1 -0
  105. package/lib/models/ConnectorsInfo.d.ts +7 -0
  106. package/lib/models/PolicySchemaFetcher.d.ts +5 -0
  107. package/lib/models/SaveOutput.d.ts +7 -0
  108. package/lib/models/flow/Flow.d.ts +24 -0
  109. package/lib/models/flow/FlowExecution.d.ts +11 -0
  110. package/lib/models/flow/HttpMethod.d.ts +3 -0
  111. package/lib/models/flow/Selector.d.ts +37 -0
  112. package/lib/models/flow/Step.d.ts +34 -0
  113. package/lib/models/flow/index.d.ts +5 -0
  114. package/lib/models/index.d.ts +8 -0
  115. package/lib/models/plan/Plan.d.ts +6 -0
  116. package/lib/models/plan/index.d.ts +1 -0
  117. package/lib/models/policy/GenericPolicy.d.ts +22 -0
  118. package/lib/models/policy/Policy.d.ts +28 -0
  119. package/lib/models/policy/SharedPolicyGroupPolicy.d.ts +11 -0
  120. package/lib/models/policy/index.d.ts +3 -0
  121. package/lib/policy-group-studio/gio-policy-group-studio.component.d.ts +70 -0
  122. package/lib/policy-studio/gio-policy-studio.component.d.ts +98 -0
  123. package/lib/policy-studio/gio-policy-studio.model.d.ts +17 -0
  124. package/lib/policy-studio/gio-policy-studio.service.d.ts +30 -0
  125. package/package.json +11 -7
  126. package/public-api.d.ts +3 -0
  127. package/testing/index.d.ts +3 -369
  128. package/testing/lib/components/flow-details/gio-ps-flow-details.harness.d.ts +12 -0
  129. package/testing/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.harness.d.ts +5 -0
  130. package/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.d.ts +69 -0
  131. package/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.d.ts +21 -0
  132. package/testing/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.harness.d.ts +13 -0
  133. package/testing/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.harness.d.ts +37 -0
  134. package/testing/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.harness.d.ts +17 -0
  135. package/testing/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.harness.d.ts +33 -0
  136. package/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.d.ts +31 -0
  137. package/testing/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.harness.d.ts +20 -0
  138. package/testing/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.harness.d.ts +8 -0
  139. package/testing/lib/components/step-form/gio-ps-step-form.harness.d.ts +18 -0
  140. package/testing/lib/models/ApiProtocolType.d.ts +1 -0
  141. package/testing/lib/models/ApiType.d.ts +1 -0
  142. package/testing/lib/models/ConnectorsInfo.d.ts +7 -0
  143. package/testing/lib/models/ConnectorsInfo.fixture.d.ts +12 -0
  144. package/testing/lib/models/PolicySchemaFetcher.d.ts +5 -0
  145. package/testing/lib/models/SaveOutput.d.ts +7 -0
  146. package/testing/lib/models/flow/Flow.d.ts +24 -0
  147. package/testing/lib/models/flow/Flow.fixture.d.ts +6 -0
  148. package/testing/lib/models/flow/FlowExecution.d.ts +11 -0
  149. package/testing/lib/models/flow/FlowExecution.fixture.d.ts +3 -0
  150. package/testing/lib/models/flow/HttpMethod.d.ts +3 -0
  151. package/testing/lib/models/flow/Selector.d.ts +37 -0
  152. package/testing/lib/models/flow/Step.d.ts +34 -0
  153. package/testing/lib/models/flow/Step.fixture.d.ts +5 -0
  154. package/testing/lib/models/flow/index-testing.d.ts +3 -0
  155. package/testing/lib/models/flow/index.d.ts +5 -0
  156. package/testing/lib/models/index-testing.d.ts +4 -0
  157. package/testing/lib/models/index.d.ts +8 -0
  158. package/testing/lib/models/plan/Plan.d.ts +6 -0
  159. package/testing/lib/models/plan/Plan.fixture.d.ts +2 -0
  160. package/testing/lib/models/plan/index-testing.d.ts +1 -0
  161. package/testing/lib/models/plan/index.d.ts +1 -0
  162. package/testing/lib/models/policy/GenericPolicy.d.ts +22 -0
  163. package/testing/lib/models/policy/Policy.d.ts +28 -0
  164. package/testing/lib/models/policy/Policy.fixture.d.ts +4 -0
  165. package/testing/lib/models/policy/SharedPolicyGroupPolicy.d.ts +11 -0
  166. package/testing/lib/models/policy/index-testing.d.ts +1 -0
  167. package/testing/lib/models/policy/index.d.ts +3 -0
  168. package/testing/lib/policy-group-studio/gio-policy-group-studio.harness.d.ts +20 -0
  169. package/testing/lib/policy-studio/gio-policy-studio.harness.d.ts +78 -0
  170. package/testing/lib/policy-studio/gio-policy-studio.model.d.ts +17 -0
  171. package/testing/public-testing-api.d.ts +3 -0
@@ -0,0 +1,228 @@
1
+ /*
2
+ * Copyright (C) 2024 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 { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
17
+ import { EMPTY } from 'rxjs';
18
+ import { GioFormJsonSchemaModule, GioLoaderModule } from '@gravitee/ui-particles-angular';
19
+ import { GioPolicyStudioDetailsPhaseComponent } from '../components/flow-details-phase/gio-ps-flow-details-phase.component';
20
+ import { fromExecutionPhase, fromPolicyInput, toGenericPolicies, } from '../models';
21
+ import * as i0 from "@angular/core";
22
+ import * as i1 from "../policy-studio/gio-policy-studio.service";
23
+ import * as i2 from "@gravitee/ui-particles-angular";
24
+ export class GioPolicyGroupStudioComponent {
25
+ /**
26
+ * List of policies usable in the studio
27
+ */
28
+ set policies(value) {
29
+ this._policies = value.map(fromPolicyInput);
30
+ }
31
+ get policies() {
32
+ return this._policies;
33
+ }
34
+ /**
35
+ * Execution phase targeted by the Policy Group Studio
36
+ * @deprecated Use `flowPhase` instead. To keep as long as we support APIM < 4.6
37
+ */
38
+ set executionPhase(value) {
39
+ this.flowPhase = fromExecutionPhase(value);
40
+ }
41
+ constructor(policyStudioService) {
42
+ this.policyStudioService = policyStudioService;
43
+ this._policies = [];
44
+ /**
45
+ * Whether the Policy Group Studio is in read-only mode
46
+ */
47
+ this.readOnly = false;
48
+ /**
49
+ * Called when Policy Group Studio needs to fetch the policy schema
50
+ * @returns Observable of the policy schema
51
+ */
52
+ this.policySchemaFetcher = () => EMPTY;
53
+ /**
54
+ * Called when Policy Group Studio needs to fetch the policy documentation
55
+ * @returns Observable of the policy documentation
56
+ */
57
+ this.policyDocumentationFetcher = () => EMPTY;
58
+ this.policyGroup = [];
59
+ /**
60
+ * Output event when the Policy Group Studio changes
61
+ */
62
+ this.policyGroupChange = new EventEmitter();
63
+ this.isLoading = true;
64
+ this.createStartConnector = name => [
65
+ {
66
+ name,
67
+ icon: 'gio:arrow-right',
68
+ type: 'start',
69
+ supportedModes: [],
70
+ },
71
+ ];
72
+ this.createEndConnector = name => [
73
+ {
74
+ name,
75
+ icon: 'gio:arrow-right',
76
+ type: 'end',
77
+ supportedModes: [],
78
+ },
79
+ ];
80
+ this.steps = [];
81
+ this.genericPolicies = [];
82
+ this.startConnector = [];
83
+ this.endConnector = [];
84
+ this.phases = {
85
+ // HTTP Proxy
86
+ PROXY__REQUEST: {
87
+ name: 'Request phase',
88
+ description: 'Policies will be applied during the connection establishment',
89
+ startConnectorName: 'Incoming request',
90
+ endConnectorName: 'Outgoing request',
91
+ },
92
+ PROXY__RESPONSE: {
93
+ name: 'Response phase',
94
+ description: 'Policies will be applied to the response from the initial connection.',
95
+ startConnectorName: 'Incoming response',
96
+ endConnectorName: 'Outgoing response',
97
+ },
98
+ PROXY__PUBLISH: null, // n/a
99
+ PROXY__SUBSCRIBE: null, // n/a
100
+ PROXY__CONNECT: null, // n/a
101
+ PROXY__INTERACT: null, // n/a
102
+ // LLM Proxy
103
+ LLM_PROXY__REQUEST: {
104
+ name: 'Request phase',
105
+ description: 'Policies will be applied during the connection establishment',
106
+ startConnectorName: 'Incoming request',
107
+ endConnectorName: 'Outgoing request',
108
+ },
109
+ LLM_PROXY__RESPONSE: {
110
+ name: 'Response phase',
111
+ description: 'Policies will be applied to the response from the initial connection.',
112
+ startConnectorName: 'Incoming response',
113
+ endConnectorName: 'Outgoing response',
114
+ },
115
+ LLM_PROXY__PUBLISH: null, // n/a
116
+ LLM_PROXY__SUBSCRIBE: null, // n/a
117
+ LLM_PROXY__CONNECT: null, // n/a
118
+ LLM_PROXY__INTERACT: null, // n/a
119
+ // MCP Proxy
120
+ MCP_PROXY__REQUEST: {
121
+ name: 'Request phase',
122
+ description: 'Policies will be applied during the connection establishment',
123
+ startConnectorName: 'Incoming request',
124
+ endConnectorName: 'Outgoing request',
125
+ },
126
+ MCP_PROXY__RESPONSE: {
127
+ name: 'Response phase',
128
+ description: 'Policies will be applied to the response from the initial connection.',
129
+ startConnectorName: 'Incoming response',
130
+ endConnectorName: 'Outgoing response',
131
+ },
132
+ MCP_PROXY__PUBLISH: null, // n/a
133
+ MCP_PROXY__SUBSCRIBE: null, // n/a
134
+ MCP_PROXY__CONNECT: null, // n/a
135
+ MCP_PROXY__INTERACT: null, // n/a
136
+ // HTTP Message
137
+ MESSAGE__REQUEST: {
138
+ name: 'Request phase',
139
+ description: 'Policies will be applied during the connection establishment',
140
+ startConnectorName: 'Incoming request',
141
+ endConnectorName: 'Outgoing request',
142
+ },
143
+ MESSAGE__RESPONSE: {
144
+ name: 'Response phase',
145
+ description: 'Policies will be applied during the connection termination',
146
+ startConnectorName: 'Incoming response',
147
+ endConnectorName: 'Outgoing response',
148
+ },
149
+ MESSAGE__PUBLISH: {
150
+ name: 'Publish phase',
151
+ description: 'Policies will be applied on messages sent to the endpoint',
152
+ startConnectorName: 'Incoming message request',
153
+ endConnectorName: 'Outgoing message request',
154
+ },
155
+ MESSAGE__SUBSCRIBE: {
156
+ name: 'Subscribe phase',
157
+ description: 'Policies will be applied on messages received by the entrypoint',
158
+ startConnectorName: 'Incoming message response',
159
+ endConnectorName: 'Outgoing message response',
160
+ },
161
+ MESSAGE__CONNECT: null, // n/a
162
+ MESSAGE__INTERACT: null, // n/a
163
+ // NATIVE
164
+ // TODO: To implement we want to make PS compatible with the native API
165
+ NATIVE__CONNECT: null, // n/a
166
+ NATIVE__INTERACT: null, // n/a
167
+ NATIVE__PUBLISH: null, // n/a
168
+ NATIVE__SUBSCRIBE: null, // n/a
169
+ NATIVE__REQUEST: null, // n/a
170
+ NATIVE__RESPONSE: null, // n/a
171
+ };
172
+ }
173
+ ngOnChanges(changes) {
174
+ if (changes.policySchemaFetcher) {
175
+ this.policyStudioService.setPolicySchemaFetcher(this.policySchemaFetcher);
176
+ }
177
+ if (changes.policyDocumentationFetcher) {
178
+ this.policyStudioService.setPolicyDocumentationFetcher(this.policyDocumentationFetcher);
179
+ }
180
+ if (changes.policies) {
181
+ this.isLoading = false;
182
+ this.genericPolicies = toGenericPolicies(this._policies);
183
+ }
184
+ if (changes.executionPhase || changes.flowPhase) {
185
+ this.policyGroupVM = this.phases[`${this.apiType}__${this.flowPhase}`] ?? undefined;
186
+ this.startConnector = this.createStartConnector(this.policyGroupVM?.startConnectorName ?? '');
187
+ this.endConnector = this.createEndConnector(this.policyGroupVM?.endConnectorName ?? '');
188
+ }
189
+ if (changes.policyGroup) {
190
+ this.steps = this.policyGroup;
191
+ }
192
+ }
193
+ onStepsChange(steps) {
194
+ this.steps = steps;
195
+ this.policyGroupChange.emit(steps);
196
+ }
197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyGroupStudioComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyGroupStudioComponent, isStandalone: true, selector: "gio-policy-group-studio", inputs: { policies: ["policies", "policies", (policies) => policies ?? []], readOnly: "readOnly", apiType: "apiType", executionPhase: "executionPhase", flowPhase: "flowPhase", policySchemaFetcher: "policySchemaFetcher", policyDocumentationFetcher: "policyDocumentationFetcher", policyGroup: "policyGroup" }, outputs: { policyGroupChange: "policyGroupChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2024 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@if (!isLoading && policyGroupVM) {\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n [name]=\"policyGroupVM.name\"\n [description]=\"policyGroupVM.description\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"startConnector\"\n [endConnector]=\"endConnector\"\n [steps]=\"steps\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n [policyFlowPhase]=\"flowPhase\"\n (stepsChange)=\"onStepsChange($event)\"\n ></gio-ps-flow-details-phase>\n} @else {\n <gio-loader></gio-loader>\n}\n", styles: [""], dependencies: [{ kind: "component", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "genericPolicies", "policyFlowPhase", "trialUrl", "disabledNotYetAvailable"], outputs: ["stepsChange"] }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i2.GioLoaderComponent, selector: "gio-loader" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
199
+ }
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyGroupStudioComponent, decorators: [{
201
+ type: Component,
202
+ args: [{ selector: 'gio-policy-group-studio', imports: [GioPolicyStudioDetailsPhaseComponent, GioFormJsonSchemaModule, GioLoaderModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n\n Copyright (C) 2024 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@if (!isLoading && policyGroupVM) {\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n [name]=\"policyGroupVM.name\"\n [description]=\"policyGroupVM.description\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"startConnector\"\n [endConnector]=\"endConnector\"\n [steps]=\"steps\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n [policyFlowPhase]=\"flowPhase\"\n (stepsChange)=\"onStepsChange($event)\"\n ></gio-ps-flow-details-phase>\n} @else {\n <gio-loader></gio-loader>\n}\n" }]
203
+ }], ctorParameters: () => [{ type: i1.GioPolicyStudioService }], propDecorators: { policies: [{
204
+ type: Input,
205
+ args: [{
206
+ transform: (policies) => policies ?? [],
207
+ }]
208
+ }], readOnly: [{
209
+ type: Input
210
+ }], apiType: [{
211
+ type: Input,
212
+ args: [{ required: true }]
213
+ }], executionPhase: [{
214
+ type: Input
215
+ }], flowPhase: [{
216
+ type: Input
217
+ }], policySchemaFetcher: [{
218
+ type: Input,
219
+ args: [{ required: true }]
220
+ }], policyDocumentationFetcher: [{
221
+ type: Input,
222
+ args: [{ required: true }]
223
+ }], policyGroup: [{
224
+ type: Input
225
+ }], policyGroupChange: [{
226
+ type: Output
227
+ }] } });
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBvbGljeS1ncm91cC1zdHVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvcG9saWN5LWdyb3VwLXN0dWRpby9naW8tcG9saWN5LWdyb3VwLXN0dWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9wb2xpY3ktZ3JvdXAtc3R1ZGlvL2dpby1wb2xpY3ktZ3JvdXAtc3R1ZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFMUYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDNUgsT0FBTyxFQUtMLGtCQUFrQixFQUNsQixlQUFlLEVBT2YsaUJBQWlCLEdBQ2xCLE1BQU0sV0FBVyxDQUFDOzs7O0FBb0JuQixNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDOztPQUVHO0lBQ0gsSUFHVyxRQUFRLENBQUMsS0FBK0I7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFlRDs7O09BR0c7SUFDSCxJQUNXLGNBQWMsQ0FBQyxLQUFxQjtRQUM3QyxJQUFJ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QztJQUVTLGFBQWEsQ0FBQyxLQUFhO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0E3TVUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsd0dBSzNCLENBQUMsUUFBaUIsRUFBRSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsNlVDM0RwRCx5dENBbUNBLDBERGNZLG9DQUFvQywrUUFBRSx1QkFBdUIsOEJBQUUsZUFBZTs7MkZBSzdFLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSx5QkFBeUIsV0FDMUIsQ0FBQyxvQ0FBb0MsRUFBRSx1QkFBdUIsRUFBRSxlQUFlLENBQUMsbUJBR3hFLHVCQUF1QixDQUFDLE1BQU07MkZBU3BDLFFBQVE7c0JBSGxCLEtBQUs7dUJBQUM7d0JBQ0wsU0FBUyxFQUFFLENBQUMsUUFBaUIsRUFBRSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUU7cUJBQ2pEO2dCQWFNLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVFkLGNBQWM7c0JBRHhCLEtBQUs7Z0JBU0MsU0FBUztzQkFEZixLQUFLO2dCQVFDLG1CQUFtQjtzQkFEekIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBUWxCLDBCQUEwQjtzQkFEaEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsaUJBQWlCO3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyNCBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2lvRm9ybUpzb25TY2hlbWFNb2R1bGUsIEdpb0xvYWRlck1vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5cbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFwaVR5cGUsXG4gIENvbm5lY3RvckluZm8sXG4gIEV4ZWN1dGlvblBoYXNlLFxuICBGbG93UGhhc2UsXG4gIGZyb21FeGVjdXRpb25QaGFzZSxcbiAgZnJvbVBvbGljeUlucHV0LFxuICBHZW5lcmljUG9saWN5LFxuICBQb2xpY3ksXG4gIFBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyLFxuICBQb2xpY3lJbnB1dCxcbiAgUG9saWN5U2NoZW1hRmV0Y2hlcixcbiAgU3RlcCxcbiAgdG9HZW5lcmljUG9saWNpZXMsXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9TZXJ2aWNlIH0gZnJvbSAnLi4vcG9saWN5LXN0dWRpby9naW8tcG9saWN5LXN0dWRpby5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgUG9saWN5R3JvdXBPdXRwdXQgPSBTdGVwW107XG5leHBvcnQgdHlwZSBQb2xpY3lHcm91cElucHV0ID0gU3RlcFtdO1xuXG50eXBlIFBvbGljeUdyb3VwVk0gPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhcnRDb25uZWN0b3JOYW1lOiBzdHJpbmc7XG4gIGVuZENvbm5lY3Rvck5hbWU6IHN0cmluZztcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1wb2xpY3ktZ3JvdXAtc3R1ZGlvJyxcbiAgaW1wb3J0czogW0dpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUNvbXBvbmVudCwgR2lvRm9ybUpzb25TY2hlbWFNb2R1bGUsIEdpb0xvYWRlck1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcG9saWN5LWdyb3VwLXN0dWRpby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9naW8tcG9saWN5LWdyb3VwLXN0dWRpby5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lHcm91cFN0dWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHBvbGljaWVzIHVzYWJsZSBpbiB0aGUgc3R1ZGlvXG4gICAqL1xuICBASW5wdXQoe1xuICAgIHRyYW5zZm9ybTogKHBvbGljaWVzOiB1bmtub3duKSA9PiBwb2xpY2llcyA/PyBbXSxcbiAgfSlcbiAgcHVibGljIHNldCBwb2xpY2llcyh2YWx1ZTogKFBvbGljeUlucHV0IHwgUG9saWN5KVtdKSB7XG4gICAgdGhpcy5fcG9saWNpZXMgPSB2YWx1ZS5tYXAoZnJvbVBvbGljeUlucHV0KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHBvbGljaWVzKCk6IFBvbGljeVtdIHtcbiAgICByZXR1cm4gdGhpcy5fcG9saWNpZXM7XG4gIH1cbiAgcHJpdmF0ZSBfcG9saWNpZXM6IFBvbGljeVtdID0gW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIFBvbGljeSBHcm91cCBTdHVkaW8gaXMgaW4gcmVhZC1vbmx5IG1vZGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHRoZSBBUEkgdGFyZ2V0ZWQgYnkgdGhlIFBvbGljeSBHcm91cCBTdHVkaW9cbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICAvKipcbiAgICogRXhlY3V0aW9uIHBoYXNlIHRhcmdldGVkIGJ5IHRoZSBQb2xpY3kgR3JvdXAgU3R1ZGlvXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgZmxvd1BoYXNlYCBpbnN0ZWFkLiBUbyBrZWVwIGFzIGxvbmcgYXMgd2Ugc3VwcG9ydCBBUElNIDwgNC42XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGV4ZWN1dGlvblBoYXNlKHZhbHVlOiBFeGVjdXRpb25QaGFzZSkge1xuICAgIHRoaXMuZmxvd1BoYXNlID0gZnJvbUV4ZWN1dGlvblBoYXNlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRpb24gcGhhc2UgdGFyZ2V0ZWQgYnkgdGhlIFBvbGljeSBHcm91cCBTdHVkaW9cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93UGhhc2UhOiBGbG93UGhhc2U7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIFBvbGljeSBHcm91cCBTdHVkaW8gbmVlZHMgdG8gZmV0Y2ggdGhlIHBvbGljeSBzY2hlbWFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcG9saWN5IHNjaGVtYVxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHBvbGljeVNjaGVtYUZldGNoZXI6IFBvbGljeVNjaGVtYUZldGNoZXIgPSAoKSA9PiBFTVBUWTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gUG9saWN5IEdyb3VwIFN0dWRpbyBuZWVkcyB0byBmZXRjaCB0aGUgcG9saWN5IGRvY3VtZW50YXRpb25cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcG9saWN5IGRvY3VtZW50YXRpb25cbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBwb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlcjogUG9saWN5RG9jdW1lbnRhdGlvbkZldGNoZXIgPSAoKSA9PiBFTVBUWTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWN5R3JvdXA6IFBvbGljeUdyb3VwSW5wdXQgPSBbXTtcblxuICAvKipcbiAgICogT3V0cHV0IGV2ZW50IHdoZW4gdGhlIFBvbGljeSBHcm91cCBTdHVkaW8gY2hhbmdlc1xuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBwb2xpY3lHcm91cENoYW5nZTogRXZlbnRFbWl0dGVyPFBvbGljeUdyb3VwT3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UG9saWN5R3JvdXBPdXRwdXQ+KCk7XG5cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHRydWU7XG4gIHByb3RlY3RlZCBjcmVhdGVTdGFydENvbm5lY3RvcjogKG5hbWU6IHN0cmluZykgPT4gQ29ubmVjdG9ySW5mb1tdID0gbmFtZSA9PiBbXG4gICAge1xuICAgICAgbmFtZSxcbiAgICAgIGljb246ICdnaW86YXJyb3ctcmlnaHQnLFxuICAgICAgdHlwZTogJ3N0YXJ0JyxcbiAgICAgIHN1cHBvcnRlZE1vZGVzOiBbXSxcbiAgICB9LFxuICBdO1xuICBwcm90ZWN0ZWQgY3JlYXRlRW5kQ29ubmVjdG9yOiAobmFtZTogc3RyaW5nKSA9PiBDb25uZWN0b3JJbmZvW10gPSBuYW1lID0+IFtcbiAgICB7XG4gICAgICBuYW1lLFxuICAgICAgaWNvbjogJ2dpbzphcnJvdy1yaWdodCcsXG4gICAgICB0eXBlOiAnZW5kJyxcbiAgICAgIHN1cHBvcnRlZE1vZGVzOiBbXSxcbiAgICB9LFxuICBdO1xuICBwcm90ZWN0ZWQgcG9saWN5R3JvdXBWTT86IFBvbGljeUdyb3VwVk07XG4gIHByb3RlY3RlZCBzdGVwczogU3RlcFtdID0gW107XG4gIHByb3RlY3RlZCB0cmlhbFVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgZ2VuZXJpY1BvbGljaWVzOiBHZW5lcmljUG9saWN5W10gPSBbXTtcbiAgcHJvdGVjdGVkIHN0YXJ0Q29ubmVjdG9yOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcbiAgcHJvdGVjdGVkIGVuZENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgcHJpdmF0ZSBwaGFzZXM6IFJlY29yZDxgJHtBcGlUeXBlfV9fJHtGbG93UGhhc2V9YCwgUG9saWN5R3JvdXBWTSB8IG51bGw+ID0ge1xuICAgIC8vIEhUVFAgUHJveHlcbiAgICBQUk9YWV9fUkVRVUVTVDoge1xuICAgICAgbmFtZTogJ1JlcXVlc3QgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQnLFxuICAgICAgc3RhcnRDb25uZWN0b3JOYW1lOiAnSW5jb21pbmcgcmVxdWVzdCcsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVxdWVzdCcsXG4gICAgfSxcbiAgICBQUk9YWV9fUkVTUE9OU0U6IHtcbiAgICAgIG5hbWU6ICdSZXNwb25zZSBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgaW5pdGlhbCBjb25uZWN0aW9uLicsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXNwb25zZScsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVzcG9uc2UnLFxuICAgIH0sXG4gICAgUFJPWFlfX1BVQkxJU0g6IG51bGwsIC8vIG4vYVxuICAgIFBST1hZX19TVUJTQ1JJQkU6IG51bGwsIC8vIG4vYVxuICAgIFBST1hZX19DT05ORUNUOiBudWxsLCAvLyBuL2FcbiAgICBQUk9YWV9fSU5URVJBQ1Q6IG51bGwsIC8vIG4vYVxuICAgIC8vIExMTSBQcm94eVxuICAgIExMTV9QUk9YWV9fUkVRVUVTVDoge1xuICAgICAgbmFtZTogJ1JlcXVlc3QgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQnLFxuICAgICAgc3RhcnRDb25uZWN0b3JOYW1lOiAnSW5jb21pbmcgcmVxdWVzdCcsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVxdWVzdCcsXG4gICAgfSxcbiAgICBMTE1fUFJPWFlfX1JFU1BPTlNFOiB7XG4gICAgICBuYW1lOiAnUmVzcG9uc2UgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHJlc3BvbnNlIGZyb20gdGhlIGluaXRpYWwgY29ubmVjdGlvbi4nLFxuICAgICAgc3RhcnRDb25uZWN0b3JOYW1lOiAnSW5jb21pbmcgcmVzcG9uc2UnLFxuICAgICAgZW5kQ29ubmVjdG9yTmFtZTogJ091dGdvaW5nIHJlc3BvbnNlJyxcbiAgICB9LFxuICAgIExMTV9QUk9YWV9fUFVCTElTSDogbnVsbCwgLy8gbi9hXG4gICAgTExNX1BST1hZX19TVUJTQ1JJQkU6IG51bGwsIC8vIG4vYVxuICAgIExMTV9QUk9YWV9fQ09OTkVDVDogbnVsbCwgLy8gbi9hXG4gICAgTExNX1BST1hZX19JTlRFUkFDVDogbnVsbCwgLy8gbi9hXG4gICAgLy8gTUNQIFByb3h5XG4gICAgTUNQX1BST1hZX19SRVFVRVNUOiB7XG4gICAgICBuYW1lOiAnUmVxdWVzdCBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCcsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXF1ZXN0JyxcbiAgICAgIGVuZENvbm5lY3Rvck5hbWU6ICdPdXRnb2luZyByZXF1ZXN0JyxcbiAgICB9LFxuICAgIE1DUF9QUk9YWV9fUkVTUE9OU0U6IHtcbiAgICAgIG5hbWU6ICdSZXNwb25zZSBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgaW5pdGlhbCBjb25uZWN0aW9uLicsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXNwb25zZScsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgcmVzcG9uc2UnLFxuICAgIH0sXG4gICAgTUNQX1BST1hZX19QVUJMSVNIOiBudWxsLCAvLyBuL2FcbiAgICBNQ1BfUFJPWFlfX1NVQlNDUklCRTogbnVsbCwgLy8gbi9hXG4gICAgTUNQX1BST1hZX19DT05ORUNUOiBudWxsLCAvLyBuL2FcbiAgICBNQ1BfUFJPWFlfX0lOVEVSQUNUOiBudWxsLCAvLyBuL2FcbiAgICAvLyBIVFRQIE1lc3NhZ2VcbiAgICBNRVNTQUdFX19SRVFVRVNUOiB7XG4gICAgICBuYW1lOiAnUmVxdWVzdCBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCcsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyByZXF1ZXN0JyxcbiAgICAgIGVuZENvbm5lY3Rvck5hbWU6ICdPdXRnb2luZyByZXF1ZXN0JyxcbiAgICB9LFxuICAgIE1FU1NBR0VfX1JFU1BPTlNFOiB7XG4gICAgICBuYW1lOiAnUmVzcG9uc2UgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIHRlcm1pbmF0aW9uJyxcbiAgICAgIHN0YXJ0Q29ubmVjdG9yTmFtZTogJ0luY29taW5nIHJlc3BvbnNlJyxcbiAgICAgIGVuZENvbm5lY3Rvck5hbWU6ICdPdXRnb2luZyByZXNwb25zZScsXG4gICAgfSxcbiAgICBNRVNTQUdFX19QVUJMSVNIOiB7XG4gICAgICBuYW1lOiAnUHVibGlzaCBwaGFzZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1BvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBvbiBtZXNzYWdlcyBzZW50IHRvIHRoZSBlbmRwb2ludCcsXG4gICAgICBzdGFydENvbm5lY3Rvck5hbWU6ICdJbmNvbWluZyBtZXNzYWdlIHJlcXVlc3QnLFxuICAgICAgZW5kQ29ubmVjdG9yTmFtZTogJ091dGdvaW5nIG1lc3NhZ2UgcmVxdWVzdCcsXG4gICAgfSxcbiAgICBNRVNTQUdFX19TVUJTQ1JJQkU6IHtcbiAgICAgIG5hbWU6ICdTdWJzY3JpYmUgcGhhc2UnLFxuICAgICAgZGVzY3JpcHRpb246ICdQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgb24gbWVzc2FnZXMgcmVjZWl2ZWQgYnkgdGhlIGVudHJ5cG9pbnQnLFxuICAgICAgc3RhcnRDb25uZWN0b3JOYW1lOiAnSW5jb21pbmcgbWVzc2FnZSByZXNwb25zZScsXG4gICAgICBlbmRDb25uZWN0b3JOYW1lOiAnT3V0Z29pbmcgbWVzc2FnZSByZXNwb25zZScsXG4gICAgfSxcbiAgICBNRVNTQUdFX19DT05ORUNUOiBudWxsLCAvLyBuL2FcbiAgICBNRVNTQUdFX19JTlRFUkFDVDogbnVsbCwgLy8gbi9hXG4gICAgLy8gTkFUSVZFXG4gICAgLy8gVE9ETzogVG8gaW1wbGVtZW50IHdlIHdhbnQgdG8gbWFrZSBQUyBjb21wYXRpYmxlIHdpdGggdGhlIG5hdGl2ZSBBUElcbiAgICBOQVRJVkVfX0NPTk5FQ1Q6IG51bGwsIC8vIG4vYVxuICAgIE5BVElWRV9fSU5URVJBQ1Q6IG51bGwsIC8vIG4vYVxuICAgIE5BVElWRV9fUFVCTElTSDogbnVsbCwgLy8gbi9hXG4gICAgTkFUSVZFX19TVUJTQ1JJQkU6IG51bGwsIC8vIG4vYVxuICAgIE5BVElWRV9fUkVRVUVTVDogbnVsbCwgLy8gbi9hXG4gICAgTkFUSVZFX19SRVNQT05TRTogbnVsbCwgLy8gbi9hXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwb2xpY3lTdHVkaW9TZXJ2aWNlOiBHaW9Qb2xpY3lTdHVkaW9TZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMucG9saWN5U2NoZW1hRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeVNjaGVtYUZldGNoZXIodGhpcy5wb2xpY3lTY2hlbWFGZXRjaGVyKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5wb2xpY3lEb2N1bWVudGF0aW9uRmV0Y2hlcikge1xuICAgICAgdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLnNldFBvbGljeURvY3VtZW50YXRpb25GZXRjaGVyKHRoaXMucG9saWN5RG9jdW1lbnRhdGlvbkZldGNoZXIpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5wb2xpY2llcykge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZ2VuZXJpY1BvbGljaWVzID0gdG9HZW5lcmljUG9saWNpZXModGhpcy5fcG9saWNpZXMpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5leGVjdXRpb25QaGFzZSB8fCBjaGFuZ2VzLmZsb3dQaGFzZSkge1xuICAgICAgdGhpcy5wb2xpY3lHcm91cFZNID0gdGhpcy5waGFzZXNbYCR7dGhpcy5hcGlUeXBlfV9fJHt0aGlzLmZsb3dQaGFzZX1gXSA/PyB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0YXJ0Q29ubmVjdG9yID0gdGhpcy5jcmVhdGVTdGFydENvbm5lY3Rvcih0aGlzLnBvbGljeUdyb3VwVk0/LnN0YXJ0Q29ubmVjdG9yTmFtZSA/PyAnJyk7XG4gICAgICB0aGlzLmVuZENvbm5lY3RvciA9IHRoaXMuY3JlYXRlRW5kQ29ubmVjdG9yKHRoaXMucG9saWN5R3JvdXBWTT8uZW5kQ29ubmVjdG9yTmFtZSA/PyAnJyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnBvbGljeUdyb3VwKSB7XG4gICAgICB0aGlzLnN0ZXBzID0gdGhpcy5wb2xpY3lHcm91cDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TdGVwc0NoYW5nZShzdGVwczogU3RlcFtdKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcyA9IHN0ZXBzO1xuICAgIHRoaXMucG9saWN5R3JvdXBDaGFuZ2UuZW1pdChzdGVwcyk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyNCBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuQGlmICghaXNMb2FkaW5nICYmIHBvbGljeUdyb3VwVk0pIHtcbiAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICBbbmFtZV09XCJwb2xpY3lHcm91cFZNLm5hbWVcIlxuICAgIFtkZXNjcmlwdGlvbl09XCJwb2xpY3lHcm91cFZNLmRlc2NyaXB0aW9uXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFtzdGFydENvbm5lY3Rvcl09XCJzdGFydENvbm5lY3RvclwiXG4gICAgW2VuZENvbm5lY3Rvcl09XCJlbmRDb25uZWN0b3JcIlxuICAgIFtzdGVwc109XCJzdGVwc1wiXG4gICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgW3BvbGljeUZsb3dQaGFzZV09XCJmbG93UGhhc2VcIlxuICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCRldmVudClcIlxuICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxufSBAZWxzZSB7XG4gIDxnaW8tbG9hZGVyPjwvZ2lvLWxvYWRlcj5cbn1cbiJdfQ==