@sumaris-net/ngx-components 4.0.0-rc8 → 18.0.0-rc1

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 (555) hide show
  1. package/README.md +5 -3
  2. package/doc/changelog.md +522 -280
  3. package/esm2022/public_api.mjs +38 -19
  4. package/esm2022/src/app/admin/admin-routing.module.mjs +10 -17
  5. package/esm2022/src/app/admin/admin.module.mjs +7 -9
  6. package/esm2022/src/app/admin/services/filter/person.filter.mjs +3 -3
  7. package/esm2022/src/app/admin/services/person.service.mjs +31 -31
  8. package/esm2022/src/app/admin/services/validator/person.validator.mjs +10 -10
  9. package/esm2022/src/app/admin/users/users.mjs +22 -19
  10. package/esm2022/src/app/admin/users/users.module.mjs +8 -10
  11. package/esm2022/src/app/core/about/about.modal.mjs +7 -7
  12. package/esm2022/src/app/core/about/about.module.mjs +8 -21
  13. package/esm2022/src/app/core/account/account.module.mjs +28 -18
  14. package/esm2022/src/app/core/account/account.page.mjs +19 -5
  15. package/esm2022/src/app/core/account/new-token.form.mjs +106 -0
  16. package/esm2022/src/app/core/account/new-token.modal.mjs +27 -86
  17. package/esm2022/src/app/core/account/password/change-password.form.mjs +60 -0
  18. package/esm2022/src/app/core/account/password/change-password.module.mjs +22 -0
  19. package/esm2022/src/app/core/account/password/change-password.page.mjs +144 -0
  20. package/esm2022/src/app/core/account/token.table.mjs +47 -35
  21. package/esm2022/src/app/core/auth/auth.form.mjs +47 -28
  22. package/esm2022/src/app/core/auth/auth.modal.mjs +6 -6
  23. package/esm2022/src/app/core/auth/auth.module.mjs +22 -13
  24. package/esm2022/src/app/core/auth/reset-password.modal.mjs +77 -0
  25. package/esm2022/src/app/core/core.module.mjs +28 -61
  26. package/esm2022/src/app/core/core.testing.module.mjs +34 -20
  27. package/esm2022/src/app/core/form/array/form-array.mjs +325 -0
  28. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +23 -0
  29. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +94 -0
  30. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +24 -25
  31. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +9 -13
  32. package/esm2022/src/app/core/form/entity/editor.class.mjs +64 -517
  33. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +26 -42
  34. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +42 -41
  35. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +5 -5
  36. package/esm2022/src/app/core/form/entity/entity.module.mjs +8 -14
  37. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +194 -0
  38. package/esm2022/src/app/core/form/form-container.class.mjs +327 -0
  39. package/esm2022/src/app/core/form/form.class.mjs +39 -56
  40. package/esm2022/src/app/core/form/form.module.mjs +14 -10
  41. package/esm2022/src/app/core/form/form.utils.mjs +23 -306
  42. package/esm2022/src/app/core/form/list/list.form.mjs +16 -14
  43. package/esm2022/src/app/core/form/list/list.module.mjs +8 -12
  44. package/esm2022/src/app/core/form/properties/properties.form.mjs +139 -57
  45. package/esm2022/src/app/core/form/properties/properties.module.mjs +9 -15
  46. package/esm2022/src/app/core/form/properties/properties.table.mjs +27 -28
  47. package/esm2022/src/app/core/form/properties/properties.utils.mjs +60 -0
  48. package/esm2022/src/app/core/form/properties/property.validator.mjs +23 -9
  49. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +18 -18
  50. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +8 -24
  51. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +15 -15
  52. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +10 -25
  53. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +7 -7
  54. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +9 -13
  55. package/esm2022/src/app/core/form/username/username.form.mjs +52 -0
  56. package/esm2022/src/app/core/form/username/username.module.mjs +20 -0
  57. package/esm2022/src/app/core/graphql/graphql.module.mjs +8 -16
  58. package/esm2022/src/app/core/graphql/graphql.service.mjs +101 -109
  59. package/esm2022/src/app/core/graphql/graphql.utils.mjs +12 -11
  60. package/esm2022/src/app/core/home/home.mjs +81 -52
  61. package/esm2022/src/app/core/home/home.module.mjs +10 -19
  62. package/esm2022/src/app/core/icon/icon.component.mjs +5 -5
  63. package/esm2022/src/app/core/icon/icon.module.mjs +8 -17
  64. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +33 -37
  65. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +9 -13
  66. package/esm2022/src/app/core/menu/menu.component.mjs +5 -6
  67. package/esm2022/src/app/core/menu/menu.model.mjs +21 -18
  68. package/esm2022/src/app/core/menu/menu.module.mjs +7 -12
  69. package/esm2022/src/app/core/menu/menu.service.mjs +44 -60
  70. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +4 -4
  71. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +7 -6
  72. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +43 -8
  73. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +8 -27
  74. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +6 -7
  75. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +9 -13
  76. package/esm2022/src/app/core/peer/select-peer.modal.mjs +31 -21
  77. package/esm2022/src/app/core/peer/select-peer.module.mjs +11 -23
  78. package/esm2022/src/app/core/register/register-confirm.page.mjs +18 -16
  79. package/esm2022/src/app/core/register/register.form.mjs +7 -7
  80. package/esm2022/src/app/core/register/register.modal.mjs +6 -6
  81. package/esm2022/src/app/core/register/register.module.mjs +8 -29
  82. package/esm2022/src/app/core/services/account.service.mjs +272 -170
  83. package/esm2022/src/app/core/services/auth-guard.service.mjs +13 -15
  84. package/esm2022/src/app/core/services/base-entity-service.class.mjs +55 -64
  85. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +39 -33
  86. package/esm2022/src/app/core/services/base58.mjs +8 -4
  87. package/esm2022/src/app/core/services/config/core.config.mjs +88 -37
  88. package/esm2022/src/app/core/services/config.service.mjs +81 -62
  89. package/esm2022/src/app/core/services/crypto.service.mjs +11 -11
  90. package/esm2022/src/app/core/services/errors.mjs +6 -5
  91. package/esm2022/src/app/core/services/local-settings.service.mjs +58 -44
  92. package/esm2022/src/app/core/services/model/account.model.mjs +12 -17
  93. package/esm2022/src/app/core/services/model/config.model.mjs +7 -7
  94. package/esm2022/src/app/core/services/model/department.model.mjs +3 -2
  95. package/esm2022/src/app/core/services/model/entity.decorators.mjs +6 -6
  96. package/esm2022/src/app/core/services/model/entity.model.mjs +27 -31
  97. package/esm2022/src/app/core/services/model/filter.model.mjs +12 -15
  98. package/esm2022/src/app/core/services/model/history.model.mjs +1 -1
  99. package/esm2022/src/app/core/services/model/model.enum.mjs +2 -2
  100. package/esm2022/src/app/core/services/model/peer.model.mjs +19 -9
  101. package/esm2022/src/app/core/services/model/person.model.mjs +26 -22
  102. package/esm2022/src/app/core/services/model/referential.model.mjs +36 -23
  103. package/esm2022/src/app/core/services/model/settings.model.mjs +2 -1
  104. package/esm2022/src/app/core/services/model/token.model.mjs +7 -3
  105. package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +3 -7
  106. package/esm2022/src/app/core/services/network.service.mjs +99 -76
  107. package/esm2022/src/app/core/services/network.types.mjs +1 -1
  108. package/esm2022/src/app/core/services/network.utils.mjs +3 -3
  109. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +11 -11
  110. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +6 -6
  111. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +9 -9
  112. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +54 -0
  113. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +21 -0
  114. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +11 -11
  115. package/esm2022/src/app/core/services/platform.service.mjs +102 -69
  116. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +32 -39
  117. package/esm2022/src/app/core/services/storage/entity-store.class.mjs +36 -45
  118. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +1 -1
  119. package/esm2022/src/app/core/services/testing/referential.validator.mjs +14 -14
  120. package/esm2022/src/app/core/services/validator/account.validator.mjs +5 -5
  121. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +5 -5
  122. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +34 -20
  123. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +5 -5
  124. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +12 -9
  125. package/esm2022/src/app/core/settings/settings.module.mjs +9 -21
  126. package/esm2022/src/app/core/settings/settings.page.mjs +76 -63
  127. package/esm2022/src/app/core/table/async-table.class.mjs +219 -201
  128. package/esm2022/src/app/core/table/column/actions-column.component.mjs +127 -0
  129. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +117 -0
  130. package/esm2022/src/app/core/table/column/row-field.component.mjs +116 -0
  131. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +31 -33
  132. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +36 -36
  133. package/esm2022/src/app/core/table/memory-table.class.mjs +5 -5
  134. package/esm2022/src/app/core/table/table-select-columns.component.mjs +8 -8
  135. package/esm2022/src/app/core/table/table.class.mjs +193 -152
  136. package/esm2022/src/app/core/table/table.model.mjs +1 -1
  137. package/esm2022/src/app/core/table/table.module.mjs +35 -24
  138. package/esm2022/src/app/core/table/table.pipes.mjs +77 -0
  139. package/esm2022/src/app/core/table/table.utils.mjs +2 -4
  140. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +9 -5
  141. package/esm2022/src/app/core/table/testing/table.testing.mjs +116 -78
  142. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +8 -33
  143. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +4 -4
  144. package/esm2022/src/app/core/table/testing/table2.testing.mjs +68 -45
  145. package/esm2022/src/app/shared/alerts.mjs +49 -45
  146. package/esm2022/src/app/shared/audio/audio.mjs +25 -27
  147. package/esm2022/src/app/shared/audio/audio.testing.mjs +5 -5
  148. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +10 -25
  149. package/esm2022/src/app/shared/capacitor/keyboard.mjs +5 -5
  150. package/esm2022/src/app/shared/capacitor/plugins.mjs +1 -1
  151. package/esm2022/src/app/shared/constants.mjs +9 -4
  152. package/esm2022/src/app/shared/dates.mjs +18 -16
  153. package/esm2022/src/app/shared/debug/debug-service.class.mjs +1 -1
  154. package/esm2022/src/app/shared/debug/debug.component.mjs +5 -5
  155. package/esm2022/src/app/shared/debug/debug.module.mjs +8 -29
  156. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +8 -15
  157. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +4 -4
  158. package/esm2022/src/app/shared/directives/directives.module.mjs +8 -29
  159. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
  160. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +4 -4
  161. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +4 -4
  162. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +4 -4
  163. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
  164. package/esm2022/src/app/shared/events.mjs +6 -8
  165. package/esm2022/src/app/shared/file/csv.utils.mjs +38 -18
  166. package/esm2022/src/app/shared/file/file.service.mjs +11 -15
  167. package/esm2022/src/app/shared/file/file.utils.mjs +13 -11
  168. package/esm2022/src/app/shared/file/images.utils.mjs +29 -4
  169. package/esm2022/src/app/shared/file/json.utils.mjs +11 -4
  170. package/esm2022/src/app/shared/file/uri.utils.mjs +1 -1
  171. package/esm2022/src/app/shared/focusable.mjs +1 -1
  172. package/esm2022/src/app/shared/form/field.component.mjs +69 -43
  173. package/esm2022/src/app/shared/form/field.model.mjs +4 -4
  174. package/esm2022/src/app/shared/form/loading-spinner.mjs +5 -5
  175. package/esm2022/src/app/shared/forms.mjs +116 -43
  176. package/esm2022/src/app/shared/functions.mjs +139 -71
  177. package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +14 -14
  178. package/esm2022/src/app/shared/gesture/gesture-config.mjs +10 -10
  179. package/esm2022/src/app/shared/gesture/hammer.utils.mjs +1 -1
  180. package/esm2022/src/app/shared/graph/colors.utils.mjs +14 -18
  181. package/esm2022/src/app/shared/graph/graph-colors.mjs +23 -29
  182. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +4 -4
  183. package/esm2022/src/app/shared/help/help.modal.mjs +6 -6
  184. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +5 -5
  185. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +44 -17
  186. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +9 -27
  187. package/esm2022/src/app/shared/http/http.utils.mjs +15 -11
  188. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +27 -27
  189. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +13 -10
  190. package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +1 -1
  191. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +14 -17
  192. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +9 -13
  193. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +14 -11
  194. package/esm2022/src/app/shared/image/image.model.mjs +1 -1
  195. package/esm2022/src/app/shared/image/image.module.mjs +8 -13
  196. package/esm2022/src/app/shared/image/image.service.mjs +14 -12
  197. package/esm2022/src/app/shared/inputs.mjs +52 -20
  198. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +2 -3
  199. package/esm2022/src/app/shared/logging/log-level.model.mjs +1 -1
  200. package/esm2022/src/app/shared/logging/logger.model.mjs +2 -2
  201. package/esm2022/src/app/shared/logging/logging-service.class.mjs +17 -20
  202. package/esm2022/src/app/shared/logging/logging-service.module.mjs +6 -6
  203. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +7 -10
  204. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +348 -238
  205. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +13 -16
  206. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +5 -4
  207. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +51 -37
  208. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +99 -57
  209. package/esm2022/src/app/shared/material/badge/badge.module.mjs +8 -20
  210. package/esm2022/src/app/shared/material/badge/badge.test.mjs +5 -5
  211. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +19 -20
  212. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +209 -104
  213. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +15 -8
  214. package/esm2022/src/app/shared/material/chips/chips.module.mjs +12 -13
  215. package/esm2022/src/app/shared/material/chips/material.chips.mjs +228 -168
  216. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +20 -21
  217. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +12 -27
  218. package/esm2022/src/app/shared/material/datetime/material.date.mjs +167 -92
  219. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +128 -77
  220. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +297 -165
  221. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +34 -30
  222. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +31 -27
  223. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +26 -23
  224. package/esm2022/src/app/shared/material/duration/duration.module.mjs +11 -16
  225. package/esm2022/src/app/shared/material/duration/duration.utils.mjs +3 -6
  226. package/esm2022/src/app/shared/material/duration/material.duration.mjs +35 -34
  227. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +23 -22
  228. package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +217 -170
  229. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +182 -241
  230. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +10 -15
  231. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +19 -14
  232. package/esm2022/src/app/shared/material/material.animations.mjs +22 -22
  233. package/esm2022/src/app/shared/material/material.config.mjs +3 -0
  234. package/esm2022/src/app/shared/material/material.module.mjs +16 -16
  235. package/esm2022/src/app/shared/material/material.testing.module.mjs +50 -37
  236. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +12 -9
  237. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +4 -4
  238. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +26 -19
  239. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +7 -11
  240. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +8 -8
  241. package/esm2022/src/app/shared/material/testing/common.test.mjs +30 -24
  242. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +30 -19
  243. package/esm2022/src/app/shared/material/text/text-form.component.mjs +128 -21
  244. package/esm2022/src/app/shared/material/text/text-form.module.mjs +8 -8
  245. package/esm2022/src/app/shared/modules.mjs +1 -1
  246. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +118 -37
  247. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +1 -1
  248. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +5 -5
  249. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +8 -8
  250. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +74 -0
  251. package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +28 -0
  252. package/esm2022/src/app/shared/observables.mjs +14 -18
  253. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +53 -38
  254. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +24 -0
  255. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +8 -6
  256. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +8 -10
  257. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +15 -15
  258. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +6 -6
  259. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +6 -6
  260. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +6 -13
  261. package/esm2022/src/app/shared/pipes/form.pipes.mjs +72 -47
  262. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +15 -15
  263. package/esm2022/src/app/shared/pipes/html.pipes.mjs +52 -0
  264. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +14 -14
  265. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +17 -17
  266. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +37 -88
  267. package/esm2022/src/app/shared/pipes/math.pipes.mjs +16 -16
  268. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +5 -5
  269. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +6 -6
  270. package/esm2022/src/app/shared/pipes/pipes.module.mjs +117 -137
  271. package/esm2022/src/app/shared/pipes/property.pipes.mjs +86 -47
  272. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +179 -0
  273. package/esm2022/src/app/shared/pipes/string.pipes.mjs +50 -49
  274. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +11 -11
  275. package/esm2022/src/app/shared/pipes/types.pipes.mjs +33 -17
  276. package/esm2022/src/app/shared/platforms.mjs +7 -5
  277. package/esm2022/src/app/shared/rx-state.module.mjs +7 -11
  278. package/esm2022/src/app/shared/services/entity-service.class.mjs +2 -2
  279. package/esm2022/src/app/shared/services/job.utils.mjs +7 -7
  280. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +43 -41
  281. package/esm2022/src/app/shared/services/progress-bar.service.mjs +4 -4
  282. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +11 -14
  283. package/esm2022/src/app/shared/services/startable-service.class.mjs +11 -17
  284. package/esm2022/src/app/shared/services/translate-context.service.mjs +18 -15
  285. package/esm2022/src/app/shared/services/validator-service.class.mjs +1 -1
  286. package/esm2022/src/app/shared/services.mjs +12 -12
  287. package/esm2022/src/app/shared/shared-routing.module.mjs +19 -18
  288. package/esm2022/src/app/shared/shared.module.mjs +29 -28
  289. package/esm2022/src/app/shared/shared.testing.module.mjs +18 -10
  290. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +39 -46
  291. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +8 -12
  292. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +9 -17
  293. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +10 -18
  294. package/esm2022/src/app/shared/storage/storage.service.mjs +4 -4
  295. package/esm2022/src/app/shared/storage/storage.utils.mjs +2 -2
  296. package/esm2022/src/app/shared/testing/maskito.test.mjs +41 -0
  297. package/esm2022/src/app/shared/testing/observable.test.mjs +11 -13
  298. package/esm2022/src/app/shared/testing/tests.page.mjs +6 -6
  299. package/esm2022/src/app/shared/toast/toast.testing.mjs +11 -11
  300. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +10 -25
  301. package/esm2022/src/app/shared/toast/toasts.mjs +9 -9
  302. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +10 -8
  303. package/esm2022/src/app/shared/toolbar/toolbar.mjs +31 -32
  304. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +8 -39
  305. package/esm2022/src/app/shared/types.mjs +1 -1
  306. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +12 -12
  307. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +10 -25
  308. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +7 -8
  309. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +21 -19
  310. package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +2 -3
  311. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +64 -56
  312. package/esm2022/src/app/shared/validator/validators.mjs +60 -39
  313. package/esm2022/src/app/shared/version/versions.mjs +2 -2
  314. package/esm2022/src/app/social/job/job.module.mjs +8 -27
  315. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +9 -9
  316. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +49 -46
  317. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +10 -13
  318. package/esm2022/src/app/social/job/progression/job-progression.model.mjs +1 -1
  319. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +39 -21
  320. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +6 -11
  321. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +11 -30
  322. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +8 -21
  323. package/esm2022/src/app/social/message/message.form.mjs +5 -5
  324. package/esm2022/src/app/social/message/message.modal.mjs +8 -8
  325. package/esm2022/src/app/social/message/message.model.mjs +8 -8
  326. package/esm2022/src/app/social/message/message.module.mjs +4 -4
  327. package/esm2022/src/app/social/message/message.service.mjs +7 -7
  328. package/esm2022/src/app/social/social.errors.mjs +2 -2
  329. package/esm2022/src/app/social/social.module.mjs +7 -32
  330. package/esm2022/src/app/social/social.testing.module.mjs +9 -20
  331. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +27 -23
  332. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +19 -22
  333. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +47 -23
  334. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +8 -8
  335. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +8 -21
  336. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +27 -15
  337. package/esm2022/src/app/social/user-event/user-event.model.mjs +1 -1
  338. package/esm2022/src/app/social/user-event/user-event.module.mjs +8 -28
  339. package/esm2022/src/app/social/user-event/user-event.service.mjs +61 -64
  340. package/esm2022/src/environments/environment.class.mjs +9 -1
  341. package/esm2022/src/environments/environment.loader.mjs +5 -11
  342. package/esm2022/src/environments/environment.mjs +19 -11
  343. package/fesm2022/sumaris-net.ngx-components.mjs +16117 -14592
  344. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  345. package/package.json +36 -18
  346. package/public_api.d.ts +30 -22
  347. package/src/app/admin/services/filter/person.filter.d.ts +1 -1
  348. package/src/app/admin/users/users.d.ts +5 -6
  349. package/src/app/core/account/account.module.d.ts +10 -8
  350. package/src/app/core/account/account.page.d.ts +25 -15
  351. package/src/app/core/account/new-token.form.d.ts +29 -0
  352. package/src/app/core/account/new-token.modal.d.ts +9 -21
  353. package/src/app/core/account/password/change-password.form.d.ts +19 -0
  354. package/src/app/core/account/password/change-password.module.d.ts +11 -0
  355. package/src/app/core/account/password/change-password.page.d.ts +36 -0
  356. package/src/app/core/account/token.table.d.ts +7 -5
  357. package/src/app/core/auth/auth.form.d.ts +11 -9
  358. package/src/app/core/auth/auth.module.d.ts +6 -4
  359. package/src/app/core/auth/reset-password.modal.d.ts +26 -0
  360. package/src/app/core/core.module.d.ts +21 -24
  361. package/src/app/core/core.testing.module.d.ts +2 -1
  362. package/src/app/core/form/array/form-array.d.ts +136 -0
  363. package/src/app/core/form/array/testing/form-array-test.module.d.ts +12 -0
  364. package/src/app/core/form/array/testing/form-array.test.d.ts +26 -0
  365. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +2 -3
  366. package/src/app/core/form/entity/editor.class.d.ts +19 -179
  367. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +10 -13
  368. package/src/app/core/form/entity/entity-editor.class.d.ts +12 -17
  369. package/src/app/core/form/entity/entity-metadata.component.d.ts +1 -1
  370. package/src/app/core/form/entity/tab-editor.class.d.ts +70 -0
  371. package/src/app/core/form/form-container.class.d.ts +126 -0
  372. package/src/app/core/form/form.class.d.ts +13 -26
  373. package/src/app/core/form/form.module.d.ts +2 -1
  374. package/src/app/core/form/form.utils.d.ts +60 -145
  375. package/src/app/core/form/list/list.form.d.ts +2 -2
  376. package/src/app/core/form/properties/properties.form.d.ts +34 -12
  377. package/src/app/core/form/properties/properties.table.d.ts +2 -2
  378. package/src/app/core/form/properties/properties.utils.d.ts +27 -0
  379. package/src/app/core/form/properties/property.validator.d.ts +9 -3
  380. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +3 -1
  381. package/src/app/core/form/username/username.form.d.ts +19 -0
  382. package/src/app/core/form/username/username.module.d.ts +9 -0
  383. package/src/app/core/graphql/graphql.module.d.ts +1 -2
  384. package/src/app/core/graphql/graphql.service.d.ts +2 -4
  385. package/src/app/core/home/home.d.ts +26 -6
  386. package/src/app/core/menu/testing/menu-other.testing.d.ts +1 -1
  387. package/src/app/core/menu/testing/menu.testing.d.ts +11 -3
  388. package/src/app/core/peer/select-peer.modal.d.ts +13 -7
  389. package/src/app/core/peer/select-peer.module.d.ts +3 -4
  390. package/src/app/core/services/account.service.d.ts +9 -0
  391. package/src/app/core/services/base-entity-service.class.d.ts +1 -1
  392. package/src/app/core/services/config/core.config.d.ts +12 -1
  393. package/src/app/core/services/config.service.d.ts +4 -3
  394. package/src/app/core/services/errors.d.ts +11 -0
  395. package/src/app/core/services/local-settings.service.d.ts +8 -4
  396. package/src/app/core/services/model/entity.model.d.ts +6 -5
  397. package/src/app/core/services/model/filter.model.d.ts +1 -1
  398. package/src/app/core/services/model/peer.model.d.ts +1 -0
  399. package/src/app/core/services/model/person.model.d.ts +6 -2
  400. package/src/app/core/services/model/referential.model.d.ts +8 -3
  401. package/src/app/core/services/model/settings.model.d.ts +4 -2
  402. package/src/app/core/services/model/token.model.d.ts +1 -0
  403. package/src/app/core/services/model/tree-item-entity.model.d.ts +1 -1
  404. package/src/app/core/services/network.service.d.ts +11 -7
  405. package/src/app/core/services/pipes/department-to-string.pipe.d.ts +1 -1
  406. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +3 -1
  407. package/src/app/core/services/pipes/pipes.module.d.ts +11 -0
  408. package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +13 -0
  409. package/src/app/core/services/platform.service.d.ts +8 -3
  410. package/src/app/core/services/testing/referential-filter.model.d.ts +1 -1
  411. package/src/app/core/services/validator/local-settings.validator.d.ts +6 -2
  412. package/src/app/core/settings/settings.module.d.ts +2 -1
  413. package/src/app/core/settings/settings.page.d.ts +34 -21
  414. package/src/app/core/table/async-table.class.d.ts +22 -17
  415. package/src/app/core/table/column/actions-column.component.d.ts +59 -0
  416. package/src/app/core/table/column/nav-actions-column.component.d.ts +46 -0
  417. package/src/app/core/table/column/row-field.component.d.ts +40 -0
  418. package/src/app/core/table/entities-async-table-datasource.class.d.ts +1 -0
  419. package/src/app/core/table/entities-table-datasource.class.d.ts +1 -0
  420. package/src/app/core/table/table.class.d.ts +14 -11
  421. package/src/app/core/table/table.module.d.ts +8 -4
  422. package/src/app/core/table/table.pipes.d.ts +28 -0
  423. package/src/app/core/table/testing/table.testing.d.ts +12 -13
  424. package/src/app/core/table/testing/table2.testing.d.ts +13 -10
  425. package/src/app/shared/alerts.d.ts +4 -2
  426. package/src/app/shared/constants.d.ts +5 -0
  427. package/src/app/shared/dates.d.ts +12 -5
  428. package/src/app/shared/directives/autofocus.directive.d.ts +0 -1
  429. package/src/app/shared/events.d.ts +1 -1
  430. package/src/app/shared/file/csv.utils.d.ts +5 -0
  431. package/src/app/shared/file/images.utils.d.ts +17 -0
  432. package/src/app/shared/file/json.utils.d.ts +3 -0
  433. package/src/app/shared/form/field.component.d.ts +6 -3
  434. package/src/app/shared/forms.d.ts +32 -0
  435. package/src/app/shared/functions.d.ts +27 -8
  436. package/src/app/shared/graph/graph-colors.d.ts +1 -1
  437. package/src/app/shared/guard/component-dirty.guard.d.ts +1 -6
  438. package/src/app/shared/hotkeys/hotkeys.service.d.ts +17 -3
  439. package/src/app/shared/http/http.utils.d.ts +1 -0
  440. package/src/app/shared/image/gallery/image-gallery.component.d.ts +10 -10
  441. package/src/app/shared/image/gallery/image-gallery.module.d.ts +2 -1
  442. package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +2 -2
  443. package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +2 -1
  444. package/src/app/shared/inputs.d.ts +8 -6
  445. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +20 -1
  446. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +56 -16
  447. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +1 -1
  448. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +2 -1
  449. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +3 -2
  450. package/src/app/shared/material/badge/badge.directive.d.ts +10 -4
  451. package/src/app/shared/material/boolean/boolean.module.d.ts +15 -14
  452. package/src/app/shared/material/boolean/material.boolean.d.ts +51 -25
  453. package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +1 -0
  454. package/src/app/shared/material/chips/chips.module.d.ts +2 -1
  455. package/src/app/shared/material/chips/material.chips.d.ts +46 -21
  456. package/src/app/shared/material/chips/testing/chips.test.d.ts +1 -0
  457. package/src/app/shared/material/datetime/datetime.module.d.ts +1 -1
  458. package/src/app/shared/material/datetime/material.date.d.ts +33 -18
  459. package/src/app/shared/material/datetime/material.dateshort.d.ts +29 -16
  460. package/src/app/shared/material/datetime/material.datetime.d.ts +41 -28
  461. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +3 -3
  462. package/src/app/shared/material/duration/duration.module.d.ts +1 -1
  463. package/src/app/shared/material/duration/material.duration.d.ts +1 -1
  464. package/src/app/shared/material/latlong/latlong.utils.d.ts +9 -1
  465. package/src/app/shared/material/latlong/material.latlong.d.ts +29 -32
  466. package/src/app/shared/material/latlong/material.latlong.module.d.ts +1 -1
  467. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +5 -1
  468. package/src/app/shared/material/material.config.d.ts +3 -0
  469. package/src/app/shared/material/material.module.d.ts +5 -6
  470. package/src/app/shared/material/material.testing.module.d.ts +8 -7
  471. package/src/app/shared/material/swipe/material.swipe.d.ts +4 -3
  472. package/src/app/shared/material/text/testing/text-form.testing.d.ts +10 -4
  473. package/src/app/shared/material/text/text-form.component.d.ts +42 -8
  474. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +30 -14
  475. package/src/app/shared/named-filter/named-filter.service.d.ts +12 -6
  476. package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +34 -0
  477. package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +10 -0
  478. package/src/app/shared/pipes/arrays.pipe.d.ts +5 -0
  479. package/src/app/shared/pipes/badge.pipes.d.ts +7 -0
  480. package/src/app/shared/pipes/date-format.pipe.d.ts +3 -2
  481. package/src/app/shared/pipes/form.pipes.d.ts +18 -8
  482. package/src/app/shared/pipes/html.pipes.d.ts +15 -0
  483. package/src/app/shared/pipes/maps.pipe.d.ts +4 -4
  484. package/src/app/shared/pipes/maskito.pipe.d.ts +7 -9
  485. package/src/app/shared/pipes/pipes.module.d.ts +7 -4
  486. package/src/app/shared/pipes/property.pipes.d.ts +24 -3
  487. package/src/app/shared/pipes/selection.pipes.d.ts +62 -0
  488. package/src/app/shared/pipes/string.pipes.d.ts +6 -6
  489. package/src/app/shared/pipes/types.pipes.d.ts +6 -1
  490. package/src/app/shared/services/entity-service.class.d.ts +0 -2
  491. package/src/app/shared/services/memory-entity-service.class.d.ts +6 -3
  492. package/src/app/shared/services.d.ts +1 -0
  493. package/src/app/shared/shared.testing.module.d.ts +2 -1
  494. package/src/app/shared/storage/storage-explorer.component.d.ts +4 -3
  495. package/src/app/shared/testing/maskito.test.d.ts +10 -0
  496. package/src/app/shared/toolbar/toolbar.d.ts +7 -2
  497. package/src/app/shared/types.d.ts +5 -0
  498. package/src/app/shared/upload-file/upload-file.component.d.ts +1 -0
  499. package/src/app/shared/validator/form-error-adapter.class.d.ts +17 -11
  500. package/src/app/shared/validator/validators.d.ts +20 -9
  501. package/src/app/social/job/progression/job-progression.icon.d.ts +4 -5
  502. package/src/app/social/job/progression/job-progression.list.d.ts +1 -3
  503. package/src/app/social/job/progression/job-progression.service.d.ts +3 -4
  504. package/src/app/social/job/testing/job-progression.testing.d.ts +0 -1
  505. package/src/app/social/job/testing/job-progression.testing.service.d.ts +3 -11
  506. package/src/app/social/message/message.modal.d.ts +2 -2
  507. package/src/app/social/message/message.model.d.ts +1 -1
  508. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +4 -4
  509. package/src/app/social/user-event/testing/user-event.testing.d.ts +1 -0
  510. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +2 -3
  511. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +1 -0
  512. package/src/assets/i18n/en-US.json +48 -19
  513. package/src/assets/i18n/en.json +48 -20
  514. package/src/assets/i18n/fr.json +50 -20
  515. package/src/assets/manifest.json +1 -1
  516. package/src/environments/environment.class.d.ts +10 -0
  517. package/src/environments/environment.d.ts +0 -1
  518. package/src/environments/environment.loader.d.ts +0 -2
  519. package/src/theme/_functions.scss +15 -0
  520. package/src/theme/_icons.scss +1 -1
  521. package/src/theme/_ionic.globals.scss +8 -2
  522. package/src/theme/_ionic.scss +10 -10
  523. package/src/theme/_material.globals.scss +16 -43
  524. package/src/theme/_material.scss +45 -32
  525. package/src/theme/_mixins.scss +99 -18
  526. package/src/theme/_ngx-components.forms.scss +354 -0
  527. package/src/theme/_ngx-components.globals.scss +20 -10
  528. package/src/theme/_ngx-components.scss +194 -400
  529. package/src/theme/_ngx-components.table.scss +200 -207
  530. package/src/theme/_ngx-components.tabs.scss +54 -0
  531. package/src/theme/_responsive.scss +0 -31
  532. package/src/theme/_theme.scss +2 -0
  533. package/src/theme/_theme.variables.scss +172 -0
  534. package/esm2022/src/app/core/table/actions-column.component.mjs +0 -115
  535. package/esm2022/src/app/shared/material/boolean/material-boolean2.mjs +0 -266
  536. package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +0 -104
  537. package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +0 -83
  538. package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +0 -203
  539. package/esm2022/src/app/shared/material/numpad/numpad.content.mjs +0 -19
  540. package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +0 -168
  541. package/esm2022/src/app/shared/material/numpad/numpad.dom-service.mjs +0 -36
  542. package/esm2022/src/app/shared/material/numpad/numpad.model.mjs +0 -16
  543. package/esm2022/src/app/shared/material/numpad/numpad.module.mjs +0 -60
  544. package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +0 -48
  545. package/src/app/core/table/actions-column.component.d.ts +0 -48
  546. package/src/app/shared/material/boolean/material-boolean2.d.ts +0 -66
  547. package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +0 -22
  548. package/src/app/shared/material/numpad/numpad.component.d.ts +0 -26
  549. package/src/app/shared/material/numpad/numpad.container.d.ts +0 -40
  550. package/src/app/shared/material/numpad/numpad.content.d.ts +0 -7
  551. package/src/app/shared/material/numpad/numpad.directive.d.ts +0 -35
  552. package/src/app/shared/material/numpad/numpad.dom-service.d.ts +0 -16
  553. package/src/app/shared/material/numpad/numpad.model.d.ts +0 -30
  554. package/src/app/shared/material/numpad/numpad.module.d.ts +0 -16
  555. package/src/app/shared/material/numpad/testing/numpad.test.d.ts +0 -13
@@ -11,6 +11,7 @@ export class BaseGraphqlServiceOptions {
11
11
  production;
12
12
  }
13
13
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
15
  export class BaseGraphqlService extends StartableService {
15
16
  graphql;
16
17
  _logPrefix;
@@ -36,12 +37,12 @@ export class BaseGraphqlService extends StartableService {
36
37
  // No arrayFieldName
37
38
  if (!opts.arrayFieldName) {
38
39
  if (this._debug)
39
- console.warn(this._logPrefix + '̀Missing \'opts.arrayFieldName\' : unable to create a mutable watch query');
40
+ console.warn(this._logPrefix + "̀Missing 'opts.arrayFieldName' : unable to create a mutable watch query");
40
41
  return this.graphql.watchQuery(opts);
41
42
  }
42
43
  // Create the query id
43
44
  const queryId = this.computeMutableWatchQueryId(opts);
44
- const exactMatchQueries = this._mutableWatchQueries.filter(q => q.id === queryId);
45
+ const exactMatchQueries = this._mutableWatchQueries.filter((q) => q.id === queryId);
45
46
  let mutableQuery;
46
47
  let queryRef;
47
48
  if (exactMatchQueries.length === 1) {
@@ -70,22 +71,21 @@ export class BaseGraphqlService extends StartableService {
70
71
  totalFieldName: opts.totalFieldName,
71
72
  insertFilterFn: opts.insertFilterFn,
72
73
  sortFn: opts.sortFn,
73
- counter: 1
74
+ counter: 1,
74
75
  });
75
76
  }
76
- return this.graphql.queryRefValuesChanges(queryRef, opts)
77
- .pipe(
77
+ return this.graphql.queryRefValuesChanges(queryRef, opts).pipe(
78
78
  // FIXME: find why sometimes data is an object, and not and array
79
- filter(res => Array.isArray(res[opts.arrayFieldName])));
79
+ filter((res) => Array.isArray(res[opts.arrayFieldName])));
80
80
  }
81
81
  insertIntoMutableCachedQueries(cache, opts) {
82
82
  const queries = this.findMutableWatchQueries(opts);
83
83
  if (!queries.length)
84
84
  return;
85
- queries.forEach(query => {
85
+ queries.forEach((query) => {
86
86
  if (Array.isArray(opts.data)) {
87
87
  // Filter values, if a filter function exists
88
- const data = query.insertFilterFn ? opts.data.filter(d => query.insertFilterFn(d)) : opts.data;
88
+ const data = query.insertFilterFn ? opts.data.filter((d) => query.insertFilterFn(d)) : opts.data;
89
89
  if (isNotEmptyArray(data)) {
90
90
  if (this._debug)
91
91
  console.debug(`[base-data-service] Inserting data into watching query: `, query.id);
@@ -95,7 +95,7 @@ export class BaseGraphqlService extends StartableService {
95
95
  arrayFieldName: query.arrayFieldName,
96
96
  totalFieldName: query.totalFieldName,
97
97
  sortFn: query.sortFn,
98
- data
98
+ data,
99
99
  });
100
100
  }
101
101
  }
@@ -109,7 +109,7 @@ export class BaseGraphqlService extends StartableService {
109
109
  arrayFieldName: query.arrayFieldName,
110
110
  totalFieldName: query.totalFieldName,
111
111
  sortFn: query.sortFn,
112
- data: opts.data
112
+ data: opts.data,
113
113
  });
114
114
  }
115
115
  });
@@ -119,14 +119,15 @@ export class BaseGraphqlService extends StartableService {
119
119
  if (!queries.length)
120
120
  return;
121
121
  console.debug(`[base-data-service] Removing data from watching queries: `, queries);
122
- return queries.map(query => {
122
+ return (queries
123
+ .map((query) => {
123
124
  if (Array.isArray(opts.ids)) {
124
125
  return this.graphql.removeFromCachedQueryByIds(cache, {
125
126
  query: query.query,
126
127
  variables: query.variables,
127
128
  arrayFieldName: query.arrayFieldName,
128
129
  totalFieldName: query.totalFieldName,
129
- ids: opts.ids
130
+ ids: opts.ids,
130
131
  });
131
132
  }
132
133
  else {
@@ -135,12 +136,14 @@ export class BaseGraphqlService extends StartableService {
135
136
  variables: query.variables,
136
137
  arrayFieldName: query.arrayFieldName,
137
138
  totalFieldName: query.totalFieldName,
138
- ids: opts.ids
139
- }) ? 1 : 0;
139
+ ids: opts.ids,
140
+ })
141
+ ? 1
142
+ : 0;
140
143
  }
141
144
  })
142
145
  // Sum
143
- .reduce((res, count) => res + count, 0);
146
+ .reduce((res, count) => res + count, 0));
144
147
  }
145
148
  async refetchMutableWatchQueries(opts) {
146
149
  // Retrieve queries to refetch
@@ -149,7 +152,7 @@ export class BaseGraphqlService extends StartableService {
149
152
  if (!queries.length)
150
153
  return;
151
154
  try {
152
- await Promise.all(queries.map(query => {
155
+ await Promise.all(queries.map((query) => {
153
156
  if (this._debug)
154
157
  console.debug(this._logPrefix + `Refetching mutable watch query {${query.id}}`);
155
158
  return query.queryRef.refetch({ ...query.variables, ...opts.variables });
@@ -162,29 +165,30 @@ export class BaseGraphqlService extends StartableService {
162
165
  /* -- protected methods -- */
163
166
  computeMutableWatchQueryId(opts) {
164
167
  const queryName = opts.queryName || CryptoService.sha256(JSON.stringify(opts.query)).substring(0, 8);
165
- const variablesKey = opts.variables && CryptoService.sha256(JSON.stringify(opts.variables)).substring(0, 8) || '';
168
+ const variablesKey = (opts.variables && CryptoService.sha256(JSON.stringify(opts.variables)).substring(0, 8)) || '';
166
169
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
167
170
  }
168
171
  findMutableWatchQueries(opts) {
169
172
  // Search by queryName
170
173
  if (opts.queryName) {
171
- return this._mutableWatchQueries.filter(q => q.id.startsWith(opts.queryName + '|'));
174
+ return this._mutableWatchQueries.filter((q) => q.id.startsWith(opts.queryName + '|'));
172
175
  }
173
176
  if (opts.queryNames) {
174
- return opts.queryNames.map(queryName => this._mutableWatchQueries.filter(q => q.id.startsWith(queryName + '|')))
177
+ return (opts.queryNames
178
+ .map((queryName) => this._mutableWatchQueries.filter((q) => q.id.startsWith(queryName + '|')))
175
179
  // flatMap
176
- .reduce((res, array) => res.concat(...array), []);
180
+ .reduce((res, array) => res.concat(...array), []));
177
181
  }
178
182
  // Search by query
179
183
  if (opts.query) {
180
- return this._mutableWatchQueries.filter(q => q.query === opts.query);
184
+ return this._mutableWatchQueries.filter((q) => q.query === opts.query);
181
185
  }
182
186
  if (opts.queries) {
183
- return opts.queries
187
+ return (opts.queries
184
188
  .filter(isNotNil)
185
- .map(query => this._mutableWatchQueries.filter(q => q.query === query))
189
+ .map((query) => this._mutableWatchQueries.filter((q) => q.query === query))
186
190
  // flatMap
187
- .reduce((res, array) => res.concat(...array), []);
191
+ .reduce((res, array) => res.concat(...array), []));
188
192
  }
189
193
  throw Error('Invalid options: only one property must be set');
190
194
  }
@@ -195,30 +199,32 @@ export class BaseGraphqlService extends StartableService {
195
199
  if (this._mutableWatchQueriesMaxCount > 0 && this._mutableWatchQueries.length >= this._mutableWatchQueriesMaxCount) {
196
200
  const removedWatchQueries = this._mutableWatchQueries.splice(0, 1 + this._mutableWatchQueries.length - this._mutableWatchQueriesMaxCount);
197
201
  // Warn, as it shouldn't be happen often, when max is correctly set
198
- console.warn(this._logPrefix + `Removing older mutable watching queries (stack exceed max of ${this._mutableWatchQueriesMaxCount}): `, removedWatchQueries.map(q => q.id));
202
+ console.warn(this._logPrefix + `Removing older mutable watching queries (stack exceed max of ${this._mutableWatchQueriesMaxCount}): `, removedWatchQueries.map((q) => q.id));
199
203
  }
200
204
  // Define the sort function (to be used in insertIntoMutableCachedQuery())
201
205
  if (!mutableQuery.sortFn && mutableQuery.variables && mutableQuery.variables.sortBy) {
202
- mutableQuery.sortFn = mutableQuery.variables && mutableQuery.variables.sortBy
203
- && EntityUtils.sortComparator(mutableQuery.variables.sortBy, mutableQuery.variables.sortDirection || 'asc');
206
+ mutableQuery.sortFn =
207
+ mutableQuery.variables &&
208
+ mutableQuery.variables.sortBy &&
209
+ EntityUtils.sortComparator(mutableQuery.variables.sortBy, mutableQuery.variables.sortDirection || 'asc');
204
210
  }
205
211
  // Add the new mutable query to array
206
212
  this._mutableWatchQueries.push(mutableQuery);
207
213
  }
208
214
  findRefetchQueries(opts) {
209
- return this.findMutableWatchQueries(opts)
215
+ return (this.findMutableWatchQueries(opts)
210
216
  // Workaround, to make refetch queries works: transform into a simple {query, variables}
211
- .map(({ query, variables }) => ({ query, variables }));
217
+ .map(({ query, variables }) => ({ query, variables })));
212
218
  }
213
219
  ngOnStart() {
214
220
  return Promise.resolve(null);
215
221
  }
216
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: BaseGraphqlService, deps: [{ token: i1.GraphqlService }, { token: BaseGraphqlServiceOptions, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
217
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: BaseGraphqlService, usesInheritance: true, ngImport: i0 });
222
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseGraphqlService, deps: [{ token: i1.GraphqlService }, { token: BaseGraphqlServiceOptions, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
223
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: BaseGraphqlService, usesInheritance: true, ngImport: i0 });
218
224
  }
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: BaseGraphqlService, decorators: [{
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseGraphqlService, decorators: [{
220
226
  type: Directive
221
227
  }], ctorParameters: () => [{ type: i1.GraphqlService }, { type: BaseGraphqlServiceOptions, decorators: [{
222
228
  type: Optional
223
229
  }] }] });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUE4Q3hDLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsVUFBVSxDQUFXO0NBQ3RCO0FBR0Qsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0Isa0JBQXlELFNBQVEsZ0JBQW1CO0lBWTVGO0lBVkYsVUFBVSxDQUFTO0lBQ25CLG9CQUFvQixHQUF3QyxFQUFFLENBQUM7SUFFekUsd0NBQXdDO0lBQ3hDLG1EQUFtRDtJQUNuRCxpQ0FBaUM7SUFDakMsNkdBQTZHO0lBQ25HLDRCQUE0QixHQUFHLENBQUMsQ0FBQztJQUUzQyxZQUNZLE9BQXVCLEVBQ3JCLE9BQW1DO1FBRS9DLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhMLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBS2pDLGVBQWU7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENB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ekQsQ0FBQztJQUVTLFNBQVM7UUFDakIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7dUdBeE9tQixrQkFBa0I7MkZBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFGdkMsU0FBUzs7MEJBZUwsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBocWxTZXJ2aWNlLCBNdXRhdGVRdWVyeU9wdGlvbnMsIFdhdGNoUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGZXRjaFJlc3VsdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlVdGlscyB9IGZyb20gJy4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEFwb2xsb0NhY2hlLCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVyeVJlZiB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IFB1cmVRdWVyeU9wdGlvbnMgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgU3RhcnRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBFbXB0eU9iamVjdCB9IGZyb20gJy4uL2dyYXBocWwvZ3JhcGhxbC51dGlscyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlWYXJpYWJsZXM8RiA9IGFueT4gZXh0ZW5kcyBQYXJ0aWFsPFBhZ2U+IHtcbiAgZmlsdGVyPzogRjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE11dGF0ZVF1ZXJ5V2l0aENhY2hlVXBkYXRlT3B0aW9uczxUID0gYW55LCBWID0gRW1wdHlPYmplY3Q+IGV4dGVuZHMgTXV0YXRlUXVlcnlPcHRpb25zPFQsIFY+IHtcbiAgY2FjaGVJbnNlcnQ/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaERhdGE6ICh2YXJpYWJsZXM6IFYsIG11dGF0aW9uUmVzdWx0OiBGZXRjaFJlc3VsdDxUPikgPT4gYW55O1xuICB9W107XG5cbiAgY2FjaGVSZW1vdmU/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaElkczogKHZhcmlhYmxlczogVikgPT4gbnVtYmVyIHwgbnVtYmVyW107XG4gIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCA9IGFueSwgViA9IEVtcHR5T2JqZWN0PiBleHRlbmRzIFdhdGNoUXVlcnlPcHRpb25zPFY+IHtcbiAgcXVlcnlOYW1lOiBzdHJpbmc7XG4gIGFycmF5RmllbGROYW1lOiBrZXlvZiBEO1xuICB0b3RhbEZpZWxkTmFtZT86IGtleW9mIEQgO1xuICBpbnNlcnRGaWx0ZXJGbj86IChkYXRhOiBUKSA9PiBib29sZWFuO1xuICBzb3J0Rm4/OiAoYTogVCwgYjogVCkgPT4gbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248VERhdGEsIFRFbnRpdHlDbGFzcyA9IGFueSwgVFZhcmlhYmxlcyA9IEVtcHR5T2JqZWN0PiBleHRlbmRzIFB1cmVRdWVyeU9wdGlvbnM8VFZhcmlhYmxlcywgVERhdGE+IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHF1ZXJ5OiBEb2N1bWVudE5vZGUgfCBUeXBlZERvY3VtZW50Tm9kZTxURGF0YSwgVFZhcmlhYmxlcz47XG4gIHF1ZXJ5UmVmOiBRdWVyeVJlZjxURGF0YSwgVFZhcmlhYmxlcz47XG4gIHZhcmlhYmxlczogVFZhcmlhYmxlcztcbiAgYXJyYXlGaWVsZE5hbWU6IGtleW9mIFREYXRhO1xuICB0b3RhbEZpZWxkTmFtZT86IGtleW9mIFREYXRhO1xuICBpbnNlcnRGaWx0ZXJGbj86IChkYXRhOiBURW50aXR5Q2xhc3MpID0+IGJvb2xlYW47XG4gIHNvcnRGbj86IChhOiBURW50aXR5Q2xhc3MsIGI6IFRFbnRpdHlDbGFzcykgPT4gbnVtYmVyO1xuICBjb3VudGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zIHtcbiAgcXVlcnk/OiBEb2N1bWVudE5vZGU7XG4gIHF1ZXJpZXM/OiBEb2N1bWVudE5vZGVbXTtcbiAgcXVlcnlOYW1lPzogc3RyaW5nO1xuICBxdWVyeU5hbWVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBCYXNlR3JhcGhxbFNlcnZpY2VPcHRpb25zIHtcbiAgcHJvZHVjdGlvbj86IGJvb2xlYW47XG59XG5cbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUdyYXBocWxTZXJ2aWNlPFQgPSBhbnksIEYgPSBhbnksIElEID0gYW55LCBTID0gdm9pZD4gZXh0ZW5kcyBTdGFydGFibGVTZXJ2aWNlPFM+IHtcblxuICBwcm90ZWN0ZWQgX2xvZ1ByZWZpeDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX211dGFibGVXYXRjaFF1ZXJpZXM6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248YW55PltdID0gW107XG5cbiAgLy8gTWF4IHVwZGF0ZWQgcXVlcmllcywgZm9yIHRoaXMgZW50aXR5LlxuICAvLyAtIENhbiBiZSBvdmVycmlkZSBieSBzdWJjbGFzc2VzIChpbiBjb25zdHJ1Y3RvcilcbiAgLy8gLSBVc2UgdmFsdWUgLTEgZm9yIG5vIG1heCBzaXplXG4gIC8vIC0gRGVmYXVsdCB2YWx1ZSB0byAzLCBiZWNhdXNlIGl0IHVzdWFsbHkgZW5vdWdoIChlLmcuIE9wZXJhdGlvblNlcnZpY2UgYW5kIExhbmRpbmdTZXJ2aWNlIG5lZWQgYXQgbGVhc3QgMilcbiAgcHJvdGVjdGVkIF9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQgPSAzO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgb3B0aW9ucz86IEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCk7XG5cbiAgICAvLyBmb3IgREVWIG9ubHlcbiAgICB0aGlzLl9kZWJ1ZyA9IHRvQm9vbGVhbihvcHRpb25zICYmICFvcHRpb25zLnByb2R1Y3Rpb24sICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKTtcbiAgICB0aGlzLl9sb2dQcmVmaXggPSBgW2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlXSBgO1xuICB9XG5cbiAgbXV0YWJsZVdhdGNoUXVlcnk8RCwgViA9IEVtcHR5T2JqZWN0PihvcHRzOiBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCwgVj4pOiBPYnNlcnZhYmxlPEQ+IHtcbiAgICBvcHRzLmZldGNoUG9saWN5ID0gb3B0cy5mZXRjaFBvbGljeSB8fCB0aGlzLmdyYXBocWwuZGVmYXVsdEZldGNoUG9saWN5O1xuXG4gICAgLy8gU3RhbmRhcmQgcXVlcnkgKG5vIGNhY2hlKVxuICAgIGlmIChvcHRzLmZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncmFwaHFsLndhdGNoUXVlcnkob3B0cyk7XG4gICAgfVxuXG4gICAgLy8gTm8gYXJyYXlGaWVsZE5hbWVcbiAgICBpZiAoIW9wdHMuYXJyYXlGaWVsZE5hbWUpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArICfMgE1pc3NpbmcgXFwnb3B0cy5hcnJheUZpZWxkTmFtZVxcJyA6IHVuYWJsZSB0byBjcmVhdGUgYSBtdXRhYmxlIHdhdGNoIHF1ZXJ5Jyk7XG4gICAgICByZXR1cm4gdGhpcy5ncmFwaHFsLndhdGNoUXVlcnkob3B0cyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBxdWVyeSBpZFxuICAgIGNvbnN0IHF1ZXJ5SWQgPSB0aGlzLmNvbXB1dGVNdXRhYmxlV2F0Y2hRdWVyeUlkKG9wdHMpO1xuICAgIGNvbnN0IGV4YWN0TWF0Y2hRdWVyaWVzID0gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5maWx0ZXIocSA9PiBxLmlkID09PSBxdWVyeUlkKTtcblxuICAgIGxldCBtdXRhYmxlUXVlcnk6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248RCwgVCwgVj47XG4gICAgbGV0IHF1ZXJ5UmVmOiBRdWVyeVJlZjxELCBWPjtcblxuICAgIGlmIChleGFjdE1hdGNoUXVlcmllcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIG11dGFibGVRdWVyeSA9IGV4YWN0TWF0Y2hRdWVyaWVzWzBdIGFzIE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248RCwgVCwgVj47XG4gICAgICBtdXRhYmxlUXVlcnkuY291bnRlciArPSAxO1xuICAgICAgcXVlcnlSZWYgPSBtdXRhYmxlUXVlcnkucXVlcnlSZWY7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYEZpbmQgc2FtZSBtdXRhYmxlIHdhdGNoIHF1ZXJ5IChzYW1lIHZhcmlhYmxlcykgeyR7cXVlcnlJZH19LiBTa2lwIHJlZ2lzdGVyYCk7XG5cbiAgICAgIC8vIFJlZmV0Y2ggaWYgbmVlZCBkYXRhIGZyb20gbmV0d29ya1xuICAgICAgaWYgKG9wdHMuZmV0Y2hQb2xpY3kgPT09ICduZXR3b3JrLW9ubHknIHx8IG9wdHMuZmV0Y2hQb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yaycpIHtcbiAgICAgICAgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArICcgTXV0YWJsZSBxdWVyeSBhbHJlYWR5IGV4aXN0cywgYW5kIGZldGNoUG9saWN5PScgKyBvcHRzLmZldGNoUG9saWN5ICsgJy4gRm9yY2UgcmVmZXRjaCBxdWVyeS4uLicpO1xuICAgICAgICBxdWVyeVJlZi5yZWZldGNoKG11dGFibGVRdWVyeS52YXJpYWJsZXMpO1xuICAgICAgfVxuICAgICAgLy9pZiAobXV0YWJsZVF1ZXJ5LmNvdW50ZXIgPiAzKSB7XG4gICAgICAvLyAgY29uc29sZS53YXJuKHRoaXMuX2RlYnVnUHJlZml4ICsgJ1RPRE86IGNsZWFuIHByZXZpb3VzIHF1ZXJpZXMgd2l0aCBuYW1lOiAnICsgcXVlcnlOYW1lKTtcbiAgICAgIC8vfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHF1ZXJ5UmVmID0gdGhpcy5ncmFwaHFsLndhdGNoUXVlcnlSZWY8RCwgVj4ob3B0cyk7XG4gICAgICB0aGlzLnJlZ2lzdGVyTmV3TXV0YWJsZVdhdGNoUXVlcnkoe1xuICAgICAgICBpZDogcXVlcnlJZCxcbiAgICAgICAgcXVlcnk6IG9wdHMucXVlcnksXG4gICAgICAgIHF1ZXJ5UmVmLFxuICAgICAgICB2YXJpYWJsZXM6IG9wdHMudmFyaWFibGVzLFxuICAgICAgICBhcnJheUZpZWxkTmFtZTogb3B0cy5hcnJheUZpZWxkTmFtZSxcbiAgICAgICAgdG90YWxGaWVsZE5hbWU6IG9wdHMudG90YWxGaWVsZE5hbWUsXG4gICAgICAgIGluc2VydEZpbHRlckZuOiBvcHRzLmluc2VydEZpbHRlckZuLFxuICAgICAgICBzb3J0Rm46IG9wdHMuc29ydEZuLFxuICAgICAgICBjb3VudGVyOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsLnF1ZXJ5UmVmVmFsdWVzQ2hhbmdlcyhxdWVyeVJlZiwgb3B0cylcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBGSVhNRTogZmluZCB3aHkgc29tZXRpbWVzIGRhdGEgaXMgYW4gb2JqZWN0LCBhbmQgbm90IGFuZCBhcnJheVxuICAgICAgICBmaWx0ZXIocmVzID0+IEFycmF5LmlzQXJyYXkocmVzW29wdHMuYXJyYXlGaWVsZE5hbWVdKSlcbiAgICAgIClcbiAgICA7XG4gIH1cblxuICBpbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMoY2FjaGU6IEFwb2xsb0NhY2hlPGFueT4sIG9wdHM6IEZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzT3B0aW9ucyAmIHtcbiAgICBkYXRhOiBUW10gfCBUO1xuICB9KSB7XG4gICAgY29uc3QgcXVlcmllcyA9IHRoaXMuZmluZE11dGFibGVXYXRjaFF1ZXJpZXMob3B0cyk7XG4gICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkgIHJldHVybjtcblxuICAgIHF1ZXJpZXMuZm9yRWFjaChxdWVyeSA9PiB7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0cy5kYXRhKSkge1xuICAgICAgICAgIC8vIEZpbHRlciB2YWx1ZXMsIGlmIGEgZmlsdGVyIGZ1bmN0aW9uIGV4aXN0c1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBxdWVyeS5pbnNlcnRGaWx0ZXJGbiA/IG9wdHMuZGF0YS5maWx0ZXIoZCA9PiBxdWVyeS5pbnNlcnRGaWx0ZXJGbihkKSkgOiBvcHRzLmRhdGE7XG4gICAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbYmFzZS1kYXRhLXNlcnZpY2VdIEluc2VydGluZyBkYXRhIGludG8gd2F0Y2hpbmcgcXVlcnk6IGAsIHF1ZXJ5LmlkKTtcbiAgICAgICAgICAgIHRoaXMuZ3JhcGhxbC5hZGRNYW55VG9RdWVyeUNhY2hlKGNhY2hlLCB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5xdWVyeSxcbiAgICAgICAgICAgICAgdmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICAgIGFycmF5RmllbGROYW1lOiBxdWVyeS5hcnJheUZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgIHRvdGFsRmllbGROYW1lOiBxdWVyeS50b3RhbEZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgIHNvcnRGbjogcXVlcnkuc29ydEZuLFxuICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmlsdGVyIHZhbHVlLCBpZiBhIGZpbHRlciBmdW5jdGlvbiBleGlzdHNcbiAgICAgICAgZWxzZSBpZiAoIXF1ZXJ5Lmluc2VydEZpbHRlckZuIHx8IHF1ZXJ5Lmluc2VydEZpbHRlckZuKG9wdHMuZGF0YSkpIHtcbiAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtiYXNlLWRhdGEtc2VydmljZV0gSW5zZXJ0aW5nIGRhdGEgaW50byB3YXRjaGluZyBxdWVyeTogYCwgcXVlcnkuaWQpO1xuICAgICAgICAgIHRoaXMuZ3JhcGhxbC5pbnNlcnRJbnRvUXVlcnlDYWNoZShjYWNoZSwge1xuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LnF1ZXJ5LFxuICAgICAgICAgICAgdmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU6IHF1ZXJ5LnRvdGFsRmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHNvcnRGbjogcXVlcnkuc29ydEZuLFxuICAgICAgICAgICAgZGF0YTogb3B0cy5kYXRhXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlRnJvbU11dGFibGVDYWNoZWRRdWVyaWVzQnlJZHMoY2FjaGU6IEFwb2xsb0NhY2hlPGFueT4sIG9wdHM6IEZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzT3B0aW9ucyAmIHtcbiAgICBpZHM6IElEfElEW107XG4gIH0pOiBudW1iZXIge1xuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpO1xuICAgIGlmICghcXVlcmllcy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnNvbGUuZGVidWcoYFtiYXNlLWRhdGEtc2VydmljZV0gUmVtb3ZpbmcgZGF0YSBmcm9tIHdhdGNoaW5nIHF1ZXJpZXM6IGAsIHF1ZXJpZXMpO1xuICAgIHJldHVybiBxdWVyaWVzLm1hcChxdWVyeSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRzLmlkcykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5yZW1vdmVGcm9tQ2FjaGVkUXVlcnlCeUlkcyhjYWNoZSwge1xuICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5xdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHF1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgIHRvdGFsRmllbGROYW1lOiBxdWVyeS50b3RhbEZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgaWRzOiBvcHRzLmlkc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmFwaHFsLnJlbW92ZUZyb21DYWNoZWRRdWVyeUJ5SWQoY2FjaGUsIHtcbiAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgYXJyYXlGaWVsZE5hbWU6IHF1ZXJ5LmFycmF5RmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgIGlkczogb3B0cy5pZHNcbiAgICAgICAgfSkgPyAxIDogMDtcbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIFN1bVxuICAgIC5yZWR1Y2UoKHJlcywgY291bnQpID0+IHJlcyArIGNvdW50LCAwKTtcbiAgfVxuXG4gIGFzeW5jIHJlZmV0Y2hNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHM6IEZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzT3B0aW9ucyAmIHsgdmFyaWFibGVzPzogYW55IH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBSZXRyaWV2ZSBxdWVyaWVzIHRvIHJlZmV0Y2hcbiAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5maW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzKTtcblxuICAgIC8vIFNraXAgaWYgbm90aGluZyB0byByZWZldGNoXG4gICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHF1ZXJpZXMubWFwKHF1ZXJ5ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBSZWZldGNoaW5nIG11dGFibGUgd2F0Y2ggcXVlcnkgeyR7cXVlcnkuaWR9fWApO1xuICAgICAgICByZXR1cm4gcXVlcnkucXVlcnlSZWYucmVmZXRjaCh7Li4ucXVlcnkudmFyaWFibGVzLCAuLi5vcHRzLnZhcmlhYmxlc30pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKHRoaXMuX2xvZ1ByZWZpeCArICdFcnJvciB3aGlsZSByZWZldGNoaW5nIG11dGFibGUgd2F0Y2ggcXVlcmllcycsIGVycik7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgY29tcHV0ZU11dGFibGVXYXRjaFF1ZXJ5SWQ8RCwgVCwgViA9IEVtcHR5T2JqZWN0PihvcHRzOiBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCwgVj4pIHtcbiAgICBjb25zdCBxdWVyeU5hbWUgPSBvcHRzLnF1ZXJ5TmFtZSB8fCBDcnlwdG9TZXJ2aWNlLnNoYTI1NihKU09OLnN0cmluZ2lmeShvcHRzLnF1ZXJ5KSkuc3Vic3RyaW5nKDAsIDgpO1xuICAgIGNvbnN0IHZhcmlhYmxlc0tleSA9IG9wdHMudmFyaWFibGVzICYmIENyeXB0b1NlcnZpY2Uuc2hhMjU2KEpTT04uc3RyaW5naWZ5KG9wdHMudmFyaWFibGVzKSkuc3Vic3RyaW5nKDAsIDgpIHx8ICcnO1xuICAgIHJldHVybiBbcXVlcnlOYW1lLCBvcHRzLmFycmF5RmllbGROYW1lLCB2YXJpYWJsZXNLZXldLmpvaW4oJ3wnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMpOiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPGFueT5bXSB7XG4gICAgLy8gU2VhcmNoIGJ5IHF1ZXJ5TmFtZVxuICAgIGlmIChvcHRzLnF1ZXJ5TmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKHEgPT4gcS5pZC5zdGFydHNXaXRoKG9wdHMucXVlcnlOYW1lICsgJ3wnKSk7XG4gICAgfVxuICAgIGlmIChvcHRzLnF1ZXJ5TmFtZXMpIHtcbiAgICAgIHJldHVybiBvcHRzLnF1ZXJ5TmFtZXMubWFwKHF1ZXJ5TmFtZSA9PiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcihxID0+IHEuaWQuc3RhcnRzV2l0aChxdWVyeU5hbWUgKyAnfCcpKSlcbiAgICAgICAgLy8gZmxhdE1hcFxuICAgICAgICAucmVkdWNlKChyZXMsIGFycmF5KSA9PiByZXMuY29uY2F0KC4uLmFycmF5KSwgW10pO1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBieSBxdWVyeVxuICAgIGlmIChvcHRzLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5maWx0ZXIocSA9PiBxLnF1ZXJ5ID09PSBvcHRzLnF1ZXJ5KTtcbiAgICB9XG4gICAgaWYgKG9wdHMucXVlcmllcykge1xuICAgICAgcmV0dXJuIG9wdHMucXVlcmllc1xuICAgICAgICAuZmlsdGVyKGlzTm90TmlsKVxuICAgICAgICAubWFwKHF1ZXJ5ID0+IHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKHEgPT4gcS5xdWVyeSA9PT0gcXVlcnkpKVxuICAgICAgICAvLyBmbGF0TWFwXG4gICAgICAgIC5yZWR1Y2UoKHJlcywgYXJyYXkpID0+IHJlcy5jb25jYXQoLi4uYXJyYXkpLCBbXSk7XG4gICAgfVxuICAgIHRocm93IEVycm9yKCdJbnZhbGlkIG9wdGlvbnM6IG9ubHkgb25lIHByb3BlcnR5IG11c3QgYmUgc2V0Jyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVnaXN0ZXJOZXdNdXRhYmxlV2F0Y2hRdWVyeShtdXRhYmxlUXVlcnk6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248YW55Pikge1xuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBSZWdpc3RlciBuZXcgbXV0YWJsZSB3YXRjaCBxdWVyeSB7JHttdXRhYmxlUXVlcnkuaWR9fWApO1xuXG4gICAgLy8gSWYgZXhjZWVkIHRoZSBtYXggc2l6ZSBvZiBtdXRhYmxlIHF1ZXJpZXM6IHJlbW92ZSBzb21lXG4gICAgaWYgKHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXNNYXhDb3VudCA+IDAgJiYgdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5sZW5ndGggPj0gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllc01heENvdW50KSB7XG4gICAgICBjb25zdCByZW1vdmVkV2F0Y2hRdWVyaWVzID0gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5zcGxpY2UoMCwgMSArIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMubGVuZ3RoIC0gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllc01heENvdW50KTtcblxuICAgICAgLy8gV2FybiwgYXMgaXQgc2hvdWxkbid0IGJlIGhhcHBlbiBvZnRlbiwgd2hlbiBtYXggaXMgY29ycmVjdGx5IHNldFxuICAgICAgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArIGBSZW1vdmluZyBvbGRlciBtdXRhYmxlIHdhdGNoaW5nIHF1ZXJpZXMgKHN0YWNrIGV4Y2VlZCBtYXggb2YgJHt0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnR9KTogYCxcbiAgICAgICAgcmVtb3ZlZFdhdGNoUXVlcmllcy5tYXAocSA9PiBxLmlkKSk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSBzb3J0IGZ1bmN0aW9uICh0byBiZSB1c2VkIGluIGluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcnkoKSlcbiAgICBpZiAoIW11dGFibGVRdWVyeS5zb3J0Rm4gJiYgbXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcyAmJiBtdXRhYmxlUXVlcnkudmFyaWFibGVzLnNvcnRCeSkge1xuICAgICAgbXV0YWJsZVF1ZXJ5LnNvcnRGbiA9IG11dGFibGVRdWVyeS52YXJpYWJsZXMgJiYgbXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcy5zb3J0QnlcbiAgICAgICYmIEVudGl0eVV0aWxzLnNvcnRDb21wYXJhdG9yKG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydEJ5LCBtdXRhYmxlUXVlcnkudmFyaWFibGVzLnNvcnREaXJlY3Rpb24gfHwgJ2FzYycpO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGUgbmV3IG11dGFibGUgcXVlcnkgdG8gYXJyYXlcbiAgICB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLnB1c2gobXV0YWJsZVF1ZXJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kUmVmZXRjaFF1ZXJpZXMob3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zKTogSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUge1xuICAgIHJldHVybiB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpXG4gICAgICAvLyBXb3JrYXJvdW5kLCB0byBtYWtlIHJlZmV0Y2ggcXVlcmllcyB3b3JrczogdHJhbnNmb3JtIGludG8gYSBzaW1wbGUge3F1ZXJ5LCB2YXJpYWJsZXN9XG4gICAgICAubWFwKCh7cXVlcnksIHZhcmlhYmxlc30pID0+ICh7IHF1ZXJ5LCB2YXJpYWJsZXMgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25TdGFydCgpOiBQcm9taXNlPFM+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwgYXMgUyk7XG4gIH1cbn1cbiJdfQ==
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUE4Q3hDLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsVUFBVSxDQUFXO0NBQ3RCO0FBR0Qsa0VBQWtFO0FBQ2xFLDZEQUE2RDtBQUM3RCxNQUFNLE9BQWdCLGtCQUF5RCxTQUFRLGdCQUFtQjtJQVc1RjtJQVZGLFVBQVUsQ0FBUztJQUNuQixvQkFBb0IsR0FBd0MsRUFBRSxDQUFDO0lBRXpFLHdDQUF3QztJQUN4QyxtREFBbUQ7SUFDbkQsaUNBQWlDO0lBQ2pDLDZHQUE2RztJQUNuRyw0QkFBNEIsR0FBRyxDQUFDLENBQUM7SUFFM0MsWUFDWSxPQUF1QixFQUNyQixPQUFtQztRQUUvQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFITCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUtqQyxlQUFlO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFD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Q0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLENBQUM7UUFDN0csQ0FBQztRQUVELHFDQUFxQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxJQUFvQztRQUMvRCxPQUFPLENBQ0wsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQztZQUNoQyx3RkFBd0Y7YUFDdkYsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVTLFNBQVM7UUFDakIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7dUdBeFBtQixrQkFBa0I7MkZBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFIdkMsU0FBUzs7MEJBZUwsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBocWxTZXJ2aWNlLCBNdXRhdGVRdWVyeU9wdGlvbnMsIFdhdGNoUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGZXRjaFJlc3VsdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlVdGlscyB9IGZyb20gJy4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEFwb2xsb0NhY2hlLCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVyeVJlZiB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IFB1cmVRdWVyeU9wdGlvbnMgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgU3RhcnRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBFbXB0eU9iamVjdCB9IGZyb20gJy4uL2dyYXBocWwvZ3JhcGhxbC51dGlscyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlWYXJpYWJsZXM8RiA9IGFueT4gZXh0ZW5kcyBQYXJ0aWFsPFBhZ2U+IHtcbiAgZmlsdGVyPzogRjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE11dGF0ZVF1ZXJ5V2l0aENhY2hlVXBkYXRlT3B0aW9uczxUID0gYW55LCBWID0gRW1wdHlPYmplY3Q+IGV4dGVuZHMgTXV0YXRlUXVlcnlPcHRpb25zPFQsIFY+IHtcbiAgY2FjaGVJbnNlcnQ/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaERhdGE6ICh2YXJpYWJsZXM6IFYsIG11dGF0aW9uUmVzdWx0OiBGZXRjaFJlc3VsdDxUPikgPT4gYW55O1xuICB9W107XG5cbiAgY2FjaGVSZW1vdmU/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaElkczogKHZhcmlhYmxlczogVikgPT4gbnVtYmVyIHwgbnVtYmVyW107XG4gIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCA9IGFueSwgViA9IEVtcHR5T2JqZWN0PiBleHRlbmRzIFdhdGNoUXVlcnlPcHRpb25zPFY+IHtcbiAgcXVlcnlOYW1lOiBzdHJpbmc7XG4gIGFycmF5RmllbGROYW1lOiBrZXlvZiBEO1xuICB0b3RhbEZpZWxkTmFtZT86IGtleW9mIEQ7XG4gIGluc2VydEZpbHRlckZuPzogKGRhdGE6IFQpID0+IGJvb2xlYW47XG4gIHNvcnRGbj86IChhOiBULCBiOiBUKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YWJsZVdhdGNoUXVlcnlEZXNjcmlwdGlvbjxURGF0YSwgVEVudGl0eUNsYXNzID0gYW55LCBUVmFyaWFibGVzID0gRW1wdHlPYmplY3Q+IGV4dGVuZHMgUHVyZVF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzLCBURGF0YT4ge1xuICBpZD86IHN0cmluZztcbiAgcXVlcnk6IERvY3VtZW50Tm9kZSB8IFR5cGVkRG9jdW1lbnROb2RlPFREYXRhLCBUVmFyaWFibGVzPjtcbiAgcXVlcnlSZWY6IFF1ZXJ5UmVmPFREYXRhLCBUVmFyaWFibGVzPjtcbiAgdmFyaWFibGVzOiBUVmFyaWFibGVzO1xuICBhcnJheUZpZWxkTmFtZToga2V5b2YgVERhdGE7XG4gIHRvdGFsRmllbGROYW1lPzoga2V5b2YgVERhdGE7XG4gIGluc2VydEZpbHRlckZuPzogKGRhdGE6IFRFbnRpdHlDbGFzcykgPT4gYm9vbGVhbjtcbiAgc29ydEZuPzogKGE6IFRFbnRpdHlDbGFzcywgYjogVEVudGl0eUNsYXNzKSA9PiBudW1iZXI7XG4gIGNvdW50ZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMge1xuICBxdWVyeT86IERvY3VtZW50Tm9kZTtcbiAgcXVlcmllcz86IERvY3VtZW50Tm9kZVtdO1xuICBxdWVyeU5hbWU/OiBzdHJpbmc7XG4gIHF1ZXJ5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnMge1xuICBwcm9kdWN0aW9uPzogYm9vbGVhbjtcbn1cblxuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlR3JhcGhxbFNlcnZpY2U8VCA9IGFueSwgRiA9IGFueSwgSUQgPSBhbnksIFMgPSB2b2lkPiBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2U8Uz4ge1xuICBwcm90ZWN0ZWQgX2xvZ1ByZWZpeDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX211dGFibGVXYXRjaFF1ZXJpZXM6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248YW55PltdID0gW107XG5cbiAgLy8gTWF4IHVwZGF0ZWQgcXVlcmllcywgZm9yIHRoaXMgZW50aXR5LlxuICAvLyAtIENhbiBiZSBvdmVycmlkZSBieSBzdWJjbGFzc2VzIChpbiBjb25zdHJ1Y3RvcilcbiAgLy8gLSBVc2UgdmFsdWUgLTEgZm9yIG5vIG1heCBzaXplXG4gIC8vIC0gRGVmYXVsdCB2YWx1ZSB0byAzLCBiZWNhdXNlIGl0IHVzdWFsbHkgZW5vdWdoIChlLmcuIE9wZXJhdGlvblNlcnZpY2UgYW5kIExhbmRpbmdTZXJ2aWNlIG5lZWQgYXQgbGVhc3QgMilcbiAgcHJvdGVjdGVkIF9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQgPSAzO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgb3B0aW9ucz86IEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCk7XG5cbiAgICAvLyBmb3IgREVWIG9ubHlcbiAgICB0aGlzLl9kZWJ1ZyA9IHRvQm9vbGVhbihvcHRpb25zICYmICFvcHRpb25zLnByb2R1Y3Rpb24sICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKTtcbiAgICB0aGlzLl9sb2dQcmVmaXggPSBgW2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlXSBgO1xuICB9XG5cbiAgbXV0YWJsZVdhdGNoUXVlcnk8RCwgViA9IEVtcHR5T2JqZWN0PihvcHRzOiBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCwgVj4pOiBPYnNlcnZhYmxlPEQ+IHtcbiAgICBvcHRzLmZldGNoUG9saWN5ID0gb3B0cy5mZXRjaFBvbGljeSB8fCB0aGlzLmdyYXBocWwuZGVmYXVsdEZldGNoUG9saWN5O1xuXG4gICAgLy8gU3RhbmRhcmQgcXVlcnkgKG5vIGNhY2hlKVxuICAgIGlmIChvcHRzLmZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncmFwaHFsLndhdGNoUXVlcnkob3B0cyk7XG4gICAgfVxuXG4gICAgLy8gTm8gYXJyYXlGaWVsZE5hbWVcbiAgICBpZiAoIW9wdHMuYXJyYXlGaWVsZE5hbWUpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArIFwizIBNaXNzaW5nICdvcHRzLmFycmF5RmllbGROYW1lJyA6IHVuYWJsZSB0byBjcmVhdGUgYSBtdXRhYmxlIHdhdGNoIHF1ZXJ5XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5KG9wdHMpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgcXVlcnkgaWRcbiAgICBjb25zdCBxdWVyeUlkID0gdGhpcy5jb21wdXRlTXV0YWJsZVdhdGNoUXVlcnlJZChvcHRzKTtcbiAgICBjb25zdCBleGFjdE1hdGNoUXVlcmllcyA9IHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKChxKSA9PiBxLmlkID09PSBxdWVyeUlkKTtcblxuICAgIGxldCBtdXRhYmxlUXVlcnk6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248RCwgVCwgVj47XG4gICAgbGV0IHF1ZXJ5UmVmOiBRdWVyeVJlZjxELCBWPjtcblxuICAgIGlmIChleGFjdE1hdGNoUXVlcmllcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIG11dGFibGVRdWVyeSA9IGV4YWN0TWF0Y2hRdWVyaWVzWzBdIGFzIE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248RCwgVCwgVj47XG4gICAgICBtdXRhYmxlUXVlcnkuY291bnRlciArPSAxO1xuICAgICAgcXVlcnlSZWYgPSBtdXRhYmxlUXVlcnkucXVlcnlSZWY7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYEZpbmQgc2FtZSBtdXRhYmxlIHdhdGNoIHF1ZXJ5IChzYW1lIHZhcmlhYmxlcykgeyR7cXVlcnlJZH19LiBTa2lwIHJlZ2lzdGVyYCk7XG5cbiAgICAgIC8vIFJlZmV0Y2ggaWYgbmVlZCBkYXRhIGZyb20gbmV0d29ya1xuICAgICAgaWYgKG9wdHMuZmV0Y2hQb2xpY3kgPT09ICduZXR3b3JrLW9ubHknIHx8IG9wdHMuZmV0Y2hQb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yaycpIHtcbiAgICAgICAgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArICcgTXV0YWJsZSBxdWVyeSBhbHJlYWR5IGV4aXN0cywgYW5kIGZldGNoUG9saWN5PScgKyBvcHRzLmZldGNoUG9saWN5ICsgJy4gRm9yY2UgcmVmZXRjaCBxdWVyeS4uLicpO1xuICAgICAgICBxdWVyeVJlZi5yZWZldGNoKG11dGFibGVRdWVyeS52YXJpYWJsZXMpO1xuICAgICAgfVxuICAgICAgLy9pZiAobXV0YWJsZVF1ZXJ5LmNvdW50ZXIgPiAzKSB7XG4gICAgICAvLyAgY29uc29sZS53YXJuKHRoaXMuX2RlYnVnUHJlZml4ICsgJ1RPRE86IGNsZWFuIHByZXZpb3VzIHF1ZXJpZXMgd2l0aCBuYW1lOiAnICsgcXVlcnlOYW1lKTtcbiAgICAgIC8vfVxuICAgIH0gZWxzZSB7XG4gICAgICBxdWVyeVJlZiA9IHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5UmVmPEQsIFY+KG9wdHMpO1xuICAgICAgdGhpcy5yZWdpc3Rlck5ld011dGFibGVXYXRjaFF1ZXJ5KHtcbiAgICAgICAgaWQ6IHF1ZXJ5SWQsXG4gICAgICAgIHF1ZXJ5OiBvcHRzLnF1ZXJ5LFxuICAgICAgICBxdWVyeVJlZixcbiAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgYXJyYXlGaWVsZE5hbWU6IG9wdHMuYXJyYXlGaWVsZE5hbWUsXG4gICAgICAgIHRvdGFsRmllbGROYW1lOiBvcHRzLnRvdGFsRmllbGROYW1lLFxuICAgICAgICBpbnNlcnRGaWx0ZXJGbjogb3B0cy5pbnNlcnRGaWx0ZXJGbixcbiAgICAgICAgc29ydEZuOiBvcHRzLnNvcnRGbixcbiAgICAgICAgY291bnRlcjogMSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwucXVlcnlSZWZWYWx1ZXNDaGFuZ2VzKHF1ZXJ5UmVmLCBvcHRzKS5waXBlKFxuICAgICAgLy8gRklYTUU6IGZpbmQgd2h5IHNvbWV0aW1lcyBkYXRhIGlzIGFuIG9iamVjdCwgYW5kIG5vdCBhbmQgYXJyYXlcbiAgICAgIGZpbHRlcigocmVzKSA9PiBBcnJheS5pc0FycmF5KHJlc1tvcHRzLmFycmF5RmllbGROYW1lXSkpXG4gICAgKTtcbiAgfVxuXG4gIGluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhcbiAgICBjYWNoZTogQXBvbGxvQ2FjaGU8YW55PixcbiAgICBvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMgJiB7XG4gICAgICBkYXRhOiBUW10gfCBUO1xuICAgIH1cbiAgKSB7XG4gICAgY29uc3QgcXVlcmllcyA9IHRoaXMuZmluZE11dGFibGVXYXRjaFF1ZXJpZXMob3B0cyk7XG4gICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgcXVlcmllcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0cy5kYXRhKSkge1xuICAgICAgICAvLyBGaWx0ZXIgdmFsdWVzLCBpZiBhIGZpbHRlciBmdW5jdGlvbiBleGlzdHNcbiAgICAgICAgY29uc3QgZGF0YSA9IHF1ZXJ5Lmluc2VydEZpbHRlckZuID8gb3B0cy5kYXRhLmZpbHRlcigoZCkgPT4gcXVlcnkuaW5zZXJ0RmlsdGVyRm4oZCkpIDogb3B0cy5kYXRhO1xuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbYmFzZS1kYXRhLXNlcnZpY2VdIEluc2VydGluZyBkYXRhIGludG8gd2F0Y2hpbmcgcXVlcnk6IGAsIHF1ZXJ5LmlkKTtcbiAgICAgICAgICB0aGlzLmdyYXBocWwuYWRkTWFueVRvUXVlcnlDYWNoZShjYWNoZSwge1xuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LnF1ZXJ5LFxuICAgICAgICAgICAgdmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU6IHF1ZXJ5LnRvdGFsRmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHNvcnRGbjogcXVlcnkuc29ydEZuLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRmlsdGVyIHZhbHVlLCBpZiBhIGZpbHRlciBmdW5jdGlvbiBleGlzdHNcbiAgICAgIGVsc2UgaWYgKCFxdWVyeS5pbnNlcnRGaWx0ZXJGbiB8fCBxdWVyeS5pbnNlcnRGaWx0ZXJGbihvcHRzLmRhdGEpKSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2Jhc2UtZGF0YS1zZXJ2aWNlXSBJbnNlcnRpbmcgZGF0YSBpbnRvIHdhdGNoaW5nIHF1ZXJ5OiBgLCBxdWVyeS5pZCk7XG4gICAgICAgIHRoaXMuZ3JhcGhxbC5pbnNlcnRJbnRvUXVlcnlDYWNoZShjYWNoZSwge1xuICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5xdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHF1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgIHRvdGFsRmllbGROYW1lOiBxdWVyeS50b3RhbEZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgc29ydEZuOiBxdWVyeS5zb3J0Rm4sXG4gICAgICAgICAgZGF0YTogb3B0cy5kYXRhLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZUZyb21NdXRhYmxlQ2FjaGVkUXVlcmllc0J5SWRzKFxuICAgIGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+LFxuICAgIG9wdHM6IEZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzT3B0aW9ucyAmIHtcbiAgICAgIGlkczogSUQgfCBJRFtdO1xuICAgIH1cbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5maW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzKTtcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zb2xlLmRlYnVnKGBbYmFzZS1kYXRhLXNlcnZpY2VdIFJlbW92aW5nIGRhdGEgZnJvbSB3YXRjaGluZyBxdWVyaWVzOiBgLCBxdWVyaWVzKTtcbiAgICByZXR1cm4gKFxuICAgICAgcXVlcmllc1xuICAgICAgICAubWFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdHMuaWRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5yZW1vdmVGcm9tQ2FjaGVkUXVlcnlCeUlkcyhjYWNoZSwge1xuICAgICAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICBpZHM6IG9wdHMuaWRzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyYXBocWwucmVtb3ZlRnJvbUNhY2hlZFF1ZXJ5QnlJZChjYWNoZSwge1xuICAgICAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICBpZHM6IG9wdHMuaWRzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC8vIFN1bVxuICAgICAgICAucmVkdWNlKChyZXMsIGNvdW50KSA9PiByZXMgKyBjb3VudCwgMClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVmZXRjaE11dGFibGVXYXRjaFF1ZXJpZXMob3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zICYgeyB2YXJpYWJsZXM/OiBhbnkgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFJldHJpZXZlIHF1ZXJpZXMgdG8gcmVmZXRjaFxuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpO1xuXG4gICAgLy8gU2tpcCBpZiBub3RoaW5nIHRvIHJlZmV0Y2hcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHF1ZXJpZXMubWFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgUmVmZXRjaGluZyBtdXRhYmxlIHdhdGNoIHF1ZXJ5IHske3F1ZXJ5LmlkfX1gKTtcbiAgICAgICAgICByZXR1cm4gcXVlcnkucXVlcnlSZWYucmVmZXRjaCh7IC4uLnF1ZXJ5LnZhcmlhYmxlcywgLi4ub3B0cy52YXJpYWJsZXMgfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcih0aGlzLl9sb2dQcmVmaXggKyAnRXJyb3Igd2hpbGUgcmVmZXRjaGluZyBtdXRhYmxlIHdhdGNoIHF1ZXJpZXMnLCBlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGNvbXB1dGVNdXRhYmxlV2F0Y2hRdWVyeUlkPEQsIFQsIFYgPSBFbXB0eU9iamVjdD4ob3B0czogTXV0YWJsZVdhdGNoUXVlcnlPcHRpb25zPEQsIFQsIFY+KSB7XG4gICAgY29uc3QgcXVlcnlOYW1lID0gb3B0cy5xdWVyeU5hbWUgfHwgQ3J5cHRvU2VydmljZS5zaGEyNTYoSlNPTi5zdHJpbmdpZnkob3B0cy5xdWVyeSkpLnN1YnN0cmluZygwLCA4KTtcbiAgICBjb25zdCB2YXJpYWJsZXNLZXkgPSAob3B0cy52YXJpYWJsZXMgJiYgQ3J5cHRvU2VydmljZS5zaGEyNTYoSlNPTi5zdHJpbmdpZnkob3B0cy52YXJpYWJsZXMpKS5zdWJzdHJpbmcoMCwgOCkpIHx8ICcnO1xuICAgIHJldHVybiBbcXVlcnlOYW1lLCBvcHRzLmFycmF5RmllbGROYW1lLCB2YXJpYWJsZXNLZXldLmpvaW4oJ3wnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMpOiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPGFueT5bXSB7XG4gICAgLy8gU2VhcmNoIGJ5IHF1ZXJ5TmFtZVxuICAgIGlmIChvcHRzLnF1ZXJ5TmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKChxKSA9PiBxLmlkLnN0YXJ0c1dpdGgob3B0cy5xdWVyeU5hbWUgKyAnfCcpKTtcbiAgICB9XG4gICAgaWYgKG9wdHMucXVlcnlOYW1lcykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgb3B0cy5xdWVyeU5hbWVzXG4gICAgICAgICAgLm1hcCgocXVlcnlOYW1lKSA9PiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcigocSkgPT4gcS5pZC5zdGFydHNXaXRoKHF1ZXJ5TmFtZSArICd8JykpKVxuICAgICAgICAgIC8vIGZsYXRNYXBcbiAgICAgICAgICAucmVkdWNlKChyZXMsIGFycmF5KSA9PiByZXMuY29uY2F0KC4uLmFycmF5KSwgW10pXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBieSBxdWVyeVxuICAgIGlmIChvcHRzLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5maWx0ZXIoKHEpID0+IHEucXVlcnkgPT09IG9wdHMucXVlcnkpO1xuICAgIH1cbiAgICBpZiAob3B0cy5xdWVyaWVzKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBvcHRzLnF1ZXJpZXNcbiAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsKVxuICAgICAgICAgIC5tYXAoKHF1ZXJ5KSA9PiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcigocSkgPT4gcS5xdWVyeSA9PT0gcXVlcnkpKVxuICAgICAgICAgIC8vIGZsYXRNYXBcbiAgICAgICAgICAucmVkdWNlKChyZXMsIGFycmF5KSA9PiByZXMuY29uY2F0KC4uLmFycmF5KSwgW10pXG4gICAgICApO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcignSW52YWxpZCBvcHRpb25zOiBvbmx5IG9uZSBwcm9wZXJ0eSBtdXN0IGJlIHNldCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyTmV3TXV0YWJsZVdhdGNoUXVlcnkobXV0YWJsZVF1ZXJ5OiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPGFueT4pIHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFJlZ2lzdGVyIG5ldyBtdXRhYmxlIHdhdGNoIHF1ZXJ5IHske211dGFibGVRdWVyeS5pZH19YCk7XG5cbiAgICAvLyBJZiBleGNlZWQgdGhlIG1heCBzaXplIG9mIG11dGFibGUgcXVlcmllczogcmVtb3ZlIHNvbWVcbiAgICBpZiAodGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllc01heENvdW50ID4gMCAmJiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmxlbmd0aCA+PSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQpIHtcbiAgICAgIGNvbnN0IHJlbW92ZWRXYXRjaFF1ZXJpZXMgPSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLnNwbGljZSgwLCAxICsgdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5sZW5ndGggLSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQpO1xuXG4gICAgICAvLyBXYXJuLCBhcyBpdCBzaG91bGRuJ3QgYmUgaGFwcGVuIG9mdGVuLCB3aGVuIG1heCBpcyBjb3JyZWN0bHkgc2V0XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIHRoaXMuX2xvZ1ByZWZpeCArIGBSZW1vdmluZyBvbGRlciBtdXRhYmxlIHdhdGNoaW5nIHF1ZXJpZXMgKHN0YWNrIGV4Y2VlZCBtYXggb2YgJHt0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnR9KTogYCxcbiAgICAgICAgcmVtb3ZlZFdhdGNoUXVlcmllcy5tYXAoKHEpID0+IHEuaWQpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgc29ydCBmdW5jdGlvbiAodG8gYmUgdXNlZCBpbiBpbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJ5KCkpXG4gICAgaWYgKCFtdXRhYmxlUXVlcnkuc29ydEZuICYmIG11dGFibGVRdWVyeS52YXJpYWJsZXMgJiYgbXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcy5zb3J0QnkpIHtcbiAgICAgIG11dGFibGVRdWVyeS5zb3J0Rm4gPVxuICAgICAgICBtdXRhYmxlUXVlcnkudmFyaWFibGVzICYmXG4gICAgICAgIG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydEJ5ICYmXG4gICAgICAgIEVudGl0eVV0aWxzLnNvcnRDb21wYXJhdG9yKG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydEJ5LCBtdXRhYmxlUXVlcnkudmFyaWFibGVzLnNvcnREaXJlY3Rpb24gfHwgJ2FzYycpO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGUgbmV3IG11dGFibGUgcXVlcnkgdG8gYXJyYXlcbiAgICB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLnB1c2gobXV0YWJsZVF1ZXJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kUmVmZXRjaFF1ZXJpZXMob3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zKTogSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpXG4gICAgICAgIC8vIFdvcmthcm91bmQsIHRvIG1ha2UgcmVmZXRjaCBxdWVyaWVzIHdvcmtzOiB0cmFuc2Zvcm0gaW50byBhIHNpbXBsZSB7cXVlcnksIHZhcmlhYmxlc31cbiAgICAgICAgLm1hcCgoeyBxdWVyeSwgdmFyaWFibGVzIH0pID0+ICh7IHF1ZXJ5LCB2YXJpYWJsZXMgfSkpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uU3RhcnQoKTogUHJvbWlzZTxTPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsIGFzIFMpO1xuICB9XG59XG4iXX0=
@@ -43,11 +43,15 @@ export class Base58 {
43
43
  // deal with leading zeros
44
44
  for (i = 0; i < buffer.length - 1 && buffer[i] === 0; i++)
45
45
  digits.unshift(0);
46
- return digits.map(function (digit) { return Base58.alphabet[digit]; }).join('');
46
+ return digits
47
+ .map(function (digit) {
48
+ return Base58.alphabet[digit];
49
+ })
50
+ .join('');
47
51
  }
48
52
  static decode(string) {
49
53
  if (string.length === 0)
50
- return (new Uint8Array(0));
54
+ return new Uint8Array(0);
51
55
  const input = string.split('').map(function (c) {
52
56
  return Base58.getAlphabetMap()[c];
53
57
  });
@@ -73,7 +77,7 @@ export class Base58 {
73
77
  // deal with leading zeros
74
78
  for (i = 0; i < input.length - 1 && input[i] === 0; i++)
75
79
  bytes.unshift(0);
76
- return (new Uint8Array(bytes));
80
+ return new Uint8Array(bytes);
77
81
  }
78
82
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTU4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2Jhc2U1OC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsZ0RBQWdEO0FBQ2hELGdDQUFnQztBQUNoQyx3Q0FBd0M7QUFDeEMsZ0VBQWdFO0FBQ2hFLGdDQUFnQztBQUNoQyw2Q0FBNkM7QUFFN0MsV0FBVztBQUNYLE1BQU0sT0FBTyxNQUFNO0lBRVQsTUFBTSxDQUFDLFFBQVEsR0FBRyw0REFBNEQsQ0FBQztJQUMvRSxNQUFNLENBQUMsV0FBVyxDQUFDO0lBRW5CLE1BQU0sQ0FBQyxjQUFjO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDL0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNuRDtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQWtCO1FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFbkMsSUFBSSxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztRQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLEtBQUssQ0FB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QUksQ0FBQzthQUNsQjtZQUVELE9BQU8sS0FBSyxFQUFFO2dCQUNaLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO2FBQ2xCO1NBQ0Y7UUFFRCwwQkFBMEI7UUFDMUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsT0FBTyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJhc2U1OCBlbmNvZGluZy9kZWNvZGluZ1xuLy8gT3JpZ2luYWxseSB3cml0dGVuIGJ5IE1pa2UgSGVhcm4gZm9yIEJpdGNvaW5KXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluY1xuLy8gUG9ydGVkIHRvIEphdmFTY3JpcHQgYnkgU3RlZmFuIFRob21hc1xuLy8gTWVyZ2VkIEJ1ZmZlciByZWZhY3RvcmluZ3MgZnJvbSBiYXNlNTgtbmF0aXZlIGJ5IFN0ZXBoZW4gUGFpclxuLy8gQ29weXJpZ2h0IChjKSAyMDEzIEJpdFBheSBJbmNcbi8vIFJld3JpdHRlbiBpbiBUeXBlU2NyaXB0IGJ5IEx1ZG92aWMgUGVjcXVvdFxuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEJhc2U1OCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYWxwaGFiZXQgPSAnMTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5eic7XG4gIHByaXZhdGUgc3RhdGljIGFscGhhYmV0TWFwO1xuXG4gIHByaXZhdGUgc3RhdGljIGdldEFscGhhYmV0TWFwKCkge1xuICAgIGlmICghQmFzZTU4LmFscGhhYmV0TWFwKXtcbiAgICAgIHRoaXMuYWxwaGFiZXRNYXAgPSB7fTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQmFzZTU4LmFscGhhYmV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIEJhc2U1OC5hbHBoYWJldE1hcFtCYXNlNTguYWxwaGFiZXQuY2hhckF0KGkpXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBCYXNlNTguYWxwaGFiZXRNYXA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVuY29kZShidWZmZXI6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG5cbiAgICBsZXQgaTsgbGV0IGo7IGNvbnN0IGRpZ2l0cyA9IFswXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgZGlnaXRzLmxlbmd0aDsgaisrKSBkaWdpdHNbal0gPDw9IDg7XG4gICAgICBkaWdpdHNbZGlnaXRzLmxlbmd0aCAtIDFdICs9IGJ1ZmZlcltpXTtcblxuICAgICAgbGV0IGNhcnJ5ID0gMDtcbiAgICAgIGZvciAoaiA9IGRpZ2l0cy5sZW5ndGggLSAxOyBqID49IDA7IGotLSl7XG4gICAgICAgIGRpZ2l0c1tqXSArPSBjYXJyeTtcbiAgICAgICAgY2FycnkgPSAoZGlnaXRzW2pdIC8gNTgpIHwgMDtcbiAgICAgICAgZGlnaXRzW2pdICU9IDU4O1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoY2FycnkpIHtcbiAgICAgICAgZGlnaXRzLnVuc2hpZnQoY2FycnkpO1xuICAgICAgICBjYXJyeSA9IChkaWdpdHNbMF0gLyA1OCkgfCAwO1xuICAgICAgICBkaWdpdHNbMF0gJT0gNTg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIGxlYWRpbmcgemVyb3NcbiAgICBmb3IgKGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aCAtIDEgJiYgYnVmZmVyW2ldID09PSAwOyBpKyspIGRpZ2l0cy51bnNoaWZ0KDApO1xuXG4gICAgcmV0dXJuIGRpZ2l0cy5tYXAoZnVuY3Rpb24oZGlnaXQpIHsgcmV0dXJuIEJhc2U1OC5hbHBoYWJldFtkaWdpdF07IH0pLmpvaW4oJycpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWNvZGUoc3RyaW5nOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICBpZiAoc3RyaW5nLmxlbmd0aCA9PT0gMCkgcmV0dXJuIChuZXcgVWludDhBcnJheSgwKSk7XG5cbiAgICBjb25zdCBpbnB1dCA9IHN0cmluZy5zcGxpdCgnJykubWFwKGZ1bmN0aW9uKGMpe1xuICAgICAgcmV0dXJuIEJhc2U1OC5nZXRBbHBoYWJldE1hcCgpW2NdO1xuICAgIH0pO1xuXG4gICAgbGV0IGk7IGxldCBqOyBjb25zdCBieXRlcyA9IFswXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBieXRlcy5sZW5ndGg7IGorKykgYnl0ZXNbal0gKj0gNTg7XG4gICAgICBieXRlc1tieXRlcy5sZW5ndGggLSAxXSArPSBpbnB1dFtpXTtcblxuICAgICAgbGV0IGNhcnJ5ID0gMDtcbiAgICAgIGZvciAoaiA9IGJ5dGVzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKXtcbiAgICAgICAgYnl0ZXNbal0gKz0gY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gYnl0ZXNbal0gPj4gODtcbiAgICAgICAgYnl0ZXNbal0gJj0gMHhmZjtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGNhcnJ5KSB7XG4gICAgICAgIGJ5dGVzLnVuc2hpZnQoY2FycnkpO1xuICAgICAgICBjYXJyeSA9IGJ5dGVzWzBdID4+IDg7XG4gICAgICAgIGJ5dGVzWzBdICY9IDB4ZmY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIGxlYWRpbmcgemVyb3NcbiAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoIC0gMSAmJiBpbnB1dFtpXSA9PT0gMDsgaSsrKSBieXRlcy51bnNoaWZ0KDApO1xuICAgIHJldHVybiAobmV3IFVpbnQ4QXJyYXkoYnl0ZXMpKTtcbiAgfVxufVxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTU4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2Jhc2U1OC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsZ0RBQWdEO0FBQ2hELGdDQUFnQztBQUNoQyx3Q0FBd0M7QUFDeEMsZ0VBQWdFO0FBQ2hFLGdDQUFnQztBQUNoQyw2Q0FBNkM7QUFFN0MsV0FBVztBQUNYLE1BQU0sT0FBTyxNQUFNO0lBQ1QsTUFBTSxDQUFDLFFBQVEsR0FBRyw0REFBNEQsQ0FBQztJQUMvRSxNQUFNLENBQUMsV0FBVyxDQUFDO0lBRW5CLE1BQU0sQ0FBQyxjQUFjO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBa0I7UUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsQ0FBQztRQUNOLElBQUksQ0FBQyxDQUFDO1FBQ04sTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFF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QyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUNuQixDQUFDO1lBRUQsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQixLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQztRQUVELDBCQUEwQjtRQUMxQixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCYXNlNTggZW5jb2RpbmcvZGVjb2Rpbmdcbi8vIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBNaWtlIEhlYXJuIGZvciBCaXRjb2luSlxuLy8gQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmNcbi8vIFBvcnRlZCB0byBKYXZhU2NyaXB0IGJ5IFN0ZWZhbiBUaG9tYXNcbi8vIE1lcmdlZCBCdWZmZXIgcmVmYWN0b3JpbmdzIGZyb20gYmFzZTU4LW5hdGl2ZSBieSBTdGVwaGVuIFBhaXJcbi8vIENvcHlyaWdodCAoYykgMjAxMyBCaXRQYXkgSW5jXG4vLyBSZXdyaXR0ZW4gaW4gVHlwZVNjcmlwdCBieSBMdWRvdmljIFBlY3F1b3RcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBCYXNlNTgge1xuICBwcml2YXRlIHN0YXRpYyBhbHBoYWJldCA9ICcxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6JztcbiAgcHJpdmF0ZSBzdGF0aWMgYWxwaGFiZXRNYXA7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0QWxwaGFiZXRNYXAoKSB7XG4gICAgaWYgKCFCYXNlNTguYWxwaGFiZXRNYXApIHtcbiAgICAgIHRoaXMuYWxwaGFiZXRNYXAgPSB7fTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQmFzZTU4LmFscGhhYmV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIEJhc2U1OC5hbHBoYWJldE1hcFtCYXNlNTguYWxwaGFiZXQuY2hhckF0KGkpXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBCYXNlNTguYWxwaGFiZXRNYXA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVuY29kZShidWZmZXI6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG5cbiAgICBsZXQgaTtcbiAgICBsZXQgajtcbiAgICBjb25zdCBkaWdpdHMgPSBbMF07XG4gICAgZm9yIChpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGRpZ2l0cy5sZW5ndGg7IGorKykgZGlnaXRzW2pdIDw8PSA4O1xuICAgICAgZGlnaXRzW2RpZ2l0cy5sZW5ndGggLSAxXSArPSBidWZmZXJbaV07XG5cbiAgICAgIGxldCBjYXJyeSA9IDA7XG4gICAgICBmb3IgKGogPSBkaWdpdHMubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgZGlnaXRzW2pdICs9IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IChkaWdpdHNbal0gLyA1OCkgfCAwO1xuICAgICAgICBkaWdpdHNbal0gJT0gNTg7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChjYXJyeSkge1xuICAgICAgICBkaWdpdHMudW5zaGlmdChjYXJyeSk7XG4gICAgICAgIGNhcnJ5ID0gKGRpZ2l0c1swXSAvIDU4KSB8IDA7XG4gICAgICAgIGRpZ2l0c1swXSAlPSA1ODtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZWFsIHdpdGggbGVhZGluZyB6ZXJvc1xuICAgIGZvciAoaSA9IDA7IGkgPCBidWZmZXIubGVuZ3RoIC0gMSAmJiBidWZmZXJbaV0gPT09IDA7IGkrKykgZGlnaXRzLnVuc2hpZnQoMCk7XG5cbiAgICByZXR1cm4gZGlnaXRzXG4gICAgICAubWFwKGZ1bmN0aW9uIChkaWdpdCkge1xuICAgICAgICByZXR1cm4gQmFzZTU4LmFscGhhYmV0W2RpZ2l0XTtcbiAgICAgIH0pXG4gICAgICAuam9pbignJyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlY29kZShzdHJpbmc6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIGlmIChzdHJpbmcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7XG5cbiAgICBjb25zdCBpbnB1dCA9IHN0cmluZy5zcGxpdCgnJykubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgICByZXR1cm4gQmFzZTU4LmdldEFscGhhYmV0TWFwKClbY107XG4gICAgfSk7XG5cbiAgICBsZXQgaTtcbiAgICBsZXQgajtcbiAgICBjb25zdCBieXRlcyA9IFswXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBieXRlcy5sZW5ndGg7IGorKykgYnl0ZXNbal0gKj0gNTg7XG4gICAgICBieXRlc1tieXRlcy5sZW5ndGggLSAxXSArPSBpbnB1dFtpXTtcblxuICAgICAgbGV0IGNhcnJ5ID0gMDtcbiAgICAgIGZvciAoaiA9IGJ5dGVzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIGJ5dGVzW2pdICs9IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IGJ5dGVzW2pdID4+IDg7XG4gICAgICAgIGJ5dGVzW2pdICY9IDB4ZmY7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChjYXJyeSkge1xuICAgICAgICBieXRlcy51bnNoaWZ0KGNhcnJ5KTtcbiAgICAgICAgY2FycnkgPSBieXRlc1swXSA+PiA4O1xuICAgICAgICBieXRlc1swXSAmPSAweGZmO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRlYWwgd2l0aCBsZWFkaW5nIHplcm9zXG4gICAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCAtIDEgJiYgaW5wdXRbaV0gPT09IDA7IGkrKykgYnl0ZXMudW5zaGlmdCgwKTtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpO1xuICB9XG59XG4iXX0=