ng-easycommerce-v18 0.3.19-beta.2 → 0.3.20-beta.1

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 (196) hide show
  1. package/README.md +110 -109
  2. package/assets/decidirFormEc.html +514 -514
  3. package/assets/ec-i18n/ct.json +282 -282
  4. package/assets/ec-i18n/en.json +0 -1
  5. package/assets/ec-i18n/es.json +433 -434
  6. package/assets/ec-i18n/fr.json +0 -0
  7. package/assets/ec-i18n/gl.json +282 -282
  8. package/assets/ec-i18n/pr.json +282 -282
  9. package/assets/images/cards-occasional.svg +21 -21
  10. package/assets/recaptcha/recaptcha-site-keys.json +3 -3
  11. package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
  12. package/assets/recaptcha/recaptcha-sites.json +52 -52
  13. package/esm2022/lib/api/connection.service.mjs +1 -1
  14. package/esm2022/lib/classes/checkout/steps.mjs +1 -1
  15. package/esm2022/lib/classes/component-helper.mjs +1 -1
  16. package/esm2022/lib/classes/filters/attributes-filter.mjs +74 -4
  17. package/esm2022/lib/classes/filters/category-filter.mjs +105 -26
  18. package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
  19. package/esm2022/lib/classes/filters/filter-factory.mjs +7 -3
  20. package/esm2022/lib/classes/filters/filter.mjs +1 -1
  21. package/esm2022/lib/classes/filters/index.mjs +1 -1
  22. package/esm2022/lib/classes/filters/price_range-filter.mjs +3 -3
  23. package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
  24. package/esm2022/lib/classes/index.mjs +1 -1
  25. package/esm2022/lib/classes/user.mjs +1 -1
  26. package/esm2022/lib/constants/api.constants.service.mjs +1 -1
  27. package/esm2022/lib/constants/core.constants.service.mjs +12 -1
  28. package/esm2022/lib/constants/index.mjs +1 -1
  29. package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
  30. package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
  31. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -1
  32. package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
  33. package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
  34. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +3 -3
  35. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
  36. package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
  37. package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
  38. package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
  39. package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
  40. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +3 -3
  41. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +3 -3
  42. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
  43. package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
  44. package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
  45. package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +3 -3
  46. package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
  47. package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
  48. package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +3 -3
  49. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +3 -6
  50. package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
  51. package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
  52. package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
  53. package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +3 -3
  54. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +11 -39
  55. package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
  56. package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +3 -3
  57. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +3 -3
  58. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
  59. package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +3 -3
  60. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +3 -3
  61. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
  62. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
  63. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +3 -3
  64. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
  65. package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
  66. package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
  67. package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +3 -3
  68. package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +43 -19
  69. package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +1 -1
  70. package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
  71. package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
  72. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +40 -11
  73. package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
  74. package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
  75. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +17 -17
  76. package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
  77. package/esm2022/lib/ec-components/index.mjs +1 -1
  78. package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +15 -4
  79. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +1 -1
  80. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +8 -56
  81. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +3 -3
  82. package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
  83. package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
  84. package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
  85. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
  86. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
  87. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
  88. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
  89. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
  90. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
  91. package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
  92. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +3 -3
  93. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
  94. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
  95. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +3 -3
  96. package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
  97. package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
  98. package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
  99. package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
  100. package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
  101. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +3 -3
  102. package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +3 -3
  103. package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
  104. package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
  105. package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +3 -3
  106. package/esm2022/lib/ec-directive/index.mjs +1 -1
  107. package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
  108. package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
  109. package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
  110. package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
  111. package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
  112. package/esm2022/lib/ec-pipe/index.mjs +1 -1
  113. package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
  114. package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
  115. package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
  116. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
  117. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +1 -1
  118. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +1 -1
  119. package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
  120. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
  121. package/esm2022/lib/ec-services/auth.service.mjs +1 -1
  122. package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
  123. package/esm2022/lib/ec-services/base-api.service.mjs +1 -1
  124. package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
  125. package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
  126. package/esm2022/lib/ec-services/cart.service.mjs +4 -22
  127. package/esm2022/lib/ec-services/channel.service.mjs +1 -1
  128. package/esm2022/lib/ec-services/checkout.service.mjs +1 -1
  129. package/esm2022/lib/ec-services/currency.service.mjs +1 -1
  130. package/esm2022/lib/ec-services/filters.service.mjs +124 -18
  131. package/esm2022/lib/ec-services/form.service.mjs +1 -1
  132. package/esm2022/lib/ec-services/index.mjs +1 -1
  133. package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
  134. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
  135. package/esm2022/lib/ec-services/options.service.mjs +1 -1
  136. package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
  137. package/esm2022/lib/ec-services/orders.service.mjs +1 -1
  138. package/esm2022/lib/ec-services/pagination.service.mjs +70 -22
  139. package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
  140. package/esm2022/lib/ec-services/payment.service.mjs +1 -1
  141. package/esm2022/lib/ec-services/product-detail.service.mjs +1 -11
  142. package/esm2022/lib/ec-services/products.service.mjs +5 -3
  143. package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
  144. package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
  145. package/esm2022/lib/ec-services/runtime-config.service.mjs +1 -1
  146. package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
  147. package/esm2022/lib/ec-services/stores.service.mjs +1 -1
  148. package/esm2022/lib/ec-services/test.service.mjs +1 -1
  149. package/esm2022/lib/ec-services/toast.service.mjs +1 -1
  150. package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
  151. package/esm2022/lib/interceptors/index.mjs +1 -1
  152. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +1 -1
  153. package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
  154. package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
  155. package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
  156. package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
  157. package/esm2022/lib/interfaces/blocks.mjs +1 -1
  158. package/esm2022/lib/interfaces/checkout.mjs +1 -1
  159. package/esm2022/lib/interfaces/connection.mjs +1 -1
  160. package/esm2022/lib/interfaces/coupon.mjs +1 -1
  161. package/esm2022/lib/interfaces/currency.mjs +1 -1
  162. package/esm2022/lib/interfaces/deserializable.mjs +1 -1
  163. package/esm2022/lib/interfaces/environment.mjs +1 -1
  164. package/esm2022/lib/interfaces/faqs.mjs +1 -1
  165. package/esm2022/lib/interfaces/filter.mjs +1 -1
  166. package/esm2022/lib/interfaces/index.mjs +1 -1
  167. package/esm2022/lib/interfaces/options.mjs +1 -1
  168. package/esm2022/lib/interfaces/pagination.mjs +1 -1
  169. package/esm2022/lib/interfaces/parameter.mjs +1 -1
  170. package/esm2022/lib/interfaces/product.mjs +1 -1
  171. package/esm2022/lib/interfaces/runtime-config.mjs +1 -1
  172. package/esm2022/lib/interfaces/step.mjs +1 -1
  173. package/esm2022/lib/interfaces/storage.mjs +1 -1
  174. package/esm2022/lib/interfaces/store.mjs +1 -1
  175. package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
  176. package/esm2022/lib/providers/index.mjs +1 -1
  177. package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
  178. package/esm2022/lib/providers/provideRuntimeConfig.mjs +1 -1
  179. package/esm2022/lib/stores/currency.store.mjs +1 -1
  180. package/esm2022/public-api.mjs +1 -1
  181. package/fesm2022/ng-easycommerce-v18.mjs +639 -364
  182. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  183. package/lib/classes/filters/attributes-filter.d.ts +24 -0
  184. package/lib/classes/filters/category-filter.d.ts +30 -3
  185. package/lib/constants/core.constants.service.d.ts +7 -0
  186. package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +1 -1
  187. package/lib/ec-components/collection-ec/collection-ec.component.d.ts +5 -4
  188. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +13 -0
  189. package/lib/ec-components/price-range-filter/price-range-filter.component.d.ts +2 -0
  190. package/lib/ec-components/product-ec/product-ec.component.d.ts +0 -4
  191. package/lib/ec-services/cart.service.d.ts +1 -1
  192. package/lib/ec-services/filters.service.d.ts +18 -1
  193. package/lib/ec-services/pagination.service.d.ts +21 -5
  194. package/lib/ec-services/products.service.d.ts +1 -1
  195. package/lib/interfaces/product.d.ts +0 -6
  196. package/package.json +1 -1
@@ -32,4 +32,4 @@ export * from './reviews-form-ec/reviews-form-ec.component';
32
32
  export * from './section-container-ec/section-container-ec.component';
33
33
  export * from './stores-ec/stores-ec.component';
34
34
  export * from './price-range-filter/price-range-filter.component';
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsK0RBQStELENBQUE7QUFDN0UsY0FBYyxtRUFBbUUsQ0FBQTtBQUNqRixjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9vdGVyLWVjL2Zvb3Rlci1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2hlYWRlci1lYy9oZWFkZXItZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9ob21lLWVjL2hvbWUtZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9ibG9ja3MtZWMvYmxvY2tzLWVjLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdC1lYy9wcm9kdWN0LWVjLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbi1lYy9jb2xsZWN0aW9uLWVjLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVycy1zb3J0LWVjL2ZpbHRlcnMtc29ydC1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMtZWMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2F1dGgtZWMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlcnMtZWMvZmlsdGVycy1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb2R1Y3QtZGV0YWlsLWVjL3Byb2R1Y3QtZGV0YWlsLWVjLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmFyaWFudHMtZWMvdmFyaWFudHMtZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iLWVjL2JyZWFkY3J1bWItZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9jYXJ0LWVjJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb3Vwb24tZWMvY291cG9uLWVjLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udGFjdC1lYy9jb250YWN0LWVjLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tvdXQtZWMvY2hlY2tvdXQtZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9jaGVja291dC1lYy9zdWNjZXNzLWVjL3N1Y2Nlc3MtZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9hY2NvdW50LWVjJztcclxuZXhwb3J0ICogZnJvbSAnLi9ibG9ja3MtZWMvYmxvY2stbmV3c2xldHRlci1lYy9ibG9jay1uZXdzbGV0dGVyLWVjLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmxvY2tzLWVjL2Jsb2NrLWh0bWwtZWMvYmxvY2staHRtbC1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Jsb2Nrcy1lYy9ibG9jay1wcm9kdWN0cy1lYy9ibG9jay1wcm9kdWN0cy1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Jsb2Nrcy1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Jsb2Nrcy1lYy9ibG9jay1iYW5uZXItYm94LWVjL2Jsb2NrLWJhbm5lci1ib3gtZWMuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2Jsb2Nrcy1lYy9ibG9jay1mb3JtLWNvbnRhY3QtZWMvYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zaWRlYmFyLWVjL3NpZGViYXItZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9yZWxhdGVkLXByb2R1Y3RzLWVjL3JlbGF0ZWQtcHJvZHVjdHMtZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9mYXFzLWVjL2ZhcXMtZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zaGFyZS1lYy9zaGFyZS1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Jldmlld3MtZWMvcmV2aWV3cy1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Jldmlld3MtZm9ybS1lYy9yZXZpZXdzLWZvcm0tZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWN0aW9uLWNvbnRhaW5lci1lYy9zZWN0aW9uLWNvbnRhaW5lci1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N0b3Jlcy1lYy9zdG9yZXMtZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wcmljZS1yYW5nZS1maWx0ZXIvcHJpY2UtcmFuZ2UtZmlsdGVyLmNvbXBvbmVudCc7Il19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsK0RBQStELENBQUE7QUFDN0UsY0FBYyxtRUFBbUUsQ0FBQTtBQUNqRixjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9vdGVyLWVjL2Zvb3Rlci1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWFkZXItZWMvaGVhZGVyLWVjLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2hvbWUtZWMvaG9tZS1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ibG9ja3MtZWMvYmxvY2tzLWVjLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2R1Y3QtZWMvcHJvZHVjdC1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsZWN0aW9uLWVjL2NvbGxlY3Rpb24tZWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVycy1zb3J0LWVjL2ZpbHRlcnMtc29ydC1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzLWVjJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC1lYyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlcnMtZWMvZmlsdGVycy1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9kdWN0LWRldGFpbC1lYy9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi92YXJpYW50cy1lYy92YXJpYW50cy1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iLWVjL2JyZWFkY3J1bWItZWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2FydC1lYyc7XG5leHBvcnQgKiBmcm9tICcuL2NvdXBvbi1lYy9jb3Vwb24tZWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29udGFjdC1lYy9jb250YWN0LWVjLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NoZWNrb3V0LWVjL2NoZWNrb3V0LWVjLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NoZWNrb3V0LWVjL3N1Y2Nlc3MtZWMvc3VjY2Vzcy1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hY2NvdW50LWVjJztcbmV4cG9ydCAqIGZyb20gJy4vYmxvY2tzLWVjL2Jsb2NrLW5ld3NsZXR0ZXItZWMvYmxvY2stbmV3c2xldHRlci1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ibG9ja3MtZWMvYmxvY2staHRtbC1lYy9ibG9jay1odG1sLWVjLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Jsb2Nrcy1lYy9ibG9jay1wcm9kdWN0cy1lYy9ibG9jay1wcm9kdWN0cy1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ibG9ja3MtZWMvYmxvY2stYmFubmVyLWZ1bGwtZWMvYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYmxvY2tzLWVjL2Jsb2NrLWJhbm5lci1ib3gtZWMvYmxvY2stYmFubmVyLWJveC1lYy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2Jsb2Nrcy1lYy9ibG9jay1mb3JtLWNvbnRhY3QtZWMvYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vc2lkZWJhci1lYy9zaWRlYmFyLWVjLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JlbGF0ZWQtcHJvZHVjdHMtZWMvcmVsYXRlZC1wcm9kdWN0cy1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mYXFzLWVjL2ZhcXMtZWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmUtZWMvc2hhcmUtZWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmV2aWV3cy1lYy9yZXZpZXdzLWVjLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Jldmlld3MtZm9ybS1lYy9yZXZpZXdzLWZvcm0tZWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2VjdGlvbi1jb250YWluZXItZWMvc2VjdGlvbi1jb250YWluZXItZWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmVzLWVjL3N0b3Jlcy1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmljZS1yYW5nZS1maWx0ZXIvcHJpY2UtcmFuZ2UtZmlsdGVyLmNvbXBvbmVudCc7Il19
@@ -3,10 +3,13 @@ import { PriceRangeFilter } from '../../classes/filters/price_range-filter';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { EcCurrencySymbolPipe } from '../../ec-pipe';
5
5
  import { FiltersService } from '../../ec-services';
6
+ import { Router, ActivatedRoute } from '@angular/router';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/common";
8
9
  export class PriceRangeFilterComponent {
9
10
  _filtersService = inject(FiltersService);
11
+ router = inject(Router);
12
+ route = inject(ActivatedRoute);
10
13
  priceGap = 1;
11
14
  roundStep = 5;
12
15
  filter;
@@ -43,7 +46,15 @@ export class PriceRangeFilterComponent {
43
46
  return;
44
47
  const min = filter.currentMinPrice ?? filter.minPrice;
45
48
  const max = filter.currentMaxPrice ?? filter.maxPrice;
46
- this._filtersService.updatePriceRangeFilter(min, max);
49
+ this.router.navigate([], {
50
+ relativeTo: this.route,
51
+ queryParams: {
52
+ price_min: min !== filter.minPrice ? min : null,
53
+ price_max: max !== filter.maxPrice ? max : null,
54
+ page: null,
55
+ },
56
+ queryParamsHandling: 'merge'
57
+ });
47
58
  }
48
59
  getMinValue(filter) {
49
60
  return (filter instanceof PriceRangeFilter && filter.currentMinPrice != null)
@@ -130,14 +141,14 @@ export class PriceRangeFilterComponent {
130
141
  return value;
131
142
  }
132
143
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceRangeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
133
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PriceRangeFilterComponent, isStandalone: true, selector: "lib-price-range-filter", inputs: { filter: "filter" }, outputs: { rangeChanged: "rangeChanged" }, ngImport: i0, template: "<div class=\"slider\">\r\n <div class=\"slider\">\r\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"range-input d-flex gap-2\">\r\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n</div>\r\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\r\n<div class=\"price-container mt-2\">\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00EDnimo:</span>\r\n <span class=\"price-value\">\r\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\r\n </span>\r\n </div>\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00E1ximo:</span>\r\n <span class=\"price-value price-value-right\">\r\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\r\n </span>\r\n </div>\r\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"], dependencies: [{ kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
144
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PriceRangeFilterComponent, isStandalone: true, selector: "lib-price-range-filter", inputs: { filter: "filter" }, outputs: { rangeChanged: "rangeChanged" }, ngImport: i0, template: "<div class=\"slider\">\n <div class=\"slider\">\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\n </div>\n </div>\n</div>\n<div class=\"range-input d-flex gap-2\">\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\n (change)=\"updatePriceRange(filter); scrollUp()\">\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\n (change)=\"updatePriceRange(filter); scrollUp()\">\n</div>\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\n<div class=\"price-container mt-2\">\n <div class=\"price-label-wrapper\">\n <span class=\"price-label\">M\u00EDnimo:</span>\n <span class=\"price-value\">\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\n </span>\n </div>\n <div class=\"price-label-wrapper\">\n <span class=\"price-label\">M\u00E1ximo:</span>\n <span class=\"price-value price-value-right\">\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\n </span>\n </div>\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"], dependencies: [{ kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
134
145
  }
135
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceRangeFilterComponent, decorators: [{
136
147
  type: Component,
137
- args: [{ selector: 'lib-price-range-filter', standalone: true, imports: [EcCurrencySymbolPipe, CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slider\">\r\n <div class=\"slider\">\r\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"range-input d-flex gap-2\">\r\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n</div>\r\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\r\n<div class=\"price-container mt-2\">\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00EDnimo:</span>\r\n <span class=\"price-value\">\r\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\r\n </span>\r\n </div>\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00E1ximo:</span>\r\n <span class=\"price-value price-value-right\">\r\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\r\n </span>\r\n </div>\r\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"] }]
148
+ args: [{ selector: 'lib-price-range-filter', standalone: true, imports: [EcCurrencySymbolPipe, CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slider\">\n <div class=\"slider\">\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\n </div>\n </div>\n</div>\n<div class=\"range-input d-flex gap-2\">\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\n (change)=\"updatePriceRange(filter); scrollUp()\">\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\n (change)=\"updatePriceRange(filter); scrollUp()\">\n</div>\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\n<div class=\"price-container mt-2\">\n <div class=\"price-label-wrapper\">\n <span class=\"price-label\">M\u00EDnimo:</span>\n <span class=\"price-value\">\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\n </span>\n </div>\n <div class=\"price-label-wrapper\">\n <span class=\"price-label\">M\u00E1ximo:</span>\n <span class=\"price-value price-value-right\">\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\n </span>\n </div>\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"] }]
138
149
  }], propDecorators: { filter: [{
139
150
  type: Input
140
151
  }], rangeChanged: [{
141
152
  type: Output
142
153
  }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtcmFuZ2UtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3ByaWNlLXJhbmdlLWZpbHRlci9wcmljZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJpY2UtcmFuZ2UtZmlsdGVyL3ByaWNlLXJhbmdlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBVW5ELE1BQU0sT0FBTyx5QkFBeUI7SUFFNUIsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFakUsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFTCxNQUFNLENBQW9CO0lBQ3pCLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztJQUUxRSxjQUFjLENBQUMsTUFBVztRQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLFlBQVksZ0JBQWdCLENBQUM7WUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFB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QUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByaWNlUmFuZ2VGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvcHJpY2VfcmFuZ2UtZmlsdGVyJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRWNDdXJyZW5jeVN5bWJvbFBpcGUgfSBmcm9tICcuLi8uLi9lYy1waXBlJztcclxuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcmljZS1yYW5nZS1maWx0ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0VjQ3VycmVuY3lTeW1ib2xQaXBlLCBDb21tb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmljZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wcmljZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmljZVJhbmdlRmlsdGVyQ29tcG9uZW50IHtcclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlID0gaW5qZWN0KEZpbHRlcnNTZXJ2aWNlKTtcclxuXHJcbiAgcHJpY2VHYXAgPSAxO1xyXG4gIHJvdW5kU3RlcCA9IDU7XHJcblxyXG4gIEBJbnB1dCgpIGZpbHRlciE6IFByaWNlUmFuZ2VGaWx0ZXI7XHJcbiAgQE91dHB1dCgpIHJhbmdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfT4oKTtcclxuXHJcbiAgZ2V0U2xpZGVyU3R5bGUoZmlsdGVyOiBhbnkpOiB7IFtrbGFzczogc3RyaW5nXTogc3RyaW5nIH0ge1xyXG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybiB7IGxlZnQ6ICcwJScsIHJpZ2h0OiAnMCUnIH07XHJcblxyXG4gICAgY29uc3QgbGVmdCA9IHRoaXMuY2FsY3VsYXRlTGVmdFBlcmNlbnRhZ2UoZmlsdGVyKTtcclxuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5jYWxjdWxhdGVSaWdodFBlcmNlbnRhZ2UoZmlsdGVyKTtcclxuICAgIHJldHVybiB7IGxlZnQ6IGAke2xlZnR9JWAsIHJpZ2h0OiBgJHtyaWdodH0lYCB9O1xyXG4gIH1cclxuXHJcbiAgLy8gTcOpdG9kb3MgcGFyYSBhY3R1YWxpemFyIGxhIGJhcnJhIGRlbCBmaWx0cm8gcG9yIHByZWNpb1xyXG4gIGNhbGN1bGF0ZUxlZnRQZXJjZW50YWdlKGZpbHRlcjogYW55KTogbnVtYmVyIHtcclxuICAgIGlmICghKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIpKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCBtaW4gPSBmaWx0ZXIubWluUHJpY2U7XHJcbiAgICBjb25zdCBtYXggPSBmaWx0ZXIubWF4UHJpY2U7XHJcbiAgICBjb25zdCBjdXJyZW50TWluID0gZmlsdGVyLmN1cnJlbnRNaW5QcmljZSA/PyBtaW47XHJcblxyXG4gICAgY29uc3QgY2xhbXBlZE1pbiA9IE1hdGgubWF4KG1pbiwgTWF0aC5taW4oY3VycmVudE1pbiwgbWF4KSk7XHJcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4oKChjbGFtcGVkTWluIC0gbWluKSAvIChtYXggLSBtaW4pKSAqIDEwMCwgMTAwKSk7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVSaWdodFBlcmNlbnRhZ2UoZmlsdGVyOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybiAwO1xyXG5cclxuICAgIGNvbnN0IG1pbiA9IGZpbHRlci5taW5QcmljZTtcclxuICAgIGNvbnN0IG1heCA9IGZpbHRlci5tYXhQcmljZTtcclxuICAgIGNvbnN0IGN1cnJlbnRNYXggPSBmaWx0ZXIuY3VycmVudE1heFByaWNlID8/IG1heDtcclxuXHJcbiAgICBjb25zdCBjbGFtcGVkTWF4ID0gTWF0aC5tYXgobWluLCBNYXRoLm1pbihjdXJyZW50TWF4LCBtYXgpKTtcclxuICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAgLSAoKGNsYW1wZWRNYXggLSBtaW4pIC8gKG1heCAtIG1pbikpICogMTAwLCAxMDApKTtcclxuICB9XHJcblxyXG4gIC8vIE3DqXRvZG8gcGFyYSBhY3R1YWxpemFyIGxvcyB2YWxvcmVzIGRlIHByZWNpbyBzZWxlY2Npb25hZG9zXHJcbiAgdXBkYXRlUHJpY2VSYW5nZShmaWx0ZXI6IGFueSkge1xyXG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtaW4gPSBmaWx0ZXIuY3VycmVudE1pblByaWNlID8/IGZpbHRlci5taW5QcmljZTtcclxuICAgIGNvbnN0IG1heCA9IGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPz8gZmlsdGVyLm1heFByaWNlO1xyXG4gICAgdGhpcy5fZmlsdGVyc1NlcnZpY2UudXBkYXRlUHJpY2VSYW5nZUZpbHRlcihtaW4sIG1heCk7XHJcbiAgfVxyXG5cclxuICBnZXRNaW5WYWx1ZShmaWx0ZXI6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIgJiYgZmlsdGVyLmN1cnJlbnRNaW5QcmljZSAhPSBudWxsKVxyXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWluUHJpY2VcclxuICAgICAgOiBmaWx0ZXIubWluUHJpY2U7XHJcbiAgfVxyXG5cclxuICBnZXRNYXhWYWx1ZShmaWx0ZXI6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIgJiYgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSAhPSBudWxsKVxyXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWF4UHJpY2VcclxuICAgICAgOiBmaWx0ZXIubWF4UHJpY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFJlZG9uZGVhIGFsIG3Dumx0aXBsbyBkZSAnc3RlcCcgcmVzcGV0YW5kbyBlbCByZWRvbmRlbyBlbnRlcm86XHJcbiAgKiAtIE3DrW5pbW86IHJlZG9uZGVhIGhhY2lhIGFiYWpvLlxyXG4gICogLSBNw6F4aW1vOiByZWRvbmRlYSBoYWNpYSBhcnJpYmEuXHJcbiAgKi9cclxuICBvblJhbmdlQ2hhbmdlKGV2ZW50OiBFdmVudCwgdHlwZTogJ21pbicgfCAnbWF4JywgZmlsdGVyOiBhbnkpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KGlucHV0LnZhbHVlKTtcclxuICAgIHZhbHVlID0gdGhpcy5yb3VuZFRvTmVhcmVzdCh2YWx1ZSwgdGhpcy5yb3VuZFN0ZXAsIHR5cGUsIGZpbHRlcik7XHJcbiAgICB0aGlzLnVwZGF0ZUZpbHRlclByaWNlcyh0eXBlLCB2YWx1ZSwgZmlsdGVyLCB0aGlzLnByaWNlR2FwKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByb3VuZFRvTmVhcmVzdCh2YWx1ZTogbnVtYmVyLCBzdGVwOiBudW1iZXIsIHR5cGU6ICdtaW4nIHwgJ21heCcsIGZpbHRlcjogYW55KTogbnVtYmVyIHtcclxuICAgIGxldCByb3VuZGVkID0gTWF0aC5yb3VuZCh2YWx1ZSAvIHN0ZXApICogc3RlcDtcclxuICAgIGlmICh0eXBlID09PSAnbWF4JyAmJiByb3VuZGVkIDwgZmlsdGVyLm1heFByaWNlKSB7XHJcbiAgICAgIHJvdW5kZWQgPSBNYXRoLmNlaWwodmFsdWUgLyBzdGVwKSAqIHN0ZXA7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PT0gJ21pbicgJiYgcm91bmRlZCA+IGZpbHRlci5taW5QcmljZSkge1xyXG4gICAgICByb3VuZGVkID0gTWF0aC5mbG9vcih2YWx1ZSAvIHN0ZXApICogc3RlcDtcclxuICAgIH1cclxuICAgIHJldHVybiByb3VuZGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBBY3R1YWxpemEgbG9zIHZhbG9yZXMgZGVsIGZpbHRybyBwZXJtaXRpZW5kbyBxdWUgdW4gaW5wdXQgZW1wdWplIGFsIG90cm8uXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgdXBkYXRlRmlsdGVyUHJpY2VzKHR5cGU6ICdtaW4nIHwgJ21heCcsIHZhbHVlOiBudW1iZXIsIGZpbHRlcjogYW55LCBwcmljZUdhcDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBnbG9iYWxNaW4gPSBmaWx0ZXIubWluUHJpY2UgPz8gMDtcclxuICAgIGNvbnN0IGdsb2JhbE1heCA9IGZpbHRlci5tYXhQcmljZTtcclxuXHJcbiAgICBsZXQgY3VycmVudE1pbiA9IGZpbHRlci5jdXJyZW50TWluUHJpY2UgPz8gZ2xvYmFsTWluO1xyXG4gICAgbGV0IGN1cnJlbnRNYXggPSBmaWx0ZXIuY3VycmVudE1heFByaWNlID8/IGdsb2JhbE1heDtcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gJ21pbicpIHtcclxuICAgICAgbGV0IG5ld01pbiA9IE1hdGgubWluKE1hdGgubWF4KHZhbHVlLCBnbG9iYWxNaW4pLCBnbG9iYWxNYXgpO1xyXG4gICAgICBpZiAobmV3TWluICsgcHJpY2VHYXAgPiBjdXJyZW50TWF4KSB7XHJcbiAgICAgICAgbGV0IG5ld01heENhbmRpZGF0ZSA9IG5ld01pbiArIHByaWNlR2FwO1xyXG4gICAgICAgIGlmIChuZXdNYXhDYW5kaWRhdGUgPD0gZ2xvYmFsTWF4KSB7XHJcbiAgICAgICAgICBjdXJyZW50TWF4ID0gbmV3TWF4Q2FuZGlkYXRlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXdNaW4gPSBnbG9iYWxNYXggLSBwcmljZUdhcDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZmlsdGVyLmN1cnJlbnRNaW5QcmljZSA9IG5ld01pbjtcclxuICAgICAgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA9IGN1cnJlbnRNYXg7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtYXgnKSB7XHJcbiAgICAgIGxldCBuZXdNYXggPSBNYXRoLm1heChNYXRoLm1pbih2YWx1ZSwgZ2xvYmFsTWF4KSwgZ2xvYmFsTWluKTtcclxuICAgICAgaWYgKG5ld01heCAtIHByaWNlR2FwIDwgY3VycmVudE1pbikge1xyXG4gICAgICAgIGxldCBuZXdNaW5DYW5kaWRhdGUgPSBuZXdNYXggLSBwcmljZUdhcDtcclxuICAgICAgICBpZiAobmV3TWluQ2FuZGlkYXRlID49IGdsb2JhbE1pbikge1xyXG4gICAgICAgICAgY3VycmVudE1pbiA9IG5ld01pbkNhbmRpZGF0ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbmV3TWF4ID0gZ2xvYmFsTWluICsgcHJpY2VHYXA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPSBuZXdNYXg7XHJcbiAgICAgIGZpbHRlci5jdXJyZW50TWluUHJpY2UgPSBjdXJyZW50TWluO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVXAgPSAoKSA9PiB7XHJcbiAgICB3aW5kb3cuc2Nyb2xsKDAsIDApO1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIGdldEZvcm1hdHRlZE1pblByaWNlKGZpbHRlcjogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbHVlID0gKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIgJiYgZmlsdGVyLmN1cnJlbnRNaW5QcmljZSAhPSBudWxsKVxyXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWluUHJpY2VcclxuICAgICAgOiBmaWx0ZXIubWluUHJpY2U7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtYXR0ZWRNYXhQcmljZShmaWx0ZXI6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyICYmIGZpbHRlci5jdXJyZW50TWF4UHJpY2UgIT0gbnVsbClcclxuICAgICAgPyBmaWx0ZXIuY3VycmVudE1heFByaWNlXHJcbiAgICAgIDogZmlsdGVyLm1heFByaWNlO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2xpZGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2xpZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCIgW25nU3R5bGVdPVwiZ2V0U2xpZGVyU3R5bGUoZmlsdGVyKVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicmFuZ2UtaW5wdXQgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICA8aW5wdXQgI3JhbmdlTWluIHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwicmFuZ2UtbWluXCIgW21pbl09XCJmaWx0ZXIubWluUHJpY2VcIiBbbWF4XT1cImZpbHRlci5tYXhQcmljZVwiXHJcbiAgICAgICAgW3ZhbHVlXT1cImdldE1pblZhbHVlKGZpbHRlcilcIiAoaW5wdXQpPVwib25SYW5nZUNoYW5nZSgkZXZlbnQsICdtaW4nLCBmaWx0ZXIpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVByaWNlUmFuZ2UoZmlsdGVyKTsgc2Nyb2xsVXAoKVwiPlxyXG4gICAgPGlucHV0ICNyYW5nZU1heCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cInJhbmdlLW1heFwiIFttaW5dPVwiZmlsdGVyLm1pblByaWNlXCIgW21heF09XCJmaWx0ZXIubWF4UHJpY2VcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJnZXRNYXhWYWx1ZShmaWx0ZXIpXCIgKGlucHV0KT1cIm9uUmFuZ2VDaGFuZ2UoJGV2ZW50LCAnbWF4JywgZmlsdGVyKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVQcmljZVJhbmdlKGZpbHRlcik7IHNjcm9sbFVwKClcIj5cclxuPC9kaXY+XHJcbjwhLS0gcHJlY2lvcyBNw61uaW1vIC8gTcOheGltbyAtLT5cclxuPGRpdiBjbGFzcz1cInByaWNlLWNvbnRhaW5lciBtdC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtbGFiZWwtd3JhcHBlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtbGFiZWxcIj5Nw61uaW1vOjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLXZhbHVlXCI+XHJcbiAgICAgICAgICAgIHt7IChnZXRGb3JtYXR0ZWRNaW5QcmljZShmaWx0ZXIpIHwgZWNDdXJyZW5jeVN5bWJvbCkgfHwgJzAnIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtbGFiZWwtd3JhcHBlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtbGFiZWxcIj5Nw6F4aW1vOjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLXZhbHVlIHByaWNlLXZhbHVlLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZE1heFByaWNlKGZpbHRlcikgfCBlY0N1cnJlbmN5U3ltYm9sIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtcmFuZ2UtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3ByaWNlLXJhbmdlLWZpbHRlci9wcmljZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJpY2UtcmFuZ2UtZmlsdGVyL3ByaWNlLXJhbmdlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFVekQsTUFBTSxPQUFPLHlCQUF5QjtJQUU1QixlQUFlLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6RCxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLEtBQUssR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXZELFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDYixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRUwsTUFBTSxDQUFvQjtJQUN6QixZQUFZLEdB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Q0FBQztJQUVELG9CQUFvQixDQUFDLE1BQVc7UUFDOUIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLFlBQVksZ0JBQWdCLElBQUksTUFBTSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUM7WUFDbEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlO1lBQ3hCLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0F0SlUseUJBQXlCOzRGQUF6Qix5QkFBeUIsMkpDZnRDLDR4Q0E0Qk0sOG5ERGxCTSxvQkFBb0Isd0RBQUUsWUFBWTs7NEZBS2pDLHlCQUF5QjtrQkFSckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxDQUFDLG1CQUc1Qix1QkFBdUIsQ0FBQyxNQUFNOzhCQVd0QyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL3ByaWNlX3JhbmdlLWZpbHRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRWNDdXJyZW5jeVN5bWJvbFBpcGUgfSBmcm9tICcuLi8uLi9lYy1waXBlJztcbmltcG9ydCB7IEZpbHRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcmljZS1yYW5nZS1maWx0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRWNDdXJyZW5jeVN5bWJvbFBpcGUsIENvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmljZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcHJpY2UtcmFuZ2UtZmlsdGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUHJpY2VSYW5nZUZpbHRlckNvbXBvbmVudCB7XG5cbiAgcHJpdmF0ZSBfZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlID0gaW5qZWN0KEZpbHRlcnNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgcHJpY2VHYXAgPSAxO1xuICByb3VuZFN0ZXAgPSA1O1xuXG4gIEBJbnB1dCgpIGZpbHRlciE6IFByaWNlUmFuZ2VGaWx0ZXI7XG4gIEBPdXRwdXQoKSByYW5nZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0+KCk7XG5cbiAgZ2V0U2xpZGVyU3R5bGUoZmlsdGVyOiBhbnkpOiB7IFtrbGFzczogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGlmICghKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIpKSByZXR1cm4geyBsZWZ0OiAnMCUnLCByaWdodDogJzAlJyB9O1xuXG4gICAgY29uc3QgbGVmdCA9IHRoaXMuY2FsY3VsYXRlTGVmdFBlcmNlbnRhZ2UoZmlsdGVyKTtcbiAgICBjb25zdCByaWdodCA9IHRoaXMuY2FsY3VsYXRlUmlnaHRQZXJjZW50YWdlKGZpbHRlcik7XG4gICAgcmV0dXJuIHsgbGVmdDogYCR7bGVmdH0lYCwgcmlnaHQ6IGAke3JpZ2h0fSVgIH07XG4gIH1cblxuICAvLyBNw6l0b2RvcyBwYXJhIGFjdHVhbGl6YXIgbGEgYmFycmEgZGVsIGZpbHRybyBwb3IgcHJlY2lvXG4gIGNhbGN1bGF0ZUxlZnRQZXJjZW50YWdlKGZpbHRlcjogYW55KTogbnVtYmVyIHtcbiAgICBpZiAoIShmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyKSkgcmV0dXJuIDA7XG5cbiAgICBjb25zdCBtaW4gPSBmaWx0ZXIubWluUHJpY2U7XG4gICAgY29uc3QgbWF4ID0gZmlsdGVyLm1heFByaWNlO1xuICAgIGNvbnN0IGN1cnJlbnRNaW4gPSBmaWx0ZXIuY3VycmVudE1pblByaWNlID8/IG1pbjtcblxuICAgIGNvbnN0IGNsYW1wZWRNaW4gPSBNYXRoLm1heChtaW4sIE1hdGgubWluKGN1cnJlbnRNaW4sIG1heCkpO1xuICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigoKGNsYW1wZWRNaW4gLSBtaW4pIC8gKG1heCAtIG1pbikpICogMTAwLCAxMDApKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZVJpZ2h0UGVyY2VudGFnZShmaWx0ZXI6IGFueSk6IG51bWJlciB7XG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybiAwO1xuXG4gICAgY29uc3QgbWluID0gZmlsdGVyLm1pblByaWNlO1xuICAgIGNvbnN0IG1heCA9IGZpbHRlci5tYXhQcmljZTtcbiAgICBjb25zdCBjdXJyZW50TWF4ID0gZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA/PyBtYXg7XG5cbiAgICBjb25zdCBjbGFtcGVkTWF4ID0gTWF0aC5tYXgobWluLCBNYXRoLm1pbihjdXJyZW50TWF4LCBtYXgpKTtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwIC0gKChjbGFtcGVkTWF4IC0gbWluKSAvIChtYXggLSBtaW4pKSAqIDEwMCwgMTAwKSk7XG4gIH1cblxuICAvLyBNw6l0b2RvIHBhcmEgYWN0dWFsaXphciBsb3MgdmFsb3JlcyBkZSBwcmVjaW8gc2VsZWNjaW9uYWRvc1xuICB1cGRhdGVQcmljZVJhbmdlKGZpbHRlcjogYW55KSB7XG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybjtcblxuICAgIGNvbnN0IG1pbiA9IGZpbHRlci5jdXJyZW50TWluUHJpY2UgPz8gZmlsdGVyLm1pblByaWNlO1xuICAgIGNvbnN0IG1heCA9IGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPz8gZmlsdGVyLm1heFByaWNlO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBwcmljZV9taW46IG1pbiAhPT0gZmlsdGVyLm1pblByaWNlID8gbWluIDogbnVsbCxcbiAgICAgICAgcHJpY2VfbWF4OiBtYXggIT09IGZpbHRlci5tYXhQcmljZSA/IG1heCA6IG51bGwsXG4gICAgICAgIHBhZ2U6IG51bGwsXG4gICAgICB9LFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWluVmFsdWUoZmlsdGVyOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiAoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlciAmJiBmaWx0ZXIuY3VycmVudE1pblByaWNlICE9IG51bGwpXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWluUHJpY2VcbiAgICAgIDogZmlsdGVyLm1pblByaWNlO1xuICB9XG5cbiAgZ2V0TWF4VmFsdWUoZmlsdGVyOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiAoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlciAmJiBmaWx0ZXIuY3VycmVudE1heFByaWNlICE9IG51bGwpXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWF4UHJpY2VcbiAgICAgIDogZmlsdGVyLm1heFByaWNlO1xuICB9XG5cbiAgLyoqXG4gICogUmVkb25kZWEgYWwgbcO6bHRpcGxvIGRlICdzdGVwJyByZXNwZXRhbmRvIGVsIHJlZG9uZGVvIGVudGVybzpcbiAgKiAtIE3DrW5pbW86IHJlZG9uZGVhIGhhY2lhIGFiYWpvLlxuICAqIC0gTcOheGltbzogcmVkb25kZWEgaGFjaWEgYXJyaWJhLlxuICAqL1xuICBvblJhbmdlQ2hhbmdlKGV2ZW50OiBFdmVudCwgdHlwZTogJ21pbicgfCAnbWF4JywgZmlsdGVyOiBhbnkpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoaW5wdXQudmFsdWUpO1xuICAgIHZhbHVlID0gdGhpcy5yb3VuZFRvTmVhcmVzdCh2YWx1ZSwgdGhpcy5yb3VuZFN0ZXAsIHR5cGUsIGZpbHRlcik7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJQcmljZXModHlwZSwgdmFsdWUsIGZpbHRlciwgdGhpcy5wcmljZUdhcCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcm91bmRUb05lYXJlc3QodmFsdWU6IG51bWJlciwgc3RlcDogbnVtYmVyLCB0eXBlOiAnbWluJyB8ICdtYXgnLCBmaWx0ZXI6IGFueSk6IG51bWJlciB7XG4gICAgbGV0IHJvdW5kZWQgPSBNYXRoLnJvdW5kKHZhbHVlIC8gc3RlcCkgKiBzdGVwO1xuICAgIGlmICh0eXBlID09PSAnbWF4JyAmJiByb3VuZGVkIDwgZmlsdGVyLm1heFByaWNlKSB7XG4gICAgICByb3VuZGVkID0gTWF0aC5jZWlsKHZhbHVlIC8gc3RlcCkgKiBzdGVwO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ21pbicgJiYgcm91bmRlZCA+IGZpbHRlci5taW5QcmljZSkge1xuICAgICAgcm91bmRlZCA9IE1hdGguZmxvb3IodmFsdWUgLyBzdGVwKSAqIHN0ZXA7XG4gICAgfVxuICAgIHJldHVybiByb3VuZGVkO1xuICB9XG5cbiAgLyoqXG4gICogQWN0dWFsaXphIGxvcyB2YWxvcmVzIGRlbCBmaWx0cm8gcGVybWl0aWVuZG8gcXVlIHVuIGlucHV0IGVtcHVqZSBhbCBvdHJvLlxuICAqL1xuICBwcm90ZWN0ZWQgdXBkYXRlRmlsdGVyUHJpY2VzKHR5cGU6ICdtaW4nIHwgJ21heCcsIHZhbHVlOiBudW1iZXIsIGZpbHRlcjogYW55LCBwcmljZUdhcDogbnVtYmVyKSB7XG4gICAgY29uc3QgZ2xvYmFsTWluID0gZmlsdGVyLm1pblByaWNlID8/IDA7XG4gICAgY29uc3QgZ2xvYmFsTWF4ID0gZmlsdGVyLm1heFByaWNlO1xuXG4gICAgbGV0IGN1cnJlbnRNaW4gPSBmaWx0ZXIuY3VycmVudE1pblByaWNlID8/IGdsb2JhbE1pbjtcbiAgICBsZXQgY3VycmVudE1heCA9IGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPz8gZ2xvYmFsTWF4O1xuXG4gICAgaWYgKHR5cGUgPT09ICdtaW4nKSB7XG4gICAgICBsZXQgbmV3TWluID0gTWF0aC5taW4oTWF0aC5tYXgodmFsdWUsIGdsb2JhbE1pbiksIGdsb2JhbE1heCk7XG4gICAgICBpZiAobmV3TWluICsgcHJpY2VHYXAgPiBjdXJyZW50TWF4KSB7XG4gICAgICAgIGxldCBuZXdNYXhDYW5kaWRhdGUgPSBuZXdNaW4gKyBwcmljZUdhcDtcbiAgICAgICAgaWYgKG5ld01heENhbmRpZGF0ZSA8PSBnbG9iYWxNYXgpIHtcbiAgICAgICAgICBjdXJyZW50TWF4ID0gbmV3TWF4Q2FuZGlkYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld01pbiA9IGdsb2JhbE1heCAtIHByaWNlR2FwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmaWx0ZXIuY3VycmVudE1pblByaWNlID0gbmV3TWluO1xuICAgICAgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA9IGN1cnJlbnRNYXg7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbWF4Jykge1xuICAgICAgbGV0IG5ld01heCA9IE1hdGgubWF4KE1hdGgubWluKHZhbHVlLCBnbG9iYWxNYXgpLCBnbG9iYWxNaW4pO1xuICAgICAgaWYgKG5ld01heCAtIHByaWNlR2FwIDwgY3VycmVudE1pbikge1xuICAgICAgICBsZXQgbmV3TWluQ2FuZGlkYXRlID0gbmV3TWF4IC0gcHJpY2VHYXA7XG4gICAgICAgIGlmIChuZXdNaW5DYW5kaWRhdGUgPj0gZ2xvYmFsTWluKSB7XG4gICAgICAgICAgY3VycmVudE1pbiA9IG5ld01pbkNhbmRpZGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdNYXggPSBnbG9iYWxNaW4gKyBwcmljZUdhcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA9IG5ld01heDtcbiAgICAgIGZpbHRlci5jdXJyZW50TWluUHJpY2UgPSBjdXJyZW50TWluO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFVwID0gKCkgPT4ge1xuICAgIHdpbmRvdy5zY3JvbGwoMCwgMCk7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGdldEZvcm1hdHRlZE1pblByaWNlKGZpbHRlcjogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IChmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyICYmIGZpbHRlci5jdXJyZW50TWluUHJpY2UgIT0gbnVsbClcbiAgICAgID8gZmlsdGVyLmN1cnJlbnRNaW5QcmljZVxuICAgICAgOiBmaWx0ZXIubWluUHJpY2U7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkTWF4UHJpY2UoZmlsdGVyOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIgJiYgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSAhPSBudWxsKVxuICAgICAgPyBmaWx0ZXIuY3VycmVudE1heFByaWNlXG4gICAgICA6IGZpbHRlci5tYXhQcmljZTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzbGlkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2xpZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiIFtuZ1N0eWxlXT1cImdldFNsaWRlclN0eWxlKGZpbHRlcilcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJyYW5nZS1pbnB1dCBkLWZsZXggZ2FwLTJcIj5cbiAgICA8aW5wdXQgI3JhbmdlTWluIHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwicmFuZ2UtbWluXCIgW21pbl09XCJmaWx0ZXIubWluUHJpY2VcIiBbbWF4XT1cImZpbHRlci5tYXhQcmljZVwiXG4gICAgICAgIFt2YWx1ZV09XCJnZXRNaW5WYWx1ZShmaWx0ZXIpXCIgKGlucHV0KT1cIm9uUmFuZ2VDaGFuZ2UoJGV2ZW50LCAnbWluJywgZmlsdGVyKVwiXG4gICAgICAgIChjaGFuZ2UpPVwidXBkYXRlUHJpY2VSYW5nZShmaWx0ZXIpOyBzY3JvbGxVcCgpXCI+XG4gICAgPGlucHV0ICNyYW5nZU1heCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cInJhbmdlLW1heFwiIFttaW5dPVwiZmlsdGVyLm1pblByaWNlXCIgW21heF09XCJmaWx0ZXIubWF4UHJpY2VcIlxuICAgICAgICBbdmFsdWVdPVwiZ2V0TWF4VmFsdWUoZmlsdGVyKVwiIChpbnB1dCk9XCJvblJhbmdlQ2hhbmdlKCRldmVudCwgJ21heCcsIGZpbHRlcilcIlxuICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVByaWNlUmFuZ2UoZmlsdGVyKTsgc2Nyb2xsVXAoKVwiPlxuPC9kaXY+XG48IS0tIHByZWNpb3MgTcOtbmltbyAvIE3DoXhpbW8gLS0+XG48ZGl2IGNsYXNzPVwicHJpY2UtY29udGFpbmVyIG10LTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtbGFiZWwtd3JhcHBlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLWxhYmVsXCI+TcOtbmltbzo8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtdmFsdWVcIj5cbiAgICAgICAgICAgIHt7IChnZXRGb3JtYXR0ZWRNaW5QcmljZShmaWx0ZXIpIHwgZWNDdXJyZW5jeVN5bWJvbCkgfHwgJzAnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtbGFiZWwtd3JhcHBlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLWxhYmVsXCI+TcOheGltbzo8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtdmFsdWUgcHJpY2UtdmFsdWUtcmlnaHRcIj5cbiAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZE1heFByaWNlKGZpbHRlcikgfCBlY0N1cnJlbmN5U3ltYm9sIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -219,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
219
219
  type: Component,
220
220
  args: [{ selector: 'app-product-detail-ec', standalone: true, imports: [VariantsEcComponent], template: "" }]
221
221
  }], ctorParameters: () => [] });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWtCLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2RCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1C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LENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0lBRUg7O1FBRUk7SUFDSixnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsU0FBYztRQUM1QyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsK0RBQStEO1FBQy9ELElBQUksT0FBUSxJQUFZLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2pELElBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsOENBQThDO1FBQzlDLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO3dHQXRPVSx3QkFBd0I7NEZBQXhCLHdCQUF3QixpRkMxQnJDLEVBQUE7OzRGRDBCYSx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIEluamVjdG9yLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSwgQ2hhbm5lbFNlcnZpY2UsIENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIFdyaXRhYmxlU2lnbmFsLCBzaWduYWwsIFBMQVRGT1JNX0lELCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNZXRhLCBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUHJvZHVjdERldGFpbFNlcnZpY2UsIFByb2R1Y3RzU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0ICogYXMgaGUgZnJvbSAnaGUnO1xyXG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgVmFyaWFudHNFY0NvbXBvbmVudCB9IGZyb20gJy4uL3ZhcmlhbnRzLWVjL3ZhcmlhbnRzLWVjLmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wcm9kdWN0LWRldGFpbC1lYycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbVmFyaWFudHNFY0NvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZGV0YWlsLWVjLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RGV0YWlsRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKVxyXG4gIHByaXZhdGUgX29wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSA9IGluamVjdChPcHRpb25zU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfcHJvZHVjdERldGFpbFNlcnZpY2U6IFByb2R1Y3REZXRhaWxTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3REZXRhaWxTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9wcm9kdWN0U2VydmljZTogUHJvZHVjdHNTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RzU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfYWN0aXZlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcclxuICBwcml2YXRlIF9jb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcclxuICBwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcGFyYW1ldGVyc1NlcnZpY2UgPSBpbmplY3QoUGFyYW1ldGVyc1NlcnZpY2UpO1xyXG4gIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG4gIHByaXZhdGUgX21ldGE6IE1ldGEgPSBpbmplY3QoTWV0YSk7XHJcbiAgcHJpdmF0ZSBfdGl0bGU6IFRpdGxlID0gaW5qZWN0KFRpdGxlKTtcclxuICBwcml2YXRlIF9sb2NhdGlvbjogTG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG4gIHB1YmxpYyBwcm9kdWN0JDogT2JzZXJ2YWJsZTxQcm9kdWN0IHwgbnVsbD4gPSB0aGlzLl9wcm9kdWN0RGV0YWlsU2VydmljZS5wcm9kdWN0JDtcclxuICBwdWJsaWMgb3B0aW9ucyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLm9wdGlvbnMkO1xyXG4gIHB1YmxpYyBkYXRhJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UuYXNzb2NpYXRlZERhdGEkO1xyXG4gIHByaXZhdGUgcm91dGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgcHJpdmF0ZSBjdXJyZW50UHJvZHVjdElkPzogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcblxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbWVkaWFVcmwgPSB0aGlzLl9jb25zdHMubWVkaWFVcmwoKTtcclxuICBwdWJsaWMgY29kZTogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIHNob3dGb3JtQ29udGFjdCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93UmV2aWV3czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXNldDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzdWNjZXNzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGNhdGVnb3JpZXM6IGFueVtdID0gW107XHJcbiAgcHVibGljIHNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBoaWRlUHJpY2VzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBxdWFudGl0eTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgxKTtcclxuICBwdWJsaWMgaXNBZGRpbmdUb0NhcnQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBwdWJsaWMgcGFyYW1ldGVycyQ6IE9ic2VydmFibGU8UGFyYW1ldGVyW10gfCBudWxsPiA9IHRoaXMucGFyYW1ldGVyc1NlcnZpY2UuZ2V0UGFyYW1ldGVycygpO1xyXG4gIHB1YmxpYyBoYXNQYXJhbXMgPSB0aGlzLnBhcmFtZXRlcnNTZXJ2aWNlLmhhc1BhcmFtc1xyXG4gIHB1YmxpYyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlczogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xyXG4gIC8vIEFncmVnYXIgZXN0YSBwcm9waWVkYWQgYWwgaW5pY2lvIGRlIGxhIGNsYXNlXHJcbiAgcHJpdmF0ZSBwcm9kdWN0U2lnbmFsID0gc2lnbmFsPFByb2R1Y3QgfCBudWxsPihudWxsKTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fYWN0aXZlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocXVlcnlQYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLmNvZGUgPSBxdWVyeVBhcmFtc1tcImlkXCJdO1xyXG4gICAgICB0aGlzLl9wcm9kdWN0RGV0YWlsU2VydmljZS5sb2FkUHJvZHVjdCh0aGlzLmNvZGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9hY3RpdmVkUm91dGUucGFyYW1zLnN1YnNjcmliZShxdWVyeVBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuY29kZSA9IHF1ZXJ5UGFyYW1zW1wiaWRcIl07XHJcbiAgICAgIHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmxvYWRQcm9kdWN0KHRoaXMuY29kZSk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbFNlcnZpY2UpLmNoYW5uZWwkLnN1YnNjcmliZShjaGFubmVsID0+IHtcclxuICAgICAgdGhpcy5zaG93UmV2aWV3cyA9IGNoYW5uZWwuc2hvd1Jldmlld3M7XHJcbiAgICAgIHRoaXMuc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzID0gISFjaGFubmVsLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycztcclxuICAgICAgdGhpcy5oaWRlUHJpY2VzID0gISFjaGFubmVsLmhpZGVQcmljZXM7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX29wdGlvbnNTZXJ2aWNlLmdldENhdGVnb3JpZXMoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5jYXRlZ29yaWVzID0gcmVzO1xyXG4gICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuX2NhcnRTZXJ2aWNlLnNob3dQcmljZSQuc3Vic2NyaWJlKChzaG93UHJpY2UpID0+IHtcclxuICAgICAgdGhpcy5jcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA9IHNob3dQcmljZTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucHJvZHVjdCQuc3Vic2NyaWJlKHByb2R1Y3QgPT4ge1xyXG4gICAgICB0aGlzLnByb2R1Y3RTaWduYWwuc2V0KHByb2R1Y3QpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnByb2R1Y3QkLnN1YnNjcmliZShwcm9kdWN0ID0+IHtcclxuICAgICAgaWYgKHByb2R1Y3QpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZU1ldGFUYWdzKHByb2R1Y3QpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIFN1c2NyaWJpcnNlIGEgbG9zIGNhbWJpb3MgZGUgcGFyw6FtZXRyb3MgZGUgbGEgcnV0YVxyXG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICBjb25zdCBuZXdQcm9kdWN0SWQgPSBwYXJhbXNbJ2lkJ107XHJcbiAgICAgIGlmIChuZXdQcm9kdWN0SWQgJiYgbmV3UHJvZHVjdElkICE9PSB0aGlzLmN1cnJlbnRQcm9kdWN0SWQpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQcm9kdWN0SWQgPSBuZXdQcm9kdWN0SWQ7XHJcblxyXG4gICAgICAgIC8vIFJlc2V0ZWFyIGVsIGVzdGFkbyBkZWwgbW9kYWwgZGUgcmVzZcOxYXMgY3VhbmRvIGNhbWJpZSBlbCBwcm9kdWN0b1xyXG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdNb2RhbCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICB1cGRhdGVNZXRhVGFncyhwcm9kdWN0OiBQcm9kdWN0KSB7XHJcbiAgICBjb25zdCBkZXNjcmlwY2lvbkxpbXBpYSA9IGhlLmRlY29kZShwcm9kdWN0LmRlc2NyaXB0aW9uIHx8ICcnKS5yZXBsYWNlKC88W14+XSo+L2csICcgJykucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKTtcclxuICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLl9jb25zdHMuZ2V0RnJvbnRlbmRVcmwoKSArIHRoaXMuX3JvdXRlci51cmw7ICAvLyBVUkwgYWJzb2x1dGEgZGVsIHByb2R1Y3RvXHJcbiAgICBjb25zdCBpbWFnZVVybCA9IHRoaXMuX2NvbnN0cy5nZXRBYnNvbHV0ZUltYWdlVXJsKEFycmF5LmlzQXJyYXkocHJvZHVjdC5waWN0dXJlc2RlZmF1bHQpID8gcHJvZHVjdC5waWN0dXJlc2RlZmF1bHRbMF0gOiBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdCk7XHJcblxyXG5cclxuICAgIHRoaXMuX21ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp0aXRsZScsIGNvbnRlbnQ6IHByb2R1Y3QubmFtZSB8fCAnJyB9KTtcclxuICAgIHRoaXMuX21ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzpkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGRlc2NyaXBjaW9uTGltcGlhIHx8ICcnIH0pO1xyXG4gICAgdGhpcy5fbWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOmltYWdlJywgY29udGVudDogaW1hZ2VVcmwgfHwgJycgfSk7XHJcbiAgICAvLyB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dXJsJywgY29udGVudDogY3VycmVudFVybCB9KTtcclxuICAgIHRoaXMuX21ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp0eXBlJywgY29udGVudDogJ3Byb2R1Y3QnIH0pO1xyXG4gIH1cclxuICBkZWNvZGVIdG1sKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBjb25zdCB0eHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xyXG4gICAgICB0eHQuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgcmV0dXJuIHR4dC52YWx1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBodG1sO1xyXG4gIH1cclxuICBzYW5pdGl6ZWRIdG1sKGh0bWw6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIGNvbnN0IGRlY29kZWRIdG1sID0gdGhpcy5kZWNvZGVIdG1sKGh0bWwpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChkZWNvZGVkSHRtbCk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0NhcnQoKSB7XHJcbiAgICBpZiAodGhpcy5pc0FkZGluZ1RvQ2FydCgpIHx8IHRoaXMucXVhbnRpdHkoKSA8PSAwKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pc0FkZGluZ1RvQ2FydC5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLl9wcm9kdWN0RGV0YWlsU2VydmljZS5hZGRUb0NhcnQodGhpcy5xdWFudGl0eSgpKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5pc0FkZGluZ1RvQ2FydC5zZXQoZmFsc2UpO1xyXG4gICAgfSwgMjAwMCk7XHJcbiAgfVxyXG5cclxuICBwbHVzKHN0b2NrPzogbnVtYmVyLCBtdWx0aXBsZVF1YW50aXR5PzogbnVtYmVyKSB7XHJcbiAgY29uc3QgY3VycmVudCA9IE51bWJlcih0aGlzLnF1YW50aXR5KCkpOyAvLyA8LS0gZnVlcnphIGEgbsO6bWVyb1xyXG4gIGlmIChtdWx0aXBsZVF1YW50aXR5ICYmIG11bHRpcGxlUXVhbnRpdHkgPiAwKSB7XHJcbiAgICBzdG9ja1xyXG4gICAgICA/IChjdXJyZW50IDwgc3RvY2tcclxuICAgICAgICAgID8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIG11bHRpcGxlUXVhbnRpdHkpXHJcbiAgICAgICAgICA6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKSlcclxuICAgICAgOiB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHN0b2NrXHJcbiAgICAgID8gKGN1cnJlbnQgPCBzdG9ja1xyXG4gICAgICAgICAgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgMSlcclxuICAgICAgICAgIDogdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpKVxyXG4gICAgICA6IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyAxKTtcclxuICB9XHJcbn1cclxuXHJcbmxlc3MobXVsdGlwbGVRdWFudGl0eT86IG51bWJlcikge1xyXG4gIGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIodGhpcy5xdWFudGl0eSgpKTsgLy8gPC0tIGZ1ZXJ6YSBhIG7Dum1lcm9cclxuICBpZiAobXVsdGlwbGVRdWFudGl0eSAmJiBtdWx0aXBsZVF1YW50aXR5ID4gMCkge1xyXG4gICAgY3VycmVudCA+IG11bHRpcGxlUXVhbnRpdHlcclxuICAgICAgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50IC0gbXVsdGlwbGVRdWFudGl0eSlcclxuICAgICAgOiBudWxsO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjdXJyZW50ID4gMSA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgLSAxKSA6IG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG4gIGNoZWNrU3RvY2soc3RvY2s6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMucXVhbnRpdHkoKSA+PSBzdG9jaylcclxuICAgICAgdGhpcy5xdWFudGl0eS5zZXQoc3RvY2spO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdvVG9TZWN0aW9uKHNlY3Rpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93Rm9ybUNvbnRhY3QgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb24pO1xyXG4gICAgICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybSA9ICgpID0+IHtcclxuICAgIHRoaXMucmVzZXQgPSAhdGhpcy5yZXNldFxyXG4gICAgdGhpcy5zdWNjZXNzID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgLy8gQ29tcHV0ZWQgc2lnbmFscyBtw6FzIGVmaWNpZW50ZXNcclxuICBwdWJsaWMgaGFzRGlzY291bnQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5wcm9kdWN0U2lnbmFsKCk7XHJcbiAgICBpZiAoIXByb2R1Y3Q/LnNhbGVwcmljZSB8fCAhcHJvZHVjdD8ucHJpY2UpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9yaWdpbmFsUHJpY2UgPSBwYXJzZUZsb2F0KHByb2R1Y3QucHJpY2UudG9TdHJpbmcoKSk7XHJcbiAgICBjb25zdCBzYWxlUHJpY2UgPSBwYXJzZUZsb2F0KHByb2R1Y3Quc2FsZXByaWNlLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgIHJldHVybiBzYWxlUHJpY2UgPiAwICYmIG9yaWdpbmFsUHJpY2UgPiBzYWxlUHJpY2U7XHJcbiAgfSk7XHJcblxyXG4gIHB1YmxpYyBkaXNjb3VudFBlcmNlbnRhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMuaGFzRGlzY291bnQoKSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdFNpZ25hbCgpO1xyXG4gICAgaWYgKCFwcm9kdWN0KSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBvcmlnaW5hbFByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnByaWNlPy50b1N0cmluZygpIHx8ICcwJyk7XHJcbiAgICBjb25zdCBzYWxlUHJpY2UgPSBwYXJzZUZsb2F0KHByb2R1Y3Quc2FsZXByaWNlPy50b1N0cmluZygpIHx8ICcwJyk7XHJcblxyXG4gICAgaWYgKG9yaWdpbmFsUHJpY2UgPD0gMCB8fCBzYWxlUHJpY2UgPD0gMCB8fCBzYWxlUHJpY2UgPj0gb3JpZ2luYWxQcmljZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaXNjb3VudCA9ICgob3JpZ2luYWxQcmljZSAtIHNhbGVQcmljZSkgLyBvcmlnaW5hbFByaWNlKSAqIDEwMDtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKGRpc2NvdW50KTtcclxuICB9KTtcclxuXHJcbiAgLyoqXHJcbiAgICAqIE3DqXRvZG8gcGFyYSB0cmFja2VhciBjYW1iaW9zIGVuIGVsIHByb2R1Y3RJZCB5IGZvcnphciBsYSByZWNyZWFjacOzbiBkZWwgY29tcG9uZW50ZSByZWxhY2lvbmFkb3NcclxuICAgICovXHJcbiAgdHJhY2tCeVByb2R1Y3RJZChpbmRleDogbnVtYmVyLCBwcm9kdWN0SWQ6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gcHJvZHVjdElkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXRlYSBlbCBlc3RhZG8gZGVsIG1vZGFsIGRlIHJlc2XDsWFzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNldFJldmlld01vZGFsKCk6IHZvaWQge1xyXG4gICAgLy8gU2kgZXhpc3RlIHVuIG3DqXRvZG8gcmVzZXRGb3JtIGRlbCBjb21wb25lbnRlIHBhZHJlLCBsbGFtYXJsb1xyXG4gICAgaWYgKHR5cGVvZiAodGhpcyBhcyBhbnkpLnJlc2V0Rm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAodGhpcyBhcyBhbnkpLnJlc2V0Rm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNpIGV4aXN0ZSB1bmEgcHJvcGllZGFkIHN1Y2Nlc3MsIHJlc2V0ZWFybGFcclxuICAgIGlmICgnc3VjY2VzcycgaW4gdGhpcykge1xyXG4gICAgICAodGhpcyBhcyBhbnkpLnN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIiJdfQ==
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWtCLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2RCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1C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LENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0lBRUg7O1FBRUk7SUFDSixnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsU0FBYztRQUM1QyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsK0RBQStEO1FBQy9ELElBQUksT0FBUSxJQUFZLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2pELElBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsOENBQThDO1FBQzlDLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO3dHQXRPVSx3QkFBd0I7NEZBQXhCLHdCQUF3QixpRkMxQnJDLEVBQUE7OzRGRDBCYSx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIEluamVjdG9yLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UsIENoYW5uZWxTZXJ2aWNlLCBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIFdyaXRhYmxlU2lnbmFsLCBzaWduYWwsIFBMQVRGT1JNX0lELCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFByb2R1Y3REZXRhaWxTZXJ2aWNlLCBQcm9kdWN0c1NlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgaGUgZnJvbSAnaGUnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBWYXJpYW50c0VjQ29tcG9uZW50IH0gZnJvbSAnLi4vdmFyaWFudHMtZWMvdmFyaWFudHMtZWMuY29tcG9uZW50JztcblxuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXByb2R1Y3QtZGV0YWlsLWVjJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1ZhcmlhbnRzRWNDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3REZXRhaWxFY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKVxuICBwcml2YXRlIF9vcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2UgPSBpbmplY3QoT3B0aW9uc1NlcnZpY2UpO1xuICBwcml2YXRlIF9wcm9kdWN0RGV0YWlsU2VydmljZTogUHJvZHVjdERldGFpbFNlcnZpY2UgPSBpbmplY3QoUHJvZHVjdERldGFpbFNlcnZpY2UpO1xuICBwcml2YXRlIF9wcm9kdWN0U2VydmljZTogUHJvZHVjdHNTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RzU2VydmljZSk7XG4gIHByaXZhdGUgX2FjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIF9jb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwYXJhbWV0ZXJzU2VydmljZSA9IGluamVjdChQYXJhbWV0ZXJzU2VydmljZSk7XG4gIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIF9tZXRhOiBNZXRhID0gaW5qZWN0KE1ldGEpO1xuICBwcml2YXRlIF90aXRsZTogVGl0bGUgPSBpbmplY3QoVGl0bGUpO1xuICBwcml2YXRlIF9sb2NhdGlvbjogTG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xuICBwdWJsaWMgcHJvZHVjdCQ6IE9ic2VydmFibGU8UHJvZHVjdCB8IG51bGw+ID0gdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UucHJvZHVjdCQ7XG4gIHB1YmxpYyBvcHRpb25zJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2Uub3B0aW9ucyQ7XG4gIHB1YmxpYyBkYXRhJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UuYXNzb2NpYXRlZERhdGEkO1xuICBwcml2YXRlIHJvdXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBjdXJyZW50UHJvZHVjdElkPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cblxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbWVkaWFVcmwgPSB0aGlzLl9jb25zdHMubWVkaWFVcmwoKTtcbiAgcHVibGljIGNvZGU6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgc2hvd0Zvcm1Db250YWN0ID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93UmV2aWV3czogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgcmVzZXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHN1Y2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGNhdGVnb3JpZXM6IGFueVtdID0gW107XG4gIHB1YmxpYyBzaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGhpZGVQcmljZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgcXVhbnRpdHk6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwoMSk7XG4gIHB1YmxpYyBpc0FkZGluZ1RvQ2FydDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcGFyYW1ldGVycyQ6IE9ic2VydmFibGU8UGFyYW1ldGVyW10gfCBudWxsPiA9IHRoaXMucGFyYW1ldGVyc1NlcnZpY2UuZ2V0UGFyYW1ldGVycygpO1xuICBwdWJsaWMgaGFzUGFyYW1zID0gdGhpcy5wYXJhbWV0ZXJzU2VydmljZS5oYXNQYXJhbXNcbiAgcHVibGljIGNyZWRpdEFjY291bnRTaG93UHJpY2VzOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIC8vIEFncmVnYXIgZXN0YSBwcm9waWVkYWQgYWwgaW5pY2lvIGRlIGxhIGNsYXNlXG4gIHByaXZhdGUgcHJvZHVjdFNpZ25hbCA9IHNpZ25hbDxQcm9kdWN0IHwgbnVsbD4obnVsbCk7XG5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9hY3RpdmVkUm91dGUucGFyYW1zLnN1YnNjcmliZShxdWVyeVBhcmFtcyA9PiB7XG4gICAgICB0aGlzLmNvZGUgPSBxdWVyeVBhcmFtc1tcImlkXCJdO1xuICAgICAgdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UubG9hZFByb2R1Y3QodGhpcy5jb2RlKTtcbiAgICB9KTtcbiAgICB0aGlzLl9hY3RpdmVkUm91dGUucGFyYW1zLnN1YnNjcmliZShxdWVyeVBhcmFtcyA9PiB7XG4gICAgICB0aGlzLmNvZGUgPSBxdWVyeVBhcmFtc1tcImlkXCJdO1xuICAgICAgdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UubG9hZFByb2R1Y3QodGhpcy5jb2RlKTtcbiAgICB9KVxuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxTZXJ2aWNlKS5jaGFubmVsJC5zdWJzY3JpYmUoY2hhbm5lbCA9PiB7XG4gICAgICB0aGlzLnNob3dSZXZpZXdzID0gY2hhbm5lbC5zaG93UmV2aWV3cztcbiAgICAgIHRoaXMuc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzID0gISFjaGFubmVsLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycztcbiAgICAgIHRoaXMuaGlkZVByaWNlcyA9ICEhY2hhbm5lbC5oaWRlUHJpY2VzO1xuICAgIH0pO1xuICAgIHRoaXMuX29wdGlvbnNTZXJ2aWNlLmdldENhdGVnb3JpZXMoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlcztcbiAgICB9XG4gICAgKTtcbiAgICB0aGlzLl9jYXJ0U2VydmljZS5zaG93UHJpY2UkLnN1YnNjcmliZSgoc2hvd1ByaWNlKSA9PiB7XG4gICAgICB0aGlzLmNyZWRpdEFjY291bnRTaG93UHJpY2VzID0gc2hvd1ByaWNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9kdWN0JC5zdWJzY3JpYmUocHJvZHVjdCA9PiB7XG4gICAgICB0aGlzLnByb2R1Y3RTaWduYWwuc2V0KHByb2R1Y3QpO1xuICAgIH0pO1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnByb2R1Y3QkLnN1YnNjcmliZShwcm9kdWN0ID0+IHtcbiAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YVRhZ3MocHJvZHVjdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gU3VzY3JpYmlyc2UgYSBsb3MgY2FtYmlvcyBkZSBwYXLDoW1ldHJvcyBkZSBsYSBydXRhXG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgY29uc3QgbmV3UHJvZHVjdElkID0gcGFyYW1zWydpZCddO1xuICAgICAgaWYgKG5ld1Byb2R1Y3RJZCAmJiBuZXdQcm9kdWN0SWQgIT09IHRoaXMuY3VycmVudFByb2R1Y3RJZCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRQcm9kdWN0SWQgPSBuZXdQcm9kdWN0SWQ7XG5cbiAgICAgICAgLy8gUmVzZXRlYXIgZWwgZXN0YWRvIGRlbCBtb2RhbCBkZSByZXNlw7FhcyBjdWFuZG8gY2FtYmllIGVsIHByb2R1Y3RvXG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdNb2RhbCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIH1cblxuICB1cGRhdGVNZXRhVGFncyhwcm9kdWN0OiBQcm9kdWN0KSB7XG4gICAgY29uc3QgZGVzY3JpcGNpb25MaW1waWEgPSBoZS5kZWNvZGUocHJvZHVjdC5kZXNjcmlwdGlvbiB8fCAnJykucmVwbGFjZSgvPFtePl0qPi9nLCAnICcpLnJlcGxhY2UoL1xccysvZywgJyAnKS50cmltKCk7XG4gICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMuX2NvbnN0cy5nZXRGcm9udGVuZFVybCgpICsgdGhpcy5fcm91dGVyLnVybDsgIC8vIFVSTCBhYnNvbHV0YSBkZWwgcHJvZHVjdG9cbiAgICBjb25zdCBpbWFnZVVybCA9IHRoaXMuX2NvbnN0cy5nZXRBYnNvbHV0ZUltYWdlVXJsKEFycmF5LmlzQXJyYXkocHJvZHVjdC5waWN0dXJlc2RlZmF1bHQpID8gcHJvZHVjdC5waWN0dXJlc2RlZmF1bHRbMF0gOiBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdCk7XG5cblxuICAgIHRoaXMuX21ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp0aXRsZScsIGNvbnRlbnQ6IHByb2R1Y3QubmFtZSB8fCAnJyB9KTtcbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6ZGVzY3JpcHRpb24nLCBjb250ZW50OiBkZXNjcmlwY2lvbkxpbXBpYSB8fCAnJyB9KTtcbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6aW1hZ2UnLCBjb250ZW50OiBpbWFnZVVybCB8fCAnJyB9KTtcbiAgICAvLyB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dXJsJywgY29udGVudDogY3VycmVudFVybCB9KTtcbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dHlwZScsIGNvbnRlbnQ6ICdwcm9kdWN0JyB9KTtcbiAgfVxuICBkZWNvZGVIdG1sKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IHR4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICB0eHQuaW5uZXJIVE1MID0gaHRtbDtcbiAgICAgIHJldHVybiB0eHQudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBodG1sO1xuICB9XG4gIHNhbml0aXplZEh0bWwoaHRtbDogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIGNvbnN0IGRlY29kZWRIdG1sID0gdGhpcy5kZWNvZGVIdG1sKGh0bWwpO1xuICAgIHJldHVybiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZGVjb2RlZEh0bWwpO1xuICB9XG5cbiAgYWRkVG9DYXJ0KCkge1xuICAgIGlmICh0aGlzLmlzQWRkaW5nVG9DYXJ0KCkgfHwgdGhpcy5xdWFudGl0eSgpIDw9IDApIHJldHVybjtcblxuICAgIHRoaXMuaXNBZGRpbmdUb0NhcnQuc2V0KHRydWUpO1xuICAgIHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmFkZFRvQ2FydCh0aGlzLnF1YW50aXR5KCkpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzQWRkaW5nVG9DYXJ0LnNldChmYWxzZSk7XG4gICAgfSwgMjAwMCk7XG4gIH1cblxuICBwbHVzKHN0b2NrPzogbnVtYmVyLCBtdWx0aXBsZVF1YW50aXR5PzogbnVtYmVyKSB7XG4gIGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIodGhpcy5xdWFudGl0eSgpKTsgLy8gPC0tIGZ1ZXJ6YSBhIG7Dum1lcm9cbiAgaWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcbiAgICBzdG9ja1xuICAgICAgPyAoY3VycmVudCA8IHN0b2NrXG4gICAgICAgICAgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSlcbiAgICAgICAgICA6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKSlcbiAgICAgIDogdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIG11bHRpcGxlUXVhbnRpdHkpO1xuICB9IGVsc2Uge1xuICAgIHN0b2NrXG4gICAgICA/IChjdXJyZW50IDwgc3RvY2tcbiAgICAgICAgICA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyAxKVxuICAgICAgICAgIDogdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpKVxuICAgICAgOiB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgMSk7XG4gIH1cbn1cblxubGVzcyhtdWx0aXBsZVF1YW50aXR5PzogbnVtYmVyKSB7XG4gIGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIodGhpcy5xdWFudGl0eSgpKTsgLy8gPC0tIGZ1ZXJ6YSBhIG7Dum1lcm9cbiAgaWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcbiAgICBjdXJyZW50ID4gbXVsdGlwbGVRdWFudGl0eVxuICAgICAgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50IC0gbXVsdGlwbGVRdWFudGl0eSlcbiAgICAgIDogbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBjdXJyZW50ID4gMSA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgLSAxKSA6IG51bGw7XG4gIH1cbn1cblxuICBjaGVja1N0b2NrKHN0b2NrOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5xdWFudGl0eSgpID49IHN0b2NrKVxuICAgICAgdGhpcy5xdWFudGl0eS5zZXQoc3RvY2spO1xuICB9XG5cbiAgcHVibGljIGdvVG9TZWN0aW9uKHNlY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0Zvcm1Db250YWN0ID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uKTtcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHJlc2V0Rm9ybSA9ICgpID0+IHtcbiAgICB0aGlzLnJlc2V0ID0gIXRoaXMucmVzZXRcbiAgICB0aGlzLnN1Y2Nlc3MgPSB0cnVlXG4gIH1cblxuICAvLyBDb21wdXRlZCBzaWduYWxzIG3DoXMgZWZpY2llbnRlc1xuICBwdWJsaWMgaGFzRGlzY291bnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdFNpZ25hbCgpO1xuICAgIGlmICghcHJvZHVjdD8uc2FsZXByaWNlIHx8ICFwcm9kdWN0Py5wcmljZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsUHJpY2UgPSBwYXJzZUZsb2F0KHByb2R1Y3QucHJpY2UudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZS50b1N0cmluZygpKTtcblxuICAgIHJldHVybiBzYWxlUHJpY2UgPiAwICYmIG9yaWdpbmFsUHJpY2UgPiBzYWxlUHJpY2U7XG4gIH0pO1xuXG4gIHB1YmxpYyBkaXNjb3VudFBlcmNlbnRhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmhhc0Rpc2NvdW50KCkpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdFNpZ25hbCgpO1xuICAgIGlmICghcHJvZHVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBvcmlnaW5hbFByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnByaWNlPy50b1N0cmluZygpIHx8ICcwJyk7XG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZT8udG9TdHJpbmcoKSB8fCAnMCcpO1xuXG4gICAgaWYgKG9yaWdpbmFsUHJpY2UgPD0gMCB8fCBzYWxlUHJpY2UgPD0gMCB8fCBzYWxlUHJpY2UgPj0gb3JpZ2luYWxQcmljZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGlzY291bnQgPSAoKG9yaWdpbmFsUHJpY2UgLSBzYWxlUHJpY2UpIC8gb3JpZ2luYWxQcmljZSkgKiAxMDA7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoZGlzY291bnQpO1xuICB9KTtcblxuICAvKipcbiAgICAqIE3DqXRvZG8gcGFyYSB0cmFja2VhciBjYW1iaW9zIGVuIGVsIHByb2R1Y3RJZCB5IGZvcnphciBsYSByZWNyZWFjacOzbiBkZWwgY29tcG9uZW50ZSByZWxhY2lvbmFkb3NcbiAgICAqL1xuICB0cmFja0J5UHJvZHVjdElkKGluZGV4OiBudW1iZXIsIHByb2R1Y3RJZDogYW55KTogYW55IHtcbiAgICByZXR1cm4gcHJvZHVjdElkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0ZWEgZWwgZXN0YWRvIGRlbCBtb2RhbCBkZSByZXNlw7Fhc1xuICAgKi9cbiAgcHJpdmF0ZSByZXNldFJldmlld01vZGFsKCk6IHZvaWQge1xuICAgIC8vIFNpIGV4aXN0ZSB1biBtw6l0b2RvIHJlc2V0Rm9ybSBkZWwgY29tcG9uZW50ZSBwYWRyZSwgbGxhbWFybG9cbiAgICBpZiAodHlwZW9mICh0aGlzIGFzIGFueSkucmVzZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAodGhpcyBhcyBhbnkpLnJlc2V0Rm9ybSgpO1xuICAgIH1cblxuICAgIC8vIFNpIGV4aXN0ZSB1bmEgcHJvcGllZGFkIHN1Y2Nlc3MsIHJlc2V0ZWFybGFcbiAgICBpZiAoJ3N1Y2Nlc3MnIGluIHRoaXMpIHtcbiAgICAgICh0aGlzIGFzIGFueSkuc3VjY2VzcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG59XG4iLCIiXX0=
@@ -93,6 +93,7 @@ export class ProductEcComponent {
93
93
  return Math.round(discount);
94
94
  }
95
95
  plus(stock, multipleQuantity) {
96
+ console.log('Aumentando cantidad');
96
97
  const current = Number(this.quantity()); // <-- fuerza a número
97
98
  if (multipleQuantity && multipleQuantity > 0) {
98
99
  stock
@@ -110,6 +111,7 @@ export class ProductEcComponent {
110
111
  }
111
112
  }
112
113
  less(multipleQuantity) {
114
+ console.log('Disminuyendo cantidad');
113
115
  const current = Number(this.quantity()); // <-- fuerza a número
114
116
  if (multipleQuantity && multipleQuantity > 0) {
115
117
  current > multipleQuantity
@@ -121,6 +123,7 @@ export class ProductEcComponent {
121
123
  }
122
124
  }
123
125
  addToCart() {
126
+ console.log('Añadiendo al carrito');
124
127
  if (this.isAddingToCart() || this.quantity() <= 0)
125
128
  return;
126
129
  // Verificar que tenemos el producto y sus variantes
@@ -139,73 +142,22 @@ export class ProductEcComponent {
139
142
  this._toastService.show('out-of-stock-actually');
140
143
  return;
141
144
  }
142
- // NUEVAS VALIDACIONES: Verificar restricciones del producto
143
- if (!this.validateQuantity(this.quantity())) {
144
- return; // La validación ya mostró el toast correspondiente
145
- }
146
145
  this.isAddingToCart.set(true);
147
146
  try {
148
147
  // Agregar al carrito usando CartService directamente
149
148
  this._cartService.addToCart(this.product, this.quantity(), firstVariant.code);
149
+ console.log('Producto agregado al carrito exitosamente');
150
150
  // Resetear cantidad a 1 después de agregar al carrito
151
151
  this.quantity.set(1);
152
152
  }
153
153
  catch (error) {
154
+ console.error('Error al agregar al carrito:', error);
154
155
  this._toastService.show('cant-buy');
155
156
  }
156
157
  setTimeout(() => {
157
158
  this.isAddingToCart.set(false);
158
159
  }, 2000);
159
160
  }
160
- /**
161
- * Valida las restricciones de cantidad del producto
162
- */
163
- validateQuantity(quantity) {
164
- if (!this.product.variants || this.product.variants.length === 0) {
165
- this._toastService.show('cant-buy');
166
- return false;
167
- }
168
- const variant = this.product.variants[0];
169
- // Obtener cantidad actual en el carrito
170
- const actualQuantity = this._cartService.getCountFromItemInCart(variant.code);
171
- const totalQuantity = Number(actualQuantity) + Number(quantity);
172
- // Obtener restricciones del producto/variante (con valores por defecto)
173
- const maximumItemsQuantity = this.product.maximumItemsQuantity ||
174
- variant.maximumItemsQuantity ||
175
- 999999;
176
- const minimumItemsQuantity = this.product.minimumItemsQuantity ||
177
- variant.minimumItemsQuantity ||
178
- 1;
179
- const multipleQuantity = this.product.multipleQuantity ||
180
- variant.multipleQuantity ||
181
- 1;
182
- // Validar cantidad máxima
183
- if (totalQuantity > maximumItemsQuantity) {
184
- this._toastService.show('maximum-items-quantity', { quantity: maximumItemsQuantity });
185
- return false;
186
- }
187
- // Validar cantidad mínima
188
- if (totalQuantity < minimumItemsQuantity) {
189
- this._toastService.show('minimum-items-quantity', { quantity: minimumItemsQuantity });
190
- return false;
191
- }
192
- // Validar múltiplo de cantidad
193
- if (multipleQuantity && multipleQuantity > 1) {
194
- if (totalQuantity % multipleQuantity !== 0) {
195
- this._toastService.show('multiple-quantity-required', {
196
- multiple: multipleQuantity,
197
- current: totalQuantity
198
- });
199
- return false;
200
- }
201
- }
202
- // Validar que no exceda el stock total
203
- if (totalQuantity > variant.stock) {
204
- this._toastService.show('out-of-stock-actually');
205
- return false;
206
- }
207
- return true; // Todas las validaciones pasaron
208
- }
209
161
  checkStock(stock) {
210
162
  if (this.quantity() >= stock)
211
163
  this.quantity.set(stock);
@@ -226,11 +178,11 @@ export class ProductEcComponent {
226
178
  }
227
179
  }
228
180
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
229
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ProductEcComponent, isStandalone: true, selector: "app-product-ec", inputs: { product: "product", isProductBox: "isProductBox", isCollection: "isCollection" }, outputs: { loaded: "loaded" }, ngImport: i0, template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\r\n <!-- Marca especial y descuento -->\r\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\r\n class=\"marcas\">\r\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\r\n <ng-container *ngIf=\"shouldShowPrice\">\r\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\r\n [ecProductOff]=\"product\">\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n\r\n <!-- Imagen del producto -->\r\n <div class=\"foto\">\r\n @if(product.picturesdefault){\r\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\r\n } @else {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n }\r\n }\r\n </div>\r\n <!-- Precio -->\r\n\r\n\r\n <!-- Nombre del producto -->\r\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\r\n\r\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\r\n\r\n @if (shouldShowPrice) {\r\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\r\n }\r\n @if(!hidePrices){\r\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\r\n\r\n <div class=\"fixBottom\">\r\n\r\n <!-- Bot\u00F3n de acciones -->\r\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\r\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\r\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\r\n 'standard') {\r\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n <ng-container *ngIf=\"isCollection; else normalText\">\r\n <span> {{(\"buy\" | translate) | uppercase}} </span>\r\n </ng-container>\r\n <ng-template #normalText>\r\n {{(\"buy\" | translate) | uppercase}}\r\n </ng-template>\r\n </button>\r\n }@else {\r\n <!-- Caso 1: Agotado o Disponible muy pronto -->\r\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0].name | uppercase }} </span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>}\r\n <!-- Caso 2: Contacto por WhatsApp -->\r\n @if (product.special_mark[0].type === 'whatsapp_contact') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\r\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n\r\n </button>\r\n }\r\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\r\n @if (product.special_mark[0]?.type === 'more_info') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n }}\r\n</a>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "component", type: PriceEcComponent, selector: "app-price-ec", inputs: ["price", "saleprice", "basePrice", "taxeAmount", "taxes", "priceSize", "showTaxLegendOnly", "disableTaxInfo", "customPriceTemplate", "customSalePriceTemplate", "customSimplePriceTemplate", "customSimpleSalePriceTemplate", "customTaxTemplate", "customOnlyTaxLabelTemplate"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }] });
181
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ProductEcComponent, isStandalone: true, selector: "app-product-ec", inputs: { product: "product", isProductBox: "isProductBox", isCollection: "isCollection" }, outputs: { loaded: "loaded" }, ngImport: i0, template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\n <!-- Marca especial y descuento -->\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\n class=\"marcas\">\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\n <ng-container *ngIf=\"shouldShowPrice\">\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\n [ecProductOff]=\"product\">\n </div>\n </ng-container>\n </div> -->\n\n <!-- Imagen del producto -->\n <div class=\"foto\">\n @if(product.picturesdefault){\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\n } @else {\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\n }\n }\n </div>\n <!-- Precio -->\n\n\n <!-- Nombre del producto -->\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\n\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\n\n @if (shouldShowPrice) {\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\n }\n @if(!hidePrices){\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\n\n <div class=\"fixBottom\">\n\n <!-- Bot\u00F3n de acciones -->\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\n 'standard') {\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n <ng-container *ngIf=\"isCollection; else normalText\">\n <span> {{(\"buy\" | translate) | uppercase}} </span>\n </ng-container>\n <ng-template #normalText>\n {{(\"buy\" | translate) | uppercase}}\n </ng-template>\n </button>\n }@else {\n <!-- Caso 1: Agotado o Disponible muy pronto -->\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n @if(isCollection){\n <span>{{ product.special_mark[0].name | uppercase }} </span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n </button>}\n <!-- Caso 2: Contacto por WhatsApp -->\n @if (product.special_mark[0].type === 'whatsapp_contact') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\n @if(isCollection){\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n\n </button>\n }\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\n @if (product.special_mark[0]?.type === 'more_info') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n @if(isCollection){\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n </button>\n }\n }\n </div>\n }}\n</a>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "component", type: PriceEcComponent, selector: "app-price-ec", inputs: ["price", "saleprice", "basePrice", "taxeAmount", "taxes", "priceSize", "showTaxLegendOnly", "disableTaxInfo", "customPriceTemplate", "customSalePriceTemplate", "customSimplePriceTemplate", "customSimpleSalePriceTemplate", "customTaxTemplate", "customOnlyTaxLabelTemplate"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }] });
230
182
  }
231
183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductEcComponent, decorators: [{
232
184
  type: Component,
233
- args: [{ selector: 'app-product-ec', standalone: true, imports: [CommonModule, PriceEcComponent, RouterLink, TranslateModule, FormsModule], template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\r\n <!-- Marca especial y descuento -->\r\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\r\n class=\"marcas\">\r\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\r\n <ng-container *ngIf=\"shouldShowPrice\">\r\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\r\n [ecProductOff]=\"product\">\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n\r\n <!-- Imagen del producto -->\r\n <div class=\"foto\">\r\n @if(product.picturesdefault){\r\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\r\n } @else {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n }\r\n }\r\n </div>\r\n <!-- Precio -->\r\n\r\n\r\n <!-- Nombre del producto -->\r\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\r\n\r\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\r\n\r\n @if (shouldShowPrice) {\r\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\r\n }\r\n @if(!hidePrices){\r\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\r\n\r\n <div class=\"fixBottom\">\r\n\r\n <!-- Bot\u00F3n de acciones -->\r\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\r\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\r\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\r\n 'standard') {\r\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n <ng-container *ngIf=\"isCollection; else normalText\">\r\n <span> {{(\"buy\" | translate) | uppercase}} </span>\r\n </ng-container>\r\n <ng-template #normalText>\r\n {{(\"buy\" | translate) | uppercase}}\r\n </ng-template>\r\n </button>\r\n }@else {\r\n <!-- Caso 1: Agotado o Disponible muy pronto -->\r\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0].name | uppercase }} </span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>}\r\n <!-- Caso 2: Contacto por WhatsApp -->\r\n @if (product.special_mark[0].type === 'whatsapp_contact') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\r\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n\r\n </button>\r\n }\r\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\r\n @if (product.special_mark[0]?.type === 'more_info') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n }}\r\n</a>" }]
185
+ args: [{ selector: 'app-product-ec', standalone: true, imports: [CommonModule, PriceEcComponent, RouterLink, TranslateModule, FormsModule], template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\n <!-- Marca especial y descuento -->\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\n class=\"marcas\">\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\n <ng-container *ngIf=\"shouldShowPrice\">\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\n [ecProductOff]=\"product\">\n </div>\n </ng-container>\n </div> -->\n\n <!-- Imagen del producto -->\n <div class=\"foto\">\n @if(product.picturesdefault){\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\n } @else {\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\n }\n }\n </div>\n <!-- Precio -->\n\n\n <!-- Nombre del producto -->\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\n\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\n\n @if (shouldShowPrice) {\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\n }\n @if(!hidePrices){\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\n\n <div class=\"fixBottom\">\n\n <!-- Bot\u00F3n de acciones -->\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\n 'standard') {\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n <ng-container *ngIf=\"isCollection; else normalText\">\n <span> {{(\"buy\" | translate) | uppercase}} </span>\n </ng-container>\n <ng-template #normalText>\n {{(\"buy\" | translate) | uppercase}}\n </ng-template>\n </button>\n }@else {\n <!-- Caso 1: Agotado o Disponible muy pronto -->\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n @if(isCollection){\n <span>{{ product.special_mark[0].name | uppercase }} </span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n </button>}\n <!-- Caso 2: Contacto por WhatsApp -->\n @if (product.special_mark[0].type === 'whatsapp_contact') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\n @if(isCollection){\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n\n </button>\n }\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\n @if (product.special_mark[0]?.type === 'more_info') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n @if(isCollection){\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n </button>\n }\n }\n </div>\n }}\n</a>" }]
234
186
  }], ctorParameters: () => [], propDecorators: { product: [{
235
187
  type: Input,
236
188
  args: [{
@@ -243,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
243
195
  }], isCollection: [{
244
196
  type: Input
245
197
  }] } });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9wcm9kdWN0LWVjL3Byb2R1Y3QtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1lYy9wcm9kdWN0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFFBQVEsRUFBa0IsTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBRTFILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBQzdDOzs7R0FHRztBQVFILE1BQU0sT0FBTyxrQkFBa0I7SUFDdkIsUUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELGFBQWEsR0FBaUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXBELGNBQWMsR0FBNEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELFFBQVEsR0FBMkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLFNBQWlCO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM5RCxzQ0FBc0M7WUFDdEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDZixHQUFHLEVBQUUsQ0FBQztnQkFDTixJQUFJLEVBQUUsQ0FBQztnQkFDUCxRQUFRLEVBQUUsUUFBUTthQUNsQixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFHRDs7T0FFRztJQUlILE9BQU8sQ0FBVztJQUNsQjs7T0FFRztJQUNNLFlBQVksR0FBWSxJQUFJLENBQUM7SUFDdEM7O09BRUc7SUFDTyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUVyQyxZQUFZLEdBQVksS0FBSyxDQUFDO0lBRXZDLFFBQVE7UUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRW5DLENBQUM7SUFDTSwyQkFBMkIsR0FBWSxLQUFLLENBQUM7SUFDN0MsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUUzQixZQUFZLEdBQWdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNoRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzlEO1FBQ0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM5RCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQztZQUN6RSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNPLE1BQU0sR0FBeUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFDM0QsZ0JBQWdCLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzdELE1BQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdkM7O09BRUc7SUFDSSxRQUFRLEdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNoRCxZQUFZLENBQUMsR0FBVztRQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNGLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO0lBQ3pILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUN4RSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUM7UUFFeEUsdUNBQXVDO1FBQ3ZDLElBQUksYUFBYSxJQUFJLENBQUMsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLFNBQVMsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUN4RSxPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFFRCxzRkFBc0Y7UUFDdEYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHLENBQUM7UUFFckUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBYyxFQUFFLGdCQUF5QjtRQUM3QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7UUFDL0QsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxLQUFLO2dCQUNKLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLO29CQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDO29CQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztnQkFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ1AsS0FBSztnQkFDSixDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSztvQkFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDRixDQUFDO0lBRUQsSUFBSSxDQUFDLGdCQUF5QjtRQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7UUFDL0QsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLEdBQUcsZ0JBQWdCO2dCQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDO2dCQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1QsQ0FBQzthQUFNLENBQUM7WUFDUCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRCxDQUFDO0lBQ0YsQ0FBQztJQUVELFNBQVM7UUFDUixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztZQUFFLE9BQU87UUFFMUQsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25GLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLE9BQU87UUFDUixDQUFDO1FBQ0Qsa0JBQWtCO1FBQ2xCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDeEMsT0FBTztRQUNSLENBQUM7UUFDRCxpREFBaUQ7UUFDakQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDakQsT0FBTztRQUNSLENBQUM7UUFDRCw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxtREFBbUQ7UUFDNUQsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQztZQUNKLHFEQUFxRDtZQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUUsc0RBQXNEO1lBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwQyxPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6Qyx3Q0FBd0M7UUFDeEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSx3RUFBd0U7UUFDeEUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQjtZQUM3RCxPQUFPLENBQUMsb0JBQW9CO1lBQzVCLE1BQU0sQ0FBQztRQUNSLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0I7WUFDN0QsT0FBTyxDQUFDLG9CQUFvQjtZQUM1QixDQUFDLENBQUM7UUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO1lBQ3JELE9BQU8sQ0FBQyxnQkFBZ0I7WUFDeEIsQ0FBQyxDQUFDO1FBRUgsMEJBQTBCO1FBQzFCLElBQUksYUFBYSxHQUFHLG9CQUFvQixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1lBQ3RGLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUVELDBCQUEwQjtRQUMxQixJQUFJLGFBQWEsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQztZQUN0RixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCwrQkFBK0I7UUFDL0IsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxJQUFJLGFBQWEsR0FBRyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUU7b0JBQ3JELFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLE9BQU8sRUFBRSxhQUFhO2lCQUN0QixDQUFDLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0YsQ0FBQztRQUNELHVDQUF1QztRQUN2QyxJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNqRCxPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxDQUFDLGlDQUFpQztJQUMvQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksS0FBSztZQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBWTtRQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDNUIscUNBQXFDO1FBQ3JDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIscUNBQXFDO1lBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ1AsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDRixDQUFDO3dHQTFPVyxrQkFBa0I7NEZBQWxCLGtCQUFrQixxTUNwQi9CLCtpSUF1RkkseUREdkVPLFlBQVksMlZBQUUsZ0JBQWdCLG9WQUFFLFVBQVUsbU9BQUUsZUFBZSwyRkFBRSxXQUFXOzs0RkFJdEUsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNDLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQzt3REFtQ25GLE9BQU87c0JBSE4sS0FBSzt1QkFBQzt3QkFDTixRQUFRLEVBQUUsSUFBSTtxQkFDZDtnQkFLUSxZQUFZO3NCQUFwQixLQUFLO2dCQUlJLE1BQU07c0JBQWYsTUFBTTtnQkFFRSxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBJbmplY3RvciwgV3JpdGFibGVTaWduYWwsIHNpZ25hbCwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UsIENoYW5uZWxTZXJ2aWNlLCBBdXRoU2VydmljZSwgQ2FydFNlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUHJpY2VFY0NvbXBvbmVudCB9IGZyb20gXCIuLi93aWRnZXRzLWVjL3ByaWNlLWVjL3ByaWNlLWVjLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIHF1ZSBzZSBlbmNhcmdhIGRlIG1hbmVqYXIgdW4gcHJvZHVjdG8uXHJcbiAqIEBjbGFzcyBQcm9kdWN0RWNDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLXByb2R1Y3QtZWMnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUHJpY2VFY0NvbXBvbmVudCwgUm91dGVyTGluaywgVHJhbnNsYXRlTW9kdWxlLCBGb3Jtc01vZHVsZV0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9wcm9kdWN0LWVjLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdEVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHRwcml2YXRlIHJvdXRlclNlcnZpY2UgPSBpbmplY3QoUm91dGVyKTtcclxuXHRwcml2YXRlIF9jYXJ0U2VydmljZTogQ2FydFNlcnZpY2UgPSBpbmplY3QoQ2FydFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XHJcblxyXG5cdHB1YmxpYyBpc0FkZGluZ1RvQ2FydDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xyXG5cdHB1YmxpYyBxdWFudGl0eTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgxKTtcclxuXHJcblx0LyoqXHJcblx0ICogTmF2ZWdhIGFsIGRldGFsbGUgZGVsIHByb2R1Y3RvIHkgc3ViZSBhbCBpbmljaW8gZGUgbGEgcMOhZ2luYVxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0SWQgSUQgZGVsIHByb2R1Y3RvXHJcblx0ICovXHJcblx0bmF2aWdhdGVUb1Byb2R1Y3QocHJvZHVjdElkOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMucm91dGVyU2VydmljZS5uYXZpZ2F0ZShbJy9wcm9kdWN0JywgcHJvZHVjdElkXSkudGhlbigoKSA9PiB7XHJcblx0XHRcdC8vIFNjcm9sbCBzdWF2ZSBhbCBpbmljaW8gZGUgbGEgcMOhZ2luYVxyXG5cdFx0XHR3aW5kb3cuc2Nyb2xsVG8oe1xyXG5cdFx0XHRcdHRvcDogMCxcclxuXHRcdFx0XHRsZWZ0OiAwLFxyXG5cdFx0XHRcdGJlaGF2aW9yOiAnc21vb3RoJ1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIERhdG9zIGRlbCBwcm9kdWN0by5cclxuXHQgKi9cclxuXHRASW5wdXQoe1xyXG5cdFx0cmVxdWlyZWQ6IHRydWVcclxuXHR9KVxyXG5cdHByb2R1Y3QhOiBQcm9kdWN0O1xyXG5cdC8qKlxyXG5cdCAqIFNlIHVzYSBwYXJhIHNhYmVyIHNpIGVsIHByb2R1Y3RvIGVzIGRlIHRpcG8gQm94IG8gbm8geSBkZWZpbmlyIGxhIHZpc3RhIGFkZWN1YWRhLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIGlzUHJvZHVjdEJveDogYm9vbGVhbiA9IHRydWU7XHJcblx0LyoqXHJcblx0ICogQ29uc3RhbnRlcyBkZWwgY29yZVxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKSBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcblx0QElucHV0KCkgaXNDb2xsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5sb2FkZWQuZW1pdCh0aGlzLnByb2R1Y3QuaWQpO1xyXG5cclxuXHR9XHJcblx0cHVibGljIHNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBoaWRlUHJpY2VzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSlcclxuXHRwdWJsaWMgaXNBdXRoZW50aWNhdGVkJCA9IHRoaXMuX2F1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpO1xyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0dGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbFNlcnZpY2UpLmNoYW5uZWwkLnN1YnNjcmliZShjaGFubmVsID0+IHtcclxuXHRcdFx0dGhpcy5zaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnMgPSAhIWNoYW5uZWwuc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzO1xyXG5cdFx0XHR0aGlzLmhpZGVQcmljZXMgPSAhIWNoYW5uZWwuaGlkZVByaWNlcztcclxuXHRcdH0pO1xyXG5cdH1cclxuXHRwcml2YXRlIGNvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpXHJcblx0cHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpXHJcblx0cHJpdmF0ZSByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpXHJcblx0LyoqXHJcblx0ICogVVJMIHBhcmEgbGFzIGltYWdlbmVzIGRlbCBwcm9kdWN0by5cclxuXHQgKi9cclxuXHRwdWJsaWMgbWVkaWFVcmw6IHN0cmluZyA9IHRoaXMuY29uc3RzLm1lZGlhVXJsKClcclxuXHRvcGVuV2hhdHNBcHAodXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGlmICh1cmwpIHtcclxuXHRcdFx0d2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRnZXQgc2hvdWxkU2hvd1ByaWNlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICF0aGlzLnByb2R1Y3Q/LnNwZWNpYWxfbWFyayB8fCB0aGlzLnByb2R1Y3Quc3BlY2lhbF9tYXJrLmxlbmd0aCA9PT0gMCB8fCB0aGlzLnByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy5zaG93UHJpY2U7XHJcblx0fVxyXG5cclxuXHRnZXQgaGFzRGlzY291bnQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5wcm9kdWN0LnNhbGVwcmljZSAmJiB0aGlzLnByb2R1Y3Quc2FsZXByaWNlICE9PSB0aGlzLnByb2R1Y3QucHJpY2U7XHJcblx0fVxyXG5cclxuXHRnZXQgZGlzY291bnRQZXJjZW50YWdlKCk6IG51bWJlciB8IG51bGwge1xyXG5cdFx0aWYgKCF0aGlzLmhhc0Rpc2NvdW50KSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IG9yaWdpbmFsUHJpY2UgPSBwYXJzZUZsb2F0KHRoaXMucHJvZHVjdC5wcmljZT8udG9TdHJpbmcoKSB8fCAnMCcpO1xyXG5cdFx0Y29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdCh0aGlzLnByb2R1Y3Quc2FsZXByaWNlPy50b1N0cmluZygpIHx8ICcwJyk7XHJcblxyXG5cdFx0Ly8gVmFsaWRhciBxdWUgbG9zIHByZWNpb3Mgc2VhbiB2w6FsaWRvc1xyXG5cdFx0aWYgKG9yaWdpbmFsUHJpY2UgPD0gMCB8fCBzYWxlUHJpY2UgPD0gMCB8fCBzYWxlUHJpY2UgPj0gb3JpZ2luYWxQcmljZSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDYWxjdWxhciBlbCBwb3JjZW50YWplOiAoKHByZWNpb19vcmlnaW5hbCAtIHByZWNpb19vZmVydGEpIC8gcHJlY2lvX29yaWdpbmFsKSAqIDEwMFxyXG5cdFx0Y29uc3QgZGlzY291bnQgPSAoKG9yaWdpbmFsUHJpY2UgLSBzYWxlUHJpY2UpIC8gb3JpZ2luYWxQcmljZSkgKiAxMDA7XHJcblxyXG5cdFx0cmV0dXJuIE1hdGgucm91bmQoZGlzY291bnQpO1xyXG5cdH1cclxuXHRwbHVzKHN0b2NrPzogbnVtYmVyLCBtdWx0aXBsZVF1YW50aXR5PzogbnVtYmVyKSB7XHJcblx0XHRjb25zdCBjdXJyZW50ID0gTnVtYmVyKHRoaXMucXVhbnRpdHkoKSk7IC8vIDwtLSBmdWVyemEgYSBuw7ptZXJvXHJcblx0XHRpZiAobXVsdGlwbGVRdWFudGl0eSAmJiBtdWx0aXBsZVF1YW50aXR5ID4gMCkge1xyXG5cdFx0XHRzdG9ja1xyXG5cdFx0XHRcdD8gKGN1cnJlbnQgPCBzdG9ja1xyXG5cdFx0XHRcdFx0PyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSlcclxuXHRcdFx0XHRcdDogdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpKVxyXG5cdFx0XHRcdDogdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIG11bHRpcGxlUXVhbnRpdHkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3RvY2tcclxuXHRcdFx0XHQ/IChjdXJyZW50IDwgc3RvY2tcclxuXHRcdFx0XHRcdD8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIDEpXHJcblx0XHRcdFx0XHQ6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKSlcclxuXHRcdFx0XHQ6IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyAxKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGxlc3MobXVsdGlwbGVRdWFudGl0eT86IG51bWJlcikge1xyXG5cdFx0Y29uc3QgY3VycmVudCA9IE51bWJlcih0aGlzLnF1YW50aXR5KCkpOyAvLyA8LS0gZnVlcnphIGEgbsO6bWVyb1xyXG5cdFx0aWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcclxuXHRcdFx0Y3VycmVudCA+IG11bHRpcGxlUXVhbnRpdHlcclxuXHRcdFx0XHQ/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgLSBtdWx0aXBsZVF1YW50aXR5KVxyXG5cdFx0XHRcdDogbnVsbDtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGN1cnJlbnQgPiAxID8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCAtIDEpIDogbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFkZFRvQ2FydCgpIHtcclxuXHRcdGlmICh0aGlzLmlzQWRkaW5nVG9DYXJ0KCkgfHwgdGhpcy5xdWFudGl0eSgpIDw9IDApIHJldHVybjtcclxuXHJcblx0XHQvLyBWZXJpZmljYXIgcXVlIHRlbmVtb3MgZWwgcHJvZHVjdG8geSBzdXMgdmFyaWFudGVzXHJcblx0XHRpZiAoIXRoaXMucHJvZHVjdCB8fCAhdGhpcy5wcm9kdWN0LnZhcmlhbnRzIHx8IHRoaXMucHJvZHVjdC52YXJpYW50cy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2NhbnQtYnV5Jyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdC8vIFZlcmlmaWNhciBzdG9ja1xyXG5cdFx0Y29uc3QgZmlyc3RWYXJpYW50ID0gdGhpcy5wcm9kdWN0LnZhcmlhbnRzWzBdO1xyXG5cdFx0aWYgKCFmaXJzdFZhcmlhbnQuc3RvY2sgfHwgZmlyc3RWYXJpYW50LnN0b2NrIDw9IDApIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jaycpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHQvLyBWZXJpZmljYXIgcXVlIG5vIHNlIHN1cGVyZSBlbCBzdG9jayBkaXNwb25pYmxlXHJcblx0XHRpZiAodGhpcy5xdWFudGl0eSgpID4gZmlyc3RWYXJpYW50LnN0b2NrKSB7XHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Ly8gTlVFVkFTIFZBTElEQUNJT05FUzogVmVyaWZpY2FyIHJlc3RyaWNjaW9uZXMgZGVsIHByb2R1Y3RvXHJcblx0XHRpZiAoIXRoaXMudmFsaWRhdGVRdWFudGl0eSh0aGlzLnF1YW50aXR5KCkpKSB7XHJcblx0XHRcdHJldHVybjsgLy8gTGEgdmFsaWRhY2nDs24geWEgbW9zdHLDsyBlbCB0b2FzdCBjb3JyZXNwb25kaWVudGVcclxuXHRcdH1cclxuXHRcdHRoaXMuaXNBZGRpbmdUb0NhcnQuc2V0KHRydWUpO1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Ly8gQWdyZWdhciBhbCBjYXJyaXRvIHVzYW5kbyBDYXJ0U2VydmljZSBkaXJlY3RhbWVudGVcclxuXHRcdFx0dGhpcy5fY2FydFNlcnZpY2UuYWRkVG9DYXJ0KHRoaXMucHJvZHVjdCwgdGhpcy5xdWFudGl0eSgpLCBmaXJzdFZhcmlhbnQuY29kZSk7XHJcblx0XHRcdC8vIFJlc2V0ZWFyIGNhbnRpZGFkIGEgMSBkZXNwdcOpcyBkZSBhZ3JlZ2FyIGFsIGNhcnJpdG9cclxuXHRcdFx0dGhpcy5xdWFudGl0eS5zZXQoMSk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnY2FudC1idXknKTtcclxuXHRcdH1cclxuXHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5pc0FkZGluZ1RvQ2FydC5zZXQoZmFsc2UpO1xyXG5cdFx0fSwgMjAwMCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBWYWxpZGEgbGFzIHJlc3RyaWNjaW9uZXMgZGUgY2FudGlkYWQgZGVsIHByb2R1Y3RvXHJcblx0ICovXHJcblx0cHJpdmF0ZSB2YWxpZGF0ZVF1YW50aXR5KHF1YW50aXR5OiBudW1iZXIpOiBib29sZWFuIHtcclxuXHRcdGlmICghdGhpcy5wcm9kdWN0LnZhcmlhbnRzIHx8IHRoaXMucHJvZHVjdC52YXJpYW50cy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2NhbnQtYnV5Jyk7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCB2YXJpYW50ID0gdGhpcy5wcm9kdWN0LnZhcmlhbnRzWzBdO1xyXG5cclxuXHRcdC8vIE9idGVuZXIgY2FudGlkYWQgYWN0dWFsIGVuIGVsIGNhcnJpdG9cclxuXHRcdGNvbnN0IGFjdHVhbFF1YW50aXR5ID0gdGhpcy5fY2FydFNlcnZpY2UuZ2V0Q291bnRGcm9tSXRlbUluQ2FydCh2YXJpYW50LmNvZGUpO1xyXG5cdFx0Y29uc3QgdG90YWxRdWFudGl0eSA9IE51bWJlcihhY3R1YWxRdWFudGl0eSkgKyBOdW1iZXIocXVhbnRpdHkpO1xyXG5cdFx0Ly8gT2J0ZW5lciByZXN0cmljY2lvbmVzIGRlbCBwcm9kdWN0by92YXJpYW50ZSAoY29uIHZhbG9yZXMgcG9yIGRlZmVjdG8pXHJcblx0XHRjb25zdCBtYXhpbXVtSXRlbXNRdWFudGl0eSA9IHRoaXMucHJvZHVjdC5tYXhpbXVtSXRlbXNRdWFudGl0eSB8fFxyXG5cdFx0XHR2YXJpYW50Lm1heGltdW1JdGVtc1F1YW50aXR5IHx8XHJcblx0XHRcdDk5OTk5OTtcclxuXHRcdGNvbnN0IG1pbmltdW1JdGVtc1F1YW50aXR5ID0gdGhpcy5wcm9kdWN0Lm1pbmltdW1JdGVtc1F1YW50aXR5IHx8XHJcblx0XHRcdHZhcmlhbnQubWluaW11bUl0ZW1zUXVhbnRpdHkgfHxcclxuXHRcdFx0MTtcclxuXHRcdGNvbnN0IG11bHRpcGxlUXVhbnRpdHkgPSB0aGlzLnByb2R1Y3QubXVsdGlwbGVRdWFudGl0eSB8fFxyXG5cdFx0XHR2YXJpYW50Lm11bHRpcGxlUXVhbnRpdHkgfHxcclxuXHRcdFx0MTtcclxuXHJcblx0XHQvLyBWYWxpZGFyIGNhbnRpZGFkIG3DoXhpbWFcclxuXHRcdGlmICh0b3RhbFF1YW50aXR5ID4gbWF4aW11bUl0ZW1zUXVhbnRpdHkpIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21heGltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBtYXhpbXVtSXRlbXNRdWFudGl0eSB9KTtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFZhbGlkYXIgY2FudGlkYWQgbcOtbmltYVxyXG5cdFx0aWYgKHRvdGFsUXVhbnRpdHkgPCBtaW5pbXVtSXRlbXNRdWFudGl0eSkge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWluaW11bS1pdGVtcy1xdWFudGl0eScsIHsgcXVhbnRpdHk6IG1pbmltdW1JdGVtc1F1YW50aXR5IH0pO1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0XHQvLyBWYWxpZGFyIG3Dumx0aXBsbyBkZSBjYW50aWRhZFxyXG5cdFx0aWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDEpIHtcclxuXHRcdFx0aWYgKHRvdGFsUXVhbnRpdHkgJSBtdWx0aXBsZVF1YW50aXR5ICE9PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ211bHRpcGxlLXF1YW50aXR5LXJlcXVpcmVkJywge1xyXG5cdFx0XHRcdFx0bXVsdGlwbGU6IG11bHRpcGxlUXVhbnRpdHksXHJcblx0XHRcdFx0XHRjdXJyZW50OiB0b3RhbFF1YW50aXR5XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQvLyBWYWxpZGFyIHF1ZSBubyBleGNlZGEgZWwgc3RvY2sgdG90YWxcclxuXHRcdGlmICh0b3RhbFF1YW50aXR5ID4gdmFyaWFudC5zdG9jaykge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5Jyk7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0cnVlOyAvLyBUb2RhcyBsYXMgdmFsaWRhY2lvbmVzIHBhc2Fyb25cclxuXHR9XHJcblx0Y2hlY2tTdG9jayhzdG9jazogbnVtYmVyKSB7XHJcblx0XHRpZiAodGhpcy5xdWFudGl0eSgpID49IHN0b2NrKVxyXG5cdFx0XHR0aGlzLnF1YW50aXR5LnNldChzdG9jayk7XHJcblx0fVxyXG5cclxuXHRvblF1YW50aXR5Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xyXG5cdFx0Y29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcblx0XHRjb25zdCB2YWx1ZSA9ICt0YXJnZXQudmFsdWU7XHJcblx0XHQvLyBWYWxpZGFyIHF1ZSBlbCB2YWxvciBzZWEgbWF5b3IgYSAwXHJcblx0XHRpZiAodmFsdWUgPiAwKSB7XHJcblx0XHRcdHRoaXMucXVhbnRpdHkuc2V0KHZhbHVlKTtcclxuXHRcdFx0Ly8gVmFsaWRhciBjb250cmEgZWwgc3RvY2sgZGlzcG9uaWJsZVxyXG5cdFx0XHRjb25zdCBtYXhTdG9jayA9IHRoaXMucHJvZHVjdD8udmFyaWFudHM/LlswXT8uc3RvY2sgfHwgdGhpcy5wcm9kdWN0Py5zdG9jayB8fCAwO1xyXG5cdFx0XHR0aGlzLmNoZWNrU3RvY2sobWF4U3RvY2spO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gU2kgZWwgdmFsb3IgZXMgMCBvIG5lZ2F0aXZvLCByZXNldGVhciBhIDFcclxuXHRcdFx0dGhpcy5xdWFudGl0eS5zZXQoMSk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxhIFtyb3V0ZXJMaW5rXT1cIlsnL3Byb2R1Y3QnLCBwcm9kdWN0LmlkXVwiIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgcHJvZHVjdG9cIj5cclxuICAgIDwhLS0gTWFyY2EgZXNwZWNpYWwgeSBkZXNjdWVudG8gLS0+XHJcbiAgICA8IS0tIDxkaXYgKm5nSWY9XCJwcm9kdWN0LnNhbGVwcmljZSB8fCAocHJvZHVjdC5zcGVjaWFsX21hcmsgJiYgcHJvZHVjdC5zcGVjaWFsX21hcmsgIT09IG51bGwgJiYgcHJvZHVjdC5zcGVjaWFsX21hcmsgIT09IHVuZGVmaW5lZCAmJiBwcm9kdWN0LnNwZWNpYWxfbWFyay5sZW5ndGggPjApXCJcclxuICAgICAgICBjbGFzcz1cIm1hcmNhc1wiPlxyXG4gICAgICAgIDxkaXYgKmVjUHJvZHVjdFN0b2NrPVwicHJvZHVjdFwiIFtlY1Byb2R1Y3RNaW5pXT1cInByb2R1Y3Quc3BlY2lhbF9tYXJrXCI+PC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3VsZFNob3dQcmljZVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICplY1Byb2R1Y3RTdG9jaz1cInByb2R1Y3RcIiBbbmdDbGFzc109XCJ7J3RhZy1kc2MgZmxvYXQtcmlnaHQnOiBwcm9kdWN0LnNhbGVwcmljZX1cIlxyXG4gICAgICAgICAgICAgICAgW2VjUHJvZHVjdE9mZl09XCJwcm9kdWN0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+IC0tPlxyXG5cclxuICAgIDwhLS0gSW1hZ2VuIGRlbCBwcm9kdWN0byAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3RvXCI+XHJcbiAgICAgICAgQGlmKHByb2R1Y3QucGljdHVyZXNkZWZhdWx0KXtcclxuICAgICAgICBAaWYgKHByb2R1Y3QucGljdHVyZXNkZWZhdWx0ICYmIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0Lmxlbmd0aCA+IDEgKSB7XHJcbiAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhVXJsICsgcHJvZHVjdC5waWN0dXJlc2RlZmF1bHRbMF1cIiBhbHQ9XCJJbWFnZW4gcHJpbmNpcGFsXCIgY2xhc3M9XCJ3LTEwMCBwaWMwMVwiIC8+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhVXJsICsgcHJvZHVjdC5waWN0dXJlc2RlZmF1bHRbMV1cIiBhbHQ9XCJJbWFnZW4gc2VjdW5kYXJpYVwiIGNsYXNzPVwidy0xMDAgcGljMDJcIiAvPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxpbWcgW3NyY109XCJtZWRpYVVybCArIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzBdXCIgYWx0PVwiSW1hZ2VuIHByaW5jaXBhbFwiIGNsYXNzPVwidy0xMDAgcGljMDFcIiAvPlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gUHJlY2lvIC0tPlxyXG5cclxuXHJcbiAgICA8IS0tIE5vbWJyZSBkZWwgcHJvZHVjdG8gLS0+XHJcbiAgICA8aDYgY2xhc3M9XCJ0aXRsZVwiPnt7IHByb2R1Y3QubmFtZSB8IHRpdGxlY2FzZSB9fTwvaDY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInNrdVwiIFtpbm5lckhUTUxdPVwicHJvZHVjdC5zaG9ydGRldGFpbHNcIj48L2Rpdj5cclxuXHJcbiAgICBAaWYgKHNob3VsZFNob3dQcmljZSkge1xyXG4gICAgPGFwcC1wcmljZS1lYyBbcHJpY2VdPVwicHJvZHVjdC5wcmljZVwiIFtzYWxlcHJpY2VdPVwicHJvZHVjdC5zYWxlcHJpY2VcIiBjbGFzcz1cIlwiIC8+XHJcbiAgICB9XHJcbiAgICBAaWYoIWhpZGVQcmljZXMpe1xyXG4gICAgQGlmKCFzaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnMgfHwgaXNBdXRoZW50aWNhdGVkJCl7XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZpeEJvdHRvbVwiPlxyXG5cclxuICAgICAgICA8IS0tIEJvdMOzbiBkZSBhY2Npb25lcyAtLT5cclxuICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKmVjUHJvZHVjdFN0b2NrPVwicHJvZHVjdDsgZWxzZSBub1N0b2NrXCI+IC0tPlxyXG4gICAgICAgIDwhLS0gQ3VhbmRvIG5vIHRpZW5lIG1hcmNhIGVzcGVjaWFsIG8gZXMgZGUgdGlwbyAnc3RhbmRhcmQnIC0tPlxyXG4gICAgICAgIEBpZiAoIXByb2R1Y3Quc3BlY2lhbF9tYXJrIHx8IHByb2R1Y3Quc3BlY2lhbF9tYXJrLmxlbmd0aCA9PT0gMCB8fCBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8udHlwZSA9PT1cclxuICAgICAgICAnc3RhbmRhcmQnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBzdGFuZGFyZFwiIFtuZ0NsYXNzXT1cImlzQ29sbGVjdGlvbiA/ICdweC0yIHctMTAwIGQtc20tYmxvY2snIDogJ3B5LTIgcHgtNCdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ29sbGVjdGlvbjsgZWxzZSBub3JtYWxUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj4ge3soXCJidXlcIiB8IHRyYW5zbGF0ZSkgfCB1cHBlcmNhc2V9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbFRleHQ+XHJcbiAgICAgICAgICAgICAgICB7eyhcImJ1eVwiIHwgdHJhbnNsYXRlKSB8IHVwcGVyY2FzZX19XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICA8IS0tIENhc28gMTogQWdvdGFkbyBvIERpc3BvbmlibGUgbXV5IHByb250byAtLT5cclxuICAgICAgICBAaWYgKHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy50eXBlID09PSAnb3V0X29mX3N0b2NrJyB8fCBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8udHlwZSA9PT0gJ2NvbWluZ19zb29uJykge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJpc0NvbGxlY3Rpb24gPyAncHgtMiB3LTEwMCBkLXNtLWJsb2NrJyA6ICdweS0yIHB4LTQnXCI+XHJcbiAgICAgICAgICAgIEBpZihpc0NvbGxlY3Rpb24pe1xyXG4gICAgICAgICAgICA8c3Bhbj57eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXS5uYW1lIHwgdXBwZXJjYXNlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAge3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/Lm5hbWUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvYnV0dG9uPn1cclxuICAgICAgICA8IS0tIENhc28gMjogQ29udGFjdG8gcG9yIFdoYXRzQXBwIC0tPlxyXG4gICAgICAgIEBpZiAocHJvZHVjdC5zcGVjaWFsX21hcmtbMF0udHlwZSA9PT0gJ3doYXRzYXBwX2NvbnRhY3QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIFtuZ0NsYXNzXT1cImlzQ29sbGVjdGlvbiA/ICdweC0yIHctMTAwIGQtc20tYmxvY2snIDogJ3B5LTIgcHgtNCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbldoYXRzQXBwKHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy53aGF0c2FwcENvbnRhY3QpXCI+XHJcbiAgICAgICAgICAgIEBpZihpc0NvbGxlY3Rpb24pe1xyXG4gICAgICAgICAgICA8c3Bhbj57eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8ubmFtZSB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAge3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/Lm5hbWUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPCEtLSBDYXNvIDM6IFNvbGljaXRhciBtw6FzIGluZm9ybWFjacOzbiAtLT5cclxuICAgICAgICBAaWYgKHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy50eXBlID09PSAnbW9yZV9pbmZvJykge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJpc0NvbGxlY3Rpb24gPyAncHgtMiB3LTEwMCBkLXNtLWJsb2NrJyA6ICdweS0yIHB4LTQnXCI+XHJcbiAgICAgICAgICAgIEBpZihpc0NvbGxlY3Rpb24pe1xyXG4gICAgICAgICAgICA8c3Bhbj57eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8ubmFtZSB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAge3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/Lm5hbWUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIH19XHJcbjwvYT4iXX0=
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9wcm9kdWN0LWVjL3Byb2R1Y3QtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1lYy9wcm9kdWN0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFFBQVEsRUFBa0IsTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBRTFILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBQzdDOzs7R0FHRztBQVFILE1BQU0sT0FBTyxrQkFBa0I7SUFDdkIsUUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFlBQVks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LFNBQVM7K0JBQ0MsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDO3dEQW1DbkYsT0FBTztzQkFITixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUtRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUksTUFBTTtzQkFBZixNQUFNO2dCQUVFLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEluamVjdG9yLCBXcml0YWJsZVNpZ25hbCwgc2lnbmFsLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQ2hhbm5lbFNlcnZpY2UsIEF1dGhTZXJ2aWNlLCBDYXJ0U2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQcmljZUVjQ29tcG9uZW50IH0gZnJvbSBcIi4uL3dpZGdldHMtZWMvcHJpY2UtZWMvcHJpY2UtZWMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuLyoqXG4gKiBDb21wb25lbnRlIHF1ZSBzZSBlbmNhcmdhIGRlIG1hbmVqYXIgdW4gcHJvZHVjdG8uXG4gKiBAY2xhc3MgUHJvZHVjdEVjQ29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1wcm9kdWN0LWVjJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUHJpY2VFY0NvbXBvbmVudCwgUm91dGVyTGluaywgVHJhbnNsYXRlTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG5cdHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LWVjLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmw6ICcuL3Byb2R1Y3QtZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RFY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRwcml2YXRlIHJvdXRlclNlcnZpY2UgPSBpbmplY3QoUm91dGVyKTtcblx0cHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKTtcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcblxuXHRwdWJsaWMgaXNBZGRpbmdUb0NhcnQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblx0cHVibGljIHF1YW50aXR5OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsKDEpO1xuXG5cdC8qKlxuXHQgKiBOYXZlZ2EgYWwgZGV0YWxsZSBkZWwgcHJvZHVjdG8geSBzdWJlIGFsIGluaWNpbyBkZSBsYSBww6FnaW5hXG5cdCAqIEBwYXJhbSBwcm9kdWN0SWQgSUQgZGVsIHByb2R1Y3RvXG5cdCAqL1xuXHRuYXZpZ2F0ZVRvUHJvZHVjdChwcm9kdWN0SWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMucm91dGVyU2VydmljZS5uYXZpZ2F0ZShbJy9wcm9kdWN0JywgcHJvZHVjdElkXSkudGhlbigoKSA9PiB7XG5cdFx0XHQvLyBTY3JvbGwgc3VhdmUgYWwgaW5pY2lvIGRlIGxhIHDDoWdpbmFcblx0XHRcdHdpbmRvdy5zY3JvbGxUbyh7XG5cdFx0XHRcdHRvcDogMCxcblx0XHRcdFx0bGVmdDogMCxcblx0XHRcdFx0YmVoYXZpb3I6ICdzbW9vdGgnXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cblx0LyoqXG5cdCAqIERhdG9zIGRlbCBwcm9kdWN0by5cblx0ICovXG5cdEBJbnB1dCh7XG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0cHJvZHVjdCE6IFByb2R1Y3Q7XG5cdC8qKlxuXHQgKiBTZSB1c2EgcGFyYSBzYWJlciBzaSBlbCBwcm9kdWN0byBlcyBkZSB0aXBvIEJveCBvIG5vIHkgZGVmaW5pciBsYSB2aXN0YSBhZGVjdWFkYS5cblx0ICovXG5cdEBJbnB1dCgpIGlzUHJvZHVjdEJveDogYm9vbGVhbiA9IHRydWU7XG5cdC8qKlxuXHQgKiBDb25zdGFudGVzIGRlbCBjb3JlXG5cdCAqL1xuXHRAT3V0cHV0KCkgbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cblx0QElucHV0KCkgaXNDb2xsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5sb2FkZWQuZW1pdCh0aGlzLnByb2R1Y3QuaWQpO1xuXG5cdH1cblx0cHVibGljIHNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VyczogYm9vbGVhbiA9IGZhbHNlO1xuXHRwdWJsaWMgaGlkZVByaWNlczogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSlcblx0cHVibGljIGlzQXV0aGVudGljYXRlZCQgPSB0aGlzLl9hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKTtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbFNlcnZpY2UpLmNoYW5uZWwkLnN1YnNjcmliZShjaGFubmVsID0+IHtcblx0XHRcdHRoaXMuc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzID0gISFjaGFubmVsLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2Vycztcblx0XHRcdHRoaXMuaGlkZVByaWNlcyA9ICEhY2hhbm5lbC5oaWRlUHJpY2VzO1xuXHRcdH0pO1xuXHR9XG5cdHByaXZhdGUgY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSlcblx0cHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpXG5cdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKVxuXHQvKipcblx0ICogVVJMIHBhcmEgbGFzIGltYWdlbmVzIGRlbCBwcm9kdWN0by5cblx0ICovXG5cdHB1YmxpYyBtZWRpYVVybDogc3RyaW5nID0gdGhpcy5jb25zdHMubWVkaWFVcmwoKVxuXHRvcGVuV2hhdHNBcHAodXJsOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZiAodXJsKSB7XG5cdFx0XHR3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcblx0XHR9XG5cdH1cblxuXHRnZXQgc2hvdWxkU2hvd1ByaWNlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhdGhpcy5wcm9kdWN0Py5zcGVjaWFsX21hcmsgfHwgdGhpcy5wcm9kdWN0LnNwZWNpYWxfbWFyay5sZW5ndGggPT09IDAgfHwgdGhpcy5wcm9kdWN0LnNwZWNpYWxfbWFya1swXT8uc2hvd1ByaWNlO1xuXHR9XG5cblx0Z2V0IGhhc0Rpc2NvdW50KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnByb2R1Y3Quc2FsZXByaWNlICYmIHRoaXMucHJvZHVjdC5zYWxlcHJpY2UgIT09IHRoaXMucHJvZHVjdC5wcmljZTtcblx0fVxuXG5cdGdldCBkaXNjb3VudFBlcmNlbnRhZ2UoKTogbnVtYmVyIHwgbnVsbCB7XG5cdFx0aWYgKCF0aGlzLmhhc0Rpc2NvdW50KSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRjb25zdCBvcmlnaW5hbFByaWNlID0gcGFyc2VGbG9hdCh0aGlzLnByb2R1Y3QucHJpY2U/LnRvU3RyaW5nKCkgfHwgJzAnKTtcblx0XHRjb25zdCBzYWxlUHJpY2UgPSBwYXJzZUZsb2F0KHRoaXMucHJvZHVjdC5zYWxlcHJpY2U/LnRvU3RyaW5nKCkgfHwgJzAnKTtcblxuXHRcdC8vIFZhbGlkYXIgcXVlIGxvcyBwcmVjaW9zIHNlYW4gdsOhbGlkb3Ncblx0XHRpZiAob3JpZ2luYWxQcmljZSA8PSAwIHx8IHNhbGVQcmljZSA8PSAwIHx8IHNhbGVQcmljZSA+PSBvcmlnaW5hbFByaWNlKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHQvLyBDYWxjdWxhciBlbCBwb3JjZW50YWplOiAoKHByZWNpb19vcmlnaW5hbCAtIHByZWNpb19vZmVydGEpIC8gcHJlY2lvX29yaWdpbmFsKSAqIDEwMFxuXHRcdGNvbnN0IGRpc2NvdW50ID0gKChvcmlnaW5hbFByaWNlIC0gc2FsZVByaWNlKSAvIG9yaWdpbmFsUHJpY2UpICogMTAwO1xuXG5cdFx0cmV0dXJuIE1hdGgucm91bmQoZGlzY291bnQpO1xuXHR9XG5cdHBsdXMoc3RvY2s/OiBudW1iZXIsIG11bHRpcGxlUXVhbnRpdHk/OiBudW1iZXIpIHtcblx0XHRjb25zb2xlLmxvZygnQXVtZW50YW5kbyBjYW50aWRhZCcpO1xuXHRcdGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIodGhpcy5xdWFudGl0eSgpKTsgLy8gPC0tIGZ1ZXJ6YSBhIG7Dum1lcm9cblx0XHRpZiAobXVsdGlwbGVRdWFudGl0eSAmJiBtdWx0aXBsZVF1YW50aXR5ID4gMCkge1xuXHRcdFx0c3RvY2tcblx0XHRcdFx0PyAoY3VycmVudCA8IHN0b2NrXG5cdFx0XHRcdFx0PyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSlcblx0XHRcdFx0XHQ6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKSlcblx0XHRcdFx0OiB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0b2NrXG5cdFx0XHRcdD8gKGN1cnJlbnQgPCBzdG9ja1xuXHRcdFx0XHRcdD8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIDEpXG5cdFx0XHRcdFx0OiB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5JykpXG5cdFx0XHRcdDogdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIDEpO1xuXHRcdH1cblx0fVxuXG5cdGxlc3MobXVsdGlwbGVRdWFudGl0eT86IG51bWJlcikge1xuXHRcdGNvbnNvbGUubG9nKCdEaXNtaW51eWVuZG8gY2FudGlkYWQnKTtcblx0XHRjb25zdCBjdXJyZW50ID0gTnVtYmVyKHRoaXMucXVhbnRpdHkoKSk7IC8vIDwtLSBmdWVyemEgYSBuw7ptZXJvXG5cdFx0aWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcblx0XHRcdGN1cnJlbnQgPiBtdWx0aXBsZVF1YW50aXR5XG5cdFx0XHRcdD8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCAtIG11bHRpcGxlUXVhbnRpdHkpXG5cdFx0XHRcdDogbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VycmVudCA+IDEgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50IC0gMSkgOiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdGFkZFRvQ2FydCgpIHtcblx0XHRjb25zb2xlLmxvZygnQcOxYWRpZW5kbyBhbCBjYXJyaXRvJyk7XG5cdFx0aWYgKHRoaXMuaXNBZGRpbmdUb0NhcnQoKSB8fCB0aGlzLnF1YW50aXR5KCkgPD0gMCkgcmV0dXJuO1xuXG5cdFx0Ly8gVmVyaWZpY2FyIHF1ZSB0ZW5lbW9zIGVsIHByb2R1Y3RvIHkgc3VzIHZhcmlhbnRlc1xuXHRcdGlmICghdGhpcy5wcm9kdWN0IHx8ICF0aGlzLnByb2R1Y3QudmFyaWFudHMgfHwgdGhpcy5wcm9kdWN0LnZhcmlhbnRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2NhbnQtYnV5Jyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gVmVyaWZpY2FyIHN0b2NrXG5cdFx0Y29uc3QgZmlyc3RWYXJpYW50ID0gdGhpcy5wcm9kdWN0LnZhcmlhbnRzWzBdO1xuXHRcdGlmICghZmlyc3RWYXJpYW50LnN0b2NrIHx8IGZpcnN0VmFyaWFudC5zdG9jayA8PSAwKSB7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gVmVyaWZpY2FyIHF1ZSBubyBzZSBzdXBlcmUgZWwgc3RvY2sgZGlzcG9uaWJsZVxuXHRcdGlmICh0aGlzLnF1YW50aXR5KCkgPiBmaXJzdFZhcmlhbnQuc3RvY2spIHtcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmlzQWRkaW5nVG9DYXJ0LnNldCh0cnVlKTtcblxuXHRcdHRyeSB7XG5cdFx0XHQvLyBBZ3JlZ2FyIGFsIGNhcnJpdG8gdXNhbmRvIENhcnRTZXJ2aWNlIGRpcmVjdGFtZW50ZVxuXHRcdFx0dGhpcy5fY2FydFNlcnZpY2UuYWRkVG9DYXJ0KHRoaXMucHJvZHVjdCwgdGhpcy5xdWFudGl0eSgpLCBmaXJzdFZhcmlhbnQuY29kZSk7XG5cdFx0XHRjb25zb2xlLmxvZygnUHJvZHVjdG8gYWdyZWdhZG8gYWwgY2Fycml0byBleGl0b3NhbWVudGUnKTtcblxuXHRcdFx0Ly8gUmVzZXRlYXIgY2FudGlkYWQgYSAxIGRlc3B1w6lzIGRlIGFncmVnYXIgYWwgY2Fycml0b1xuXHRcdFx0dGhpcy5xdWFudGl0eS5zZXQoMSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFsIGFncmVnYXIgYWwgY2Fycml0bzonLCBlcnJvcik7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnY2FudC1idXknKTtcblx0XHR9XG5cblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuaXNBZGRpbmdUb0NhcnQuc2V0KGZhbHNlKTtcblx0XHR9LCAyMDAwKTtcblx0fVxuXHRjaGVja1N0b2NrKHN0b2NrOiBudW1iZXIpIHtcblx0XHRpZiAodGhpcy5xdWFudGl0eSgpID49IHN0b2NrKVxuXHRcdFx0dGhpcy5xdWFudGl0eS5zZXQoc3RvY2spO1xuXHR9XG5cblx0b25RdWFudGl0eUNoYW5nZShldmVudDogRXZlbnQpIHtcblx0XHRjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblx0XHRjb25zdCB2YWx1ZSA9ICt0YXJnZXQudmFsdWU7XG5cblx0XHQvLyBWYWxpZGFyIHF1ZSBlbCB2YWxvciBzZWEgbWF5b3IgYSAwXG5cdFx0aWYgKHZhbHVlID4gMCkge1xuXHRcdFx0dGhpcy5xdWFudGl0eS5zZXQodmFsdWUpO1xuXHRcdFx0Ly8gVmFsaWRhciBjb250cmEgZWwgc3RvY2sgZGlzcG9uaWJsZVxuXHRcdFx0Y29uc3QgbWF4U3RvY2sgPSB0aGlzLnByb2R1Y3Q/LnZhcmlhbnRzPy5bMF0/LnN0b2NrIHx8IHRoaXMucHJvZHVjdD8uc3RvY2sgfHwgMDtcblx0XHRcdHRoaXMuY2hlY2tTdG9jayhtYXhTdG9jayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFNpIGVsIHZhbG9yIGVzIDAgbyBuZWdhdGl2bywgcmVzZXRlYXIgYSAxXG5cdFx0XHR0aGlzLnF1YW50aXR5LnNldCgxKTtcblx0XHR9XG5cdH1cbn1cbiIsIjxhIFtyb3V0ZXJMaW5rXT1cIlsnL3Byb2R1Y3QnLCBwcm9kdWN0LmlkXVwiIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgcHJvZHVjdG9cIj5cbiAgICA8IS0tIE1hcmNhIGVzcGVjaWFsIHkgZGVzY3VlbnRvIC0tPlxuICAgIDwhLS0gPGRpdiAqbmdJZj1cInByb2R1Y3Quc2FsZXByaWNlIHx8IChwcm9kdWN0LnNwZWNpYWxfbWFyayAmJiBwcm9kdWN0LnNwZWNpYWxfbWFyayAhPT0gbnVsbCAmJiBwcm9kdWN0LnNwZWNpYWxfbWFyayAhPT0gdW5kZWZpbmVkICYmIHByb2R1Y3Quc3BlY2lhbF9tYXJrLmxlbmd0aCA+MClcIlxuICAgICAgICBjbGFzcz1cIm1hcmNhc1wiPlxuICAgICAgICA8ZGl2ICplY1Byb2R1Y3RTdG9jaz1cInByb2R1Y3RcIiBbZWNQcm9kdWN0TWluaV09XCJwcm9kdWN0LnNwZWNpYWxfbWFya1wiPjwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvdWxkU2hvd1ByaWNlXCI+XG4gICAgICAgICAgICA8ZGl2ICplY1Byb2R1Y3RTdG9jaz1cInByb2R1Y3RcIiBbbmdDbGFzc109XCJ7J3RhZy1kc2MgZmxvYXQtcmlnaHQnOiBwcm9kdWN0LnNhbGVwcmljZX1cIlxuICAgICAgICAgICAgICAgIFtlY1Byb2R1Y3RPZmZdPVwicHJvZHVjdFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PiAtLT5cblxuICAgIDwhLS0gSW1hZ2VuIGRlbCBwcm9kdWN0byAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZm90b1wiPlxuICAgICAgICBAaWYocHJvZHVjdC5waWN0dXJlc2RlZmF1bHQpe1xuICAgICAgICBAaWYgKHByb2R1Y3QucGljdHVyZXNkZWZhdWx0ICYmIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0Lmxlbmd0aCA+IDEgKSB7XG4gICAgICAgIDxpbWcgW3NyY109XCJtZWRpYVVybCArIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzBdXCIgYWx0PVwiSW1hZ2VuIHByaW5jaXBhbFwiIGNsYXNzPVwidy0xMDAgcGljMDFcIiAvPlxuICAgICAgICA8aW1nIFtzcmNdPVwibWVkaWFVcmwgKyBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFsxXVwiIGFsdD1cIkltYWdlbiBzZWN1bmRhcmlhXCIgY2xhc3M9XCJ3LTEwMCBwaWMwMlwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8aW1nIFtzcmNdPVwibWVkaWFVcmwgKyBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFswXVwiIGFsdD1cIkltYWdlbiBwcmluY2lwYWxcIiBjbGFzcz1cInctMTAwIHBpYzAxXCIgLz5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgPCEtLSBQcmVjaW8gLS0+XG5cblxuICAgIDwhLS0gTm9tYnJlIGRlbCBwcm9kdWN0byAtLT5cbiAgICA8aDYgY2xhc3M9XCJ0aXRsZVwiPnt7IHByb2R1Y3QubmFtZSB8IHRpdGxlY2FzZSB9fTwvaDY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2t1XCIgW2lubmVySFRNTF09XCJwcm9kdWN0LnNob3J0ZGV0YWlsc1wiPjwvZGl2PlxuXG4gICAgQGlmIChzaG91bGRTaG93UHJpY2UpIHtcbiAgICA8YXBwLXByaWNlLWVjIFtwcmljZV09XCJwcm9kdWN0LnByaWNlXCIgW3NhbGVwcmljZV09XCJwcm9kdWN0LnNhbGVwcmljZVwiIGNsYXNzPVwiXCIgLz5cbiAgICB9XG4gICAgQGlmKCFoaWRlUHJpY2VzKXtcbiAgICBAaWYoIXNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycyB8fCBpc0F1dGhlbnRpY2F0ZWQkKXtcblxuICAgIDxkaXYgY2xhc3M9XCJmaXhCb3R0b21cIj5cblxuICAgICAgICA8IS0tIEJvdMOzbiBkZSBhY2Npb25lcyAtLT5cbiAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICplY1Byb2R1Y3RTdG9jaz1cInByb2R1Y3Q7IGVsc2Ugbm9TdG9ja1wiPiAtLT5cbiAgICAgICAgPCEtLSBDdWFuZG8gbm8gdGllbmUgbWFyY2EgZXNwZWNpYWwgbyBlcyBkZSB0aXBvICdzdGFuZGFyZCcgLS0+XG4gICAgICAgIEBpZiAoIXByb2R1Y3Quc3BlY2lhbF9tYXJrIHx8IHByb2R1Y3Quc3BlY2lhbF9tYXJrLmxlbmd0aCA9PT0gMCB8fCBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8udHlwZSA9PT1cbiAgICAgICAgJ3N0YW5kYXJkJykge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHN0YW5kYXJkXCIgW25nQ2xhc3NdPVwiaXNDb2xsZWN0aW9uID8gJ3B4LTIgdy0xMDAgZC1zbS1ibG9jaycgOiAncHktMiBweC00J1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ29sbGVjdGlvbjsgZWxzZSBub3JtYWxUZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+IHt7KFwiYnV5XCIgfCB0cmFuc2xhdGUpIHwgdXBwZXJjYXNlfX0gPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbFRleHQ+XG4gICAgICAgICAgICAgICAge3soXCJidXlcIiB8IHRyYW5zbGF0ZSkgfCB1cHBlcmNhc2V9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1AZWxzZSB7XG4gICAgICAgIDwhLS0gQ2FzbyAxOiBBZ290YWRvIG8gRGlzcG9uaWJsZSBtdXkgcHJvbnRvIC0tPlxuICAgICAgICBAaWYgKHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy50eXBlID09PSAnb3V0X29mX3N0b2NrJyB8fCBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8udHlwZSA9PT0gJ2NvbWluZ19zb29uJykge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgW25nQ2xhc3NdPVwiaXNDb2xsZWN0aW9uID8gJ3B4LTIgdy0xMDAgZC1zbS1ibG9jaycgOiAncHktMiBweC00J1wiPlxuICAgICAgICAgICAgQGlmKGlzQ29sbGVjdGlvbil7XG4gICAgICAgICAgICA8c3Bhbj57eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXS5uYW1lIHwgdXBwZXJjYXNlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgIH1AZWxzZSB7XG4gICAgICAgICAgICB7eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8ubmFtZSB8IHVwcGVyY2FzZSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj59XG4gICAgICAgIDwhLS0gQ2FzbyAyOiBDb250YWN0byBwb3IgV2hhdHNBcHAgLS0+XG4gICAgICAgIEBpZiAocHJvZHVjdC5zcGVjaWFsX21hcmtbMF0udHlwZSA9PT0gJ3doYXRzYXBwX2NvbnRhY3QnKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJpc0NvbGxlY3Rpb24gPyAncHgtMiB3LTEwMCBkLXNtLWJsb2NrJyA6ICdweS0yIHB4LTQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuV2hhdHNBcHAocHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/LndoYXRzYXBwQ29udGFjdClcIj5cbiAgICAgICAgICAgIEBpZihpc0NvbGxlY3Rpb24pe1xuICAgICAgICAgICAgPHNwYW4+e3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/Lm5hbWUgfCB1cHBlcmNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgICB9QGVsc2Uge1xuICAgICAgICAgICAge3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/Lm5hbWUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICAgIH1cblxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIENhc28gMzogU29saWNpdGFyIG3DoXMgaW5mb3JtYWNpw7NuIC0tPlxuICAgICAgICBAaWYgKHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy50eXBlID09PSAnbW9yZV9pbmZvJykge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgW25nQ2xhc3NdPVwiaXNDb2xsZWN0aW9uID8gJ3B4LTIgdy0xMDAgZC1zbS1ibG9jaycgOiAncHktMiBweC00J1wiPlxuICAgICAgICAgICAgQGlmKGlzQ29sbGVjdGlvbil7XG4gICAgICAgICAgICA8c3Bhbj57eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8ubmFtZSB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1AZWxzZSB7XG4gICAgICAgICAgICB7eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8ubmFtZSB8IHVwcGVyY2FzZSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgfX1cbjwvYT4iXX0=