techlify-inventory-common 18.1.0 → 18.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/esm2022/lib/inventory-common/category/category-form/category-form.component.mjs +12 -12
  2. package/esm2022/lib/inventory-common/category/category-form-button/category-form-button.component.mjs +5 -5
  3. package/esm2022/lib/inventory-common/category/category-list-page/category-list-page.component.mjs +22 -26
  4. package/esm2022/lib/inventory-common/category/category-routing.module.mjs +10 -5
  5. package/esm2022/lib/inventory-common/category/category-view/category-view.component.mjs +46 -0
  6. package/esm2022/lib/inventory-common/category/category.module.mjs +23 -24
  7. package/esm2022/lib/inventory-common/category/category.service.mjs +6 -6
  8. package/esm2022/lib/inventory-common/inventory-common-routing.module.mjs +32 -18
  9. package/esm2022/lib/inventory-common/inventory-common.module.mjs +13 -9
  10. package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +12 -10
  11. package/esm2022/lib/inventory-common/inventory-value-report.service.mjs +21 -0
  12. package/esm2022/lib/inventory-common/location/location-delete-button/location-delete-button.component.mjs +68 -0
  13. package/esm2022/lib/inventory-common/location/location-form/location-form.component.mjs +86 -0
  14. package/esm2022/lib/inventory-common/location/location-form-button/location-form-button.component.mjs +35 -0
  15. package/esm2022/lib/inventory-common/location/location-information/location-information.component.mjs +34 -0
  16. package/esm2022/lib/inventory-common/location/location-list/location-list.component.mjs +121 -0
  17. package/esm2022/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.mjs +127 -0
  18. package/esm2022/lib/inventory-common/location/location-routing.module.mjs +29 -0
  19. package/esm2022/lib/inventory-common/location/location-view/location-view.component.mjs +53 -0
  20. package/esm2022/lib/inventory-common/location/location.module.mjs +22 -0
  21. package/esm2022/lib/inventory-common/location/location.service.mjs +23 -0
  22. package/esm2022/lib/inventory-common/low-stock-report.service.mjs +23 -0
  23. package/esm2022/lib/inventory-common/material.module.mjs +37 -37
  24. package/esm2022/lib/inventory-common/measure/measure-delete/measure-delete-button/measure-delete-button.component.mjs +4 -4
  25. package/esm2022/lib/inventory-common/measure/measure-delete/measure-delete.module.mjs +4 -4
  26. package/esm2022/lib/inventory-common/measure/measure-form/measure-form/measure-form.component.mjs +14 -14
  27. package/esm2022/lib/inventory-common/measure/measure-form/measure-form-button/measure-form-button.component.mjs +5 -5
  28. package/esm2022/lib/inventory-common/measure/measure-form/measure-form.module.mjs +6 -6
  29. package/esm2022/lib/inventory-common/measure/measure-routing.module.mjs +5 -5
  30. package/esm2022/lib/inventory-common/measure/measure.module.mjs +10 -10
  31. package/esm2022/lib/inventory-common/measure/measure.service.mjs +6 -6
  32. package/esm2022/lib/inventory-common/measure/measures-list/measures-list.component.mjs +12 -18
  33. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.mjs +13 -11
  34. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.mjs +10 -24
  35. package/esm2022/lib/inventory-common/product/product-basic-info/product-basic-info.component.mjs +5 -5
  36. package/esm2022/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.mjs +56 -0
  37. package/esm2022/lib/inventory-common/product/product-delete-button/product-delete-button.component.mjs +6 -6
  38. package/esm2022/lib/inventory-common/product/product-form/product-form.component.mjs +43 -45
  39. package/esm2022/lib/inventory-common/product/product-form-button/product-form-button.component.mjs +5 -5
  40. package/esm2022/lib/inventory-common/product/product-form.service.mjs +4 -4
  41. package/esm2022/lib/inventory-common/product/product-import-page/product-import-page.component.mjs +32 -32
  42. package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +65 -87
  43. package/esm2022/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.mjs +56 -0
  44. package/esm2022/lib/inventory-common/product/product-measure-form/product-measure-form.component.mjs +12 -12
  45. package/esm2022/lib/inventory-common/product/product-measures-list/product-measures-list.component.mjs +22 -28
  46. package/esm2022/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.mjs +3 -3
  47. package/esm2022/lib/inventory-common/product/product-quick-search/product-quick-search.component.mjs +92 -0
  48. package/esm2022/lib/inventory-common/product/product-routing.module.mjs +17 -17
  49. package/esm2022/lib/inventory-common/product/product-statistics.service.mjs +23 -0
  50. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.mjs +10 -16
  51. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.mjs +9 -20
  52. package/esm2022/lib/inventory-common/product/product-tax/product-tax-delete-button/product-tax-delete-button.component.mjs +6 -6
  53. package/esm2022/lib/inventory-common/product/product-tax/product-tax-form-button/product-tax-form-button.component.mjs +14 -14
  54. package/esm2022/lib/inventory-common/product/product-tax/product-tax-list/product-tax-list.component.mjs +6 -6
  55. package/esm2022/lib/inventory-common/product/product-tax/product-tax.module.mjs +9 -26
  56. package/esm2022/lib/inventory-common/product/product-tax/product-tax.service.mjs +6 -6
  57. package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +9 -7
  58. package/esm2022/lib/inventory-common/product/product.module.mjs +37 -26
  59. package/esm2022/lib/inventory-common/product/product.service.mjs +7 -7
  60. package/esm2022/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.mjs +15 -0
  61. package/esm2022/lib/inventory-common/product-batch.service.mjs +20 -0
  62. package/esm2022/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.mjs +168 -0
  63. package/esm2022/lib/inventory-common/reports/low-stock-report/low-stock-report.component.mjs +163 -0
  64. package/esm2022/lib/inventory-common/services/techlify-form-service.mjs +2 -2
  65. package/esm2022/lib/inventory-common/stock-issuances/stock-issuance-delete-button/stock-issuance-delete-button.component.mjs +6 -6
  66. package/esm2022/lib/inventory-common/stock-issuances/stock-issuance-delete-button/stock-issuance-delete-button.module.mjs +5 -5
  67. package/esm2022/lib/inventory-common/stock-issuances/stock-issuance.service.mjs +6 -6
  68. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.component.mjs +84 -56
  69. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.module.mjs +28 -12
  70. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-routing.module.mjs +5 -5
  71. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances.module.mjs +14 -14
  72. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form/stock-issue-form.component.mjs +14 -14
  73. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form-button/stock-issue-form-button.component.mjs +5 -5
  74. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form.module.mjs +13 -13
  75. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-delete-button/stock-receipt-delete-button.component.mjs +6 -6
  76. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.mjs +18 -18
  77. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form-button/stock-receipt-form-button.component.mjs +5 -5
  78. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.module.mjs +12 -12
  79. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt.service.mjs +6 -6
  80. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.mjs +82 -44
  81. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +5 -5
  82. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts.module.mjs +24 -22
  83. package/esm2022/lib/inventory-common/stock-summary.service.mjs +5 -5
  84. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.mjs +105 -0
  85. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form-button/stock-transfer-form-button.component.mjs +38 -0
  86. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.mjs +77 -0
  87. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer.service.mjs +18 -0
  88. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.mjs +9 -9
  89. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector.module.mjs +10 -24
  90. package/esm2022/lib/inventory-common/supplier/supplier-delete-button/supplier-delete-button.component.mjs +64 -0
  91. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form-button/supplier-form-button.component.mjs +43 -0
  92. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.component.mjs +24 -24
  93. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.service.mjs +4 -4
  94. package/esm2022/lib/inventory-common/supplier/supplier-information/supplier-information.component.mjs +16 -15
  95. package/esm2022/lib/inventory-common/supplier/supplier-routing.module.mjs +9 -16
  96. package/esm2022/lib/inventory-common/supplier/supplier-view/supplier-view.component.mjs +13 -14
  97. package/esm2022/lib/inventory-common/supplier/supplier.component.mjs +3 -3
  98. package/esm2022/lib/inventory-common/supplier/supplier.module.mjs +23 -15
  99. package/esm2022/lib/inventory-common/supplier/supplier.service.mjs +5 -5
  100. package/esm2022/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.mjs +6 -65
  101. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.component.mjs +16 -18
  102. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.module.mjs +13 -9
  103. package/fesm2022/techlify-inventory-common-category.module-BsvJ6rVx.mjs +290 -0
  104. package/fesm2022/techlify-inventory-common-category.module-BsvJ6rVx.mjs.map +1 -0
  105. package/fesm2022/techlify-inventory-common-location.module-Cwx9mHKE.mjs +529 -0
  106. package/fesm2022/techlify-inventory-common-location.module-Cwx9mHKE.mjs.map +1 -0
  107. package/fesm2022/techlify-inventory-common-measure.module-C2v0-n_m.mjs +307 -0
  108. package/fesm2022/techlify-inventory-common-measure.module-C2v0-n_m.mjs.map +1 -0
  109. package/fesm2022/{techlify-inventory-common-stock-issuances.module-BQRRP-hW.mjs → techlify-inventory-common-stock-issuances.module-CPccetrp.mjs} +3 -5
  110. package/fesm2022/techlify-inventory-common-stock-issuances.module-CPccetrp.mjs.map +1 -0
  111. package/fesm2022/techlify-inventory-common-supplier.module-CYq-2pV1.mjs +464 -0
  112. package/fesm2022/techlify-inventory-common-supplier.module-CYq-2pV1.mjs.map +1 -0
  113. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BMNkSTd6.mjs +3620 -0
  114. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BMNkSTd6.mjs.map +1 -0
  115. package/fesm2022/techlify-inventory-common.mjs +1 -1
  116. package/lib/inventory-common/category/category-form/category-form.component.d.ts +4 -4
  117. package/lib/inventory-common/category/category-form-button/category-form-button.component.d.ts +2 -2
  118. package/lib/inventory-common/category/category-list-page/category-list-page.component.d.ts +4 -4
  119. package/lib/inventory-common/category/category-view/category-view.component.d.ts +16 -0
  120. package/lib/inventory-common/category/category.module.d.ts +12 -11
  121. package/lib/inventory-common/category/category.service.d.ts +1 -1
  122. package/lib/inventory-common/inventory-common.module.d.ts +2 -1
  123. package/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.d.ts +1 -1
  124. package/lib/inventory-common/inventory-value-report.service.d.ts +9 -0
  125. package/lib/inventory-common/location/location-delete-button/location-delete-button.component.d.ts +28 -0
  126. package/lib/inventory-common/location/location-form/location-form.component.d.ts +19 -0
  127. package/lib/inventory-common/location/location-form-button/location-form-button.component.d.ts +13 -0
  128. package/lib/inventory-common/location/location-information/location-information.component.d.ts +10 -0
  129. package/lib/inventory-common/location/location-list/location-list.component.d.ts +20 -0
  130. package/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.d.ts +21 -0
  131. package/lib/inventory-common/location/location-routing.module.d.ts +7 -0
  132. package/lib/inventory-common/location/location-view/location-view.component.d.ts +16 -0
  133. package/lib/inventory-common/location/location.module.d.ts +8 -0
  134. package/lib/inventory-common/location/location.service.d.ts +10 -0
  135. package/lib/inventory-common/low-stock-report.service.d.ts +10 -0
  136. package/lib/inventory-common/measure/measure-delete/measure-delete-button/measure-delete-button.component.d.ts +3 -3
  137. package/lib/inventory-common/measure/measure-form/measure-form/measure-form.component.d.ts +4 -4
  138. package/lib/inventory-common/measure/measure-form/measure-form-button/measure-form-button.component.d.ts +2 -2
  139. package/lib/inventory-common/measure/measure.service.d.ts +1 -1
  140. package/lib/inventory-common/measure/measures-list/measures-list.component.d.ts +5 -5
  141. package/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.d.ts +3 -3
  142. package/lib/inventory-common/product/product-basic-info/product-basic-info.component.d.ts +2 -2
  143. package/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.d.ts +18 -0
  144. package/lib/inventory-common/product/product-delete-button/product-delete-button.component.d.ts +4 -4
  145. package/lib/inventory-common/product/product-form/product-form.component.d.ts +6 -6
  146. package/lib/inventory-common/product/product-form-button/product-form-button.component.d.ts +3 -3
  147. package/lib/inventory-common/product/product-import-page/product-import-page.component.d.ts +2 -2
  148. package/lib/inventory-common/product/product-list/product-list.component.d.ts +15 -24
  149. package/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.d.ts +15 -0
  150. package/lib/inventory-common/product/product-measure-form/product-measure-form.component.d.ts +6 -6
  151. package/lib/inventory-common/product/product-measures-list/product-measures-list.component.d.ts +7 -7
  152. package/lib/inventory-common/product/product-quick-search/product-quick-search.component.d.ts +15 -0
  153. package/lib/inventory-common/product/product-statistics.service.d.ts +9 -0
  154. package/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.d.ts +1 -1
  155. package/lib/inventory-common/product/product-tax/product-tax-delete-button/product-tax-delete-button.component.d.ts +4 -4
  156. package/lib/inventory-common/product/product-tax/product-tax-form-button/product-tax-form-button.component.d.ts +5 -5
  157. package/lib/inventory-common/product/product-tax/product-tax-list/product-tax-list.component.d.ts +2 -2
  158. package/lib/inventory-common/product/product-tax/product-tax.service.d.ts +1 -1
  159. package/lib/inventory-common/product/product-view-page/product-view-page.component.d.ts +4 -4
  160. package/lib/inventory-common/product/product.module.d.ts +16 -13
  161. package/lib/inventory-common/product/product.service.d.ts +2 -2
  162. package/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.d.ts +6 -0
  163. package/lib/inventory-common/product-batch.service.d.ts +8 -0
  164. package/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.d.ts +26 -0
  165. package/lib/inventory-common/reports/low-stock-report/low-stock-report.component.d.ts +26 -0
  166. package/lib/inventory-common/stock-issuances/stock-issuance-delete-button/stock-issuance-delete-button.component.d.ts +4 -4
  167. package/lib/inventory-common/stock-issuances/stock-issuance.service.d.ts +1 -1
  168. package/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.component.d.ts +16 -8
  169. package/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.module.d.ts +3 -1
  170. package/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form/stock-issue-form.component.d.ts +4 -4
  171. package/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form-button/stock-issue-form-button.component.d.ts +2 -2
  172. package/lib/inventory-common/stock-receipts/stock-receipt-delete-button/stock-receipt-delete-button.component.d.ts +4 -4
  173. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.d.ts +4 -4
  174. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form-button/stock-receipt-form-button.component.d.ts +2 -2
  175. package/lib/inventory-common/stock-receipts/stock-receipt.service.d.ts +1 -1
  176. package/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.d.ts +12 -4
  177. package/lib/inventory-common/stock-receipts/stock-receipts.module.d.ts +2 -1
  178. package/lib/inventory-common/stock-summary.service.d.ts +1 -1
  179. package/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.d.ts +19 -0
  180. package/lib/inventory-common/stock-transfer/stock-transfer-form-button/stock-transfer-form-button.component.d.ts +14 -0
  181. package/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.d.ts +17 -0
  182. package/lib/inventory-common/stock-transfer/stock-transfer.service.d.ts +7 -0
  183. package/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.d.ts +3 -3
  184. package/lib/inventory-common/supplier/supplier-delete-button/supplier-delete-button.component.d.ts +18 -0
  185. package/lib/inventory-common/supplier/supplier-form/supplier-form-button/supplier-form-button.component.d.ts +13 -0
  186. package/lib/inventory-common/supplier/supplier-form/supplier-form.component.d.ts +6 -6
  187. package/lib/inventory-common/supplier/supplier-information/supplier-information.component.d.ts +4 -4
  188. package/lib/inventory-common/supplier/supplier-view/supplier-view.component.d.ts +4 -4
  189. package/lib/inventory-common/supplier/supplier.component.d.ts +2 -2
  190. package/lib/inventory-common/supplier/supplier.module.d.ts +3 -1
  191. package/lib/inventory-common/supplier/supplier.service.d.ts +1 -1
  192. package/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.d.ts +0 -8
  193. package/lib/inventory-common/techlify-filter/techlify-filter.component.d.ts +4 -4
  194. package/lib/inventory-common/techlify-filter/techlify-filter.module.d.ts +2 -1
  195. package/package.json +1 -1
  196. package/fesm2022/techlify-inventory-common-category.module-CNm2bEsx.mjs +0 -257
  197. package/fesm2022/techlify-inventory-common-category.module-CNm2bEsx.mjs.map +0 -1
  198. package/fesm2022/techlify-inventory-common-measure.module-BEaRHh5Z.mjs +0 -313
  199. package/fesm2022/techlify-inventory-common-measure.module-BEaRHh5Z.mjs.map +0 -1
  200. package/fesm2022/techlify-inventory-common-product.module-BV9Cy88x.mjs +0 -1168
  201. package/fesm2022/techlify-inventory-common-product.module-BV9Cy88x.mjs.map +0 -1
  202. package/fesm2022/techlify-inventory-common-stock-issuances-list.module-Dt6gx-ji.mjs +0 -436
  203. package/fesm2022/techlify-inventory-common-stock-issuances-list.module-Dt6gx-ji.mjs.map +0 -1
  204. package/fesm2022/techlify-inventory-common-stock-issuances.module-BQRRP-hW.mjs.map +0 -1
  205. package/fesm2022/techlify-inventory-common-stock-receipt-form.module-DND0GNlf.mjs +0 -302
  206. package/fesm2022/techlify-inventory-common-stock-receipt-form.module-DND0GNlf.mjs.map +0 -1
  207. package/fesm2022/techlify-inventory-common-stock-receipts.module-BvYaKITT.mjs +0 -253
  208. package/fesm2022/techlify-inventory-common-stock-receipts.module-BvYaKITT.mjs.map +0 -1
  209. package/fesm2022/techlify-inventory-common-supplier-form.component-DVBnhiyH.mjs +0 -177
  210. package/fesm2022/techlify-inventory-common-supplier-form.component-DVBnhiyH.mjs.map +0 -1
  211. package/fesm2022/techlify-inventory-common-supplier.module-Bwa7gx14.mjs +0 -608
  212. package/fesm2022/techlify-inventory-common-supplier.module-Bwa7gx14.mjs.map +0 -1
  213. package/fesm2022/techlify-inventory-common-techlify-form-service-CiVfwYTS.mjs +0 -14
  214. package/fesm2022/techlify-inventory-common-techlify-form-service-CiVfwYTS.mjs.map +0 -1
  215. package/fesm2022/techlify-inventory-common-techlify-inventory-common-GFYF7JCA.mjs +0 -495
  216. package/fesm2022/techlify-inventory-common-techlify-inventory-common-GFYF7JCA.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
- import { NgModule } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { StockIssuanceDeleteButtonComponent } from "./stock-issuance-delete-button.component";
4
- import { MaterialModule } from "ngx-techlify-core";
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { StockIssuanceDeleteButtonComponent } from './stock-issuance-delete-button.component';
4
+ import { MaterialModule } from 'ngx-techlify-core';
5
5
  import * as i0 from "@angular/core";
6
6
  export class StockIssuanceDeleteButtonModule {
7
7
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuanceDeleteButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
16
16
  exports: [StockIssuanceDeleteButtonComponent],
17
17
  }]
18
18
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2UtZGVsZXRlLWJ1dHRvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1pc3N1YW5jZXMvc3RvY2staXNzdWFuY2UtZGVsZXRlLWJ1dHRvbi9zdG9jay1pc3N1YW5jZS1kZWxldGUtYnV0dG9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBT25ELE1BQU0sT0FBTywrQkFBK0I7d0dBQS9CLCtCQUErQjt5R0FBL0IsK0JBQStCLGlCQUozQixrQ0FBa0MsYUFDdkMsWUFBWSxFQUFFLGNBQWMsYUFDNUIsa0NBQWtDO3lHQUVqQywrQkFBK0IsWUFIaEMsWUFBWSxFQUFFLGNBQWM7OzRGQUczQiwrQkFBK0I7a0JBTDNDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0NBQWtDLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFN0b2NrSXNzdWFuY2VEZWxldGVCdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi9zdG9jay1pc3N1YW5jZS1kZWxldGUtYnV0dG9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tIFwibmd4LXRlY2hsaWZ5LWNvcmVcIjtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU3RvY2tJc3N1YW5jZURlbGV0ZUJ1dHRvbkNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdGVyaWFsTW9kdWxlXSxcbiAgZXhwb3J0czogW1N0b2NrSXNzdWFuY2VEZWxldGVCdXR0b25Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTdG9ja0lzc3VhbmNlRGVsZXRlQnV0dG9uTW9kdWxlIHt9XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2UtZGVsZXRlLWJ1dHRvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1pc3N1YW5jZXMvc3RvY2staXNzdWFuY2UtZGVsZXRlLWJ1dHRvbi9zdG9jay1pc3N1YW5jZS1kZWxldGUtYnV0dG9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBT25ELE1BQU0sT0FBTywrQkFBK0I7d0dBQS9CLCtCQUErQjt5R0FBL0IsK0JBQStCLGlCQUozQixrQ0FBa0MsYUFDdkMsWUFBWSxFQUFFLGNBQWMsYUFDNUIsa0NBQWtDO3lHQUVqQywrQkFBK0IsWUFIaEMsWUFBWSxFQUFFLGNBQWM7OzRGQUczQiwrQkFBK0I7a0JBTDNDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0NBQWtDLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3RvY2tJc3N1YW5jZURlbGV0ZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vc3RvY2staXNzdWFuY2UtZGVsZXRlLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1N0b2NrSXNzdWFuY2VEZWxldGVCdXR0b25Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRlcmlhbE1vZHVsZV0sXG4gIGV4cG9ydHM6IFtTdG9ja0lzc3VhbmNlRGVsZXRlQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tJc3N1YW5jZURlbGV0ZUJ1dHRvbk1vZHVsZSB7fVxuIl19
@@ -1,18 +1,18 @@
1
- import { Injectable } from "@angular/core";
2
- import { TechlifyServiceBaseClass } from "ngx-techlify-core";
1
+ import { Injectable } from '@angular/core';
2
+ import { TechlifyServiceBaseClass } from 'ngx-techlify-core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "ngx-techlify-core";
5
5
  export class StockIssuanceService extends TechlifyServiceBaseClass {
6
6
  constructor(httpService) {
7
- super(httpService, "stock-issuances");
7
+ super(httpService, 'stock-issuances');
8
8
  }
9
9
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuanceService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
10
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuanceService, providedIn: "root" });
10
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuanceService, providedIn: 'root' });
11
11
  }
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuanceService, decorators: [{
13
13
  type: Injectable,
14
14
  args: [{
15
- providedIn: "root",
15
+ providedIn: 'root',
16
16
  }]
17
17
  }], ctorParameters: () => [{ type: i1.HttpService }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLWlzc3VhbmNlcy9zdG9jay1pc3N1YW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFlLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQUsxRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsd0JBQXdCO0lBQ2hFLFlBQVksV0FBd0I7UUFDbEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7d0dBSFUsb0JBQW9COzRHQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UsIFRlY2hsaWZ5U2VydmljZUJhc2VDbGFzcyB9IGZyb20gXCJuZ3gtdGVjaGxpZnktY29yZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBTdG9ja0lzc3VhbmNlU2VydmljZSBleHRlbmRzIFRlY2hsaWZ5U2VydmljZUJhc2VDbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSkge1xuICAgIHN1cGVyKGh0dHBTZXJ2aWNlLCBcInN0b2NrLWlzc3VhbmNlc1wiKTtcbiAgfVxufVxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLWlzc3VhbmNlcy9zdG9jay1pc3N1YW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFlLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQUsxRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsd0JBQXdCO0lBQ2hFLFlBQVksV0FBd0I7UUFDbEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7d0dBSFUsb0JBQW9COzRHQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlLCBUZWNobGlmeVNlcnZpY2VCYXNlQ2xhc3MgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTdG9ja0lzc3VhbmNlU2VydmljZSBleHRlbmRzIFRlY2hsaWZ5U2VydmljZUJhc2VDbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSkge1xuICAgIHN1cGVyKGh0dHBTZXJ2aWNlLCAnc3RvY2staXNzdWFuY2VzJyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,82 +1,80 @@
1
- import { Component, EventEmitter, Input, Output } from "@angular/core";
2
- import { TechlifyListingControllerInterface, Timeline, } from "ngx-techlify-core";
3
- import { debounceTime } from "rxjs";
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { TechlifyListingControllerInterface } from 'ngx-techlify-core';
3
+ import { debounceTime, distinctUntilChanged } from 'rxjs';
4
+ import moment from 'moment';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/forms";
6
7
  import * as i2 from "ngx-techlify-core";
7
8
  import * as i3 from "../stock-issuance.service";
8
- import * as i4 from "@angular/common";
9
- import * as i5 from "@angular/material/sort";
10
- import * as i6 from "@angular/material/table";
11
- import * as i7 from "@angular/material/card";
12
- import * as i8 from "@angular/material/progress-bar";
13
- import * as i9 from "../../techlify-filter/techlify-filter.component";
14
- import * as i10 from "../stock-issue-form/stock-issue-form-button/stock-issue-form-button.component";
15
- import * as i11 from "ngx-infinite-scroll";
16
- import * as i12 from "../stock-issuance-delete-button/stock-issuance-delete-button.component";
17
- import * as i13 from "@angular/router";
9
+ import * as i4 from "@angular/router";
10
+ import * as i5 from "@angular/common";
11
+ import * as i6 from "@angular/material/form-field";
12
+ import * as i7 from "@angular/material/input";
13
+ import * as i8 from "@angular/material/sort";
14
+ import * as i9 from "@angular/material/table";
15
+ import * as i10 from "@angular/material/card";
16
+ import * as i11 from "@angular/material/progress-bar";
17
+ import * as i12 from "../stock-issue-form/stock-issue-form-button/stock-issue-form-button.component";
18
+ import * as i13 from "ngx-infinite-scroll";
19
+ import * as i14 from "../stock-issuance-delete-button/stock-issuance-delete-button.component";
20
+ import * as i15 from "../../product/widgets/product-category-badges/product-category-badges.component";
18
21
  export class StockIssuancesListComponent extends TechlifyListingControllerInterface {
19
22
  formBuilder;
20
23
  requestHelperService;
21
24
  stockIssuanceService;
25
+ activatedRoute;
22
26
  product;
23
27
  issuableType;
24
28
  issuableId;
25
- label = "Stock Issuances";
29
+ label = 'Stock Issues';
26
30
  listUpdated = new EventEmitter();
27
- filterConfig = {
28
- duration: {
29
- label: "Date",
30
- },
31
- search: {
32
- placeholder: "Search Product Name, SKU, Description, etc",
33
- },
34
- };
35
- displayedColumns = [
36
- "no",
37
- "product",
38
- "date",
39
- "quantity",
40
- "related",
41
- "particulars",
42
- "creator",
43
- "actions",
31
+ defaultSelectedColumns = [
32
+ 'no', 'product', 'sku', 'date', 'quantity', 'location', 'related', 'particulars',
44
33
  ];
45
- constructor(formBuilder, requestHelperService, stockIssuanceService) {
34
+ columnConfig = [
35
+ { label: 'Creator', def: 'creator', isSelected: false, isEditable: true },
36
+ ];
37
+ selectedColumns = this.columnConfig.filter(col => col.isSelected);
38
+ get displayedColumns() {
39
+ const selectedColumns = this.selectedColumns.map(col => col.def);
40
+ return this.defaultSelectedColumns.concat(...selectedColumns, 'actions');
41
+ }
42
+ constructor(formBuilder, requestHelperService, stockIssuanceService, activatedRoute) {
46
43
  super();
47
44
  this.formBuilder = formBuilder;
48
45
  this.requestHelperService = requestHelperService;
49
46
  this.stockIssuanceService = stockIssuanceService;
47
+ this.activatedRoute = activatedRoute;
50
48
  this.lastPage = 0;
51
49
  this.filterForm = this.formBuilder.group({
52
- duration: [Timeline.THIS_MONTH],
53
- date_from: [""],
54
- date_to: [""],
55
- measure_ids: [""],
56
- product_ids: [""],
57
- search: [""],
58
- sort_by: ["date|desc"],
50
+ duration: [''],
51
+ date_from: [''],
52
+ date_to: [''],
53
+ measure_ids: [''],
54
+ product_ids: [''],
55
+ category_ids: [''],
56
+ location_ids: [''],
57
+ search: [''],
58
+ sort_by: ['date|desc'],
59
59
  });
60
60
  }
61
61
  ngOnInit() {
62
- this.filterForm.valueChanges
63
- .pipe(debounceTime(500))
64
- .subscribe({
65
- next: () => this.reload(),
66
- });
67
62
  if (this.product) {
68
- this.filterForm.get("product_ids")?.setValue(this.product?.id);
69
- const index = this.displayedColumns.indexOf("product");
63
+ this.filterForm.get('product_ids')?.setValue(this.product?.id);
64
+ const index = this.displayedColumns.indexOf('product');
70
65
  if (index !== -1) {
71
66
  this.displayedColumns.splice(index, 1);
72
67
  }
73
68
  }
69
+ this.updateFormWithQueryParams();
70
+ this.subscribeToFormChanges();
71
+ this.subscribeToRouteChanges();
74
72
  }
75
73
  loadData() {
76
74
  const params = {
77
75
  page: this.page,
78
76
  perPage: this.perPage,
79
- with: "creator,product.measure,issuable.fixedAsset",
77
+ with: 'creator,product.measure,issuable.fixedAsset,product.categories,location',
80
78
  ...this.requestHelperService.convertToFormData(this.filterForm.value),
81
79
  };
82
80
  if (this.issuableId && this.issuableType) {
@@ -98,21 +96,51 @@ export class StockIssuancesListComponent extends TechlifyListingControllerInterf
98
96
  onSortChange(sort) {
99
97
  let { active, direction } = sort;
100
98
  if (!active) {
101
- active = "date";
99
+ active = 'date';
102
100
  }
103
101
  if (!direction) {
104
- direction = "desc";
105
- active = "date";
102
+ direction = 'desc';
103
+ active = 'date';
106
104
  }
107
- this.filterForm.get("sort_by").setValue(active + "|" + direction);
105
+ this.filterForm.get('sort_by').setValue(active + '|' + direction);
106
+ }
107
+ updateFormWithQueryParams() {
108
+ this.requestHelperService.updateFormWithQueryParams(this.filterForm, {
109
+ product_ids: { multiple: true },
110
+ measure_ids: { multiple: true },
111
+ category_ids: { multiple: true },
112
+ supplier_ids: { multiple: true },
113
+ location_ids: { multiple: true },
114
+ });
115
+ }
116
+ subscribeToFormChanges() {
117
+ this.filterForm.valueChanges.pipe(debounceTime(800)).subscribe({
118
+ next: () => {
119
+ this.requestHelperService.updateQueryParams(this.requestHelperService.convertToFormData(this.filterForm.value));
120
+ }
121
+ });
122
+ }
123
+ subscribeToRouteChanges() {
124
+ this.activatedRoute.queryParams
125
+ .pipe(debounceTime(500), distinctUntilChanged())
126
+ .subscribe(() => {
127
+ this.reload();
128
+ });
129
+ }
130
+ onDurationChange(timelineValue) {
131
+ let { date_to, date_from } = timelineValue;
132
+ this.filterForm.patchValue({
133
+ date_from: date_from ? moment(date_from).format("YYYY-MM-DD") : "",
134
+ date_to: date_to ? moment(date_to).format("YYYY-MM-DD") : "",
135
+ }, { emitEvent: false });
108
136
  }
109
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuancesListComponent, deps: [{ token: i1.FormBuilder }, { token: i2.RequestHelperService }, { token: i3.StockIssuanceService }], target: i0.ɵɵFactoryTarget.Component });
110
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StockIssuancesListComponent, selector: "app-stock-issuances-list", inputs: { product: "product", issuableType: "issuableType", issuableId: "issuableId", label: "label" }, outputs: { listUpdated: "listUpdated" }, usesInheritance: true, ngImport: i0, template: "<mat-card *ngIf=\"!product\" class=\"mb-2\">\n <mat-card-content\n class=\"d-flex justify-content-between align-items-center gap-3\"\n >\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"mb-0\">{{ label }}</h3>\n\n <app-stock-issue-form-button\n icon=\"add\"\n [issuableType]=\"issuableType\"\n [issuableId]=\"issuableId\"\n (saved)=\"reload()\"\n ></app-stock-issue-form-button>\n </div>\n\n <app-techlify-filter\n [filterForm]=\"filterForm\"\n [filterConfig]=\"filterConfig\"\n (filterUpdated)=\"reload()\"\n ></app-techlify-filter>\n </mat-card-content>\n</mat-card>\n\n<mat-card>\n <mat-card-content *ngIf=\"product\" class=\"mb-0\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n <span class=\"material-symbols-outlined\"> ungroup </span>\n <h3 class=\"mb-0\">Stock Issuances</h3>\n\n <app-stock-issue-form-button\n [product]=\"product\"\n icon=\"add\"\n (saved)=\"reload(); listUpdated.emit()\"\n ></app-stock-issue-form-button>\n </div>\n </mat-card-content>\n <mat-card-content class=\"p-0\">\n <table\n mat-table\n [dataSource]=\"models\"\n class=\"w-100\"\n aria-describedby=\"Stock Issuances\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n >\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n [routerLink]=\"[\n '/inventory/products/',\n element?.product?.id,\n 'view'\n ]\"\n >\n {{ element?.product?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Date Column -->\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Date</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.date | date }}</td>\n </ng-container>\n\n <!-- Related Column -->\n <ng-container matColumnDef=\"related\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Related</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n class=\"text-dark\"\n *ngIf=\"element?.issuable\"\n [routerLink]=\"['/maintenances', element?.issuable_id, 'view']\"\n >\n Maintenance for {{ element?.issuable?.fixed_asset?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity }} {{ element?.product?.measure?.title }}\n </td>\n </ng-container>\n\n <!-- Purchase Price Column -->\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n Purchase Price\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.purchase_price | currency }}\n </td>\n </ng-container>\n\n <!-- Total Value Column -->\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.amount | currency }}\n </td>\n </ng-container>\n\n <!-- Particulars Column -->\n <ng-container matColumnDef=\"particulars\">\n <th mat-header-cell *matHeaderCellDef>Particulars</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.particulars }}</td>\n </ng-container>\n\n <!-- Supplier Column -->\n <ng-container matColumnDef=\"supplier\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Supplier</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.supplier?.company_name }}\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef>Creator</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-1\">{{ element?.creator?.name }}</p>\n <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex gap-1\">\n <app-stock-issue-form-button\n [product]=\"element.product\"\n [stockIssuance]=\"element\"\n (saved)=\"reload(); listUpdated.emit()\"\n ></app-stock-issue-form-button>\n <app-stock-issuance-delete-button\n [stockIssuance]=\"element\"\n (deleted)=\"reload(); listUpdated.emit()\"\n ></app-stock-issuance-delete-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i9.TechlifyFilterComponent, selector: "app-techlify-filter", inputs: ["filterForm", "filterConfig"], outputs: ["filterUpdated"] }, { kind: "component", type: i10.StockIssueFormButtonComponent, selector: "app-stock-issue-form-button", inputs: ["product", "stockIssuance", "icon", "issuableType", "issuableId"], outputs: ["saved"] }, { kind: "directive", type: i11.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i12.StockIssuanceDeleteButtonComponent, selector: "app-stock-issuance-delete-button", inputs: ["stockIssuance"], outputs: ["deleted"] }, { kind: "directive", type: i13.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i4.DatePipe, name: "date" }], preserveWhitespaces: true });
137
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuancesListComponent, deps: [{ token: i1.FormBuilder }, { token: i2.RequestHelperService }, { token: i3.StockIssuanceService }, { token: i4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
138
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StockIssuancesListComponent, selector: "app-stock-issuances-list", inputs: { product: "product", issuableType: "issuableType", issuableId: "issuableId", label: "label" }, outputs: { listUpdated: "listUpdated" }, usesInheritance: true, ngImport: i0, template: "<mat-card *ngIf=\"!product\" class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"mb-0\">{{ label }}</h3>\n\n <app-stock-issue-form-button\n icon=\"add\"\n [issuableType]=\"issuableType\"\n [issuableId]=\"issuableId\"\n (saved)=\"reload()\"\n class=\"mt-2\"\n ></app-stock-issue-form-button>\n\n <app-column-selector\n mode=\"icon\" class=\"mb-2 d-print-none\" [columnConfigs]=\"columnConfig\" [(selectedColumns)]=\"selectedColumns\"\n ></app-column-selector>\n </div>\n\n <form [formGroup]=\"filterForm\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search products\" formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter\n appearance=\"fill\" labelText=\"Date\" formControlName=\"duration\" (selectionChange)=\"onDurationChange($event)\"\n [showClearButton]=\"true\" [dateFrom]=\"filterForm.value?.date_from\" [dateTo]=\"filterForm.value?.date_to\"\n ></app-timeline-filter>\n\n <mat-form-field>\n <mat-label>Category</mat-label>\n <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Measure</mat-label>\n <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location</mat-label>\n <app-searchable-selector\n apiUrl=\"api/inventory-locations\" formControlName=\"location_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card>\n <mat-card-content *ngIf=\"product\" class=\"mb-0\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n <span class=\"material-symbols-outlined\"> ungroup </span>\n <h3 class=\"mb-0\">Stock Issues</h3>\n\n <app-stock-issue-form-button\n class=\"mt-2\" [product]=\"product\" icon=\"add\" (saved)=\"reload(); listUpdated.emit()\"\n ></app-stock-issue-form-button>\n </div>\n </mat-card-content>\n <mat-card-content class=\"p-0\">\n <table\n mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Stock Issuances\"\n infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n matSort (matSortChange)=\"onSortChange($event)\"\n >\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-column gap-1\">\n <a\n class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/products', element?.product?.id, 'view']\"\n >\n {{ element?.product?.name }}\n </a>\n <app-product-category-badges [product]=\"element?.product\"></app-product-category-badges>\n </div>\n </td>\n </ng-container>\n\n <!-- SKU Column -->\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</td>\n </ng-container>\n\n <!-- Date Column -->\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Date</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.date | date }}</td>\n </ng-container>\n\n <!-- Location Column -->\n <ng-container matColumnDef=\"location\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Location</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/locations', element?.location_id, 'view']\"\n >\n {{ element?.location?.title }}\n </a>\n </td>\n </ng-container>\n\n <!-- Related Column -->\n <ng-container matColumnDef=\"related\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Related</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-dark\" *ngIf=\"element?.issuable\" [routerLink]=\"['/maintenances', element?.issuable_id, 'view']\">\n Maintenance for {{ element?.issuable?.fixed_asset?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.quantity }} {{ element?.product?.measure?.title }}</td>\n </ng-container>\n\n <!-- Purchase Price Column -->\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Purchase Price</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.purchase_price | currency }}\n </td>\n </ng-container>\n\n <!-- Total Value Column -->\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.amount | currency }}\n </td>\n </ng-container>\n\n <!-- Particulars Column -->\n <ng-container matColumnDef=\"particulars\">\n <th mat-header-cell *matHeaderCellDef>Particulars</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.particulars }}</td>\n </ng-container>\n\n <!-- Supplier Column -->\n <ng-container matColumnDef=\"supplier\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Supplier</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.supplier?.company_name }}\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef>Creator</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-1\">{{ element?.creator?.name }}</p>\n <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex gap-1\">\n <app-stock-issue-form-button\n [product]=\"element.product\" [stockIssuance]=\"element\" (saved)=\"reload(); listUpdated.emit()\"\n ></app-stock-issue-form-button>\n <app-stock-issuance-delete-button\n [stockIssuance]=\"element\" (deleted)=\"reload(); listUpdated.emit()\"\n ></app-stock-issuance-delete-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i9.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i10.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i10.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i12.StockIssueFormButtonComponent, selector: "app-stock-issue-form-button", inputs: ["product", "stockIssuance", "icon", "issuableType", "issuableId"], outputs: ["saved"] }, { kind: "directive", type: i13.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i14.StockIssuanceDeleteButtonComponent, selector: "app-stock-issuance-delete-button", inputs: ["stockIssuance"], outputs: ["deleted"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i2.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i2.TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i15.ProductCategoryBadgesComponent, selector: "app-product-category-badges", inputs: ["product"] }, { kind: "component", type: i2.ColumnSelectorComponent, selector: "app-column-selector", inputs: ["label", "mode", "columnConfigs", "selectedColumns"], outputs: ["selectedColumnsChange", "displayedColumnsChange"] }, { kind: "pipe", type: i5.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i5.DatePipe, name: "date" }], preserveWhitespaces: true });
111
139
  }
112
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuancesListComponent, decorators: [{
113
141
  type: Component,
114
- args: [{ selector: "app-stock-issuances-list", template: "<mat-card *ngIf=\"!product\" class=\"mb-2\">\n <mat-card-content\n class=\"d-flex justify-content-between align-items-center gap-3\"\n >\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"mb-0\">{{ label }}</h3>\n\n <app-stock-issue-form-button\n icon=\"add\"\n [issuableType]=\"issuableType\"\n [issuableId]=\"issuableId\"\n (saved)=\"reload()\"\n ></app-stock-issue-form-button>\n </div>\n\n <app-techlify-filter\n [filterForm]=\"filterForm\"\n [filterConfig]=\"filterConfig\"\n (filterUpdated)=\"reload()\"\n ></app-techlify-filter>\n </mat-card-content>\n</mat-card>\n\n<mat-card>\n <mat-card-content *ngIf=\"product\" class=\"mb-0\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n <span class=\"material-symbols-outlined\"> ungroup </span>\n <h3 class=\"mb-0\">Stock Issuances</h3>\n\n <app-stock-issue-form-button\n [product]=\"product\"\n icon=\"add\"\n (saved)=\"reload(); listUpdated.emit()\"\n ></app-stock-issue-form-button>\n </div>\n </mat-card-content>\n <mat-card-content class=\"p-0\">\n <table\n mat-table\n [dataSource]=\"models\"\n class=\"w-100\"\n aria-describedby=\"Stock Issuances\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n >\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n [routerLink]=\"[\n '/inventory/products/',\n element?.product?.id,\n 'view'\n ]\"\n >\n {{ element?.product?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Date Column -->\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Date</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.date | date }}</td>\n </ng-container>\n\n <!-- Related Column -->\n <ng-container matColumnDef=\"related\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Related</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n class=\"text-dark\"\n *ngIf=\"element?.issuable\"\n [routerLink]=\"['/maintenances', element?.issuable_id, 'view']\"\n >\n Maintenance for {{ element?.issuable?.fixed_asset?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity }} {{ element?.product?.measure?.title }}\n </td>\n </ng-container>\n\n <!-- Purchase Price Column -->\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n Purchase Price\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.purchase_price | currency }}\n </td>\n </ng-container>\n\n <!-- Total Value Column -->\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.amount | currency }}\n </td>\n </ng-container>\n\n <!-- Particulars Column -->\n <ng-container matColumnDef=\"particulars\">\n <th mat-header-cell *matHeaderCellDef>Particulars</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.particulars }}</td>\n </ng-container>\n\n <!-- Supplier Column -->\n <ng-container matColumnDef=\"supplier\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Supplier</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.supplier?.company_name }}\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef>Creator</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-1\">{{ element?.creator?.name }}</p>\n <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex gap-1\">\n <app-stock-issue-form-button\n [product]=\"element.product\"\n [stockIssuance]=\"element\"\n (saved)=\"reload(); listUpdated.emit()\"\n ></app-stock-issue-form-button>\n <app-stock-issuance-delete-button\n [stockIssuance]=\"element\"\n (deleted)=\"reload(); listUpdated.emit()\"\n ></app-stock-issuance-delete-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n" }]
115
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.RequestHelperService }, { type: i3.StockIssuanceService }], propDecorators: { product: [{
142
+ args: [{ selector: 'app-stock-issuances-list', template: "<mat-card *ngIf=\"!product\" class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <h3 class=\"mb-0\">{{ label }}</h3>\n\n <app-stock-issue-form-button\n icon=\"add\"\n [issuableType]=\"issuableType\"\n [issuableId]=\"issuableId\"\n (saved)=\"reload()\"\n class=\"mt-2\"\n ></app-stock-issue-form-button>\n\n <app-column-selector\n mode=\"icon\" class=\"mb-2 d-print-none\" [columnConfigs]=\"columnConfig\" [(selectedColumns)]=\"selectedColumns\"\n ></app-column-selector>\n </div>\n\n <form [formGroup]=\"filterForm\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search products\" formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter\n appearance=\"fill\" labelText=\"Date\" formControlName=\"duration\" (selectionChange)=\"onDurationChange($event)\"\n [showClearButton]=\"true\" [dateFrom]=\"filterForm.value?.date_from\" [dateTo]=\"filterForm.value?.date_to\"\n ></app-timeline-filter>\n\n <mat-form-field>\n <mat-label>Category</mat-label>\n <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Measure</mat-label>\n <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location</mat-label>\n <app-searchable-selector\n apiUrl=\"api/inventory-locations\" formControlName=\"location_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card>\n <mat-card-content *ngIf=\"product\" class=\"mb-0\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n <span class=\"material-symbols-outlined\"> ungroup </span>\n <h3 class=\"mb-0\">Stock Issues</h3>\n\n <app-stock-issue-form-button\n class=\"mt-2\" [product]=\"product\" icon=\"add\" (saved)=\"reload(); listUpdated.emit()\"\n ></app-stock-issue-form-button>\n </div>\n </mat-card-content>\n <mat-card-content class=\"p-0\">\n <table\n mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Stock Issuances\"\n infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n matSort (matSortChange)=\"onSortChange($event)\"\n >\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-column gap-1\">\n <a\n class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/products', element?.product?.id, 'view']\"\n >\n {{ element?.product?.name }}\n </a>\n <app-product-category-badges [product]=\"element?.product\"></app-product-category-badges>\n </div>\n </td>\n </ng-container>\n\n <!-- SKU Column -->\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</td>\n </ng-container>\n\n <!-- Date Column -->\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Date</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.date | date }}</td>\n </ng-container>\n\n <!-- Location Column -->\n <ng-container matColumnDef=\"location\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Location</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/locations', element?.location_id, 'view']\"\n >\n {{ element?.location?.title }}\n </a>\n </td>\n </ng-container>\n\n <!-- Related Column -->\n <ng-container matColumnDef=\"related\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Related</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-dark\" *ngIf=\"element?.issuable\" [routerLink]=\"['/maintenances', element?.issuable_id, 'view']\">\n Maintenance for {{ element?.issuable?.fixed_asset?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.quantity }} {{ element?.product?.measure?.title }}</td>\n </ng-container>\n\n <!-- Purchase Price Column -->\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Purchase Price</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.purchase_price | currency }}\n </td>\n </ng-container>\n\n <!-- Total Value Column -->\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.amount | currency }}\n </td>\n </ng-container>\n\n <!-- Particulars Column -->\n <ng-container matColumnDef=\"particulars\">\n <th mat-header-cell *matHeaderCellDef>Particulars</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.particulars }}</td>\n </ng-container>\n\n <!-- Supplier Column -->\n <ng-container matColumnDef=\"supplier\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Supplier</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.supplier?.company_name }}\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef>Creator</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-1\">{{ element?.creator?.name }}</p>\n <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex gap-1\">\n <app-stock-issue-form-button\n [product]=\"element.product\" [stockIssuance]=\"element\" (saved)=\"reload(); listUpdated.emit()\"\n ></app-stock-issue-form-button>\n <app-stock-issuance-delete-button\n [stockIssuance]=\"element\" (deleted)=\"reload(); listUpdated.emit()\"\n ></app-stock-issuance-delete-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n" }]
143
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.RequestHelperService }, { type: i3.StockIssuanceService }, { type: i4.ActivatedRoute }], propDecorators: { product: [{
116
144
  type: Input
117
145
  }], issuableType: [{
118
146
  type: Input
@@ -123,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
123
151
  }], listUpdated: [{
124
152
  type: Output
125
153
  }] } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2VzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VhbmNlcy1saXN0L3N0b2NrLWlzc3VhbmNlcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLWlzc3VhbmNlcy9zdG9jay1pc3N1YW5jZXMtbGlzdC9zdG9jay1pc3N1YW5jZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFFTCxrQ0FBa0MsRUFDbEMsUUFBUSxHQUNULE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBU3BDLE1BQU0sT0FBTywyQkFDWCxTQUFRLGtDQUFrQztJQTRCaEM7SUFDQTtJQUNBO0lBM0JELE9BQU8sQ0FBTTtJQUNiLFlBQVksQ0FBVTtJQUN0QixVQUFVLENBQVU7SUFDcEIsS0FBSyxHQUFHLGlCQUFpQixDQUFDO0lBQ3pCLFdBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVuRSxZQUFZLEdBQVE7UUFDbEIsUUFBUSxFQUFFO1lBQ1IsS0FBSyxFQUFFLE1BQU07U0FDZDtRQUNELE1BQU0sRUFBRTtZQUNOLFdBQVcsRUFBRSw0Q0FBNEM7U0FDMUQ7S0FDRixDQUFDO0lBQ0YsZ0JBQWdCLEdBQWE7UUFDM0IsSUFBSTtRQUNKLFNBQVM7UUFDVCxNQUFN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LENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBVTtRQUNyQixJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQ25CLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7d0dBL0ZVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLHdPQ2hCeEMsd3ZMQXFLQTs7NEZEckphLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSwwQkFBMEI7c0pBUTNCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIFJlcXVlc3RIZWxwZXJTZXJ2aWNlLFxuICBUZWNobGlmeUxpc3RpbmdDb250cm9sbGVySW50ZXJmYWNlLFxuICBUaW1lbGluZSxcbn0gZnJvbSBcIm5neC10ZWNobGlmeS1jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgU29ydCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zb3J0XCI7XG5pbXBvcnQgeyBTdG9ja0lzc3VhbmNlU2VydmljZSB9IGZyb20gXCIuLi9zdG9jay1pc3N1YW5jZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtc3RvY2staXNzdWFuY2VzLWxpc3RcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zdG9jay1pc3N1YW5jZXMtbGlzdC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vc3RvY2staXNzdWFuY2VzLWxpc3QuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrSXNzdWFuY2VzTGlzdENvbXBvbmVudFxuICBleHRlbmRzIFRlY2hsaWZ5TGlzdGluZ0NvbnRyb2xsZXJJbnRlcmZhY2VcbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgQElucHV0KCkgcHJvZHVjdDogYW55O1xuICBASW5wdXQoKSBpc3N1YWJsZVR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzc3VhYmxlSWQhOiBudW1iZXI7XG4gIEBJbnB1dCgpIGxhYmVsID0gXCJTdG9jayBJc3N1YW5jZXNcIjtcbiAgQE91dHB1dCgpIGxpc3RVcGRhdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGZpbHRlckNvbmZpZzogYW55ID0ge1xuICAgIGR1cmF0aW9uOiB7XG4gICAgICBsYWJlbDogXCJEYXRlXCIsXG4gICAgfSxcbiAgICBzZWFyY2g6IHtcbiAgICAgIHBsYWNlaG9sZGVyOiBcIlNlYXJjaCBQcm9kdWN0IE5hbWUsIFNLVSwgRGVzY3JpcHRpb24sIGV0Y1wiLFxuICAgIH0sXG4gIH07XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW1xuICAgIFwibm9cIixcbiAgICBcInByb2R1Y3RcIixcbiAgICBcImRhdGVcIixcbiAgICBcInF1YW50aXR5XCIsXG4gICAgXCJyZWxhdGVkXCIsXG4gICAgXCJwYXJ0aWN1bGFyc1wiLFxuICAgIFwiY3JlYXRvclwiLFxuICAgIFwiYWN0aW9uc1wiLFxuICBdO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlcXVlc3RIZWxwZXJTZXJ2aWNlOiBSZXF1ZXN0SGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIHN0b2NrSXNzdWFuY2VTZXJ2aWNlOiBTdG9ja0lzc3VhbmNlU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubGFzdFBhZ2UgPSAwO1xuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZHVyYXRpb246IFtUaW1lbGluZS5USElTX01PTlRIXSxcbiAgICAgIGRhdGVfZnJvbTogW1wiXCJdLFxuICAgICAgZGF0ZV90bzogW1wiXCJdLFxuICAgICAgbWVhc3VyZV9pZHM6IFtcIlwiXSxcbiAgICAgIHByb2R1Y3RfaWRzOiBbXCJcIl0sXG4gICAgICBzZWFyY2g6IFtcIlwiXSxcbiAgICAgIHNvcnRfYnk6IFtcImRhdGV8ZGVzY1wiXSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICh0aGlzLmZpbHRlckZvcm0gYXMgRm9ybUdyb3VwKS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHRoaXMucmVsb2FkKCksXG4gICAgICB9KTtcbiAgICBpZiAodGhpcy5wcm9kdWN0KSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KFwicHJvZHVjdF9pZHNcIik/LnNldFZhbHVlKHRoaXMucHJvZHVjdD8uaWQpO1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRpc3BsYXllZENvbHVtbnMuaW5kZXhPZihcInByb2R1Y3RcIik7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxvYWREYXRhKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgcGVyUGFnZTogdGhpcy5wZXJQYWdlLFxuICAgICAgd2l0aDogXCJjcmVhdG9yLHByb2R1Y3QubWVhc3VyZSxpc3N1YWJsZS5maXhlZEFzc2V0XCIsXG4gICAgICAuLi50aGlzLnJlcXVlc3RIZWxwZXJTZXJ2aWNlLmNvbnZlcnRUb0Zvcm1EYXRhKHRoaXMuZmlsdGVyRm9ybS52YWx1ZSksXG4gICAgfTtcbiAgICBpZiAodGhpcy5pc3N1YWJsZUlkICYmIHRoaXMuaXNzdWFibGVUeXBlKSB7XG4gICAgICBwYXJhbXMuaXNzdWFibGVfaWRzID0gdGhpcy5pc3N1YWJsZUlkO1xuICAgICAgcGFyYW1zLmlzc3VhYmxlX3R5cGVzID0gdGhpcy5pc3N1YWJsZVR5cGU7XG4gICAgfVxuICAgIHRoaXMuaXNXb3JraW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN0b2NrSXNzdWFuY2VTZXJ2aWNlLmluZGV4KHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubW9kZWxzID0gdGhpcy5tb2RlbHMuY29uY2F0KHJlc3BvbnNlPy5kYXRhKTtcbiAgICAgICAgdGhpcy5sYXN0UGFnZSA9IHJlc3BvbnNlPy5sYXN0X3BhZ2U7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblNvcnRDaGFuZ2Uoc29ydDogU29ydCkge1xuICAgIGxldCB7IGFjdGl2ZSwgZGlyZWN0aW9uIH0gPSBzb3J0O1xuICAgIGlmICghYWN0aXZlKSB7XG4gICAgICBhY3RpdmUgPSBcImRhdGVcIjtcbiAgICB9XG4gICAgaWYgKCFkaXJlY3Rpb24pIHtcbiAgICAgIGRpcmVjdGlvbiA9IFwiZGVzY1wiO1xuICAgICAgYWN0aXZlID0gXCJkYXRlXCI7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoXCJzb3J0X2J5XCIpLnNldFZhbHVlKGFjdGl2ZSArIFwifFwiICsgZGlyZWN0aW9uKTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkICpuZ0lmPVwiIXByb2R1Y3RcIiBjbGFzcz1cIm1iLTJcIj5cbiAgPG1hdC1jYXJkLWNvbnRlbnRcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICA8aDMgY2xhc3M9XCJtYi0wXCI+e3sgbGFiZWwgfX08L2gzPlxuXG4gICAgICA8YXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uXG4gICAgICAgIGljb249XCJhZGRcIlxuICAgICAgICBbaXNzdWFibGVUeXBlXT1cImlzc3VhYmxlVHlwZVwiXG4gICAgICAgIFtpc3N1YWJsZUlkXT1cImlzc3VhYmxlSWRcIlxuICAgICAgICAoc2F2ZWQpPVwicmVsb2FkKClcIlxuICAgICAgPjwvYXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGFwcC10ZWNobGlmeS1maWx0ZXJcbiAgICAgIFtmaWx0ZXJGb3JtXT1cImZpbHRlckZvcm1cIlxuICAgICAgW2ZpbHRlckNvbmZpZ109XCJmaWx0ZXJDb25maWdcIlxuICAgICAgKGZpbHRlclVwZGF0ZWQpPVwicmVsb2FkKClcIlxuICAgID48L2FwcC10ZWNobGlmeS1maWx0ZXI+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG5cbjxtYXQtY2FyZD5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgKm5nSWY9XCJwcm9kdWN0XCIgY2xhc3M9XCJtYi0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiB1bmdyb3VwIDwvc3Bhbj5cbiAgICAgIDxoMyBjbGFzcz1cIm1iLTBcIj5TdG9jayBJc3N1YW5jZXM8L2gzPlxuXG4gICAgICA8YXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uXG4gICAgICAgIFtwcm9kdWN0XT1cInByb2R1Y3RcIlxuICAgICAgICBpY29uPVwiYWRkXCJcbiAgICAgICAgKHNhdmVkKT1cInJlbG9hZCgpOyBsaXN0VXBkYXRlZC5lbWl0KClcIlxuICAgICAgPjwvYXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwicC0wXCI+XG4gICAgPHRhYmxlXG4gICAgICBtYXQtdGFibGVcbiAgICAgIFtkYXRhU291cmNlXT1cIm1vZGVsc1wiXG4gICAgICBjbGFzcz1cInctMTAwXCJcbiAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJTdG9jayBJc3N1YW5jZXNcIlxuICAgICAgaW5maW5pdGVTY3JvbGxcbiAgICAgIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIlxuICAgICAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTBcIlxuICAgICAgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxuICAgICAgbWF0U29ydFxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgIDwhLS0gIyBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm5vXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IzwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCI+e3sgaSArIDEgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gUHJvZHVjdCBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInByb2R1Y3RcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+UHJvZHVjdDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltcbiAgICAgICAgICAgICAgJy9pbnZlbnRvcnkvcHJvZHVjdHMvJyxcbiAgICAgICAgICAgICAgZWxlbWVudD8ucHJvZHVjdD8uaWQsXG4gICAgICAgICAgICAgICd2aWV3J1xuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZWxlbWVudD8ucHJvZHVjdD8ubmFtZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIERhdGUgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkYXRlXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPkRhdGU8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LmRhdGUgfCBkYXRlIH19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFJlbGF0ZWQgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJyZWxhdGVkXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlJlbGF0ZWQ8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtZGFya1wiXG4gICAgICAgICAgICAqbmdJZj1cImVsZW1lbnQ/Lmlzc3VhYmxlXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL21haW50ZW5hbmNlcycsIGVsZW1lbnQ/Lmlzc3VhYmxlX2lkLCAndmlldyddXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBNYWludGVuYW5jZSBmb3Ige3sgZWxlbWVudD8uaXNzdWFibGU/LmZpeGVkX2Fzc2V0Py5uYW1lIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gUXVhbnRpdHkgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJxdWFudGl0eVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5RdWFudGl0eTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAge3sgZWxlbWVudD8ucXVhbnRpdHkgfX0ge3sgZWxlbWVudD8ucHJvZHVjdD8ubWVhc3VyZT8udGl0bGUgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFB1cmNoYXNlIFByaWNlIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicHVyY2hhc2VfcHJpY2VcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgUHVyY2hhc2UgUHJpY2VcbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICB7eyBlbGVtZW50Py5wdXJjaGFzZV9wcmljZSB8IGN1cnJlbmN5IH19XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBUb3RhbCBWYWx1ZSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFtb3VudFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5Ub3RhbCBWYWx1ZTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAge3sgZWxlbWVudD8uYW1vdW50IHwgY3VycmVuY3kgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFBhcnRpY3VsYXJzIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicGFydGljdWxhcnNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5QYXJ0aWN1bGFyczwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8ucGFydGljdWxhcnMgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gU3VwcGxpZXIgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdXBwbGllclwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5TdXBwbGllcjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAge3sgZWxlbWVudD8uc3VwcGxpZXI/LmNvbXBhbnlfbmFtZSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQ3JlYXRvciBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImNyZWF0b3JcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5DcmVhdG9yPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cIm1iLTFcIj57eyBlbGVtZW50Py5jcmVhdG9yPy5uYW1lIH19PC9wPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+e3sgZWxlbWVudD8uY3JlYXRlZF9hdCB8IGRhdGUgfX08L3NtYWxsPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQWN0aW9ucyBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvbnNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BY3Rpb25zPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICA8YXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uXG4gICAgICAgICAgICAgIFtwcm9kdWN0XT1cImVsZW1lbnQucHJvZHVjdFwiXG4gICAgICAgICAgICAgIFtzdG9ja0lzc3VhbmNlXT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgICAoc2F2ZWQpPVwicmVsb2FkKCk7IGxpc3RVcGRhdGVkLmVtaXQoKVwiXG4gICAgICAgICAgICA+PC9hcHAtc3RvY2staXNzdWUtZm9ybS1idXR0b24+XG4gICAgICAgICAgICA8YXBwLXN0b2NrLWlzc3VhbmNlLWRlbGV0ZS1idXR0b25cbiAgICAgICAgICAgICAgW3N0b2NrSXNzdWFuY2VdPVwiZWxlbWVudFwiXG4gICAgICAgICAgICAgIChkZWxldGVkKT1cInJlbG9hZCgpOyBsaXN0VXBkYXRlZC5lbWl0KClcIlxuICAgICAgICAgICAgPjwvYXBwLXN0b2NrLWlzc3VhbmNlLWRlbGV0ZS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICA8L3RhYmxlPlxuXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJpc1dvcmtpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2VzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VhbmNlcy1saXN0L3N0b2NrLWlzc3VhbmNlcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLWlzc3VhbmNlcy9zdG9jay1pc3N1YW5jZXMtbGlzdC9zdG9jay1pc3N1YW5jZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFHTCxrQ0FBa0MsRUFHbkMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTFELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPNUIsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGtDQUFrQztJQXVCdkU7SUFDQTtJQUNBO0lBQ0E7SUF6QkQsT0FBTyxDQUFNO0lBQ2IsWUFBWSxDQUFVO0lBQ3RCLFVBQVUsQ0FBVTtJQUNwQixLQUFLLEdBQUcsY0FBYyxDQUFDO0lBQ3RCLFdBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVuRSxzQkFBc0IsR0FBYTtRQUNqQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYTtLQUNqRixDQUFDO0lBRUYsWUFBWSxHQUFtQjtRQUM3QixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7S0FDMUUsQ0FBQztJQUVGLGVBQWUsR0FBbUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFbEYsSUFBSSxnQkFBZ0I7UUFDbEIsTUFBTSxlQUFlLEdBQWEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0UsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEdBQUcsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxZQUNVLFdBQXdCLEVBQ3hCLG9CQUEwQyxFQUMxQyxvQkFBMEMsRUFDMUMsY0FBOEI7UUFFdEMsS0FBSyxFQUFFLENBQUM7UUFMQSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBR3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDdkMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2QsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2IsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqQixZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbEIsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFRO1lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUseUVBQXlFO1lBQy9FLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1NBQ3RFLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN0QyxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDNUMsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2hELElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLEVBQUUsU0FBUyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFVO1FBQ3JCLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDbkIsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNsQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuRSxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQy9CLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDL0IsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUNoQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsVUFBd0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM1RSxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FDekMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQ25FLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVc7YUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO2FBQy9DLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBNEI7UUFDM0MsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxhQUFhLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQ3hCO1lBQ0UsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzdELEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7SUFDSixDQUFDO3dHQWxJVSwyQkFBMkI7NEZBQTNCLDJCQUEyQix3T0NwQnhDLHV1UEFnTUE7OzRGRDVLYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCO21MQUszQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29sdW1uQ29uZmlnLFxuICBSZXF1ZXN0SGVscGVyU2VydmljZSxcbiAgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSxcbiAgVGltZWxpbmUsXG4gIFRpbWVsaW5lVmFsdWVcbn0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IFN0b2NrSXNzdWFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvY2staXNzdWFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1pc3N1YW5jZXMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9jay1pc3N1YW5jZXMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b2NrLWlzc3VhbmNlcy1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrSXNzdWFuY2VzTGlzdENvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5TGlzdGluZ0NvbnRyb2xsZXJJbnRlcmZhY2UgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwcm9kdWN0OiBhbnk7XG4gIEBJbnB1dCgpIGlzc3VhYmxlVHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgaXNzdWFibGVJZCE6IG51bWJlcjtcbiAgQElucHV0KCkgbGFiZWwgPSAnU3RvY2sgSXNzdWVzJztcbiAgQE91dHB1dCgpIGxpc3RVcGRhdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGRlZmF1bHRTZWxlY3RlZENvbHVtbnM6IHN0cmluZ1tdID0gW1xuICAgICdubycsICdwcm9kdWN0JywgJ3NrdScsICdkYXRlJywgJ3F1YW50aXR5JywgJ2xvY2F0aW9uJywgJ3JlbGF0ZWQnLCAncGFydGljdWxhcnMnLFxuICBdO1xuXG4gIGNvbHVtbkNvbmZpZzogQ29sdW1uQ29uZmlnW10gPSBbXG4gICAgeyBsYWJlbDogJ0NyZWF0b3InLCBkZWY6ICdjcmVhdG9yJywgaXNTZWxlY3RlZDogZmFsc2UsIGlzRWRpdGFibGU6IHRydWUgfSxcbiAgXTtcblxuICBzZWxlY3RlZENvbHVtbnM6IENvbHVtbkNvbmZpZ1tdID0gdGhpcy5jb2x1bW5Db25maWcuZmlsdGVyKGNvbCA9PiBjb2wuaXNTZWxlY3RlZCk7XG5cbiAgZ2V0IGRpc3BsYXllZENvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHNlbGVjdGVkQ29sdW1uczogc3RyaW5nW10gPSB0aGlzLnNlbGVjdGVkQ29sdW1ucy5tYXAoY29sID0+IGNvbC5kZWYpO1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRTZWxlY3RlZENvbHVtbnMuY29uY2F0KC4uLnNlbGVjdGVkQ29sdW1ucywgJ2FjdGlvbnMnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVxdWVzdEhlbHBlclNlcnZpY2U6IFJlcXVlc3RIZWxwZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvY2tJc3N1YW5jZVNlcnZpY2U6IFN0b2NrSXNzdWFuY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sYXN0UGFnZSA9IDA7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBkdXJhdGlvbjogWycnXSxcbiAgICAgIGRhdGVfZnJvbTogWycnXSxcbiAgICAgIGRhdGVfdG86IFsnJ10sXG4gICAgICBtZWFzdXJlX2lkczogWycnXSxcbiAgICAgIHByb2R1Y3RfaWRzOiBbJyddLFxuICAgICAgY2F0ZWdvcnlfaWRzOiBbJyddLFxuICAgICAgbG9jYXRpb25faWRzOiBbJyddLFxuICAgICAgc2VhcmNoOiBbJyddLFxuICAgICAgc29ydF9ieTogWydkYXRlfGRlc2MnXSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2R1Y3QpIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3Byb2R1Y3RfaWRzJyk/LnNldFZhbHVlKHRoaXMucHJvZHVjdD8uaWQpO1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRpc3BsYXllZENvbHVtbnMuaW5kZXhPZigncHJvZHVjdCcpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUZvcm1XaXRoUXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvRm9ybUNoYW5nZXMoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvUm91dGVDaGFuZ2VzKCk7XG4gIH1cblxuICBsb2FkRGF0YSgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHtcbiAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgIHBlclBhZ2U6IHRoaXMucGVyUGFnZSxcbiAgICAgIHdpdGg6ICdjcmVhdG9yLHByb2R1Y3QubWVhc3VyZSxpc3N1YWJsZS5maXhlZEFzc2V0LHByb2R1Y3QuY2F0ZWdvcmllcyxsb2NhdGlvbicsXG4gICAgICAuLi50aGlzLnJlcXVlc3RIZWxwZXJTZXJ2aWNlLmNvbnZlcnRUb0Zvcm1EYXRhKHRoaXMuZmlsdGVyRm9ybS52YWx1ZSksXG4gICAgfTtcbiAgICBpZiAodGhpcy5pc3N1YWJsZUlkICYmIHRoaXMuaXNzdWFibGVUeXBlKSB7XG4gICAgICBwYXJhbXMuaXNzdWFibGVfaWRzID0gdGhpcy5pc3N1YWJsZUlkO1xuICAgICAgcGFyYW1zLmlzc3VhYmxlX3R5cGVzID0gdGhpcy5pc3N1YWJsZVR5cGU7XG4gICAgfVxuICAgIHRoaXMuaXNXb3JraW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN0b2NrSXNzdWFuY2VTZXJ2aWNlLmluZGV4KHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubW9kZWxzID0gdGhpcy5tb2RlbHMuY29uY2F0KHJlc3BvbnNlPy5kYXRhKTtcbiAgICAgICAgdGhpcy5sYXN0UGFnZSA9IHJlc3BvbnNlPy5sYXN0X3BhZ2U7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblNvcnRDaGFuZ2Uoc29ydDogU29ydCkge1xuICAgIGxldCB7IGFjdGl2ZSwgZGlyZWN0aW9uIH0gPSBzb3J0O1xuICAgIGlmICghYWN0aXZlKSB7XG4gICAgICBhY3RpdmUgPSAnZGF0ZSc7XG4gICAgfVxuICAgIGlmICghZGlyZWN0aW9uKSB7XG4gICAgICBkaXJlY3Rpb24gPSAnZGVzYyc7XG4gICAgICBhY3RpdmUgPSAnZGF0ZSc7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3NvcnRfYnknKS5zZXRWYWx1ZShhY3RpdmUgKyAnfCcgKyBkaXJlY3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb3JtV2l0aFF1ZXJ5UGFyYW1zKCk6IHZvaWQge1xuICAgIHRoaXMucmVxdWVzdEhlbHBlclNlcnZpY2UudXBkYXRlRm9ybVdpdGhRdWVyeVBhcmFtcyh0aGlzLmZpbHRlckZvcm0sIHtcbiAgICAgIHByb2R1Y3RfaWRzOiB7IG11bHRpcGxlOiB0cnVlIH0sXG4gICAgICBtZWFzdXJlX2lkczogeyBtdWx0aXBsZTogdHJ1ZSB9LFxuICAgICAgY2F0ZWdvcnlfaWRzOiB7IG11bHRpcGxlOiB0cnVlIH0sXG4gICAgICBzdXBwbGllcl9pZHM6IHsgbXVsdGlwbGU6IHRydWUgfSxcbiAgICAgIGxvY2F0aW9uX2lkczogeyBtdWx0aXBsZTogdHJ1ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0Zvcm1DaGFuZ2VzKCk6IHZvaWQge1xuICAgICh0aGlzLmZpbHRlckZvcm0gYXMgRm9ybUdyb3VwKS52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoODAwKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0SGVscGVyU2VydmljZS51cGRhdGVRdWVyeVBhcmFtcyhcbiAgICAgICAgICB0aGlzLnJlcXVlc3RIZWxwZXJTZXJ2aWNlLmNvbnZlcnRUb0Zvcm1EYXRhKHRoaXMuZmlsdGVyRm9ybS52YWx1ZSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9Sb3V0ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgb25EdXJhdGlvbkNoYW5nZSh0aW1lbGluZVZhbHVlOiBUaW1lbGluZVZhbHVlKSB7XG4gICAgbGV0IHsgZGF0ZV90bywgZGF0ZV9mcm9tIH0gPSB0aW1lbGluZVZhbHVlO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5wYXRjaFZhbHVlKFxuICAgICAge1xuICAgICAgICBkYXRlX2Zyb206IGRhdGVfZnJvbSA/IG1vbWVudChkYXRlX2Zyb20pLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBcIlwiLFxuICAgICAgICBkYXRlX3RvOiBkYXRlX3RvID8gbW9tZW50KGRhdGVfdG8pLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBcIlwiLFxuICAgICAgfSxcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgKTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkICpuZ0lmPVwiIXByb2R1Y3RcIiBjbGFzcz1cIm1iLTJcIj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICA8aDMgY2xhc3M9XCJtYi0wXCI+e3sgbGFiZWwgfX08L2gzPlxuXG4gICAgICA8YXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uXG4gICAgICAgIGljb249XCJhZGRcIlxuICAgICAgICBbaXNzdWFibGVUeXBlXT1cImlzc3VhYmxlVHlwZVwiXG4gICAgICAgIFtpc3N1YWJsZUlkXT1cImlzc3VhYmxlSWRcIlxuICAgICAgICAoc2F2ZWQpPVwicmVsb2FkKClcIlxuICAgICAgICBjbGFzcz1cIm10LTJcIlxuICAgICAgPjwvYXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uPlxuXG4gICAgICA8YXBwLWNvbHVtbi1zZWxlY3RvclxuICAgICAgICBtb2RlPVwiaWNvblwiIGNsYXNzPVwibWItMiBkLXByaW50LW5vbmVcIiBbY29sdW1uQ29uZmlnc109XCJjb2x1bW5Db25maWdcIiBbKHNlbGVjdGVkQ29sdW1ucyldPVwic2VsZWN0ZWRDb2x1bW5zXCJcbiAgICAgID48L2FwcC1jb2x1bW4tc2VsZWN0b3I+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5TZWFyY2g8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiU2VhcmNoIHByb2R1Y3RzXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCIgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxhcHAtdGltZWxpbmUtZmlsdGVyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJmaWxsXCIgbGFiZWxUZXh0PVwiRGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImR1cmF0aW9uXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkR1cmF0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIiBbZGF0ZUZyb21dPVwiZmlsdGVyRm9ybS52YWx1ZT8uZGF0ZV9mcm9tXCIgW2RhdGVUb109XCJmaWx0ZXJGb3JtLnZhbHVlPy5kYXRlX3RvXCJcbiAgICAgID48L2FwcC10aW1lbGluZS1maWx0ZXI+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5DYXRlZ29yeTwvbWF0LWxhYmVsPlxuICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgYXBpVXJsPVwiYXBpL3Byb2R1Y3QtY2F0ZWdvcmllc1wiIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5X2lkc1wiIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgIDwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+TWVhc3VyZTwvbWF0LWxhYmVsPlxuICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgYXBpVXJsPVwiYXBpL3Byb2R1Y3QtbWVhc3VyZXNcIiBmb3JtQ29udHJvbE5hbWU9XCJtZWFzdXJlX2lkc1wiIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgIDwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+TG9jYXRpb248L21hdC1sYWJlbD5cbiAgICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yXG4gICAgICAgICAgYXBpVXJsPVwiYXBpL2ludmVudG9yeS1sb2NhdGlvbnNcIiBmb3JtQ29udHJvbE5hbWU9XCJsb2NhdGlvbl9pZHNcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuICAgICAgICA8L2FwcC1zZWFyY2hhYmxlLXNlbGVjdG9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Zvcm0+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG5cbjxtYXQtY2FyZD5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgKm5nSWY9XCJwcm9kdWN0XCIgY2xhc3M9XCJtYi0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiB1bmdyb3VwIDwvc3Bhbj5cbiAgICAgIDxoMyBjbGFzcz1cIm1iLTBcIj5TdG9jayBJc3N1ZXM8L2gzPlxuXG4gICAgICA8YXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uXG4gICAgICAgIGNsYXNzPVwibXQtMlwiIFtwcm9kdWN0XT1cInByb2R1Y3RcIiBpY29uPVwiYWRkXCIgKHNhdmVkKT1cInJlbG9hZCgpOyBsaXN0VXBkYXRlZC5lbWl0KClcIlxuICAgICAgPjwvYXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwicC0wXCI+XG4gICAgPHRhYmxlXG4gICAgICBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwibW9kZWxzXCIgY2xhc3M9XCJ3LTEwMFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJTdG9jayBJc3N1YW5jZXNcIlxuICAgICAgaW5maW5pdGVTY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMlwiIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwXCIgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxuICAgICAgbWF0U29ydCAobWF0U29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPCEtLSAjIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibm9cIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4jPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj57eyBpICsgMSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBQcm9kdWN0IENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicHJvZHVjdFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5Qcm9kdWN0PC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0xXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtZGFya1wiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9wcm9kdWN0cycsIGVsZW1lbnQ/LnByb2R1Y3Q/LmlkLCAndmlldyddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZWxlbWVudD8ucHJvZHVjdD8ubmFtZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGFwcC1wcm9kdWN0LWNhdGVnb3J5LWJhZGdlcyBbcHJvZHVjdF09XCJlbGVtZW50Py5wcm9kdWN0XCI+PC9hcHAtcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXM+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBTS1UgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJza3VcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+U0tVPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5wcm9kdWN0Py5za3UgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gRGF0ZSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRhdGVcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+RGF0ZTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8uZGF0ZSB8IGRhdGUgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gTG9jYXRpb24gQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsb2NhdGlvblwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5Mb2NhdGlvbjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1kYXJrXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9sb2NhdGlvbnMnLCBlbGVtZW50Py5sb2NhdGlvbl9pZCwgJ3ZpZXcnXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZWxlbWVudD8ubG9jYXRpb24/LnRpdGxlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gUmVsYXRlZCBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInJlbGF0ZWRcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+UmVsYXRlZDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdJZj1cImVsZW1lbnQ/Lmlzc3VhYmxlXCIgW3JvdXRlckxpbmtdPVwiWycvbWFpbnRlbmFuY2VzJywgZWxlbWVudD8uaXNzdWFibGVfaWQsICd2aWV3J11cIj5cbiAgICAgICAgICAgIE1haW50ZW5hbmNlIGZvciB7eyBlbGVtZW50Py5pc3N1YWJsZT8uZml4ZWRfYXNzZXQ/Lm5hbWUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBRdWFudGl0eSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInF1YW50aXR5XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlF1YW50aXR5PC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5xdWFudGl0eSB9fSB7eyBlbGVtZW50Py5wcm9kdWN0Py5tZWFzdXJlPy50aXRsZSB9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBQdXJjaGFzZSBQcmljZSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInB1cmNoYXNlX3ByaWNlXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlB1cmNoYXNlIFByaWNlPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICB7eyBlbGVtZW50Py5wdXJjaGFzZV9wcmljZSB8IGN1cnJlbmN5IH19XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBUb3RhbCBWYWx1ZSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFtb3VudFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5Ub3RhbCBWYWx1ZTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAge3sgZWxlbWVudD8uYW1vdW50IHwgY3VycmVuY3kgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFBhcnRpY3VsYXJzIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicGFydGljdWxhcnNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5QYXJ0aWN1bGFyczwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8ucGFydGljdWxhcnMgfX08L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gU3VwcGxpZXIgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdXBwbGllclwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5TdXBwbGllcjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAge3sgZWxlbWVudD8uc3VwcGxpZXI/LmNvbXBhbnlfbmFtZSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQ3JlYXRvciBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImNyZWF0b3JcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5DcmVhdG9yPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cIm1iLTFcIj57eyBlbGVtZW50Py5jcmVhdG9yPy5uYW1lIH19PC9wPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+e3sgZWxlbWVudD8uY3JlYXRlZF9hdCB8IGRhdGUgfX08L3NtYWxsPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQWN0aW9ucyBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvbnNcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BY3Rpb25zPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICA8YXBwLXN0b2NrLWlzc3VlLWZvcm0tYnV0dG9uXG4gICAgICAgICAgICAgIFtwcm9kdWN0XT1cImVsZW1lbnQucHJvZHVjdFwiIFtzdG9ja0lzc3VhbmNlXT1cImVsZW1lbnRcIiAoc2F2ZWQpPVwicmVsb2FkKCk7IGxpc3RVcGRhdGVkLmVtaXQoKVwiXG4gICAgICAgICAgICA+PC9hcHAtc3RvY2staXNzdWUtZm9ybS1idXR0b24+XG4gICAgICAgICAgICA8YXBwLXN0b2NrLWlzc3VhbmNlLWRlbGV0ZS1idXR0b25cbiAgICAgICAgICAgICAgW3N0b2NrSXNzdWFuY2VdPVwiZWxlbWVudFwiIChkZWxldGVkKT1cInJlbG9hZCgpOyBsaXN0VXBkYXRlZC5lbWl0KClcIlxuICAgICAgICAgICAgPjwvYXBwLXN0b2NrLWlzc3VhbmNlLWRlbGV0ZS1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICA8L3RhYmxlPlxuXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJpc1dvcmtpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cbiJdfQ==
@@ -1,13 +1,15 @@
1
- import { NgModule } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { StockIssuancesListComponent } from "./stock-issuances-list.component";
4
- import { StockIssueFormModule } from "../stock-issue-form/stock-issue-form.module";
5
- import { InfiniteScrollModule } from "ngx-infinite-scroll";
6
- import { StockIssuanceDeleteButtonModule } from "../stock-issuance-delete-button/stock-issuance-delete-button.module";
7
- import { MaterialModule } from "ngx-techlify-core";
8
- import { MatProgressBarModule } from "@angular/material/progress-bar";
9
- import { RouterModule } from "@angular/router";
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { StockIssuancesListComponent } from './stock-issuances-list.component';
4
+ import { StockIssueFormModule } from '../stock-issue-form/stock-issue-form.module';
5
+ import { InfiniteScrollModule } from 'ngx-infinite-scroll';
6
+ import { StockIssuanceDeleteButtonModule } from '../stock-issuance-delete-button/stock-issuance-delete-button.module';
7
+ import { ColumnSelectorModule, MaterialModule, SearchableSelectorModule, TimelineFilterModule } from 'ngx-techlify-core';
8
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
9
+ import { RouterModule } from '@angular/router';
10
10
  import { TechlifyFilterModule } from '../../techlify-filter/techlify-filter.module';
11
+ import { ReactiveFormsModule } from '@angular/forms';
12
+ import { ProductCategoryBadgesComponent } from "../../product/widgets/product-category-badges/product-category-badges.component";
11
13
  import * as i0 from "@angular/core";
12
14
  export class StockIssuancesListModule {
13
15
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuancesListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -18,7 +20,12 @@ export class StockIssuancesListModule {
18
20
  InfiniteScrollModule,
19
21
  StockIssuanceDeleteButtonModule,
20
22
  MatProgressBarModule,
21
- RouterModule], exports: [StockIssuancesListComponent] });
23
+ RouterModule,
24
+ SearchableSelectorModule,
25
+ TimelineFilterModule,
26
+ ReactiveFormsModule,
27
+ ProductCategoryBadgesComponent,
28
+ ColumnSelectorModule], exports: [StockIssuancesListComponent] });
22
29
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuancesListModule, imports: [CommonModule,
23
30
  MaterialModule,
24
31
  TechlifyFilterModule,
@@ -26,7 +33,11 @@ export class StockIssuancesListModule {
26
33
  InfiniteScrollModule,
27
34
  StockIssuanceDeleteButtonModule,
28
35
  MatProgressBarModule,
29
- RouterModule] });
36
+ RouterModule,
37
+ SearchableSelectorModule,
38
+ TimelineFilterModule,
39
+ ReactiveFormsModule,
40
+ ColumnSelectorModule] });
30
41
  }
31
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssuancesListModule, decorators: [{
32
43
  type: NgModule,
@@ -41,8 +52,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
41
52
  StockIssuanceDeleteButtonModule,
42
53
  MatProgressBarModule,
43
54
  RouterModule,
55
+ SearchableSelectorModule,
56
+ TimelineFilterModule,
57
+ ReactiveFormsModule,
58
+ ProductCategoryBadgesComponent,
59
+ ColumnSelectorModule,
44
60
  ],
45
61
  exports: [StockIssuancesListComponent],
46
62
  }]
47
63
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2VzLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VhbmNlcy1saXN0L3N0b2NrLWlzc3VhbmNlcy1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOztBQWdCcEYsTUFBTSxPQUFPLHdCQUF3Qjt3R0FBeEIsd0JBQXdCO3lHQUF4Qix3QkFBd0IsaUJBYnBCLDJCQUEyQixhQUV4QyxZQUFZO1lBQ1osY0FBYztZQUNkLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLCtCQUErQjtZQUMvQixvQkFBb0I7WUFDcEIsWUFBWSxhQUVKLDJCQUEyQjt5R0FFMUIsd0JBQXdCLFlBWGpDLFlBQVk7WUFDWixjQUFjO1lBQ2Qsb0JBQW9CO1lBQ3BCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsK0JBQStCO1lBQy9CLG9CQUFvQjtZQUNwQixZQUFZOzs0RkFJSCx3QkFBd0I7a0JBZHBDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQzNDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsK0JBQStCO3dCQUMvQixvQkFBb0I7d0JBQ3BCLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgU3RvY2tJc3N1YW5jZXNMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4vc3RvY2staXNzdWFuY2VzLWxpc3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTdG9ja0lzc3VlRm9ybU1vZHVsZSB9IGZyb20gXCIuLi9zdG9jay1pc3N1ZS1mb3JtL3N0b2NrLWlzc3VlLWZvcm0ubW9kdWxlXCI7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbE1vZHVsZSB9IGZyb20gXCJuZ3gtaW5maW5pdGUtc2Nyb2xsXCI7XG5pbXBvcnQgeyBTdG9ja0lzc3VhbmNlRGVsZXRlQnV0dG9uTW9kdWxlIH0gZnJvbSBcIi4uL3N0b2NrLWlzc3VhbmNlLWRlbGV0ZS1idXR0b24vc3RvY2staXNzdWFuY2UtZGVsZXRlLWJ1dHRvbi5tb2R1bGVcIjtcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSBcIm5neC10ZWNobGlmeS1jb3JlXCI7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXJcIjtcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IFRlY2hsaWZ5RmlsdGVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vdGVjaGxpZnktZmlsdGVyL3RlY2hsaWZ5LWZpbHRlci5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTdG9ja0lzc3VhbmNlc0xpc3RDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFRlY2hsaWZ5RmlsdGVyTW9kdWxlLFxuICAgIFN0b2NrSXNzdWVGb3JtTW9kdWxlLFxuICAgIEluZmluaXRlU2Nyb2xsTW9kdWxlLFxuICAgIFN0b2NrSXNzdWFuY2VEZWxldGVCdXR0b25Nb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbU3RvY2tJc3N1YW5jZXNMaXN0Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tJc3N1YW5jZXNMaXN0TW9kdWxlIHt9XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2VzLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VhbmNlcy1saXN0L3N0b2NrLWlzc3VhbmNlcy1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUN0SCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3JCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFDTCw4QkFBOEIsRUFDL0IsTUFBTSxpRkFBaUYsQ0FBQzs7QUFxQnpGLE1BQU0sT0FBTyx3QkFBd0I7d0dBQXhCLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLGlCQWxCcEIsMkJBQTJCLGFBRXhDLFlBQVk7WUFDWixjQUFjO1lBQ2Qsb0JBQW9CO1lBQ3BCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsK0JBQStCO1lBQy9CLG9CQUFvQjtZQUNwQixZQUFZO1lBQ1osd0JBQXdCO1lBQ3hCLG9CQUFvQjtZQUNwQixtQkFBbUI7WUFDbkIsOEJBQThCO1lBQzlCLG9CQUFvQixhQUVaLDJCQUEyQjt5R0FFMUIsd0JBQXdCLFlBaEJqQyxZQUFZO1lBQ1osY0FBYztZQUNkLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLCtCQUErQjtZQUMvQixvQkFBb0I7WUFDcEIsWUFBWTtZQUNaLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIsbUJBQW1CO1lBRW5CLG9CQUFvQjs7NEZBSVgsd0JBQXdCO2tCQW5CcEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDM0MsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQiwrQkFBK0I7d0JBQy9CLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQiw4QkFBOEI7d0JBQzlCLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTdG9ja0lzc3VhbmNlc0xpc3RDb21wb25lbnQgfSBmcm9tICcuL3N0b2NrLWlzc3VhbmNlcy1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdG9ja0lzc3VlRm9ybU1vZHVsZSB9IGZyb20gJy4uL3N0b2NrLWlzc3VlLWZvcm0vc3RvY2staXNzdWUtZm9ybS5tb2R1bGUnO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxNb2R1bGUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IFN0b2NrSXNzdWFuY2VEZWxldGVCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9zdG9jay1pc3N1YW5jZS1kZWxldGUtYnV0dG9uL3N0b2NrLWlzc3VhbmNlLWRlbGV0ZS1idXR0b24ubW9kdWxlJztcbmltcG9ydCB7XG4gIENvbHVtblNlbGVjdG9yTW9kdWxlLFxuICBNYXRlcmlhbE1vZHVsZSxcbiAgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLFxuICBUaW1lbGluZUZpbHRlck1vZHVsZVxufSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVGVjaGxpZnlGaWx0ZXJNb2R1bGUgfSBmcm9tICcuLi8uLi90ZWNobGlmeS1maWx0ZXIvdGVjaGxpZnktZmlsdGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgUHJvZHVjdENhdGVnb3J5QmFkZ2VzQ29tcG9uZW50XG59IGZyb20gXCIuLi8uLi9wcm9kdWN0L3dpZGdldHMvcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMvcHJvZHVjdC1jYXRlZ29yeS1iYWRnZXMuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1N0b2NrSXNzdWFuY2VzTGlzdENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgVGVjaGxpZnlGaWx0ZXJNb2R1bGUsXG4gICAgU3RvY2tJc3N1ZUZvcm1Nb2R1bGUsXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGUsXG4gICAgU3RvY2tJc3N1YW5jZURlbGV0ZUJ1dHRvbk1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLFxuICAgIFRpbWVsaW5lRmlsdGVyTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgUHJvZHVjdENhdGVnb3J5QmFkZ2VzQ29tcG9uZW50LFxuICAgIENvbHVtblNlbGVjdG9yTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbU3RvY2tJc3N1YW5jZXNMaXN0Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tJc3N1YW5jZXNMaXN0TW9kdWxlIHt9XG4iXX0=
@@ -1,11 +1,11 @@
1
- import { NgModule } from "@angular/core";
2
- import { RouterModule } from "@angular/router";
3
- import { StockIssuancesListComponent } from "./stock-issuances-list/stock-issuances-list.component";
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { StockIssuancesListComponent } from './stock-issuances-list/stock-issuances-list.component';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/router";
6
6
  const routes = [
7
7
  {
8
- path: "",
8
+ path: '',
9
9
  component: StockIssuancesListComponent,
10
10
  },
11
11
  ];
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
21
21
  exports: [RouterModule],
22
22
  }]
23
23
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2VzLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VhbmNlcy1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7O0FBRXBHLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsMkJBQTJCO0tBQ3ZDO0NBQ0YsQ0FBQztBQU1GLE1BQU0sT0FBTywyQkFBMkI7d0dBQTNCLDJCQUEyQjt5R0FBM0IsMkJBQTJCLHdDQUY1QixZQUFZO3lHQUVYLDJCQUEyQixZQUg1QixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzs0RkFFWCwyQkFBMkI7a0JBSnZDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgU3RvY2tJc3N1YW5jZXNMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4vc3RvY2staXNzdWFuY2VzLWxpc3Qvc3RvY2staXNzdWFuY2VzLWxpc3QuY29tcG9uZW50XCI7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogXCJcIixcbiAgICBjb21wb25lbnQ6IFN0b2NrSXNzdWFuY2VzTGlzdENvbXBvbmVudCxcbiAgfSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTdG9ja0lzc3VhbmNlc1JvdXRpbmdNb2R1bGUge31cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWFuY2VzLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VhbmNlcy1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7O0FBRXBHLE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsMkJBQTJCO0tBQ3ZDO0NBQ0YsQ0FBQztBQU1GLE1BQU0sT0FBTywyQkFBMkI7d0dBQTNCLDJCQUEyQjt5R0FBM0IsMkJBQTJCLHdDQUY1QixZQUFZO3lHQUVYLDJCQUEyQixZQUg1QixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzs0RkFFWCwyQkFBMkI7a0JBSnZDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9ja0lzc3VhbmNlc0xpc3RDb21wb25lbnQgfSBmcm9tICcuL3N0b2NrLWlzc3VhbmNlcy1saXN0L3N0b2NrLWlzc3VhbmNlcy1saXN0LmNvbXBvbmVudCc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogJycsXG4gICAgY29tcG9uZW50OiBTdG9ja0lzc3VhbmNlc0xpc3RDb21wb25lbnQsXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tJc3N1YW5jZXNSb3V0aW5nTW9kdWxlIHt9XG4iXX0=