@hitsoft/kadooglu-keops 0.0.2 → 0.0.4

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 (306) hide show
  1. package/config/enums/route-names.d.ts +16 -1
  2. package/esm2020/config/enums/route-names.mjs +1 -1
  3. package/esm2020/config/providers/route.provider.mjs +141 -4
  4. package/esm2020/lib/features/bl-tracking/components/bl-tracking-form.component.mjs +82 -0
  5. package/esm2020/lib/features/bl-tracking/components/bl-tracking.component.mjs +65 -0
  6. package/esm2020/lib/features/bl-tracking/hit-bl-tracking-routing.module.mjs +29 -0
  7. package/esm2020/lib/features/bl-tracking/hit-bl-tracking.module.mjs +58 -0
  8. package/esm2020/lib/features/carriers/components/carrier-form.component.mjs +78 -0
  9. package/esm2020/lib/features/carriers/components/carriers.component.mjs +66 -0
  10. package/esm2020/lib/features/carriers/hit-carriers-routing.module.mjs +29 -0
  11. package/esm2020/lib/features/carriers/hit-carriers.module.mjs +58 -0
  12. package/esm2020/lib/features/container-loading-counts/components/container-loading-counts.component.mjs +2 -2
  13. package/esm2020/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.mjs +6 -5
  14. package/esm2020/lib/features/cost-calculation/components/cost-calculation-inputs.component.mjs +16 -12
  15. package/esm2020/lib/features/cost-calculation/components/cost-calculation-results.component.mjs +3 -3
  16. package/esm2020/lib/features/cost-calculation/components/cost-calculation.component.mjs +90 -39
  17. package/esm2020/lib/features/cost-calculation/engine/currency.utils.mjs +10 -10
  18. package/esm2020/lib/features/cost-calculation/engine/formulas.mjs +10 -10
  19. package/esm2020/lib/features/cost-calculation/engine/item-resolver.mjs +16 -16
  20. package/esm2020/lib/features/cost-calculation/engine/stage-builder.mjs +11 -10
  21. package/esm2020/lib/features/cost-calculation/hit-cost-calculation.module.mjs +7 -3
  22. package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.mjs +3 -7
  23. package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.mjs +4 -14
  24. package/esm2020/lib/features/cost-parameters/components/cost-parameter-form.component.mjs +22 -39
  25. package/esm2020/lib/features/cost-parameters/components/cost-parameters.component.mjs +19 -15
  26. package/esm2020/lib/features/destination-ports/components/destination-port-form.component.mjs +86 -0
  27. package/esm2020/lib/features/destination-ports/components/destination-ports.component.mjs +74 -0
  28. package/esm2020/lib/features/destination-ports/hit-destination-ports-routing.module.mjs +29 -0
  29. package/esm2020/lib/features/destination-ports/hit-destination-ports.module.mjs +58 -0
  30. package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.mjs +80 -0
  31. package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.mjs +65 -0
  32. package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.mjs +29 -0
  33. package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.mjs +58 -0
  34. package/esm2020/lib/features/freight-offers/components/freight-offer-copy.component.mjs +67 -0
  35. package/esm2020/lib/features/freight-offers/components/freight-offer-form.component.mjs +181 -0
  36. package/esm2020/lib/features/freight-offers/components/freight-offers.component.mjs +159 -0
  37. package/esm2020/lib/features/freight-offers/hit-freight-offers-routing.module.mjs +29 -0
  38. package/esm2020/lib/features/freight-offers/hit-freight-offers.module.mjs +62 -0
  39. package/esm2020/lib/features/incoterms/components/incoterm-form.component.mjs +81 -0
  40. package/esm2020/lib/features/incoterms/components/incoterms.component.mjs +65 -0
  41. package/esm2020/lib/features/incoterms/hit-incoterms-routing.module.mjs +29 -0
  42. package/esm2020/lib/features/incoterms/hit-incoterms.module.mjs +58 -0
  43. package/esm2020/lib/features/index.mjs +29 -1
  44. package/esm2020/lib/features/item-classifications/components/item-classifications.component.mjs +199 -0
  45. package/esm2020/lib/features/item-classifications/hit-item-classifications-routing.module.mjs +29 -0
  46. package/esm2020/lib/features/item-classifications/hit-item-classifications.module.mjs +60 -0
  47. package/esm2020/lib/features/item-package-groups/components/item-package-group-form.component.mjs +78 -0
  48. package/esm2020/lib/features/item-package-groups/components/item-package-groups.component.mjs +69 -0
  49. package/esm2020/lib/features/item-package-groups/hit-item-package-groups-routing.module.mjs +29 -0
  50. package/esm2020/lib/features/item-package-groups/hit-item-package-groups.module.mjs +58 -0
  51. package/esm2020/lib/features/item-package-types/components/item-package-type-form.component.mjs +78 -0
  52. package/esm2020/lib/features/item-package-types/components/item-package-types.component.mjs +69 -0
  53. package/esm2020/lib/features/item-package-types/hit-item-package-types-routing.module.mjs +29 -0
  54. package/esm2020/lib/features/item-package-types/hit-item-package-types.module.mjs +58 -0
  55. package/esm2020/lib/features/item-product-types/components/item-product-type-form.component.mjs +78 -0
  56. package/esm2020/lib/features/item-product-types/components/item-product-types.component.mjs +69 -0
  57. package/esm2020/lib/features/item-product-types/hit-item-product-types-routing.module.mjs +29 -0
  58. package/esm2020/lib/features/item-product-types/hit-item-product-types.module.mjs +58 -0
  59. package/esm2020/lib/features/lines/components/line-form.component.mjs +78 -0
  60. package/esm2020/lib/features/lines/components/lines.component.mjs +66 -0
  61. package/esm2020/lib/features/lines/hit-lines-routing.module.mjs +29 -0
  62. package/esm2020/lib/features/lines/hit-lines.module.mjs +58 -0
  63. package/esm2020/lib/features/packaging-prices/components/packaging-price-form.component.mjs +4 -9
  64. package/esm2020/lib/features/packaging-prices/packaging-price-calculator.mjs +1 -1
  65. package/esm2020/lib/features/pos/components/pos-form.component.mjs +77 -0
  66. package/esm2020/lib/features/pos/components/pos.component.mjs +65 -0
  67. package/esm2020/lib/features/pos/hit-pos-routing.module.mjs +29 -0
  68. package/esm2020/lib/features/pos/hit-pos.module.mjs +58 -0
  69. package/esm2020/lib/features/price-parameter-types/components/price-parameter-types.component.mjs +3 -3
  70. package/esm2020/lib/features/price-parameters/components/price-parameter-form-cost-items.component.mjs +32 -0
  71. package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.mjs +52 -0
  72. package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.mjs +84 -0
  73. package/esm2020/lib/features/price-parameters/components/price-parameter-form-items.component.mjs +43 -0
  74. package/esm2020/lib/features/price-parameters/components/price-parameter-form-price-lists.component.mjs +42 -0
  75. package/esm2020/lib/features/price-parameters/components/price-parameter-form.component.mjs +320 -0
  76. package/esm2020/lib/features/price-parameters/components/price-parameter-price-update-preview-modal.component.mjs +26 -0
  77. package/esm2020/lib/features/price-parameters/components/price-parameters.component.mjs +85 -0
  78. package/esm2020/lib/features/price-parameters/hit-price-parameters-routing.module.mjs +46 -0
  79. package/esm2020/lib/features/price-parameters/hit-price-parameters.module.mjs +96 -0
  80. package/esm2020/lib/features/price-parameters/price-parameter-cost-match.service.mjs +21 -0
  81. package/esm2020/lib/features/price-parameters/price-parameter-form-data.service.mjs +49 -0
  82. package/esm2020/lib/features/price-parameters/price-parameter-l10n-helper.mjs +7 -0
  83. package/esm2020/lib/features/price-parameters/price-parameter-lookups.service.mjs +27 -0
  84. package/esm2020/lib/features/price-parameters/price-parameter-price-update.service.mjs +119 -0
  85. package/esm2020/lib/features/settings/components/cost-settings.component.mjs +8 -4
  86. package/esm2020/lib/kadooglu-keops-routing.module.mjs +27 -1
  87. package/esm2020/lib/shared/amount-currency-input/amount-currency-input.component.mjs +68 -0
  88. package/esm2020/lib/shared/cost-item-classification.utils.mjs +15 -0
  89. package/esm2020/lib/shared/cost-item-rows.builder.mjs +40 -0
  90. package/esm2020/lib/shared/pipes/resolve-code-name.pipe.mjs +16 -0
  91. package/esm2020/lib/shared/shared-ui.module.mjs +20 -0
  92. package/esm2020/lib/utils/business-region.utils.mjs +12 -0
  93. package/esm2020/lib/utils/currency.utils.mjs +5 -1
  94. package/esm2020/lib/utils/exchange-rate.utils.mjs +12 -0
  95. package/esm2020/proxy/bl-tracking/dtos/index.mjs +2 -0
  96. package/esm2020/proxy/bl-tracking/dtos/models.mjs +2 -0
  97. package/esm2020/proxy/business-partners/dtos/index.mjs +2 -0
  98. package/esm2020/proxy/business-partners/dtos/models.mjs +2 -0
  99. package/esm2020/proxy/business-region.enum.mjs +9 -0
  100. package/esm2020/proxy/carriers/dtos/index.mjs +2 -0
  101. package/esm2020/proxy/carriers/dtos/models.mjs +2 -0
  102. package/esm2020/proxy/container-loading-counts/dtos/models.mjs +1 -1
  103. package/esm2020/proxy/controllers/bl-tracking.service.mjs +36 -0
  104. package/esm2020/proxy/controllers/business-partner.service.mjs +22 -0
  105. package/esm2020/proxy/controllers/carrier.service.mjs +36 -0
  106. package/esm2020/proxy/controllers/container-loading-count.service.mjs +5 -5
  107. package/esm2020/proxy/controllers/cost-parameter.service.mjs +1 -5
  108. package/esm2020/proxy/controllers/destination-port.service.mjs +44 -0
  109. package/esm2020/proxy/controllers/fob-inland-definition.service.mjs +36 -0
  110. package/esm2020/proxy/controllers/freight-offer.service.mjs +57 -0
  111. package/esm2020/proxy/controllers/incoterm.service.mjs +36 -0
  112. package/esm2020/proxy/controllers/index.mjs +16 -1
  113. package/esm2020/proxy/controllers/item-classification.service.mjs +42 -0
  114. package/esm2020/proxy/controllers/item-package-group.service.mjs +40 -0
  115. package/esm2020/proxy/controllers/item-package-type.service.mjs +40 -0
  116. package/esm2020/proxy/controllers/item-product-type.service.mjs +40 -0
  117. package/esm2020/proxy/controllers/item.service.mjs +7 -3
  118. package/esm2020/proxy/controllers/line.service.mjs +36 -0
  119. package/esm2020/proxy/controllers/pos.service.mjs +36 -0
  120. package/esm2020/proxy/controllers/price-list.service.mjs +28 -0
  121. package/esm2020/proxy/controllers/price-parameter.service.mjs +45 -0
  122. package/esm2020/proxy/cost-parameter-categories/dtos/models.mjs +1 -1
  123. package/esm2020/proxy/cost-parameters/dtos/models.mjs +1 -1
  124. package/esm2020/proxy/destination-ports/dtos/index.mjs +2 -0
  125. package/esm2020/proxy/destination-ports/dtos/models.mjs +2 -0
  126. package/esm2020/proxy/fob-inland-definitions/dtos/index.mjs +2 -0
  127. package/esm2020/proxy/fob-inland-definitions/dtos/models.mjs +2 -0
  128. package/esm2020/proxy/freight-offers/dtos/index.mjs +2 -0
  129. package/esm2020/proxy/freight-offers/dtos/models.mjs +2 -0
  130. package/esm2020/proxy/incoterms/dtos/index.mjs +2 -0
  131. package/esm2020/proxy/incoterms/dtos/models.mjs +2 -0
  132. package/esm2020/proxy/item-classifications/dtos/index.mjs +2 -0
  133. package/esm2020/proxy/item-classifications/dtos/models.mjs +2 -0
  134. package/esm2020/proxy/item-package-groups/dtos/index.mjs +2 -0
  135. package/esm2020/proxy/item-package-groups/dtos/models.mjs +2 -0
  136. package/esm2020/proxy/item-package-types/dtos/index.mjs +2 -0
  137. package/esm2020/proxy/item-package-types/dtos/models.mjs +2 -0
  138. package/esm2020/proxy/item-product-types/dtos/index.mjs +2 -0
  139. package/esm2020/proxy/item-product-types/dtos/models.mjs +2 -0
  140. package/esm2020/proxy/lines/dtos/index.mjs +2 -0
  141. package/esm2020/proxy/lines/dtos/models.mjs +2 -0
  142. package/esm2020/proxy/pos/dtos/index.mjs +2 -0
  143. package/esm2020/proxy/pos/dtos/models.mjs +2 -0
  144. package/esm2020/proxy/price-lists/dtos/index.mjs +2 -0
  145. package/esm2020/proxy/price-lists/dtos/models.mjs +2 -0
  146. package/esm2020/proxy/price-parameters/dtos/index.mjs +2 -0
  147. package/esm2020/proxy/price-parameters/dtos/models.mjs +2 -0
  148. package/esm2020/proxy/price-parameters/price-parameter-status.enum.mjs +9 -0
  149. package/esm2020/proxy/public-api.mjs +18 -2
  150. package/esm2020/proxy/settings/models.mjs +1 -1
  151. package/fesm2015/hitsoft-kadooglu-keops-config.mjs +140 -3
  152. package/fesm2015/hitsoft-kadooglu-keops-config.mjs.map +1 -1
  153. package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs +556 -21
  154. package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs.map +1 -1
  155. package/fesm2015/hitsoft-kadooglu-keops.mjs +4510 -763
  156. package/fesm2015/hitsoft-kadooglu-keops.mjs.map +1 -1
  157. package/fesm2020/hitsoft-kadooglu-keops-config.mjs +140 -3
  158. package/fesm2020/hitsoft-kadooglu-keops-config.mjs.map +1 -1
  159. package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs +556 -21
  160. package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs.map +1 -1
  161. package/fesm2020/hitsoft-kadooglu-keops.mjs +4462 -732
  162. package/fesm2020/hitsoft-kadooglu-keops.mjs.map +1 -1
  163. package/lib/features/bl-tracking/components/bl-tracking-form.component.d.ts +24 -0
  164. package/lib/features/bl-tracking/components/bl-tracking.component.d.ts +22 -0
  165. package/lib/features/bl-tracking/hit-bl-tracking-routing.module.d.ts +7 -0
  166. package/lib/features/bl-tracking/hit-bl-tracking.module.d.ts +18 -0
  167. package/lib/features/carriers/components/carrier-form.component.d.ts +24 -0
  168. package/lib/features/carriers/components/carriers.component.d.ts +22 -0
  169. package/lib/features/carriers/hit-carriers-routing.module.d.ts +7 -0
  170. package/lib/features/carriers/hit-carriers.module.d.ts +18 -0
  171. package/lib/features/container-loading-counts/components/container-loading-counts.component.d.ts +2 -2
  172. package/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.d.ts +1 -1
  173. package/lib/features/cost-calculation/components/cost-calculation-inputs.component.d.ts +10 -7
  174. package/lib/features/cost-calculation/components/cost-calculation.component.d.ts +16 -8
  175. package/lib/features/cost-calculation/engine/currency.utils.d.ts +2 -2
  176. package/lib/features/cost-calculation/engine/formulas.d.ts +2 -2
  177. package/lib/features/cost-calculation/hit-cost-calculation.module.d.ts +2 -1
  178. package/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.d.ts +0 -1
  179. package/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.d.ts +1 -5
  180. package/lib/features/cost-parameters/components/cost-parameter-form.component.d.ts +10 -7
  181. package/lib/features/cost-parameters/components/cost-parameters.component.d.ts +6 -6
  182. package/lib/features/destination-ports/components/destination-port-form.component.d.ts +25 -0
  183. package/lib/features/destination-ports/components/destination-ports.component.d.ts +24 -0
  184. package/lib/features/destination-ports/hit-destination-ports-routing.module.d.ts +7 -0
  185. package/lib/features/destination-ports/hit-destination-ports.module.d.ts +18 -0
  186. package/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.d.ts +24 -0
  187. package/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.d.ts +22 -0
  188. package/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.d.ts +7 -0
  189. package/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.d.ts +18 -0
  190. package/lib/features/freight-offers/components/freight-offer-copy.component.d.ts +22 -0
  191. package/lib/features/freight-offers/components/freight-offer-form.component.d.ts +49 -0
  192. package/lib/features/freight-offers/components/freight-offers.component.d.ts +47 -0
  193. package/lib/features/freight-offers/hit-freight-offers-routing.module.d.ts +7 -0
  194. package/lib/features/freight-offers/hit-freight-offers.module.d.ts +19 -0
  195. package/lib/features/incoterms/components/incoterm-form.component.d.ts +24 -0
  196. package/lib/features/incoterms/components/incoterms.component.d.ts +22 -0
  197. package/lib/features/incoterms/hit-incoterms-routing.module.d.ts +7 -0
  198. package/lib/features/incoterms/hit-incoterms.module.d.ts +18 -0
  199. package/lib/features/index.d.ts +21 -0
  200. package/lib/features/item-classifications/components/item-classifications.component.d.ts +66 -0
  201. package/lib/features/item-classifications/hit-item-classifications-routing.module.d.ts +7 -0
  202. package/lib/features/item-classifications/hit-item-classifications.module.d.ts +17 -0
  203. package/lib/features/item-package-groups/components/item-package-group-form.component.d.ts +24 -0
  204. package/lib/features/item-package-groups/components/item-package-groups.component.d.ts +22 -0
  205. package/lib/features/item-package-groups/hit-item-package-groups-routing.module.d.ts +7 -0
  206. package/lib/features/item-package-groups/hit-item-package-groups.module.d.ts +18 -0
  207. package/lib/features/item-package-types/components/item-package-type-form.component.d.ts +24 -0
  208. package/lib/features/item-package-types/components/item-package-types.component.d.ts +22 -0
  209. package/lib/features/item-package-types/hit-item-package-types-routing.module.d.ts +7 -0
  210. package/lib/features/item-package-types/hit-item-package-types.module.d.ts +18 -0
  211. package/lib/features/item-product-types/components/item-product-type-form.component.d.ts +24 -0
  212. package/lib/features/item-product-types/components/item-product-types.component.d.ts +22 -0
  213. package/lib/features/item-product-types/hit-item-product-types-routing.module.d.ts +7 -0
  214. package/lib/features/item-product-types/hit-item-product-types.module.d.ts +18 -0
  215. package/lib/features/lines/components/line-form.component.d.ts +24 -0
  216. package/lib/features/lines/components/lines.component.d.ts +22 -0
  217. package/lib/features/lines/hit-lines-routing.module.d.ts +7 -0
  218. package/lib/features/lines/hit-lines.module.d.ts +18 -0
  219. package/lib/features/pos/components/pos-form.component.d.ts +24 -0
  220. package/lib/features/pos/components/pos.component.d.ts +22 -0
  221. package/lib/features/pos/hit-pos-routing.module.d.ts +7 -0
  222. package/lib/features/pos/hit-pos.module.d.ts +18 -0
  223. package/lib/features/price-parameters/components/price-parameter-form-cost-items.component.d.ts +15 -0
  224. package/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.d.ts +24 -0
  225. package/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.d.ts +22 -0
  226. package/lib/features/price-parameters/components/price-parameter-form-items.component.d.ts +15 -0
  227. package/lib/features/price-parameters/components/price-parameter-form-price-lists.component.d.ts +15 -0
  228. package/lib/features/price-parameters/components/price-parameter-form.component.d.ts +77 -0
  229. package/lib/features/price-parameters/components/price-parameter-price-update-preview-modal.component.d.ts +11 -0
  230. package/lib/features/price-parameters/components/price-parameters.component.d.ts +30 -0
  231. package/lib/features/price-parameters/hit-price-parameters-routing.module.d.ts +7 -0
  232. package/lib/features/price-parameters/hit-price-parameters.module.d.ts +25 -0
  233. package/lib/features/price-parameters/price-parameter-cost-match.service.d.ts +10 -0
  234. package/lib/features/price-parameters/price-parameter-form-data.service.d.ts +25 -0
  235. package/lib/features/price-parameters/price-parameter-l10n-helper.d.ts +2 -0
  236. package/lib/features/price-parameters/price-parameter-lookups.service.d.ts +15 -0
  237. package/lib/features/price-parameters/price-parameter-price-update.service.d.ts +30 -0
  238. package/lib/shared/amount-currency-input/amount-currency-input.component.d.ts +23 -0
  239. package/lib/shared/cost-item-classification.utils.d.ts +11 -0
  240. package/lib/shared/cost-item-rows.builder.d.ts +11 -0
  241. package/lib/shared/pipes/resolve-code-name.pipe.d.ts +11 -0
  242. package/lib/shared/shared-ui.module.d.ts +10 -0
  243. package/lib/utils/business-region.utils.d.ts +7 -0
  244. package/lib/utils/currency.utils.d.ts +2 -0
  245. package/lib/utils/exchange-rate.utils.d.ts +2 -0
  246. package/package.json +1 -1
  247. package/proxy/bl-tracking/dtos/index.d.ts +1 -0
  248. package/proxy/bl-tracking/dtos/models.d.ts +25 -0
  249. package/proxy/business-partners/dtos/index.d.ts +1 -0
  250. package/proxy/business-partners/dtos/models.d.ts +4 -0
  251. package/proxy/business-region.enum.d.ts +6 -0
  252. package/proxy/carriers/dtos/index.d.ts +1 -0
  253. package/proxy/carriers/dtos/models.d.ts +10 -0
  254. package/proxy/container-loading-counts/dtos/models.d.ts +1 -1
  255. package/proxy/controllers/bl-tracking.service.d.ts +14 -0
  256. package/proxy/controllers/business-partner.service.d.ts +11 -0
  257. package/proxy/controllers/carrier.service.d.ts +14 -0
  258. package/proxy/controllers/container-loading-count.service.d.ts +2 -2
  259. package/proxy/controllers/cost-parameter.service.d.ts +1 -2
  260. package/proxy/controllers/destination-port.service.d.ts +17 -0
  261. package/proxy/controllers/fob-inland-definition.service.d.ts +14 -0
  262. package/proxy/controllers/freight-offer.service.d.ts +19 -0
  263. package/proxy/controllers/incoterm.service.d.ts +14 -0
  264. package/proxy/controllers/index.d.ts +15 -0
  265. package/proxy/controllers/item-classification.service.d.ts +17 -0
  266. package/proxy/controllers/item-package-group.service.d.ts +15 -0
  267. package/proxy/controllers/item-package-type.service.d.ts +15 -0
  268. package/proxy/controllers/item-product-type.service.d.ts +15 -0
  269. package/proxy/controllers/item.service.d.ts +3 -1
  270. package/proxy/controllers/line.service.d.ts +14 -0
  271. package/proxy/controllers/pos.service.d.ts +14 -0
  272. package/proxy/controllers/price-list.service.d.ts +13 -0
  273. package/proxy/controllers/price-parameter.service.d.ts +16 -0
  274. package/proxy/cost-parameter-categories/dtos/models.d.ts +0 -4
  275. package/proxy/cost-parameters/dtos/models.d.ts +4 -11
  276. package/proxy/destination-ports/dtos/index.d.ts +1 -0
  277. package/proxy/destination-ports/dtos/models.d.ts +19 -0
  278. package/proxy/fob-inland-definitions/dtos/index.d.ts +1 -0
  279. package/proxy/fob-inland-definitions/dtos/models.d.ts +19 -0
  280. package/proxy/freight-offers/dtos/index.d.ts +1 -0
  281. package/proxy/freight-offers/dtos/models.d.ts +66 -0
  282. package/proxy/incoterms/dtos/index.d.ts +1 -0
  283. package/proxy/incoterms/dtos/models.d.ts +22 -0
  284. package/proxy/item-classifications/dtos/index.d.ts +1 -0
  285. package/proxy/item-classifications/dtos/models.d.ts +34 -0
  286. package/proxy/item-package-groups/dtos/index.d.ts +1 -0
  287. package/proxy/item-package-groups/dtos/models.d.ts +13 -0
  288. package/proxy/item-package-types/dtos/index.d.ts +1 -0
  289. package/proxy/item-package-types/dtos/models.d.ts +13 -0
  290. package/proxy/item-product-types/dtos/index.d.ts +1 -0
  291. package/proxy/item-product-types/dtos/models.d.ts +13 -0
  292. package/proxy/lines/dtos/index.d.ts +1 -0
  293. package/proxy/lines/dtos/models.d.ts +10 -0
  294. package/proxy/pos/dtos/index.d.ts +1 -0
  295. package/proxy/pos/dtos/models.d.ts +10 -0
  296. package/proxy/price-lists/dtos/index.d.ts +1 -0
  297. package/proxy/price-lists/dtos/models.d.ts +10 -0
  298. package/proxy/price-parameters/dtos/index.d.ts +1 -0
  299. package/proxy/price-parameters/dtos/models.d.ts +104 -0
  300. package/proxy/price-parameters/price-parameter-status.enum.d.ts +6 -0
  301. package/proxy/public-api.d.ts +17 -1
  302. package/proxy/settings/models.d.ts +1 -0
  303. package/esm2020/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.mjs +0 -9
  304. package/esm2020/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.mjs +0 -11
  305. package/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.d.ts +0 -2
  306. package/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.d.ts +0 -8
@@ -1,23 +1,27 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { CostItemCalculationType, Currency, } from '@hitsoft/kadooglu-keops/proxy';
3
- import { CURRENCY_OPTIONS } from '../../../utils/currency.utils';
2
+ import { Currency } from '@hitsoft/kadooglu-keops/proxy';
3
+ import { CURRENCY_OPTIONS, CURRENCY_OPTIONS_TRY_USD } from '../../../utils/currency.utils';
4
+ import { isPackagingCostItem, isRateCostItem } from '../../../shared/cost-item-classification.utils';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
6
7
  import * as i2 from "@angular/forms";
7
8
  import * as i3 from "devextreme-angular";
8
9
  import * as i4 from "devextreme-angular/core";
9
- import * as i5 from "@abp/ng.core";
10
+ import * as i5 from "../../../shared/amount-currency-input/amount-currency-input.component";
11
+ import * as i6 from "@abp/ng.core";
10
12
  export class CostCalculationInputsComponent {
11
13
  constructor() {
12
- this.RateType = CostItemCalculationType.Rate;
14
+ this.isRate = isRateCostItem;
15
+ this.isPackaging = isPackagingCostItem;
13
16
  this.currencyOptions = CURRENCY_OPTIONS;
17
+ this.tryUsdCurrencyOptions = CURRENCY_OPTIONS_TRY_USD;
14
18
  this.itemsDataSource = null;
15
19
  this.parameters = [];
16
20
  this.stages = [];
17
21
  this.selectedItemCode = null;
18
22
  this.selectedItemCodeChange = new EventEmitter();
19
- this.selectedParameterCode = null;
20
- this.selectedParameterCodeChange = new EventEmitter();
23
+ this.selectedParameterDocEntry = null;
24
+ this.selectedParameterDocEntryChange = new EventEmitter();
21
25
  this.rawOilPrice = 0;
22
26
  this.rawOilPriceChange = new EventEmitter();
23
27
  this.rawOilCurrency = Currency.USD;
@@ -37,7 +41,7 @@ export class CostCalculationInputsComponent {
37
41
  this.itemChange.emit();
38
42
  }
39
43
  onParameterSelected() {
40
- this.selectedParameterCodeChange.emit(this.selectedParameterCode);
44
+ this.selectedParameterDocEntryChange.emit(this.selectedParameterDocEntry);
41
45
  this.parameterChange.emit();
42
46
  }
43
47
  onRawOilPriceChange() {
@@ -58,10 +62,10 @@ export class CostCalculationInputsComponent {
58
62
  }
59
63
  }
60
64
  CostCalculationInputsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationInputsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- CostCalculationInputsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationInputsComponent, selector: "lib-cost-calculation-inputs", inputs: { itemsDataSource: "itemsDataSource", itemDisplayExpr: "itemDisplayExpr", parameters: "parameters", parameterDisplayExpr: "parameterDisplayExpr", stages: "stages", selectedItemCode: "selectedItemCode", selectedParameterCode: "selectedParameterCode", rawOilPrice: "rawOilPrice", rawOilCurrency: "rawOilCurrency", systemRateUsd: "systemRateUsd", systemRateEur: "systemRateEur", rateUsd: "rateUsd", rateEur: "rateEur" }, outputs: { selectedItemCodeChange: "selectedItemCodeChange", selectedParameterCodeChange: "selectedParameterCodeChange", rawOilPriceChange: "rawOilPriceChange", rawOilCurrencyChange: "rawOilCurrencyChange", rateUsdChange: "rateUsdChange", rateEurChange: "rateEurChange", itemChange: "itemChange", parameterChange: "parameterChange", recalc: "recalc" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:CostParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterCode\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"rawOilPrice\" (ngModelChange)=\"onRawOilPriceChange()\" />\r\n <select\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"rawOilCurrency\"\r\n (ngModelChange)=\"onRawOilCurrencyChange()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\" *ngIf=\"item.calculationType === RateType\">%</span>\r\n <select\r\n *ngIf=\"item.calculationType !== RateType\"\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"item.currency\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i5.LocalizationPipe, name: "abpLocalization" }] });
65
+ CostCalculationInputsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationInputsComponent, selector: "lib-cost-calculation-inputs", inputs: { itemsDataSource: "itemsDataSource", itemDisplayExpr: "itemDisplayExpr", parameters: "parameters", parameterDisplayExpr: "parameterDisplayExpr", stages: "stages", selectedItemCode: "selectedItemCode", selectedParameterDocEntry: "selectedParameterDocEntry", rawOilPrice: "rawOilPrice", rawOilCurrency: "rawOilCurrency", systemRateUsd: "systemRateUsd", systemRateEur: "systemRateEur", rateUsd: "rateUsd", rateEur: "rateEur" }, outputs: { selectedItemCodeChange: "selectedItemCodeChange", selectedParameterDocEntryChange: "selectedParameterDocEntryChange", rawOilPriceChange: "rawOilPriceChange", rawOilCurrencyChange: "rawOilCurrencyChange", rateUsdChange: "rateUsdChange", rateEurChange: "rateEurChange", itemChange: "itemChange", parameterChange: "parameterChange", recalc: "recalc" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:PriceParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"docEntry\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterDocEntry\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <lib-amount-currency-input\r\n [(ngModel)]=\"rawOilPrice\"\r\n (ngModelChange)=\"onRawOilPriceChange()\"\r\n [(currency)]=\"rawOilCurrency\"\r\n [currencyOptions]=\"tryUsdCurrencyOptions\"\r\n (currencyChange)=\"onRawOilCurrencyChange()\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\" *ngIf=\"isRate(item); else amountCurrency\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\">%</span>\r\n </div>\r\n <ng-template #amountCurrency>\r\n <lib-amount-currency-input\r\n [(ngModel)]=\"item.value\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n [(currency)]=\"item.currency\"\r\n (currencyChange)=\"recalc.emit()\"\r\n [currencyOptions]=\"isPackaging(item) ? tryUsdCurrencyOptions : currencyOptions\"\r\n [disabled]=\"isPackaging(item)\"\r\n ></lib-amount-currency-input>\r\n </ng-template>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5.AmountCurrencyInputComponent, selector: "lib-amount-currency-input", inputs: ["currencyOptions", "currency", "disabled"], outputs: ["currencyChange"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }] });
62
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationInputsComponent, decorators: [{
63
67
  type: Component,
64
- args: [{ selector: 'lib-cost-calculation-inputs', template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:CostParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterCode\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"rawOilPrice\" (ngModelChange)=\"onRawOilPriceChange()\" />\r\n <select\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"rawOilCurrency\"\r\n (ngModelChange)=\"onRawOilCurrencyChange()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\" *ngIf=\"item.calculationType === RateType\">%</span>\r\n <select\r\n *ngIf=\"item.calculationType !== RateType\"\r\n class=\"form-select flex-grow-0 w-auto\"\r\n [(ngModel)]=\"item.currency\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n >\r\n <option *ngFor=\"let c of currencyOptions\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
68
+ args: [{ selector: 'lib-cost-calculation-inputs', template: "<div class=\"card\">\r\n <div class=\"card-header fw-bold\">{{ 'Keops::CostCalculations:Inputs' | abpLocalization }}</div>\r\n <div class=\"card-body pt-0\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:PriceParameter' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"parameters\"\r\n valueExpr=\"docEntry\"\r\n [displayExpr]=\"parameterDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedParameterDocEntry\"\r\n (onValueChanged)=\"onParameterSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:Item' | abpLocalization }}</label>\r\n <dx-select-box\r\n [dataSource]=\"itemsDataSource\"\r\n valueExpr=\"code\"\r\n [displayExpr]=\"itemDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['code', 'name']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedItemCode\"\r\n (onValueChanged)=\"onItemSelected()\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n >\r\n <div *dxTemplate=\"let it of 'item'\" class=\"text-truncate\" [title]=\"itemDisplayExpr(it)\">\r\n {{ itemDisplayExpr(it) }}\r\n </div>\r\n </dx-select-box>\r\n </div>\r\n\r\n <div class=\"border rounded p-2 mb-3\">\r\n <div class=\"text-uppercase small mb-2\">{{ 'Keops::CostCalculations:Rates' | abpLocalization }}</div>\r\n\r\n <div class=\"row g-2 mb-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemUsdRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateUsd | number }}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:SystemEurRate' | abpLocalization }}</label>\r\n <div class=\"text-muted\">{{ systemRateEur | number }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateUsd\" (ngModelChange)=\"onRateUsdChange()\" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label class=\"form-label small mb-1\">{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}</label>\r\n <input type=\"number\" class=\"form-control form-control-sm\" [(ngModel)]=\"rateEur\" (ngModelChange)=\"onRateEurChange()\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'Keops::CostCalculations:RawOilPrice' | abpLocalization }}</label>\r\n <lib-amount-currency-input\r\n [(ngModel)]=\"rawOilPrice\"\r\n (ngModelChange)=\"onRawOilPriceChange()\"\r\n [(currency)]=\"rawOilCurrency\"\r\n [currencyOptions]=\"tryUsdCurrencyOptions\"\r\n (currencyChange)=\"onRawOilCurrencyChange()\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let stage of stages\">\r\n <div class=\"mb-2\">\r\n <div class=\"text-muted text-uppercase small fw-bold border-bottom pb-1\">\r\n <span>{{ stage.groupCode }} - </span>\r\n <span>{{ stage.groupName }}</span>\r\n </div>\r\n </div>\r\n <div class=\"mb-2\" *ngFor=\"let item of stage.items\">\r\n <label class=\"form-label small mb-1\">\r\n {{ item.costItemName }}\r\n </label>\r\n <div class=\"input-group\" *ngIf=\"isRate(item); else amountCurrency\">\r\n <input type=\"number\" class=\"form-control\" [(ngModel)]=\"item.value\" (ngModelChange)=\"recalc.emit()\" />\r\n <span class=\"input-group-text\">%</span>\r\n </div>\r\n <ng-template #amountCurrency>\r\n <lib-amount-currency-input\r\n [(ngModel)]=\"item.value\"\r\n (ngModelChange)=\"recalc.emit()\"\r\n [(currency)]=\"item.currency\"\r\n (currencyChange)=\"recalc.emit()\"\r\n [currencyOptions]=\"isPackaging(item) ? tryUsdCurrencyOptions : currencyOptions\"\r\n [disabled]=\"isPackaging(item)\"\r\n ></lib-amount-currency-input>\r\n </ng-template>\r\n </div>\r\n <div class=\"mb-2 text-muted small fst-italic\" *ngIf=\"stage.items.length === 0\">\r\n \u2014 {{ 'Keops::CostCalculations:NoItems' | abpLocalization }} \u2014\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
65
69
  }], propDecorators: { itemsDataSource: [{
66
70
  type: Input
67
71
  }], itemDisplayExpr: [{
@@ -76,9 +80,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
76
80
  type: Input
77
81
  }], selectedItemCodeChange: [{
78
82
  type: Output
79
- }], selectedParameterCode: [{
83
+ }], selectedParameterDocEntry: [{
80
84
  type: Input
81
- }], selectedParameterCodeChange: [{
85
+ }], selectedParameterDocEntryChange: [{
82
86
  type: Output
83
87
  }], rawOilPrice: [{
84
88
  type: Input
@@ -107,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
107
111
  }], recalc: [{
108
112
  type: Output
109
113
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLFFBQVEsR0FDVCxNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBTWpFLE1BQU0sT0FBTyw4QkFBOEI7SUFKM0M7UUFLVyxhQUFRLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDO1FBQ3hDLG9CQUFlLEdBQUcsZ0JBQWdCLENBQUM7UUFFbkMsb0JBQWUsR0FBc0IsSUFBSSxDQUFDO1FBRzFDLGVBQVUsR0FBdUIsRUFBRSxDQUFDO1FBR3BDLFdBQU0sR0FBMkIsRUFBRSxDQUFDO1FBRXBDLHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFDdEMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFNUQsMEJBQXFCLEdBQWtCLElBQUksQ0FBQztRQUMzQyxnQ0FBMkIsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUVqRSxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNmLHNCQUFpQixH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LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBEYXRhU291cmNlIGZyb20gJ2RldmV4dHJlbWUvZGF0YS9kYXRhX3NvdXJjZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29zdFBhcmFtZXRlckR0byxcclxuICBJdGVtRHRvLFxyXG4gIENvc3RJdGVtQ2FsY3VsYXRpb25UeXBlLFxyXG4gIEN1cnJlbmN5LFxyXG59IGZyb20gJ0BoaXRzb2Z0L2thZG9vZ2x1LWtlb3BzL3Byb3h5JztcclxuaW1wb3J0IHsgQ29zdENhbGN1bGF0aW9uU3RhZ2UgfSBmcm9tICcuLi9jb3N0LWNhbGN1bGF0aW9uLm1vZGVscyc7XHJcbmltcG9ydCB7IENVUlJFTkNZX09QVElPTlMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jdXJyZW5jeS51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LWNhbGN1bGF0aW9uLWlucHV0cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nvc3QtY2FsY3VsYXRpb24taW5wdXRzLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvc3RDYWxjdWxhdGlvbklucHV0c0NvbXBvbmVudCB7XHJcbiAgcmVhZG9ubHkgUmF0ZVR5cGUgPSBDb3N0SXRlbUNhbGN1bGF0aW9uVHlwZS5SYXRlO1xyXG4gIHJlYWRvbmx5IGN1cnJlbmN5T3B0aW9ucyA9IENVUlJFTkNZX09QVElPTlM7XHJcblxyXG4gIEBJbnB1dCgpIGl0ZW1zRGF0YVNvdXJjZTogRGF0YVNvdXJjZSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGl0ZW1EaXNwbGF5RXhwciE6IChpdGVtOiBJdGVtRHRvKSA9PiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIHBhcmFtZXRlcnM6IENvc3RQYXJhbWV0ZXJEdG9bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHBhcmFtZXRlckRpc3BsYXlFeHByITogKHA6IENvc3RQYXJhbWV0ZXJEdG8pID0+IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgc3RhZ2VzOiBDb3N0Q2FsY3VsYXRpb25TdGFnZVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbUNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1Db2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZFBhcmFtZXRlckNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFBhcmFtZXRlckNvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHJhd09pbFByaWNlID0gMDtcclxuICBAT3V0cHV0KCkgcmF3T2lsUHJpY2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgQElucHV0KCkgcmF3T2lsQ3VycmVuY3k6IEN1cnJlbmN5ID0gQ3VycmVuY3kuVVNEO1xyXG4gIEBPdXRwdXQoKSByYXdPaWxDdXJyZW5jeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VycmVuY3k+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHN5c3RlbVJhdGVVc2QgPSAwO1xyXG4gIEBJbnB1dCgpIHN5c3RlbVJhdGVFdXIgPSAwO1xyXG5cclxuICBASW5wdXQoKSByYXRlVXNkID0gMDtcclxuICBAT3V0cHV0KCkgcmF0ZVVzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBASW5wdXQoKSByYXRlRXVyID0gMDtcclxuICBAT3V0cHV0KCkgcmF0ZUV1ckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBAT3V0cHV0KCkgaXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgcGFyYW1ldGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSByZWNhbGMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIG9uSXRlbVNlbGVjdGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1Db2RlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1Db2RlKTtcclxuICAgIHRoaXMuaXRlbUNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblBhcmFtZXRlclNlbGVjdGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFBhcmFtZXRlckNvZGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkUGFyYW1ldGVyQ29kZSk7XHJcbiAgICB0aGlzLnBhcmFtZXRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblJhd09pbFByaWNlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF3T2lsUHJpY2VDaGFuZ2UsIHRoaXMucmF3T2lsUHJpY2UpO1xyXG4gIH1cclxuICBvblJhd09pbEN1cnJlbmN5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF3T2lsQ3VycmVuY3lDaGFuZ2UsIHRoaXMucmF3T2lsQ3VycmVuY3kpO1xyXG4gIH1cclxuICBvblJhdGVVc2RDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXRBbmRSZWNhbGModGhpcy5yYXRlVXNkQ2hhbmdlLCB0aGlzLnJhdGVVc2QpO1xyXG4gIH1cclxuICBvblJhdGVFdXJDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXRBbmRSZWNhbGModGhpcy5yYXRlRXVyQ2hhbmdlLCB0aGlzLnJhdGVFdXIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0QW5kUmVjYWxjPFQ+KGVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxUPiwgdmFsdWU6IFQpOiB2b2lkIHtcclxuICAgIGVtaXR0ZXIuZW1pdCh2YWx1ZSk7XHJcbiAgICB0aGlzLnJlY2FsYy5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGZ3LWJvbGRcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6SW5wdXRzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpJdGVtJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiaXRlbXNEYXRhU291cmNlXCJcclxuICAgICAgICB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICBbZGlzcGxheUV4cHJdPVwiaXRlbURpc3BsYXlFeHByXCJcclxuICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbc2VhcmNoRXhwcl09XCJbJ2NvZGUnLCAnbmFtZSddXCJcclxuICAgICAgICBzZWFyY2hNb2RlPVwiY29udGFpbnNcIlxyXG4gICAgICAgIFtzZWFyY2hUaW1lb3V0XT1cIjIwMFwiXHJcbiAgICAgICAgW21pblNlYXJjaExlbmd0aF09XCIwXCJcclxuICAgICAgICBbc2hvd0RhdGFCZWZvcmVTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZEl0ZW1Db2RlXCJcclxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25JdGVtU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLZW9wczo6U2VsZWN0QW5PcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgaXQgb2YgJ2l0ZW0nXCIgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCIgW3RpdGxlXT1cIml0ZW1EaXNwbGF5RXhwcihpdClcIj5cclxuICAgICAgICAgIHt7IGl0ZW1EaXNwbGF5RXhwcihpdCkgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpDb3N0UGFyYW1ldGVyJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwicGFyYW1ldGVyc1wiXHJcbiAgICAgICAgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgW2Rpc3BsYXlFeHByXT1cInBhcmFtZXRlckRpc3BsYXlFeHByXCJcclxuICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgIFsodmFsdWUpXT1cInNlbGVjdGVkUGFyYW1ldGVyQ29kZVwiXHJcbiAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uUGFyYW1ldGVyU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLZW9wczo6U2VsZWN0QW5PcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgPjwvZHgtc2VsZWN0LWJveD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC11cHBlcmNhc2Ugc21hbGwgbWItMlwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpSYXRlcycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0yIG1iLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgbWItMVwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpTeXN0ZW1Vc2RSYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7IHN5c3RlbVJhdGVVc2QgfCBudW1iZXIgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgbWItMVwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpTeXN0ZW1FdXJSYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7IHN5c3RlbVJhdGVFdXIgfCBudW1iZXIgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGctMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBtYi0xXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlVzZFJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgWyhuZ01vZGVsKV09XCJyYXRlVXNkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25SYXRlVXNkQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBtYi0xXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOkV1clJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIgWyhuZ01vZGVsKV09XCJyYXRlRXVyXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25SYXRlRXVyQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmF3T2lsUHJpY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwicmF3T2lsUHJpY2VcIiAobmdNb2RlbENoYW5nZSk9XCJvblJhd09pbFByaWNlQ2hhbmdlKClcIiAvPlxyXG4gICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZmxleC1ncm93LTAgdy1hdXRvXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmF3T2lsQ3VycmVuY3lcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25SYXdPaWxDdXJyZW5jeUNoYW5nZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGN1cnJlbmN5T3B0aW9uc1wiIFtuZ1ZhbHVlXT1cImMudmFsdWVcIj57eyBjLmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhZ2Ugb2Ygc3RhZ2VzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgdGV4dC11cHBlcmNhc2Ugc21hbGwgZnctYm9sZCBib3JkZXItYm90dG9tIHBiLTFcIj5cclxuICAgICAgICAgIDxzcGFuPnt7IHN0YWdlLmdyb3VwQ29kZSB9fSAtIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7IHN0YWdlLmdyb3VwTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3RhZ2UuaXRlbXNcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIHNtYWxsIG1iLTFcIj5cclxuICAgICAgICAgIHt7IGl0ZW0uY29zdEl0ZW1OYW1lIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJyZWNhbGMuZW1pdCgpXCIgLz5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiICpuZ0lmPVwiaXRlbS5jYWxjdWxhdGlvblR5cGUgPT09IFJhdGVUeXBlXCI+JTwvc3Bhbj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmNhbGN1bGF0aW9uVHlwZSAhPT0gUmF0ZVR5cGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZsZXgtZ3Jvdy0wIHctYXV0b1wiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5jdXJyZW5jeVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlY2FsYy5lbWl0KClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGN1cnJlbmN5T3B0aW9uc1wiIFtuZ1ZhbHVlXT1cImMudmFsdWVcIj57eyBjLmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIHRleHQtbXV0ZWQgc21hbGwgZnN0LWl0YWxpY1wiICpuZ0lmPVwic3RhZ2UuaXRlbXMubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAg4oCUIHt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpOb0l0ZW1zJyB8IGFicExvY2FsaXphdGlvbiB9fSDigJRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9jb3N0LWNhbGN1bGF0aW9uL2NvbXBvbmVudHMvY29zdC1jYWxjdWxhdGlvbi1pbnB1dHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQThCLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7Ozs7QUFNckcsTUFBTSxPQUFPLDhCQUE4QjtJQUozQztRQUtXLFdBQU0sR0FBRyxjQUFjLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxtQkFBbUIsQ0FBQztRQUNsQyxvQkFBZSxHQUFHLGdCQUFnQixDQUFDO1FBQ25DLDBCQUFxQixHQUFHLHdCQUF3QixDQUFDO1FBRWpELG9CQUFlLEdBQXNCLElBQUksQ0FBQztRQUcxQyxlQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUdyQyxXQUFNLEdBQTJCLEVBQUUsQ0FBQztRQUVwQyxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBQ3RDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRTVE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LE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgRGF0YVNvdXJjZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvZGF0YV9zb3VyY2UnO1xyXG5pbXBvcnQgeyBQcmljZVBhcmFtZXRlckR0bywgSXRlbUR0bywgQ3VycmVuY3kgfSBmcm9tICdAaGl0c29mdC9rYWRvb2dsdS1rZW9wcy9wcm94eSc7XHJcbmltcG9ydCB7IENvc3RDYWxjdWxhdGlvblN0YWdlIH0gZnJvbSAnLi4vY29zdC1jYWxjdWxhdGlvbi5tb2RlbHMnO1xyXG5pbXBvcnQgeyBDVVJSRU5DWV9PUFRJT05TLCBDVVJSRU5DWV9PUFRJT05TX1RSWV9VU0QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jdXJyZW5jeS51dGlscyc7XHJcbmltcG9ydCB7IGlzUGFja2FnaW5nQ29zdEl0ZW0sIGlzUmF0ZUNvc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Nvc3QtaXRlbS1jbGFzc2lmaWNhdGlvbi51dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LWNhbGN1bGF0aW9uLWlucHV0cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nvc3QtY2FsY3VsYXRpb24taW5wdXRzLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvc3RDYWxjdWxhdGlvbklucHV0c0NvbXBvbmVudCB7XHJcbiAgcmVhZG9ubHkgaXNSYXRlID0gaXNSYXRlQ29zdEl0ZW07XHJcbiAgcmVhZG9ubHkgaXNQYWNrYWdpbmcgPSBpc1BhY2thZ2luZ0Nvc3RJdGVtO1xyXG4gIHJlYWRvbmx5IGN1cnJlbmN5T3B0aW9ucyA9IENVUlJFTkNZX09QVElPTlM7XHJcbiAgcmVhZG9ubHkgdHJ5VXNkQ3VycmVuY3lPcHRpb25zID0gQ1VSUkVOQ1lfT1BUSU9OU19UUllfVVNEO1xyXG5cclxuICBASW5wdXQoKSBpdGVtc0RhdGFTb3VyY2U6IERhdGFTb3VyY2UgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBpdGVtRGlzcGxheUV4cHIhOiAoaXRlbTogSXRlbUR0bykgPT4gc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBwYXJhbWV0ZXJzOiBQcmljZVBhcmFtZXRlckR0b1tdID0gW107XHJcbiAgQElucHV0KCkgcGFyYW1ldGVyRGlzcGxheUV4cHIhOiAocDogUHJpY2VQYXJhbWV0ZXJEdG8pID0+IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgc3RhZ2VzOiBDb3N0Q2FsY3VsYXRpb25TdGFnZVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbUNvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1Db2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZFBhcmFtZXRlckRvY0VudHJ5OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRQYXJhbWV0ZXJEb2NFbnRyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgbnVsbD4oKTtcclxuXHJcbiAgQElucHV0KCkgcmF3T2lsUHJpY2UgPSAwO1xyXG4gIEBPdXRwdXQoKSByYXdPaWxQcmljZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBASW5wdXQoKSByYXdPaWxDdXJyZW5jeTogQ3VycmVuY3kgPSBDdXJyZW5jeS5VU0Q7XHJcbiAgQE91dHB1dCgpIHJhd09pbEN1cnJlbmN5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDdXJyZW5jeT4oKTtcclxuXHJcbiAgQElucHV0KCkgc3lzdGVtUmF0ZVVzZCA9IDA7XHJcbiAgQElucHV0KCkgc3lzdGVtUmF0ZUV1ciA9IDA7XHJcblxyXG4gIEBJbnB1dCgpIHJhdGVVc2QgPSAwO1xyXG4gIEBPdXRwdXQoKSByYXRlVXNkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHJhdGVFdXIgPSAwO1xyXG4gIEBPdXRwdXQoKSByYXRlRXVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBpdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBwYXJhbWV0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHJlY2FsYyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgb25JdGVtU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbUNvZGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbUNvZGUpO1xyXG4gICAgdGhpcy5pdGVtQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uUGFyYW1ldGVyU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUGFyYW1ldGVyRG9jRW50cnlDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkUGFyYW1ldGVyRG9jRW50cnkpO1xyXG4gICAgdGhpcy5wYXJhbWV0ZXJDaGFuZ2UuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25SYXdPaWxQcmljZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZW1pdEFuZFJlY2FsYyh0aGlzLnJhd09pbFByaWNlQ2hhbmdlLCB0aGlzLnJhd09pbFByaWNlKTtcclxuICB9XHJcbiAgb25SYXdPaWxDdXJyZW5jeUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZW1pdEFuZFJlY2FsYyh0aGlzLnJhd09pbEN1cnJlbmN5Q2hhbmdlLCB0aGlzLnJhd09pbEN1cnJlbmN5KTtcclxuICB9XHJcbiAgb25SYXRlVXNkQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF0ZVVzZENoYW5nZSwgdGhpcy5yYXRlVXNkKTtcclxuICB9XHJcbiAgb25SYXRlRXVyQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbWl0QW5kUmVjYWxjKHRoaXMucmF0ZUV1ckNoYW5nZSwgdGhpcy5yYXRlRXVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEFuZFJlY2FsYzxUPihlbWl0dGVyOiBFdmVudEVtaXR0ZXI8VD4sIHZhbHVlOiBUKTogdm9pZCB7XHJcbiAgICBlbWl0dGVyLmVtaXQodmFsdWUpO1xyXG4gICAgdGhpcy5yZWNhbGMuZW1pdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBmdy1ib2xkXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOklucHV0cycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB0LTBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UHJpY2VQYXJhbWV0ZXInIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgPGR4LXNlbGVjdC1ib3hcclxuICAgICAgICBbZGF0YVNvdXJjZV09XCJwYXJhbWV0ZXJzXCJcclxuICAgICAgICB2YWx1ZUV4cHI9XCJkb2NFbnRyeVwiXHJcbiAgICAgICAgW2Rpc3BsYXlFeHByXT1cInBhcmFtZXRlckRpc3BsYXlFeHByXCJcclxuICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgIFsodmFsdWUpXT1cInNlbGVjdGVkUGFyYW1ldGVyRG9jRW50cnlcIlxyXG4gICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvblBhcmFtZXRlclNlbGVjdGVkKClcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInS2VvcHM6OlNlbGVjdEFuT3B0aW9uJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgID48L2R4LXNlbGVjdC1ib3g+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOkl0ZW0nIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgPGR4LXNlbGVjdC1ib3hcclxuICAgICAgICBbZGF0YVNvdXJjZV09XCJpdGVtc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgIHZhbHVlRXhwcj1cImNvZGVcIlxyXG4gICAgICAgIFtkaXNwbGF5RXhwcl09XCJpdGVtRGlzcGxheUV4cHJcIlxyXG4gICAgICAgIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIFtzZWFyY2hFeHByXT1cIlsnY29kZScsICduYW1lJ11cIlxyXG4gICAgICAgIHNlYXJjaE1vZGU9XCJjb250YWluc1wiXHJcbiAgICAgICAgW3NlYXJjaFRpbWVvdXRdPVwiMjAwXCJcclxuICAgICAgICBbbWluU2VhcmNoTGVuZ3RoXT1cIjBcIlxyXG4gICAgICAgIFtzaG93RGF0YUJlZm9yZVNlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgIFsodmFsdWUpXT1cInNlbGVjdGVkSXRlbUNvZGVcIlxyXG4gICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvbkl0ZW1TZWxlY3RlZCgpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBpdCBvZiAnaXRlbSdcIiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiaXRlbURpc3BsYXlFeHByKGl0KVwiPlxyXG4gICAgICAgICAge3sgaXRlbURpc3BsYXlFeHByKGl0KSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0yIG1iLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtdXBwZXJjYXNlIHNtYWxsIG1iLTJcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmF0ZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGctMiBtYi0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIHNtYWxsIG1iLTFcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6U3lzdGVtVXNkUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWRcIj57eyBzeXN0ZW1SYXRlVXNkIHwgbnVtYmVyIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIHNtYWxsIG1iLTFcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6U3lzdGVtRXVyUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWRcIj57eyBzeXN0ZW1SYXRlRXVyIHwgbnVtYmVyIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgbWItMVwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpVc2RSYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIFsobmdNb2RlbCldPVwicmF0ZVVzZFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uUmF0ZVVzZENoYW5nZSgpXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgbWItMVwiPnt7ICdLZW9wczo6Q29zdENhbGN1bGF0aW9uczpFdXJSYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIFsobmdNb2RlbCldPVwicmF0ZUV1clwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uUmF0ZUV1ckNoYW5nZSgpXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlJhd09pbFByaWNlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgIDxsaWItYW1vdW50LWN1cnJlbmN5LWlucHV0XHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyYXdPaWxQcmljZVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25SYXdPaWxQcmljZUNoYW5nZSgpXCJcclxuICAgICAgICBbKGN1cnJlbmN5KV09XCJyYXdPaWxDdXJyZW5jeVwiXHJcbiAgICAgICAgW2N1cnJlbmN5T3B0aW9uc109XCJ0cnlVc2RDdXJyZW5jeU9wdGlvbnNcIlxyXG4gICAgICAgIChjdXJyZW5jeUNoYW5nZSk9XCJvblJhd09pbEN1cnJlbmN5Q2hhbmdlKClcIlxyXG4gICAgICA+PC9saWItYW1vdW50LWN1cnJlbmN5LWlucHV0PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhZ2Ugb2Ygc3RhZ2VzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgdGV4dC11cHBlcmNhc2Ugc21hbGwgZnctYm9sZCBib3JkZXItYm90dG9tIHBiLTFcIj5cclxuICAgICAgICAgIDxzcGFuPnt7IHN0YWdlLmdyb3VwQ29kZSB9fSAtIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7IHN0YWdlLmdyb3VwTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3RhZ2UuaXRlbXNcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIHNtYWxsIG1iLTFcIj5cclxuICAgICAgICAgIHt7IGl0ZW0uY29zdEl0ZW1OYW1lIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiAqbmdJZj1cImlzUmF0ZShpdGVtKTsgZWxzZSBhbW91bnRDdXJyZW5jeVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cInJlY2FsYy5lbWl0KClcIiAvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+JTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2Ftb3VudEN1cnJlbmN5PlxyXG4gICAgICAgICAgPGxpYi1hbW91bnQtY3VycmVuY3ktaW5wdXRcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicmVjYWxjLmVtaXQoKVwiXHJcbiAgICAgICAgICAgIFsoY3VycmVuY3kpXT1cIml0ZW0uY3VycmVuY3lcIlxyXG4gICAgICAgICAgICAoY3VycmVuY3lDaGFuZ2UpPVwicmVjYWxjLmVtaXQoKVwiXHJcbiAgICAgICAgICAgIFtjdXJyZW5jeU9wdGlvbnNdPVwiaXNQYWNrYWdpbmcoaXRlbSkgPyB0cnlVc2RDdXJyZW5jeU9wdGlvbnMgOiBjdXJyZW5jeU9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNQYWNrYWdpbmcoaXRlbSlcIlxyXG4gICAgICAgICAgPjwvbGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTIgdGV4dC1tdXRlZCBzbWFsbCBmc3QtaXRhbGljXCIgKm5nSWY9XCJzdGFnZS5pdGVtcy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICDigJQge3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOk5vSXRlbXMnIHwgYWJwTG9jYWxpemF0aW9uIH19IOKAlFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -14,10 +14,10 @@ export class CostCalculationResultsComponent {
14
14
  }
15
15
  }
16
16
  CostCalculationResultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
- CostCalculationResultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationResultsComponent, selector: "lib-cost-calculation-results", inputs: { result: "result", roleGroups: "roleGroups", itemName: "itemName", rateUsd: "rateUsd", rateEur: "rateEur" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <span class=\"fw-bold\">{{ 'Keops::CostCalculations:Results' | abpLocalization }}</span>\r\n <span class=\"text-muted small\">\r\n <span>{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}: <strong>{{ rateUsd | number }}</strong></span>\r\n <span class=\"mx-2\">\u00B7</span>\r\n <span>{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}: <strong>{{ rateEur | number }}</strong></span>\r\n </span>\r\n </div>\r\n <div class=\"card-body\" *ngIf=\"result; else noResult\">\r\n <table class=\"table table-bordered mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr>\r\n <th>{{ itemName || ('Keops::CostCalculations:Item' | abpLocalization) }}</th>\r\n <th class=\"text-end\">TRY</th>\r\n <th class=\"text-end\">USD</th>\r\n <th class=\"text-end\">EUR</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table-light fw-bold\">\r\n <td>{{ 'Keops::CostCalculations:RawOil' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.try | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.eur | number }}</td>\r\n </tr>\r\n\r\n <ng-container *ngFor=\"let group of roleGroups\">\r\n <ng-container *ngFor=\"let stage of group.stages\">\r\n <tr class=\"table-secondary fw-semibold\">\r\n <td colspan=\"4\">{{ stage.groupCode }} - {{ stage.groupName }}</td>\r\n </tr>\r\n <tr *ngFor=\"let line of stage.lines\">\r\n <td class=\"ps-3\">\r\n {{ line.costItemName }}\r\n <span *ngIf=\"line.ratePercent != null\" class=\"text-muted\">(%{{ line.ratePercent }})</span>\r\n </td>\r\n <td class=\"text-end\">{{ line.amount.try | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.usd | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"table-info fw-bold\">\r\n <td>{{ costGroupRoleTotalLabels[group.role] | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.try | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.usd | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n\r\n <tr class=\"table-warning fw-bold\" *ngIf=\"result\">\r\n <td>{{ 'Keops::CostCalculations:TotalSalePrice' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.try | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.eur | number }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-template #noResult>\r\n <div class=\"card-body p-4 text-center text-muted\">\r\n {{ 'Keops::CostCalculations:CostParameter' | abpLocalization }} \u2026\r\n </div>\r\n </ng-template>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
17
+ CostCalculationResultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CostCalculationResultsComponent, selector: "lib-cost-calculation-results", inputs: { result: "result", roleGroups: "roleGroups", itemName: "itemName", rateUsd: "rateUsd", rateEur: "rateEur" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <span class=\"fw-bold\">{{ 'Keops::CostCalculations:Results' | abpLocalization }}</span>\r\n <span class=\"text-muted small\">\r\n <span>{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}: <strong>{{ rateUsd | number }}</strong></span>\r\n <span class=\"mx-2\">\u00B7</span>\r\n <span>{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}: <strong>{{ rateEur | number }}</strong></span>\r\n </span>\r\n </div>\r\n <div class=\"card-body\" *ngIf=\"result; else noResult\">\r\n <table class=\"table table-bordered mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr>\r\n <th>{{ itemName || ('Keops::CostCalculations:Item' | abpLocalization) }}</th>\r\n <th class=\"text-end\">TRY</th>\r\n <th class=\"text-end\">USD</th>\r\n <th class=\"text-end\">EUR</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table-light fw-bold\">\r\n <td>{{ 'Keops::CostCalculations:RawOil' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.try | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.eur | number }}</td>\r\n </tr>\r\n\r\n <ng-container *ngFor=\"let group of roleGroups\">\r\n <ng-container *ngFor=\"let stage of group.stages\">\r\n <tr class=\"table-secondary fw-semibold\">\r\n <td colspan=\"4\">{{ stage.groupCode }} - {{ stage.groupName }}</td>\r\n </tr>\r\n <tr *ngFor=\"let line of stage.lines\">\r\n <td class=\"ps-3\">\r\n {{ line.costItemName }}\r\n <span *ngIf=\"line.ratePercent != null\" class=\"text-muted\">(%{{ line.ratePercent }})</span>\r\n </td>\r\n <td class=\"text-end\">{{ line.amount.try | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.usd | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"table-info fw-bold\">\r\n <td>{{ costGroupRoleTotalLabels[group.role] | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.try | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.usd | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n\r\n <tr class=\"table-warning fw-bold\" *ngIf=\"result\">\r\n <td>{{ 'Keops::CostCalculations:TotalSalePrice' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.try | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.eur | number }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-template #noResult>\r\n <div class=\"card-body p-4 text-center text-muted\">\r\n {{ 'Keops::CostCalculations:PriceParameter' | abpLocalization }} \u2026\r\n </div>\r\n </ng-template>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CostCalculationResultsComponent, decorators: [{
19
19
  type: Component,
20
- args: [{ selector: 'lib-cost-calculation-results', template: "<div class=\"card\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <span class=\"fw-bold\">{{ 'Keops::CostCalculations:Results' | abpLocalization }}</span>\r\n <span class=\"text-muted small\">\r\n <span>{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}: <strong>{{ rateUsd | number }}</strong></span>\r\n <span class=\"mx-2\">\u00B7</span>\r\n <span>{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}: <strong>{{ rateEur | number }}</strong></span>\r\n </span>\r\n </div>\r\n <div class=\"card-body\" *ngIf=\"result; else noResult\">\r\n <table class=\"table table-bordered mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr>\r\n <th>{{ itemName || ('Keops::CostCalculations:Item' | abpLocalization) }}</th>\r\n <th class=\"text-end\">TRY</th>\r\n <th class=\"text-end\">USD</th>\r\n <th class=\"text-end\">EUR</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table-light fw-bold\">\r\n <td>{{ 'Keops::CostCalculations:RawOil' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.try | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.eur | number }}</td>\r\n </tr>\r\n\r\n <ng-container *ngFor=\"let group of roleGroups\">\r\n <ng-container *ngFor=\"let stage of group.stages\">\r\n <tr class=\"table-secondary fw-semibold\">\r\n <td colspan=\"4\">{{ stage.groupCode }} - {{ stage.groupName }}</td>\r\n </tr>\r\n <tr *ngFor=\"let line of stage.lines\">\r\n <td class=\"ps-3\">\r\n {{ line.costItemName }}\r\n <span *ngIf=\"line.ratePercent != null\" class=\"text-muted\">(%{{ line.ratePercent }})</span>\r\n </td>\r\n <td class=\"text-end\">{{ line.amount.try | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.usd | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"table-info fw-bold\">\r\n <td>{{ costGroupRoleTotalLabels[group.role] | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.try | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.usd | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n\r\n <tr class=\"table-warning fw-bold\" *ngIf=\"result\">\r\n <td>{{ 'Keops::CostCalculations:TotalSalePrice' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.try | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.eur | number }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-template #noResult>\r\n <div class=\"card-body p-4 text-center text-muted\">\r\n {{ 'Keops::CostCalculations:CostParameter' | abpLocalization }} \u2026\r\n </div>\r\n </ng-template>\r\n</div>\r\n" }]
20
+ args: [{ selector: 'lib-cost-calculation-results', template: "<div class=\"card\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <span class=\"fw-bold\">{{ 'Keops::CostCalculations:Results' | abpLocalization }}</span>\r\n <span class=\"text-muted small\">\r\n <span>{{ 'Keops::CostCalculations:UsdRate' | abpLocalization }}: <strong>{{ rateUsd | number }}</strong></span>\r\n <span class=\"mx-2\">\u00B7</span>\r\n <span>{{ 'Keops::CostCalculations:EurRate' | abpLocalization }}: <strong>{{ rateEur | number }}</strong></span>\r\n </span>\r\n </div>\r\n <div class=\"card-body\" *ngIf=\"result; else noResult\">\r\n <table class=\"table table-bordered mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr>\r\n <th>{{ itemName || ('Keops::CostCalculations:Item' | abpLocalization) }}</th>\r\n <th class=\"text-end\">TRY</th>\r\n <th class=\"text-end\">USD</th>\r\n <th class=\"text-end\">EUR</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr class=\"table-light fw-bold\">\r\n <td>{{ 'Keops::CostCalculations:RawOil' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.try | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.rawOil.eur | number }}</td>\r\n </tr>\r\n\r\n <ng-container *ngFor=\"let group of roleGroups\">\r\n <ng-container *ngFor=\"let stage of group.stages\">\r\n <tr class=\"table-secondary fw-semibold\">\r\n <td colspan=\"4\">{{ stage.groupCode }} - {{ stage.groupName }}</td>\r\n </tr>\r\n <tr *ngFor=\"let line of stage.lines\">\r\n <td class=\"ps-3\">\r\n {{ line.costItemName }}\r\n <span *ngIf=\"line.ratePercent != null\" class=\"text-muted\">(%{{ line.ratePercent }})</span>\r\n </td>\r\n <td class=\"text-end\">{{ line.amount.try | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.usd | number }}</td>\r\n <td class=\"text-end\">{{ line.amount.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"table-info fw-bold\">\r\n <td>{{ costGroupRoleTotalLabels[group.role] | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.try | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.usd | number }}</td>\r\n <td class=\"text-end\">{{ group.roleTotal.eur | number }}</td>\r\n </tr>\r\n </ng-container>\r\n\r\n <tr class=\"table-warning fw-bold\" *ngIf=\"result\">\r\n <td>{{ 'Keops::CostCalculations:TotalSalePrice' | abpLocalization }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.try | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.usd | number }}</td>\r\n <td class=\"text-end\">{{ result.totalSalePrice.eur | number }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-template #noResult>\r\n <div class=\"card-body p-4 text-center text-muted\">\r\n {{ 'Keops::CostCalculations:PriceParameter' | abpLocalization }} \u2026\r\n </div>\r\n </ng-template>\r\n</div>\r\n" }]
21
21
  }], propDecorators: { result: [{
22
22
  type: Input
23
23
  }], roleGroups: [{
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
29
29
  }], rateEur: [{
30
30
  type: Input
31
31
  }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24tcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7QUFPekYsTUFBTSxPQUFPLCtCQUErQjtJQUo1QztRQUtXLFdBQU0sR0FBc0IsSUFBSSxDQUFDO1FBQ2pDLGVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDWixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRVosNkJBQXdCLEdBQUcsd0JBQXdCLENBQUM7S0FDOUQ7OzRIQVJZLCtCQUErQjtnSEFBL0IsK0JBQStCLDBMQ1I1Qyx3dUdBaUVBOzJGRHpEYSwrQkFBK0I7a0JBSjNDLFNBQVM7K0JBQ0UsOEJBQThCOzhCQUkvQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvc3RHcm91cFJvbGVUb3RhbExhYmVscyB9IGZyb20gJy4uLy4uL2Nvc3QtZ3JvdXBzL2Nvc3QtZ3JvdXAtcm9sZS1sMTBuLWhlbHBlcic7XHJcbmltcG9ydCB7IENvc3RSZXN1bHQsIFJvbGVHcm91cCB9IGZyb20gJy4uL2VuZ2luZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29zdENhbGN1bGF0aW9uUmVzdWx0c0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgcmVzdWx0OiBDb3N0UmVzdWx0IHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcm9sZUdyb3VwczogUm9sZUdyb3VwW10gPSBbXTtcclxuICBASW5wdXQoKSBpdGVtTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcmF0ZVVzZCA9IDA7XHJcbiAgQElucHV0KCkgcmF0ZUV1ciA9IDA7XHJcblxyXG4gIHJlYWRvbmx5IGNvc3RHcm91cFJvbGVUb3RhbExhYmVscyA9IGNvc3RHcm91cFJvbGVUb3RhbExhYmVscztcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmVzdWx0cycgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5cclxuICAgICAgPHNwYW4+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlVzZFJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19OiA8c3Ryb25nPnt7IHJhdGVVc2QgfCBudW1iZXIgfX08L3N0cm9uZz48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPsK3PC9zcGFuPlxyXG4gICAgICA8c3Bhbj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6RXVyUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX06IDxzdHJvbmc+e3sgcmF0ZUV1ciB8IG51bWJlciB9fTwvc3Ryb25nPjwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgKm5nSWY9XCJyZXN1bHQ7IGVsc2Ugbm9SZXN1bHRcIj5cclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIG1iLTBcIj5cclxuICAgICAgPHRoZWFkIGNsYXNzPVwidGFibGUtZGFya1wiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aD57eyBpdGVtTmFtZSB8fCAoJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOkl0ZW0nIHwgYWJwTG9jYWxpemF0aW9uKSB9fTwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlRSWTwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlVTRDwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPkVVUjwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5PlxyXG4gICAgICAgIDx0ciBjbGFzcz1cInRhYmxlLWxpZ2h0IGZ3LWJvbGRcIj5cclxuICAgICAgICAgIDx0ZD57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmF3T2lsJyB8IGFicExvY2FsaXphdGlvbiB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IHJlc3VsdC5yYXdPaWwudHJ5IHwgbnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcmVzdWx0LnJhd09pbC51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyByZXN1bHQucmF3T2lsLmV1ciB8IG51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2Ygcm9sZUdyb3Vwc1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhZ2Ugb2YgZ3JvdXAuc3RhZ2VzXCI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRhYmxlLXNlY29uZGFyeSBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPnt7IHN0YWdlLmdyb3VwQ29kZSB9fSAtIHt7IHN0YWdlLmdyb3VwTmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbGluZSBvZiBzdGFnZS5saW5lc1wiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBzLTNcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxpbmUuY29zdEl0ZW1OYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxpbmUucmF0ZVBlcmNlbnQgIT0gbnVsbFwiIGNsYXNzPVwidGV4dC1tdXRlZFwiPigle3sgbGluZS5yYXRlUGVyY2VudCB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGxpbmUuYW1vdW50LnRyeSB8IG51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyBsaW5lLmFtb3VudC51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgbGluZS5hbW91bnQuZXVyIHwgbnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPHRyIGNsYXNzPVwidGFibGUtaW5mbyBmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgIDx0ZD57eyBjb3N0R3JvdXBSb2xlVG90YWxMYWJlbHNbZ3JvdXAucm9sZV0gfCBhYnBMb2NhbGl6YXRpb24gfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGdyb3VwLnJvbGVUb3RhbC50cnkgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGdyb3VwLnJvbGVUb3RhbC51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGdyb3VwLnJvbGVUb3RhbC5ldXIgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPHRyIGNsYXNzPVwidGFibGUtd2FybmluZyBmdy1ib2xkXCIgKm5nSWY9XCJyZXN1bHRcIj5cclxuICAgICAgICAgIDx0ZD57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6VG90YWxTYWxlUHJpY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC90ZD5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcmVzdWx0LnRvdGFsU2FsZVByaWNlLnRyeSB8IG51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IHJlc3VsdC50b3RhbFNhbGVQcmljZS51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyByZXN1bHQudG90YWxTYWxlUHJpY2UuZXVyIHwgbnVtYmVyIH19PC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuICA8bmctdGVtcGxhdGUgI25vUmVzdWx0PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTQgdGV4dC1jZW50ZXIgdGV4dC1tdXRlZFwiPlxyXG4gICAgICB7eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6Q29zdFBhcmFtZXRlcicgfCBhYnBMb2NhbGl6YXRpb24gfX0g4oCmXHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdC1jYWxjdWxhdGlvbi1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1LWtlb3BzL3NyYy9saWIvZmVhdHVyZXMvY29zdC1jYWxjdWxhdGlvbi9jb21wb25lbnRzL2Nvc3QtY2FsY3VsYXRpb24tcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWRvb2dsdS1rZW9wcy9zcmMvbGliL2ZlYXR1cmVzL2Nvc3QtY2FsY3VsYXRpb24vY29tcG9uZW50cy9jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7QUFPekYsTUFBTSxPQUFPLCtCQUErQjtJQUo1QztRQUtXLFdBQU0sR0FBc0IsSUFBSSxDQUFDO1FBQ2pDLGVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDWixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRVosNkJBQXdCLEdBQUcsd0JBQXdCLENBQUM7S0FDOUQ7OzRIQVJZLCtCQUErQjtnSEFBL0IsK0JBQStCLDBMQ1I1Qyx5dUdBaUVBOzJGRHpEYSwrQkFBK0I7a0JBSjNDLFNBQVM7K0JBQ0UsOEJBQThCOzhCQUkvQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvc3RHcm91cFJvbGVUb3RhbExhYmVscyB9IGZyb20gJy4uLy4uL2Nvc3QtZ3JvdXBzL2Nvc3QtZ3JvdXAtcm9sZS1sMTBuLWhlbHBlcic7XHJcbmltcG9ydCB7IENvc3RSZXN1bHQsIFJvbGVHcm91cCB9IGZyb20gJy4uL2VuZ2luZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3N0LWNhbGN1bGF0aW9uLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29zdENhbGN1bGF0aW9uUmVzdWx0c0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgcmVzdWx0OiBDb3N0UmVzdWx0IHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcm9sZUdyb3VwczogUm9sZUdyb3VwW10gPSBbXTtcclxuICBASW5wdXQoKSBpdGVtTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcmF0ZVVzZCA9IDA7XHJcbiAgQElucHV0KCkgcmF0ZUV1ciA9IDA7XHJcblxyXG4gIHJlYWRvbmx5IGNvc3RHcm91cFJvbGVUb3RhbExhYmVscyA9IGNvc3RHcm91cFJvbGVUb3RhbExhYmVscztcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmVzdWx0cycgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5cclxuICAgICAgPHNwYW4+e3sgJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOlVzZFJhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19OiA8c3Ryb25nPnt7IHJhdGVVc2QgfCBudW1iZXIgfX08L3N0cm9uZz48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPsK3PC9zcGFuPlxyXG4gICAgICA8c3Bhbj57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6RXVyUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX06IDxzdHJvbmc+e3sgcmF0ZUV1ciB8IG51bWJlciB9fTwvc3Ryb25nPjwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgKm5nSWY9XCJyZXN1bHQ7IGVsc2Ugbm9SZXN1bHRcIj5cclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIG1iLTBcIj5cclxuICAgICAgPHRoZWFkIGNsYXNzPVwidGFibGUtZGFya1wiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aD57eyBpdGVtTmFtZSB8fCAoJ0tlb3BzOjpDb3N0Q2FsY3VsYXRpb25zOkl0ZW0nIHwgYWJwTG9jYWxpemF0aW9uKSB9fTwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlRSWTwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlVTRDwvdGg+XHJcbiAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPkVVUjwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5PlxyXG4gICAgICAgIDx0ciBjbGFzcz1cInRhYmxlLWxpZ2h0IGZ3LWJvbGRcIj5cclxuICAgICAgICAgIDx0ZD57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UmF3T2lsJyB8IGFicExvY2FsaXphdGlvbiB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IHJlc3VsdC5yYXdPaWwudHJ5IHwgbnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcmVzdWx0LnJhd09pbC51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyByZXN1bHQucmF3T2lsLmV1ciB8IG51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2Ygcm9sZUdyb3Vwc1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhZ2Ugb2YgZ3JvdXAuc3RhZ2VzXCI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRhYmxlLXNlY29uZGFyeSBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPnt7IHN0YWdlLmdyb3VwQ29kZSB9fSAtIHt7IHN0YWdlLmdyb3VwTmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbGluZSBvZiBzdGFnZS5saW5lc1wiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBzLTNcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxpbmUuY29zdEl0ZW1OYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxpbmUucmF0ZVBlcmNlbnQgIT0gbnVsbFwiIGNsYXNzPVwidGV4dC1tdXRlZFwiPigle3sgbGluZS5yYXRlUGVyY2VudCB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGxpbmUuYW1vdW50LnRyeSB8IG51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyBsaW5lLmFtb3VudC51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgbGluZS5hbW91bnQuZXVyIHwgbnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPHRyIGNsYXNzPVwidGFibGUtaW5mbyBmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgIDx0ZD57eyBjb3N0R3JvdXBSb2xlVG90YWxMYWJlbHNbZ3JvdXAucm9sZV0gfCBhYnBMb2NhbGl6YXRpb24gfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGdyb3VwLnJvbGVUb3RhbC50cnkgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGdyb3VwLnJvbGVUb3RhbC51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGdyb3VwLnJvbGVUb3RhbC5ldXIgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPHRyIGNsYXNzPVwidGFibGUtd2FybmluZyBmdy1ib2xkXCIgKm5nSWY9XCJyZXN1bHRcIj5cclxuICAgICAgICAgIDx0ZD57eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6VG90YWxTYWxlUHJpY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC90ZD5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcmVzdWx0LnRvdGFsU2FsZVByaWNlLnRyeSB8IG51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IHJlc3VsdC50b3RhbFNhbGVQcmljZS51c2QgfCBudW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyByZXN1bHQudG90YWxTYWxlUHJpY2UuZXVyIHwgbnVtYmVyIH19PC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuICA8bmctdGVtcGxhdGUgI25vUmVzdWx0PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTQgdGV4dC1jZW50ZXIgdGV4dC1tdXRlZFwiPlxyXG4gICAgICB7eyAnS2VvcHM6OkNvc3RDYWxjdWxhdGlvbnM6UHJpY2VQYXJhbWV0ZXInIHwgYWJwTG9jYWxpemF0aW9uIH19IOKAplxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==