@tilde-nlp/ngx-common 4.0.28 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/esm2022/lib/close-button/close-button.component.mjs +34 -34
  2. package/esm2022/lib/close-button/close-button.module.mjs +36 -36
  3. package/esm2022/lib/close-button/index.mjs +2 -2
  4. package/esm2022/lib/company-product/company-product.component.mjs +20 -20
  5. package/esm2022/lib/company-product/company-product.module.mjs +22 -22
  6. package/esm2022/lib/company-product/index.mjs +2 -2
  7. package/esm2022/lib/confirmation-modal/confirmation-modal.component.mjs +25 -25
  8. package/esm2022/lib/confirmation-modal/confirmation-modal.module.mjs +21 -21
  9. package/esm2022/lib/confirmation-modal/index.mjs +5 -5
  10. package/esm2022/lib/confirmation-modal/models/confirmation-body.model.mjs +1 -1
  11. package/esm2022/lib/confirmation-modal/models/confirmation.enum.mjs +5 -5
  12. package/esm2022/lib/confirmation-modal/services/confirmation.service.mjs +25 -25
  13. package/esm2022/lib/confirmation-modal/services/index.mjs +1 -1
  14. package/esm2022/lib/constants/index.mjs +1 -1
  15. package/esm2022/lib/constants/screen-size.const.mjs +10 -10
  16. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +29 -29
  17. package/esm2022/lib/directives/click-outside/click-outside.module.mjs +24 -24
  18. package/esm2022/lib/directives/click-outside/index.mjs +2 -2
  19. package/esm2022/lib/directives/drag-and-drop/drag-and-drop.directive.mjs +62 -62
  20. package/esm2022/lib/directives/drag-and-drop/drag-and-drop.module.mjs +24 -24
  21. package/esm2022/lib/directives/drag-and-drop/index.mjs +2 -2
  22. package/esm2022/lib/directives/index.mjs +3 -3
  23. package/esm2022/lib/directives/mat-button-loading/index.mjs +2 -2
  24. package/esm2022/lib/directives/mat-button-loading/mat-button-loading.directive.mjs +59 -59
  25. package/esm2022/lib/directives/mat-button-loading/mat-button-loading.module.mjs +20 -20
  26. package/esm2022/lib/extension-dialog/components/index.mjs +1 -1
  27. package/esm2022/lib/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.mjs +22 -22
  28. package/esm2022/lib/extension-dialog/extension-dialog.component.mjs +142 -142
  29. package/esm2022/lib/extension-dialog/extension-dialog.module.mjs +51 -51
  30. package/esm2022/lib/extension-dialog/icons/file-types/excel.icon.mjs +1 -1
  31. package/esm2022/lib/extension-dialog/icons/file-types/index.mjs +9 -9
  32. package/esm2022/lib/extension-dialog/icons/file-types/interchange.icon.mjs +1 -1
  33. package/esm2022/lib/extension-dialog/icons/file-types/office-other.icon.mjs +1 -1
  34. package/esm2022/lib/extension-dialog/icons/file-types/other.icon.mjs +1 -1
  35. package/esm2022/lib/extension-dialog/icons/file-types/pdf.icon.mjs +1 -1
  36. package/esm2022/lib/extension-dialog/icons/file-types/powerpoint.icon.mjs +1 -1
  37. package/esm2022/lib/extension-dialog/icons/file-types/scanned.icon.mjs +1 -1
  38. package/esm2022/lib/extension-dialog/icons/file-types/web.icon.mjs +1 -1
  39. package/esm2022/lib/extension-dialog/icons/file-types/word.icon.mjs +1 -1
  40. package/esm2022/lib/extension-dialog/icons/index.mjs +1 -1
  41. package/esm2022/lib/extension-dialog/index.mjs +5 -5
  42. package/esm2022/lib/extension-dialog/models/enums/file-categories.enum.mjs +8 -8
  43. package/esm2022/lib/extension-dialog/models/enums/file-extensions.enum.mjs +34 -34
  44. package/esm2022/lib/extension-dialog/models/enums/file-type-icons.enum.mjs +12 -12
  45. package/esm2022/lib/extension-dialog/models/enums/file-types.enum.mjs +12 -12
  46. package/esm2022/lib/extension-dialog/models/enums/index.mjs +4 -4
  47. package/esm2022/lib/extension-dialog/models/index.mjs +2 -2
  48. package/esm2022/lib/extension-dialog/models/interfaces/config.mjs +1 -1
  49. package/esm2022/lib/extension-dialog/models/interfaces/dialog-data.model.mjs +1 -1
  50. package/esm2022/lib/extension-dialog/models/interfaces/index.mjs +2 -2
  51. package/esm2022/lib/extension-dialog/services/extension-dialog.service.mjs +22 -22
  52. package/esm2022/lib/extension-dialog/services/index.mjs +1 -1
  53. package/esm2022/lib/file-upload/file-upload.component.mjs +107 -107
  54. package/esm2022/lib/file-upload/file-upload.module.mjs +42 -42
  55. package/esm2022/lib/file-upload/index.mjs +3 -3
  56. package/esm2022/lib/file-upload/models/file-upload-error-type.enum.mjs +7 -7
  57. package/esm2022/lib/file-upload/models/file-upload-error.model.mjs +1 -1
  58. package/esm2022/lib/file-upload/models/index.mjs +2 -2
  59. package/esm2022/lib/filter-bar/filter-bar.component.mjs +146 -146
  60. package/esm2022/lib/filter-bar/filter-bar.module.mjs +71 -71
  61. package/esm2022/lib/filter-bar/index.mjs +3 -3
  62. package/esm2022/lib/filter-bar/models/filter-bar-change-event.model.mjs +1 -1
  63. package/esm2022/lib/filter-bar/models/filter-bar-filter-item.model.mjs +1 -1
  64. package/esm2022/lib/filter-bar/models/filter-bar-filter.model.mjs +1 -1
  65. package/esm2022/lib/filter-bar/models/filter-bar-settings.model.mjs +1 -1
  66. package/esm2022/lib/filter-bar/models/index.mjs +3 -3
  67. package/esm2022/lib/footer/footer.component.mjs +37 -37
  68. package/esm2022/lib/footer/footer.module.mjs +34 -34
  69. package/esm2022/lib/footer/index.mjs +2 -2
  70. package/esm2022/lib/helpers/auth-headers.helper.mjs +24 -21
  71. package/esm2022/lib/helpers/conversion.helper.mjs +10 -10
  72. package/esm2022/lib/helpers/file-extension.helper.mjs +5 -5
  73. package/esm2022/lib/helpers/html-element-parse.helper.mjs +15 -15
  74. package/esm2022/lib/helpers/html.helper.mjs +54 -54
  75. package/esm2022/lib/helpers/index.mjs +9 -9
  76. package/esm2022/lib/helpers/missing-translation.helper.mjs +6 -6
  77. package/esm2022/lib/helpers/resolution.helper.mjs +6 -6
  78. package/esm2022/lib/helpers/save-file.helper.mjs +10 -10
  79. package/esm2022/lib/helpers/sort.helper.mjs +11 -10
  80. package/esm2022/lib/inline-message/index.mjs +3 -3
  81. package/esm2022/lib/inline-message/inline-message.component.mjs +23 -23
  82. package/esm2022/lib/inline-message/inline-message.module.mjs +32 -32
  83. package/esm2022/lib/inline-message/models/index.mjs +3 -3
  84. package/esm2022/lib/inline-message/models/inline-message-icon-position.enum.mjs +5 -5
  85. package/esm2022/lib/inline-message/models/inline-message-type.enum.mjs +6 -6
  86. package/esm2022/lib/inline-message/models/inline-message.model.mjs +1 -1
  87. package/esm2022/lib/multi-functional-table/constants/disable-export-attribute-name.const.mjs +1 -1
  88. package/esm2022/lib/multi-functional-table/constants/index.mjs +1 -1
  89. package/esm2022/lib/multi-functional-table/index.mjs +4 -4
  90. package/esm2022/lib/multi-functional-table/models/batch-config.model.mjs +1 -1
  91. package/esm2022/lib/multi-functional-table/models/column-config.model.mjs +1 -1
  92. package/esm2022/lib/multi-functional-table/models/column-select-config.model.mjs +1 -1
  93. package/esm2022/lib/multi-functional-table/models/export-config.model.mjs +1 -1
  94. package/esm2022/lib/multi-functional-table/models/export-format.enum.mjs +4 -4
  95. package/esm2022/lib/multi-functional-table/models/filter-config.model.mjs +2 -2
  96. package/esm2022/lib/multi-functional-table/models/index.mjs +6 -6
  97. package/esm2022/lib/multi-functional-table/models/multi-functional-table-config.model.mjs +1 -1
  98. package/esm2022/lib/multi-functional-table/models/selected-column-local-storage-config.model.mjs +1 -1
  99. package/esm2022/lib/multi-functional-table/multi-functional-table.component.mjs +228 -229
  100. package/esm2022/lib/multi-functional-table/multi-functional-table.module.mjs +72 -72
  101. package/esm2022/lib/notification-message/enums/index.mjs +1 -1
  102. package/esm2022/lib/notification-message/enums/notification-message-type.enum.mjs +8 -8
  103. package/esm2022/lib/notification-message/index.mjs +4 -4
  104. package/esm2022/lib/notification-message/interfaces/index.mjs +1 -1
  105. package/esm2022/lib/notification-message/interfaces/notification-message.model.mjs +1 -1
  106. package/esm2022/lib/notification-message/notification-message.component.mjs +52 -52
  107. package/esm2022/lib/notification-message/notification-message.module.mjs +44 -44
  108. package/esm2022/lib/open-close-button/index.mjs +4 -4
  109. package/esm2022/lib/open-close-button/injection-tokens/index.mjs +1 -1
  110. package/esm2022/lib/open-close-button/injection-tokens/open-close-btn-icons.token.mjs +1 -1
  111. package/esm2022/lib/open-close-button/models/index.mjs +1 -1
  112. package/esm2022/lib/open-close-button/models/open-close-btn-icons.model.mjs +1 -1
  113. package/esm2022/lib/open-close-button/open-close-button.component.mjs +53 -53
  114. package/esm2022/lib/open-close-button/open-close-button.module.mjs +21 -21
  115. package/esm2022/lib/pipes/date-ago/date-ago.module.mjs +28 -28
  116. package/esm2022/lib/pipes/date-ago/date-ago.pipe.mjs +114 -114
  117. package/esm2022/lib/pipes/date-ago/index.mjs +2 -2
  118. package/esm2022/lib/pipes/date-ago/models/date-ago-interval.model.mjs +1 -1
  119. package/esm2022/lib/pipes/date-ago/models/date-ago-settings.model.mjs +1 -1
  120. package/esm2022/lib/pipes/date-ago/models/date-ago-settings.token.mjs +1 -1
  121. package/esm2022/lib/pipes/date-ago/models/date-ago.model.mjs +1 -1
  122. package/esm2022/lib/pipes/date-ago/models/index.mjs +4 -4
  123. package/esm2022/lib/pipes/filter-with-highlight/filter-with-highlight.module.mjs +24 -24
  124. package/esm2022/lib/pipes/filter-with-highlight/filter-with-highlight.pipe.mjs +43 -42
  125. package/esm2022/lib/pipes/filter-with-highlight/index.mjs +2 -2
  126. package/esm2022/lib/pipes/index.mjs +6 -7
  127. package/esm2022/lib/pipes/language-translate/index.mjs +2 -2
  128. package/esm2022/lib/pipes/language-translate/language-translate.module.mjs +18 -18
  129. package/esm2022/lib/pipes/language-translate/language-translate.pipe.mjs +100 -99
  130. package/esm2022/lib/pipes/sort-translations/index.mjs +2 -2
  131. package/esm2022/lib/pipes/sort-translations/sort-translations.module.mjs +22 -22
  132. package/esm2022/lib/pipes/sort-translations/sort-translations.pipe.mjs +60 -60
  133. package/esm2022/lib/pipes/sort-translations-by-property/index.mjs +2 -2
  134. package/esm2022/lib/pipes/sort-translations-by-property/sort-translations-by-property.module.mjs +18 -18
  135. package/esm2022/lib/pipes/sort-translations-by-property/sort-translations-by-property.pipe.mjs +40 -40
  136. package/esm2022/lib/plausible/index.mjs +4 -4
  137. package/esm2022/lib/plausible/models/index.mjs +1 -1
  138. package/esm2022/lib/plausible/models/plausible-event.model.mjs +1 -1
  139. package/esm2022/lib/plausible/plausible-event.directive.mjs +40 -40
  140. package/esm2022/lib/plausible/plausible.helper.mjs +37 -37
  141. package/esm2022/lib/plausible/plausible.module.mjs +24 -24
  142. package/esm2022/lib/services/alert/alert.service.mjs +167 -165
  143. package/esm2022/lib/services/alert/index.mjs +3 -3
  144. package/esm2022/lib/services/alert/injection-tokens/alert-configuration.token.mjs +1 -1
  145. package/esm2022/lib/services/alert/injection-tokens/index.mjs +1 -1
  146. package/esm2022/lib/services/alert/models/alert-configuration.model.mjs +2 -2
  147. package/esm2022/lib/services/alert/models/index.mjs +1 -1
  148. package/esm2022/lib/services/dom/dom.service.mjs +21 -21
  149. package/esm2022/lib/services/dom/index.mjs +1 -1
  150. package/esm2022/lib/services/icon/icon.service.mjs +35 -35
  151. package/esm2022/lib/services/icon/index.mjs +1 -1
  152. package/esm2022/lib/services/index.mjs +6 -6
  153. package/esm2022/lib/services/language-translate/index.mjs +1 -1
  154. package/esm2022/lib/services/language-translate/language-translate.service.mjs +25 -25
  155. package/esm2022/lib/services/notification/index.mjs +2 -2
  156. package/esm2022/lib/services/notification/models/index.mjs +2 -2
  157. package/esm2022/lib/services/notification/models/notification.model.mjs +1 -1
  158. package/esm2022/lib/services/notification/models/operations.enum.mjs +5 -5
  159. package/esm2022/lib/services/notification/notification.service.mjs +35 -35
  160. package/esm2022/lib/services/system/index.mjs +1 -1
  161. package/esm2022/lib/services/system/system.service.mjs +23 -23
  162. package/esm2022/lib/status-display/index.mjs +3 -3
  163. package/esm2022/lib/status-display/models/index.mjs +1 -1
  164. package/esm2022/lib/status-display/models/status-display-config.model.mjs +1 -1
  165. package/esm2022/lib/status-display/status-display.component.mjs +17 -17
  166. package/esm2022/lib/status-display/status-display.module.mjs +21 -21
  167. package/esm2022/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-card/terminology-collection-card.component.mjs +65 -65
  168. package/esm2022/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-list.component.mjs +70 -70
  169. package/esm2022/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection-dialog/terminology-create-collection-dialog.component.mjs +60 -58
  170. package/esm2022/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection.component.mjs +56 -56
  171. package/esm2022/lib/terminology/components/terminology-panel/terminology-panel.component.mjs +49 -49
  172. package/esm2022/lib/terminology/config/models/index.mjs +1 -1
  173. package/esm2022/lib/terminology/config/models/terminology-config.model.mjs +1 -1
  174. package/esm2022/lib/terminology/config/services/index.mjs +1 -1
  175. package/esm2022/lib/terminology/config/services/terminology-config/terminology-config.service.mjs +45 -48
  176. package/esm2022/lib/terminology/enums/combined-collection-tooltip-key.enum.mjs +5 -5
  177. package/esm2022/lib/terminology/enums/engine-term-collection-scope.enum.mjs +6 -6
  178. package/esm2022/lib/terminology/enums/engine-term-collection-source.enum.mjs +5 -5
  179. package/esm2022/lib/terminology/enums/engine-term-collection-status.enum.mjs +7 -7
  180. package/esm2022/lib/terminology/enums/engine-term-collection-sub-status.enum.mjs +13 -13
  181. package/esm2022/lib/terminology/enums/index.mjs +6 -6
  182. package/esm2022/lib/terminology/enums/mt-collection-status.enum.mjs +10 -10
  183. package/esm2022/lib/terminology/enums/mt-term-collection-v1-status.enum.mjs +6 -6
  184. package/esm2022/lib/terminology/enums/system-metadata-key.enum.mjs +6 -6
  185. package/esm2022/lib/terminology/enums/translation-api-version.model.mjs +5 -5
  186. package/esm2022/lib/terminology/factories/terminology-api.factory.mjs +12 -12
  187. package/esm2022/lib/terminology/factories/terminology-system.factory.mjs +13 -13
  188. package/esm2022/lib/terminology/icons/collections-menu.icon.mjs +1 -1
  189. package/esm2022/lib/terminology/icons/index.mjs +1 -1
  190. package/esm2022/lib/terminology/index.mjs +9 -9
  191. package/esm2022/lib/terminology/injection-tokens/terminology-api.token.mjs +1 -1
  192. package/esm2022/lib/terminology/injection-tokens/terminology-system.token.mjs +1 -1
  193. package/esm2022/lib/terminology/models/active-data.model.mjs +2 -2
  194. package/esm2022/lib/terminology/models/add-engine-terms-request-params.model.mjs +1 -1
  195. package/esm2022/lib/terminology/models/api-system.model.mjs +2 -2
  196. package/esm2022/lib/terminology/models/combined-collection.model.mjs +189 -189
  197. package/esm2022/lib/terminology/models/default-term-collection-order-update.model.mjs +1 -1
  198. package/esm2022/lib/terminology/models/domain.model.mjs +1 -1
  199. package/esm2022/lib/terminology/models/engine-term-collection-access-scope-update.model.mjs +1 -1
  200. package/esm2022/lib/terminology/models/engine-term-collection-access-scope.model.mjs +1 -1
  201. package/esm2022/lib/terminology/models/engine-term-collection-access-update.model.mjs +1 -1
  202. package/esm2022/lib/terminology/models/engine-term-collection-access.model.mjs +1 -1
  203. package/esm2022/lib/terminology/models/engine-term-collection-list.model.mjs +1 -1
  204. package/esm2022/lib/terminology/models/engine-term-collection.model.mjs +1 -1
  205. package/esm2022/lib/terminology/models/index.mjs +20 -20
  206. package/esm2022/lib/terminology/models/lang-list-item.model.mjs +1 -1
  207. package/esm2022/lib/terminology/models/mt-collection.model.mjs +1 -1
  208. package/esm2022/lib/terminology/models/mt-term-collection-v1.model.mjs +1 -1
  209. package/esm2022/lib/terminology/models/mt-term-service.model.mjs +1 -1
  210. package/esm2022/lib/terminology/models/system-api-service.model.mjs +1 -1
  211. package/esm2022/lib/terminology/models/system.model.mjs +2 -2
  212. package/esm2022/lib/terminology/models/terminology-engine.model.mjs +2 -2
  213. package/esm2022/lib/terminology/models/tld-term-collection-languages.model.mjs +1 -1
  214. package/esm2022/lib/terminology/models/tld-term-collection.model.mjs +2 -2
  215. package/esm2022/lib/terminology/models/update-engine-terms-request-params.model.mjs +1 -1
  216. package/esm2022/lib/terminology/models/vendor.model.mjs +1 -1
  217. package/esm2022/lib/terminology/services/engine-term-api/engine-term-api.service.mjs +51 -51
  218. package/esm2022/lib/terminology/services/engine-term-api/index.mjs +1 -1
  219. package/esm2022/lib/terminology/services/index.mjs +5 -5
  220. package/esm2022/lib/terminology/services/system-api-v1/system-api-v1.service.mjs +60 -59
  221. package/esm2022/lib/terminology/services/system-api-v2/models/engine-deployment.model.mjs +1 -1
  222. package/esm2022/lib/terminology/services/system-api-v2/models/engine-domain-list.model.mjs +1 -1
  223. package/esm2022/lib/terminology/services/system-api-v2/models/engine-domain.model.mjs +1 -1
  224. package/esm2022/lib/terminology/services/system-api-v2/models/engine-list.model.mjs +1 -1
  225. package/esm2022/lib/terminology/services/system-api-v2/models/engine-status.enum.mjs +10 -10
  226. package/esm2022/lib/terminology/services/system-api-v2/models/engine-sub-status.enum.mjs +17 -17
  227. package/esm2022/lib/terminology/services/system-api-v2/models/engine.model.mjs +1 -1
  228. package/esm2022/lib/terminology/services/system-api-v2/models/index.mjs +8 -8
  229. package/esm2022/lib/terminology/services/system-api-v2/models/revision.model.mjs +1 -1
  230. package/esm2022/lib/terminology/services/system-api-v2/models/worker-status.model.mjs +1 -1
  231. package/esm2022/lib/terminology/services/system-api-v2/system-api-v2.service.mjs +81 -81
  232. package/esm2022/lib/terminology/services/terminology/terminology.service.mjs +325 -324
  233. package/esm2022/lib/terminology/services/terminology-api-v1/terminology-api-v1.service.mjs +59 -58
  234. package/esm2022/lib/terminology/services/terminology-api-v2/terminology-api-v2.service.mjs +85 -84
  235. package/esm2022/lib/terminology/services/terminology-collection/index.mjs +1 -1
  236. package/esm2022/lib/terminology/services/terminology-collection/terminology-collection.service.mjs +54 -54
  237. package/esm2022/lib/terminology/terminology.component.mjs +137 -137
  238. package/esm2022/lib/terminology/terminology.module.mjs +132 -132
  239. package/esm2022/lib/tld-loader/index.mjs +2 -2
  240. package/esm2022/lib/tld-loader/tld-loader.component.mjs +11 -11
  241. package/esm2022/lib/tld-loader/tld-loader.module.mjs +20 -20
  242. package/esm2022/public-api.mjs +23 -23
  243. package/esm2022/tilde-nlp-ngx-common.mjs +4 -4
  244. package/fesm2022/tilde-nlp-ngx-common.mjs +3768 -3791
  245. package/fesm2022/tilde-nlp-ngx-common.mjs.map +1 -1
  246. package/index.d.ts +5 -5
  247. package/lib/close-button/close-button.component.d.ts +13 -13
  248. package/lib/close-button/close-button.module.d.ts +11 -11
  249. package/lib/close-button/index.d.ts +2 -2
  250. package/lib/company-product/company-product.component.d.ts +7 -7
  251. package/lib/company-product/company-product.module.d.ts +8 -8
  252. package/lib/company-product/index.d.ts +2 -2
  253. package/lib/confirmation-modal/confirmation-modal.component.d.ts +12 -12
  254. package/lib/confirmation-modal/confirmation-modal.module.d.ts +11 -11
  255. package/lib/confirmation-modal/index.d.ts +5 -5
  256. package/lib/confirmation-modal/models/confirmation-body.model.d.ts +8 -8
  257. package/lib/confirmation-modal/models/confirmation.enum.d.ts +4 -4
  258. package/lib/confirmation-modal/services/confirmation.service.d.ts +12 -12
  259. package/lib/confirmation-modal/services/index.d.ts +1 -1
  260. package/lib/constants/index.d.ts +1 -1
  261. package/lib/constants/screen-size.const.d.ts +10 -10
  262. package/lib/directives/click-outside/click-outside.directive.d.ts +10 -10
  263. package/lib/directives/click-outside/click-outside.module.d.ts +8 -8
  264. package/lib/directives/click-outside/index.d.ts +2 -2
  265. package/lib/directives/drag-and-drop/drag-and-drop.directive.d.ts +14 -14
  266. package/lib/directives/drag-and-drop/drag-and-drop.module.d.ts +8 -8
  267. package/lib/directives/drag-and-drop/index.d.ts +2 -2
  268. package/lib/directives/index.d.ts +3 -3
  269. package/lib/directives/mat-button-loading/index.d.ts +2 -2
  270. package/lib/directives/mat-button-loading/mat-button-loading.directive.d.ts +18 -18
  271. package/lib/directives/mat-button-loading/mat-button-loading.module.d.ts +8 -8
  272. package/lib/extension-dialog/components/index.d.ts +1 -1
  273. package/lib/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.d.ts +10 -10
  274. package/lib/extension-dialog/extension-dialog.component.d.ts +21 -21
  275. package/lib/extension-dialog/extension-dialog.module.d.ts +15 -15
  276. package/lib/extension-dialog/icons/file-types/excel.icon.d.ts +1 -1
  277. package/lib/extension-dialog/icons/file-types/index.d.ts +9 -9
  278. package/lib/extension-dialog/icons/file-types/interchange.icon.d.ts +1 -1
  279. package/lib/extension-dialog/icons/file-types/office-other.icon.d.ts +1 -1
  280. package/lib/extension-dialog/icons/file-types/other.icon.d.ts +1 -1
  281. package/lib/extension-dialog/icons/file-types/pdf.icon.d.ts +1 -1
  282. package/lib/extension-dialog/icons/file-types/powerpoint.icon.d.ts +1 -1
  283. package/lib/extension-dialog/icons/file-types/scanned.icon.d.ts +1 -1
  284. package/lib/extension-dialog/icons/file-types/web.icon.d.ts +1 -1
  285. package/lib/extension-dialog/icons/file-types/word.icon.d.ts +1 -1
  286. package/lib/extension-dialog/icons/index.d.ts +1 -1
  287. package/lib/extension-dialog/index.d.ts +5 -5
  288. package/lib/extension-dialog/models/enums/file-categories.enum.d.ts +7 -7
  289. package/lib/extension-dialog/models/enums/file-extensions.enum.d.ts +33 -33
  290. package/lib/extension-dialog/models/enums/file-type-icons.enum.d.ts +11 -11
  291. package/lib/extension-dialog/models/enums/file-types.enum.d.ts +11 -11
  292. package/lib/extension-dialog/models/enums/index.d.ts +4 -4
  293. package/lib/extension-dialog/models/index.d.ts +2 -2
  294. package/lib/extension-dialog/models/interfaces/config.d.ts +18 -18
  295. package/lib/extension-dialog/models/interfaces/dialog-data.model.d.ts +3 -3
  296. package/lib/extension-dialog/models/interfaces/index.d.ts +2 -2
  297. package/lib/extension-dialog/services/extension-dialog.service.d.ts +9 -9
  298. package/lib/extension-dialog/services/index.d.ts +1 -1
  299. package/lib/file-upload/file-upload.component.d.ts +29 -29
  300. package/lib/file-upload/file-upload.module.d.ts +13 -13
  301. package/lib/file-upload/index.d.ts +3 -3
  302. package/lib/file-upload/models/file-upload-error-type.enum.d.ts +6 -6
  303. package/lib/file-upload/models/file-upload-error.model.d.ts +6 -6
  304. package/lib/file-upload/models/index.d.ts +2 -2
  305. package/lib/filter-bar/filter-bar.component.d.ts +54 -54
  306. package/lib/filter-bar/filter-bar.module.d.ts +19 -19
  307. package/lib/filter-bar/index.d.ts +3 -3
  308. package/lib/filter-bar/models/filter-bar-change-event.model.d.ts +6 -6
  309. package/lib/filter-bar/models/filter-bar-filter-item.model.d.ts +4 -4
  310. package/lib/filter-bar/models/filter-bar-filter.model.d.ts +6 -6
  311. package/lib/filter-bar/models/filter-bar-settings.model.d.ts +19 -19
  312. package/lib/filter-bar/models/index.d.ts +3 -3
  313. package/lib/footer/footer.component.d.ts +15 -15
  314. package/lib/footer/footer.module.d.ts +11 -11
  315. package/lib/footer/index.d.ts +2 -2
  316. package/lib/helpers/auth-headers.helper.d.ts +4 -4
  317. package/lib/helpers/conversion.helper.d.ts +4 -4
  318. package/lib/helpers/file-extension.helper.d.ts +3 -3
  319. package/lib/helpers/html-element-parse.helper.d.ts +3 -3
  320. package/lib/helpers/html.helper.d.ts +17 -17
  321. package/lib/helpers/index.d.ts +9 -9
  322. package/lib/helpers/missing-translation.helper.d.ts +4 -4
  323. package/lib/helpers/resolution.helper.d.ts +3 -3
  324. package/lib/helpers/save-file.helper.d.ts +3 -3
  325. package/lib/helpers/sort.helper.d.ts +3 -3
  326. package/lib/inline-message/index.d.ts +3 -3
  327. package/lib/inline-message/inline-message.component.d.ts +10 -10
  328. package/lib/inline-message/inline-message.module.d.ts +10 -10
  329. package/lib/inline-message/models/index.d.ts +3 -3
  330. package/lib/inline-message/models/inline-message-icon-position.enum.d.ts +4 -4
  331. package/lib/inline-message/models/inline-message-type.enum.d.ts +5 -5
  332. package/lib/inline-message/models/inline-message.model.d.ts +10 -10
  333. package/lib/multi-functional-table/constants/disable-export-attribute-name.const.d.ts +1 -1
  334. package/lib/multi-functional-table/constants/index.d.ts +1 -1
  335. package/lib/multi-functional-table/index.d.ts +4 -4
  336. package/lib/multi-functional-table/models/batch-config.model.d.ts +4 -4
  337. package/lib/multi-functional-table/models/column-config.model.d.ts +18 -18
  338. package/lib/multi-functional-table/models/column-select-config.model.d.ts +14 -14
  339. package/lib/multi-functional-table/models/export-config.model.d.ts +9 -9
  340. package/lib/multi-functional-table/models/export-format.enum.d.ts +3 -3
  341. package/lib/multi-functional-table/models/filter-config.model.d.ts +6 -7
  342. package/lib/multi-functional-table/models/index.d.ts +6 -6
  343. package/lib/multi-functional-table/models/multi-functional-table-config.model.d.ts +36 -36
  344. package/lib/multi-functional-table/models/selected-column-local-storage-config.model.d.ts +20 -20
  345. package/lib/multi-functional-table/multi-functional-table.component.d.ts +66 -67
  346. package/lib/multi-functional-table/multi-functional-table.module.d.ts +20 -20
  347. package/lib/notification-message/enums/index.d.ts +1 -1
  348. package/lib/notification-message/enums/notification-message-type.enum.d.ts +7 -7
  349. package/lib/notification-message/index.d.ts +4 -4
  350. package/lib/notification-message/interfaces/index.d.ts +1 -1
  351. package/lib/notification-message/interfaces/notification-message.model.d.ts +22 -22
  352. package/lib/notification-message/notification-message.component.d.ts +22 -22
  353. package/lib/notification-message/notification-message.module.d.ts +13 -13
  354. package/lib/open-close-button/index.d.ts +4 -4
  355. package/lib/open-close-button/injection-tokens/index.d.ts +1 -1
  356. package/lib/open-close-button/injection-tokens/open-close-btn-icons.token.d.ts +1 -1
  357. package/lib/open-close-button/models/index.d.ts +1 -1
  358. package/lib/open-close-button/models/open-close-btn-icons.model.d.ts +4 -4
  359. package/lib/open-close-button/open-close-button.component.d.ts +22 -22
  360. package/lib/open-close-button/open-close-button.module.d.ts +11 -11
  361. package/lib/pipes/date-ago/date-ago.module.d.ts +9 -9
  362. package/lib/pipes/date-ago/date-ago.pipe.d.ts +20 -20
  363. package/lib/pipes/date-ago/index.d.ts +2 -2
  364. package/lib/pipes/date-ago/models/date-ago-interval.model.d.ts +5 -5
  365. package/lib/pipes/date-ago/models/date-ago-settings.model.d.ts +26 -26
  366. package/lib/pipes/date-ago/models/date-ago-settings.token.d.ts +1 -1
  367. package/lib/pipes/date-ago/models/date-ago.model.d.ts +4 -4
  368. package/lib/pipes/date-ago/models/index.d.ts +4 -4
  369. package/lib/pipes/filter-with-highlight/filter-with-highlight.module.d.ts +8 -8
  370. package/lib/pipes/filter-with-highlight/filter-with-highlight.pipe.d.ts +7 -7
  371. package/lib/pipes/filter-with-highlight/index.d.ts +2 -2
  372. package/lib/pipes/index.d.ts +5 -6
  373. package/lib/pipes/language-translate/index.d.ts +2 -2
  374. package/lib/pipes/language-translate/language-translate.module.d.ts +8 -8
  375. package/lib/pipes/language-translate/language-translate.pipe.d.ts +19 -19
  376. package/lib/pipes/sort-translations/index.d.ts +2 -2
  377. package/lib/pipes/sort-translations/sort-translations.module.d.ts +8 -8
  378. package/lib/pipes/sort-translations/sort-translations.pipe.d.ts +20 -20
  379. package/lib/pipes/sort-translations-by-property/index.d.ts +2 -2
  380. package/lib/pipes/sort-translations-by-property/sort-translations-by-property.module.d.ts +8 -8
  381. package/lib/pipes/sort-translations-by-property/sort-translations-by-property.pipe.d.ts +15 -15
  382. package/lib/plausible/index.d.ts +4 -4
  383. package/lib/plausible/models/index.d.ts +1 -1
  384. package/lib/plausible/models/plausible-event.model.d.ts +7 -7
  385. package/lib/plausible/plausible-event.directive.d.ts +11 -11
  386. package/lib/plausible/plausible.helper.d.ts +15 -15
  387. package/lib/plausible/plausible.module.d.ts +8 -8
  388. package/lib/services/alert/alert.service.d.ts +37 -37
  389. package/lib/services/alert/index.d.ts +3 -3
  390. package/lib/services/alert/injection-tokens/alert-configuration.token.d.ts +1 -1
  391. package/lib/services/alert/injection-tokens/index.d.ts +1 -1
  392. package/lib/services/alert/models/alert-configuration.model.d.ts +7 -7
  393. package/lib/services/alert/models/index.d.ts +1 -1
  394. package/lib/services/dom/dom.service.d.ts +7 -7
  395. package/lib/services/dom/index.d.ts +1 -1
  396. package/lib/services/icon/icon.service.d.ts +14 -14
  397. package/lib/services/icon/index.d.ts +1 -1
  398. package/lib/services/index.d.ts +6 -6
  399. package/lib/services/language-translate/index.d.ts +1 -1
  400. package/lib/services/language-translate/language-translate.service.d.ts +10 -10
  401. package/lib/services/notification/index.d.ts +2 -2
  402. package/lib/services/notification/models/index.d.ts +2 -2
  403. package/lib/services/notification/models/notification.model.d.ts +6 -6
  404. package/lib/services/notification/models/operations.enum.d.ts +4 -4
  405. package/lib/services/notification/notification.service.d.ts +15 -15
  406. package/lib/services/system/index.d.ts +1 -1
  407. package/lib/services/system/system.service.d.ts +11 -11
  408. package/lib/status-display/index.d.ts +3 -3
  409. package/lib/status-display/models/index.d.ts +1 -1
  410. package/lib/status-display/models/status-display-config.model.d.ts +9 -9
  411. package/lib/status-display/status-display.component.d.ts +7 -7
  412. package/lib/status-display/status-display.module.d.ts +11 -11
  413. package/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-card/terminology-collection-card.component.d.ts +28 -28
  414. package/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-list.component.d.ts +30 -30
  415. package/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection-dialog/terminology-create-collection-dialog.component.d.ts +32 -32
  416. package/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection.component.d.ts +20 -20
  417. package/lib/terminology/components/terminology-panel/terminology-panel.component.d.ts +30 -30
  418. package/lib/terminology/config/models/index.d.ts +1 -1
  419. package/lib/terminology/config/models/terminology-config.model.d.ts +39 -39
  420. package/lib/terminology/config/services/index.d.ts +1 -1
  421. package/lib/terminology/config/services/terminology-config/terminology-config.service.d.ts +9 -10
  422. package/lib/terminology/enums/combined-collection-tooltip-key.enum.d.ts +4 -4
  423. package/lib/terminology/enums/engine-term-collection-scope.enum.d.ts +5 -5
  424. package/lib/terminology/enums/engine-term-collection-source.enum.d.ts +4 -4
  425. package/lib/terminology/enums/engine-term-collection-status.enum.d.ts +6 -6
  426. package/lib/terminology/enums/engine-term-collection-sub-status.enum.d.ts +12 -12
  427. package/lib/terminology/enums/index.d.ts +6 -6
  428. package/lib/terminology/enums/mt-collection-status.enum.d.ts +8 -8
  429. package/lib/terminology/enums/mt-term-collection-v1-status.enum.d.ts +5 -5
  430. package/lib/terminology/enums/system-metadata-key.enum.d.ts +5 -5
  431. package/lib/terminology/enums/translation-api-version.model.d.ts +4 -4
  432. package/lib/terminology/factories/terminology-api.factory.d.ts +5 -5
  433. package/lib/terminology/factories/terminology-system.factory.d.ts +5 -5
  434. package/lib/terminology/icons/collections-menu.icon.d.ts +1 -1
  435. package/lib/terminology/icons/index.d.ts +1 -1
  436. package/lib/terminology/index.d.ts +9 -9
  437. package/lib/terminology/injection-tokens/terminology-api.token.d.ts +1 -1
  438. package/lib/terminology/injection-tokens/terminology-system.token.d.ts +1 -1
  439. package/lib/terminology/models/active-data.model.d.ts +22 -23
  440. package/lib/terminology/models/add-engine-terms-request-params.model.d.ts +7 -7
  441. package/lib/terminology/models/api-system.model.d.ts +27 -27
  442. package/lib/terminology/models/combined-collection.model.d.ts +92 -92
  443. package/lib/terminology/models/default-term-collection-order-update.model.d.ts +5 -5
  444. package/lib/terminology/models/domain.model.d.ts +9 -9
  445. package/lib/terminology/models/engine-term-collection-access-scope-update.model.d.ts +3 -3
  446. package/lib/terminology/models/engine-term-collection-access-scope.model.d.ts +4 -4
  447. package/lib/terminology/models/engine-term-collection-access-update.model.d.ts +6 -6
  448. package/lib/terminology/models/engine-term-collection-access.model.d.ts +6 -6
  449. package/lib/terminology/models/engine-term-collection-list.model.d.ts +4 -4
  450. package/lib/terminology/models/engine-term-collection.model.d.ts +24 -24
  451. package/lib/terminology/models/index.d.ts +20 -20
  452. package/lib/terminology/models/lang-list-item.model.d.ts +6 -6
  453. package/lib/terminology/models/mt-collection.model.d.ts +17 -17
  454. package/lib/terminology/models/mt-term-collection-v1.model.d.ts +12 -12
  455. package/lib/terminology/models/mt-term-service.model.d.ts +8 -8
  456. package/lib/terminology/models/system-api-service.model.d.ts +5 -5
  457. package/lib/terminology/models/system.model.d.ts +19 -20
  458. package/lib/terminology/models/terminology-engine.model.d.ts +15 -15
  459. package/lib/terminology/models/tld-term-collection-languages.model.d.ts +11 -11
  460. package/lib/terminology/models/tld-term-collection.model.d.ts +46 -46
  461. package/lib/terminology/models/update-engine-terms-request-params.model.d.ts +4 -4
  462. package/lib/terminology/models/vendor.model.d.ts +5 -5
  463. package/lib/terminology/services/engine-term-api/engine-term-api.service.d.ts +19 -19
  464. package/lib/terminology/services/engine-term-api/index.d.ts +1 -1
  465. package/lib/terminology/services/index.d.ts +5 -5
  466. package/lib/terminology/services/system-api-v1/system-api-v1.service.d.ts +15 -15
  467. package/lib/terminology/services/system-api-v2/models/engine-deployment.model.d.ts +9 -9
  468. package/lib/terminology/services/system-api-v2/models/engine-domain-list.model.d.ts +4 -4
  469. package/lib/terminology/services/system-api-v2/models/engine-domain.model.d.ts +5 -5
  470. package/lib/terminology/services/system-api-v2/models/engine-list.model.d.ts +4 -4
  471. package/lib/terminology/services/system-api-v2/models/engine-status.enum.d.ts +9 -9
  472. package/lib/terminology/services/system-api-v2/models/engine-sub-status.enum.d.ts +16 -16
  473. package/lib/terminology/services/system-api-v2/models/engine.model.d.ts +24 -24
  474. package/lib/terminology/services/system-api-v2/models/index.d.ts +8 -8
  475. package/lib/terminology/services/system-api-v2/models/revision.model.d.ts +9 -9
  476. package/lib/terminology/services/system-api-v2/models/worker-status.model.d.ts +12 -12
  477. package/lib/terminology/services/system-api-v2/system-api-v2.service.d.ts +16 -16
  478. package/lib/terminology/services/terminology/terminology.service.d.ts +61 -61
  479. package/lib/terminology/services/terminology-api-v1/terminology-api-v1.service.d.ts +17 -17
  480. package/lib/terminology/services/terminology-api-v2/terminology-api-v2.service.d.ts +18 -18
  481. package/lib/terminology/services/terminology-collection/index.d.ts +1 -1
  482. package/lib/terminology/services/terminology-collection/terminology-collection.service.d.ts +17 -17
  483. package/lib/terminology/terminology.component.d.ts +37 -37
  484. package/lib/terminology/terminology.module.d.ts +29 -29
  485. package/lib/tld-loader/index.d.ts +2 -2
  486. package/lib/tld-loader/tld-loader.component.d.ts +5 -5
  487. package/lib/tld-loader/tld-loader.module.d.ts +7 -7
  488. package/package.json +5 -4
  489. package/public-api.d.ts +20 -20
  490. package/styles/custom/containers.scss +1 -1
  491. package/styles/typography.scss +1 -1
  492. package/esm2022/lib/pipes/object-length/index.mjs +0 -3
  493. package/esm2022/lib/pipes/object-length/object-length.module.mjs +0 -18
  494. package/esm2022/lib/pipes/object-length/object-length.pipe.mjs +0 -22
  495. package/lib/pipes/object-length/index.d.ts +0 -2
  496. package/lib/pipes/object-length/object-length.module.d.ts +0 -8
  497. package/lib/pipes/object-length/object-length.pipe.d.ts +0 -7
@@ -1,4 +1,4 @@
1
- export * from './file-upload.component';
2
- export * from './file-upload.module';
3
- export * from './models';
1
+ export * from './file-upload.component';
2
+ export * from './file-upload.module';
3
+ export * from './models';
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvZmlsZS11cGxvYWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdXBsb2FkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcclxuIl19
@@ -1,8 +1,8 @@
1
- export var FileUploadErrorTypeEnum;
2
- (function (FileUploadErrorTypeEnum) {
3
- FileUploadErrorTypeEnum["FILE_UPLOAD_UNSUPPORTED_FORMAT"] = "FILE_UPLOAD_UNSUPPORTED_FORMAT";
4
- FileUploadErrorTypeEnum["FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER"] = "FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER";
5
- FileUploadErrorTypeEnum["MAX_SIZE"] = "FILE_UPLOAD_MAX_SIZE";
6
- FileUploadErrorTypeEnum["FILE_EMPTY"] = "FILE_UPLOAD_EMPTY";
7
- })(FileUploadErrorTypeEnum || (FileUploadErrorTypeEnum = {}));
1
+ export var FileUploadErrorTypeEnum;
2
+ (function (FileUploadErrorTypeEnum) {
3
+ FileUploadErrorTypeEnum["FILE_UPLOAD_UNSUPPORTED_FORMAT"] = "FILE_UPLOAD_UNSUPPORTED_FORMAT";
4
+ FileUploadErrorTypeEnum["FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER"] = "FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER";
5
+ FileUploadErrorTypeEnum["MAX_SIZE"] = "FILE_UPLOAD_MAX_SIZE";
6
+ FileUploadErrorTypeEnum["FILE_EMPTY"] = "FILE_UPLOAD_EMPTY";
7
+ })(FileUploadErrorTypeEnum || (FileUploadErrorTypeEnum = {}));
8
8
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtZXJyb3ItdHlwZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL2ZpbGUtdXBsb2FkL21vZGVscy9maWxlLXVwbG9hZC1lcnJvci10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksdUJBS1g7QUFMRCxXQUFZLHVCQUF1QjtJQUNqQyw0RkFBaUUsQ0FBQTtJQUNqRSw4R0FBbUYsQ0FBQTtJQUNuRiw0REFBaUMsQ0FBQTtJQUNqQywyREFBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBTFcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUtsQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEZpbGVVcGxvYWRFcnJvclR5cGVFbnVte1xyXG4gIEZJTEVfVVBMT0FEX1VOU1VQUE9SVEVEX0ZPUk1BVCA9IFwiRklMRV9VUExPQURfVU5TVVBQT1JURURfRk9STUFUXCIsXHJcbiAgRklMRV9VUExPQURfVU5TVVBQT1JURURfRk9STUFUX1JFR0lTVEVSID0gXCJGSUxFX1VQTE9BRF9VTlNVUFBPUlRFRF9GT1JNQVRfUkVHSVNURVJcIixcclxuICBNQVhfU0laRSA9IFwiRklMRV9VUExPQURfTUFYX1NJWkVcIixcclxuICBGSUxFX0VNUFRZID0gXCJGSUxFX1VQTE9BRF9FTVBUWVwiXHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtZXJyb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvZmlsZS11cGxvYWQvbW9kZWxzL2ZpbGUtdXBsb2FkLWVycm9yLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3JUeXBlRW51bSB9IGZyb20gXCIuL2ZpbGUtdXBsb2FkLWVycm9yLXR5cGUuZW51bVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkRXJyb3Ige1xyXG4gIGNvZGU6IEZpbGVVcGxvYWRFcnJvclR5cGVFbnVtO1xyXG4gIGVycm9yOiBzdHJpbmc7XHJcbiAgZmlsZU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuIl19
@@ -1,3 +1,3 @@
1
- export * from './file-upload-error-type.enum';
2
- export * from './file-upload-error.model';
1
+ export * from './file-upload-error-type.enum';
2
+ export * from './file-upload-error.model';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvZmlsZS11cGxvYWQvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlsZS11cGxvYWQtZXJyb3ItdHlwZS5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWxlLXVwbG9hZC1lcnJvci5tb2RlbCc7XHJcbiJdfQ==
@@ -1,146 +1,146 @@
1
- import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
- import { FormControl, FormGroup } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@ngx-translate/core";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/material/input";
7
- import * as i4 from "@angular/material/form-field";
8
- import * as i5 from "@angular/flex-layout/flex";
9
- import * as i6 from "@angular/flex-layout/extended";
10
- import * as i7 from "@angular/material/select";
11
- import * as i8 from "@angular/material/core";
12
- import * as i9 from "@angular/forms";
13
- import * as i10 from "@angular/material/tooltip";
14
- import * as i11 from "@angular/material/button";
15
- import * as i12 from "@angular/material/chips";
16
- import * as i13 from "@angular/material/icon";
17
- import * as i14 from "../pipes/sort-translations-by-property/sort-translations-by-property.pipe";
18
- export class FilterBarComponent {
19
- onResize() {
20
- this.checkOverflow();
21
- }
22
- set filterRowVisible(value) {
23
- this._filterRowVisible = value;
24
- this.cdref.detectChanges();
25
- this.checkOverflow();
26
- }
27
- // getter for cleaner template html
28
- get filterFormGroupValue() {
29
- return this.filterFormGroup.value;
30
- }
31
- // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures
32
- get filterRowVisible() { return this._filterRowVisible; }
33
- get inputText() {
34
- return this._inputText;
35
- }
36
- get showSearch() {
37
- return !this.settings?.hideSearch;
38
- }
39
- // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures
40
- set inputText(value) {
41
- this._inputText = value;
42
- this.filters.input = this._inputText;
43
- this.emitFilters();
44
- }
45
- constructor(cdref, translate) {
46
- this.cdref = cdref;
47
- this.translate = translate;
48
- this.filterBarChange = new EventEmitter();
49
- this._inputText = "";
50
- /** To hide filters, but leave chips visible */
51
- this.inputFormControlName = "input";
52
- this.filterFormGroup = new FormGroup({});
53
- this.form = new FormGroup({
54
- [this.inputFormControlName]: new FormControl(""),
55
- filters: this.filterFormGroup
56
- });
57
- this.filters = {
58
- filters: {},
59
- input: ""
60
- };
61
- this.filterOverflow = false;
62
- this.activeFilterIndex = 0;
63
- // when to show filter by name or id on mobile
64
- this.searchIndex = -1;
65
- }
66
- ngOnInit() {
67
- this.settings.filters?.forEach((field) => {
68
- this.filterFormGroup.addControl(field.fieldName, new FormControl([]));
69
- });
70
- this.subscribeToFormValueChanges();
71
- this.searchTooltip = this.settings?.searchTooltip ?? 'FILTER_BAR.SEARCH_TOOLTIP';
72
- this.searchTitle = this.settings?.searchTitle ?? 'FILTER_BAR.SEARCH';
73
- this.prefixIcon = this.settings?.prefixIcon ?? "filter_alt";
74
- this.suffixIcon = this.settings?.suffixIcon ?? "question_mark";
75
- this.showSuffixIcon = this.settings?.showSuffixIcon ?? true;
76
- }
77
- ngAfterViewInit() {
78
- this.checkOverflow();
79
- this.cdref.detectChanges();
80
- }
81
- ngOnDestroy() {
82
- this.formChangesSubscription.unsubscribe();
83
- }
84
- emitFilters() {
85
- this.filterBarChange.next(this.filters);
86
- }
87
- switchRight() {
88
- if (this.settings?.filters && this.settings?.filters.length === this.activeFilterIndex + 1) {
89
- return;
90
- }
91
- this.activeFilterIndex += 1;
92
- }
93
- switchLeft() {
94
- if (this.activeFilterIndex === this.searchIndex) {
95
- return;
96
- }
97
- this.activeFilterIndex -= 1;
98
- }
99
- removeFilter(key, ix) {
100
- const control = this.filterFormGroup.get(key);
101
- if (!control) {
102
- return;
103
- }
104
- const newArray = control.value;
105
- newArray.splice(ix, 1);
106
- control.setValue(newArray);
107
- }
108
- checkOverflow() {
109
- if (this.filterWrapper) {
110
- this.filterOverflow = this.filterWrapper.nativeElement.clientWidth < this.filterWrapper.nativeElement.scrollWidth;
111
- }
112
- }
113
- subscribeToFormValueChanges() {
114
- this.formChangesSubscription = this.form.valueChanges.subscribe(() => {
115
- this.filters = {
116
- input: this.form.value.input ?? "",
117
- filters: {}
118
- };
119
- for (const filterKey in this.form.value.filters) {
120
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
- const filter = this.form.value.filters[filterKey];
122
- this.filters.filters[filterKey] = filter.map((item) => item.value);
123
- }
124
- this.emitFilters();
125
- });
126
- }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterBarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilterBarComponent, selector: "tld-filter-bar", inputs: { settings: "settings", filterRowVisible: "filterRowVisible" }, outputs: { filterBarChange: "filterBarChange" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "filterWrapper", first: true, predicate: ["filterWrapper"], descendants: true }], ngImport: i0, template: "<div class=\"filter-row\" *ngIf=\"filterRowVisible\">\r\n <div fxLayout=\"row\" class=\"filter-wrapper\" #filterWrapper [formGroup]=\"form\">\r\n <mat-form-field fxFlex *ngIf=\"showSearch && !filterOverflow || activeFilterIndex === searchIndex\" class=\"filter-bar-search-input\">\r\n <span matPrefix class=\"material-icons-outlined\">\r\n {{prefixIcon}}\r\n </span>\r\n <span matSuffix class=\"material-icons-outlined\" *ngIf=\"showSuffixIcon\" [matTooltip]=\"searchTooltip | translate\">\r\n {{suffixIcon}}\r\n </span>\r\n <input class=\"search-input\" matInput [placeholder]=\"searchTitle | translate\"\r\n [formControlName]=\"inputFormControlName\">\r\n </mat-form-field>\r\n <ng-container [formGroup]=\"filterFormGroup\">\r\n\r\n <mat-form-field [ngClass]=\"{'hidden': filterOverflow && activeFilterIndex !== i, 'engine-filter': !filterOverflow}\" *ngFor=\"let filter of settings?.filters; let i = index\">\r\n <mat-label>{{filter.title | translate}}</mat-label>\r\n <mat-select multiple [formControlName]=\"filter.fieldName\">\r\n <ng-container *ngIf=\"filter.values.length\">\r\n <mat-option *ngFor=\"let value of filter.values | sortTranslationsByProperty:'key'\" [value]=\"value\">\r\n {{value.key | translate : {default: value.value | titlecase } }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n <button mat-icon-button (click)=\"switchLeft()\" *ngIf=\"filterOverflow\">\r\n <span class=\"material-icons-outlined\">\r\n arrow_back_ios\r\n </span>\r\n </button>\r\n <button mat-icon-button *ngIf=\"filterOverflow\" (click)=\"switchRight()\">\r\n <span class=\"material-icons-outlined\">\r\n arrow_forward_ios\r\n </span>\r\n </button>\r\n</div>\r\n<mat-chip-listbox>\r\n <div *ngFor=\"let filter of settings?.filters\">\r\n <mat-chip-option *ngFor=\"let filterValue of filterFormGroupValue[filter.fieldName]; let ix=index\"\r\n (removed)=\"removeFilter(filter.fieldName, ix)\" class=\"text-s\">\r\n <button matChipRemove>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <span class=\"chip-filter-title\">{{filter.title | translate}}:</span>\r\n <span class=\"chip-value semi-bold\"> {{filterValue.key | translate : {default: filterValue.value | titlecase }\r\n }}</span>\r\n </mat-chip-option>\r\n </div>\r\n</mat-chip-listbox>\r\n", styles: [":host{display:inline-block}.filter-row{display:flex;background-color:var(--base-95);min-height:40px;min-width:100%;border-radius:.5rem;padding:1.25rem 1.25rem 0;max-width:100%;align-items:baseline;margin-bottom:.5rem}.search-input{background-color:unset;border:none}.engine-filter{margin-left:1rem}.filter-bar-search-input{width:100%}.filter-bar-search-input::ng-deep .material-icons-outlined{vertical-align:bottom}.material-icons-outlined{color:var(--base-40)}.filter-wrapper{max-width:100%;overflow-x:hidden;overflow-y:hidden;display:flex;flex:1}.mat-mdc-chip.mat-mdc-standard-chip{background-color:var(--base-95);padding-left:.5em;padding-right:.75em;border:.5px solid var(--base-70)}.mat-mdc-chip.mat-mdc-standard-chip span{display:inline-block}.mat-mdc-chip.mat-mdc-standard-chip .chip-filter-title+.chip-value{margin-left:.25rem}.chip-filter-title{margin-left:.5em}.hidden{display:none}:host ::ng-deep .mat-mdc-form-field-focus-overlay,:host ::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--base-95)}:host ::ng-deep .mat-mdc-chip-graphic{display:none}:host ::ng-deep .mat-mdc-chip-remove{color:var(--base-40)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MatChipListbox, selector: "mat-chip-listbox", inputs: ["tabIndex", "multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i12.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i12.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i14.SortTranslationsByPropertyPipe, name: "sortTranslationsByProperty" }] }); }
129
- }
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterBarComponent, decorators: [{
131
- type: Component,
132
- args: [{ selector: 'tld-filter-bar', template: "<div class=\"filter-row\" *ngIf=\"filterRowVisible\">\r\n <div fxLayout=\"row\" class=\"filter-wrapper\" #filterWrapper [formGroup]=\"form\">\r\n <mat-form-field fxFlex *ngIf=\"showSearch && !filterOverflow || activeFilterIndex === searchIndex\" class=\"filter-bar-search-input\">\r\n <span matPrefix class=\"material-icons-outlined\">\r\n {{prefixIcon}}\r\n </span>\r\n <span matSuffix class=\"material-icons-outlined\" *ngIf=\"showSuffixIcon\" [matTooltip]=\"searchTooltip | translate\">\r\n {{suffixIcon}}\r\n </span>\r\n <input class=\"search-input\" matInput [placeholder]=\"searchTitle | translate\"\r\n [formControlName]=\"inputFormControlName\">\r\n </mat-form-field>\r\n <ng-container [formGroup]=\"filterFormGroup\">\r\n\r\n <mat-form-field [ngClass]=\"{'hidden': filterOverflow && activeFilterIndex !== i, 'engine-filter': !filterOverflow}\" *ngFor=\"let filter of settings?.filters; let i = index\">\r\n <mat-label>{{filter.title | translate}}</mat-label>\r\n <mat-select multiple [formControlName]=\"filter.fieldName\">\r\n <ng-container *ngIf=\"filter.values.length\">\r\n <mat-option *ngFor=\"let value of filter.values | sortTranslationsByProperty:'key'\" [value]=\"value\">\r\n {{value.key | translate : {default: value.value | titlecase } }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n <button mat-icon-button (click)=\"switchLeft()\" *ngIf=\"filterOverflow\">\r\n <span class=\"material-icons-outlined\">\r\n arrow_back_ios\r\n </span>\r\n </button>\r\n <button mat-icon-button *ngIf=\"filterOverflow\" (click)=\"switchRight()\">\r\n <span class=\"material-icons-outlined\">\r\n arrow_forward_ios\r\n </span>\r\n </button>\r\n</div>\r\n<mat-chip-listbox>\r\n <div *ngFor=\"let filter of settings?.filters\">\r\n <mat-chip-option *ngFor=\"let filterValue of filterFormGroupValue[filter.fieldName]; let ix=index\"\r\n (removed)=\"removeFilter(filter.fieldName, ix)\" class=\"text-s\">\r\n <button matChipRemove>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <span class=\"chip-filter-title\">{{filter.title | translate}}:</span>\r\n <span class=\"chip-value semi-bold\"> {{filterValue.key | translate : {default: filterValue.value | titlecase }\r\n }}</span>\r\n </mat-chip-option>\r\n </div>\r\n</mat-chip-listbox>\r\n", styles: [":host{display:inline-block}.filter-row{display:flex;background-color:var(--base-95);min-height:40px;min-width:100%;border-radius:.5rem;padding:1.25rem 1.25rem 0;max-width:100%;align-items:baseline;margin-bottom:.5rem}.search-input{background-color:unset;border:none}.engine-filter{margin-left:1rem}.filter-bar-search-input{width:100%}.filter-bar-search-input::ng-deep .material-icons-outlined{vertical-align:bottom}.material-icons-outlined{color:var(--base-40)}.filter-wrapper{max-width:100%;overflow-x:hidden;overflow-y:hidden;display:flex;flex:1}.mat-mdc-chip.mat-mdc-standard-chip{background-color:var(--base-95);padding-left:.5em;padding-right:.75em;border:.5px solid var(--base-70)}.mat-mdc-chip.mat-mdc-standard-chip span{display:inline-block}.mat-mdc-chip.mat-mdc-standard-chip .chip-filter-title+.chip-value{margin-left:.25rem}.chip-filter-title{margin-left:.5em}.hidden{display:none}:host ::ng-deep .mat-mdc-form-field-focus-overlay,:host ::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--base-95)}:host ::ng-deep .mat-mdc-chip-graphic{display:none}:host ::ng-deep .mat-mdc-chip-remove{color:var(--base-40)!important}\n"] }]
133
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }]; }, propDecorators: { filterWrapper: [{
134
- type: ViewChild,
135
- args: ["filterWrapper"]
136
- }], onResize: [{
137
- type: HostListener,
138
- args: ['window:resize', []]
139
- }], settings: [{
140
- type: Input
141
- }], filterRowVisible: [{
142
- type: Input
143
- }], filterBarChange: [{
144
- type: Output
145
- }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvZmlsdGVyLWJhci9maWx0ZXItYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9maWx0ZXItYmFyL2ZpbHRlci1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakssT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWF4RCxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUdELElBQWEsZ0JBQWdCLENBQUMsS0FBYztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFnQ0QsbUNBQW1DO0lBQ25DLElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUNELDJFQUEyRTtJQUMzRSxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUN6RCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksVUFBVTtRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxF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LE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7YUFDbkU7WUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOytHQTFJVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix1VkNkL0IsKzlFQWtEQTs7NEZEcENhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFFRSxnQkFBZ0I7dUlBS0UsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUUxQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUU7Z0JBS3hCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ08sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQU1JLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmlsdGVyQmFyRmlsdGVySXRlbSB9IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgRmlsdGVyQmFyQ2hhbmdlRXZlbnQgfSBmcm9tICcuL21vZGVscy9maWx0ZXItYmFyLWNoYW5nZS1ldmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlckJhclNldHRpbmdzIH0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyLWJhci1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICd0bGQtZmlsdGVyLWJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci1iYXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoXCJmaWx0ZXJXcmFwcGVyXCIpIGZpbHRlcldyYXBwZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbXSlcclxuICBvblJlc2l6ZSgpIHtcclxuICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0dGluZ3MhOiBGaWx0ZXJCYXJTZXR0aW5ncztcclxuICBASW5wdXQoKSBzZXQgZmlsdGVyUm93VmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZmlsdGVyUm93VmlzaWJsZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmNoZWNrT3ZlcmZsb3coKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBmaWx0ZXJCYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGaWx0ZXJCYXJDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckJhckNoYW5nZUV2ZW50PigpO1xyXG5cclxuICBwcml2YXRlIF9pbnB1dFRleHQgPSBcIlwiO1xyXG4gIHByaXZhdGUgX2ZpbHRlclJvd1Zpc2libGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgZm9ybUNoYW5nZXNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKiBUbyBoaWRlIGZpbHRlcnMsIGJ1dCBsZWF2ZSBjaGlwcyB2aXNpYmxlICovXHJcbiAgcmVhZG9ubHkgaW5wdXRGb3JtQ29udHJvbE5hbWUgPSBcImlucHV0XCI7XHJcbiAgcmVhZG9ubHkgZmlsdGVyRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgW3RoaXMuaW5wdXRGb3JtQ29udHJvbE5hbWVdOiBuZXcgRm9ybUNvbnRyb2woXCJcIiksXHJcbiAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlckZvcm1Hcm91cFxyXG4gIH0pO1xyXG5cclxuICBzZWFyY2hUaXRsZSE6IHN0cmluZztcclxuICBzZWFyY2hUb29sdGlwITogc3RyaW5nO1xyXG4gIHN1ZmZpeEljb24hOiBzdHJpbmc7XHJcbiAgcHJlZml4SWNvbiE6IHN0cmluZztcclxuICBzaG93U3VmZml4SWNvbiE6IGJvb2xlYW47XHJcbiAgZmlsdGVyczogRmlsdGVyQmFyQ2hhbmdlRXZlbnQgPSB7XHJcbiAgICBmaWx0ZXJzOiB7fSxcclxuICAgIGlucHV0OiBcIlwiXHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyT3ZlcmZsb3cgPSBmYWxzZTtcclxuICBhY3RpdmVGaWx0ZXJJbmRleCA9IDA7XHJcblxyXG4gIC8vIHdoZW4gdG8gc2hvdyBmaWx0ZXIgYnkgbmFtZSBvciBpZCBvbiBtb2JpbGVcclxuICBzZWFyY2hJbmRleCA9IC0xO1xyXG5cclxuICAvLyBnZXR0ZXIgZm9yIGNsZWFuZXIgdGVtcGxhdGUgaHRtbFxyXG4gIGdldCBmaWx0ZXJGb3JtR3JvdXBWYWx1ZSgpOiB7IFtrZXk6IHN0cmluZ106IEZpbHRlckJhckZpbHRlckl0ZW1bXSB9IHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlckZvcm1Hcm91cC52YWx1ZTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9hZGphY2VudC1vdmVybG9hZC1zaWduYXR1cmVzXHJcbiAgZ2V0IGZpbHRlclJvd1Zpc2libGUoKSB7IHJldHVybiB0aGlzLl9maWx0ZXJSb3dWaXNpYmxlOyB9XHJcbiAgZ2V0IGlucHV0VGV4dCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnB1dFRleHQ7XHJcbiAgfVxyXG4gIGdldCBzaG93U2VhcmNoKCkge1xyXG4gICAgcmV0dXJuICF0aGlzLnNldHRpbmdzPy5oaWRlU2VhcmNoO1xyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9hZGphY2VudC1vdmVybG9hZC1zaWduYXR1cmVzXHJcbiAgc2V0IGlucHV0VGV4dCh2YWx1ZSkge1xyXG4gICAgdGhpcy5faW5wdXRUZXh0ID0gdmFsdWU7XHJcbiAgICB0aGlzLmZpbHRlcnMuaW5wdXQgPSB0aGlzLl9pbnB1dFRleHQ7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0dGluZ3MuZmlsdGVycz8uZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuYWRkQ29udHJvbChmaWVsZC5maWVsZE5hbWUsIG5ldyBGb3JtQ29udHJvbChbXSkpO1xyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnN1YnNjcmliZVRvRm9ybVZhbHVlQ2hhbmdlcygpO1xyXG4gICAgdGhpcy5zZWFyY2hUb29sdGlwID0gdGhpcy5zZXR0aW5ncz8uc2VhcmNoVG9vbHRpcCA/PyAnRklMVEVSX0JBUi5TRUFSQ0hfVE9PTFRJUCc7XHJcbiAgICB0aGlzLnNlYXJjaFRpdGxlID0gdGhpcy5zZXR0aW5ncz8uc2VhcmNoVGl0bGUgPz8gJ0ZJTFRFUl9CQVIuU0VBUkNIJztcclxuICAgIHRoaXMucHJlZml4SWNvbiA9IHRoaXMuc2V0dGluZ3M/LnByZWZpeEljb24gPz8gXCJmaWx0ZXJfYWx0XCI7XHJcbiAgICB0aGlzLnN1ZmZpeEljb24gPSB0aGlzLnNldHRpbmdzPy5zdWZmaXhJY29uID8/IFwicXVlc3Rpb25fbWFya1wiO1xyXG4gICAgdGhpcy5zaG93U3VmZml4SWNvbiA9IHRoaXMuc2V0dGluZ3M/LnNob3dTdWZmaXhJY29uID8/IHRydWU7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoZWNrT3ZlcmZsb3coKTtcclxuICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1DaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBlbWl0RmlsdGVycygpIHtcclxuICAgIHRoaXMuZmlsdGVyQmFyQ2hhbmdlLm5leHQodGhpcy5maWx0ZXJzKTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFJpZ2h0KCkge1xyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3M/LmZpbHRlcnMgJiYgdGhpcy5zZXR0aW5ncz8uZmlsdGVycy5sZW5ndGggPT09IHRoaXMuYWN0aXZlRmlsdGVySW5kZXggKyAxKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVySW5kZXggKz0gMTtcclxuICB9XHJcblxyXG4gIHN3aXRjaExlZnQoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXJJbmRleCA9PT0gdGhpcy5zZWFyY2hJbmRleCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckluZGV4IC09IDE7XHJcbiAgfVxyXG5cclxuICByZW1vdmVGaWx0ZXIoa2V5OiBzdHJpbmcsIGl4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoa2V5KTtcclxuXHJcbiAgICBpZiAoIWNvbnRyb2wpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0FycmF5ID0gY29udHJvbC52YWx1ZSBhcyBbXTtcclxuICAgIG5ld0FycmF5LnNwbGljZShpeCwgMSk7XHJcbiAgICBjb250cm9sLnNldFZhbHVlKG5ld0FycmF5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tPdmVyZmxvdygpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlcldyYXBwZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXJPdmVyZmxvdyA9IHRoaXMuZmlsdGVyV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIDwgdGhpcy5maWx0ZXJXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvRm9ybVZhbHVlQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuZm9ybUNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHtcclxuICAgICAgICBpbnB1dDogdGhpcy5mb3JtLnZhbHVlLmlucHV0ID8/IFwiXCIsXHJcbiAgICAgICAgZmlsdGVyczoge31cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgZmlsdGVyS2V5IGluIHRoaXMuZm9ybS52YWx1ZS5maWx0ZXJzKSB7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjb25zdCBmaWx0ZXI6IEZpbHRlckJhckZpbHRlckl0ZW1bXSA9ICh0aGlzLmZvcm0udmFsdWUuZmlsdGVycyBhcyBhbnkpW2ZpbHRlcktleV0gYXMgRmlsdGVyQmFyRmlsdGVySXRlbVtdO1xyXG4gICAgICAgIHRoaXMuZmlsdGVycy5maWx0ZXJzW2ZpbHRlcktleV0gPSBmaWx0ZXIubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1pdEZpbHRlcnMoKTtcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmaWx0ZXItcm93XCIgKm5nSWY9XCJmaWx0ZXJSb3dWaXNpYmxlXCI+XHJcbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGNsYXNzPVwiZmlsdGVyLXdyYXBwZXJcIiAjZmlsdGVyV3JhcHBlciBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBmeEZsZXggKm5nSWY9XCJzaG93U2VhcmNoICYmICFmaWx0ZXJPdmVyZmxvdyB8fCBhY3RpdmVGaWx0ZXJJbmRleCA9PT0gc2VhcmNoSW5kZXhcIiBjbGFzcz1cImZpbHRlci1iYXItc2VhcmNoLWlucHV0XCI+XHJcbiAgICAgIDxzcGFuIG1hdFByZWZpeCBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XHJcbiAgICAgICAge3twcmVmaXhJY29ufX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8c3BhbiBtYXRTdWZmaXggY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiICpuZ0lmPVwic2hvd1N1ZmZpeEljb25cIiBbbWF0VG9vbHRpcF09XCJzZWFyY2hUb29sdGlwIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAge3tzdWZmaXhJY29ufX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwic2VhcmNoVGl0bGUgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaW5wdXRGb3JtQ29udHJvbE5hbWVcIj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybUdyb3VwXCI+XHJcblxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgW25nQ2xhc3NdPVwieydoaWRkZW4nOiBmaWx0ZXJPdmVyZmxvdyAmJiBhY3RpdmVGaWx0ZXJJbmRleCAhPT0gaSwgJ2VuZ2luZS1maWx0ZXInOiAhZmlsdGVyT3ZlcmZsb3d9XCIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBzZXR0aW5ncz8uZmlsdGVyczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tmaWx0ZXIudGl0bGUgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IG11bHRpcGxlIFtmb3JtQ29udHJvbE5hbWVdPVwiZmlsdGVyLmZpZWxkTmFtZVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci52YWx1ZXMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBmaWx0ZXIudmFsdWVzIHwgc29ydFRyYW5zbGF0aW9uc0J5UHJvcGVydHk6J2tleSdcIiBbdmFsdWVdPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICB7e3ZhbHVlLmtleSB8IHRyYW5zbGF0ZSA6IHtkZWZhdWx0OiB2YWx1ZS52YWx1ZSB8IHRpdGxlY2FzZSB9IH19XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzd2l0Y2hMZWZ0KClcIiAqbmdJZj1cImZpbHRlck92ZXJmbG93XCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XHJcbiAgICAgIGFycm93X2JhY2tfaW9zXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJmaWx0ZXJPdmVyZmxvd1wiIChjbGljayk9XCJzd2l0Y2hSaWdodCgpXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XHJcbiAgICAgIGFycm93X2ZvcndhcmRfaW9zXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG48bWF0LWNoaXAtbGlzdGJveD5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2Ygc2V0dGluZ3M/LmZpbHRlcnNcIj5cclxuICAgIDxtYXQtY2hpcC1vcHRpb24gKm5nRm9yPVwibGV0IGZpbHRlclZhbHVlIG9mIGZpbHRlckZvcm1Hcm91cFZhbHVlW2ZpbHRlci5maWVsZE5hbWVdOyBsZXQgaXg9aW5kZXhcIlxyXG4gICAgICAocmVtb3ZlZCk9XCJyZW1vdmVGaWx0ZXIoZmlsdGVyLmZpZWxkTmFtZSwgaXgpXCIgY2xhc3M9XCJ0ZXh0LXNcIj5cclxuICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlPlxyXG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImNoaXAtZmlsdGVyLXRpdGxlXCI+e3tmaWx0ZXIudGl0bGUgfCB0cmFuc2xhdGV9fTo8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcC12YWx1ZSBzZW1pLWJvbGRcIj4ge3tmaWx0ZXJWYWx1ZS5rZXkgfCB0cmFuc2xhdGUgOiB7ZGVmYXVsdDogZmlsdGVyVmFsdWUudmFsdWUgfCB0aXRsZWNhc2UgfVxyXG4gICAgICAgIH19PC9zcGFuPlxyXG4gICAgPC9tYXQtY2hpcC1vcHRpb24+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LWNoaXAtbGlzdGJveD5cclxuIl19
1
+ import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ngx-translate/core";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/material/input";
7
+ import * as i4 from "@angular/material/form-field";
8
+ import * as i5 from "@ngbracket/ngx-layout/flex";
9
+ import * as i6 from "@ngbracket/ngx-layout/extended";
10
+ import * as i7 from "@angular/material/select";
11
+ import * as i8 from "@angular/material/core";
12
+ import * as i9 from "@angular/forms";
13
+ import * as i10 from "@angular/material/tooltip";
14
+ import * as i11 from "@angular/material/button";
15
+ import * as i12 from "@angular/material/chips";
16
+ import * as i13 from "@angular/material/icon";
17
+ import * as i14 from "../pipes/sort-translations-by-property/sort-translations-by-property.pipe";
18
+ export class FilterBarComponent {
19
+ onResize() {
20
+ this.checkOverflow();
21
+ }
22
+ set filterRowVisible(value) {
23
+ this._filterRowVisible = value;
24
+ this.cdref.detectChanges();
25
+ this.checkOverflow();
26
+ }
27
+ // getter for cleaner template html
28
+ get filterFormGroupValue() {
29
+ return this.filterFormGroup.value;
30
+ }
31
+ // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures
32
+ get filterRowVisible() { return this._filterRowVisible; }
33
+ get inputText() {
34
+ return this._inputText;
35
+ }
36
+ get showSearch() {
37
+ return !this.settings?.hideSearch;
38
+ }
39
+ // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures
40
+ set inputText(value) {
41
+ this._inputText = value;
42
+ this.filters.input = this._inputText;
43
+ this.emitFilters();
44
+ }
45
+ constructor(cdref, translate) {
46
+ this.cdref = cdref;
47
+ this.translate = translate;
48
+ this.filterBarChange = new EventEmitter();
49
+ this._inputText = "";
50
+ /** To hide filters, but leave chips visible */
51
+ this.inputFormControlName = "input";
52
+ this.filterFormGroup = new FormGroup({});
53
+ this.form = new FormGroup({
54
+ [this.inputFormControlName]: new FormControl(""),
55
+ filters: this.filterFormGroup
56
+ });
57
+ this.filters = {
58
+ filters: {},
59
+ input: ""
60
+ };
61
+ this.filterOverflow = false;
62
+ this.activeFilterIndex = 0;
63
+ // when to show filter by name or id on mobile
64
+ this.searchIndex = -1;
65
+ }
66
+ ngOnInit() {
67
+ this.settings.filters?.forEach((field) => {
68
+ this.filterFormGroup.addControl(field.fieldName, new FormControl([]));
69
+ });
70
+ this.subscribeToFormValueChanges();
71
+ this.searchTooltip = this.settings?.searchTooltip ?? 'FILTER_BAR.SEARCH_TOOLTIP';
72
+ this.searchTitle = this.settings?.searchTitle ?? 'FILTER_BAR.SEARCH';
73
+ this.prefixIcon = this.settings?.prefixIcon ?? "filter_alt";
74
+ this.suffixIcon = this.settings?.suffixIcon ?? "question_mark";
75
+ this.showSuffixIcon = this.settings?.showSuffixIcon ?? true;
76
+ }
77
+ ngAfterViewInit() {
78
+ this.checkOverflow();
79
+ this.cdref.detectChanges();
80
+ }
81
+ ngOnDestroy() {
82
+ this.formChangesSubscription.unsubscribe();
83
+ }
84
+ emitFilters() {
85
+ this.filterBarChange.next(this.filters);
86
+ }
87
+ switchRight() {
88
+ if (this.settings?.filters && this.settings?.filters.length === this.activeFilterIndex + 1) {
89
+ return;
90
+ }
91
+ this.activeFilterIndex += 1;
92
+ }
93
+ switchLeft() {
94
+ if (this.activeFilterIndex === this.searchIndex) {
95
+ return;
96
+ }
97
+ this.activeFilterIndex -= 1;
98
+ }
99
+ removeFilter(key, ix) {
100
+ const control = this.filterFormGroup.get(key);
101
+ if (!control) {
102
+ return;
103
+ }
104
+ const newArray = control.value;
105
+ newArray.splice(ix, 1);
106
+ control.setValue(newArray);
107
+ }
108
+ checkOverflow() {
109
+ if (this.filterWrapper) {
110
+ this.filterOverflow = this.filterWrapper.nativeElement.clientWidth < this.filterWrapper.nativeElement.scrollWidth;
111
+ }
112
+ }
113
+ subscribeToFormValueChanges() {
114
+ this.formChangesSubscription = this.form.valueChanges.subscribe(() => {
115
+ this.filters = {
116
+ input: this.form.value.input ?? "",
117
+ filters: {}
118
+ };
119
+ for (const filterKey in this.form.value.filters) {
120
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
+ const filter = this.form.value.filters[filterKey];
122
+ this.filters.filters[filterKey] = filter.map((item) => item.value);
123
+ }
124
+ this.emitFilters();
125
+ });
126
+ }
127
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FilterBarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
128
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: FilterBarComponent, selector: "tld-filter-bar", inputs: { settings: "settings", filterRowVisible: "filterRowVisible" }, outputs: { filterBarChange: "filterBarChange" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "filterWrapper", first: true, predicate: ["filterWrapper"], descendants: true }], ngImport: i0, template: "<div class=\"filter-row\" *ngIf=\"filterRowVisible\">\r\n <div fxLayout=\"row\" class=\"filter-wrapper\" #filterWrapper [formGroup]=\"form\">\r\n <mat-form-field fxFlex *ngIf=\"showSearch && !filterOverflow || activeFilterIndex === searchIndex\" class=\"filter-bar-search-input\">\r\n <span matPrefix class=\"material-icons-outlined\">\r\n {{prefixIcon}}\r\n </span>\r\n <span matSuffix class=\"material-icons-outlined\" *ngIf=\"showSuffixIcon\" [matTooltip]=\"searchTooltip | translate\">\r\n {{suffixIcon}}\r\n </span>\r\n <input class=\"search-input\" matInput [placeholder]=\"searchTitle | translate\"\r\n [formControlName]=\"inputFormControlName\">\r\n </mat-form-field>\r\n <ng-container [formGroup]=\"filterFormGroup\">\r\n\r\n <mat-form-field [ngClass]=\"{'hidden': filterOverflow && activeFilterIndex !== i, 'engine-filter': !filterOverflow}\" *ngFor=\"let filter of settings?.filters; let i = index\">\r\n <mat-label>{{filter.title | translate}}</mat-label>\r\n <mat-select multiple [formControlName]=\"filter.fieldName\">\r\n <ng-container *ngIf=\"filter.values.length\">\r\n <mat-option *ngFor=\"let value of filter.values | sortTranslationsByProperty:'key'\" [value]=\"value\">\r\n {{value.key | translate : {default: value.value | titlecase } }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n <button mat-icon-button (click)=\"switchLeft()\" *ngIf=\"filterOverflow\">\r\n <span class=\"material-icons-outlined\">\r\n arrow_back_ios\r\n </span>\r\n </button>\r\n <button mat-icon-button *ngIf=\"filterOverflow\" (click)=\"switchRight()\">\r\n <span class=\"material-icons-outlined\">\r\n arrow_forward_ios\r\n </span>\r\n </button>\r\n</div>\r\n<mat-chip-listbox>\r\n <div *ngFor=\"let filter of settings?.filters\">\r\n <mat-chip-option *ngFor=\"let filterValue of filterFormGroupValue[filter.fieldName]; let ix=index\"\r\n (removed)=\"removeFilter(filter.fieldName, ix)\" class=\"text-s\">\r\n <button matChipRemove>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <span class=\"chip-filter-title\">{{filter.title | translate}}:</span>\r\n <span class=\"chip-value semi-bold\"> {{filterValue.key | translate : {default: filterValue.value | titlecase }\r\n }}</span>\r\n </mat-chip-option>\r\n </div>\r\n</mat-chip-listbox>\r\n", styles: [":host{display:inline-block}.filter-row{display:flex;background-color:var(--base-95);min-height:40px;min-width:100%;border-radius:.5rem;padding:1.25rem 1.25rem 0;max-width:100%;align-items:baseline;margin-bottom:.5rem}.search-input{background-color:unset;border:none}.engine-filter{margin-left:1rem}.filter-bar-search-input{width:100%}.filter-bar-search-input::ng-deep .material-icons-outlined{vertical-align:bottom}.material-icons-outlined{color:var(--base-40)}.filter-wrapper{max-width:100%;overflow-x:hidden;overflow-y:hidden;display:flex;flex:1}.mat-mdc-chip.mat-mdc-standard-chip{background-color:var(--base-95);padding-left:.5em;padding-right:.75em;border:.5px solid var(--base-70)}.mat-mdc-chip.mat-mdc-standard-chip span{display:inline-block}.mat-mdc-chip.mat-mdc-standard-chip .chip-filter-title+.chip-value{margin-left:.25rem}.chip-filter-title{margin-left:.5em}.hidden{display:none}:host ::ng-deep .mat-mdc-form-field-focus-overlay,:host ::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--base-95)}:host ::ng-deep .mat-mdc-chip-graphic{display:none}:host ::ng-deep .mat-mdc-chip-remove{color:var(--base-40)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i12.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i12.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i12.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i14.SortTranslationsByPropertyPipe, name: "sortTranslationsByProperty" }] }); }
129
+ }
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FilterBarComponent, decorators: [{
131
+ type: Component,
132
+ args: [{ selector: 'tld-filter-bar', template: "<div class=\"filter-row\" *ngIf=\"filterRowVisible\">\r\n <div fxLayout=\"row\" class=\"filter-wrapper\" #filterWrapper [formGroup]=\"form\">\r\n <mat-form-field fxFlex *ngIf=\"showSearch && !filterOverflow || activeFilterIndex === searchIndex\" class=\"filter-bar-search-input\">\r\n <span matPrefix class=\"material-icons-outlined\">\r\n {{prefixIcon}}\r\n </span>\r\n <span matSuffix class=\"material-icons-outlined\" *ngIf=\"showSuffixIcon\" [matTooltip]=\"searchTooltip | translate\">\r\n {{suffixIcon}}\r\n </span>\r\n <input class=\"search-input\" matInput [placeholder]=\"searchTitle | translate\"\r\n [formControlName]=\"inputFormControlName\">\r\n </mat-form-field>\r\n <ng-container [formGroup]=\"filterFormGroup\">\r\n\r\n <mat-form-field [ngClass]=\"{'hidden': filterOverflow && activeFilterIndex !== i, 'engine-filter': !filterOverflow}\" *ngFor=\"let filter of settings?.filters; let i = index\">\r\n <mat-label>{{filter.title | translate}}</mat-label>\r\n <mat-select multiple [formControlName]=\"filter.fieldName\">\r\n <ng-container *ngIf=\"filter.values.length\">\r\n <mat-option *ngFor=\"let value of filter.values | sortTranslationsByProperty:'key'\" [value]=\"value\">\r\n {{value.key | translate : {default: value.value | titlecase } }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n <button mat-icon-button (click)=\"switchLeft()\" *ngIf=\"filterOverflow\">\r\n <span class=\"material-icons-outlined\">\r\n arrow_back_ios\r\n </span>\r\n </button>\r\n <button mat-icon-button *ngIf=\"filterOverflow\" (click)=\"switchRight()\">\r\n <span class=\"material-icons-outlined\">\r\n arrow_forward_ios\r\n </span>\r\n </button>\r\n</div>\r\n<mat-chip-listbox>\r\n <div *ngFor=\"let filter of settings?.filters\">\r\n <mat-chip-option *ngFor=\"let filterValue of filterFormGroupValue[filter.fieldName]; let ix=index\"\r\n (removed)=\"removeFilter(filter.fieldName, ix)\" class=\"text-s\">\r\n <button matChipRemove>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <span class=\"chip-filter-title\">{{filter.title | translate}}:</span>\r\n <span class=\"chip-value semi-bold\"> {{filterValue.key | translate : {default: filterValue.value | titlecase }\r\n }}</span>\r\n </mat-chip-option>\r\n </div>\r\n</mat-chip-listbox>\r\n", styles: [":host{display:inline-block}.filter-row{display:flex;background-color:var(--base-95);min-height:40px;min-width:100%;border-radius:.5rem;padding:1.25rem 1.25rem 0;max-width:100%;align-items:baseline;margin-bottom:.5rem}.search-input{background-color:unset;border:none}.engine-filter{margin-left:1rem}.filter-bar-search-input{width:100%}.filter-bar-search-input::ng-deep .material-icons-outlined{vertical-align:bottom}.material-icons-outlined{color:var(--base-40)}.filter-wrapper{max-width:100%;overflow-x:hidden;overflow-y:hidden;display:flex;flex:1}.mat-mdc-chip.mat-mdc-standard-chip{background-color:var(--base-95);padding-left:.5em;padding-right:.75em;border:.5px solid var(--base-70)}.mat-mdc-chip.mat-mdc-standard-chip span{display:inline-block}.mat-mdc-chip.mat-mdc-standard-chip .chip-filter-title+.chip-value{margin-left:.25rem}.chip-filter-title{margin-left:.5em}.hidden{display:none}:host ::ng-deep .mat-mdc-form-field-focus-overlay,:host ::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--base-95)}:host ::ng-deep .mat-mdc-chip-graphic{display:none}:host ::ng-deep .mat-mdc-chip-remove{color:var(--base-40)!important}\n"] }]
133
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }], propDecorators: { filterWrapper: [{
134
+ type: ViewChild,
135
+ args: ["filterWrapper"]
136
+ }], onResize: [{
137
+ type: HostListener,
138
+ args: ['window:resize', []]
139
+ }], settings: [{
140
+ type: Input
141
+ }], filterRowVisible: [{
142
+ type: Input
143
+ }], filterBarChange: [{
144
+ type: Output
145
+ }] } });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvZmlsdGVyLWJhci9maWx0ZXItYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9maWx0ZXItYmFyL2ZpbHRlci1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakssT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWF4RCxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUdELElBQWEsZ0JBQWdCLENBQUMsS0FBYztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFnQ0QsbUNBQW1DO0lBQ25DLElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUNELDJFQUEyRTtJQUMzRSxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUN6RCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksVUFBVTtRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxF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QUMsU0FBUyxDQUEwQixDQUFDO2dCQUMzRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDcEUsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7OEdBMUlVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHVWQ2QvQiwrOUVBa0RBOzsyRkRwQ2Esa0JBQWtCO2tCQU45QixTQUFTOytCQUVFLGdCQUFnQjtxSEFLRSxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBRTFCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRTtnQkFLeEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBTUksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJCYXJGaWx0ZXJJdGVtIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJCYXJDaGFuZ2VFdmVudCB9IGZyb20gJy4vbW9kZWxzL2ZpbHRlci1iYXItY2hhbmdlLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyQmFyU2V0dGluZ3MgfSBmcm9tICcuL21vZGVscy9maWx0ZXItYmFyLXNldHRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ3RsZC1maWx0ZXItYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChcImZpbHRlcldyYXBwZXJcIikgZmlsdGVyV3JhcHBlciE6IEVsZW1lbnRSZWY7XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFtdKVxyXG4gIG9uUmVzaXplKCkge1xyXG4gICAgdGhpcy5jaGVja092ZXJmbG93KCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXR0aW5ncyE6IEZpbHRlckJhclNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIHNldCBmaWx0ZXJSb3dWaXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9maWx0ZXJSb3dWaXNpYmxlID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIGZpbHRlckJhckNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbHRlckJhckNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyQmFyQ2hhbmdlRXZlbnQ+KCk7XHJcblxyXG4gIHByaXZhdGUgX2lucHV0VGV4dCA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBfZmlsdGVyUm93VmlzaWJsZSE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBmb3JtQ2hhbmdlc1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqIFRvIGhpZGUgZmlsdGVycywgYnV0IGxlYXZlIGNoaXBzIHZpc2libGUgKi9cclxuICByZWFkb25seSBpbnB1dEZvcm1Db250cm9sTmFtZSA9IFwiaW5wdXRcIjtcclxuICByZWFkb25seSBmaWx0ZXJGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBbdGhpcy5pbnB1dEZvcm1Db250cm9sTmFtZV06IG5ldyBGb3JtQ29udHJvbChcIlwiKSxcclxuICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVyRm9ybUdyb3VwXHJcbiAgfSk7XHJcblxyXG4gIHNlYXJjaFRpdGxlITogc3RyaW5nO1xyXG4gIHNlYXJjaFRvb2x0aXAhOiBzdHJpbmc7XHJcbiAgc3VmZml4SWNvbiE6IHN0cmluZztcclxuICBwcmVmaXhJY29uITogc3RyaW5nO1xyXG4gIHNob3dTdWZmaXhJY29uITogYm9vbGVhbjtcclxuICBmaWx0ZXJzOiBGaWx0ZXJCYXJDaGFuZ2VFdmVudCA9IHtcclxuICAgIGZpbHRlcnM6IHt9LFxyXG4gICAgaW5wdXQ6IFwiXCJcclxuICB9O1xyXG5cclxuICBmaWx0ZXJPdmVyZmxvdyA9IGZhbHNlO1xyXG4gIGFjdGl2ZUZpbHRlckluZGV4ID0gMDtcclxuXHJcbiAgLy8gd2hlbiB0byBzaG93IGZpbHRlciBieSBuYW1lIG9yIGlkIG9uIG1vYmlsZVxyXG4gIHNlYXJjaEluZGV4ID0gLTE7XHJcblxyXG4gIC8vIGdldHRlciBmb3IgY2xlYW5lciB0ZW1wbGF0ZSBodG1sXHJcbiAgZ2V0IGZpbHRlckZvcm1Hcm91cFZhbHVlKCk6IHsgW2tleTogc3RyaW5nXTogRmlsdGVyQmFyRmlsdGVySXRlbVtdIH0ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyRm9ybUdyb3VwLnZhbHVlO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2FkamFjZW50LW92ZXJsb2FkLXNpZ25hdHVyZXNcclxuICBnZXQgZmlsdGVyUm93VmlzaWJsZSgpIHsgcmV0dXJuIHRoaXMuX2ZpbHRlclJvd1Zpc2libGU7IH1cclxuICBnZXQgaW5wdXRUZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lucHV0VGV4dDtcclxuICB9XHJcbiAgZ2V0IHNob3dTZWFyY2goKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuc2V0dGluZ3M/LmhpZGVTZWFyY2g7XHJcbiAgfVxyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2FkamFjZW50LW92ZXJsb2FkLXNpZ25hdHVyZXNcclxuICBzZXQgaW5wdXRUZXh0KHZhbHVlKSB7XHJcbiAgICB0aGlzLl9pbnB1dFRleHQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZmlsdGVycy5pbnB1dCA9IHRoaXMuX2lucHV0VGV4dDtcclxuICAgIHRoaXMuZW1pdEZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXR0aW5ncy5maWx0ZXJzPy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5hZGRDb250cm9sKGZpZWxkLmZpZWxkTmFtZSwgbmV3IEZvcm1Db250cm9sKFtdKSk7XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaWJlVG9Gb3JtVmFsdWVDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRvb2x0aXAgPSB0aGlzLnNldHRpbmdzPy5zZWFyY2hUb29sdGlwID8/ICdGSUxURVJfQkFSLlNFQVJDSF9UT09MVElQJztcclxuICAgIHRoaXMuc2VhcmNoVGl0bGUgPSB0aGlzLnNldHRpbmdzPy5zZWFyY2hUaXRsZSA/PyAnRklMVEVSX0JBUi5TRUFSQ0gnO1xyXG4gICAgdGhpcy5wcmVmaXhJY29uID0gdGhpcy5zZXR0aW5ncz8ucHJlZml4SWNvbiA/PyBcImZpbHRlcl9hbHRcIjtcclxuICAgIHRoaXMuc3VmZml4SWNvbiA9IHRoaXMuc2V0dGluZ3M/LnN1ZmZpeEljb24gPz8gXCJxdWVzdGlvbl9tYXJrXCI7XHJcbiAgICB0aGlzLnNob3dTdWZmaXhJY29uID0gdGhpcy5zZXR0aW5ncz8uc2hvd1N1ZmZpeEljb24gPz8gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpO1xyXG4gICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGVtaXRGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5maWx0ZXJCYXJDaGFuZ2UubmV4dCh0aGlzLmZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoUmlnaHQoKSB7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncz8uZmlsdGVycyAmJiB0aGlzLnNldHRpbmdzPy5maWx0ZXJzLmxlbmd0aCA9PT0gdGhpcy5hY3RpdmVGaWx0ZXJJbmRleCArIDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJJbmRleCArPSAxO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoTGVmdCgpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUZpbHRlckluZGV4ID09PSB0aGlzLnNlYXJjaEluZGV4KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVySW5kZXggLT0gMTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZpbHRlcihrZXk6IHN0cmluZywgaXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldChrZXkpO1xyXG5cclxuICAgIGlmICghY29udHJvbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3QXJyYXkgPSBjb250cm9sLnZhbHVlIGFzIFtdO1xyXG4gICAgbmV3QXJyYXkuc3BsaWNlKGl4LCAxKTtcclxuICAgIGNvbnRyb2wuc2V0VmFsdWUobmV3QXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja092ZXJmbG93KCkge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyV3JhcHBlcikge1xyXG4gICAgICB0aGlzLmZpbHRlck92ZXJmbG93ID0gdGhpcy5maWx0ZXJXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggPCB0aGlzLmZpbHRlcldyYXBwZXIubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9Gb3JtVmFsdWVDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5mb3JtQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJzID0ge1xyXG4gICAgICAgIGlucHV0OiB0aGlzLmZvcm0udmFsdWUuaW5wdXQgPz8gXCJcIixcclxuICAgICAgICBmaWx0ZXJzOiB7fVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgZm9yIChjb25zdCBmaWx0ZXJLZXkgaW4gdGhpcy5mb3JtLnZhbHVlLmZpbHRlcnMpIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNvbnN0IGZpbHRlcjogRmlsdGVyQmFyRmlsdGVySXRlbVtdID0gKHRoaXMuZm9ybS52YWx1ZS5maWx0ZXJzIGFzIGFueSlbZmlsdGVyS2V5XSBhcyBGaWx0ZXJCYXJGaWx0ZXJJdGVtW107XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzLmZpbHRlcnNbZmlsdGVyS2V5XSA9IGZpbHRlci5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbWl0RmlsdGVycygpO1xyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZpbHRlci1yb3dcIiAqbmdJZj1cImZpbHRlclJvd1Zpc2libGVcIj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJmaWx0ZXItd3JhcHBlclwiICNmaWx0ZXJXcmFwcGVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGZ4RmxleCAqbmdJZj1cInNob3dTZWFyY2ggJiYgIWZpbHRlck92ZXJmbG93IHx8IGFjdGl2ZUZpbHRlckluZGV4ID09PSBzZWFyY2hJbmRleFwiIGNsYXNzPVwiZmlsdGVyLWJhci1zZWFyY2gtaW5wdXRcIj5cclxuICAgICAgPHNwYW4gbWF0UHJlZml4IGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5cclxuICAgICAgICB7e3ByZWZpeEljb259fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIG1hdFN1ZmZpeCBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCIgKm5nSWY9XCJzaG93U3VmZml4SWNvblwiIFttYXRUb29sdGlwXT1cInNlYXJjaFRvb2x0aXAgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICB7e3N1ZmZpeEljb259fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxpbnB1dCBjbGFzcz1cInNlYXJjaC1pbnB1dFwiIG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJzZWFyY2hUaXRsZSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpbnB1dEZvcm1Db250cm9sTmFtZVwiPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtR3JvdXBcIj5cclxuXHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBbbmdDbGFzc109XCJ7J2hpZGRlbic6IGZpbHRlck92ZXJmbG93ICYmIGFjdGl2ZUZpbHRlckluZGV4ICE9PSBpLCAnZW5naW5lLWZpbHRlcic6ICFmaWx0ZXJPdmVyZmxvd31cIiAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIHNldHRpbmdzPy5maWx0ZXJzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57e2ZpbHRlci50aXRsZSB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgbXVsdGlwbGUgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIuZmllbGROYW1lXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnZhbHVlcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHZhbHVlIG9mIGZpbHRlci52YWx1ZXMgfCBzb3J0VHJhbnNsYXRpb25zQnlQcm9wZXJ0eTona2V5J1wiIFt2YWx1ZV09XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgIHt7dmFsdWUua2V5IHwgdHJhbnNsYXRlIDoge2RlZmF1bHQ6IHZhbHVlLnZhbHVlIHwgdGl0bGVjYXNlIH0gfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInN3aXRjaExlZnQoKVwiICpuZ0lmPVwiZmlsdGVyT3ZlcmZsb3dcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5cclxuICAgICAgYXJyb3dfYmFja19pb3NcclxuICAgIDwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cImZpbHRlck92ZXJmbG93XCIgKGNsaWNrKT1cInN3aXRjaFJpZ2h0KClcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5cclxuICAgICAgYXJyb3dfZm9yd2FyZF9pb3NcclxuICAgIDwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbjxtYXQtY2hpcC1saXN0Ym94PlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBzZXR0aW5ncz8uZmlsdGVyc1wiPlxyXG4gICAgPG1hdC1jaGlwLW9wdGlvbiAqbmdGb3I9XCJsZXQgZmlsdGVyVmFsdWUgb2YgZmlsdGVyRm9ybUdyb3VwVmFsdWVbZmlsdGVyLmZpZWxkTmFtZV07IGxldCBpeD1pbmRleFwiXHJcbiAgICAgIChyZW1vdmVkKT1cInJlbW92ZUZpbHRlcihmaWx0ZXIuZmllbGROYW1lLCBpeClcIiBjbGFzcz1cInRleHQtc1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdENoaXBSZW1vdmU+XHJcbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcC1maWx0ZXItdGl0bGVcIj57e2ZpbHRlci50aXRsZSB8IHRyYW5zbGF0ZX19Ojwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwLXZhbHVlIHNlbWktYm9sZFwiPiB7e2ZpbHRlclZhbHVlLmtleSB8IHRyYW5zbGF0ZSA6IHtkZWZhdWx0OiBmaWx0ZXJWYWx1ZS52YWx1ZSB8IHRpdGxlY2FzZSB9XHJcbiAgICAgICAgfX08L3NwYW4+XHJcbiAgICA8L21hdC1jaGlwLW9wdGlvbj5cclxuICA8L2Rpdj5cclxuPC9tYXQtY2hpcC1saXN0Ym94PlxyXG4iXX0=