ng-easycommerce-v18 0.3.23-beta.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/README.md +119 -107
  2. package/assets/decidirFormEc.html +514 -514
  3. package/assets/ec-i18n/ct.json +282 -282
  4. package/assets/ec-i18n/en.json +1 -0
  5. package/assets/ec-i18n/es.json +434 -433
  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 +1 -1
  17. package/esm2022/lib/classes/filters/category-filter.mjs +1 -1
  18. package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
  19. package/esm2022/lib/classes/filters/filter-factory.mjs +1 -1
  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 +1 -1
  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 +19 -15
  27. package/esm2022/lib/constants/core.constants.service.mjs +9 -3
  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 +17 -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 +28 -18
  41. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +27 -23
  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 +7 -4
  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 +39 -11
  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 +4 -11
  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 +8 -4
  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 +55 -46
  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 +3 -3
  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 +30 -7
  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 +13 -7
  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 +3 -3
  79. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +12 -7
  80. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +56 -8
  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 +20 -11
  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 +14 -8
  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 +9 -9
  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 +19 -9
  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 +4 -4
  118. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +3 -2
  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 +148 -0
  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 +22 -4
  127. package/esm2022/lib/ec-services/channel.service.mjs +1 -1
  128. package/esm2022/lib/ec-services/checkout.service.mjs +4 -2
  129. package/esm2022/lib/ec-services/currency.service.mjs +1 -1
  130. package/esm2022/lib/ec-services/filters.service.mjs +1 -1
  131. package/esm2022/lib/ec-services/form.service.mjs +1 -1
  132. package/esm2022/lib/ec-services/index.mjs +3 -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 +1 -1
  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 +11 -1
  142. package/esm2022/lib/ec-services/products.service.mjs +1 -1
  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 +219 -0
  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 +2 -1
  152. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +41 -0
  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 +2 -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 +2 -0
  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 +2 -1
  177. package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
  178. package/esm2022/lib/providers/provideRuntimeConfig.mjs +36 -0
  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 +971 -330
  182. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  183. package/lib/constants/api.constants.service.d.ts +1 -0
  184. package/lib/constants/core.constants.service.d.ts +5 -1
  185. package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +12 -0
  186. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +2 -0
  187. package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +1 -1
  188. package/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.d.ts +1 -1
  189. package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +1 -0
  190. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +12 -4
  191. package/lib/ec-components/product-ec/product-ec.component.d.ts +4 -0
  192. package/lib/ec-services/base-api.service.d.ts +64 -0
  193. package/lib/ec-services/cart.service.d.ts +1 -1
  194. package/lib/ec-services/index.d.ts +2 -0
  195. package/lib/ec-services/runtime-config.service.d.ts +69 -0
  196. package/lib/interceptors/index.d.ts +1 -0
  197. package/lib/interceptors/runtime-config.interceptor.d.ts +7 -0
  198. package/lib/interfaces/environment.d.ts +1 -0
  199. package/lib/interfaces/filter.d.ts +1 -0
  200. package/lib/interfaces/index.d.ts +1 -0
  201. package/lib/interfaces/options.d.ts +2 -0
  202. package/lib/interfaces/product.d.ts +6 -0
  203. package/lib/interfaces/runtime-config.d.ts +22 -0
  204. package/lib/providers/index.d.ts +1 -0
  205. package/lib/providers/provideRuntimeConfig.d.ts +13 -0
  206. package/package.json +1 -1
@@ -24,28 +24,56 @@ export class CartItemEcComponent {
24
24
  // console.log(this.item, this.mediaUrl);
25
25
  }
26
26
  updateQuantity(stock) {
27
+ const originalQuantity = this.item.quantity; // Guardar cantidad original
27
28
  if (this.quantity > 0 && this.quantity <= stock) {
28
- this._cartService.updateItemQuantity(this.item, this.quantity);
29
+ const success = this._cartService.updateItemQuantity(this.item, this.quantity);
30
+ // Si la validación falló, restaurar la cantidad original
31
+ if (!success) {
32
+ this.quantity = originalQuantity;
33
+ }
29
34
  }
30
35
  else {
31
- this.quantity = this.item.quantity;
36
+ // Restaurar cantidad original si está fuera de rango
37
+ this.quantity = originalQuantity;
32
38
  this._toastService.show('out-of-stock-actually');
33
39
  }
34
40
  }
35
- less(stock, value = 1) {
41
+ plus(stock, value = 1) {
36
42
  if (this.isQuantityUpdating)
37
43
  return;
38
44
  this.isQuantityUpdating = true;
39
- let quantity = this.item.quantity - value;
40
- quantity > 0 && quantity <= stock ? this._cartService.updateItemQuantity(this.item, quantity) : this._toastService.show('out-of-stock-actually');
45
+ let newQuantity = Number(this.quantity) + value; // Forzar a número
46
+ // Verificar stock ANTES de llamar al servicio
47
+ if (newQuantity > stock) {
48
+ this._toastService.show('out-of-stock-actually');
49
+ setTimeout(() => { this.isQuantityUpdating = false; }, 1000);
50
+ return;
51
+ }
52
+ const success = this._cartService.updateItemQuantity(this.item, newQuantity);
53
+ // Solo actualizar el input si la operación fue exitosa
54
+ if (success) {
55
+ this.quantity = newQuantity;
56
+ }
57
+ // Si success es false, NO mostrar mensaje aquí porque ya lo mostró validateQuantity()
41
58
  setTimeout(() => { this.isQuantityUpdating = false; }, 1000);
42
59
  }
43
- plus(stock, value = 1) {
60
+ less(stock, value = 1) {
44
61
  if (this.isQuantityUpdating)
45
62
  return;
46
63
  this.isQuantityUpdating = true;
47
- let quantity = this.item.quantity + value;
48
- quantity > 0 && quantity <= stock ? this._cartService.updateItemQuantity(this.item, quantity) : this._toastService.show('out-of-stock-actually');
64
+ let newQuantity = Number(this.quantity) - value; // Forzar a número
65
+ // Verificar cantidad mínima ANTES de llamar al servicio
66
+ if (newQuantity <= 0) {
67
+ // No permitir cantidades menores o iguales a 0
68
+ setTimeout(() => { this.isQuantityUpdating = false; }, 1000);
69
+ return;
70
+ }
71
+ const success = this._cartService.updateItemQuantity(this.item, newQuantity);
72
+ // Solo actualizar el input si la operación fue exitosa
73
+ if (success) {
74
+ this.quantity = newQuantity;
75
+ }
76
+ // Si success es false, NO mostrar mensaje aquí porque ya lo mostró validateQuantity()
49
77
  setTimeout(() => { this.isQuantityUpdating = false; }, 1000);
50
78
  }
51
79
  deleteCartItem() {
@@ -104,11 +132,11 @@ export class CartItemEcComponent {
104
132
  parameters$ = this.parametersService.getParameters();
105
133
  hasParams = this.parametersService.hasParams;
106
134
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CartItemEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
107
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CartItemEcComponent, isStandalone: true, selector: "app-cart-item-ec", inputs: { item: "item", inSidebar: "inSidebar" }, ngImport: i0, template: "@if(!inSidebar){\r\n<p>cart-item-ec works!</p>\r\n}@else{\r\n\r\n<div class=\"row\">\r\n <div class=\"col-3\">\r\n @let product= item.product;\r\n @if(item.variant_id && product.variants.length>0){\r\n <img [src]=\"mediaUrl + product.variants[0].images[0]\" alt=\"\" class=\"img-fluid\">\r\n }@else{\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"\" class=\"img-fluid\">\r\n }\r\n </div>\r\n <div class=\"col-7\">\r\n <div class=\"info d-flex flex-column align-items-start\">\r\n @if (item.product.special_mark?.length > 0 || item.product.saleprice) {\r\n <div class=\"marcas\">\r\n <img [src]=\"mediaUrl + (item.product.special_mark?.[0]?.images[0] || '')\" alt=\"\">\r\n\r\n @if (item.product.saleprice) {\r\n <div class=\"tag-dsc\">\r\n {{\r\n createDiscountMessage(item.product.saleprice,\r\n item.product.price)\r\n }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n <a class=\"title text-dark text-decoration-none m-0 p-0 h6 mb-0\"\r\n [routerLink]=\"['/product', item.variant_id]\">{{\r\n item.product.name | titlecase\r\n }}</a>\r\n <div class=\"qty1\">\r\n <span>{{ item.product.id}}</span>\r\n </div>\r\n <div class=\"price h6 fw-bold mb-0 pb-0\">{{ item.product.price | ecCurrencySymbol\r\n }}</div>\r\n @if(getVariants(item); as options){\r\n <div class=\"d-flex align-items-center p-0\">\r\n @for(option of options; track $index){\r\n <span class=\"me-1\"> {{option.name | titlecase}}:</span>\r\n @if(option.name == 'COLOR'){\r\n <div class=\"p-2 rounded\" [style.background]=\"'#' + option.value\"></div>\r\n }@else{\r\n <b>{{option.value}}</b>\r\n }\r\n }\r\n </div>\r\n }\r\n <div class=\"campoCantidad mt-2\">\r\n <div class=\"numero\">\r\n <button (click)=\"less(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\r\n type=\"button\" id=\"button-addon1\">\r\n <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\r\n </button>\r\n <input type=\"text\" class=\"form-control text-center\" placeholder=\"\"\r\n aria-label=\"Example text with button addon\" aria-describedby=\"button-addon1\"\r\n [value]=\"item.quantity\" min=\"1\" step=\"1\" [(ngModel)]=\"quantity\"\r\n (change)=\"updateQuantity(item.product.variants[0]?.stock)\">\r\n <button (click)=\"plus(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\r\n type=\"button\" id=\"button-addon1\">\r\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-2\">\r\n <a (click)=\"deleteCartItem()\" class=\"btn botBorrar\"><i class=\"fa fa-trash\" aria-hidden=\"true\"></i></a>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
135
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CartItemEcComponent, isStandalone: true, selector: "app-cart-item-ec", inputs: { item: "item", inSidebar: "inSidebar" }, ngImport: i0, template: "@if(!inSidebar){\n<p>cart-item-ec works!</p>\n}@else{\n\n<div class=\"row\">\n <div class=\"col-3\">\n @let product= item.product;\n @if(item.variant_id && product.variants.length>0){\n <img [src]=\"mediaUrl + product.variants[0].images[0]\" alt=\"\" class=\"img-fluid\">\n }@else{\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"\" class=\"img-fluid\">\n }\n </div>\n <div class=\"col-7\">\n <div class=\"info d-flex flex-column align-items-start\">\n @if (item.product.special_mark?.length > 0 || item.product.saleprice) {\n <div class=\"marcas\">\n <img [src]=\"mediaUrl + (item.product.special_mark?.[0]?.images[0] || '')\" alt=\"\">\n\n @if (item.product.saleprice) {\n <div class=\"tag-dsc\">\n {{\n createDiscountMessage(item.product.saleprice,\n item.product.price)\n }}\n </div>\n }\n </div>\n }\n <a class=\"title text-dark text-decoration-none m-0 p-0 h6 mb-0\"\n [routerLink]=\"['/product', item.variant_id]\">{{\n item.product.name | titlecase\n }}</a>\n <div class=\"qty1\">\n <span>{{ item.product.id}}</span>\n </div>\n <div class=\"price h6 fw-bold mb-0 pb-0\">{{ item.product.price | ecCurrencySymbol\n }}</div>\n @if(getVariants(item); as options){\n <div class=\"d-flex align-items-center p-0\">\n @for(option of options; track $index){\n <span class=\"me-1\"> {{option.name | titlecase}}:</span>\n @if(option.name == 'COLOR'){\n <div class=\"p-2 rounded\" [style.background]=\"'#' + option.value\"></div>\n }@else{\n <b>{{option.value}}</b>\n }\n }\n </div>\n }\n <div class=\"campoCantidad mt-2\">\n <div class=\"numero\">\n <button (click)=\"less(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\n type=\"button\" id=\"button-addon1\">\n <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\n </button>\n <input type=\"text\" class=\"form-control text-center\" placeholder=\"\"\n aria-label=\"Example text with button addon\" aria-describedby=\"button-addon1\"\n [value]=\"item.quantity\" min=\"1\" step=\"1\" [(ngModel)]=\"quantity\"\n (change)=\"updateQuantity(item.product.variants[0]?.stock)\">\n <button (click)=\"plus(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\n type=\"button\" id=\"button-addon1\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n </div>\n </div>\n <div class=\"col-2\">\n <a (click)=\"deleteCartItem()\" class=\"btn botBorrar\"><i class=\"fa fa-trash\" aria-hidden=\"true\"></i></a>\n </div>\n</div>\n\n\n\n\n\n}", styles: [""], dependencies: [{ kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
108
136
  }
109
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CartItemEcComponent, decorators: [{
110
138
  type: Component,
111
- args: [{ selector: 'app-cart-item-ec', standalone: true, imports: [TitleCasePipe, EcCurrencySymbolPipe, RouterLink, FormsModule], template: "@if(!inSidebar){\r\n<p>cart-item-ec works!</p>\r\n}@else{\r\n\r\n<div class=\"row\">\r\n <div class=\"col-3\">\r\n @let product= item.product;\r\n @if(item.variant_id && product.variants.length>0){\r\n <img [src]=\"mediaUrl + product.variants[0].images[0]\" alt=\"\" class=\"img-fluid\">\r\n }@else{\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"\" class=\"img-fluid\">\r\n }\r\n </div>\r\n <div class=\"col-7\">\r\n <div class=\"info d-flex flex-column align-items-start\">\r\n @if (item.product.special_mark?.length > 0 || item.product.saleprice) {\r\n <div class=\"marcas\">\r\n <img [src]=\"mediaUrl + (item.product.special_mark?.[0]?.images[0] || '')\" alt=\"\">\r\n\r\n @if (item.product.saleprice) {\r\n <div class=\"tag-dsc\">\r\n {{\r\n createDiscountMessage(item.product.saleprice,\r\n item.product.price)\r\n }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n <a class=\"title text-dark text-decoration-none m-0 p-0 h6 mb-0\"\r\n [routerLink]=\"['/product', item.variant_id]\">{{\r\n item.product.name | titlecase\r\n }}</a>\r\n <div class=\"qty1\">\r\n <span>{{ item.product.id}}</span>\r\n </div>\r\n <div class=\"price h6 fw-bold mb-0 pb-0\">{{ item.product.price | ecCurrencySymbol\r\n }}</div>\r\n @if(getVariants(item); as options){\r\n <div class=\"d-flex align-items-center p-0\">\r\n @for(option of options; track $index){\r\n <span class=\"me-1\"> {{option.name | titlecase}}:</span>\r\n @if(option.name == 'COLOR'){\r\n <div class=\"p-2 rounded\" [style.background]=\"'#' + option.value\"></div>\r\n }@else{\r\n <b>{{option.value}}</b>\r\n }\r\n }\r\n </div>\r\n }\r\n <div class=\"campoCantidad mt-2\">\r\n <div class=\"numero\">\r\n <button (click)=\"less(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\r\n type=\"button\" id=\"button-addon1\">\r\n <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\r\n </button>\r\n <input type=\"text\" class=\"form-control text-center\" placeholder=\"\"\r\n aria-label=\"Example text with button addon\" aria-describedby=\"button-addon1\"\r\n [value]=\"item.quantity\" min=\"1\" step=\"1\" [(ngModel)]=\"quantity\"\r\n (change)=\"updateQuantity(item.product.variants[0]?.stock)\">\r\n <button (click)=\"plus(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\r\n type=\"button\" id=\"button-addon1\">\r\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-2\">\r\n <a (click)=\"deleteCartItem()\" class=\"btn botBorrar\"><i class=\"fa fa-trash\" aria-hidden=\"true\"></i></a>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n}" }]
139
+ args: [{ selector: 'app-cart-item-ec', standalone: true, imports: [TitleCasePipe, EcCurrencySymbolPipe, RouterLink, FormsModule], template: "@if(!inSidebar){\n<p>cart-item-ec works!</p>\n}@else{\n\n<div class=\"row\">\n <div class=\"col-3\">\n @let product= item.product;\n @if(item.variant_id && product.variants.length>0){\n <img [src]=\"mediaUrl + product.variants[0].images[0]\" alt=\"\" class=\"img-fluid\">\n }@else{\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"\" class=\"img-fluid\">\n }\n </div>\n <div class=\"col-7\">\n <div class=\"info d-flex flex-column align-items-start\">\n @if (item.product.special_mark?.length > 0 || item.product.saleprice) {\n <div class=\"marcas\">\n <img [src]=\"mediaUrl + (item.product.special_mark?.[0]?.images[0] || '')\" alt=\"\">\n\n @if (item.product.saleprice) {\n <div class=\"tag-dsc\">\n {{\n createDiscountMessage(item.product.saleprice,\n item.product.price)\n }}\n </div>\n }\n </div>\n }\n <a class=\"title text-dark text-decoration-none m-0 p-0 h6 mb-0\"\n [routerLink]=\"['/product', item.variant_id]\">{{\n item.product.name | titlecase\n }}</a>\n <div class=\"qty1\">\n <span>{{ item.product.id}}</span>\n </div>\n <div class=\"price h6 fw-bold mb-0 pb-0\">{{ item.product.price | ecCurrencySymbol\n }}</div>\n @if(getVariants(item); as options){\n <div class=\"d-flex align-items-center p-0\">\n @for(option of options; track $index){\n <span class=\"me-1\"> {{option.name | titlecase}}:</span>\n @if(option.name == 'COLOR'){\n <div class=\"p-2 rounded\" [style.background]=\"'#' + option.value\"></div>\n }@else{\n <b>{{option.value}}</b>\n }\n }\n </div>\n }\n <div class=\"campoCantidad mt-2\">\n <div class=\"numero\">\n <button (click)=\"less(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\n type=\"button\" id=\"button-addon1\">\n <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\n </button>\n <input type=\"text\" class=\"form-control text-center\" placeholder=\"\"\n aria-label=\"Example text with button addon\" aria-describedby=\"button-addon1\"\n [value]=\"item.quantity\" min=\"1\" step=\"1\" [(ngModel)]=\"quantity\"\n (change)=\"updateQuantity(item.product.variants[0]?.stock)\">\n <button (click)=\"plus(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\n type=\"button\" id=\"button-addon1\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n </div>\n </div>\n <div class=\"col-2\">\n <a (click)=\"deleteCartItem()\" class=\"btn botBorrar\"><i class=\"fa fa-trash\" aria-hidden=\"true\"></i></a>\n </div>\n</div>\n\n\n\n\n\n}" }]
112
140
  }], propDecorators: { item: [{
113
141
  type: Input,
114
142
  args: [{
@@ -117,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
117
145
  }], inSidebar: [{
118
146
  type: Input
119
147
  }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1pdGVtLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2NhcnQtZWMvY2FydC1pdGVtLWVjL2NhcnQtaXRlbS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9jYXJ0LWVjL2NhcnQtaXRlbS1lYy9jYXJ0LWl0ZW0tZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVk3QyxNQUFNLE9BQU8sbUJBQW1CO0lBRzVCLElBQUksQ0FBTTtJQUVKLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFFNUIsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsVUFBVSxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNoRSxpQkFBaUIsR0FBRyxN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QkFDdEIsQ0FBQztZQUNGLENBQUM7UUFDRixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQywrQ0FBK0M7SUFDOUQsQ0FBQztJQUVELGFBQWE7SUFDTixXQUFXLEdBQW1DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUNwRixTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQTt3R0E5R3ZDLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDhIQ2xCaEMsOC9HQThFQyxxRERoRVUsYUFBYSw2Q0FBRSxvQkFBb0IseURBQUUsVUFBVSxtT0FBRSxXQUFXOzs0RkFJMUQsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNDLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQzs4QkFPcEUsSUFBSTtzQkFGTixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUVRLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlLCBUb2FzdFNlcnZpY2UsIFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUaXRsZUNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRWNDdXJyZW5jeVN5bWJvbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9lYy1waXBlJztcclxuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLWNhcnQtaXRlbS1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbVGl0bGVDYXNlUGlwZSwgRWNDdXJyZW5jeVN5bWJvbFBpcGUsIFJvdXRlckxpbmssIEZvcm1zTW9kdWxlXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vY2FydC1pdGVtLWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vY2FydC1pdGVtLWVjLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FydEl0ZW1FY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QElucHV0KHtcclxuXHRcdHJlcXVpcmVkOiB0cnVlXHJcblx0fSkgaXRlbTogYW55O1xyXG5cclxuXHRASW5wdXQoKSBpblNpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NvbnN0YW50czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgcGFyYW1ldGVyc1NlcnZpY2UgPSBpbmplY3QoUGFyYW1ldGVyc1NlcnZpY2UpXHJcblxyXG5cdHB1YmxpYyBtZWRpYVVybCA9IHRoaXMuX2NvbnN0YW50cy5tZWRpYVVybCgpO1xyXG5cdHB1YmxpYyBxdWFudGl0eSA9IDA7XHJcblx0cHVibGljIHZhcmlhbnRzVG9TaG93OiBzdHJpbmdbXSA9IFsnVEFMTEEnLCAnQ09MT1InXTtcclxuXHRwdWJsaWMgdXBkYXRlU3RvY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgaXNRdWFudGl0eVVwZGF0aW5nID0gZmFsc2U7XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5xdWFudGl0eSA9IHRoaXMuaXRlbS5xdWFudGl0eVxyXG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5pdGVtLCB0aGlzLm1lZGlhVXJsKTtcclxuXHR9XHJcblxyXG5cdHVwZGF0ZVF1YW50aXR5KHN0b2NrOiBudW1iZXIpIHtcclxuXHRcdGlmICh0aGlzLnF1YW50aXR5ID4gMCAmJiB0aGlzLnF1YW50aXR5IDw9IHN0b2NrKSB7XHJcblx0XHRcdHRoaXMuX2NhcnRTZXJ2aWNlLnVwZGF0ZUl0ZW1RdWFudGl0eSh0aGlzLml0ZW0sIHRoaXMucXVhbnRpdHkpXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnF1YW50aXR5ID0gdGhpcy5pdGVtLnF1YW50aXR5XHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGxlc3Moc3RvY2s6IG51bWJlciwgdmFsdWU6IG51bWJlciA9IDEpIHtcclxuXHRcdGlmICh0aGlzLmlzUXVhbnRpdHlVcGRhdGluZykgcmV0dXJuO1xyXG5cdFx0dGhpcy5pc1F1YW50aXR5VXBkYXRpbmcgPSB0cnVlO1xyXG5cdFx0bGV0IHF1YW50aXR5ID0gdGhpcy5pdGVtLnF1YW50aXR5IC0gdmFsdWU7XHJcblx0XHRxdWFudGl0eSA+IDAgJiYgcXVhbnRpdHkgPD0gc3RvY2sgPyB0aGlzLl9jYXJ0U2VydmljZS51cGRhdGVJdGVtUXVhbnRpdHkodGhpcy5pdGVtLCBxdWFudGl0eSkgOiB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5Jyk7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5pc1F1YW50aXR5VXBkYXRpbmcgPSBmYWxzZTsgfSwgMTAwMCk7XHJcblx0fVxyXG5cclxuXHRwbHVzKHN0b2NrOiBudW1iZXIsIHZhbHVlOiBudW1iZXIgPSAxKSB7XHJcblx0XHRpZiAodGhpcy5pc1F1YW50aXR5VXBkYXRpbmcpIHJldHVybjtcclxuXHRcdHRoaXMuaXNRdWFudGl0eVVwZGF0aW5nID0gdHJ1ZTtcclxuXHRcdGxldCBxdWFudGl0eSA9IHRoaXMuaXRlbS5xdWFudGl0eSArIHZhbHVlO1xyXG5cdFx0cXVhbnRpdHkgPiAwICYmIHF1YW50aXR5IDw9IHN0b2NrID8gdGhpcy5fY2FydFNlcnZpY2UudXBkYXRlSXRlbVF1YW50aXR5KHRoaXMuaXRlbSwgcXVhbnRpdHkpIDogdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpO1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7IHRoaXMuaXNRdWFudGl0eVVwZGF0aW5nID0gZmFsc2U7IH0sIDEwMDApO1xyXG5cdH1cclxuXHJcblx0ZGVsZXRlQ2FydEl0ZW0oKSB7XHJcblx0XHR0aGlzLl9jYXJ0U2VydmljZS5kZWxldGVDYXJ0SXRlbSh0aGlzLml0ZW0pXHJcblx0fVxyXG5cclxuXHRnZXRWYXJpYW50cyhwcm9kdWN0OiBhbnkpOiBhbnkge1xyXG5cdFx0bGV0IGl0ZW0gPSBwcm9kdWN0LnByb2R1Y3RcclxuXHJcblx0XHRpZiAoaXRlbS52YXJpYW50cyAmJiBpdGVtLnZhcmlhbnRzLmxlbmd0aCAmJiBpdGVtLnZhcmlhbnRzWzBdLm9wdGlvbnMgJiYgaXRlbS52YXJpYW50c1swXS5vcHRpb25zLmxlbmd0aCkge1xyXG5cdFx0XHRsZXQgb3B0aW9ucyA9IGl0ZW0udmFyaWFudHNbMF0ub3B0aW9uc1xyXG5cdFx0XHRvcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiB0aGlzLnZhcmlhbnRzVG9TaG93LmZpbmQoKG5hbWU6IGFueSkgPT4gb3B0aW9uLmhhc093blByb3BlcnR5KG5hbWUpKSlcclxuXHRcdFx0bGV0IG9wdGlvbnNNYXA6IGFueSA9IFtdXHJcblx0XHRcdG9wdGlvbnMubWFwKChvcHRpb246IGFueSkgPT4ge1xyXG5cdFx0XHRcdE9iamVjdC5rZXlzKG9wdGlvbikuZm9yRWFjaCgoZW50cnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBvcHRpb25BZGRlZCA9IGZhbHNlOyAgLy8gVmFyaWFibGUgcGFyYSBldml0YXIgbcO6bHRpcGxlcyBpbnNlcmNpb25lc1xyXG5cclxuXHRcdFx0XHRcdGl0ZW0ub3B0aW9ucy5mb3JFYWNoKChvcHRpb24yOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0b3B0aW9uMi52YWx1ZXMuZm9yRWFjaCgoY29sb3I6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChjb2xvci5jb2RlID09IG9wdGlvbltlbnRyeV0gJiYgIW9wdGlvbkFkZGVkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRvcHRpb25zTWFwLnB1c2goeyBuYW1lOiBlbnRyeSwgdmFsdWU6IG9wdGlvbltlbnRyeV0sIGltYWdlOiBjb2xvci5pbWFnZSwgbW9iaWxlSW1hZ2U6IGNvbG9yLm1vYmlsZUltYWdlIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uQWRkZWQgPSB0cnVlOyAvLyBNYXJjYXIgb3BjacOzbiBhZ3JlZ2FkYVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRyZXR1cm4gb3B0aW9uc01hcDtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gb3B0aW9uc01hcDtcclxuXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gbnVsbFxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y3JlYXRlRGlzY291bnRNZXNzYWdlKHNhbGVwcmljZTogbnVtYmVyLCBwcmljZTogbnVtYmVyKTogc3RyaW5nIHtcclxuXHRcdGlmIChpc05hTihzYWxlcHJpY2UpIHx8IGlzTmFOKHByaWNlKSB8fCBzYWxlcHJpY2UgPj0gcHJpY2UgfHwgc2FsZXByaWNlIDw9IDAgfHwgcHJpY2UgPD0gMCkge1xyXG5cdFx0XHRyZXR1cm4gJyc7XHJcblx0XHR9XHJcblxyXG5cdFx0bGV0IGRpc2NvdW50UGVyY2VudGFnZSA9IE1hdGgucm91bmQoKChwcmljZSAtIHNhbGVwcmljZSkgLyBwcmljZSkgKiAxMDApO1xyXG5cclxuXHRcdGxldCBkaXNjb3VudE1lc3NhZ2UgPSBgJHtkaXNjb3VudFBlcmNlbnRhZ2V9JSBPRkZgO1xyXG5cdFx0cmV0dXJuIGRpc2NvdW50TWVzc2FnZTtcclxuXHR9XHJcblxyXG5cdGNoZWNrU3RvY2socHJvZHVjdDogYW55KTogYW55IHtcclxuXHRcdGZvciAoY29uc3QgdmFyaWFudCBvZiBwcm9kdWN0LnByb2R1Y3QudmFyaWFudHMpIHtcclxuXHRcdFx0aWYgKHByb2R1Y3QudmFyaWFudF9pZCA9PT0gdmFyaWFudC5jb2RlKSB7XHJcblx0XHRcdFx0aWYgKHZhcmlhbnQuc3RvY2sgPT09IDApIHtcclxuXHRcdFx0XHRcdHRoaXMudXBkYXRlU3RvY2sgPSB0cnVlO1xyXG5cdFx0XHRcdFx0cmV0dXJuICcwJztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHByb2R1Y3QucXVhbnRpdHkgPiB2YXJpYW50LnN0b2NrKSB7XHJcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZVN0b2NrID0gdHJ1ZTtcclxuXHRcdFx0XHRcdHJldHVybiB2YXJpYW50LnN0b2NrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlOyAvLyBTb2xvIHNlIGVqZWN1dGEgc2kgbm8gc2UgY3VtcGxlIGxhIGNvbmRpY2nDs25cclxuXHR9XHJcblxyXG5cdC8vIFBBUkFNRVRST1NcclxuXHRwdWJsaWMgcGFyYW1ldGVycyQ6IE9ic2VydmFibGU8UGFyYW1ldGVyW10gfCBudWxsPiA9IHRoaXMucGFyYW1ldGVyc1NlcnZpY2UuZ2V0UGFyYW1ldGVycygpXHJcblx0cHVibGljIGhhc1BhcmFtcyA9IHRoaXMucGFyYW1ldGVyc1NlcnZpY2UuaGFzUGFyYW1zXHJcbn1cclxuIiwiQGlmKCFpblNpZGViYXIpe1xyXG48cD5jYXJ0LWl0ZW0tZWMgd29ya3MhPC9wPlxyXG59QGVsc2V7XHJcblxyXG48ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cclxuICAgICAgICBAbGV0IHByb2R1Y3Q9IGl0ZW0ucHJvZHVjdDtcclxuICAgICAgICBAaWYoaXRlbS52YXJpYW50X2lkICYmIHByb2R1Y3QudmFyaWFudHMubGVuZ3RoPjApe1xyXG4gICAgICAgIDxpbWcgW3NyY109XCJtZWRpYVVybCArICBwcm9kdWN0LnZhcmlhbnRzWzBdLmltYWdlc1swXVwiIGFsdD1cIlwiIGNsYXNzPVwiaW1nLWZsdWlkXCI+XHJcbiAgICAgICAgfUBlbHNle1xyXG4gICAgICAgIDxpbWcgW3NyY109XCJtZWRpYVVybCArICBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFswXVwiIGFsdD1cIlwiIGNsYXNzPVwiaW1nLWZsdWlkXCI+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mbyBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICAgICAgQGlmIChpdGVtLnByb2R1Y3Quc3BlY2lhbF9tYXJrPy5sZW5ndGggPiAwIHx8IGl0ZW0ucHJvZHVjdC5zYWxlcHJpY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFyY2FzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYVVybCArIChpdGVtLnByb2R1Y3Quc3BlY2lhbF9tYXJrPy5bMF0/LmltYWdlc1swXSB8fCAnJylcIiBhbHQ9XCJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5wcm9kdWN0LnNhbGVwcmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnLWRzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURpc2NvdW50TWVzc2FnZShpdGVtLnByb2R1Y3Quc2FsZXByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wcm9kdWN0LnByaWNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGl0bGUgdGV4dC1kYXJrIHRleHQtZGVjb3JhdGlvbi1ub25lIG0tMCBwLTAgaDYgbWItMFwiXHJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9wcm9kdWN0JywgaXRlbS52YXJpYW50X2lkXVwiPnt7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnByb2R1Y3QubmFtZSB8IHRpdGxlY2FzZVxyXG4gICAgICAgICAgICAgICAgfX08L2E+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdHkxXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLnByb2R1Y3QuaWR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZSBoNiBmdy1ib2xkIG1iLTAgcGItMFwiPnt7IGl0ZW0ucHJvZHVjdC5wcmljZSB8IGVjQ3VycmVuY3lTeW1ib2xcclxuICAgICAgICAgICAgICAgIH19PC9kaXY+XHJcbiAgICAgICAgICAgIEBpZihnZXRWYXJpYW50cyhpdGVtKTsgYXMgb3B0aW9ucyl7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgQGZvcihvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2sgJGluZGV4KXtcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMVwiPiB7e29wdGlvbi5uYW1lIHwgdGl0bGVjYXNlfX06PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgQGlmKG9wdGlvbi5uYW1lID09ICdDT0xPUicpe1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiByb3VuZGVkXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiJyMnICsgb3B0aW9uLnZhbHVlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9QGVsc2V7XHJcbiAgICAgICAgICAgICAgICA8Yj57e29wdGlvbi52YWx1ZX19PC9iPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FtcG9DYW50aWRhZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibnVtZXJvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibGVzcyhpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnN0b2NrKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBpZD1cImJ1dHRvbi1hZGRvbjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1taW51c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LWNlbnRlclwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkV4YW1wbGUgdGV4dCB3aXRoIGJ1dHRvbiBhZGRvblwiIGFyaWEtZGVzY3JpYmVkYnk9XCJidXR0b24tYWRkb24xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0ucXVhbnRpdHlcIiBtaW49XCIxXCIgc3RlcD1cIjFcIiBbKG5nTW9kZWwpXT1cInF1YW50aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVRdWFudGl0eShpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnN0b2NrKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInBsdXMoaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5zdG9jaylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidXR0b24tYWRkb24xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgIDxhIChjbGljayk9XCJkZWxldGVDYXJ0SXRlbSgpXCIgY2xhc3M9XCJidG4gYm90Qm9ycmFyXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG5cclxufSJdfQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1pdGVtLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2NhcnQtZWMvY2FydC1pdGVtLWVjL2NhcnQtaXRlbS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9jYXJ0LWVjL2NhcnQtaXRlbS1lYy9jYXJ0LWl0ZW0tZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVk3QyxNQUFNLE9BQU8sbUJBQW1CO0lBRzVCLElBQUksQ0FBTTtJQUVKLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFFNUIsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsVUFBVSxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNoRSxpQkFBaUIsR0FBRyxN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U0FBUzsrQkFDQyxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUM7OEJBT3BFLElBQUk7c0JBRk4sS0FBSzt1QkFBQzt3QkFDTixRQUFRLEVBQUUsSUFBSTtxQkFDZDtnQkFFUSxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlLCBUb2FzdFNlcnZpY2UsIFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFY0N1cnJlbmN5U3ltYm9sUGlwZSB9IGZyb20gJy4uLy4uLy4uL2VjLXBpcGUnO1xuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1jYXJ0LWl0ZW0tZWMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbVGl0bGVDYXNlUGlwZSwgRWNDdXJyZW5jeVN5bWJvbFBpcGUsIFJvdXRlckxpbmssIEZvcm1zTW9kdWxlXSxcblx0dGVtcGxhdGVVcmw6ICcuL2NhcnQtaXRlbS1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9jYXJ0LWl0ZW0tZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIENhcnRJdGVtRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRASW5wdXQoe1xuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pIGl0ZW06IGFueTtcblxuXHRASW5wdXQoKSBpblNpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRwcml2YXRlIF9jYXJ0U2VydmljZTogQ2FydFNlcnZpY2UgPSBpbmplY3QoQ2FydFNlcnZpY2UpO1xuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuXHRwcml2YXRlIF9jb25zdGFudHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcblx0cHJpdmF0ZSBwYXJhbWV0ZXJzU2VydmljZSA9IGluamVjdChQYXJhbWV0ZXJzU2VydmljZSlcblxuXHRwdWJsaWMgbWVkaWFVcmwgPSB0aGlzLl9jb25zdGFudHMubWVkaWFVcmwoKTtcblx0cHVibGljIHF1YW50aXR5ID0gMDtcblx0cHVibGljIHZhcmlhbnRzVG9TaG93OiBzdHJpbmdbXSA9IFsnVEFMTEEnLCAnQ09MT1InXTtcblx0cHVibGljIHVwZGF0ZVN0b2NrOiBib29sZWFuID0gZmFsc2U7XG5cdHB1YmxpYyBpc1F1YW50aXR5VXBkYXRpbmcgPSBmYWxzZTtcblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLnF1YW50aXR5ID0gdGhpcy5pdGVtLnF1YW50aXR5XG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5pdGVtLCB0aGlzLm1lZGlhVXJsKTtcblx0fVxuXG5cdHVwZGF0ZVF1YW50aXR5KHN0b2NrOiBudW1iZXIpIHtcblx0XHRjb25zdCBvcmlnaW5hbFF1YW50aXR5ID0gdGhpcy5pdGVtLnF1YW50aXR5OyAvLyBHdWFyZGFyIGNhbnRpZGFkIG9yaWdpbmFsXG5cblx0XHRpZiAodGhpcy5xdWFudGl0eSA+IDAgJiYgdGhpcy5xdWFudGl0eSA8PSBzdG9jaykge1xuXHRcdFx0Y29uc3Qgc3VjY2VzcyA9IHRoaXMuX2NhcnRTZXJ2aWNlLnVwZGF0ZUl0ZW1RdWFudGl0eSh0aGlzLml0ZW0sIHRoaXMucXVhbnRpdHkpO1xuXG5cdFx0XHQvLyBTaSBsYSB2YWxpZGFjacOzbiBmYWxsw7MsIHJlc3RhdXJhciBsYSBjYW50aWRhZCBvcmlnaW5hbFxuXHRcdFx0aWYgKCFzdWNjZXNzKSB7XG5cdFx0XHRcdHRoaXMucXVhbnRpdHkgPSBvcmlnaW5hbFF1YW50aXR5O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBSZXN0YXVyYXIgY2FudGlkYWQgb3JpZ2luYWwgc2kgZXN0w6EgZnVlcmEgZGUgcmFuZ29cblx0XHRcdHRoaXMucXVhbnRpdHkgPSBvcmlnaW5hbFF1YW50aXR5O1xuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpO1xuXHRcdH1cblx0fVxuXG5cdHBsdXMoc3RvY2s6IG51bWJlciwgdmFsdWU6IG51bWJlciA9IDEpIHtcblx0XHRpZiAodGhpcy5pc1F1YW50aXR5VXBkYXRpbmcpIHJldHVybjtcblx0XHR0aGlzLmlzUXVhbnRpdHlVcGRhdGluZyA9IHRydWU7XG5cblx0XHRsZXQgbmV3UXVhbnRpdHkgPSBOdW1iZXIodGhpcy5xdWFudGl0eSkgKyB2YWx1ZTsgLy8gRm9yemFyIGEgbsO6bWVyb1xuXG5cdFx0Ly8gVmVyaWZpY2FyIHN0b2NrIEFOVEVTIGRlIGxsYW1hciBhbCBzZXJ2aWNpb1xuXHRcdGlmIChuZXdRdWFudGl0eSA+IHN0b2NrKSB7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5Jyk7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5pc1F1YW50aXR5VXBkYXRpbmcgPSBmYWxzZTsgfSwgMTAwMCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc3VjY2VzcyA9IHRoaXMuX2NhcnRTZXJ2aWNlLnVwZGF0ZUl0ZW1RdWFudGl0eSh0aGlzLml0ZW0sIG5ld1F1YW50aXR5KTtcblxuXHRcdC8vIFNvbG8gYWN0dWFsaXphciBlbCBpbnB1dCBzaSBsYSBvcGVyYWNpw7NuIGZ1ZSBleGl0b3NhXG5cdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdHRoaXMucXVhbnRpdHkgPSBuZXdRdWFudGl0eTtcblx0XHR9XG5cdFx0Ly8gU2kgc3VjY2VzcyBlcyBmYWxzZSwgTk8gbW9zdHJhciBtZW5zYWplIGFxdcOtIHBvcnF1ZSB5YSBsbyBtb3N0csOzIHZhbGlkYXRlUXVhbnRpdHkoKVxuXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7IHRoaXMuaXNRdWFudGl0eVVwZGF0aW5nID0gZmFsc2U7IH0sIDEwMDApO1xuXHR9XG5cblx0bGVzcyhzdG9jazogbnVtYmVyLCB2YWx1ZTogbnVtYmVyID0gMSkge1xuXHRcdGlmICh0aGlzLmlzUXVhbnRpdHlVcGRhdGluZykgcmV0dXJuO1xuXHRcdHRoaXMuaXNRdWFudGl0eVVwZGF0aW5nID0gdHJ1ZTtcblxuXHRcdGxldCBuZXdRdWFudGl0eSA9IE51bWJlcih0aGlzLnF1YW50aXR5KSAtIHZhbHVlOyAvLyBGb3J6YXIgYSBuw7ptZXJvXG5cblx0XHQvLyBWZXJpZmljYXIgY2FudGlkYWQgbcOtbmltYSBBTlRFUyBkZSBsbGFtYXIgYWwgc2VydmljaW9cblx0XHRpZiAobmV3UXVhbnRpdHkgPD0gMCkge1xuXHRcdFx0Ly8gTm8gcGVybWl0aXIgY2FudGlkYWRlcyBtZW5vcmVzIG8gaWd1YWxlcyBhIDBcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmlzUXVhbnRpdHlVcGRhdGluZyA9IGZhbHNlOyB9LCAxMDAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBzdWNjZXNzID0gdGhpcy5fY2FydFNlcnZpY2UudXBkYXRlSXRlbVF1YW50aXR5KHRoaXMuaXRlbSwgbmV3UXVhbnRpdHkpO1xuXG5cdFx0Ly8gU29sbyBhY3R1YWxpemFyIGVsIGlucHV0IHNpIGxhIG9wZXJhY2nDs24gZnVlIGV4aXRvc2Fcblx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0dGhpcy5xdWFudGl0eSA9IG5ld1F1YW50aXR5O1xuXHRcdH1cblx0XHQvLyBTaSBzdWNjZXNzIGVzIGZhbHNlLCBOTyBtb3N0cmFyIG1lbnNhamUgYXF1w60gcG9ycXVlIHlhIGxvIG1vc3Ryw7MgdmFsaWRhdGVRdWFudGl0eSgpXG5cblx0XHRzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5pc1F1YW50aXR5VXBkYXRpbmcgPSBmYWxzZTsgfSwgMTAwMCk7XG5cdH1cblxuXHRkZWxldGVDYXJ0SXRlbSgpIHtcblx0XHR0aGlzLl9jYXJ0U2VydmljZS5kZWxldGVDYXJ0SXRlbSh0aGlzLml0ZW0pXG5cdH1cblxuXHRnZXRWYXJpYW50cyhwcm9kdWN0OiBhbnkpOiBhbnkge1xuXHRcdGxldCBpdGVtID0gcHJvZHVjdC5wcm9kdWN0XG5cblx0XHRpZiAoaXRlbS52YXJpYW50cyAmJiBpdGVtLnZhcmlhbnRzLmxlbmd0aCAmJiBpdGVtLnZhcmlhbnRzWzBdLm9wdGlvbnMgJiYgaXRlbS52YXJpYW50c1swXS5vcHRpb25zLmxlbmd0aCkge1xuXHRcdFx0bGV0IG9wdGlvbnMgPSBpdGVtLnZhcmlhbnRzWzBdLm9wdGlvbnNcblx0XHRcdG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uOiBhbnkpID0+IHRoaXMudmFyaWFudHNUb1Nob3cuZmluZCgobmFtZTogYW55KSA9PiBvcHRpb24uaGFzT3duUHJvcGVydHkobmFtZSkpKVxuXHRcdFx0bGV0IG9wdGlvbnNNYXA6IGFueSA9IFtdXG5cdFx0XHRvcHRpb25zLm1hcCgob3B0aW9uOiBhbnkpID0+IHtcblx0XHRcdFx0T2JqZWN0LmtleXMob3B0aW9uKS5mb3JFYWNoKChlbnRyeSkgPT4ge1xuXHRcdFx0XHRcdGxldCBvcHRpb25BZGRlZCA9IGZhbHNlOyAgLy8gVmFyaWFibGUgcGFyYSBldml0YXIgbcO6bHRpcGxlcyBpbnNlcmNpb25lc1xuXG5cdFx0XHRcdFx0aXRlbS5vcHRpb25zLmZvckVhY2goKG9wdGlvbjI6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0b3B0aW9uMi52YWx1ZXMuZm9yRWFjaCgoY29sb3I6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoY29sb3IuY29kZSA9PSBvcHRpb25bZW50cnldICYmICFvcHRpb25BZGRlZCkge1xuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbnNNYXAucHVzaCh7IG5hbWU6IGVudHJ5LCB2YWx1ZTogb3B0aW9uW2VudHJ5XSwgaW1hZ2U6IGNvbG9yLmltYWdlLCBtb2JpbGVJbWFnZTogY29sb3IubW9iaWxlSW1hZ2UgfSk7XG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uQWRkZWQgPSB0cnVlOyAvLyBNYXJjYXIgb3BjacOzbiBhZ3JlZ2FkYVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiBvcHRpb25zTWFwO1xuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiBvcHRpb25zTWFwO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBudWxsXG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlRGlzY291bnRNZXNzYWdlKHNhbGVwcmljZTogbnVtYmVyLCBwcmljZTogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRpZiAoaXNOYU4oc2FsZXByaWNlKSB8fCBpc05hTihwcmljZSkgfHwgc2FsZXByaWNlID49IHByaWNlIHx8IHNhbGVwcmljZSA8PSAwIHx8IHByaWNlIDw9IDApIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHRsZXQgZGlzY291bnRQZXJjZW50YWdlID0gTWF0aC5yb3VuZCgoKHByaWNlIC0gc2FsZXByaWNlKSAvIHByaWNlKSAqIDEwMCk7XG5cblx0XHRsZXQgZGlzY291bnRNZXNzYWdlID0gYCR7ZGlzY291bnRQZXJjZW50YWdlfSUgT0ZGYDtcblx0XHRyZXR1cm4gZGlzY291bnRNZXNzYWdlO1xuXHR9XG5cblx0Y2hlY2tTdG9jayhwcm9kdWN0OiBhbnkpOiBhbnkge1xuXHRcdGZvciAoY29uc3QgdmFyaWFudCBvZiBwcm9kdWN0LnByb2R1Y3QudmFyaWFudHMpIHtcblx0XHRcdGlmIChwcm9kdWN0LnZhcmlhbnRfaWQgPT09IHZhcmlhbnQuY29kZSkge1xuXHRcdFx0XHRpZiAodmFyaWFudC5zdG9jayA9PT0gMCkge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlU3RvY2sgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiAnMCc7XG5cdFx0XHRcdH0gZWxzZSBpZiAocHJvZHVjdC5xdWFudGl0eSA+IHZhcmlhbnQuc3RvY2spIHtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZVN0b2NrID0gdHJ1ZTtcblx0XHRcdFx0XHRyZXR1cm4gdmFyaWFudC5zdG9jaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7IC8vIFNvbG8gc2UgZWplY3V0YSBzaSBubyBzZSBjdW1wbGUgbGEgY29uZGljacOzblxuXHR9XG5cblx0Ly8gUEFSQU1FVFJPU1xuXHRwdWJsaWMgcGFyYW1ldGVycyQ6IE9ic2VydmFibGU8UGFyYW1ldGVyW10gfCBudWxsPiA9IHRoaXMucGFyYW1ldGVyc1NlcnZpY2UuZ2V0UGFyYW1ldGVycygpXG5cdHB1YmxpYyBoYXNQYXJhbXMgPSB0aGlzLnBhcmFtZXRlcnNTZXJ2aWNlLmhhc1BhcmFtc1xufVxuIiwiQGlmKCFpblNpZGViYXIpe1xuPHA+Y2FydC1pdGVtLWVjIHdvcmtzITwvcD5cbn1AZWxzZXtcblxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICBAbGV0IHByb2R1Y3Q9IGl0ZW0ucHJvZHVjdDtcbiAgICAgICAgQGlmKGl0ZW0udmFyaWFudF9pZCAmJiBwcm9kdWN0LnZhcmlhbnRzLmxlbmd0aD4wKXtcbiAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhVXJsICsgIHByb2R1Y3QudmFyaWFudHNbMF0uaW1hZ2VzWzBdXCIgYWx0PVwiXCIgY2xhc3M9XCJpbWctZmx1aWRcIj5cbiAgICAgICAgfUBlbHNle1xuICAgICAgICA8aW1nIFtzcmNdPVwibWVkaWFVcmwgKyAgcHJvZHVjdC5waWN0dXJlc2RlZmF1bHRbMF1cIiBhbHQ9XCJcIiBjbGFzcz1cImltZy1mbHVpZFwiPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC03XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgQGlmIChpdGVtLnByb2R1Y3Quc3BlY2lhbF9tYXJrPy5sZW5ndGggPiAwIHx8IGl0ZW0ucHJvZHVjdC5zYWxlcHJpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmNhc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhVXJsICsgKGl0ZW0ucHJvZHVjdC5zcGVjaWFsX21hcms/LlswXT8uaW1hZ2VzWzBdIHx8ICcnKVwiIGFsdD1cIlwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ucHJvZHVjdC5zYWxlcHJpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWctZHNjXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVEaXNjb3VudE1lc3NhZ2UoaXRlbS5wcm9kdWN0LnNhbGVwcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnByb2R1Y3QucHJpY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGEgY2xhc3M9XCJ0aXRsZSB0ZXh0LWRhcmsgdGV4dC1kZWNvcmF0aW9uLW5vbmUgbS0wIHAtMCBoNiBtYi0wXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9wcm9kdWN0JywgaXRlbS52YXJpYW50X2lkXVwiPnt7XG4gICAgICAgICAgICAgICAgaXRlbS5wcm9kdWN0Lm5hbWUgfCB0aXRsZWNhc2VcbiAgICAgICAgICAgICAgICB9fTwvYT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdHkxXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5wcm9kdWN0LmlkfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZSBoNiBmdy1ib2xkIG1iLTAgcGItMFwiPnt7IGl0ZW0ucHJvZHVjdC5wcmljZSB8IGVjQ3VycmVuY3lTeW1ib2xcbiAgICAgICAgICAgICAgICB9fTwvZGl2PlxuICAgICAgICAgICAgQGlmKGdldFZhcmlhbnRzKGl0ZW0pOyBhcyBvcHRpb25zKXtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHAtMFwiPlxuICAgICAgICAgICAgICAgIEBmb3Iob3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrICRpbmRleCl7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0xXCI+IHt7b3B0aW9uLm5hbWUgfCB0aXRsZWNhc2V9fTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgQGlmKG9wdGlvbi5uYW1lID09ICdDT0xPUicpe1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgcm91bmRlZFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIicjJyArIG9wdGlvbi52YWx1ZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIH1AZWxzZXtcbiAgICAgICAgICAgICAgICA8Yj57e29wdGlvbi52YWx1ZX19PC9iPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYW1wb0NhbnRpZGFkIG10LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibnVtZXJvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxlc3MoaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5zdG9jaylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGlkPVwiYnV0dG9uLWFkZG9uMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1taW51c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtY2VudGVyXCIgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkV4YW1wbGUgdGV4dCB3aXRoIGJ1dHRvbiBhZGRvblwiIGFyaWEtZGVzY3JpYmVkYnk9XCJidXR0b24tYWRkb24xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLnF1YW50aXR5XCIgbWluPVwiMVwiIHN0ZXA9XCIxXCIgWyhuZ01vZGVsKV09XCJxdWFudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVF1YW50aXR5KGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc3RvY2spXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInBsdXMoaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5zdG9jaylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGlkPVwiYnV0dG9uLWFkZG9uMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICA8YSAoY2xpY2spPVwiZGVsZXRlQ2FydEl0ZW0oKVwiIGNsYXNzPVwiYnRuIGJvdEJvcnJhclwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cblxuXG5cblxufSJdfQ==
@@ -1,3 +1,3 @@
1
1
  export * from './cart-ec.component';
2
2
  export * from './cart-item-ec/cart-item-ec.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9jYXJ0LWVjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FydC1lYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NhcnQtaXRlbS1lYy9jYXJ0LWl0ZW0tZWMuY29tcG9uZW50JzsiXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9jYXJ0LWVjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FydC1lYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJ0LWl0ZW0tZWMvY2FydC1pdGVtLWVjLmNvbXBvbmVudCc7Il19
@@ -51,10 +51,10 @@ export class CheckoutEcComponent {
51
51
  this._checkoutService.setSteps(steps);
52
52
  }
53
53
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckoutEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
54
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CheckoutEcComponent, isStandalone: true, selector: "lib-checkout-ec", ngImport: i0, template: "<main class=\"py-4\" id=\"appCheckoutEc\">\r\n @if(canCheckout){\r\n <app-detail-checkout-block-ec></app-detail-checkout-block-ec>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12\">\r\n @if(state$ | async; as steps){ \r\n <div id=\"stepper\" class=\"bs-stepper\">\r\n <div class=\"mb-3 row d-flex justify-content-center position-relative stepperContainer\">\r\n @for(step of steps; track $index; let x=$index){\r\n <div [class]=\"'d-flex flex-column justify-content-center align-items-center px-0 col-2'\">\r\n <div [class]=\"'step d-inline-flex align-items-center'\" [attr.data-target]=\"'#test-l-'+step.step\">\r\n <span\r\n [class]=\"'px-2 rounded-circle text-white font-bold bs-stepper-number ' + (step.state == 'ready' ? 'bg-primary' : 'bg-secondary') \">{{x+1}}</span>\r\n <span class=\"bs-stepper-label\">{{ step.label |translate}}</span>\r\n </div>\r\n \r\n </div>\r\n @if(x < steps.length-1){\r\n <div class=\"col-3 d-flex align-items-center\"><hr [class]=\"'w-100 line ' + (step.state == 'doing' ? 'line-active' : 'line-default')\" ></div>\r\n }\r\n }\r\n </div>\r\n <!-- CONTENT -->\r\n <div class=\"bs-stepper-content margin-bottom-i\">\r\n <app-step-container-ec [steps]=\"steps\" />\r\n </div>\r\n </div>\r\n } \r\n </div>\r\n <!--@if(loading$ | async; as load){\r\n <div class=\"col-md-12 col-12\">\r\n <div *ngIf=\"load\" class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n <h5>{{ 'processing-payment' | translate }}</h5> \r\n </div>\r\n </div>\r\n }-->\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"wrap\">\r\n <!-- <div *ngIf=\"(loading$ | async) as load\">\r\n <app-loading-full-ec *ngIf=\"canCheckout\"></app-loading-full-ec>\r\n </div>\r\n <section id=\"cart\" *ngIf=\"!canCheckout\">\r\n <section id=\"cart bg-white h-50\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center text-center\">\r\n <h4>{{ 'empty-cart' | translate }}</h4>\r\n <h5>{{ 'empty-cart-detail' | translate }}</h5>\r\n </div>\r\n </section>\r\n </section> -->\r\n </div>\r\n }\r\n</main>\r\n", styles: [".bs-stepper-label{font-size:10px;padding-left:.5rem;font-weight:700}@media (max-width: 767.98px){.bs-stepper-label{font-size:10px;line-height:1.1;white-space:normal;word-wrap:break-word;max-width:65px;text-align:center;padding-left:0;padding-top:.2rem}}.bs-stepper-number{font-size:10px;font-weight:700;padding-top:.2rem;padding-bottom:.2rem}@media (max-width: 767.98px){.bs-stepper-number{font-size:9px;padding:.2rem .35rem;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center}}@media (max-width: 767.98px){.step{flex-direction:column!important;align-items:center!important;text-align:center;width:100%}}@media (max-width: 767.98px){.stepperContainer{margin-bottom:1.5rem!important}.stepperContainer .col-2{display:flex;justify-content:center;align-items:flex-start;min-height:50px}.stepperContainer .col-3{display:flex;align-items:center}.stepperContainer .col-3 hr{margin-top:-10px}}.line{height:1px;border:none;background-color:var(--bs-secondary);position:relative;overflow:hidden;margin:0;opacity:.75!important}.line:before{content:\"\";position:absolute;top:0;left:0;width:0;height:100%;background-color:var(--bs-primary);transition:width .5s}.line-active:before{width:100%;left:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: StepContainerEcComponent, selector: "app-step-container-ec", inputs: ["steps"] }, { kind: "component", type: DetailCheckoutBlockEcComponent, selector: "app-detail-checkout-block-ec" }] });
54
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CheckoutEcComponent, isStandalone: true, selector: "lib-checkout-ec", ngImport: i0, template: "<main class=\"py-4\" id=\"appCheckoutEc\">\n @if(canCheckout){\n <app-detail-checkout-block-ec></app-detail-checkout-block-ec>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-12 col-12\">\n @if(state$ | async; as steps){ \n <div id=\"stepper\" class=\"bs-stepper\">\n <div class=\"mb-3 row d-flex justify-content-center position-relative stepperContainer\">\n @for(step of steps; track $index; let x=$index){\n <div [class]=\"'d-flex flex-column justify-content-center align-items-center px-0 col-2'\">\n <div [class]=\"'step d-inline-flex align-items-center'\" [attr.data-target]=\"'#test-l-'+step.step\">\n <span\n [class]=\"'px-2 rounded-circle text-white font-bold bs-stepper-number ' + (step.state == 'ready' ? 'bg-primary' : 'bg-secondary') \">{{x+1}}</span>\n <span class=\"bs-stepper-label\">{{ step.label |translate}}</span>\n </div>\n \n </div>\n @if(x < steps.length-1){\n <div class=\"col-3 d-flex align-items-center\"><hr [class]=\"'w-100 line ' + (step.state == 'doing' ? 'line-active' : 'line-default')\" ></div>\n }\n }\n </div>\n <!-- CONTENT -->\n <div class=\"bs-stepper-content margin-bottom-i\">\n <app-step-container-ec [steps]=\"steps\" />\n </div>\n </div>\n } \n </div>\n <!--@if(loading$ | async; as load){\n <div class=\"col-md-12 col-12\">\n <div *ngIf=\"load\" class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n <app-loading-full-ec></app-loading-full-ec>\n <h5>{{ 'processing-payment' | translate }}</h5> \n </div>\n </div>\n }-->\n </div>\n </div>\n } @else {\n <div class=\"wrap\">\n <!-- <div *ngIf=\"(loading$ | async) as load\">\n <app-loading-full-ec *ngIf=\"canCheckout\"></app-loading-full-ec>\n </div>\n <section id=\"cart\" *ngIf=\"!canCheckout\">\n <section id=\"cart bg-white h-50\">\n <div class=\"d-flex flex-column justify-content-center align-items-center text-center\">\n <h4>{{ 'empty-cart' | translate }}</h4>\n <h5>{{ 'empty-cart-detail' | translate }}</h5>\n </div>\n </section>\n </section> -->\n </div>\n }\n</main>\n", styles: [".bs-stepper-label{font-size:10px;padding-left:.5rem;font-weight:700}@media (max-width: 767.98px){.bs-stepper-label{font-size:10px;line-height:1.1;white-space:normal;word-wrap:break-word;max-width:65px;text-align:center;padding-left:0;padding-top:.2rem}}.bs-stepper-number{font-size:10px;font-weight:700;padding-top:.2rem;padding-bottom:.2rem}@media (max-width: 767.98px){.bs-stepper-number{font-size:9px;padding:.2rem .35rem;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center}}@media (max-width: 767.98px){.step{flex-direction:column!important;align-items:center!important;text-align:center;width:100%}}@media (max-width: 767.98px){.stepperContainer{margin-bottom:1.5rem!important}.stepperContainer .col-2{display:flex;justify-content:center;align-items:flex-start;min-height:50px}.stepperContainer .col-3{display:flex;align-items:center}.stepperContainer .col-3 hr{margin-top:-10px}}.line{height:1px;border:none;background-color:var(--bs-secondary);position:relative;overflow:hidden;margin:0;opacity:.75!important}.line:before{content:\"\";position:absolute;top:0;left:0;width:0;height:100%;background-color:var(--bs-primary);transition:width .5s}.line-active:before{width:100%;left:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: StepContainerEcComponent, selector: "app-step-container-ec", inputs: ["steps"] }, { kind: "component", type: DetailCheckoutBlockEcComponent, selector: "app-detail-checkout-block-ec" }] });
55
55
  }
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckoutEcComponent, decorators: [{
57
57
  type: Component,
58
- args: [{ selector: 'lib-checkout-ec', standalone: true, imports: [AsyncPipe, TranslateModule, StepContainerEcComponent, DetailCheckoutBlockEcComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<main class=\"py-4\" id=\"appCheckoutEc\">\r\n @if(canCheckout){\r\n <app-detail-checkout-block-ec></app-detail-checkout-block-ec>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12\">\r\n @if(state$ | async; as steps){ \r\n <div id=\"stepper\" class=\"bs-stepper\">\r\n <div class=\"mb-3 row d-flex justify-content-center position-relative stepperContainer\">\r\n @for(step of steps; track $index; let x=$index){\r\n <div [class]=\"'d-flex flex-column justify-content-center align-items-center px-0 col-2'\">\r\n <div [class]=\"'step d-inline-flex align-items-center'\" [attr.data-target]=\"'#test-l-'+step.step\">\r\n <span\r\n [class]=\"'px-2 rounded-circle text-white font-bold bs-stepper-number ' + (step.state == 'ready' ? 'bg-primary' : 'bg-secondary') \">{{x+1}}</span>\r\n <span class=\"bs-stepper-label\">{{ step.label |translate}}</span>\r\n </div>\r\n \r\n </div>\r\n @if(x < steps.length-1){\r\n <div class=\"col-3 d-flex align-items-center\"><hr [class]=\"'w-100 line ' + (step.state == 'doing' ? 'line-active' : 'line-default')\" ></div>\r\n }\r\n }\r\n </div>\r\n <!-- CONTENT -->\r\n <div class=\"bs-stepper-content margin-bottom-i\">\r\n <app-step-container-ec [steps]=\"steps\" />\r\n </div>\r\n </div>\r\n } \r\n </div>\r\n <!--@if(loading$ | async; as load){\r\n <div class=\"col-md-12 col-12\">\r\n <div *ngIf=\"load\" class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n <h5>{{ 'processing-payment' | translate }}</h5> \r\n </div>\r\n </div>\r\n }-->\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"wrap\">\r\n <!-- <div *ngIf=\"(loading$ | async) as load\">\r\n <app-loading-full-ec *ngIf=\"canCheckout\"></app-loading-full-ec>\r\n </div>\r\n <section id=\"cart\" *ngIf=\"!canCheckout\">\r\n <section id=\"cart bg-white h-50\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center text-center\">\r\n <h4>{{ 'empty-cart' | translate }}</h4>\r\n <h5>{{ 'empty-cart-detail' | translate }}</h5>\r\n </div>\r\n </section>\r\n </section> -->\r\n </div>\r\n }\r\n</main>\r\n", styles: [".bs-stepper-label{font-size:10px;padding-left:.5rem;font-weight:700}@media (max-width: 767.98px){.bs-stepper-label{font-size:10px;line-height:1.1;white-space:normal;word-wrap:break-word;max-width:65px;text-align:center;padding-left:0;padding-top:.2rem}}.bs-stepper-number{font-size:10px;font-weight:700;padding-top:.2rem;padding-bottom:.2rem}@media (max-width: 767.98px){.bs-stepper-number{font-size:9px;padding:.2rem .35rem;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center}}@media (max-width: 767.98px){.step{flex-direction:column!important;align-items:center!important;text-align:center;width:100%}}@media (max-width: 767.98px){.stepperContainer{margin-bottom:1.5rem!important}.stepperContainer .col-2{display:flex;justify-content:center;align-items:flex-start;min-height:50px}.stepperContainer .col-3{display:flex;align-items:center}.stepperContainer .col-3 hr{margin-top:-10px}}.line{height:1px;border:none;background-color:var(--bs-secondary);position:relative;overflow:hidden;margin:0;opacity:.75!important}.line:before{content:\"\";position:absolute;top:0;left:0;width:0;height:100%;background-color:var(--bs-primary);transition:width .5s}.line-active:before{width:100%;left:0}\n"] }]
58
+ args: [{ selector: 'lib-checkout-ec', standalone: true, imports: [AsyncPipe, TranslateModule, StepContainerEcComponent, DetailCheckoutBlockEcComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<main class=\"py-4\" id=\"appCheckoutEc\">\n @if(canCheckout){\n <app-detail-checkout-block-ec></app-detail-checkout-block-ec>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-12 col-12\">\n @if(state$ | async; as steps){ \n <div id=\"stepper\" class=\"bs-stepper\">\n <div class=\"mb-3 row d-flex justify-content-center position-relative stepperContainer\">\n @for(step of steps; track $index; let x=$index){\n <div [class]=\"'d-flex flex-column justify-content-center align-items-center px-0 col-2'\">\n <div [class]=\"'step d-inline-flex align-items-center'\" [attr.data-target]=\"'#test-l-'+step.step\">\n <span\n [class]=\"'px-2 rounded-circle text-white font-bold bs-stepper-number ' + (step.state == 'ready' ? 'bg-primary' : 'bg-secondary') \">{{x+1}}</span>\n <span class=\"bs-stepper-label\">{{ step.label |translate}}</span>\n </div>\n \n </div>\n @if(x < steps.length-1){\n <div class=\"col-3 d-flex align-items-center\"><hr [class]=\"'w-100 line ' + (step.state == 'doing' ? 'line-active' : 'line-default')\" ></div>\n }\n }\n </div>\n <!-- CONTENT -->\n <div class=\"bs-stepper-content margin-bottom-i\">\n <app-step-container-ec [steps]=\"steps\" />\n </div>\n </div>\n } \n </div>\n <!--@if(loading$ | async; as load){\n <div class=\"col-md-12 col-12\">\n <div *ngIf=\"load\" class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n <app-loading-full-ec></app-loading-full-ec>\n <h5>{{ 'processing-payment' | translate }}</h5> \n </div>\n </div>\n }-->\n </div>\n </div>\n } @else {\n <div class=\"wrap\">\n <!-- <div *ngIf=\"(loading$ | async) as load\">\n <app-loading-full-ec *ngIf=\"canCheckout\"></app-loading-full-ec>\n </div>\n <section id=\"cart\" *ngIf=\"!canCheckout\">\n <section id=\"cart bg-white h-50\">\n <div class=\"d-flex flex-column justify-content-center align-items-center text-center\">\n <h4>{{ 'empty-cart' | translate }}</h4>\n <h5>{{ 'empty-cart-detail' | translate }}</h5>\n </div>\n </section>\n </section> -->\n </div>\n }\n</main>\n", styles: [".bs-stepper-label{font-size:10px;padding-left:.5rem;font-weight:700}@media (max-width: 767.98px){.bs-stepper-label{font-size:10px;line-height:1.1;white-space:normal;word-wrap:break-word;max-width:65px;text-align:center;padding-left:0;padding-top:.2rem}}.bs-stepper-number{font-size:10px;font-weight:700;padding-top:.2rem;padding-bottom:.2rem}@media (max-width: 767.98px){.bs-stepper-number{font-size:9px;padding:.2rem .35rem;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center}}@media (max-width: 767.98px){.step{flex-direction:column!important;align-items:center!important;text-align:center;width:100%}}@media (max-width: 767.98px){.stepperContainer{margin-bottom:1.5rem!important}.stepperContainer .col-2{display:flex;justify-content:center;align-items:flex-start;min-height:50px}.stepperContainer .col-3{display:flex;align-items:center}.stepperContainer .col-3 hr{margin-top:-10px}}.line{height:1px;border:none;background-color:var(--bs-secondary);position:relative;overflow:hidden;margin:0;opacity:.75!important}.line:before{content:\"\";position:absolute;top:0;left:0;width:0;height:100%;background-color:var(--bs-primary);transition:width .5s}.line-active:before{width:100%;left:0}\n"] }]
59
59
  }], ctorParameters: () => [] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvY2hlY2tvdXQtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvY2hlY2tvdXQtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVksTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0YsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7OztBQVUvRyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3ZCLGVBQWUsR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pELGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFcEQsT0FBTyxHQUFhLFNBQVMsQ0FBQztJQUM5QixRQUFRLEdBQWEsVUFBVSxDQUFDO0lBQ2hDLE9BQU8sR0FBYSxTQUFTLENBQUM7SUFFOUMseUNBQXlDO0lBQ3pDLDBEQUEwRDtJQUNuRCxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztJQUV0QyxPQUFPLENBQU07SUFDcEIsNEJBQTRCO0lBQ3JCLE1BQU0sQ0FBSztJQUNYLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFcEM7UUFDQyxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUN0QyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ1osMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1lBQ25CLHlCQUF5QjtRQUMxQixDQUFDLENBQ0QsQ0FBQTtJQUNGLENBQUM7SUFDRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDL0UsSUFBSSxhQUFhO2dCQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDOztnQkFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUE7SUFDVCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUV4QixDQUFDO0lBQ0QsZUFBZTtRQUNkLElBQUksS0FBSyxHQUFZLEVBQUUsQ0FBQztRQUN4QiwwQ0FBMEM7UUFDMUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUMzRSxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sRUFBRSw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUNsSCxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QyxDQUFDO3dHQS9DVyxtQkFBbUI7NEZBQW5CLG1CQUFtQiwyRUNqQmhDLGtxR0F3REEsd3ZDRDVDVyxTQUFTLDZDQUFFLGVBQWUsNEZBQUUsd0JBQXdCLHFGQUFFLDhCQUE4Qjs7NEZBS2xGLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDQyxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLDhCQUE4QixDQUFDLFdBR3ZGLENBQUMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlLCBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElTdGVwLCBTdGVwLCBTdGVwVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSwgSnNvblBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU3RlcENvbnRhaW5lckVjQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWNvbnRhaW5lci1lYy9zdGVwLWNvbnRhaW5lci1lYy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZXRhaWxDaGVja291dEJsb2NrRWNDb21wb25lbnQgfSBmcm9tICcuL2RldGFpbC1jaGVja291dC1ibG9jay1lYy9kZXRhaWwtY2hlY2tvdXQtYmxvY2stZWMuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLWNoZWNrb3V0LWVjJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSwgU3RlcENvbnRhaW5lckVjQ29tcG9uZW50LCBEZXRhaWxDaGVja291dEJsb2NrRWNDb21wb25lbnRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9jaGVja291dC1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL2NoZWNrb3V0LWVjLmNvbXBvbmVudC5zY3NzJyxcclxuXHRzY2hlbWFzOltDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRFY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0cHJpdmF0ZSBfY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlID0gaW5qZWN0KENoYW5uZWxTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSA9IGluamVjdChDaGVja291dFNlcnZpY2UpO1xyXG5cclxuXHRwdWJsaWMgcmVhZG9ubHkgQUREUkVTUzogU3RlcFR5cGUgPSAnYWRkcmVzcyc7XHJcblx0cHVibGljIHJlYWRvbmx5IFNISVBNRU5UOiBTdGVwVHlwZSA9ICdzaGlwbWVudCc7XHJcblx0cHVibGljIHJlYWRvbmx5IFBBWU1FTlQ6IFN0ZXBUeXBlID0gJ3BheW1lbnQnO1xyXG5cclxuXHQvL3B1YmxpYyBsb2FkaW5nJCA9IHRoaXMuX2NoZWNrb3V0U2VydmljZVxyXG5cdC8vcHVibGljIGNhbkNoZWNrb3V0JCA9IHRoaXMuX2NoZWNrb3V0U2VydmljZS5jYW5DaGVja291dCRcclxuXHRwdWJsaWMgc3RhdGUkID0gdGhpcy5fY2hlY2tvdXRTZXJ2aWNlLnN0YXRlJDtcclxuXHJcblx0cHVibGljIGNoYW5uZWw6IGFueTtcclxuXHQvL3B1YmxpYyBzdGVwczogU3RlcFtdID0gW107XHJcblx0cHVibGljIHN1YkNhbjphbnk7XHJcblx0cHVibGljIGNhbkNoZWNrb3V0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0Ly9jb25zb2xlLmxvZyhcImNvbnN0cnVjdG8uLi4uLlwiKTtcclxuXHRcdHRoaXMuX2NoYW5uZWxTZXJ2aWNlLmNoYW5uZWwkLnN1YnNjcmliZShcclxuXHRcdFx0KHJlczogYW55KSA9PiB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhcImNvbnN0cnVjdFwiKVxyXG5cdFx0XHRcdHRoaXMuY2hhbm5lbCA9IHJlcztcclxuXHRcdFx0XHQvL3RoaXMuaW5pdGlhbGl6ZVN0ZXBzKCk7XHJcblx0XHRcdH1cclxuXHRcdClcclxuXHR9XHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLnN1YkNhbiA9IHRoaXMuX2NoZWNrb3V0U2VydmljZS5jYW5DaGVja291dCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoY29udGFpbl9pdGVtcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb250YWluX2l0ZW1zKSB0aGlzLmluaXRpYWxpemVDaGVja291dCgpO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuY2FuQ2hlY2tvdXQgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG5cdH1cclxuXHRpbml0aWFsaXplQ2hlY2tvdXQoKSB7XHJcblx0XHR0aGlzLmNhbkNoZWNrb3V0ID0gdHJ1ZTtcclxuXHRcdHRoaXMuaW5pdGlhbGl6ZVN0ZXBzKCk7XHJcblxyXG5cdH1cclxuXHRpbml0aWFsaXplU3RlcHMoKSB7XHJcblx0XHRsZXQgc3RlcHM6IElTdGVwW10gPSBbXTtcclxuXHRcdC8vRWwgcGFzbyBkZSBlbGVnaXIgZGlyZWNjacOzbiBzaWVtcHJlIGVzdGFcclxuXHRcdHN0ZXBzLnB1c2goeyBuYW1lOiB0aGlzLkFERFJFU1MsIGxhYmVsOiAnYmlsbGluZy1kZXRhaWxzJywgc3RhdGU6J3JlYWR5JyB9KVxyXG5cdFx0Ly9FbCBwYXNvIGRlIGVsZWdpciBtZXRvZG8gZGUgZW52aW9cclxuXHRcdHRoaXMuY2hhbm5lbD8uaXNTa2lwcGluZ1NoaXBwaW5nU3RlcEFsbG93ZWQgPyBudWxsIDogc3RlcHMucHVzaCh7IG5hbWU6IHRoaXMuU0hJUE1FTlQsIGxhYmVsOidzaGlwbWVudC1tZXRob2QnIH0pO1xyXG5cdFx0Ly9FbCBwYXNvIGRlIGVsZWdpciBtZXRvZG8gZGUgcGFnb1xyXG5cdFx0dGhpcy5jaGFubmVsPy5pc1NraXBwaW5nUGF5bWVudFN0ZXBBbGxvd2VkID8gbnVsbCA6IHN0ZXBzLnB1c2goeyBuYW1lOiB0aGlzLlBBWU1FTlQsIGxhYmVsOiAncGF5bWVudCd9KTtcclxuXHRcdHRoaXMuX2NoZWNrb3V0U2VydmljZS5zZXRTdGVwcyhzdGVwcylcclxuXHR9XHJcblxyXG59XHJcbiIsIjxtYWluIGNsYXNzPVwicHktNFwiIGlkPVwiYXBwQ2hlY2tvdXRFY1wiPlxyXG4gICAgQGlmKGNhbkNoZWNrb3V0KXtcclxuICAgICAgICA8YXBwLWRldGFpbC1jaGVja291dC1ibG9jay1lYz48L2FwcC1kZXRhaWwtY2hlY2tvdXQtYmxvY2stZWM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgQGlmKHN0YXRlJCB8IGFzeW5jOyBhcyBzdGVwcyl7IFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJzdGVwcGVyXCIgY2xhc3M9XCJicy1zdGVwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHJvdyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBzdGVwcGVyQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yKHN0ZXAgb2Ygc3RlcHM7IHRyYWNrICRpbmRleDsgbGV0IHg9JGluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHB4LTAgY29sLTInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidzdGVwIGQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyJ1wiIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjdGVzdC1sLScrc3RlcC5zdGVwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCIncHgtMiByb3VuZGVkLWNpcmNsZSB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBicy1zdGVwcGVyLW51bWJlciAnICsgKHN0ZXAuc3RhdGUgPT0gJ3JlYWR5JyA/ICdiZy1wcmltYXJ5JyA6ICdiZy1zZWNvbmRhcnknKSBcIj57e3grMX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJicy1zdGVwcGVyLWxhYmVsXCI+e3sgc3RlcC5sYWJlbCB8dHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoeCA8IHN0ZXBzLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj48aHIgW2NsYXNzXT1cIid3LTEwMCBsaW5lICcgKyAoc3RlcC5zdGF0ZSA9PSAnZG9pbmcnID8gJ2xpbmUtYWN0aXZlJyA6ICdsaW5lLWRlZmF1bHQnKVwiID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENPTlRFTlQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicy1zdGVwcGVyLWNvbnRlbnQgbWFyZ2luLWJvdHRvbS1pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1zdGVwLWNvbnRhaW5lci1lYyBbc3RlcHNdPVwic3RlcHNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tQGlmKGxvYWRpbmckIHwgYXN5bmM7IGFzIGxvYWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzaXRmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtbG9hZGluZy1mdWxsLWVjPjwvYXBwLWxvYWRpbmctZnVsbC1lYz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT57eyAncHJvY2Vzc2luZy1wYXltZW50JyB8IHRyYW5zbGF0ZSB9fTwvaDU+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH0tLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcFwiPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCIobG9hZGluZyQgfCBhc3luYykgYXMgbG9hZFwiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1sb2FkaW5nLWZ1bGwtZWMgKm5nSWY9XCJjYW5DaGVja291dFwiPjwvYXBwLWxvYWRpbmctZnVsbC1lYz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwiY2FydFwiICpuZ0lmPVwiIWNhbkNoZWNrb3V0XCI+XHJcbiAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD1cImNhcnQgYmctd2hpdGUgaC01MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7ICdlbXB0eS1jYXJ0JyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNT57eyAnZW1wdHktY2FydC1kZXRhaWwnIHwgdHJhbnNsYXRlIH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxuPC9tYWluPlxyXG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvY2hlY2tvdXQtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvY2hlY2tvdXQtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVksTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0YsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7OztBQVUvRyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3ZCLGVBQWUsR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pELGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFcEQsT0FBTyxHQUFhLFNBQVMsQ0FBQztJQUM5QixRQUFRLEdBQWEsVUFBVSxDQUFDO0lBQ2hDLE9BQU8sR0FBYSxTQUFTLENBQUM7SUFFOUMseUNBQXlDO0lBQ3pDLDBEQUEwRDtJQUNuRCxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztJQUV0QyxPQUFPLENBQU07SUFDcEIsNEJBQTRCO0lBQ3JCLE1BQU0sQ0FBSztJQUNYLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFcEM7UUFDQyxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUN0QyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ1osMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1lBQ25CLHlCQUF5QjtRQUMxQixDQUFDLENBQ0QsQ0FBQTtJQUNGLENBQUM7SUFDRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDL0UsSUFBSSxhQUFhO2dCQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDOztnQkFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUE7SUFDVCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUV4QixDQUFDO0lBQ0QsZUFBZTtRQUNkLElBQUksS0FBSyxHQUFZLEVBQUUsQ0FBQztRQUN4QiwwQ0FBMEM7UUFDMUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUMzRSxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sRUFBRSw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUNsSCxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QyxDQUFDO3dHQS9DVyxtQkFBbUI7NEZBQW5CLG1CQUFtQiwyRUNqQmhDLGtqR0F3REEsd3ZDRDVDVyxTQUFTLDZDQUFFLGVBQWUsNEZBQUUsd0JBQXdCLHFGQUFFLDhCQUE4Qjs7NEZBS2xGLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDQyxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLDhCQUE4QixDQUFDLFdBR3ZGLENBQUMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSwgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgSVN0ZXAsIFN0ZXAsIFN0ZXBUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3RlcENvbnRhaW5lckVjQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWNvbnRhaW5lci1lYy9zdGVwLWNvbnRhaW5lci1lYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGV0YWlsQ2hlY2tvdXRCbG9ja0VjQ29tcG9uZW50IH0gZnJvbSAnLi9kZXRhaWwtY2hlY2tvdXQtYmxvY2stZWMvZGV0YWlsLWNoZWNrb3V0LWJsb2NrLWVjLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2xpYi1jaGVja291dC1lYycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSwgU3RlcENvbnRhaW5lckVjQ29tcG9uZW50LCBEZXRhaWxDaGVja291dEJsb2NrRWNDb21wb25lbnRdLFxuXHR0ZW1wbGF0ZVVybDogJy4vY2hlY2tvdXQtZWMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vY2hlY2tvdXQtZWMuY29tcG9uZW50LnNjc3MnLFxuXHRzY2hlbWFzOltDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dEVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBfY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlID0gaW5qZWN0KENoYW5uZWxTZXJ2aWNlKTtcblx0cHJpdmF0ZSBfY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UgPSBpbmplY3QoQ2hlY2tvdXRTZXJ2aWNlKTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgQUREUkVTUzogU3RlcFR5cGUgPSAnYWRkcmVzcyc7XG5cdHB1YmxpYyByZWFkb25seSBTSElQTUVOVDogU3RlcFR5cGUgPSAnc2hpcG1lbnQnO1xuXHRwdWJsaWMgcmVhZG9ubHkgUEFZTUVOVDogU3RlcFR5cGUgPSAncGF5bWVudCc7XG5cblx0Ly9wdWJsaWMgbG9hZGluZyQgPSB0aGlzLl9jaGVja291dFNlcnZpY2Vcblx0Ly9wdWJsaWMgY2FuQ2hlY2tvdXQkID0gdGhpcy5fY2hlY2tvdXRTZXJ2aWNlLmNhbkNoZWNrb3V0JFxuXHRwdWJsaWMgc3RhdGUkID0gdGhpcy5fY2hlY2tvdXRTZXJ2aWNlLnN0YXRlJDtcblxuXHRwdWJsaWMgY2hhbm5lbDogYW55O1xuXHQvL3B1YmxpYyBzdGVwczogU3RlcFtdID0gW107XG5cdHB1YmxpYyBzdWJDYW46YW55O1xuXHRwdWJsaWMgY2FuQ2hlY2tvdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHQvL2NvbnNvbGUubG9nKFwiY29uc3RydWN0by4uLi4uXCIpO1xuXHRcdHRoaXMuX2NoYW5uZWxTZXJ2aWNlLmNoYW5uZWwkLnN1YnNjcmliZShcblx0XHRcdChyZXM6IGFueSkgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKFwiY29uc3RydWN0XCIpXG5cdFx0XHRcdHRoaXMuY2hhbm5lbCA9IHJlcztcblx0XHRcdFx0Ly90aGlzLmluaXRpYWxpemVTdGVwcygpO1xuXHRcdFx0fVxuXHRcdClcblx0fVxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnN1YkNhbiA9IHRoaXMuX2NoZWNrb3V0U2VydmljZS5jYW5DaGVja291dCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoY29udGFpbl9pdGVtcyA9PiB7XG4gICAgICAgICAgICBpZiAoY29udGFpbl9pdGVtcykgdGhpcy5pbml0aWFsaXplQ2hlY2tvdXQoKTtcbiAgICAgICAgICAgIGVsc2UgdGhpcy5jYW5DaGVja291dCA9IGZhbHNlO1xuICAgICAgICB9KVxuXHR9XG5cdGluaXRpYWxpemVDaGVja291dCgpIHtcblx0XHR0aGlzLmNhbkNoZWNrb3V0ID0gdHJ1ZTtcblx0XHR0aGlzLmluaXRpYWxpemVTdGVwcygpO1xuXG5cdH1cblx0aW5pdGlhbGl6ZVN0ZXBzKCkge1xuXHRcdGxldCBzdGVwczogSVN0ZXBbXSA9IFtdO1xuXHRcdC8vRWwgcGFzbyBkZSBlbGVnaXIgZGlyZWNjacOzbiBzaWVtcHJlIGVzdGFcblx0XHRzdGVwcy5wdXNoKHsgbmFtZTogdGhpcy5BRERSRVNTLCBsYWJlbDogJ2JpbGxpbmctZGV0YWlscycsIHN0YXRlOidyZWFkeScgfSlcblx0XHQvL0VsIHBhc28gZGUgZWxlZ2lyIG1ldG9kbyBkZSBlbnZpb1xuXHRcdHRoaXMuY2hhbm5lbD8uaXNTa2lwcGluZ1NoaXBwaW5nU3RlcEFsbG93ZWQgPyBudWxsIDogc3RlcHMucHVzaCh7IG5hbWU6IHRoaXMuU0hJUE1FTlQsIGxhYmVsOidzaGlwbWVudC1tZXRob2QnIH0pO1xuXHRcdC8vRWwgcGFzbyBkZSBlbGVnaXIgbWV0b2RvIGRlIHBhZ29cblx0XHR0aGlzLmNoYW5uZWw/LmlzU2tpcHBpbmdQYXltZW50U3RlcEFsbG93ZWQgPyBudWxsIDogc3RlcHMucHVzaCh7IG5hbWU6IHRoaXMuUEFZTUVOVCwgbGFiZWw6ICdwYXltZW50J30pO1xuXHRcdHRoaXMuX2NoZWNrb3V0U2VydmljZS5zZXRTdGVwcyhzdGVwcylcblx0fVxuXG59XG4iLCI8bWFpbiBjbGFzcz1cInB5LTRcIiBpZD1cImFwcENoZWNrb3V0RWNcIj5cbiAgICBAaWYoY2FuQ2hlY2tvdXQpe1xuICAgICAgICA8YXBwLWRldGFpbC1jaGVja291dC1ibG9jay1lYz48L2FwcC1kZXRhaWwtY2hlY2tvdXQtYmxvY2stZWM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgIEBpZihzdGF0ZSQgfCBhc3luYzsgYXMgc3RlcHMpeyBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInN0ZXBwZXJcIiBjbGFzcz1cImJzLXN0ZXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHJvdyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBzdGVwcGVyQ29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvcihzdGVwIG9mIHN0ZXBzOyB0cmFjayAkaW5kZXg7IGxldCB4PSRpbmRleCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMCBjb2wtMidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidzdGVwIGQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyJ1wiIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjdGVzdC1sLScrc3RlcC5zdGVwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidweC0yIHJvdW5kZWQtY2lyY2xlIHRleHQtd2hpdGUgZm9udC1ib2xkIGJzLXN0ZXBwZXItbnVtYmVyICcgKyAoc3RlcC5zdGF0ZSA9PSAncmVhZHknID8gJ2JnLXByaW1hcnknIDogJ2JnLXNlY29uZGFyeScpIFwiPnt7eCsxfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJicy1zdGVwcGVyLWxhYmVsXCI+e3sgc3RlcC5sYWJlbCB8dHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHggPCBzdGVwcy5sZW5ndGgtMSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPjxociBbY2xhc3NdPVwiJ3ctMTAwIGxpbmUgJyArIChzdGVwLnN0YXRlID09ICdkb2luZycgPyAnbGluZS1hY3RpdmUnIDogJ2xpbmUtZGVmYXVsdCcpXCIgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENPTlRFTlQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnMtc3RlcHBlci1jb250ZW50IG1hcmdpbi1ib3R0b20taVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXN0ZXAtY29udGFpbmVyLWVjIFtzdGVwc109XCJzdGVwc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLUBpZihsb2FkaW5nJCB8IGFzeW5jOyBhcyBsb2FkKXtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzaXRmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pnt7ICdwcm9jZXNzaW5nLXBheW1lbnQnIHwgdHJhbnNsYXRlIH19PC9oNT4gXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfS0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcFwiPlxuICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiKGxvYWRpbmckIHwgYXN5bmMpIGFzIGxvYWRcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYyAqbmdJZj1cImNhbkNoZWNrb3V0XCI+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c2VjdGlvbiBpZD1cImNhcnRcIiAqbmdJZj1cIiFjYW5DaGVja291dFwiPlxuICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwiY2FydCBiZy13aGl0ZSBoLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND57eyAnZW1wdHktY2FydCcgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pnt7ICdlbXB0eS1jYXJ0LWRldGFpbCcgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICA8L3NlY3Rpb24+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L21haW4+XG4iXX0=