@valtimo/zgw 12.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 (225) hide show
  1. package/esm2022/lib/components/dossier-management-zgw/dossier-management-zgw.component.mjs +43 -0
  2. package/esm2022/lib/components/index.mjs +17 -0
  3. package/esm2022/lib/models/dossier-management-zgw.model.mjs +20 -0
  4. package/esm2022/lib/models/index.mjs +17 -0
  5. package/esm2022/lib/modules/contactmomenten/components/contact-moments/contact-moments.component.mjs +89 -0
  6. package/esm2022/lib/modules/contactmomenten/components/index.mjs +17 -0
  7. package/esm2022/lib/modules/contactmomenten/index.mjs +19 -0
  8. package/esm2022/lib/modules/contactmomenten/models/contact-moment.model.mjs +17 -0
  9. package/esm2022/lib/modules/contactmomenten/models/index.mjs +17 -0
  10. package/esm2022/lib/modules/contactmomenten/services/contact-moment.service.mjs +43 -0
  11. package/esm2022/lib/modules/contactmomenten/services/index.mjs +17 -0
  12. package/esm2022/lib/modules/documenten-api/components/documenten-api-column-modal/documenten-api-column-modal.component.mjs +301 -0
  13. package/esm2022/lib/modules/documenten-api/components/documenten-api-columns/documenten-api-columns.component.mjs +170 -0
  14. package/esm2022/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.mjs +256 -0
  15. package/esm2022/lib/modules/documenten-api/components/documenten-api-link-upload-process/dossier-management-link-process.component.mjs +100 -0
  16. package/esm2022/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.mjs +233 -0
  17. package/esm2022/lib/modules/documenten-api/components/documenten-api-version/documenten-api-version.component.mjs +43 -0
  18. package/esm2022/lib/modules/documenten-api/components/index.mjs +22 -0
  19. package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader-edit-form.mjs +305 -0
  20. package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.mjs +143 -0
  21. package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.formio.mjs +46 -0
  22. package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/index.mjs +19 -0
  23. package/esm2022/lib/modules/documenten-api/formio/index.mjs +17 -0
  24. package/esm2022/lib/modules/documenten-api/index.mjs +20 -0
  25. package/esm2022/lib/modules/documenten-api/models/configured-column.model.mjs +17 -0
  26. package/esm2022/lib/modules/documenten-api/models/documenten-api-column-modal.model.mjs +17 -0
  27. package/esm2022/lib/modules/documenten-api/models/documenten-api-link-process.model.mjs +17 -0
  28. package/esm2022/lib/modules/documenten-api/models/documenten-api-metadata.model.mjs +17 -0
  29. package/esm2022/lib/modules/documenten-api/models/documenten-api-version.model.mjs +17 -0
  30. package/esm2022/lib/modules/documenten-api/models/documenten-api.model.mjs +17 -0
  31. package/esm2022/lib/modules/documenten-api/models/index.mjs +22 -0
  32. package/esm2022/lib/modules/documenten-api/services/documenten-api-column.service.mjs +37 -0
  33. package/esm2022/lib/modules/documenten-api/services/documenten-api-document.service.mjs +42 -0
  34. package/esm2022/lib/modules/documenten-api/services/documenten-api-link-process.service.mjs +66 -0
  35. package/esm2022/lib/modules/documenten-api/services/documenten-api-version.service.mjs +47 -0
  36. package/esm2022/lib/modules/documenten-api/services/index.mjs +20 -0
  37. package/esm2022/lib/modules/haalcentraal-brp/components/cases-list/cases-list.component.mjs +56 -0
  38. package/esm2022/lib/modules/haalcentraal-brp/components/customer-list/customer-list.component.mjs +133 -0
  39. package/esm2022/lib/modules/haalcentraal-brp/customer-routing.module.mjs +51 -0
  40. package/esm2022/lib/modules/haalcentraal-brp/customer.module.mjs +76 -0
  41. package/esm2022/lib/modules/haalcentraal-brp/index.mjs +19 -0
  42. package/esm2022/lib/modules/haalcentraal-brp/models/case.mjs +17 -0
  43. package/esm2022/lib/modules/haalcentraal-brp/models/customer.mjs +17 -0
  44. package/esm2022/lib/modules/haalcentraal-brp/models/index.mjs +18 -0
  45. package/esm2022/lib/modules/haalcentraal-brp/services/customer.service.mjs +43 -0
  46. package/esm2022/lib/modules/haalcentraal-brp/services/index.mjs +17 -0
  47. package/esm2022/lib/modules/index.mjs +22 -0
  48. package/esm2022/lib/modules/objecten-api/components/index.mjs +18 -0
  49. package/esm2022/lib/modules/objecten-api/components/object-type/object-type.component.mjs +122 -0
  50. package/esm2022/lib/modules/objecten-api/components/zaakobjecten/zaakobjecten.component.mjs +125 -0
  51. package/esm2022/lib/modules/objecten-api/index.mjs +19 -0
  52. package/esm2022/lib/modules/objecten-api/models/index.mjs +17 -0
  53. package/esm2022/lib/modules/objecten-api/models/zaakobjecten.model.mjs +17 -0
  54. package/esm2022/lib/modules/objecten-api/services/index.mjs +17 -0
  55. package/esm2022/lib/modules/objecten-api/services/zaakobjecten.service.mjs +44 -0
  56. package/esm2022/lib/modules/zaakdetails/components/document-objecten-api-sync/document-objecten-api-sync.component.mjs +127 -0
  57. package/esm2022/lib/modules/zaakdetails/components/index.mjs +17 -0
  58. package/esm2022/lib/modules/zaakdetails/index.mjs +19 -0
  59. package/esm2022/lib/modules/zaakdetails/models/document-objecten-api-sync.model.mjs +2 -0
  60. package/esm2022/lib/modules/zaakdetails/models/index.mjs +17 -0
  61. package/esm2022/lib/modules/zaakdetails/services/document-objecten-api-sync.service.mjs +51 -0
  62. package/esm2022/lib/modules/zaakdetails/services/index.mjs +17 -0
  63. package/esm2022/lib/modules/zaken-api/components/index.mjs +17 -0
  64. package/esm2022/lib/modules/zaken-api/components/zaken-api-zaaktype-link/zaken-api-zaaktype-link.component.mjs +183 -0
  65. package/esm2022/lib/modules/zaken-api/index.mjs +19 -0
  66. package/esm2022/lib/modules/zaken-api/models/index.mjs +17 -0
  67. package/esm2022/lib/modules/zaken-api/models/zaken-api-zaaktype-link.model.mjs +2 -0
  68. package/esm2022/lib/modules/zaken-api/services/index.mjs +17 -0
  69. package/esm2022/lib/modules/zaken-api/services/zaken-api-zaaktype-link.service.mjs +39 -0
  70. package/esm2022/lib/services/dossier-management-zgw.service.mjs +39 -0
  71. package/esm2022/lib/services/index.mjs +17 -0
  72. package/esm2022/lib/zgw.module.mjs +106 -0
  73. package/esm2022/public_api.mjs +27 -0
  74. package/esm2022/valtimo-zgw.mjs +5 -0
  75. package/fesm2022/valtimo-zgw.mjs +3577 -0
  76. package/fesm2022/valtimo-zgw.mjs.map +1 -0
  77. package/index.d.ts +6 -0
  78. package/lib/components/dossier-management-zgw/dossier-management-zgw.component.d.ts +13 -0
  79. package/lib/components/dossier-management-zgw/dossier-management-zgw.component.d.ts.map +1 -0
  80. package/lib/components/index.d.ts +2 -0
  81. package/lib/components/index.d.ts.map +1 -0
  82. package/lib/models/dossier-management-zgw.model.d.ts +4 -0
  83. package/lib/models/dossier-management-zgw.model.d.ts.map +1 -0
  84. package/lib/models/index.d.ts +2 -0
  85. package/lib/models/index.d.ts.map +1 -0
  86. package/lib/modules/contactmomenten/components/contact-moments/contact-moments.component.d.ts +29 -0
  87. package/lib/modules/contactmomenten/components/contact-moments/contact-moments.component.d.ts.map +1 -0
  88. package/lib/modules/contactmomenten/components/index.d.ts +2 -0
  89. package/lib/modules/contactmomenten/components/index.d.ts.map +1 -0
  90. package/lib/modules/contactmomenten/index.d.ts +4 -0
  91. package/lib/modules/contactmomenten/index.d.ts.map +1 -0
  92. package/lib/modules/contactmomenten/models/contact-moment.model.d.ts +14 -0
  93. package/lib/modules/contactmomenten/models/contact-moment.model.d.ts.map +1 -0
  94. package/lib/modules/contactmomenten/models/index.d.ts +2 -0
  95. package/lib/modules/contactmomenten/models/index.d.ts.map +1 -0
  96. package/lib/modules/contactmomenten/services/contact-moment.service.d.ts +18 -0
  97. package/lib/modules/contactmomenten/services/contact-moment.service.d.ts.map +1 -0
  98. package/lib/modules/contactmomenten/services/index.d.ts +2 -0
  99. package/lib/modules/contactmomenten/services/index.d.ts.map +1 -0
  100. package/lib/modules/documenten-api/components/documenten-api-column-modal/documenten-api-column-modal.component.d.ts +77 -0
  101. package/lib/modules/documenten-api/components/documenten-api-column-modal/documenten-api-column-modal.component.d.ts.map +1 -0
  102. package/lib/modules/documenten-api/components/documenten-api-columns/documenten-api-columns.component.d.ts +40 -0
  103. package/lib/modules/documenten-api/components/documenten-api-columns/documenten-api-columns.component.d.ts.map +1 -0
  104. package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts +66 -0
  105. package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts.map +1 -0
  106. package/lib/modules/documenten-api/components/documenten-api-link-upload-process/dossier-management-link-process.component.d.ts +28 -0
  107. package/lib/modules/documenten-api/components/documenten-api-link-upload-process/dossier-management-link-process.component.d.ts.map +1 -0
  108. package/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts +75 -0
  109. package/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts.map +1 -0
  110. package/lib/modules/documenten-api/components/documenten-api-version/documenten-api-version.component.d.ts +16 -0
  111. package/lib/modules/documenten-api/components/documenten-api-version/documenten-api-version.component.d.ts.map +1 -0
  112. package/lib/modules/documenten-api/components/index.d.ts +7 -0
  113. package/lib/modules/documenten-api/components/index.d.ts.map +1 -0
  114. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts +105 -0
  115. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts.map +1 -0
  116. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.d.ts +58 -0
  117. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.d.ts.map +1 -0
  118. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.formio.d.ts +4 -0
  119. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.formio.d.ts.map +1 -0
  120. package/lib/modules/documenten-api/formio/documenten-api-uploader/index.d.ts +4 -0
  121. package/lib/modules/documenten-api/formio/documenten-api-uploader/index.d.ts.map +1 -0
  122. package/lib/modules/documenten-api/formio/index.d.ts +2 -0
  123. package/lib/modules/documenten-api/formio/index.d.ts.map +1 -0
  124. package/lib/modules/documenten-api/index.d.ts +5 -0
  125. package/lib/modules/documenten-api/index.d.ts.map +1 -0
  126. package/lib/modules/documenten-api/models/configured-column.model.d.ts +6 -0
  127. package/lib/modules/documenten-api/models/configured-column.model.d.ts.map +1 -0
  128. package/lib/modules/documenten-api/models/documenten-api-column-modal.model.d.ts +4 -0
  129. package/lib/modules/documenten-api/models/documenten-api-column-modal.model.d.ts.map +1 -0
  130. package/lib/modules/documenten-api/models/documenten-api-link-process.model.d.ts +23 -0
  131. package/lib/modules/documenten-api/models/documenten-api-link-process.model.d.ts.map +1 -0
  132. package/lib/modules/documenten-api/models/documenten-api-metadata.model.d.ts +19 -0
  133. package/lib/modules/documenten-api/models/documenten-api-metadata.model.d.ts.map +1 -0
  134. package/lib/modules/documenten-api/models/documenten-api-version.model.d.ts +6 -0
  135. package/lib/modules/documenten-api/models/documenten-api-version.model.d.ts.map +1 -0
  136. package/lib/modules/documenten-api/models/documenten-api.model.d.ts +18 -0
  137. package/lib/modules/documenten-api/models/documenten-api.model.d.ts.map +1 -0
  138. package/lib/modules/documenten-api/models/index.d.ts +7 -0
  139. package/lib/modules/documenten-api/models/index.d.ts.map +1 -0
  140. package/lib/modules/documenten-api/services/documenten-api-column.service.d.ts +17 -0
  141. package/lib/modules/documenten-api/services/documenten-api-column.service.d.ts.map +1 -0
  142. package/lib/modules/documenten-api/services/documenten-api-document.service.d.ts +15 -0
  143. package/lib/modules/documenten-api/services/documenten-api-document.service.d.ts.map +1 -0
  144. package/lib/modules/documenten-api/services/documenten-api-link-process.service.d.ts +17 -0
  145. package/lib/modules/documenten-api/services/documenten-api-link-process.service.d.ts.map +1 -0
  146. package/lib/modules/documenten-api/services/documenten-api-version.service.d.ts +17 -0
  147. package/lib/modules/documenten-api/services/documenten-api-version.service.d.ts.map +1 -0
  148. package/lib/modules/documenten-api/services/index.d.ts +5 -0
  149. package/lib/modules/documenten-api/services/index.d.ts.map +1 -0
  150. package/lib/modules/haalcentraal-brp/components/cases-list/cases-list.component.d.ts +20 -0
  151. package/lib/modules/haalcentraal-brp/components/cases-list/cases-list.component.d.ts.map +1 -0
  152. package/lib/modules/haalcentraal-brp/components/customer-list/customer-list.component.d.ts +39 -0
  153. package/lib/modules/haalcentraal-brp/components/customer-list/customer-list.component.d.ts.map +1 -0
  154. package/lib/modules/haalcentraal-brp/customer-routing.module.d.ts +9 -0
  155. package/lib/modules/haalcentraal-brp/customer-routing.module.d.ts.map +1 -0
  156. package/lib/modules/haalcentraal-brp/customer.module.d.ts +17 -0
  157. package/lib/modules/haalcentraal-brp/customer.module.d.ts.map +1 -0
  158. package/lib/modules/haalcentraal-brp/index.d.ts +4 -0
  159. package/lib/modules/haalcentraal-brp/index.d.ts.map +1 -0
  160. package/lib/modules/haalcentraal-brp/models/case.d.ts +8 -0
  161. package/lib/modules/haalcentraal-brp/models/case.d.ts.map +1 -0
  162. package/lib/modules/haalcentraal-brp/models/customer.d.ts +22 -0
  163. package/lib/modules/haalcentraal-brp/models/customer.d.ts.map +1 -0
  164. package/lib/modules/haalcentraal-brp/models/index.d.ts +3 -0
  165. package/lib/modules/haalcentraal-brp/models/index.d.ts.map +1 -0
  166. package/lib/modules/haalcentraal-brp/services/customer.service.d.ts +18 -0
  167. package/lib/modules/haalcentraal-brp/services/customer.service.d.ts.map +1 -0
  168. package/lib/modules/haalcentraal-brp/services/index.d.ts +2 -0
  169. package/lib/modules/haalcentraal-brp/services/index.d.ts.map +1 -0
  170. package/lib/modules/index.d.ts +7 -0
  171. package/lib/modules/index.d.ts.map +1 -0
  172. package/lib/modules/objecten-api/components/index.d.ts +3 -0
  173. package/lib/modules/objecten-api/components/index.d.ts.map +1 -0
  174. package/lib/modules/objecten-api/components/object-type/object-type.component.d.ts +32 -0
  175. package/lib/modules/objecten-api/components/object-type/object-type.component.d.ts.map +1 -0
  176. package/lib/modules/objecten-api/components/zaakobjecten/zaakobjecten.component.d.ts +32 -0
  177. package/lib/modules/objecten-api/components/zaakobjecten/zaakobjecten.component.d.ts.map +1 -0
  178. package/lib/modules/objecten-api/index.d.ts +4 -0
  179. package/lib/modules/objecten-api/index.d.ts.map +1 -0
  180. package/lib/modules/objecten-api/models/index.d.ts +2 -0
  181. package/lib/modules/objecten-api/models/index.d.ts.map +1 -0
  182. package/lib/modules/objecten-api/models/zaakobjecten.model.d.ts +26 -0
  183. package/lib/modules/objecten-api/models/zaakobjecten.model.d.ts.map +1 -0
  184. package/lib/modules/objecten-api/services/index.d.ts +2 -0
  185. package/lib/modules/objecten-api/services/index.d.ts.map +1 -0
  186. package/lib/modules/objecten-api/services/zaakobjecten.service.d.ts +17 -0
  187. package/lib/modules/objecten-api/services/zaakobjecten.service.d.ts.map +1 -0
  188. package/lib/modules/zaakdetails/components/document-objecten-api-sync/document-objecten-api-sync.component.d.ts +39 -0
  189. package/lib/modules/zaakdetails/components/document-objecten-api-sync/document-objecten-api-sync.component.d.ts.map +1 -0
  190. package/lib/modules/zaakdetails/components/index.d.ts +2 -0
  191. package/lib/modules/zaakdetails/components/index.d.ts.map +1 -0
  192. package/lib/modules/zaakdetails/index.d.ts +4 -0
  193. package/lib/modules/zaakdetails/index.d.ts.map +1 -0
  194. package/lib/modules/zaakdetails/models/document-objecten-api-sync.model.d.ts +21 -0
  195. package/lib/modules/zaakdetails/models/document-objecten-api-sync.model.d.ts.map +1 -0
  196. package/lib/modules/zaakdetails/models/index.d.ts +2 -0
  197. package/lib/modules/zaakdetails/models/index.d.ts.map +1 -0
  198. package/lib/modules/zaakdetails/services/document-objecten-api-sync.service.d.ts +22 -0
  199. package/lib/modules/zaakdetails/services/document-objecten-api-sync.service.d.ts.map +1 -0
  200. package/lib/modules/zaakdetails/services/index.d.ts +2 -0
  201. package/lib/modules/zaakdetails/services/index.d.ts.map +1 -0
  202. package/lib/modules/zaken-api/components/index.d.ts +2 -0
  203. package/lib/modules/zaken-api/components/index.d.ts.map +1 -0
  204. package/lib/modules/zaken-api/components/zaken-api-zaaktype-link/zaken-api-zaaktype-link.component.d.ts +46 -0
  205. package/lib/modules/zaken-api/components/zaken-api-zaaktype-link/zaken-api-zaaktype-link.component.d.ts.map +1 -0
  206. package/lib/modules/zaken-api/index.d.ts +4 -0
  207. package/lib/modules/zaken-api/index.d.ts.map +1 -0
  208. package/lib/modules/zaken-api/models/index.d.ts +2 -0
  209. package/lib/modules/zaken-api/models/index.d.ts.map +1 -0
  210. package/lib/modules/zaken-api/models/zaken-api-zaaktype-link.model.d.ts +15 -0
  211. package/lib/modules/zaken-api/models/zaken-api-zaaktype-link.model.d.ts.map +1 -0
  212. package/lib/modules/zaken-api/services/index.d.ts +2 -0
  213. package/lib/modules/zaken-api/services/index.d.ts.map +1 -0
  214. package/lib/modules/zaken-api/services/zaken-api-zaaktype-link.service.d.ts +14 -0
  215. package/lib/modules/zaken-api/services/zaken-api-zaaktype-link.service.d.ts.map +1 -0
  216. package/lib/services/dossier-management-zgw.service.d.ts +12 -0
  217. package/lib/services/dossier-management-zgw.service.d.ts.map +1 -0
  218. package/lib/services/index.d.ts +2 -0
  219. package/lib/services/index.d.ts.map +1 -0
  220. package/lib/zgw.module.d.ts +17 -0
  221. package/lib/zgw.module.d.ts.map +1 -0
  222. package/package.json +29 -0
  223. package/public_api.d.ts +8 -0
  224. package/public_api.d.ts.map +1 -0
  225. package/valtimo-zgw.d.ts.map +1 -0
@@ -0,0 +1,301 @@
1
+ /*
2
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (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
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
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 { BehaviorSubject, combineLatest, map, Subscription, switchMap, take, tap, } from 'rxjs';
18
+ import { CARBON_CONSTANTS } from '@valtimo/components';
19
+ import { ReactiveFormsModule, Validators, } from '@angular/forms';
20
+ import { InternalCaseStatusColor, InternalCaseStatusUtils, } from '@valtimo/document';
21
+ import { ButtonModule, DropdownModule, InputModule, ModalModule, TagModule, ToggleModule, } from 'carbon-components-angular';
22
+ import { Edit16 } from '@carbon/icons';
23
+ import { TranslateModule } from '@ngx-translate/core';
24
+ import { CommonModule } from '@angular/common';
25
+ import * as i0 from "@angular/core";
26
+ import * as i1 from "@angular/forms";
27
+ import * as i2 from "carbon-components-angular";
28
+ import * as i3 from "@valtimo/document";
29
+ import * as i4 from "@ngx-translate/core";
30
+ import * as i5 from "@angular/common";
31
+ export class DocumentenApiColumnModalComponent {
32
+ set type(value) {
33
+ this._type.next(value);
34
+ if (value === 'closed') {
35
+ setTimeout(() => {
36
+ this._typeAnimationDelay$.next(value);
37
+ }, CARBON_CONSTANTS.modalAnimationMs);
38
+ }
39
+ else {
40
+ this._typeAnimationDelay$.next(value);
41
+ }
42
+ }
43
+ set prefill(value) {
44
+ this._prefillStatus.next(value);
45
+ }
46
+ get visibleInCaseListByDefault() {
47
+ return this.statusFormGroup?.get('visibleInCaseListByDefault');
48
+ }
49
+ get key() {
50
+ return this.statusFormGroup?.get('key');
51
+ }
52
+ get title() {
53
+ return this.statusFormGroup?.get('title');
54
+ }
55
+ get color() {
56
+ return this.statusFormGroup?.get('color');
57
+ }
58
+ get invalid() {
59
+ return !!this.statusFormGroup?.invalid;
60
+ }
61
+ get pristine() {
62
+ return !!this.statusFormGroup?.pristine;
63
+ }
64
+ constructor(fb, iconService, caseStatusService, translateService) {
65
+ this.fb = fb;
66
+ this.iconService = iconService;
67
+ this.caseStatusService = caseStatusService;
68
+ this.translateService = translateService;
69
+ this.closeModalEvent = new EventEmitter();
70
+ this._type = new BehaviorSubject(undefined);
71
+ this._typeAnimationDelay$ = new BehaviorSubject(undefined);
72
+ this._prefillStatus = new BehaviorSubject(undefined);
73
+ this.isClosed$ = this._type.pipe(map(type => type === 'closed'));
74
+ this.statusFormGroup = this.fb.group({
75
+ title: this.fb.control('', Validators.required),
76
+ key: this.fb.control('', [Validators.required, this.uniqueKeyValidator()]),
77
+ visibleInCaseListByDefault: this.fb.control(true, Validators.required),
78
+ color: this.fb.control('', Validators.required),
79
+ });
80
+ this.isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillStatus]).pipe(tap(([type, prefillStatus]) => {
81
+ if (type === 'edit' && prefillStatus)
82
+ this.prefillForm(prefillStatus);
83
+ }), map(([type]) => type === 'edit'));
84
+ this.isAdd$ = this._typeAnimationDelay$.pipe(map(type => type === 'add'), tap(isAdd => {
85
+ if (isAdd)
86
+ this.resetForm();
87
+ }));
88
+ this.disabled$ = new BehaviorSubject(false);
89
+ this.COLORS = [
90
+ InternalCaseStatusColor.Red,
91
+ InternalCaseStatusColor.Magenta,
92
+ InternalCaseStatusColor.Purple,
93
+ InternalCaseStatusColor.Blue,
94
+ InternalCaseStatusColor.Teal,
95
+ InternalCaseStatusColor.Green,
96
+ InternalCaseStatusColor.Cyan,
97
+ InternalCaseStatusColor.Gray,
98
+ InternalCaseStatusColor.CoolGray,
99
+ InternalCaseStatusColor.WarmGray,
100
+ InternalCaseStatusColor.HighContrast,
101
+ InternalCaseStatusColor.Outline,
102
+ ];
103
+ this._selectedColor$ = new BehaviorSubject(undefined);
104
+ this.colorListItems$ = combineLatest([
105
+ this._selectedColor$,
106
+ this.translateService.stream('key'),
107
+ ]).pipe(map(([selectedColor]) => this.COLORS.map(color => ({
108
+ selected: color === selectedColor,
109
+ content: this.translateService.instant('interface.tagType.' +
110
+ InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color)),
111
+ color,
112
+ tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color),
113
+ }))));
114
+ this._editingKey$ = new BehaviorSubject(false);
115
+ this.editingKey$ = this._editingKey$.pipe(tap(editing => {
116
+ if (editing) {
117
+ this.key?.enable();
118
+ }
119
+ else {
120
+ this.key?.disable();
121
+ }
122
+ }));
123
+ this._originalStatusKey$ = new BehaviorSubject('');
124
+ this._subscriptions = new Subscription();
125
+ this.iconService.registerAll([Edit16]);
126
+ }
127
+ ngOnInit() {
128
+ this.openAutoKeySubscription();
129
+ }
130
+ ngOnDestroy() {
131
+ this._subscriptions.unsubscribe();
132
+ }
133
+ onClose() {
134
+ this.close();
135
+ }
136
+ toggleCheckedChange(checked) {
137
+ this.statusFormGroup.patchValue({
138
+ visibleInCaseListByDefault: checked,
139
+ });
140
+ this.statusFormGroup.markAsDirty();
141
+ }
142
+ addStatus() {
143
+ this.disable();
144
+ this.caseStatusService
145
+ .saveInternalCaseStatus(this.documentDefinitionName, this.getFormValue())
146
+ .subscribe({
147
+ next: () => {
148
+ this.enable();
149
+ this.closeAndRefresh();
150
+ },
151
+ error: () => {
152
+ this.enable(false);
153
+ },
154
+ });
155
+ }
156
+ editStatus() {
157
+ this.disable();
158
+ this._originalStatusKey$
159
+ .pipe(take(1), switchMap(originalStatusKey => this.caseStatusService.updateInternalCaseStatus(this.documentDefinitionName, originalStatusKey, this.getFormValue())))
160
+ .subscribe({
161
+ next: () => {
162
+ this.enable();
163
+ this.closeAndRefresh();
164
+ },
165
+ error: () => {
166
+ this.enable(false);
167
+ },
168
+ });
169
+ }
170
+ editKeyButtonClick() {
171
+ this._editingKey$.next(true);
172
+ }
173
+ colorDropdownChange(event) {
174
+ const newColor = event?.item?.color;
175
+ if (newColor) {
176
+ this._selectedColor$.next(newColor);
177
+ this.statusFormGroup.patchValue({ color: newColor });
178
+ this.statusFormGroup.markAsDirty();
179
+ }
180
+ }
181
+ prefillForm(prefillStatus) {
182
+ this._originalStatusKey$.next(prefillStatus.key);
183
+ this.statusFormGroup.patchValue({
184
+ key: prefillStatus.key,
185
+ title: prefillStatus.title,
186
+ visibleInCaseListByDefault: prefillStatus.visibleInCaseListByDefault,
187
+ color: prefillStatus.color,
188
+ });
189
+ this._selectedColor$.next(prefillStatus.color);
190
+ this.statusFormGroup.markAsPristine();
191
+ this.resetEditingKey();
192
+ }
193
+ resetForm() {
194
+ this.statusFormGroup.patchValue({
195
+ key: '',
196
+ title: '',
197
+ visibleInCaseListByDefault: true,
198
+ color: InternalCaseStatusColor.Blue,
199
+ });
200
+ this._selectedColor$.next(InternalCaseStatusColor.Blue);
201
+ this.statusFormGroup.markAsPristine();
202
+ this.resetEditingKey();
203
+ }
204
+ resetEditingKey() {
205
+ this._editingKey$.next(false);
206
+ }
207
+ openAutoKeySubscription() {
208
+ this._subscriptions.add(combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(([isAdd, titleValue, editingKey]) => {
209
+ if (isAdd && !editingKey) {
210
+ if (titleValue) {
211
+ this.statusFormGroup.patchValue({ key: this.getUniqueKey(titleValue) });
212
+ }
213
+ else {
214
+ this.clearKey();
215
+ }
216
+ }
217
+ }));
218
+ }
219
+ getUniqueKey(title) {
220
+ const dashCaseKey = `${title}`
221
+ .toLowerCase()
222
+ .replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')
223
+ .replace(/_[-_]+/g, '_')
224
+ .replace(/^[^a-z]+/g, '');
225
+ const usedKeys = this.usedKeys;
226
+ if (!usedKeys.includes(dashCaseKey)) {
227
+ return dashCaseKey;
228
+ }
229
+ return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);
230
+ }
231
+ getUniqueKeyWithNumber(dashCaseKey, usedKeys) {
232
+ const numbersFromCurrentKey = (dashCaseKey.match(/^\d+|\d+\b|\d+(?=\w)/g) || []).map((numberValue) => +numberValue);
233
+ const lastNumberFromCurrentKey = numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];
234
+ const newKey = lastNumberFromCurrentKey
235
+ ? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`
236
+ : `${dashCaseKey}-1`;
237
+ if (usedKeys.includes(newKey)) {
238
+ return this.getUniqueKeyWithNumber(newKey, usedKeys);
239
+ }
240
+ return newKey;
241
+ }
242
+ clearKey() {
243
+ this.statusFormGroup.patchValue({ key: '' });
244
+ }
245
+ uniqueKeyValidator() {
246
+ return (control) => this.usedKeys?.every((key) => key !== control.value)
247
+ ? null
248
+ : { uniqueKey: { value: control.value } };
249
+ }
250
+ disable() {
251
+ this.disabled$.next(true);
252
+ this.statusFormGroup.disable();
253
+ }
254
+ enable(delay = true) {
255
+ setTimeout(() => {
256
+ this.disabled$.next(false);
257
+ this.statusFormGroup.enable();
258
+ }, delay ? CARBON_CONSTANTS.modalAnimationMs : 0);
259
+ }
260
+ close() {
261
+ this.closeModalEvent.emit('close');
262
+ }
263
+ closeAndRefresh() {
264
+ this.closeModalEvent.emit('closeAndRefresh');
265
+ }
266
+ getFormValue() {
267
+ return {
268
+ key: this.key.value,
269
+ title: this.title.value,
270
+ visibleInCaseListByDefault: this.visibleInCaseListByDefault.value,
271
+ color: this.color.value,
272
+ };
273
+ }
274
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DocumentenApiColumnModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.IconService }, { token: i3.CaseStatusService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
275
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DocumentenApiColumnModalComponent, isStandalone: true, selector: "valtimo-documenten-api-column-modal", inputs: { type: "type", prefill: "prefill", usedKeys: "usedKeys", documentDefinitionName: "documentDefinitionName" }, outputs: { closeModalEvent: "closeModalEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('dossierManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('dossierManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [disabled]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n [label]=\"'dossierManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.statuses.visible' | translate\"\n [offText]=\"'dossierManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n", styles: [".status-form{display:flex;flex-direction:column;gap:16px}.edit-key-input{height:40px;display:flex;width:100%;flex-direction:row;gap:16px;align-items:flex-end}::ng-deep .horizontal-inputs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}::ng-deep .horizontal-inputs .cds--label{width:100%;display:flex;flex-direction:column;gap:8px}::ng-deep .dropdown-color-tag .cds--tag{margin-top:-4px;margin-left:2px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (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 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i2.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i2.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i2.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i2.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i2.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i2.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i2.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i2.IconButton, selector: "cds-icon-button, ibm-icon-button", inputs: ["buttonNgClass", "buttonAttributes", "buttonId", "kind", "size", "type", "isExpressive", "disabled", "description"], outputs: ["click", "focus", "blur", "tooltipClick"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i2.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "skeleton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
276
+ }
277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DocumentenApiColumnModalComponent, decorators: [{
278
+ type: Component,
279
+ args: [{ selector: 'valtimo-documenten-api-column-modal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
280
+ CommonModule,
281
+ ModalModule,
282
+ TagModule,
283
+ TranslateModule,
284
+ InputModule,
285
+ ReactiveFormsModule,
286
+ ButtonModule,
287
+ DropdownModule,
288
+ ToggleModule,
289
+ ], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('dossierManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('dossierManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [disabled]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n [label]=\"'dossierManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.statuses.visible' | translate\"\n [offText]=\"'dossierManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n", styles: [".status-form{display:flex;flex-direction:column;gap:16px}.edit-key-input{height:40px;display:flex;width:100%;flex-direction:row;gap:16px;align-items:flex-end}::ng-deep .horizontal-inputs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}::ng-deep .horizontal-inputs .cds--label{width:100%;display:flex;flex-direction:column;gap:8px}::ng-deep .dropdown-color-tag .cds--tag{margin-top:-4px;margin-left:2px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (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 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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"] }]
290
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.IconService }, { type: i3.CaseStatusService }, { type: i4.TranslateService }], propDecorators: { type: [{
291
+ type: Input
292
+ }], prefill: [{
293
+ type: Input
294
+ }], usedKeys: [{
295
+ type: Input
296
+ }], documentDefinitionName: [{
297
+ type: Input
298
+ }], closeModalEvent: [{
299
+ type: Output
300
+ }] } });
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktY29sdW1uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWNvbHVtbi1tb2RhbC9kb2N1bWVudGVuLWFwaS1jb2x1bW4tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktY29sdW1uLW1vZGFsL2RvY3VtZW50ZW4tYXBpLWNvbHVtbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLEdBQUcsRUFFSCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBR0wsbUJBQW1CLEVBR25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEdBQ3hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBRWQsV0FBVyxFQUVYLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sMkJBQTJCLENBQUM7QUFD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ZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpQ29sdW1uTW9kYWxUeXBlLCBEb2N1bWVudGVuQXBpQ29sdW1uTW9kYWxUeXBlQ2xvc2VFdmVudH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UU30gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1CdWlsZGVyLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JGbixcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQ2FzZVN0YXR1c1NlcnZpY2UsXG4gIEludGVybmFsQ2FzZVN0YXR1cyxcbiAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IsXG4gIEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLFxufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge1xuICBCdXR0b25Nb2R1bGUsXG4gIERyb3Bkb3duTW9kdWxlLFxuICBJY29uU2VydmljZSxcbiAgSW5wdXRNb2R1bGUsXG4gIExpc3RJdGVtLFxuICBNb2RhbE1vZHVsZSxcbiAgVGFnTW9kdWxlLFxuICBUb2dnbGVNb2R1bGUsXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtFZGl0MTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9jdW1lbnRlbi1hcGktY29sdW1uLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50ZW4tYXBpLWNvbHVtbi1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50ZW4tYXBpLWNvbHVtbi1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNb2RhbE1vZHVsZSxcbiAgICBUYWdNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIERyb3Bkb3duTW9kdWxlLFxuICAgIFRvZ2dsZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRlbkFwaUNvbHVtbk1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHR5cGUodmFsdWU6IERvY3VtZW50ZW5BcGlDb2x1bW5Nb2RhbFR5cGUpIHtcbiAgICB0aGlzLl90eXBlLm5leHQodmFsdWUpO1xuXG4gICAgaWYgKHZhbHVlID09PSAnY2xvc2VkJykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3R5cGVBbmltYXRpb25EZWxheSQubmV4dCh2YWx1ZSk7XG4gICAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90eXBlQW5pbWF0aW9uRGVsYXkkLm5leHQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcHJlZmlsbCh2YWx1ZTogSW50ZXJuYWxDYXNlU3RhdHVzKSB7XG4gICAgdGhpcy5fcHJlZmlsbFN0YXR1cy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyB1c2VkS2V5cyE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBwdWJsaWMgZG9jdW1lbnREZWZpbml0aW9uTmFtZSE6IHN0cmluZztcblxuICBAT3V0cHV0KCkgcHVibGljIGNsb3NlTW9kYWxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RG9jdW1lbnRlbkFwaUNvbHVtbk1vZGFsVHlwZUNsb3NlRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9jdW1lbnRlbkFwaUNvbHVtbk1vZGFsVHlwZT4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwZUFuaW1hdGlvbkRlbGF5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9jdW1lbnRlbkFwaUNvbHVtbk1vZGFsVHlwZT4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZpbGxTdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVybmFsQ2FzZVN0YXR1cz4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNDbG9zZWQkID0gdGhpcy5fdHlwZS5waXBlKG1hcCh0eXBlID0+IHR5cGUgPT09ICdjbG9zZWQnKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0Zvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIHRpdGxlOiB0aGlzLmZiLmNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGtleTogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy51bmlxdWVLZXlWYWxpZGF0b3IoKV0pLFxuICAgIHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0OiB0aGlzLmZiLmNvbnRyb2wodHJ1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgY29sb3I6IHRoaXMuZmIuY29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0VkaXQkID0gY29tYmluZUxhdGVzdChbdGhpcy5fdHlwZUFuaW1hdGlvbkRlbGF5JCwgdGhpcy5fcHJlZmlsbFN0YXR1c10pLnBpcGUoXG4gICAgdGFwKChbdHlwZSwgcHJlZmlsbFN0YXR1c10pID0+IHtcbiAgICAgIGlmICh0eXBlID09PSAnZWRpdCcgJiYgcHJlZmlsbFN0YXR1cykgdGhpcy5wcmVmaWxsRm9ybShwcmVmaWxsU3RhdHVzKTtcbiAgICB9KSxcbiAgICBtYXAoKFt0eXBlXSkgPT4gdHlwZSA9PT0gJ2VkaXQnKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0FkZCQgPSB0aGlzLl90eXBlQW5pbWF0aW9uRGVsYXkkLnBpcGUoXG4gICAgbWFwKHR5cGUgPT4gdHlwZSA9PT0gJ2FkZCcpLFxuICAgIHRhcChpc0FkZCA9PiB7XG4gICAgICBpZiAoaXNBZGQpIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBDT0xPUlM6IEludGVybmFsQ2FzZVN0YXR1c0NvbG9yW10gPSBbXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuUmVkLFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLk1hZ2VudGEsXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuUHVycGxlLFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLkJsdWUsXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuVGVhbCxcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5HcmVlbixcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5DeWFuLFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLkdyYXksXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuQ29vbEdyYXksXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuV2FybUdyYXksXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuSGlnaENvbnRyYXN0LFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLk91dGxpbmUsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRDb2xvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVybmFsQ2FzZVN0YXR1c0NvbG9yPih1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb2xvckxpc3RJdGVtcyQ6IE9ic2VydmFibGU8TGlzdEl0ZW1bXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9zZWxlY3RlZENvbG9yJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtzZWxlY3RlZENvbG9yXSkgPT5cbiAgICAgIHRoaXMuQ09MT1JTLm1hcChjb2xvciA9PiAoe1xuICAgICAgICBzZWxlY3RlZDogY29sb3IgPT09IHNlbGVjdGVkQ29sb3IsXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdpbnRlcmZhY2UudGFnVHlwZS4nICtcbiAgICAgICAgICAgIEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLmdldFRhZ1R5cGVGcm9tSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IoY29sb3IpXG4gICAgICAgICksXG4gICAgICAgIGNvbG9yLFxuICAgICAgICB0YWdUeXBlOiBJbnRlcm5hbENhc2VTdGF0dXNVdGlscy5nZXRUYWdUeXBlRnJvbUludGVybmFsQ2FzZVN0YXR1c0NvbG9yKGNvbG9yKSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgZ2V0IHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0KCk6IEFic3RyYWN0Q29udHJvbDxib29sZWFuLCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzRm9ybUdyb3VwPy5nZXQoJ3Zpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0Jyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGtleSgpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNGb3JtR3JvdXA/LmdldCgna2V5Jyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRpdGxlKCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c0Zvcm1Hcm91cD8uZ2V0KCd0aXRsZScpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2xvcigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNGb3JtR3JvdXA/LmdldCgnY29sb3InKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnN0YXR1c0Zvcm1Hcm91cD8uaW52YWxpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJpc3RpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zdGF0dXNGb3JtR3JvdXA/LnByaXN0aW5lO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGluZ0tleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWRpdGluZ0tleSQgPSB0aGlzLl9lZGl0aW5nS2V5JC5waXBlKFxuICAgIHRhcChlZGl0aW5nID0+IHtcbiAgICAgIGlmIChlZGl0aW5nKSB7XG4gICAgICAgIHRoaXMua2V5Py5lbmFibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMua2V5Py5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcmlnaW5hbFN0YXR1c0tleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlU3RhdHVzU2VydmljZTogQ2FzZVN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0VkaXQxNl0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkF1dG9LZXlTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ2hlY2tlZENoYW5nZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICB2aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdDogY2hlY2tlZCxcbiAgICB9KTtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIGFkZFN0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgIHRoaXMuY2FzZVN0YXR1c1NlcnZpY2VcbiAgICAgIC5zYXZlSW50ZXJuYWxDYXNlU3RhdHVzKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSwgdGhpcy5nZXRGb3JtVmFsdWUoKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgICB0aGlzLmNsb3NlQW5kUmVmcmVzaCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5hYmxlKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVkaXRTdGF0dXMoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLl9vcmlnaW5hbFN0YXR1c0tleSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAob3JpZ2luYWxTdGF0dXNLZXkgPT5cbiAgICAgICAgICB0aGlzLmNhc2VTdGF0dXNTZXJ2aWNlLnVwZGF0ZUludGVybmFsQ2FzZVN0YXR1cyhcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICAgIG9yaWdpbmFsU3RhdHVzS2V5LFxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtVmFsdWUoKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VBbmRSZWZyZXNoKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZWRpdEtleUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuX2VkaXRpbmdLZXkkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY29sb3JEcm9wZG93bkNoYW5nZShldmVudDoge1xuICAgIGl0ZW06IHtjb2xvcjogc3RyaW5nOyBjb250ZW50OiBzdHJpbmc7IHNlbGVjdGVkOiBib29sZWFufTtcbiAgICBpc1VwZGF0ZTogYm9vbGVhbjtcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0NvbG9yID0gZXZlbnQ/Lml0ZW0/LmNvbG9yIGFzIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yO1xuXG4gICAgaWYgKG5ld0NvbG9yKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZENvbG9yJC5uZXh0KG5ld0NvbG9yKTtcbiAgICAgIHRoaXMuc3RhdHVzRm9ybUdyb3VwLnBhdGNoVmFsdWUoe2NvbG9yOiBuZXdDb2xvcn0pO1xuICAgICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAubWFya0FzRGlydHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZWZpbGxGb3JtKHByZWZpbGxTdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cyk6IHZvaWQge1xuICAgIHRoaXMuX29yaWdpbmFsU3RhdHVzS2V5JC5uZXh0KHByZWZpbGxTdGF0dXMua2V5KTtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgIGtleTogcHJlZmlsbFN0YXR1cy5rZXksXG4gICAgICB0aXRsZTogcHJlZmlsbFN0YXR1cy50aXRsZSxcbiAgICAgIHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0OiBwcmVmaWxsU3RhdHVzLnZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0LFxuICAgICAgY29sb3I6IHByZWZpbGxTdGF0dXMuY29sb3IsXG4gICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0ZWRDb2xvciQubmV4dChwcmVmaWxsU3RhdHVzLmNvbG9yKTtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5tYXJrQXNQcmlzdGluZSgpO1xuICAgIHRoaXMucmVzZXRFZGl0aW5nS2V5KCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgIGtleTogJycsXG4gICAgICB0aXRsZTogJycsXG4gICAgICB2aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdDogdHJ1ZSxcbiAgICAgIGNvbG9yOiBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5CbHVlLFxuICAgIH0pO1xuICAgIHRoaXMuX3NlbGVjdGVkQ29sb3IkLm5leHQoSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuQmx1ZSk7XG4gICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAubWFya0FzUHJpc3RpbmUoKTtcbiAgICB0aGlzLnJlc2V0RWRpdGluZ0tleSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEVkaXRpbmdLZXkoKTogdm9pZCB7XG4gICAgdGhpcy5fZWRpdGluZ0tleSQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5BdXRvS2V5U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5pc0FkZCQsIHRoaXMudGl0bGUudmFsdWVDaGFuZ2VzLCB0aGlzLmVkaXRpbmdLZXkkXSkuc3Vic2NyaWJlKFxuICAgICAgICAoW2lzQWRkLCB0aXRsZVZhbHVlLCBlZGl0aW5nS2V5XSkgPT4ge1xuICAgICAgICAgIGlmIChpc0FkZCAmJiAhZWRpdGluZ0tleSkge1xuICAgICAgICAgICAgaWYgKHRpdGxlVmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7a2V5OiB0aGlzLmdldFVuaXF1ZUtleSh0aXRsZVZhbHVlKX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhcktleSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFVuaXF1ZUtleSh0aXRsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXNoQ2FzZUtleSA9IGAke3RpdGxlfWBcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW15hLXowLTktX10rfC1bXmEtejAtOV0rL2csICctJylcbiAgICAgIC5yZXBsYWNlKC9fWy1fXSsvZywgJ18nKVxuICAgICAgLnJlcGxhY2UoL15bXmEtel0rL2csICcnKTtcbiAgICBjb25zdCB1c2VkS2V5cyA9IHRoaXMudXNlZEtleXM7XG5cbiAgICBpZiAoIXVzZWRLZXlzLmluY2x1ZGVzKGRhc2hDYXNlS2V5KSkge1xuICAgICAgcmV0dXJuIGRhc2hDYXNlS2V5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFVuaXF1ZUtleVdpdGhOdW1iZXIoZGFzaENhc2VLZXksIHVzZWRLZXlzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VW5pcXVlS2V5V2l0aE51bWJlcihkYXNoQ2FzZUtleTogc3RyaW5nLCB1c2VkS2V5czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IG51bWJlcnNGcm9tQ3VycmVudEtleSA9IChkYXNoQ2FzZUtleS5tYXRjaCgvXlxcZCt8XFxkK1xcYnxcXGQrKD89XFx3KS9nKSB8fCBbXSkubWFwKFxuICAgICAgKG51bWJlclZhbHVlOiBzdHJpbmcpID0+ICtudW1iZXJWYWx1ZVxuICAgICk7XG4gICAgY29uc3QgbGFzdE51bWJlckZyb21DdXJyZW50S2V5ID1cbiAgICAgIG51bWJlcnNGcm9tQ3VycmVudEtleS5sZW5ndGggPiAwICYmIG51bWJlcnNGcm9tQ3VycmVudEtleVtudW1iZXJzRnJvbUN1cnJlbnRLZXkubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgbmV3S2V5ID0gbGFzdE51bWJlckZyb21DdXJyZW50S2V5XG4gICAgICA/IGAke2Rhc2hDYXNlS2V5LnJlcGxhY2UoYCR7bGFzdE51bWJlckZyb21DdXJyZW50S2V5fWAsIGAke2xhc3ROdW1iZXJGcm9tQ3VycmVudEtleSArIDF9YCl9YFxuICAgICAgOiBgJHtkYXNoQ2FzZUtleX0tMWA7XG5cbiAgICBpZiAodXNlZEtleXMuaW5jbHVkZXMobmV3S2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VW5pcXVlS2V5V2l0aE51bWJlcihuZXdLZXksIHVzZWRLZXlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3S2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcktleSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5wYXRjaFZhbHVlKHtrZXk6ICcnfSk7XG4gIH1cblxuICBwcml2YXRlIHVuaXF1ZUtleVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PlxuICAgICAgdGhpcy51c2VkS2V5cz8uZXZlcnkoKGtleTogc3RyaW5nKSA9PiBrZXkgIT09IGNvbnRyb2wudmFsdWUpXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHt1bmlxdWVLZXk6IHt2YWx1ZTogY29udHJvbC52YWx1ZX19O1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAuZGlzYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoZGVsYXkgPSB0cnVlKTogdm9pZCB7XG4gICAgc2V0VGltZW91dChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuc3RhdHVzRm9ybUdyb3VwLmVuYWJsZSgpO1xuICAgICAgfSxcbiAgICAgIGRlbGF5ID8gQ0FSQk9OX0NPTlNUQU5UUy5tb2RhbEFuaW1hdGlvbk1zIDogMFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VNb2RhbEV2ZW50LmVtaXQoJ2Nsb3NlJyk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQW5kUmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlTW9kYWxFdmVudC5lbWl0KCdjbG9zZUFuZFJlZnJlc2gnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rm9ybVZhbHVlKCk6IEludGVybmFsQ2FzZVN0YXR1cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogdGhpcy5rZXkudmFsdWUsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZS52YWx1ZSxcbiAgICAgIHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0OiB0aGlzLnZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0LnZhbHVlLFxuICAgICAgY29sb3I6IHRoaXMuY29sb3IudmFsdWUgYXMgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IsXG4gICAgfTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLW1vZGFsXG4gIHZhbHRpbW9DZHNNb2RhbFxuICAqbmdJZj1cIntcbiAgICBpc0FkZDogaXNBZGQkIHwgYXN5bmMsXG4gICAgaXNFZGl0OiBpc0VkaXQkIHwgYXN5bmMsXG4gICAgaXNDbG9zZWQ6IGlzQ2xvc2VkJCB8IGFzeW5jLFxuICAgIGVkaXRpbmdLZXk6IGVkaXRpbmdLZXkkIHwgYXN5bmMsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbiAgW29wZW5dPVwiIW9icy5pc0Nsb3NlZFwiXG4gIHNpemU9XCJzbVwiXG4+XG4gIDxjZHMtbW9kYWwtaGVhZGVyIHNob3dDbG9zZUJ1dHRvbj1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwib25DbG9zZSgpXCI+XG4gICAgPGgzIGNkc01vZGFsSGVhZGVySGVhZGluZz5cbiAgICAgIHt7IG9icy5pc0FkZCA/ICgnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuYWRkJyB8IHRyYW5zbGF0ZSkgOiAnJyB9fVxuICAgICAge3sgb2JzLmlzRWRpdCA/ICgnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuZWRpdCcgfCB0cmFuc2xhdGUpIDogJycgfX1cbiAgICA8L2gzPlxuICA8L2Nkcy1tb2RhbC1oZWFkZXI+XG5cbiAgPHNlY3Rpb24gY2RzTW9kYWxDb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGF0dXNGb3JtOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvc2VjdGlvbj5cblxuICA8Y2RzLW1vZGFsLWZvb3Rlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uczsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Nkcy1tb2RhbC1mb290ZXI+XG48L2Nkcy1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNjb2xvckRyb3Bkb3duSXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29sb3ItdGFnXCI+XG4gICAgPGNkcy10YWcgKm5nSWY9XCJpdGVtICYmIGl0ZW0uY29udGVudFwiIGNsYXNzPVwiY2RzLXRhZy0tbm8tbWFyZ2luXCIgW3R5cGVdPVwiaXRlbT8udGFnVHlwZVwiPlxuICAgICAge3sgJ2ludGVyZmFjZS50YWdUeXBlLicgKyBpdGVtPy50YWdUeXBlIHwgdHJhbnNsYXRlIH19XG4gICAgPC9jZHMtdGFnPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3RhdHVzRm9ybSBsZXQtb2JzPVwib2JzXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwic3RhdHVzRm9ybUdyb3VwXCIgY2xhc3M9XCJzdGF0dXMtZm9ybVwiPlxuICAgIDxjZHMtbGFiZWw+XG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuY29sdW1ucy50aXRsZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGlucHV0IGNkc1RleHQgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIiBbYXR0ci5tb2RhbC1wcmltYXJ5LWZvY3VzXT1cInRydWVcIiAvPlxuICAgIDwvY2RzLWxhYmVsPlxuXG4gICAgPGNkcy1sYWJlbD5cbiAgICAgIHt7ICdkb3NzaWVyTWFuYWdlbWVudC5zdGF0dXNlcy5jb2x1bW5zLmtleScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGRpdiBjbGFzcz1cImVkaXQta2V5LWlucHV0XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJrZXlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhb2JzLmVkaXRpbmdLZXlcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgIG9icy5pc0FkZCAmJiAhb2JzLmVkaXRpbmdLZXlcbiAgICAgICAgICAgICAgPyAoJ2Rvc3NpZXJNYW5hZ2VtZW50LnN0YXR1c2VzLmtleUF1dG9HZW5lcmF0ZWQnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8Y2RzLWljb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCIhb2JzLmVkaXRpbmdLZXkgJiYgb2JzLmlzQWRkXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiZWRpdEtleUJ1dHRvbkNsaWNrKClcIlxuICAgICAgICAgIGtpbmQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImVkaXRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgPC9jZHMtaWNvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Nkcy1sYWJlbD5cblxuICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWlucHV0c1wiPlxuICAgICAgPGNkcy1sYWJlbD5cbiAgICAgICAge3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LnN0YXR1c2VzLmNvbHVtbnMuY29sb3InIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgPGNkcy1kcm9wZG93blxuICAgICAgICAgIFthcHBlbmRJbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuY29sb3JQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChzZWxlY3RlZCk9XCJjb2xvckRyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJjb2xvckxpc3RJdGVtcyRcIiBbbGlzdFRwbF09XCJjb2xvckRyb3Bkb3duSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgPC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgICAgPC9jZHMtZHJvcGRvd24+XG4gICAgICA8L2Nkcy1sYWJlbD5cblxuICAgICAgPGNkcy10b2dnbGVcbiAgICAgICAgW2xhYmVsXT1cIidkb3NzaWVyTWFuYWdlbWVudC5zdGF0dXNlcy52aXNpYmxlVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW29uVGV4dF09XCInZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMudmlzaWJsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbb2ZmVGV4dF09XCInZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuaW52aXNpYmxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbY2hlY2tlZF09XCJ2aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdD8udmFsdWVcIlxuICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJ0b2dnbGVDaGVja2VkQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvY2RzLXRvZ2dsZT5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zIGxldC1vYnM9XCJvYnNcIj5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwib25DbG9zZSgpXCIgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiPlxuICAgIHt7ICdpbnRlcmZhY2UuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJvYnMuaXNBZGRcIlxuICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgIFtkaXNhYmxlZF09XCJpbnZhbGlkIHx8IHByaXN0aW5lIHx8IG9icy5kaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cImFkZFN0YXR1cygpXCJcbiAgPlxuICAgIHt7ICdpbnRlcmZhY2UuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJvYnMuaXNFZGl0XCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiaW52YWxpZCB8fCBwcmlzdGluZSB8fCBvYnMuZGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJlZGl0U3RhdHVzKClcIlxuICA+XG4gICAge3sgJ2ludGVyZmFjZS5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=