@messaia/cdk 18.2.3 → 19.0.0-rc01

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 (659) hide show
  1. package/fesm2022/messaia-cdk.mjs +1147 -932
  2. package/fesm2022/messaia-cdk.mjs.map +1 -1
  3. package/lib/base/components/base.component.d.ts +1 -1
  4. package/lib/base/components/generic-embedded-list.component.d.ts +1 -1
  5. package/lib/base/components/generic-form-base.component.d.ts +1 -1
  6. package/lib/base/components/generic-form.component.d.ts +1 -1
  7. package/lib/base/components/generic-list.component.d.ts +7 -3
  8. package/lib/base/components/generic-reactive-form.component.d.ts +1 -1
  9. package/lib/base/helpers/auth-helper.d.ts +1 -1
  10. package/lib/chips/components/chips.component.d.ts +5 -16
  11. package/lib/common/functions/utils.d.ts +1 -1
  12. package/lib/common/helpers/app-storage.d.ts +1 -1
  13. package/lib/common/styles/_layout.scss +1 -1
  14. package/lib/common/styles/_variables.scss +4 -25
  15. package/lib/common/styles/colors/_colors-dark.scss +2 -0
  16. package/lib/common/styles/colors/_colors.scss +4 -4
  17. package/lib/common/styles/core/_button.scss +7 -21
  18. package/lib/common/styles/core/_card.scss +13 -97
  19. package/lib/common/styles/core/_core.scss +8 -21
  20. package/lib/common/styles/core/_sidenav.scss +9 -7
  21. package/lib/common/styles/core/_structure.scss +4 -11
  22. package/lib/common/styles/font/_font.scss +5 -13
  23. package/lib/common/styles/m2/_common-theme.scss +10 -10
  24. package/lib/common/styles/m3/_common-theme.scss +27 -10
  25. package/lib/common/styles/platform.scss +10 -8
  26. package/lib/common/styles/utilities/_general.scss +55 -51
  27. package/lib/common/styles/utilities/_pull.scss +23 -30
  28. package/lib/common/styles/utilities/_push.scss +23 -30
  29. package/lib/common/styles/utilities/_size.scss +3 -3
  30. package/lib/common/styles/utilities/_utilities.scss +14 -14
  31. package/lib/common/theming/_m2-all-theme.scss +4 -11
  32. package/lib/common/theming/_m3-all-theme.scss +18 -0
  33. package/lib/form-validators/directives/base-directive.d.ts +1 -1
  34. package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +1 -1
  35. package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +1 -1
  36. package/lib/form-validators/services/rx-form-array.d.ts +2 -2
  37. package/lib/form-validators/util/reset-form.d.ts +3 -3
  38. package/lib/forms/directives/mat-form-field-editor.directive.d.ts +31 -28
  39. package/lib/forms/helpers/abstract-mat-form-field.d.ts +147 -91
  40. package/lib/forms/helpers/abstract-select-form-field.component.d.ts +144 -67
  41. package/lib/forms/helpers/value-accessor-base.d.ts +1 -1
  42. package/lib/layout/_m2-layout-theme.scss +14 -50
  43. package/lib/layout/layout-toggle.class.d.ts +1 -1
  44. package/lib/list/components/list.component.d.ts +3 -15
  45. package/lib/select/components/select.component.d.ts +3 -16
  46. package/lib/table/components/filter-select/filter-select.component.d.ts +2 -3
  47. package/package.json +3 -5
  48. package/esm2022/lib/base/base.module.mjs +0 -114
  49. package/esm2022/lib/base/components/base.component.mjs +0 -904
  50. package/esm2022/lib/base/components/dynamic-table-config-dialog/dynamic-table-config-dialog.comnponent.mjs +0 -123
  51. package/esm2022/lib/base/components/generic-embedded-list.component.mjs +0 -197
  52. package/esm2022/lib/base/components/generic-form-base.component.mjs +0 -891
  53. package/esm2022/lib/base/components/generic-form.component.mjs +0 -44
  54. package/esm2022/lib/base/components/generic-list.component.mjs +0 -966
  55. package/esm2022/lib/base/components/generic-reactive-form.component.mjs +0 -101
  56. package/esm2022/lib/base/components/task-dialog/task-dialog.component.mjs +0 -147
  57. package/esm2022/lib/base/constants/common.mjs +0 -92
  58. package/esm2022/lib/base/constants/global-roles.mjs +0 -9
  59. package/esm2022/lib/base/enums/message-type.mjs +0 -7
  60. package/esm2022/lib/base/helpers/auth-helper.mjs +0 -53
  61. package/esm2022/lib/base/interceptors/base.interceptor.mjs +0 -168
  62. package/esm2022/lib/base/interceptors/caching-interceptor.mjs +0 -67
  63. package/esm2022/lib/base/interceptors/loading.interceptor.mjs +0 -64
  64. package/esm2022/lib/base/interfaces/ibase-component.mjs +0 -2
  65. package/esm2022/lib/base/interfaces/igeneric-form-base.mjs +0 -2
  66. package/esm2022/lib/base/interfaces/igeneric-list-component.mjs +0 -2
  67. package/esm2022/lib/base/interfaces/igeneric-reactive-form-base.mjs +0 -2
  68. package/esm2022/lib/base/models/auth-user.mjs +0 -18
  69. package/esm2022/lib/base/models/task-dialog-data.mjs +0 -85
  70. package/esm2022/lib/base/public_api.mjs +0 -2
  71. package/esm2022/lib/base/services/file.service.mjs +0 -18
  72. package/esm2022/lib/base/services/loading-screen.service.mjs +0 -45
  73. package/esm2022/lib/base/services/print.service.mjs +0 -41
  74. package/esm2022/lib/chips/chips.module.mjs +0 -77
  75. package/esm2022/lib/chips/components/chips.component.mjs +0 -702
  76. package/esm2022/lib/chips/directives/autocomplete-option.directive.mjs +0 -18
  77. package/esm2022/lib/chips/directives/chip.directive.mjs +0 -18
  78. package/esm2022/lib/chips/public_api.mjs +0 -3
  79. package/esm2022/lib/common/animations/collapse/collapse.animation.mjs +0 -33
  80. package/esm2022/lib/common/animations/common/interfaces.mjs +0 -2
  81. package/esm2022/lib/common/behaviors/constructor.mjs +0 -2
  82. package/esm2022/lib/common/behaviors/control-value-accesor.mixin.mjs +0 -41
  83. package/esm2022/lib/common/behaviors/disabled.mixin.mjs +0 -24
  84. package/esm2022/lib/common/common.module.mjs +0 -176
  85. package/esm2022/lib/common/constants/constants.mjs +0 -3
  86. package/esm2022/lib/common/directives/autofocus.directive.mjs +0 -62
  87. package/esm2022/lib/common/directives/delayed-hover.directive.mjs +0 -133
  88. package/esm2022/lib/common/directives/disable-control.directive.mjs +0 -35
  89. package/esm2022/lib/common/enums/app-event-type.mjs +0 -6
  90. package/esm2022/lib/common/enums/filter-glue.mjs +0 -16
  91. package/esm2022/lib/common/enums/filter-operator.mjs +0 -15
  92. package/esm2022/lib/common/enums/salutation.mjs +0 -7
  93. package/esm2022/lib/common/functions/decorators.mjs +0 -22
  94. package/esm2022/lib/common/functions/functions.mjs +0 -22
  95. package/esm2022/lib/common/functions/utils.mjs +0 -271
  96. package/esm2022/lib/common/helpers/app-storage.mjs +0 -77
  97. package/esm2022/lib/common/helpers/delegate.mjs +0 -2
  98. package/esm2022/lib/common/helpers/dynamic-builder.mjs +0 -52
  99. package/esm2022/lib/common/helpers/dynamic-component-compiler.mjs +0 -11
  100. package/esm2022/lib/common/models/action-item.mjs +0 -77
  101. package/esm2022/lib/common/models/app-event.mjs +0 -21
  102. package/esm2022/lib/common/models/app-setting.mjs +0 -92
  103. package/esm2022/lib/common/models/audit-entity.mjs +0 -53
  104. package/esm2022/lib/common/models/audit-user.mjs +0 -24
  105. package/esm2022/lib/common/models/base-entity.mjs +0 -40
  106. package/esm2022/lib/common/models/common-error.mjs +0 -29
  107. package/esm2022/lib/common/models/common-handler-context.mjs +0 -45
  108. package/esm2022/lib/common/models/displayname-number-projection.mjs +0 -56
  109. package/esm2022/lib/common/models/displayname-projection.mjs +0 -38
  110. package/esm2022/lib/common/models/entity.mjs +0 -2
  111. package/esm2022/lib/common/models/enum-item.mjs +0 -2
  112. package/esm2022/lib/common/models/enum-metadata.mjs +0 -44
  113. package/esm2022/lib/common/models/filter-field.mjs +0 -2
  114. package/esm2022/lib/common/models/filter.mjs +0 -2
  115. package/esm2022/lib/common/models/icommon-handler-context.mjs +0 -2
  116. package/esm2022/lib/common/models/icon.mjs +0 -42
  117. package/esm2022/lib/common/models/key-value.mjs +0 -11
  118. package/esm2022/lib/common/models/modifiable-entity.mjs +0 -22
  119. package/esm2022/lib/common/models/name-number-projection.mjs +0 -35
  120. package/esm2022/lib/common/models/name-projection.mjs +0 -25
  121. package/esm2022/lib/common/models/permission.mjs +0 -29
  122. package/esm2022/lib/common/models/save-action.mjs +0 -7
  123. package/esm2022/lib/common/models/suffix-button.mjs +0 -15
  124. package/esm2022/lib/common/models/title-projection.mjs +0 -25
  125. package/esm2022/lib/common/pipes/bind.mjs +0 -31
  126. package/esm2022/lib/common/pipes/data-source.pipe.mjs +0 -15
  127. package/esm2022/lib/common/pipes/enum.pipe.mjs +0 -41
  128. package/esm2022/lib/common/pipes/file-size.pipe.mjs +0 -35
  129. package/esm2022/lib/common/pipes/filter.pipe.mjs +0 -54
  130. package/esm2022/lib/common/pipes/first-letter.mjs +0 -24
  131. package/esm2022/lib/common/pipes/form-array.pipe.mjs +0 -14
  132. package/esm2022/lib/common/pipes/form-control.pipe.mjs +0 -14
  133. package/esm2022/lib/common/pipes/form-group.pipe.mjs +0 -14
  134. package/esm2022/lib/common/pipes/func.pipe.mjs +0 -14
  135. package/esm2022/lib/common/pipes/join.pipe.mjs +0 -26
  136. package/esm2022/lib/common/pipes/keys.mjs +0 -18
  137. package/esm2022/lib/common/pipes/map.pipe.mjs +0 -48
  138. package/esm2022/lib/common/pipes/month-name.pipe.mjs +0 -25
  139. package/esm2022/lib/common/pipes/nested-property.mjs +0 -29
  140. package/esm2022/lib/common/pipes/only-number.mjs +0 -58
  141. package/esm2022/lib/common/pipes/order.pipe.mjs +0 -269
  142. package/esm2022/lib/common/pipes/placeholder.pipe.mjs +0 -26
  143. package/esm2022/lib/common/pipes/property-join.pipe.mjs +0 -27
  144. package/esm2022/lib/common/pipes/safe-html.pipe.mjs +0 -32
  145. package/esm2022/lib/common/pipes/split.pipe.mjs +0 -25
  146. package/esm2022/lib/common/pipes/time.pipe.mjs +0 -21
  147. package/esm2022/lib/common/pipes/titlecase.pipe.mjs +0 -14
  148. package/esm2022/lib/common/pipes/truncate.pipe.mjs +0 -15
  149. package/esm2022/lib/common/pipes/values.mjs +0 -14
  150. package/esm2022/lib/common/public_api.mjs +0 -41
  151. package/esm2022/lib/common/services/base.service.mjs +0 -19
  152. package/esm2022/lib/common/services/context-helper.mjs +0 -17
  153. package/esm2022/lib/common/services/enum.service.mjs +0 -81
  154. package/esm2022/lib/common/services/event-queue.service.mjs +0 -31
  155. package/esm2022/lib/common/services/service-locator.mjs +0 -25
  156. package/esm2022/lib/common/templates/templates.mjs +0 -87
  157. package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +0 -46
  158. package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -60
  159. package/esm2022/lib/dialogs/dialog.component.mjs +0 -59
  160. package/esm2022/lib/dialogs/dialogs.module.mjs +0 -72
  161. package/esm2022/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +0 -44
  162. package/esm2022/lib/dialogs/public_api.mjs +0 -2
  163. package/esm2022/lib/dialogs/services/dialog.service.mjs +0 -154
  164. package/esm2022/lib/file/file-input.component.mjs +0 -334
  165. package/esm2022/lib/file/file.module.mjs +0 -37
  166. package/esm2022/lib/file/public_api.mjs +0 -2
  167. package/esm2022/lib/form-validators/abstract/typed-form.mjs +0 -13
  168. package/esm2022/lib/form-validators/algorithm/luhn-algorithm.mjs +0 -33
  169. package/esm2022/lib/form-validators/const/app-validators.const.mjs +0 -68
  170. package/esm2022/lib/form-validators/const/app.const.mjs +0 -65
  171. package/esm2022/lib/form-validators/const/config-names.const.mjs +0 -33
  172. package/esm2022/lib/form-validators/const/config-required-fields.const.mjs +0 -35
  173. package/esm2022/lib/form-validators/const/decorators.const.mjs +0 -23
  174. package/esm2022/lib/form-validators/const/events.const.mjs +0 -53
  175. package/esm2022/lib/form-validators/const/html-elements.const.mjs +0 -25
  176. package/esm2022/lib/form-validators/const/iban-country-wise-regex.const.mjs +0 -80
  177. package/esm2022/lib/form-validators/const/index.mjs +0 -6
  178. package/esm2022/lib/form-validators/const/operators.const.mjs +0 -7
  179. package/esm2022/lib/form-validators/const/validation-alphabet-locale.const.mjs +0 -9
  180. package/esm2022/lib/form-validators/const/validator.const.mjs +0 -29
  181. package/esm2022/lib/form-validators/core/annotation-types.mjs +0 -75
  182. package/esm2022/lib/form-validators/core/default-container.mjs +0 -500
  183. package/esm2022/lib/form-validators/decorators/allOf.decorator.mjs +0 -10
  184. package/esm2022/lib/form-validators/decorators/alpha.decorator.mjs +0 -10
  185. package/esm2022/lib/form-validators/decorators/alphaNumeric.decorator.mjs +0 -10
  186. package/esm2022/lib/form-validators/decorators/and.decorator.mjs +0 -6
  187. package/esm2022/lib/form-validators/decorators/ascii.decorator.mjs +0 -6
  188. package/esm2022/lib/form-validators/decorators/async.decorator.mjs +0 -6
  189. package/esm2022/lib/form-validators/decorators/base-decorator.function.mjs +0 -7
  190. package/esm2022/lib/form-validators/decorators/choice.decorator.mjs +0 -10
  191. package/esm2022/lib/form-validators/decorators/compare.decorator.mjs +0 -6
  192. package/esm2022/lib/form-validators/decorators/compose.decorator.mjs +0 -6
  193. package/esm2022/lib/form-validators/decorators/contains.decorator.mjs +0 -10
  194. package/esm2022/lib/form-validators/decorators/credit-card.decorator.mjs +0 -10
  195. package/esm2022/lib/form-validators/decorators/cusip.decorator.mjs +0 -6
  196. package/esm2022/lib/form-validators/decorators/custom.decorator.mjs +0 -10
  197. package/esm2022/lib/form-validators/decorators/dataUri.decorator.mjs +0 -6
  198. package/esm2022/lib/form-validators/decorators/date.decorator.mjs +0 -10
  199. package/esm2022/lib/form-validators/decorators/different.decorator.mjs +0 -6
  200. package/esm2022/lib/form-validators/decorators/digit.decorator.mjs +0 -6
  201. package/esm2022/lib/form-validators/decorators/email.decorator.mjs +0 -6
  202. package/esm2022/lib/form-validators/decorators/endsWith.decorator.mjs +0 -10
  203. package/esm2022/lib/form-validators/decorators/even.decorator.mjs +0 -6
  204. package/esm2022/lib/form-validators/decorators/extension.decorator.mjs +0 -10
  205. package/esm2022/lib/form-validators/decorators/factor.decorator.mjs +0 -10
  206. package/esm2022/lib/form-validators/decorators/file.decorator.mjs +0 -10
  207. package/esm2022/lib/form-validators/decorators/fileSize.decorator.mjs +0 -10
  208. package/esm2022/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +0 -10
  209. package/esm2022/lib/form-validators/decorators/greater-than.decorator.mjs +0 -10
  210. package/esm2022/lib/form-validators/decorators/grid.decorator.mjs +0 -6
  211. package/esm2022/lib/form-validators/decorators/hexColor.decorator.mjs +0 -6
  212. package/esm2022/lib/form-validators/decorators/image.decorator.mjs +0 -10
  213. package/esm2022/lib/form-validators/decorators/index.mjs +0 -93
  214. package/esm2022/lib/form-validators/decorators/json.decorator.mjs +0 -6
  215. package/esm2022/lib/form-validators/decorators/latLong.decorator.mjs +0 -6
  216. package/esm2022/lib/form-validators/decorators/latitude.decorator.mjs +0 -6
  217. package/esm2022/lib/form-validators/decorators/leapYear.decorator.mjs +0 -6
  218. package/esm2022/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +0 -10
  219. package/esm2022/lib/form-validators/decorators/less-than.decorator.mjs +0 -10
  220. package/esm2022/lib/form-validators/decorators/longitude.decorator.mjs +0 -6
  221. package/esm2022/lib/form-validators/decorators/lowercase.decorator.mjs +0 -6
  222. package/esm2022/lib/form-validators/decorators/mac.decorator.mjs +0 -6
  223. package/esm2022/lib/form-validators/decorators/mask.decorator.mjs +0 -6
  224. package/esm2022/lib/form-validators/decorators/maxDate.decorator.mjs +0 -10
  225. package/esm2022/lib/form-validators/decorators/maxLength.decorator.mjs +0 -10
  226. package/esm2022/lib/form-validators/decorators/maxNumber.decorator.mjs +0 -10
  227. package/esm2022/lib/form-validators/decorators/maxTime.decorator.mjs +0 -10
  228. package/esm2022/lib/form-validators/decorators/minDate.decorator.mjs +0 -10
  229. package/esm2022/lib/form-validators/decorators/minLength.decorator.mjs +0 -10
  230. package/esm2022/lib/form-validators/decorators/minNumber.decorator.mjs +0 -10
  231. package/esm2022/lib/form-validators/decorators/minTime.decorator.mjs +0 -10
  232. package/esm2022/lib/form-validators/decorators/model.decorator.mjs +0 -7
  233. package/esm2022/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +0 -8
  234. package/esm2022/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +0 -8
  235. package/esm2022/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +0 -8
  236. package/esm2022/lib/form-validators/decorators/non-validation-decorators/update-on.decorator.mjs +0 -6
  237. package/esm2022/lib/form-validators/decorators/noneOf.decorator.mjs +0 -10
  238. package/esm2022/lib/form-validators/decorators/not.decorator.mjs +0 -6
  239. package/esm2022/lib/form-validators/decorators/notEmpty.decorator.mjs +0 -6
  240. package/esm2022/lib/form-validators/decorators/numeric.decorator.mjs +0 -10
  241. package/esm2022/lib/form-validators/decorators/odd.decorator.mjs +0 -6
  242. package/esm2022/lib/form-validators/decorators/oneOf.decorator.mjs +0 -10
  243. package/esm2022/lib/form-validators/decorators/or.decorator.mjs +0 -6
  244. package/esm2022/lib/form-validators/decorators/password.decorator.mjs +0 -10
  245. package/esm2022/lib/form-validators/decorators/pattern.decorator.mjs +0 -10
  246. package/esm2022/lib/form-validators/decorators/port.decorator.mjs +0 -6
  247. package/esm2022/lib/form-validators/decorators/primeNumber.decorator.mjs +0 -6
  248. package/esm2022/lib/form-validators/decorators/prop-array.decorator.mjs +0 -18
  249. package/esm2022/lib/form-validators/decorators/prop-object.decorator.mjs +0 -8
  250. package/esm2022/lib/form-validators/decorators/prop.decorator.mjs +0 -18
  251. package/esm2022/lib/form-validators/decorators/range.decorator.mjs +0 -10
  252. package/esm2022/lib/form-validators/decorators/required.decorator.mjs +0 -6
  253. package/esm2022/lib/form-validators/decorators/requiredTrue.decorator.mjs +0 -6
  254. package/esm2022/lib/form-validators/decorators/rule.decorator.mjs +0 -6
  255. package/esm2022/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +0 -8
  256. package/esm2022/lib/form-validators/decorators/sanitize/escape.decorator.mjs +0 -8
  257. package/esm2022/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +0 -8
  258. package/esm2022/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +0 -8
  259. package/esm2022/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +0 -8
  260. package/esm2022/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +0 -8
  261. package/esm2022/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +0 -8
  262. package/esm2022/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +0 -8
  263. package/esm2022/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +0 -8
  264. package/esm2022/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +0 -8
  265. package/esm2022/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +0 -8
  266. package/esm2022/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +0 -8
  267. package/esm2022/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +0 -8
  268. package/esm2022/lib/form-validators/decorators/sanitize/toString.decorator.mjs +0 -8
  269. package/esm2022/lib/form-validators/decorators/sanitize/trim.decorator.mjs +0 -8
  270. package/esm2022/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +0 -8
  271. package/esm2022/lib/form-validators/decorators/startsWith.decorator.mjs +0 -10
  272. package/esm2022/lib/form-validators/decorators/time.decorator.mjs +0 -10
  273. package/esm2022/lib/form-validators/decorators/unique.decorator.mjs +0 -6
  274. package/esm2022/lib/form-validators/decorators/uppercase.decorator.mjs +0 -6
  275. package/esm2022/lib/form-validators/decorators/url.decorator.mjs +0 -10
  276. package/esm2022/lib/form-validators/directives/base-directive.mjs +0 -75
  277. package/esm2022/lib/form-validators/directives/control-host.directive.mjs +0 -55
  278. package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +0 -36
  279. package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +0 -234
  280. package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +0 -40
  281. package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +0 -76
  282. package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +0 -60
  283. package/esm2022/lib/form-validators/directives/template-validations/file-control.directive.mjs +0 -122
  284. package/esm2022/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +0 -74
  285. package/esm2022/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +0 -394
  286. package/esm2022/lib/form-validators/domain/disable-provider.mjs +0 -198
  287. package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +0 -134
  288. package/esm2022/lib/form-validators/domain/element-processor/mask.provider.mjs +0 -453
  289. package/esm2022/lib/form-validators/domain/form-data.mjs +0 -93
  290. package/esm2022/lib/form-validators/enums/error-message-binding-strategy.mjs +0 -11
  291. package/esm2022/lib/form-validators/enums/index.mjs +0 -5
  292. package/esm2022/lib/form-validators/enums/ip-version.mjs +0 -7
  293. package/esm2022/lib/form-validators/enums/numeric-value-type.mjs +0 -7
  294. package/esm2022/lib/form-validators/enums/reset-type.mjs +0 -10
  295. package/esm2022/lib/form-validators/enums/url-validation-type.mjs +0 -7
  296. package/esm2022/lib/form-validators/models/config/alpha-config.mjs +0 -2
  297. package/esm2022/lib/form-validators/models/config/array-config.mjs +0 -2
  298. package/esm2022/lib/form-validators/models/config/base-config-fn.mjs +0 -2
  299. package/esm2022/lib/form-validators/models/config/base-config.mjs +0 -2
  300. package/esm2022/lib/form-validators/models/config/base-date-config.mjs +0 -2
  301. package/esm2022/lib/form-validators/models/config/choice-config.mjs +0 -2
  302. package/esm2022/lib/form-validators/models/config/compare-config.mjs +0 -2
  303. package/esm2022/lib/form-validators/models/config/component-config.mjs +0 -2
  304. package/esm2022/lib/form-validators/models/config/compose-config.mjs +0 -2
  305. package/esm2022/lib/form-validators/models/config/contains-config.mjs +0 -2
  306. package/esm2022/lib/form-validators/models/config/credit-card-config.mjs +0 -2
  307. package/esm2022/lib/form-validators/models/config/custom-config.mjs +0 -2
  308. package/esm2022/lib/form-validators/models/config/date-config.mjs +0 -2
  309. package/esm2022/lib/form-validators/models/config/default-config.mjs +0 -2
  310. package/esm2022/lib/form-validators/models/config/digit-config.mjs +0 -2
  311. package/esm2022/lib/form-validators/models/config/disable-config.mjs +0 -2
  312. package/esm2022/lib/form-validators/models/config/element-class-config.mjs +0 -2
  313. package/esm2022/lib/form-validators/models/config/email-config.mjs +0 -2
  314. package/esm2022/lib/form-validators/models/config/error-config.mjs +0 -2
  315. package/esm2022/lib/form-validators/models/config/extension-config.mjs +0 -2
  316. package/esm2022/lib/form-validators/models/config/factor-config.mjs +0 -2
  317. package/esm2022/lib/form-validators/models/config/field-config.mjs +0 -2
  318. package/esm2022/lib/form-validators/models/config/file-config.mjs +0 -2
  319. package/esm2022/lib/form-validators/models/config/hex-color-config.mjs +0 -2
  320. package/esm2022/lib/form-validators/models/config/iban-config.mjs +0 -2
  321. package/esm2022/lib/form-validators/models/config/image-config.mjs +0 -2
  322. package/esm2022/lib/form-validators/models/config/index.mjs +0 -35
  323. package/esm2022/lib/form-validators/models/config/ip-config.mjs +0 -2
  324. package/esm2022/lib/form-validators/models/config/logical-operator-config.mjs +0 -2
  325. package/esm2022/lib/form-validators/models/config/mask-config.mjs +0 -2
  326. package/esm2022/lib/form-validators/models/config/max-date-config.mjs +0 -2
  327. package/esm2022/lib/form-validators/models/config/message-config.mjs +0 -2
  328. package/esm2022/lib/form-validators/models/config/min-date-config.mjs +0 -2
  329. package/esm2022/lib/form-validators/models/config/model-config.mjs +0 -2
  330. package/esm2022/lib/form-validators/models/config/number-config.mjs +0 -2
  331. package/esm2022/lib/form-validators/models/config/numeric-config.mjs +0 -2
  332. package/esm2022/lib/form-validators/models/config/password-config.mjs +0 -2
  333. package/esm2022/lib/form-validators/models/config/pattern-config.mjs +0 -2
  334. package/esm2022/lib/form-validators/models/config/prop-config.mjs +0 -2
  335. package/esm2022/lib/form-validators/models/config/props-config.mjs +0 -2
  336. package/esm2022/lib/form-validators/models/config/range-config.mjs +0 -2
  337. package/esm2022/lib/form-validators/models/config/relational-operator-config.mjs +0 -2
  338. package/esm2022/lib/form-validators/models/config/required-config.mjs +0 -2
  339. package/esm2022/lib/form-validators/models/config/rule-config.mjs +0 -2
  340. package/esm2022/lib/form-validators/models/config/sanitize-config.mjs +0 -2
  341. package/esm2022/lib/form-validators/models/config/size-config.mjs +0 -2
  342. package/esm2022/lib/form-validators/models/config/string-comparison-config.mjs +0 -2
  343. package/esm2022/lib/form-validators/models/config/string-value-config.mjs +0 -2
  344. package/esm2022/lib/form-validators/models/config/time-config.mjs +0 -2
  345. package/esm2022/lib/form-validators/models/config/todate-config.mjs +0 -2
  346. package/esm2022/lib/form-validators/models/config/unique-config.mjs +0 -2
  347. package/esm2022/lib/form-validators/models/config/update-on-config.mjs +0 -2
  348. package/esm2022/lib/form-validators/models/config/url-config.mjs +0 -2
  349. package/esm2022/lib/form-validators/models/control-info.mjs +0 -2
  350. package/esm2022/lib/form-validators/models/data-sanitizer.mjs +0 -2
  351. package/esm2022/lib/form-validators/models/decorator-configuration.mjs +0 -2
  352. package/esm2022/lib/form-validators/models/form-builder-configuration.mjs +0 -58
  353. package/esm2022/lib/form-validators/models/index.mjs +0 -3
  354. package/esm2022/lib/form-validators/models/instance-container.mjs +0 -2
  355. package/esm2022/lib/form-validators/models/interface/array-prop-instance-config.interface.mjs +0 -2
  356. package/esm2022/lib/form-validators/models/interface/auto-instance-config.interface.mjs +0 -2
  357. package/esm2022/lib/form-validators/models/interface/form-data-config.mjs +0 -2
  358. package/esm2022/lib/form-validators/models/interface/i-abstract-control.mjs +0 -30
  359. package/esm2022/lib/form-validators/models/interface/i-form-group.mjs +0 -2
  360. package/esm2022/lib/form-validators/models/interface/instance-argument.interface.mjs +0 -2
  361. package/esm2022/lib/form-validators/models/interface/object-prop-instance-config.interface.mjs +0 -2
  362. package/esm2022/lib/form-validators/models/interface/options.mjs +0 -2
  363. package/esm2022/lib/form-validators/models/password-validation.model.mjs +0 -2
  364. package/esm2022/lib/form-validators/models/prop-validation-config.mjs +0 -2
  365. package/esm2022/lib/form-validators/models/property-info.mjs +0 -2
  366. package/esm2022/lib/form-validators/public_api.mjs +0 -26
  367. package/esm2022/lib/form-validators/reactive-form-validators/allOf.validator.mjs +0 -33
  368. package/esm2022/lib/form-validators/reactive-form-validators/alpha.validator.mjs +0 -15
  369. package/esm2022/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +0 -15
  370. package/esm2022/lib/form-validators/reactive-form-validators/and.validator.mjs +0 -38
  371. package/esm2022/lib/form-validators/reactive-form-validators/ascii.validator.mjs +0 -15
  372. package/esm2022/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +0 -45
  373. package/esm2022/lib/form-validators/reactive-form-validators/choice.validator.mjs +0 -31
  374. package/esm2022/lib/form-validators/reactive-form-validators/compare.validator.mjs +0 -32
  375. package/esm2022/lib/form-validators/reactive-form-validators/compose.validator.mjs +0 -34
  376. package/esm2022/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +0 -63
  377. package/esm2022/lib/form-validators/reactive-form-validators/contains.validator.mjs +0 -22
  378. package/esm2022/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +0 -48
  379. package/esm2022/lib/form-validators/reactive-form-validators/cusip.validator.mjs +0 -38
  380. package/esm2022/lib/form-validators/reactive-form-validators/custom.validator.mjs +0 -25
  381. package/esm2022/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +0 -9
  382. package/esm2022/lib/form-validators/reactive-form-validators/date.validator.mjs +0 -8
  383. package/esm2022/lib/form-validators/reactive-form-validators/different.validator.mjs +0 -19
  384. package/esm2022/lib/form-validators/reactive-form-validators/digit.validator.mjs +0 -9
  385. package/esm2022/lib/form-validators/reactive-form-validators/email.validator.mjs +0 -9
  386. package/esm2022/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +0 -23
  387. package/esm2022/lib/form-validators/reactive-form-validators/even.validator.mjs +0 -15
  388. package/esm2022/lib/form-validators/reactive-form-validators/extension.validator.mjs +0 -40
  389. package/esm2022/lib/form-validators/reactive-form-validators/factor.validator.mjs +0 -37
  390. package/esm2022/lib/form-validators/reactive-form-validators/file.validator.mjs +0 -26
  391. package/esm2022/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +0 -34
  392. package/esm2022/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +0 -8
  393. package/esm2022/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +0 -8
  394. package/esm2022/lib/form-validators/reactive-form-validators/grid.validator.mjs +0 -31
  395. package/esm2022/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +0 -9
  396. package/esm2022/lib/form-validators/reactive-form-validators/iban.validator.mjs +0 -28
  397. package/esm2022/lib/form-validators/reactive-form-validators/image.validator.mjs +0 -52
  398. package/esm2022/lib/form-validators/reactive-form-validators/index.mjs +0 -66
  399. package/esm2022/lib/form-validators/reactive-form-validators/ip.validator.mjs +0 -28
  400. package/esm2022/lib/form-validators/reactive-form-validators/json.validator.mjs +0 -26
  401. package/esm2022/lib/form-validators/reactive-form-validators/latLong.validator.mjs +0 -18
  402. package/esm2022/lib/form-validators/reactive-form-validators/latitude.validator.mjs +0 -9
  403. package/esm2022/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +0 -16
  404. package/esm2022/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +0 -8
  405. package/esm2022/lib/form-validators/reactive-form-validators/less-than.validator.mjs +0 -8
  406. package/esm2022/lib/form-validators/reactive-form-validators/longitude.validator.mjs +0 -9
  407. package/esm2022/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +0 -15
  408. package/esm2022/lib/form-validators/reactive-form-validators/mac.validator.mjs +0 -9
  409. package/esm2022/lib/form-validators/reactive-form-validators/mask.validator.mjs +0 -14
  410. package/esm2022/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +0 -8
  411. package/esm2022/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +0 -17
  412. package/esm2022/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +0 -17
  413. package/esm2022/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +0 -8
  414. package/esm2022/lib/form-validators/reactive-form-validators/minDate.validator.mjs +0 -8
  415. package/esm2022/lib/form-validators/reactive-form-validators/minLength.validator.mjs +0 -16
  416. package/esm2022/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +0 -16
  417. package/esm2022/lib/form-validators/reactive-form-validators/minTime.validator.mjs +0 -8
  418. package/esm2022/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +0 -24
  419. package/esm2022/lib/form-validators/reactive-form-validators/not.validator.mjs +0 -25
  420. package/esm2022/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +0 -17
  421. package/esm2022/lib/form-validators/reactive-form-validators/numeric.validator.mjs +0 -22
  422. package/esm2022/lib/form-validators/reactive-form-validators/odd.validator.mjs +0 -17
  423. package/esm2022/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +0 -26
  424. package/esm2022/lib/form-validators/reactive-form-validators/or.validator.mjs +0 -25
  425. package/esm2022/lib/form-validators/reactive-form-validators/password.validator.mjs +0 -35
  426. package/esm2022/lib/form-validators/reactive-form-validators/pattern.validator.mjs +0 -19
  427. package/esm2022/lib/form-validators/reactive-form-validators/port.validator.mjs +0 -19
  428. package/esm2022/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +0 -27
  429. package/esm2022/lib/form-validators/reactive-form-validators/range.validator.mjs +0 -17
  430. package/esm2022/lib/form-validators/reactive-form-validators/required.validator.mjs +0 -17
  431. package/esm2022/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +0 -16
  432. package/esm2022/lib/form-validators/reactive-form-validators/rule.validator.mjs +0 -22
  433. package/esm2022/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +0 -25
  434. package/esm2022/lib/form-validators/reactive-form-validators/time.validator.mjs +0 -19
  435. package/esm2022/lib/form-validators/reactive-form-validators/unique.validator.mjs +0 -77
  436. package/esm2022/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +0 -16
  437. package/esm2022/lib/form-validators/reactive-form-validators/url.validator.mjs +0 -28
  438. package/esm2022/lib/form-validators/services/base-form-builder.mjs +0 -220
  439. package/esm2022/lib/form-validators/services/entity.service.mjs +0 -76
  440. package/esm2022/lib/form-validators/services/form-control.mjs +0 -370
  441. package/esm2022/lib/form-validators/services/form-group.mjs +0 -2
  442. package/esm2022/lib/form-validators/services/reactive-form.module.mjs +0 -52
  443. package/esm2022/lib/form-validators/services/rx-form-array.mjs +0 -114
  444. package/esm2022/lib/form-validators/services/rx-form-builder.mjs +0 -1035
  445. package/esm2022/lib/form-validators/services/rx-form-group.mjs +0 -451
  446. package/esm2022/lib/form-validators/services/typed-form-builder.mjs +0 -25
  447. package/esm2022/lib/form-validators/util/alphabet-regex.locale.mjs +0 -29
  448. package/esm2022/lib/form-validators/util/app-util.mjs +0 -161
  449. package/esm2022/lib/form-validators/util/check-length.mjs +0 -11
  450. package/esm2022/lib/form-validators/util/config-provider.mjs +0 -37
  451. package/esm2022/lib/form-validators/util/date-checker.function.mjs +0 -52
  452. package/esm2022/lib/form-validators/util/date-provider.mjs +0 -108
  453. package/esm2022/lib/form-validators/util/form-const.mjs +0 -3
  454. package/esm2022/lib/form-validators/util/form-provider.mjs +0 -87
  455. package/esm2022/lib/form-validators/util/index.mjs +0 -7
  456. package/esm2022/lib/form-validators/util/instance-provider.function.mjs +0 -63
  457. package/esm2022/lib/form-validators/util/ip-checker.mjs +0 -19
  458. package/esm2022/lib/form-validators/util/linq.mjs +0 -157
  459. package/esm2022/lib/form-validators/util/object-maker.mjs +0 -68
  460. package/esm2022/lib/form-validators/util/reactive-form-config.mjs +0 -25
  461. package/esm2022/lib/form-validators/util/regex-rules.mjs +0 -37
  462. package/esm2022/lib/form-validators/util/regex-validator.mjs +0 -74
  463. package/esm2022/lib/form-validators/util/relational-checker.function.mjs +0 -92
  464. package/esm2022/lib/form-validators/util/reset-form.mjs +0 -57
  465. package/esm2022/lib/form-validators/util/sanitizers.mjs +0 -140
  466. package/esm2022/lib/form-validators/util/time-checker.function.mjs +0 -50
  467. package/esm2022/lib/form-validators/util/type.mjs +0 -2
  468. package/esm2022/lib/form-validators/util/validator-value-checker.mjs +0 -21
  469. package/esm2022/lib/form-validators/validators-extension/allOf-validator.extension.mjs +0 -11
  470. package/esm2022/lib/form-validators/validators-extension/alpha-validator.extension.mjs +0 -11
  471. package/esm2022/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +0 -11
  472. package/esm2022/lib/form-validators/validators-extension/and-validator.extension.mjs +0 -7
  473. package/esm2022/lib/form-validators/validators-extension/ascii-validator.extension.mjs +0 -7
  474. package/esm2022/lib/form-validators/validators-extension/base-validator.function.mjs +0 -34
  475. package/esm2022/lib/form-validators/validators-extension/choice-validator.extension.mjs +0 -11
  476. package/esm2022/lib/form-validators/validators-extension/compare-validator.extension.mjs +0 -7
  477. package/esm2022/lib/form-validators/validators-extension/compose-validator.extension.mjs +0 -7
  478. package/esm2022/lib/form-validators/validators-extension/contains-validator.extension.mjs +0 -11
  479. package/esm2022/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +0 -11
  480. package/esm2022/lib/form-validators/validators-extension/cusip-validator.extension.mjs +0 -7
  481. package/esm2022/lib/form-validators/validators-extension/custom-validator.extension.mjs +0 -11
  482. package/esm2022/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +0 -7
  483. package/esm2022/lib/form-validators/validators-extension/date-validator.extension.mjs +0 -11
  484. package/esm2022/lib/form-validators/validators-extension/different-validator.extension.mjs +0 -7
  485. package/esm2022/lib/form-validators/validators-extension/digit-validator.extension.mjs +0 -7
  486. package/esm2022/lib/form-validators/validators-extension/email-validator.extension.mjs +0 -7
  487. package/esm2022/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +0 -11
  488. package/esm2022/lib/form-validators/validators-extension/even-validator.extension.mjs +0 -7
  489. package/esm2022/lib/form-validators/validators-extension/extension-validator.extension.mjs +0 -10
  490. package/esm2022/lib/form-validators/validators-extension/factor-validator.extension.mjs +0 -11
  491. package/esm2022/lib/form-validators/validators-extension/file-validator.extension.mjs +0 -10
  492. package/esm2022/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +0 -10
  493. package/esm2022/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +0 -11
  494. package/esm2022/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +0 -11
  495. package/esm2022/lib/form-validators/validators-extension/grid-validator.extension.mjs +0 -7
  496. package/esm2022/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +0 -7
  497. package/esm2022/lib/form-validators/validators-extension/iban-validator.extension.mjs +0 -11
  498. package/esm2022/lib/form-validators/validators-extension/image-validator.extension.mjs +0 -10
  499. package/esm2022/lib/form-validators/validators-extension/index.mjs +0 -68
  500. package/esm2022/lib/form-validators/validators-extension/ip-validator.extension.mjs +0 -11
  501. package/esm2022/lib/form-validators/validators-extension/json-validator.extension.mjs +0 -7
  502. package/esm2022/lib/form-validators/validators-extension/latLong-validator.extension.mjs +0 -7
  503. package/esm2022/lib/form-validators/validators-extension/latitude-validator.extension.mjs +0 -7
  504. package/esm2022/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +0 -7
  505. package/esm2022/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +0 -11
  506. package/esm2022/lib/form-validators/validators-extension/less-than-validator.extension.mjs +0 -11
  507. package/esm2022/lib/form-validators/validators-extension/longitude-validator.extension.mjs +0 -7
  508. package/esm2022/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +0 -7
  509. package/esm2022/lib/form-validators/validators-extension/mac-validator.extension.mjs +0 -7
  510. package/esm2022/lib/form-validators/validators-extension/mask-validator.extension.mjs +0 -7
  511. package/esm2022/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +0 -11
  512. package/esm2022/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +0 -11
  513. package/esm2022/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +0 -11
  514. package/esm2022/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +0 -11
  515. package/esm2022/lib/form-validators/validators-extension/minDate-validator.extension.mjs +0 -11
  516. package/esm2022/lib/form-validators/validators-extension/minLength-validator.extension.mjs +0 -11
  517. package/esm2022/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +0 -11
  518. package/esm2022/lib/form-validators/validators-extension/minTime-validator.extension.mjs +0 -11
  519. package/esm2022/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +0 -11
  520. package/esm2022/lib/form-validators/validators-extension/not-validator.extension.mjs +0 -7
  521. package/esm2022/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +0 -7
  522. package/esm2022/lib/form-validators/validators-extension/numeric-validator.extension.mjs +0 -11
  523. package/esm2022/lib/form-validators/validators-extension/odd-validator.extension.mjs +0 -7
  524. package/esm2022/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +0 -11
  525. package/esm2022/lib/form-validators/validators-extension/or-validator.extension.mjs +0 -7
  526. package/esm2022/lib/form-validators/validators-extension/password-validator.extension.mjs +0 -11
  527. package/esm2022/lib/form-validators/validators-extension/pattern-validator.extension.mjs +0 -11
  528. package/esm2022/lib/form-validators/validators-extension/port-validator.extension.mjs +0 -7
  529. package/esm2022/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +0 -7
  530. package/esm2022/lib/form-validators/validators-extension/range-validator.extension.mjs +0 -11
  531. package/esm2022/lib/form-validators/validators-extension/required-validator.extension.mjs +0 -7
  532. package/esm2022/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +0 -7
  533. package/esm2022/lib/form-validators/validators-extension/rxweb-validators.mjs +0 -108
  534. package/esm2022/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +0 -11
  535. package/esm2022/lib/form-validators/validators-extension/time-validator.extension.mjs +0 -11
  536. package/esm2022/lib/form-validators/validators-extension/unique-validator.extension.mjs +0 -7
  537. package/esm2022/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +0 -7
  538. package/esm2022/lib/form-validators/validators-extension/url-validator.extension.mjs +0 -11
  539. package/esm2022/lib/form-validators/validators-function/alpha-validation.function.mjs +0 -71
  540. package/esm2022/lib/form-validators/validators-function/regex-validation.function.mjs +0 -33
  541. package/esm2022/lib/forms/components/datepicker/datepicker-header.component.mjs +0 -84
  542. package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +0 -602
  543. package/esm2022/lib/forms/constants/constants.mjs +0 -4
  544. package/esm2022/lib/forms/directives/mat-form-field-editor.directive.mjs +0 -197
  545. package/esm2022/lib/forms/directives/mat-form-field-readonly.directive.mjs +0 -34
  546. package/esm2022/lib/forms/directives/parse-decimal-directive.mjs +0 -87
  547. package/esm2022/lib/forms/directives/vd-generic-form-custom-field.directive.mjs +0 -35
  548. package/esm2022/lib/forms/enums/form-field-type.mjs +0 -23
  549. package/esm2022/lib/forms/forms.module.mjs +0 -168
  550. package/esm2022/lib/forms/functions/decorators.mjs +0 -136
  551. package/esm2022/lib/forms/functions/functions.mjs +0 -72
  552. package/esm2022/lib/forms/helpers/abstract-mat-form-field.mjs +0 -308
  553. package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +0 -492
  554. package/esm2022/lib/forms/helpers/value-accessor-base.mjs +0 -146
  555. package/esm2022/lib/forms/models/form-definition.mjs +0 -63
  556. package/esm2022/lib/forms/models/form-field-definition.mjs +0 -468
  557. package/esm2022/lib/forms/models/form-field-group-definition.mjs +0 -55
  558. package/esm2022/lib/forms/pipes/field-func.pipe.mjs +0 -23
  559. package/esm2022/lib/forms/pipes/group-filter.pipe.mjs +0 -34
  560. package/esm2022/lib/forms/public_api.mjs +0 -5
  561. package/esm2022/lib/forms/validators/empty-string-reset.directive.mjs +0 -25
  562. package/esm2022/lib/forms/validators/equal-validator.directive.mjs +0 -69
  563. package/esm2022/lib/forms/validators/native-element-injector.directive.mjs +0 -41
  564. package/esm2022/lib/forms/validators/unique-validator-directive.mjs +0 -88
  565. package/esm2022/lib/http/http.module.mjs +0 -15
  566. package/esm2022/lib/http/models/response.mjs +0 -24
  567. package/esm2022/lib/http/public_api.mjs +0 -2
  568. package/esm2022/lib/http/services/generic.service.mjs +0 -331
  569. package/esm2022/lib/layout/dynamic-menu/dynamic-menu.component.mjs +0 -103
  570. package/esm2022/lib/layout/layout-card-over/layout-card-over.component.mjs +0 -49
  571. package/esm2022/lib/layout/layout-compact/layout-compact.component.mjs +0 -193
  572. package/esm2022/lib/layout/layout-footer/layout-footer.component.mjs +0 -37
  573. package/esm2022/lib/layout/layout-manage-list/layout-manage-list.component.mjs +0 -150
  574. package/esm2022/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +0 -108
  575. package/esm2022/lib/layout/layout-nav/layout-nav.component.mjs +0 -146
  576. package/esm2022/lib/layout/layout-nav-list/layout-nav-list.component.mjs +0 -141
  577. package/esm2022/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +0 -105
  578. package/esm2022/lib/layout/layout-toggle.class.mjs +0 -89
  579. package/esm2022/lib/layout/layout.component.mjs +0 -230
  580. package/esm2022/lib/layout/layout.directives.mjs +0 -81
  581. package/esm2022/lib/layout/layout.module.mjs +0 -144
  582. package/esm2022/lib/layout/list-toolbar/list-toolbar.component.mjs +0 -47
  583. package/esm2022/lib/layout/navigation-drawer/navigation-drawer.component.mjs +0 -275
  584. package/esm2022/lib/layout/public_api.mjs +0 -2
  585. package/esm2022/lib/list/components/list.component.mjs +0 -78
  586. package/esm2022/lib/list/directives/vd-list-option.directive.mjs +0 -23
  587. package/esm2022/lib/list/list.module.mjs +0 -36
  588. package/esm2022/lib/list/public_api.mjs +0 -3
  589. package/esm2022/lib/media/directives/media-toggle.directive.mjs +0 -154
  590. package/esm2022/lib/media/media.module.mjs +0 -35
  591. package/esm2022/lib/media/public_api.mjs +0 -2
  592. package/esm2022/lib/media/services/media.service.mjs +0 -110
  593. package/esm2022/lib/menu/components/menu.component.mjs +0 -95
  594. package/esm2022/lib/menu/enums/menu-scope.mjs +0 -6
  595. package/esm2022/lib/menu/menu.module.mjs +0 -64
  596. package/esm2022/lib/menu/models/menu-client.mjs +0 -39
  597. package/esm2022/lib/menu/models/menu-department.mjs +0 -39
  598. package/esm2022/lib/menu/models/menu-item-client.mjs +0 -39
  599. package/esm2022/lib/menu/models/menu-item-department.mjs +0 -39
  600. package/esm2022/lib/menu/models/menu-item.mjs +0 -351
  601. package/esm2022/lib/menu/models/menu-settings.mjs +0 -13
  602. package/esm2022/lib/menu/models/menu.mjs +0 -224
  603. package/esm2022/lib/menu/public_api.mjs +0 -3
  604. package/esm2022/lib/menu/resolvers/menu-form-includes.resolve.mjs +0 -50
  605. package/esm2022/lib/menu/resolvers/menu-item-form-includes.resolve.mjs +0 -50
  606. package/esm2022/lib/menu/resolvers/menu-list-projection.resolve.mjs +0 -51
  607. package/esm2022/lib/menu/resolvers/menu-settings.resolve.mjs +0 -24
  608. package/esm2022/lib/menu/services/menu-items.service.mjs +0 -19
  609. package/esm2022/lib/menu/services/menu.resolve.mjs +0 -68
  610. package/esm2022/lib/menu/services/menu.service.mjs +0 -19
  611. package/esm2022/lib/search/public_api.mjs +0 -2
  612. package/esm2022/lib/search/search.module.mjs +0 -33
  613. package/esm2022/lib/select/components/select.component.mjs +0 -215
  614. package/esm2022/lib/select/directives/vd-select-option.directive.mjs +0 -23
  615. package/esm2022/lib/select/directives/vd-select-trigger.directive.mjs +0 -23
  616. package/esm2022/lib/select/public_api.mjs +0 -4
  617. package/esm2022/lib/select/select.module.mjs +0 -48
  618. package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +0 -810
  619. package/esm2022/lib/table/components/filter-clear/filter-clear.component.mjs +0 -36
  620. package/esm2022/lib/table/components/filter-date/filter-date.component.mjs +0 -146
  621. package/esm2022/lib/table/components/filter-input/filter-input.component.mjs +0 -198
  622. package/esm2022/lib/table/components/filter-select/filter-select.component.mjs +0 -375
  623. package/esm2022/lib/table/constants/constants.mjs +0 -3
  624. package/esm2022/lib/table/directives/data-source-filter.directive.mjs +0 -49
  625. package/esm2022/lib/table/directives/vd-table-field.directive.mjs +0 -35
  626. package/esm2022/lib/table/enums/grid.mjs +0 -12
  627. package/esm2022/lib/table/enums/table-column-type.mjs +0 -17
  628. package/esm2022/lib/table/functions/decorators.mjs +0 -163
  629. package/esm2022/lib/table/functions/functions.mjs +0 -28
  630. package/esm2022/lib/table/models/facet-value.mjs +0 -47
  631. package/esm2022/lib/table/models/facet.mjs +0 -48
  632. package/esm2022/lib/table/models/pagination.mjs +0 -27
  633. package/esm2022/lib/table/models/table-column-config.mjs +0 -128
  634. package/esm2022/lib/table/models/table-column.mjs +0 -270
  635. package/esm2022/lib/table/models/table-config.mjs +0 -41
  636. package/esm2022/lib/table/models/table-definition.mjs +0 -110
  637. package/esm2022/lib/table/models/table-query-config.mjs +0 -26
  638. package/esm2022/lib/table/paginator-intl.mjs +0 -41
  639. package/esm2022/lib/table/public_api.mjs +0 -2
  640. package/esm2022/lib/table/table.data-source.mjs +0 -326
  641. package/esm2022/lib/table/table.module.mjs +0 -165
  642. package/esm2022/lib/table/table.static-data-source.mjs +0 -198
  643. package/esm2022/messaia-cdk.mjs +0 -5
  644. package/esm2022/public_api.mjs +0 -19
  645. package/lib/common/styles/_elevation.scss +0 -147
  646. package/lib/common/styles/_rtl.scss +0 -28
  647. package/lib/common/styles/_styles.scss +0 -12
  648. package/lib/common/styles/_theme-functions.scss +0 -4
  649. package/lib/common/styles/_typography.scss +0 -76
  650. package/lib/common/styles/core/_content.scss +0 -42
  651. package/lib/common/styles/core/_divider.scss +0 -14
  652. package/lib/common/styles/core/_icons.scss +0 -27
  653. package/lib/common/styles/core/_list.scss +0 -8
  654. package/lib/common/styles/core/_toolbar.scss +0 -31
  655. package/lib/common/styles/core/_whiteframe.scss +0 -111
  656. package/lib/common/styles/m2/_theme-functions.scss +0 -21
  657. package/lib/common/styles/m3/_theme-functions.scss +0 -21
  658. package/lib/common/theming/_all-theme.scss +0 -27
  659. package/lib/common/typography/_all-typography.scss +0 -33
@@ -1,500 +0,0 @@
1
- import { ARRAY_PROPERTY, OBJECT_PROPERTY, PROPERTY, RXCODE } from "../const";
2
- import { DECORATORS } from "../const/decorators.const";
3
- import { Linq } from "../util/linq";
4
- import { AnnotationTypes } from "./annotation-types";
5
- /**
6
- * Represents a default container for managing instance configurations.
7
- *
8
- * Manages the configuration and instantiation of validation decorators, sanitizers, and other properties for classes.
9
- * This class serves as a container for managing instance-related configurations and properties.
10
- */
11
- export class DefaultContainer {
12
- /**
13
- * Represents whether the container is operating in experimental mode.
14
- * Experimental mode may introduce features that are still under development or testing.
15
- */
16
- isExperimental = false;
17
- /**
18
- * Array containing instances and their configurations.
19
- * Each element represents an instance of the application with associated properties and decorators.
20
- */
21
- instances = [];
22
- /**
23
- * Counter used for generating unique identifiers for model instances.
24
- * This counter is incremented each time a new model instance is added to the container.
25
- */
26
- modelIncrementCount = 0;
27
- /**
28
- * Retrieves an instance container based on the provided instance function.
29
- * @param instanceFunc The instance function.
30
- * @returns The instance container.
31
- */
32
- get(instanceFunc) {
33
- return this.instances.filter(instance => instance.instance === instanceFunc)[0];
34
- }
35
- /**
36
- * Retrieves or creates an instance container based on the provided parameters.
37
- * @param target The target.
38
- * @param parameterIndex The parameter index.
39
- * @param propertyKey The property key.
40
- * @param decoratorType The decorator type.
41
- * @returns The instance container.
42
- */
43
- getInstance(target, parameterIndex, propertyKey, decoratorType) {
44
- /* Determine if the property key is defined */
45
- let isPropertyKey = (propertyKey != undefined);
46
- /* Get the instance function based on whether the property key is defined */
47
- let instanceFunc = !isPropertyKey ? target : target.constructor;
48
- /* Filter instances to find the one matching the instance function */
49
- let instance = this.instances.filter(instance => instance.instance === instanceFunc)[0];
50
- /* If no instance is found, create a new instance container */
51
- if (!instance) {
52
- instance = this.addInstanceContainer(instanceFunc);
53
- }
54
- /* Return the instance container */
55
- return instance;
56
- }
57
- /**
58
- * Adds property configurations to the instance container.
59
- * @param target The target.
60
- * @param configs The configurations.
61
- */
62
- addPropsConfig(target, configs) {
63
- /* Find the instance container associated with the target */
64
- let instanceContainer = this.instances.find(instance => instance.instance === target);
65
- /* Check if the instance container exists */
66
- if (instanceContainer) {
67
- /* Iterate through the provided configurations or an empty array if none are provided */
68
- for (let config of configs ?? []) {
69
- /* Iterate through the property names in the configuration */
70
- for (let prop of config.propNames) {
71
- /* Find the property info in the instance container's properties */
72
- let propertyInfo = instanceContainer.properties?.find(t => t.name == prop && (t.propertyType !== OBJECT_PROPERTY && t.propertyType !== ARRAY_PROPERTY));
73
- /* If the property info exists, add property configuration */
74
- if (propertyInfo) {
75
- this.addPropConfig(target, [propertyInfo], config);
76
- }
77
- else {
78
- /* If the property name is ':all:', add property configuration for all properties */
79
- if (prop === ":all:") {
80
- this.addPropConfig(target, instanceContainer.properties?.filter(t => t.propertyType !== OBJECT_PROPERTY && t.propertyType !== ARRAY_PROPERTY), config);
81
- }
82
- }
83
- }
84
- }
85
- }
86
- else if (configs === undefined) {
87
- /* If the instance container does not exist and no configurations are provided, create a new instance container */
88
- this.addInstanceContainer(target);
89
- }
90
- }
91
- /**
92
- * Adds a property configuration to the instance container.
93
- * @param target The target.
94
- * @param properties The properties.
95
- * @param config The configuration.
96
- */
97
- addPropConfig(target, properties, config) {
98
- /* Iterates through the provided properties and applies configurations based on the provided config object */
99
- for (var propertyInfo of properties) {
100
- let excludeProp = false;
101
- /* Check if excludePropNames exist in the config */
102
- if (config.excludePropNames) {
103
- /* Check if the current property should be excluded based on its name */
104
- excludeProp = config.excludePropNames.find(t => t == propertyInfo.name) !== undefined;
105
- }
106
- /* If the property should not be excluded */
107
- if (!excludeProp) {
108
- /* Apply validation configurations */
109
- if (config.validationConfig) {
110
- /* Iterate through the validation configurations */
111
- for (let typeName in config.validationConfig) {
112
- /* Initialize validation for the property */
113
- this.init({ constructor: target }, 0, propertyInfo.name, typeName, config.validationConfig[typeName] === true ? undefined : config.validationConfig[typeName], false);
114
- }
115
- }
116
- /* Apply error decorator configuration */
117
- if (config.error) {
118
- this.addDecoratorConfig({ constructor: target }, 0, propertyInfo.name, config.error, DECORATORS.error);
119
- }
120
- /* Apply disable decorator configuration */
121
- if (config.disable) {
122
- this.addDecoratorConfig({ constructor: target }, 0, propertyInfo.name, config.disable, DECORATORS.disabled);
123
- }
124
- /* Apply elementClass decorator configuration */
125
- if (config.elementClass) {
126
- this.addDecoratorConfig({ constructor: target }, 0, propertyInfo.name, config.elementClass, DECORATORS.elementClass);
127
- }
128
- /* Apply ignore configuration */
129
- if (config.ignore) {
130
- propertyInfo.ignore = config.ignore;
131
- }
132
- }
133
- }
134
- }
135
- /**
136
- * Adds a sanitizer to the instance container.
137
- * @param target The target.
138
- * @param parameterIndex The parameter index.
139
- * @param propertyKey The property key.
140
- * @param decoratorType The decorator type.
141
- * @param value The value.
142
- */
143
- addSanitizer(target, parameterIndex, propertyKey, decoratorType, value) {
144
- /* Retrieves the instance container based on the provided parameters and adds a sanitizer configuration to it */
145
- let instance = this.getInstance(target, parameterIndex, propertyKey, decoratorType);
146
- if (instance) {
147
- /* Check if the sanitizers object for the property exists */
148
- if (!instance.sanitizers[propertyKey]) {
149
- instance.sanitizers[propertyKey] = [];
150
- }
151
- /* Push the sanitizer configuration to the sanitizers object */
152
- instance.sanitizers[propertyKey].push({ name: decoratorType, config: value });
153
- }
154
- }
155
- /**
156
- * Adds a decorator configuration to the instance container.
157
- * @param target The target.
158
- * @param parameterIndex The parameter index.
159
- * @param propertyKey The property key.
160
- * @param config The configuration.
161
- * @param decoratorType The decorator type.
162
- */
163
- addDecoratorConfig(target, parameterIndex, propertyKey, config, decoratorType) {
164
- /* Determine if the property key is defined */
165
- let isPropertyKey = (propertyKey != undefined);
166
- /* Determine the function or constructor to be used as instanceFunc */
167
- let instanceFunc = !isPropertyKey ? target : target.constructor;
168
- /* Find the instance container based on instanceFunc */
169
- let instance = this.instances.find(instance => instance.instance === instanceFunc);
170
- /* If the instance container doesn't exist, create a new one */
171
- if (!instance) {
172
- instance = this.addInstanceContainer(instanceFunc);
173
- }
174
- /* Add conditional expressions to the non-validation decorators of the instance container */
175
- (instance?.nonValidationDecorators)[decoratorType].conditionalExpressions[propertyKey] = config.conditionalExpression;
176
- /* Extract columns from the conditional expression */
177
- let columns = Linq.expressionColumns(config.conditionalExpression, true);
178
- /* Iterate over each column */
179
- columns.forEach(column => {
180
- if (column.argumentIndex !== -1) {
181
- /* Construct the column name based on whether objectPropName is defined */
182
- let columnName = (!column.objectPropName) ? `${column.propName}${RXCODE}${column.argumentIndex}` : `${column.objectPropName}.${column.propName}${RXCODE}${column.argumentIndex}`;
183
- /* Check if the column exists in changeDetection and initialize it if necessary */
184
- if (!(instance?.nonValidationDecorators)[decoratorType].changeDetection[columnName]) {
185
- (instance?.nonValidationDecorators)[decoratorType].changeDetection[columnName] = [];
186
- }
187
- /* Add the property key to the changeDetection column */
188
- let disabledColumns = (instance?.nonValidationDecorators)[decoratorType].changeDetection[columnName];
189
- if (disabledColumns.indexOf(columnName) === -1) {
190
- disabledColumns.push(propertyKey);
191
- }
192
- }
193
- else {
194
- /* Handle the controlProp if argumentIndex is -1 */
195
- if (!(instance?.nonValidationDecorators)[decoratorType].controlProp[propertyKey]) {
196
- (instance?.nonValidationDecorators)[decoratorType].controlProp[propertyKey] = {};
197
- }
198
- /* Set the column name to true in controlProp */
199
- (instance?.nonValidationDecorators)[decoratorType].controlProp[propertyKey][column.propName.replace(";", "")] = true;
200
- }
201
- });
202
- }
203
- /**
204
- * Initializes a decorator configuration.
205
- * @param target The target.
206
- * @param parameterIndex The parameter index.
207
- * @param propertyKey The property key.
208
- * @param annotationType The annotation type.
209
- * @param config The configuration.
210
- * @param isAsync Indicates whether it's an asynchronous operation.
211
- */
212
- init(target, parameterIndex, propertyKey, annotationType, config, isAsync) {
213
- /* Define the decorator configuration */
214
- var decoratorConfiguration = {
215
- propertyIndex: parameterIndex,
216
- propertyName: propertyKey,
217
- annotationType: annotationType,
218
- config: config,
219
- isAsync: isAsync,
220
- isValidator: annotationType !== "updateOn"
221
- };
222
- /* Determine if the property key is defined */
223
- let isPropertyKey = (propertyKey != undefined);
224
- /* Determine the function or constructor to be used as instanceFunc */
225
- this.addAnnotation(!isPropertyKey ? target : target.constructor, decoratorConfiguration);
226
- }
227
- /**
228
- * Initializes a property object.
229
- * @param name The name.
230
- * @param propertyType The property type.
231
- * @param entity The entity.
232
- * @param target The target.
233
- * @param config The configuration.
234
- */
235
- initPropertyObject(name, propertyType, entity, target, config) {
236
- /* Define the property information */
237
- var propertyInfo = {
238
- name: name,
239
- propertyType: propertyType,
240
- entity: entity,
241
- dataPropertyName: config ? config.name : undefined,
242
- entityProvider: config ? config.entityProvider : undefined
243
- };
244
- /* Add the property to the target's constructor */
245
- this.addProperty(target.constructor, propertyInfo);
246
- }
247
- /**
248
- * Adds an instance container to the list of instances.
249
- * @param instanceFunc The instance function.
250
- * @returns The added instance container.
251
- */
252
- addInstanceContainer(instanceFunc) {
253
- /* Define an instance container */
254
- let instanceContainer = {
255
- instance: instanceFunc, /* Instance associated with the container */
256
- propertyAnnotations: [], /* Annotations for the properties */
257
- properties: [], /* Properties associated with the instance */
258
- nonValidationDecorators: {
259
- /* Disabled decorators */
260
- disabled: {
261
- conditionalExpressions: {}, /* Conditional expressions for disabled decorators */
262
- changeDetection: {}, /* Change detection for disabled decorators */
263
- controlProp: {} /* Control properties for disabled decorators */
264
- },
265
- /* Error decorators */
266
- error: {
267
- conditionalExpressions: {}, /* Conditional expressions for error decorators */
268
- changeDetection: {}, /* Change detection for error decorators */
269
- controlProp: {} /* Control properties for error decorators */
270
- },
271
- /* Element class decorators */
272
- elementClass: {
273
- conditionalExpressions: {}, /* Conditional expressions for element class decorators */
274
- changeDetection: {}, /* Change detection for element class decorators */
275
- controlProp: {} /* Control properties for element class decorators */
276
- }
277
- },
278
- /* Sanitizers associated with the instance */
279
- sanitizers: {}
280
- };
281
- /* Add the instance container to the instances array */
282
- this.instances.push(instanceContainer);
283
- /* Return the created instance container */
284
- return instanceContainer;
285
- }
286
- /**
287
- * Adds a property to the instance container.
288
- * @param instanceFunc The instance function.
289
- * @param propertyInfo The property information.
290
- * @param isFromAnnotation Indicates whether it's added from an annotation.
291
- */
292
- addProperty(instanceFunc, propertyInfo, isFromAnnotation = false) {
293
- /* Find the instance in the instances array */
294
- let instance = this.instances.find(instance => instance.instance === instanceFunc);
295
- /* Check if the instance exists */
296
- if (instance) {
297
- /* Add property information to the existing instance */
298
- this.addPropertyInfo(instance, propertyInfo, !isFromAnnotation);
299
- }
300
- else {
301
- /* Create a new instance container if it doesn't exist */
302
- instance = this.addInstanceContainer(instanceFunc);
303
- /* Add property information to the newly created instance */
304
- this.addPropertyInfo(instance, propertyInfo);
305
- }
306
- }
307
- /**
308
- * Adds property information to the instance container.
309
- * @param instance The instance container.
310
- * @param propertyInfo The property information.
311
- * @param isAddProperty Indicates whether it's added as a new property.
312
- */
313
- addPropertyInfo(instance, propertyInfo, isAddProperty = false) {
314
- /* Find the property with the same name in the instance's properties */
315
- var property = instance.properties?.find(t => t.name == propertyInfo.name);
316
- /* Check if the property doesn't already exist */
317
- if (!property) {
318
- /* Add the property information to the instance's properties */
319
- instance.properties?.push(propertyInfo);
320
- }
321
- else if (isAddProperty) {
322
- /* Update property information if requested */
323
- property.dataPropertyName = propertyInfo.dataPropertyName;
324
- property.defaultValue = propertyInfo.defaultValue;
325
- property.valuePath = propertyInfo.valuePath;
326
- property.value = propertyInfo.value;
327
- }
328
- }
329
- /**
330
- * Adds an annotation to the instance container.
331
- * @param instanceFunc The instance function.
332
- * @param decoratorConfiguration The decorator configuration.
333
- */
334
- addAnnotation(instanceFunc, decoratorConfiguration) {
335
- /* Add property information to the instance */
336
- this.addProperty(instanceFunc, { propertyType: PROPERTY, name: decoratorConfiguration.propertyName }, true);
337
- /* Find or create the instance in the instances array */
338
- let instance = this.instances.find(instance => instance.instance === instanceFunc);
339
- if (instance) {
340
- /* Add the decorator configuration to the instance's property annotations */
341
- instance.propertyAnnotations.push(decoratorConfiguration);
342
- }
343
- else {
344
- instance = this.addInstanceContainer(instanceFunc);
345
- instance.propertyAnnotations.push(decoratorConfiguration);
346
- }
347
- /* Add change validation based on the provided configuration */
348
- if (decoratorConfiguration.config && decoratorConfiguration.config.conditionalExpression) {
349
- let columns = Linq.expressionColumns(decoratorConfiguration.config.conditionalExpression);
350
- this.addChangeValidation(instance, decoratorConfiguration.propertyName, columns);
351
- }
352
- /* Add dynamic configuration and validation */
353
- if (decoratorConfiguration.config && decoratorConfiguration.config.dynamicConfig) {
354
- let columns = Linq.dynamicConfigParser(decoratorConfiguration.config.dynamicConfig, decoratorConfiguration.propertyName);
355
- this.addChangeValidation(instance, decoratorConfiguration.propertyName, columns);
356
- }
357
- /* Set conditional columns based on the decorator configuration */
358
- this.setConditionalColumns(instance, decoratorConfiguration);
359
- }
360
- /**
361
- * Sets conditional columns based on the decorator configuration.
362
- * @param instance The instance container.
363
- * @param decoratorConfiguration The decorator configuration.
364
- */
365
- setConditionalColumns(instance, decoratorConfiguration) {
366
- /* Checks if there is an instance and decorator configuration present */
367
- if (instance && decoratorConfiguration.config) {
368
- /* Handles logical annotations (AND, OR, NOT) */
369
- if (decoratorConfiguration.annotationType == AnnotationTypes.and ||
370
- decoratorConfiguration.annotationType == AnnotationTypes.or ||
371
- decoratorConfiguration.annotationType == AnnotationTypes.not) {
372
- /* Iterates over validation configurations */
373
- Object.keys(decoratorConfiguration.config.validation).forEach(t => {
374
- /* Checks if the validation configuration is not a boolean */
375
- if (typeof decoratorConfiguration.config.validation[t] !== "boolean") {
376
- /* Sets logical conditional based on the validation configuration */
377
- this.setLogicalConditional(instance, t, decoratorConfiguration.config.validation[t].fieldName, decoratorConfiguration.propertyName);
378
- }
379
- });
380
- }
381
- else {
382
- /* Sets logical conditional for non-logical annotations */
383
- this.setLogicalConditional(instance, decoratorConfiguration.annotationType, decoratorConfiguration.config.fieldName, decoratorConfiguration.propertyName);
384
- }
385
- }
386
- }
387
- /**
388
- * Sets logical conditionals based on the decorator configuration.
389
- * @param instance The instance container.
390
- * @param annotationType The annotation type.
391
- * @param fieldName The field name.
392
- * @param propertyName The property name.
393
- */
394
- setLogicalConditional(instance, annotationType, fieldName, propertyName) {
395
- /*
396
- * Checks if there is an instance and annotation type with applicable conditions
397
- * for setting conditional value properties.
398
- */
399
- if (instance && ((annotationType == AnnotationTypes.compare ||
400
- annotationType == AnnotationTypes.greaterThan ||
401
- annotationType == AnnotationTypes.greaterThanEqualTo ||
402
- annotationType == AnnotationTypes.lessThan ||
403
- annotationType == AnnotationTypes.lessThanEqualTo ||
404
- annotationType == AnnotationTypes.different ||
405
- annotationType == AnnotationTypes.factor ||
406
- annotationType == AnnotationTypes.minTime ||
407
- annotationType == AnnotationTypes.maxTime) ||
408
- (annotationType == AnnotationTypes.creditCard && fieldName) ||
409
- ((annotationType == AnnotationTypes.minDate || annotationType == AnnotationTypes.maxDate) && fieldName))) {
410
- /* Sets conditional value property based on the conditions */
411
- this.setConditionalValueProp(instance, fieldName, propertyName);
412
- }
413
- }
414
- /**
415
- * Sets conditional value properties based on the decorator configuration.
416
- * @param instance The instance container.
417
- * @param propertyName The property name.
418
- * @param refPropertyName The reference property name.
419
- */
420
- setConditionalValueProp(instance, propertyName, refPropertyName) {
421
- /* Checks if propName exists */
422
- if (propertyName) {
423
- /* Splits propName into individual properties */
424
- let splitProps = propertyName.split ? propertyName.split('.') : '';
425
- /* Checks if the length of splitProps is less than 2 */
426
- if (splitProps.length < 2) {
427
- /* Initializes conditionalValidationProps if it does not exist */
428
- if (!instance.conditionalValidationProps) {
429
- instance.conditionalValidationProps = {};
430
- }
431
- /* Initializes conditionalValidationProps[propName] if it does not exist */
432
- if (!instance.conditionalValidationProps[propertyName]) {
433
- instance.conditionalValidationProps[propertyName] = [];
434
- }
435
- /* Pushes refPropName into conditionalValidationProps[propName] if it does not exist */
436
- if (instance.conditionalValidationProps[propertyName].indexOf(refPropertyName) == -1) {
437
- instance.conditionalValidationProps[propertyName].push(refPropertyName);
438
- }
439
- }
440
- else {
441
- /* Adds change validation for complex properties */
442
- this.addChangeValidation(instance, refPropertyName, [{
443
- argumentIndex: 1,
444
- objectPropName: splitProps[0],
445
- propName: splitProps[1],
446
- referencePropName: refPropertyName
447
- }]);
448
- }
449
- }
450
- }
451
- /**
452
- * Adds change validation based on the columns.
453
- * @param instance The instance container.
454
- * @param propertyName The property name.
455
- * @param columns The columns.
456
- */
457
- addChangeValidation(instance, propertyName, columns) {
458
- /* Checks if instance exists. */
459
- if (instance) {
460
- /* Initializes conditionalValidationProps if it does not exist. */
461
- if (!instance.conditionalValidationProps) {
462
- instance.conditionalValidationProps = {};
463
- }
464
- /* Iterates through columns. */
465
- columns.forEach(t => {
466
- /* Checks if propName exists and objectPropName does not exist. */
467
- if (t.propName && !t.objectPropName) {
468
- /* Initializes conditionalValidationProps[t.propName] if it does not exist. */
469
- if (!instance.conditionalValidationProps[t.propName]) {
470
- instance.conditionalValidationProps[t.propName] = [];
471
- }
472
- /* Pushes propertyName into conditionalValidationProps[t.propName] if it does not exist. */
473
- if (instance.conditionalValidationProps[t.propName].indexOf(propertyName) == -1) {
474
- instance.conditionalValidationProps[t.propName].push(propertyName);
475
- }
476
- }
477
- else {
478
- /* Checks if propName and objectPropName exist. */
479
- if (t.propName && t.objectPropName) {
480
- /* Initializes conditionalObjectProps if it does not exist. */
481
- if (!instance.conditionalObjectProps) {
482
- instance.conditionalObjectProps = [];
483
- }
484
- /* Sets referencePropName and adds it to conditionalObjectProps. */
485
- t.referencePropName = propertyName;
486
- instance.conditionalObjectProps.push(t);
487
- }
488
- }
489
- });
490
- }
491
- }
492
- }
493
- /**
494
- * Represents a default container for managing instance configurations.
495
- *
496
- * Manages the configuration and instantiation of validation decorators, sanitizers, and other properties for classes.
497
- * This class serves as a container for managing instance-related configurations and properties.
498
- */
499
- export const defaultContainer = new DefaultContainer();
500
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvY29yZS9kZWZhdWx0LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7OztJQUdBO0lBQ08sY0FBYyxHQUFZLEtBQUssQ0FBQztJQUV2Qzs7O09BR0c7SUFDSyxTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUU1Qzs7O09BR0c7SUFDSSxtQkFBbUIsR0FBVyxDQUFDLENBQUM7SUFFdkM7Ozs7T0FJRztJQUNJLEdBQUcsQ0FBSSxZQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsQ0FBQyxNQUFXLEVBQUUsY0FBbUIsRUFBRSxXQUFtQixFQUFFLGFBQXFCO1FBQzNGLDhDQUE4QztRQUM5QyxJQUFJLGFBQWEsR0FBRyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUUvQyw0RUFBNEU7UUFDNUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFB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dGVudCI6WyJpbXBvcnQgeyBBUlJBWV9QUk9QRVJUWSwgT0JKRUNUX1BST1BFUlRZLCBQUk9QRVJUWSwgUlhDT0RFIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcbmltcG9ydCB7IERFQ09SQVRPUlMgfSBmcm9tIFwiLi4vY29uc3QvZGVjb3JhdG9ycy5jb25zdFwiO1xyXG5pbXBvcnQgeyBQcm9wc0NvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnL3Byb3BzLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBEZWNvcmF0b3JDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9kZWNvcmF0b3ItY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBJbnN0YW5jZUNvbnRhaW5lciB9IGZyb20gXCIuLi9tb2RlbHMvaW5zdGFuY2UtY29udGFpbmVyXCI7XHJcbmltcG9ydCB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCIuLi9tb2RlbHMvcHJvcGVydHktaW5mb1wiO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSBcIi4uL3V0aWwvbGlucVwiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi9hbm5vdGF0aW9uLXR5cGVzXCI7XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGRlZmF1bHQgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZSBjb25maWd1cmF0aW9ucy5cclxuICogXHJcbiAqIE1hbmFnZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBzYW5pdGl6ZXJzLCBhbmQgb3RoZXIgcHJvcGVydGllcyBmb3IgY2xhc3Nlcy5cclxuICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIG1hbmFnaW5nIGluc3RhbmNlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGVmYXVsdENvbnRhaW5lciB7XHJcbiAgICAvKipcclxuICAqIFJlcHJlc2VudHMgd2hldGhlciB0aGUgY29udGFpbmVyIGlzIG9wZXJhdGluZyBpbiBleHBlcmltZW50YWwgbW9kZS5cclxuICAqIEV4cGVyaW1lbnRhbCBtb2RlIG1heSBpbnRyb2R1Y2UgZmVhdHVyZXMgdGhhdCBhcmUgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgb3IgdGVzdGluZy5cclxuICAqL1xyXG4gICAgcHVibGljIGlzRXhwZXJpbWVudGFsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSBjb250YWluaW5nIGluc3RhbmNlcyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbnMuXHJcbiAgICAgKiBFYWNoIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwbGljYXRpb24gd2l0aCBhc3NvY2lhdGVkIHByb3BlcnRpZXMgYW5kIGRlY29yYXRvcnMuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5zdGFuY2VzOiBJbnN0YW5jZUNvbnRhaW5lcltdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3VudGVyIHVzZWQgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGlkZW50aWZpZXJzIGZvciBtb2RlbCBpbnN0YW5jZXMuXHJcbiAgICAgKiBUaGlzIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIGEgbmV3IG1vZGVsIGluc3RhbmNlIGlzIGFkZGVkIHRvIHRoZSBjb250YWluZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb2RlbEluY3JlbWVudENvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGFuIGluc3RhbmNlIGNvbnRhaW5lciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2VGdW5jIFRoZSBpbnN0YW5jZSBmdW5jdGlvbi5cclxuICAgICAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQ8VD4oaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VzLmZpbHRlcihpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKVswXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBvciBjcmVhdGVzIGFuIGluc3RhbmNlIGNvbnRhaW5lciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgZGVjb3JhdG9yIHR5cGUuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0SW5zdGFuY2UodGFyZ2V0OiBhbnksIHBhcmFtZXRlckluZGV4OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlY29yYXRvclR5cGU6IHN0cmluZykge1xyXG4gICAgICAgIC8qIERldGVybWluZSBpZiB0aGUgcHJvcGVydHkga2V5IGlzIGRlZmluZWQgKi9cclxuICAgICAgICBsZXQgaXNQcm9wZXJ0eUtleSA9IChwcm9wZXJ0eUtleSAhPSB1bmRlZmluZWQpO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGluc3RhbmNlIGZ1bmN0aW9uIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlRnVuYyA9ICFpc1Byb3BlcnR5S2V5ID8gdGFyZ2V0IDogdGFyZ2V0LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgICAgICAvKiBGaWx0ZXIgaW5zdGFuY2VzIHRvIGZpbmQgdGhlIG9uZSBtYXRjaGluZyB0aGUgaW5zdGFuY2UgZnVuY3Rpb24gKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcblxyXG4gICAgICAgIC8qIElmIG5vIGluc3RhbmNlIGlzIGZvdW5kLCBjcmVhdGUgYSBuZXcgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFJldHVybiB0aGUgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBwcm9wZXJ0eSBjb25maWd1cmF0aW9ucyB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIGNvbmZpZ3MgVGhlIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcHNDb25maWcodGFyZ2V0OiBhbnksIGNvbmZpZ3M/OiBQcm9wc0NvbmZpZ1tdKSB7XHJcbiAgICAgICAgLyogRmluZCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFyZ2V0ICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyID0gdGhpcy5pbnN0YW5jZXMuZmluZChpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gdGFyZ2V0KTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBleGlzdHMgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2VDb250YWluZXIpIHtcclxuICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9ucyBvciBhbiBlbXB0eSBhcnJheSBpZiBub25lIGFyZSBwcm92aWRlZCAqL1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjb25maWcgb2YgY29uZmlncyA/PyBbXSkge1xyXG4gICAgICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBwcm9wZXJ0eSBuYW1lcyBpbiB0aGUgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcHJvcCBvZiBjb25maWcucHJvcE5hbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogRmluZCB0aGUgcHJvcGVydHkgaW5mbyBpbiB0aGUgaW5zdGFuY2UgY29udGFpbmVyJ3MgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eUluZm8gPSBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzPy5maW5kKHQgPT4gdC5uYW1lID09IHByb3AgJiYgKHQucHJvcGVydHlUeXBlICE9PSBPQkpFQ1RfUFJPUEVSVFkgJiYgdC5wcm9wZXJ0eVR5cGUgIT09IEFSUkFZX1BST1BFUlRZKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBpbmZvIGV4aXN0cywgYWRkIHByb3BlcnR5IGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvcENvbmZpZyh0YXJnZXQsIFtwcm9wZXJ0eUluZm9dLCBjb25maWcpXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgdGhlIHByb3BlcnR5IG5hbWUgaXMgJzphbGw6JywgYWRkIHByb3BlcnR5IGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSBcIjphbGw6XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvcENvbmZpZyh0YXJnZXQsIGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXM/LmZpbHRlcih0ID0+IHQucHJvcGVydHlUeXBlICE9PSBPQkpFQ1RfUFJPUEVSVFkgJiYgdC5wcm9wZXJ0eVR5cGUgIT09IEFSUkFZX1BST1BFUlRZKSEsIGNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZ3MgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAvKiBJZiB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGRvZXMgbm90IGV4aXN0IGFuZCBubyBjb25maWd1cmF0aW9ucyBhcmUgcHJvdmlkZWQsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBjb250YWluZXIgKi9cclxuICAgICAgICAgICAgdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcih0YXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBwcm9wZXJ0eSBjb25maWd1cmF0aW9uIHRvIHRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyBUaGUgcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRQcm9wQ29uZmlnKHRhcmdldDogYW55LCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUluZm9bXSwgY29uZmlnOiBQcm9wc0NvbmZpZykge1xyXG4gICAgICAgIC8qIEl0ZXJhdGVzIHRocm91Z2ggdGhlIHByb3ZpZGVkIHByb3BlcnRpZXMgYW5kIGFwcGxpZXMgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZyBvYmplY3QgKi9cclxuICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eUluZm8gb2YgcHJvcGVydGllcykge1xyXG4gICAgICAgICAgICBsZXQgZXhjbHVkZVByb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrIGlmIGV4Y2x1ZGVQcm9wTmFtZXMgZXhpc3QgaW4gdGhlIGNvbmZpZyAqL1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnLmV4Y2x1ZGVQcm9wTmFtZXMpIHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjdXJyZW50IHByb3BlcnR5IHNob3VsZCBiZSBleGNsdWRlZCBiYXNlZCBvbiBpdHMgbmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgZXhjbHVkZVByb3AgPSBjb25maWcuZXhjbHVkZVByb3BOYW1lcy5maW5kKHQgPT4gdCA9PSBwcm9wZXJ0eUluZm8ubmFtZSkgIT09IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogSWYgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgZXhjbHVkZWQgKi9cclxuICAgICAgICAgICAgaWYgKCFleGNsdWRlUHJvcCkge1xyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgdmFsaWRhdGlvbiBjb25maWd1cmF0aW9ucyAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy52YWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb25zICovXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdHlwZU5hbWUgaW4gY29uZmlnLnZhbGlkYXRpb25Db25maWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZSB2YWxpZGF0aW9uIGZvciB0aGUgcHJvcGVydHkgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0KHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgdHlwZU5hbWUsIChjb25maWcudmFsaWRhdGlvbkNvbmZpZyBhcyBhbnkpW3R5cGVOYW1lXSA9PT0gdHJ1ZSA/IHVuZGVmaW5lZCA6IChjb25maWcudmFsaWRhdGlvbkNvbmZpZyBhcyBhbnkpW3R5cGVOYW1lXSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBcHBseSBlcnJvciBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGVjb3JhdG9yQ29uZmlnKHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgY29uZmlnLmVycm9yLCBERUNPUkFUT1JTLmVycm9yKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IGRpc2FibGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuZGlzYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGVjb3JhdG9yQ29uZmlnKHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgY29uZmlnLmRpc2FibGUsIERFQ09SQVRPUlMuZGlzYWJsZWQpXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgZWxlbWVudENsYXNzIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmVsZW1lbnRDbGFzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGVjb3JhdG9yQ29uZmlnKHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgY29uZmlnLmVsZW1lbnRDbGFzcywgREVDT1JBVE9SUy5lbGVtZW50Q2xhc3MpXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgaWdub3JlIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuaWdub3JlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJbmZvLmlnbm9yZSA9IGNvbmZpZy5pZ25vcmVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBzYW5pdGl6ZXIgdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgZGVjb3JhdG9yIHR5cGUuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkU2FuaXRpemVyKHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZWNvcmF0b3JUeXBlOiBzdHJpbmcsIHZhbHVlPzogYW55KSB7XHJcbiAgICAgICAgLyogUmV0cmlldmVzIHRoZSBpbnN0YW5jZSBjb250YWluZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMgYW5kIGFkZHMgYSBzYW5pdGl6ZXIgY29uZmlndXJhdGlvbiB0byBpdCAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuZ2V0SW5zdGFuY2UodGFyZ2V0LCBwYXJhbWV0ZXJJbmRleCwgcHJvcGVydHlLZXksIGRlY29yYXRvclR5cGUpO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgc2FuaXRpemVycyBvYmplY3QgZm9yIHRoZSBwcm9wZXJ0eSBleGlzdHMgKi9cclxuICAgICAgICAgICAgaWYgKCEoaW5zdGFuY2Uuc2FuaXRpemVycyBhcyBhbnkpW3Byb3BlcnR5S2V5XSkge1xyXG4gICAgICAgICAgICAgICAgKGluc3RhbmNlLnNhbml0aXplcnMgYXMgYW55KVtwcm9wZXJ0eUtleV0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogUHVzaCB0aGUgc2FuaXRpemVyIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHNhbml0aXplcnMgb2JqZWN0ICovXHJcbiAgICAgICAgICAgIChpbnN0YW5jZS5zYW5pdGl6ZXJzIGFzIGFueSlbcHJvcGVydHlLZXldLnB1c2goeyBuYW1lOiBkZWNvcmF0b3JUeXBlLCBjb25maWc6IHZhbHVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIHBhcmFtZXRlckluZGV4IFRoZSBwYXJhbWV0ZXIgaW5kZXguXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgVGhlIHByb3BlcnR5IGtleS5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgZGVjb3JhdG9yIHR5cGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGREZWNvcmF0b3JDb25maWcodGFyZ2V0OiBhbnksIHBhcmFtZXRlckluZGV4OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGNvbmZpZzogYW55LCBkZWNvcmF0b3JUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvKiBEZXRlcm1pbmUgaWYgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGlzUHJvcGVydHlLZXkgPSAocHJvcGVydHlLZXkgIT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0byBiZSB1c2VkIGFzIGluc3RhbmNlRnVuYyAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUZ1bmMgPSAhaXNQcm9wZXJ0eUtleSA/IHRhcmdldCA6IHRhcmdldC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICAgICAgLyogRmluZCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGJhc2VkIG9uIGluc3RhbmNlRnVuYyAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcblxyXG4gICAgICAgIC8qIElmIHRoZSBpbnN0YW5jZSBjb250YWluZXIgZG9lc24ndCBleGlzdCwgY3JlYXRlIGEgbmV3IG9uZSAqL1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgdG8gdGhlIG5vbi12YWxpZGF0aW9uIGRlY29yYXRvcnMgb2YgdGhlIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIChpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jb25kaXRpb25hbEV4cHJlc3Npb25zW3Byb3BlcnR5S2V5XSA9IGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb247XHJcblxyXG4gICAgICAgIC8qIEV4dHJhY3QgY29sdW1ucyBmcm9tIHRoZSBjb25kaXRpb25hbCBleHByZXNzaW9uICovXHJcbiAgICAgICAgbGV0IGNvbHVtbnMgPSBMaW5xLmV4cHJlc3Npb25Db2x1bW5zKGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24sIHRydWUpO1xyXG5cclxuICAgICAgICAvKiBJdGVyYXRlIG92ZXIgZWFjaCBjb2x1bW4gKi9cclxuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi5hcmd1bWVudEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgLyogQ29uc3RydWN0IHRoZSBjb2x1bW4gbmFtZSBiYXNlZCBvbiB3aGV0aGVyIG9iamVjdFByb3BOYW1lIGlzIGRlZmluZWQgKi9cclxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lID0gKCFjb2x1bW4ub2JqZWN0UHJvcE5hbWUpID8gYCR7Y29sdW1uLnByb3BOYW1lfSR7UlhDT0RFfSR7Y29sdW1uLmFyZ3VtZW50SW5kZXh9YCA6IGAke2NvbHVtbi5vYmplY3RQcm9wTmFtZX0uJHtjb2x1bW4ucHJvcE5hbWV9JHtSWENPREV9JHtjb2x1bW4uYXJndW1lbnRJbmRleH1gO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjb2x1bW4gZXhpc3RzIGluIGNoYW5nZURldGVjdGlvbiBhbmQgaW5pdGlhbGl6ZSBpdCBpZiBuZWNlc3NhcnkgKi9cclxuICAgICAgICAgICAgICAgIGlmICghKGluc3RhbmNlPy5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW2RlY29yYXRvclR5cGVdLmNoYW5nZURldGVjdGlvbltjb2x1bW5OYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIChpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV0gPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIHByb3BlcnR5IGtleSB0byB0aGUgY2hhbmdlRGV0ZWN0aW9uIGNvbHVtbiAqL1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpc2FibGVkQ29sdW1ucyA9IChpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV07XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWRDb2x1bW5zLmluZGV4T2YoY29sdW1uTmFtZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRDb2x1bW5zLnB1c2gocHJvcGVydHlLZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLyogSGFuZGxlIHRoZSBjb250cm9sUHJvcCBpZiBhcmd1bWVudEluZGV4IGlzIC0xICovXHJcbiAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jb250cm9sUHJvcFtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29udHJvbFByb3BbcHJvcGVydHlLZXldID0ge307XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogU2V0IHRoZSBjb2x1bW4gbmFtZSB0byB0cnVlIGluIGNvbnRyb2xQcm9wICovXHJcbiAgICAgICAgICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29udHJvbFByb3BbcHJvcGVydHlLZXldW2NvbHVtbi5wcm9wTmFtZS5yZXBsYWNlKFwiO1wiLCBcIlwiKV0gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIHBhcmFtZXRlckluZGV4IFRoZSBwYXJhbWV0ZXIgaW5kZXguXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgVGhlIHByb3BlcnR5IGtleS5cclxuICAgICAqIEBwYXJhbSBhbm5vdGF0aW9uVHlwZSBUaGUgYW5ub3RhdGlvbiB0eXBlLlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSBpc0FzeW5jIEluZGljYXRlcyB3aGV0aGVyIGl0J3MgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXQodGFyZ2V0OiBhbnksIHBhcmFtZXRlckluZGV4OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGFubm90YXRpb25UeXBlOiBzdHJpbmcsIGNvbmZpZzogYW55LCBpc0FzeW5jOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgLyogRGVmaW5lIHRoZSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgIHZhciBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICAgICAgICBwcm9wZXJ0eUluZGV4OiBwYXJhbWV0ZXJJbmRleCxcclxuICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eUtleSxcclxuICAgICAgICAgICAgYW5ub3RhdGlvblR5cGU6IGFubm90YXRpb25UeXBlLFxyXG4gICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcclxuICAgICAgICAgICAgaXNBc3luYzogaXNBc3luYyxcclxuICAgICAgICAgICAgaXNWYWxpZGF0b3I6IGFubm90YXRpb25UeXBlICE9PSBcInVwZGF0ZU9uXCJcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIERldGVybWluZSBpZiB0aGUgcHJvcGVydHkga2V5IGlzIGRlZmluZWQgKi9cclxuICAgICAgICBsZXQgaXNQcm9wZXJ0eUtleSA9IChwcm9wZXJ0eUtleSAhPSB1bmRlZmluZWQpO1xyXG5cclxuICAgICAgICAvKiBEZXRlcm1pbmUgdGhlIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQgYXMgaW5zdGFuY2VGdW5jICovXHJcbiAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKCFpc1Byb3BlcnR5S2V5ID8gdGFyZ2V0IDogdGFyZ2V0LmNvbnN0cnVjdG9yLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgcHJvcGVydHkgb2JqZWN0LlxyXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlUeXBlIFRoZSBwcm9wZXJ0eSB0eXBlLlxyXG4gICAgICogQHBhcmFtIGVudGl0eSBUaGUgZW50aXR5LlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXRQcm9wZXJ0eU9iamVjdChuYW1lOiBzdHJpbmcsIHByb3BlcnR5VHlwZTogc3RyaW5nLCBlbnRpdHk6IGFueSwgdGFyZ2V0OiBhbnksIGNvbmZpZz86IGFueSkge1xyXG4gICAgICAgIC8qIERlZmluZSB0aGUgcHJvcGVydHkgaW5mb3JtYXRpb24gKi9cclxuICAgICAgICB2YXIgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXHJcbiAgICAgICAgICAgIHByb3BlcnR5VHlwZTogcHJvcGVydHlUeXBlLFxyXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcclxuICAgICAgICAgICAgZGF0YVByb3BlcnR5TmFtZTogY29uZmlnID8gY29uZmlnLm5hbWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIGVudGl0eVByb3ZpZGVyOiBjb25maWcgPyBjb25maWcuZW50aXR5UHJvdmlkZXIgOiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEFkZCB0aGUgcHJvcGVydHkgdG8gdGhlIHRhcmdldCdzIGNvbnN0cnVjdG9yICovXHJcbiAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eSh0YXJnZXQuY29uc3RydWN0b3IsIHByb3BlcnR5SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGFuIGluc3RhbmNlIGNvbnRhaW5lciB0byB0aGUgbGlzdCBvZiBpbnN0YW5jZXMuXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2VGdW5jIFRoZSBpbnN0YW5jZSBmdW5jdGlvbi5cclxuICAgICAqIEByZXR1cm5zIFRoZSBhZGRlZCBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IEluc3RhbmNlQ29udGFpbmVyIHtcclxuICAgICAgICAvKiBEZWZpbmUgYW4gaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciA9IHtcclxuICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlRnVuYywgICAgIC8qIEluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFpbmVyICovXHJcbiAgICAgICAgICAgIHByb3BlcnR5QW5ub3RhdGlvbnM6IFtdLCAgICAvKiBBbm5vdGF0aW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgcHJvcGVydGllczogW10sICAgICAgICAgICAgIC8qIFByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgICAgICBub25WYWxpZGF0aW9uRGVjb3JhdG9yczoge1xyXG4gICAgICAgICAgICAgICAgLyogRGlzYWJsZWQgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiB7fSwgLyogQ29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgZm9yIGRpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IHt9LCAgICAgICAgLyogQ2hhbmdlIGRldGVjdGlvbiBmb3IgZGlzYWJsZWQgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xQcm9wOiB7fSAgICAgICAgICAgICAvKiBDb250cm9sIHByb3BlcnRpZXMgZm9yIGRpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgLyogRXJyb3IgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiB7fSwgLyogQ29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgZm9yIGVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IHt9LCAgICAgICAgLyogQ2hhbmdlIGRldGVjdGlvbiBmb3IgZXJyb3IgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xQcm9wOiB7fSAgICAgICAgICAgICAvKiBDb250cm9sIHByb3BlcnRpZXMgZm9yIGVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgLyogRWxlbWVudCBjbGFzcyBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Q2xhc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiB7fSwgLyogQ29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgZm9yIGVsZW1lbnQgY2xhc3MgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdGlvbjoge30sICAgICAgICAvKiBDaGFuZ2UgZGV0ZWN0aW9uIGZvciBlbGVtZW50IGNsYXNzIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcDoge30gICAgICAgICAgICAgLyogQ29udHJvbCBwcm9wZXJ0aWVzIGZvciBlbGVtZW50IGNsYXNzIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIC8qIFNhbml0aXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgICAgICBzYW5pdGl6ZXJzOiB7fVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8qIEFkZCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIHRvIHRoZSBpbnN0YW5jZXMgYXJyYXkgKi9cclxuICAgICAgICB0aGlzLmluc3RhbmNlcy5wdXNoKGluc3RhbmNlQ29udGFpbmVyKTtcclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBjcmVhdGVkIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZUNvbnRhaW5lcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBwcm9wZXJ0eSB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlJbmZvIFRoZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbi5cclxuICAgICAqIEBwYXJhbSBpc0Zyb21Bbm5vdGF0aW9uIEluZGljYXRlcyB3aGV0aGVyIGl0J3MgYWRkZWQgZnJvbSBhbiBhbm5vdGF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jOiBhbnksIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvLCBpc0Zyb21Bbm5vdGF0aW9uOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICAvKiBGaW5kIHRoZSBpbnN0YW5jZSBpbiB0aGUgaW5zdGFuY2VzIGFycmF5ICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZmluZChpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGluc3RhbmNlIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAvKiBBZGQgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIGV4aXN0aW5nIGluc3RhbmNlICovXHJcbiAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlLCBwcm9wZXJ0eUluZm8sICFpc0Zyb21Bbm5vdGF0aW9uKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2UgY29udGFpbmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3QgKi9cclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcblxyXG4gICAgICAgICAgICAvKiBBZGQgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2UsIHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBwcm9wZXJ0eSBpbmZvcm1hdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlJbmZvIFRoZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbi5cclxuICAgICAqIEBwYXJhbSBpc0FkZFByb3BlcnR5IEluZGljYXRlcyB3aGV0aGVyIGl0J3MgYWRkZWQgYXMgYSBuZXcgcHJvcGVydHkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyLCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbywgaXNBZGRQcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgLyogRmluZCB0aGUgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBuYW1lIGluIHRoZSBpbnN0YW5jZSdzIHByb3BlcnRpZXMgKi9cclxuICAgICAgICB2YXIgcHJvcGVydHkgPSBpbnN0YW5jZS5wcm9wZXJ0aWVzPy5maW5kKHQgPT4gdC5uYW1lID09IHByb3BlcnR5SW5mby5uYW1lKTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHByb3BlcnR5IGRvZXNuJ3QgYWxyZWFkeSBleGlzdCAqL1xyXG4gICAgICAgIGlmICghcHJvcGVydHkpIHtcclxuICAgICAgICAgICAgLyogQWRkIHRoZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbiB0byB0aGUgaW5zdGFuY2UncyBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnByb3BlcnRpZXM/LnB1c2gocHJvcGVydHlJbmZvKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzQWRkUHJvcGVydHkpIHtcclxuICAgICAgICAgICAgLyogVXBkYXRlIHByb3BlcnR5IGluZm9ybWF0aW9uIGlmIHJlcXVlc3RlZCAqL1xyXG4gICAgICAgICAgICBwcm9wZXJ0eS5kYXRhUHJvcGVydHlOYW1lID0gcHJvcGVydHlJbmZvLmRhdGFQcm9wZXJ0eU5hbWU7XHJcbiAgICAgICAgICAgIHByb3BlcnR5LmRlZmF1bHRWYWx1ZSA9IHByb3BlcnR5SW5mby5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlUGF0aCA9IHByb3BlcnR5SW5mby52YWx1ZVBhdGg7XHJcbiAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlID0gcHJvcGVydHlJbmZvLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gYW5ub3RhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yQ29uZmlndXJhdGlvbiBUaGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jLCB7IHByb3BlcnR5VHlwZTogUFJPUEVSVFksIG5hbWU6IGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lIH0sIHRydWUpO1xyXG5cclxuICAgICAgICAvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIGluc3RhbmNlcyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGluc3RhbmNlJ3MgcHJvcGVydHkgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcGVydHlBbm5vdGF0aW9ucy5wdXNoKGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgY2hhbmdlIHZhbGlkYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZENoYW5nZVZhbGlkYXRpb24oaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lLCBjb2x1bW5zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEFkZCBkeW5hbWljIGNvbmZpZ3VyYXRpb24gYW5kIHZhbGlkYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuZHluYW1pY0NvbmZpZykge1xyXG4gICAgICAgICAgICBsZXQgY29sdW1ucyA9IExpbnEuZHluYW1pY0NvbmZpZ1BhcnNlcihkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5keW5hbWljQ29uZmlnLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUsIGNvbHVtbnMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU2V0IGNvbmRpdGlvbmFsIGNvbHVtbnMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbENvbHVtbnMoaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBjb25kaXRpb25hbCBjb2x1bW5zIGJhc2VkIG9uIHRoZSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvckNvbmZpZ3VyYXRpb24gVGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0Q29uZGl0aW9uYWxDb2x1bW5zKGluc3RhbmNlOiBhbnksIGRlY29yYXRvckNvbmZpZ3VyYXRpb246IERlY29yYXRvckNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICAvKiBDaGVja3MgaWYgdGhlcmUgaXMgYW4gaW5zdGFuY2UgYW5kIGRlY29yYXRvciBjb25maWd1cmF0aW9uIHByZXNlbnQgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcpIHtcclxuICAgICAgICAgICAgLyogSGFuZGxlcyBsb2dpY2FsIGFubm90YXRpb25zIChBTkQsIE9SLCBOT1QpICovXHJcbiAgICAgICAgICAgIGlmIChkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5hbmQgfHxcclxuICAgICAgICAgICAgICAgIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm9yIHx8XHJcbiAgICAgICAgICAgICAgICBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ub3RcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlcyBvdmVyIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb24pLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2tzIGlmIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gaXMgbm90IGEgYm9vbGVhbiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcudmFsaWRhdGlvblt0XSAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0cyBsb2dpY2FsIGNvbmRpdGlvbmFsIGJhc2VkIG9uIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2dpY2FsQ29uZGl0aW9uYWwoaW5zdGFuY2UsIHQsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb25bdF0uZmllbGROYW1lLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIFNldHMgbG9naWNhbCBjb25kaXRpb25hbCBmb3Igbm9uLWxvZ2ljYWwgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5maWVsZE5hbWUsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgbG9naWNhbCBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGFubm90YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBwcm9wZXJ0eSBuYW1lLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlOiBhbnksIGFubm90YXRpb25UeXBlOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIC8qIFxyXG4gICAgICAgICAqIENoZWNrcyBpZiB0aGVyZSBpcyBhbiBpbnN0YW5jZSBhbmQgYW5ub3RhdGlvbiB0eXBlIHdpdGggYXBwbGljYWJsZSBjb25kaXRpb25zXHJcbiAgICAgICAgICogZm9yIHNldHRpbmcgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcy5cclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgKFxyXG4gICAgICAgICAgICAoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmNvbXBhcmUgfHxcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbiB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuRXF1YWxUbyB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmxlc3NUaGFuIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW5FcXVhbFRvIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZGlmZmVyZW50IHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZmFjdG9yIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubWluVGltZSB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heFRpbWUpIHx8XHJcbiAgICAgICAgICAgIChhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuY3JlZGl0Q2FyZCAmJiBmaWVsZE5hbWUpIHx8XHJcbiAgICAgICAgICAgICgoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1pbkRhdGUgfHwgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heERhdGUpICYmIGZpZWxkTmFtZSlcclxuICAgICAgICApKSB7XHJcbiAgICAgICAgICAgIC8qIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydHkgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgKi9cclxuICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZSwgZmllbGROYW1lLCBwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcyBiYXNlZCBvbiB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2UgVGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIHByb3BlcnR5IG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcmVmUHJvcGVydHlOYW1lIFRoZSByZWZlcmVuY2UgcHJvcGVydHkgbmFtZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHJlZlByb3BlcnR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgLyogQ2hlY2tzIGlmIHByb3BOYW1lIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICAgICAgLyogU3BsaXRzIHByb3BOYW1lIGludG8gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIGxldCBzcGxpdFByb3BzID0gcHJvcGVydHlOYW1lLnNwbGl0ID8gcHJvcGVydHlOYW1lLnNwbGl0KCcuJykgOiAnJztcclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrcyBpZiB0aGUgbGVuZ3RoIG9mIHNwbGl0UHJvcHMgaXMgbGVzcyB0aGFuIDIgKi9cclxuICAgICAgICAgICAgaWYgKHNwbGl0UHJvcHMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgaWYgaXQgZG9lcyBub3QgZXhpc3QgKi9cclxuICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIFB1c2hlcyByZWZQcm9wTmFtZSBpbnRvIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihyZWZQcm9wZXJ0eU5hbWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXS5wdXNoKHJlZlByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKiBBZGRzIGNoYW5nZSB2YWxpZGF0aW9uIGZvciBjb21wbGV4IHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgcmVmUHJvcGVydHlOYW1lLCBbe1xyXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXg6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0UHJvcE5hbWU6IHNwbGl0UHJvcHNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWU6IHNwbGl0UHJvcHNbMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUHJvcE5hbWU6IHJlZlByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICAgICAgfV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBjaGFuZ2UgdmFsaWRhdGlvbiBiYXNlZCBvbiB0aGUgY29sdW1ucy5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgcHJvcGVydHkgbmFtZS5cclxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFRoZSBjb2x1bW5zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIC8qIENoZWNrcyBpZiBpbnN0YW5jZSBleGlzdHMuICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzIGlmIGl0IGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIGNvbHVtbnMuICovXHJcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrcyBpZiBwcm9wTmFtZSBleGlzdHMgYW5kIG9iamVjdFByb3BOYW1lIGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgIXQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBJbml0aWFsaXplcyBjb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBQdXNoZXMgcHJvcGVydHlOYW1lIGludG8gY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0gaWYgaXQgZG9lcyBub3QgZXhpc3QuICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdLmluZGV4T2YocHJvcGVydHlOYW1lKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgYXMgYW55KVt0LnByb3BOYW1lXS5wdXNoKHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBDaGVja3MgaWYgcHJvcE5hbWUgYW5kIG9iamVjdFByb3BOYW1lIGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmIHQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxPYmplY3RQcm9wcyBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldHMgcmVmZXJlbmNlUHJvcE5hbWUgYW5kIGFkZHMgaXQgdG8gY29uZGl0aW9uYWxPYmplY3RQcm9wcy4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdC5yZWZlcmVuY2VQcm9wTmFtZSA9IHByb3BlcnR5TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5wdXNoKHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGRlZmF1bHQgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZSBjb25maWd1cmF0aW9ucy5cclxuICogXHJcbiAqIE1hbmFnZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBzYW5pdGl6ZXJzLCBhbmQgb3RoZXIgcHJvcGVydGllcyBmb3IgY2xhc3Nlcy5cclxuICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIG1hbmFnaW5nIGluc3RhbmNlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lciA9IG5ldyBEZWZhdWx0Q29udGFpbmVyKCk7Il19
@@ -1,10 +0,0 @@
1
- import { AnnotationTypes } from '../core/annotation-types';
2
- import { baseAsyncValidator } from "../reactive-form-validators/async/base.async.validator";
3
- import { baseDecoratorFunction } from "./base-decorator.function";
4
- export function allOf(config) {
5
- return baseDecoratorFunction(AnnotationTypes.allOf, config);
6
- }
7
- export function allOfAsync(config) {
8
- return baseDecoratorFunction(AnnotationTypes.allOf, [baseAsyncValidator(config, AnnotationTypes.allOf)], true);
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsT2YuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL2RlY29yYXRvcnMvYWxsT2YuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLFVBQVUsS0FBSyxDQUFDLE1BQW9CO0lBQ3RDLE9BQU8scUJBQXFCLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFvQjtJQUMzQyxPQUFPLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25UeXBlcyB9IGZyb20gJy4uL2NvcmUvYW5ub3RhdGlvbi10eXBlcyc7XHJcbmltcG9ydCB7IEFycmF5Q29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jb25maWcvYXJyYXktY29uZmlnXCI7XHJcbmltcG9ydCB7IGJhc2VBc3luY1ZhbGlkYXRvciB9IGZyb20gXCIuLi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvYXN5bmMvYmFzZS5hc3luYy52YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgYmFzZURlY29yYXRvckZ1bmN0aW9uIH0gZnJvbSBcIi4vYmFzZS1kZWNvcmF0b3IuZnVuY3Rpb25cIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbGxPZihjb25maWc/OiBBcnJheUNvbmZpZykge1xyXG4gICAgcmV0dXJuIGJhc2VEZWNvcmF0b3JGdW5jdGlvbihBbm5vdGF0aW9uVHlwZXMuYWxsT2YsIGNvbmZpZyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbGxPZkFzeW5jKGNvbmZpZz86IEFycmF5Q29uZmlnKSB7XHJcbiAgICByZXR1cm4gYmFzZURlY29yYXRvckZ1bmN0aW9uKEFubm90YXRpb25UeXBlcy5hbGxPZiwgW2Jhc2VBc3luY1ZhbGlkYXRvcihjb25maWcsIEFubm90YXRpb25UeXBlcy5hbGxPZildLCB0cnVlKTtcclxufSJdfQ==
@@ -1,10 +0,0 @@
1
- import { AnnotationTypes } from '../core/annotation-types';
2
- import { baseAsyncValidator } from "../reactive-form-validators/async/base.async.validator";
3
- import { baseDecoratorFunction } from "./base-decorator.function";
4
- export function alpha(config) {
5
- return baseDecoratorFunction(AnnotationTypes.alpha, config);
6
- }
7
- export function alphaAsync(config) {
8
- return baseDecoratorFunction(AnnotationTypes.alpha, [baseAsyncValidator(config, AnnotationTypes.alpha)], true);
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxwaGEuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL2RlY29yYXRvcnMvYWxwaGEuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLFVBQVUsS0FBSyxDQUFDLE1BQW9CO0lBQ3RDLE9BQU8scUJBQXFCLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFvQjtJQUMzQyxPQUFPLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25UeXBlcyB9IGZyb20gJy4uL2NvcmUvYW5ub3RhdGlvbi10eXBlcyc7XHJcbmltcG9ydCB7IEFscGhhQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jb25maWcvYWxwaGEtY29uZmlnXCI7XHJcbmltcG9ydCB7IGJhc2VBc3luY1ZhbGlkYXRvciB9IGZyb20gXCIuLi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvYXN5bmMvYmFzZS5hc3luYy52YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgYmFzZURlY29yYXRvckZ1bmN0aW9uIH0gZnJvbSBcIi4vYmFzZS1kZWNvcmF0b3IuZnVuY3Rpb25cIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbHBoYShjb25maWc/OiBBbHBoYUNvbmZpZykge1xyXG4gICAgcmV0dXJuIGJhc2VEZWNvcmF0b3JGdW5jdGlvbihBbm5vdGF0aW9uVHlwZXMuYWxwaGEsIGNvbmZpZyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhbHBoYUFzeW5jKGNvbmZpZz86IEFscGhhQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gYmFzZURlY29yYXRvckZ1bmN0aW9uKEFubm90YXRpb25UeXBlcy5hbHBoYSwgW2Jhc2VBc3luY1ZhbGlkYXRvcihjb25maWcsIEFubm90YXRpb25UeXBlcy5hbHBoYSldLCB0cnVlKTtcclxufVxyXG5cclxuIl19