ng-easycommerce-v18 0.3.14-beta.2 → 0.3.15-beta.2

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 (186) hide show
  1. package/README.md +92 -82
  2. package/assets/decidirFormEc.html +514 -514
  3. package/assets/ec-i18n/ct.json +281 -281
  4. package/assets/ec-i18n/en.json +0 -0
  5. package/assets/ec-i18n/es.json +429 -429
  6. package/assets/ec-i18n/fr.json +0 -0
  7. package/assets/ec-i18n/gl.json +281 -281
  8. package/assets/ec-i18n/pr.json +281 -281
  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 +2 -27
  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 +44 -41
  27. package/esm2022/lib/constants/core.constants.service.mjs +1 -1
  28. package/esm2022/lib/constants/index.mjs +1 -1
  29. package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
  30. package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
  31. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -1
  32. package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
  33. package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
  34. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +3 -3
  35. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
  36. package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
  37. package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
  38. package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
  39. package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
  40. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +7 -3
  41. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +3 -3
  42. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +7 -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 +5 -7
  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 +8 -4
  55. package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
  56. package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +3 -3
  57. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +3 -3
  58. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
  59. package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +3 -3
  60. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +3 -3
  61. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
  62. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
  63. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +141 -75
  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 +3 -3
  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 +47 -36
  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 +1 -1
  80. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +95 -5
  81. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +6 -8
  82. package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
  83. package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
  84. package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
  85. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
  86. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
  87. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
  88. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
  89. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
  90. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
  91. package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
  92. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +3 -3
  93. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
  94. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
  95. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +3 -3
  96. package/esm2022/lib/ec-components/widgets-ec/index.mjs +2 -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 +4 -6
  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 +193 -0
  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 +2 -4
  117. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +2 -4
  118. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +1 -1
  119. package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
  120. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
  121. package/esm2022/lib/ec-services/auth.service.mjs +1 -1
  122. package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
  123. package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
  124. package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
  125. package/esm2022/lib/ec-services/cart.service.mjs +1 -1
  126. package/esm2022/lib/ec-services/channel.service.mjs +1 -1
  127. package/esm2022/lib/ec-services/checkout.service.mjs +1 -1
  128. package/esm2022/lib/ec-services/currency.service.mjs +1 -1
  129. package/esm2022/lib/ec-services/filters.service.mjs +1 -1
  130. package/esm2022/lib/ec-services/form.service.mjs +1 -1
  131. package/esm2022/lib/ec-services/index.mjs +1 -1
  132. package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
  133. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
  134. package/esm2022/lib/ec-services/options.service.mjs +3 -27
  135. package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
  136. package/esm2022/lib/ec-services/orders.service.mjs +1 -1
  137. package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
  138. package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
  139. package/esm2022/lib/ec-services/payment.service.mjs +1 -1
  140. package/esm2022/lib/ec-services/product-detail.service.mjs +1 -1
  141. package/esm2022/lib/ec-services/products.service.mjs +1 -1
  142. package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
  143. package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
  144. package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
  145. package/esm2022/lib/ec-services/stores.service.mjs +1 -1
  146. package/esm2022/lib/ec-services/test.service.mjs +1 -1
  147. package/esm2022/lib/ec-services/toast.service.mjs +1 -1
  148. package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
  149. package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
  150. package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
  151. package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
  152. package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
  153. package/esm2022/lib/interfaces/blocks.mjs +1 -1
  154. package/esm2022/lib/interfaces/checkout.mjs +1 -1
  155. package/esm2022/lib/interfaces/connection.mjs +1 -1
  156. package/esm2022/lib/interfaces/coupon.mjs +1 -1
  157. package/esm2022/lib/interfaces/currency.mjs +1 -1
  158. package/esm2022/lib/interfaces/deserializable.mjs +1 -1
  159. package/esm2022/lib/interfaces/environment.mjs +1 -1
  160. package/esm2022/lib/interfaces/faqs.mjs +1 -1
  161. package/esm2022/lib/interfaces/filter.mjs +1 -1
  162. package/esm2022/lib/interfaces/index.mjs +1 -1
  163. package/esm2022/lib/interfaces/options.mjs +1 -1
  164. package/esm2022/lib/interfaces/pagination.mjs +1 -1
  165. package/esm2022/lib/interfaces/parameter.mjs +1 -1
  166. package/esm2022/lib/interfaces/product.mjs +1 -1
  167. package/esm2022/lib/interfaces/step.mjs +1 -1
  168. package/esm2022/lib/interfaces/storage.mjs +1 -1
  169. package/esm2022/lib/interfaces/store.mjs +1 -1
  170. package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
  171. package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
  172. package/esm2022/lib/stores/currency.store.mjs +1 -1
  173. package/esm2022/public-api.mjs +1 -1
  174. package/fesm2022/ng-easycommerce-v18.mjs +673 -367
  175. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  176. package/lib/constants/api.constants.service.d.ts +24 -13
  177. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +2 -0
  178. package/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.d.ts +2 -0
  179. package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +5 -0
  180. package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +38 -16
  181. package/lib/ec-components/header-ec/header-ec.component.d.ts +5 -1
  182. package/lib/ec-components/product-ec/product-ec.component.d.ts +10 -1
  183. package/lib/ec-components/widgets-ec/index.d.ts +1 -0
  184. package/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.d.ts +47 -0
  185. package/lib/ec-services/options.service.d.ts +0 -4
  186. package/package.json +1 -1
@@ -6,108 +6,174 @@ import * as i0 from "@angular/core";
6
6
  export class MpRedirectEcComponent {
7
7
  _paymentService = inject(PaymentService);
8
8
  _toastService = inject(ToastService);
9
+ platformId = inject(PLATFORM_ID);
10
+ finished = false;
9
11
  method = null;
10
12
  total_amount = 0;
11
13
  allData;
12
14
  ready = new EventEmitter();
13
15
  preference;
14
- loading = false;
15
16
  url;
16
- closeModal = '';
17
- ventana;
18
- window;
19
- localStorage;
20
- platformId = inject(PLATFORM_ID);
21
- constructor() {
17
+ // Fases de UI
18
+ phase = 'idle';
19
+ get isIdle() { return this.phase === 'idle'; }
20
+ get isPaying() { return this.phase === 'paying'; }
21
+ get isFinalizing() { return this.phase === 'finalizing'; }
22
+ ventana = null;
23
+ windowRef;
24
+ sid = '';
25
+ bc;
26
+ pollTimer;
27
+ pollStartedAt = 0;
28
+ ngOnInit() {
22
29
  if (isPlatformBrowser(this.platformId)) {
23
- this.window = window;
24
- this.localStorage = localStorage;
30
+ this.windowRef = window;
31
+ if ('BroadcastChannel' in window) {
32
+ this.bc = new BroadcastChannel('mp_payment');
33
+ this.bc.onmessage = (e) => this.onMpMessage(e?.data);
34
+ }
35
+ window.addEventListener('storage', this.onStorage);
36
+ window.addEventListener('message', this.onWindowMessage);
25
37
  }
26
- }
27
- ngOnInit() {
28
38
  this.getPreference();
29
39
  }
40
+ ngOnDestroy() {
41
+ if (!isPlatformBrowser(this.platformId))
42
+ return;
43
+ this.bc?.close();
44
+ window.removeEventListener('storage', this.onStorage);
45
+ window.removeEventListener('message', this.onWindowMessage);
46
+ if (this.pollTimer)
47
+ clearInterval(this.pollTimer);
48
+ }
49
+ /** Cancela manualmente el pago y finaliza el flujo con estado "cancel". */
30
50
  clickClose = () => {
31
- /* this.closeModal = 'cancel'
32
- this.ventana?.close() */
51
+ if (this.finished)
52
+ return;
53
+ this.finishWithState('cancel');
33
54
  };
55
+ /**
56
+ * Inicia el pago abriendo `init_point` en una ventana/pestaña nueva.
57
+ * Genera un SID y lo persiste para casar la respuesta del catch.
58
+ * Si el popup es bloqueado, hace fallback navegando en la misma pestaña.
59
+ */
34
60
  iniciar = () => {
35
- this.closeModal = '';
36
- this.clearStorageState();
37
- this.ventana = this.window?.open(this.url);
38
- this.callState();
39
- };
40
- callState = () => {
41
- let state = this.closeModal != '' ? this.closeModal : this.localStorage?.getItem('state');
42
- !state && this.ventana.closed && (state = 'cancel');
43
- this.loading = true;
44
- state && console.log(state);
45
- if (state) {
46
- this.loading = false;
47
- this.localStorage?.removeItem('state');
48
- if (state == 'success') {
49
- this.ventana?.close();
50
- this.ready.emit(true);
51
- return;
52
- }
53
- if (state == 'pending') {
54
- this.ventana?.close();
55
- this.ready.emit(true);
56
- return;
57
- }
58
- if (state == 'failure') {
59
- this.ventana?.close();
60
- this.processError('');
61
- return;
62
- }
63
- if (state == 'cancel') {
64
- this.ventana?.close();
65
- this.processError('Se cancelo el pago con mercado pago');
61
+ if (!isPlatformBrowser(this.platformId) || !this.windowRef || !this.url)
62
+ return;
63
+ this.phase = 'paying';
64
+ this.sid = this.genSid();
65
+ const url = new URL(this.url);
66
+ localStorage.setItem('mp:sid', this.sid);
67
+ this.ventana = this.windowRef.open(this.url, '_blank');
68
+ // popup bloqueado fallback a navegación en misma pestaña
69
+ if (!this.ventana || this.ventana.closed) {
70
+ this.windowRef.location.href = this.url;
71
+ return;
72
+ }
73
+ // polling de último recurso (hasta 10 minutos)
74
+ this.pollStartedAt = Date.now();
75
+ if (this.pollTimer)
76
+ clearInterval(this.pollTimer);
77
+ this.pollTimer = setInterval(() => {
78
+ if (Date.now() - this.pollStartedAt > 10 * 60 * 1000) {
79
+ clearInterval(this.pollTimer);
80
+ this.pollTimer = null;
81
+ this.phase = 'idle';
82
+ this.processError('Tiempo de espera agotado al procesar el pago.');
66
83
  return;
67
84
  }
68
- this.ventana?.close();
69
- this.processError('');
85
+ this.checkLocalStorageOnce();
86
+ }, 1000);
87
+ };
88
+ onWindowMessage = (event) => {
89
+ const data = event?.data;
90
+ this.onMpMessage(data);
91
+ };
92
+ onStorage = (e) => {
93
+ if (!e.key || !this.sid)
70
94
  return;
95
+ if (e.key === `mp:state:${this.sid}` && e.newValue) {
96
+ const state = e.newValue;
97
+ this.finishWithState(state);
71
98
  }
72
- setTimeout(() => {
73
- this.callState();
74
- }, 5000);
75
99
  };
76
- processError = (err) => {
77
- this._toastService.show(err != '' ? err : 'payment-error');
78
- // console.log("ERROR ENVIO BACK ", err);
100
+ onMpMessage = (data) => {
101
+ if (!data || data.type !== 'mp:state')
102
+ return;
103
+ if (data.sid !== this.sid)
104
+ return;
105
+ this.finishWithState(data.state);
106
+ };
107
+ checkLocalStorageOnce() {
108
+ if (!this.sid)
109
+ return;
110
+ const state = localStorage.getItem(`mp:state:${this.sid}`);
111
+ if (state)
112
+ this.finishWithState(state);
113
+ }
114
+ /** Cierra el flujo de pago con el estado final y notifica al padre. */
115
+ finishWithState(state) {
116
+ if (this.finished)
117
+ return;
118
+ this.finished = true;
119
+ if (this.pollTimer)
120
+ clearInterval(this.pollTimer);
121
+ this.pollTimer = null;
122
+ localStorage.removeItem(`mp:state:${this.sid}`);
123
+ localStorage.removeItem('mp:sid');
124
+ localStorage.removeItem('state');
125
+ try {
126
+ this.ventana && !this.ventana.closed && this.ventana.close();
127
+ }
128
+ catch { }
129
+ this.ventana = null;
130
+ if (state === 'success' || state === 'pending') {
131
+ this.phase = 'finalizing';
132
+ this.ready.emit(true);
133
+ }
134
+ else if (state === 'failure' || state === 'cancel') {
135
+ this.phase = 'idle';
136
+ this._toastService.show(state === 'cancel' ? 'Se canceló el pago con Mercado Pago' : 'payment-error');
137
+ }
138
+ else {
139
+ this.phase = 'idle';
140
+ this._toastService.show('payment-error');
141
+ }
142
+ }
143
+ genSid() {
144
+ return `mp_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
145
+ }
146
+ processError = (msg) => {
147
+ this._toastService.show(msg || 'payment-error');
79
148
  };
149
+ /** Limpia posibles residuos de estado en storages. */
80
150
  clearStorageState = () => {
81
- sessionStorage.removeItem('state');
82
- this.localStorage?.removeItem('state');
151
+ if (!isPlatformBrowser(this.platformId))
152
+ return;
153
+ localStorage.removeItem('state');
154
+ const sid = localStorage.getItem('mp:sid');
155
+ if (sid)
156
+ localStorage.removeItem(`mp:state:${sid}`);
157
+ };
158
+ /** Obtiene la preferencia e inicializa `url` (init_point). */
159
+ getPreference = () => {
160
+ this._paymentService.getPreference(this.allData).then((res) => {
161
+ this.preference = res;
162
+ this.url = this.preference?.init_point;
163
+ this.renderMP(this.preference);
164
+ }, () => this.setError('operation-error'));
83
165
  };
84
- getPreference = () => this._paymentService.getPreference(this.allData).then(res => {
85
- this.preference = res;
86
- this.url = this.preference.init_point;
87
- this.renderMP(this.preference);
88
- }, err => this.setError('operation-error'));
89
166
  setError = (message) => {
90
167
  //this.error = message;
91
168
  };
92
- renderMP = (preference) => {
93
- this.window?.addEventListener("message", (event) => {
94
- if (event.origin !== 'https://www.mercadopago.com.ar' || !event.data.type) {
95
- return;
96
- }
97
- let dataType = event.data.type;
98
- if (dataType === 'submit') {
99
- const paymentData = event.data.value;
100
- return;
101
- }
102
- });
103
- };
169
+ renderMP = (_pref) => { };
104
170
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MpRedirectEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
105
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MpRedirectEcComponent, isStandalone: true, selector: "app-mp-redirect-ec", inputs: { method: "method", total_amount: "total_amount", allData: "allData" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"text-center\">\r\n\t@if(url){\r\n\t\t@if(!loading){\r\n\t\t\t<button (click)=\"iniciar()\" class=\"btn btn-outline-primary rounded-0 comprar mt-3\">Pagar</button>\r\n\t\t} @else {\r\n\t\t\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n\t\t\t\t<h3>Procesando el pago por mercado pago</h3>\r\n\t\t\t\t<h5>Recuerde hacer click en \"Volver al sitio\" desde mercado pago para finalizar la compra.</h5>\r\n\t\t\t\t<app-loading-full-ec></app-loading-full-ec>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"container-fluid\">\r\n\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t<div class=\"col-5\">\r\n\t\t\t\t\t\t<hr>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"col-2 text-center\">\r\n\t\t\t\t\t\t<label for=\"\">o</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"col-5\">\r\n\t\t\t\t\t\t<hr>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\r\n\t\t\t\t<button (click)=\"clickClose()\" class=\"btn btn-outline-secondary\">Cancelar pago</button>\r\n\t\t\t</div>\r\n\t\t}\r\n\t} @else{\r\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\r\n\t\t<app-loading-full-ec></app-loading-full-ec>\r\n\t</div>\r\n\t}\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
171
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MpRedirectEcComponent, isStandalone: true, selector: "app-mp-redirect-ec", inputs: { method: "method", total_amount: "total_amount", allData: "allData" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"text-center\">\n\t@if(url) {\n\n\t@if(isIdle) {\n\t<button (click)=\"iniciar()\" class=\"btn btn-outline-primary rounded-0 comprar mt-3\">Pagar</button>\n\t}\n\n\t@if(isPaying) {\n\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n\t\t<h3>Procesando el pago por Mercado Pago</h3>\n\t\t<h5>Record\u00E1 tocar \u201CVolver al sitio\u201D en Mercado Pago para finalizar.</h5>\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\n\t<div class=\"container-fluid\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-5\">\n\t\t\t\t<hr>\n\t\t\t</div>\n\t\t\t<div class=\"col-2 text-center\"><label>o</label></div>\n\t\t\t<div class=\"col-5\">\n\t\t\t\t<hr>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n\t\t<button (click)=\"clickClose()\" class=\"btn btn-outline-secondary\">Cancelar pago</button>\n\t</div>\n\t}\n\n\t@if(isFinalizing) {\n\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n\t\t<h3>Confirmando pago y redirigiendo\u2026</h3>\n\t\t<h5>No cierres ni recargues esta p\u00E1gina.</h5>\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\t}\n\n\t} @else {\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\t}\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
106
172
  }
107
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MpRedirectEcComponent, decorators: [{
108
174
  type: Component,
109
- args: [{ selector: 'app-mp-redirect-ec', standalone: true, imports: [LoadingFullEcComponent], template: "<div class=\"text-center\">\r\n\t@if(url){\r\n\t\t@if(!loading){\r\n\t\t\t<button (click)=\"iniciar()\" class=\"btn btn-outline-primary rounded-0 comprar mt-3\">Pagar</button>\r\n\t\t} @else {\r\n\t\t\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n\t\t\t\t<h3>Procesando el pago por mercado pago</h3>\r\n\t\t\t\t<h5>Recuerde hacer click en \"Volver al sitio\" desde mercado pago para finalizar la compra.</h5>\r\n\t\t\t\t<app-loading-full-ec></app-loading-full-ec>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"container-fluid\">\r\n\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t<div class=\"col-5\">\r\n\t\t\t\t\t\t<hr>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"col-2 text-center\">\r\n\t\t\t\t\t\t<label for=\"\">o</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"col-5\">\r\n\t\t\t\t\t\t<hr>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\r\n\t\t\t\t<button (click)=\"clickClose()\" class=\"btn btn-outline-secondary\">Cancelar pago</button>\r\n\t\t\t</div>\r\n\t\t}\r\n\t} @else{\r\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\r\n\t\t<app-loading-full-ec></app-loading-full-ec>\r\n\t</div>\r\n\t}\r\n</div>" }]
110
- }], ctorParameters: () => [], propDecorators: { method: [{
175
+ args: [{ selector: 'app-mp-redirect-ec', standalone: true, imports: [LoadingFullEcComponent], template: "<div class=\"text-center\">\n\t@if(url) {\n\n\t@if(isIdle) {\n\t<button (click)=\"iniciar()\" class=\"btn btn-outline-primary rounded-0 comprar mt-3\">Pagar</button>\n\t}\n\n\t@if(isPaying) {\n\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n\t\t<h3>Procesando el pago por Mercado Pago</h3>\n\t\t<h5>Record\u00E1 tocar \u201CVolver al sitio\u201D en Mercado Pago para finalizar.</h5>\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\n\t<div class=\"container-fluid\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-5\">\n\t\t\t\t<hr>\n\t\t\t</div>\n\t\t\t<div class=\"col-2 text-center\"><label>o</label></div>\n\t\t\t<div class=\"col-5\">\n\t\t\t\t<hr>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n\t\t<button (click)=\"clickClose()\" class=\"btn btn-outline-secondary\">Cancelar pago</button>\n\t</div>\n\t}\n\n\t@if(isFinalizing) {\n\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n\t\t<h3>Confirmando pago y redirigiendo\u2026</h3>\n\t\t<h5>No cierres ni recargues esta p\u00E1gina.</h5>\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\t}\n\n\t} @else {\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\t}\n</div>" }]
176
+ }], propDecorators: { method: [{
111
177
  type: Input
112
178
  }], total_amount: [{
113
179
  type: Input
@@ -116,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
116
182
  }], ready: [{
117
183
  type: Output
118
184
  }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXAtcmVkaXJlY3QtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvbXAtcmVkaXJlY3QtZWMvbXAtcmVkaXJlY3QtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvbXAtcmVkaXJlY3QtZWMvbXAtcmVkaXJlY3QtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBU3BELE1BQU0sT0FBTyxxQkFBcUI7SUFFekIsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDeEQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFFakQsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNkLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFNO0lBQ1osS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFM0IsVUFBVSxDQUFNO0lBRW5CLE9BQU8sR0FB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LENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzRSxPQUFPO1lBQ1IsQ0FBQztZQUNELElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQy9CLElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMzQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDckMsT0FBTztZQUNSLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQTt3R0FoSFcscUJBQXFCOzRGQUFyQixxQkFBcUIsMkxDWmxDLHF3Q0FnQ00sMEREdEJLLHNCQUFzQjs7NEZBRXBCLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDQyxvQkFBb0IsY0FDbEIsSUFBSSxXQUdQLENBQUMsc0JBQXNCLENBQUM7d0RBT3hCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBheW1lbnRTZXJ2aWNlLCBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IExvYWRpbmdGdWxsRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi93aWRnZXRzLWVjJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtbXAtcmVkaXJlY3QtZWMnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0dGVtcGxhdGVVcmw6ICcuL21wLXJlZGlyZWN0LWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9tcC1yZWRpcmVjdC1lYy5jb21wb25lbnQuc2NzcyddLFxyXG5cdGltcG9ydHM6IFtMb2FkaW5nRnVsbEVjQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXBSZWRpcmVjdEVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblx0cHJpdmF0ZSBfcGF5bWVudFNlcnZpY2U6IFBheW1lbnRTZXJ2aWNlID0gaW5qZWN0KFBheW1lbnRTZXJ2aWNlKVxyXG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSlcclxuXHJcblx0QElucHV0KCkgbWV0aG9kID0gbnVsbDtcclxuXHRASW5wdXQoKSB0b3RhbF9hbW91bnQgPSAwO1xyXG5cdEBJbnB1dCgpIGFsbERhdGE6IGFueTtcclxuXHRAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cdHByb3RlY3RlZCBwcmVmZXJlbmNlOiBhbnk7XHJcblxyXG5cdHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XHJcblx0cHVibGljIHVybDogYW55O1xyXG5cdHB1YmxpYyBjbG9zZU1vZGFsID0gJydcclxuXHRwdWJsaWMgdmVudGFuYTogYW55O1xyXG5cdHB1YmxpYyB3aW5kb3c/OiBXaW5kb3c7XHJcblx0cHVibGljIGxvY2FsU3RvcmFnZT86U3RvcmFnZTtcclxuXHJcblx0cHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpXHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuXHRcdFx0dGhpcy53aW5kb3cgPSB3aW5kb3dcclxuXHRcdFx0dGhpcy5sb2NhbFN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2VcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5nZXRQcmVmZXJlbmNlKClcclxuXHR9XHJcblx0Y2xpY2tDbG9zZSA9ICgpID0+IHtcclxuXHRcdC8qICB0aGlzLmNsb3NlTW9kYWwgPSAnY2FuY2VsJ1xyXG5cdFx0IHRoaXMudmVudGFuYT8uY2xvc2UoKSAqL1xyXG5cdH1cclxuXHJcblx0aW5pY2lhciA9ICgpID0+IHtcclxuXHRcdHRoaXMuY2xvc2VNb2RhbCA9ICcnXHJcblx0XHR0aGlzLmNsZWFyU3RvcmFnZVN0YXRlKClcclxuXHRcdHRoaXMudmVudGFuYSA9IHRoaXMud2luZG93Py5vcGVuKHRoaXMudXJsKVxyXG5cdFx0dGhpcy5jYWxsU3RhdGUoKVxyXG5cdH1cclxuXHJcblx0Y2FsbFN0YXRlID0gKCkgPT4ge1xyXG5cdFx0bGV0IHN0YXRlID0gdGhpcy5jbG9zZU1vZGFsICE9ICcnID8gdGhpcy5jbG9zZU1vZGFsIDogdGhpcy5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oJ3N0YXRlJylcclxuXHRcdCFzdGF0ZSAmJiB0aGlzLnZlbnRhbmEuY2xvc2VkICYmIChzdGF0ZSA9ICdjYW5jZWwnKVxyXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZVxyXG5cdFx0c3RhdGUgJiYgY29uc29sZS5sb2coc3RhdGUpO1xyXG5cdFx0aWYgKHN0YXRlKSB7XHJcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdHRoaXMubG9jYWxTdG9yYWdlPy5yZW1vdmVJdGVtKCdzdGF0ZScpXHJcblx0XHRcdGlmIChzdGF0ZSA9PSAnc3VjY2VzcycpIHtcclxuXHRcdFx0XHR0aGlzLnZlbnRhbmE/LmNsb3NlKClcclxuXHRcdFx0XHR0aGlzLnJlYWR5LmVtaXQodHJ1ZSlcclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoc3RhdGUgPT0gJ3BlbmRpbmcnKSB7XHJcblx0XHRcdFx0dGhpcy52ZW50YW5hPy5jbG9zZSgpXHJcblx0XHRcdFx0dGhpcy5yZWFkeS5lbWl0KHRydWUpXHJcblx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHN0YXRlID09ICdmYWlsdXJlJykge1xyXG5cdFx0XHRcdHRoaXMudmVudGFuYT8uY2xvc2UoKVxyXG5cdFx0XHRcdHRoaXMucHJvY2Vzc0Vycm9yKCcnKVxyXG5cdFx0XHRcdHJldHVyblxyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChzdGF0ZSA9PSAnY2FuY2VsJykge1xyXG5cdFx0XHRcdHRoaXMudmVudGFuYT8uY2xvc2UoKVxyXG5cdFx0XHRcdHRoaXMucHJvY2Vzc0Vycm9yKCdTZSBjYW5jZWxvIGVsIHBhZ28gY29uIG1lcmNhZG8gcGFnbycpXHJcblx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy52ZW50YW5hPy5jbG9zZSgpXHJcblx0XHRcdHRoaXMucHJvY2Vzc0Vycm9yKCcnKVxyXG5cdFx0XHRyZXR1cm5cclxuXHRcdH1cclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmNhbGxTdGF0ZSgpXHJcblx0XHR9LCA1MDAwKTtcclxuXHJcblx0fVxyXG5cdHByb2Nlc3NFcnJvciA9IChlcnI6IGFueSkgPT4ge1xyXG5cdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coZXJyICE9ICcnID8gZXJyIDogJ3BheW1lbnQtZXJyb3InKTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKFwiRVJST1IgRU5WSU8gQkFDSyAgXCIsIGVycik7XHJcblx0fVxyXG5cdGNsZWFyU3RvcmFnZVN0YXRlID0gKCkgPT4ge1xyXG5cdFx0c2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnc3RhdGUnKVxyXG5cdFx0dGhpcy5sb2NhbFN0b3JhZ2U/LnJlbW92ZUl0ZW0oJ3N0YXRlJylcclxuXHR9XHJcblxyXG5cdGdldFByZWZlcmVuY2UgPSAoKSA9PlxyXG5cdFx0dGhpcy5fcGF5bWVudFNlcnZpY2UuZ2V0UHJlZmVyZW5jZSh0aGlzLmFsbERhdGEpLnRoZW4oXHJcblx0XHRcdHJlcyA9PiB7XHJcblx0XHRcdFx0dGhpcy5wcmVmZXJlbmNlID0gcmVzO1xyXG5cdFx0XHRcdHRoaXMudXJsID0gdGhpcy5wcmVmZXJlbmNlLmluaXRfcG9pbnRcclxuXHRcdFx0XHR0aGlzLnJlbmRlck1QKHRoaXMucHJlZmVyZW5jZSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVyciA9PiB0aGlzLnNldEVycm9yKCdvcGVyYXRpb24tZXJyb3InKVxyXG5cdFx0KTtcclxuXHRzZXRFcnJvciA9IChtZXNzYWdlOiBhbnkpID0+IHtcclxuXHRcdC8vdGhpcy5lcnJvciA9IG1lc3NhZ2U7XHJcblx0fVxyXG5cdHJlbmRlck1QID0gKHByZWZlcmVuY2U6IGFueSkgPT4ge1xyXG5cdFx0dGhpcy53aW5kb3c/LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIChldmVudDogYW55KSA9PiB7XHJcblx0XHRcdGlmIChldmVudC5vcmlnaW4gIT09ICdodHRwczovL3d3dy5tZXJjYWRvcGFnby5jb20uYXInIHx8ICFldmVudC5kYXRhLnR5cGUpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0bGV0IGRhdGFUeXBlID0gZXZlbnQuZGF0YS50eXBlO1xyXG5cdFx0XHRpZiAoZGF0YVR5cGUgPT09ICdzdWJtaXQnKSB7XHJcblx0XHRcdFx0Y29uc3QgcGF5bWVudERhdGEgPSBldmVudC5kYXRhLnZhbHVlO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG5cdEBpZih1cmwpe1xyXG5cdFx0QGlmKCFsb2FkaW5nKXtcclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwiaW5pY2lhcigpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLTAgY29tcHJhciBtdC0zXCI+UGFnYXI8L2J1dHRvbj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cclxuXHRcdFx0XHQ8aDM+UHJvY2VzYW5kbyBlbCBwYWdvIHBvciBtZXJjYWRvIHBhZ288L2gzPlxyXG5cdFx0XHRcdDxoNT5SZWN1ZXJkZSBoYWNlciBjbGljayBlbiBcIlZvbHZlciBhbCBzaXRpb1wiIGRlc2RlIG1lcmNhZG8gcGFnbyBwYXJhIGZpbmFsaXphciBsYSBjb21wcmEuPC9oNT5cclxuXHRcdFx0XHQ8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC01XCI+XHJcblx0XHRcdFx0XHRcdDxocj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0yIHRleHQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdDxsYWJlbCBmb3I9XCJcIj5vPC9sYWJlbD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC01XCI+XHJcblx0XHRcdFx0XHRcdDxocj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwiY2xpY2tDbG9zZSgpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCI+Q2FuY2VsYXIgcGFnbzwvYnV0dG9uPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHR9IEBlbHNle1xyXG5cdDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG5cdFx0PGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxyXG5cdDwvZGl2PlxyXG5cdH1cclxuPC9kaXY+Il19
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXAtcmVkaXJlY3QtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvbXAtcmVkaXJlY3QtZWMvbXAtcmVkaXJlY3QtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvbXAtcmVkaXJlY3QtZWMvbXAtcmVkaXJlY3QtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBWXBELE1BQU0sT0FBTyxxQkFBcUI7SUFFekIsZUFBZSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JDLFVBQVUsR0FBUSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVoQixNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2QsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQU07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QiwyTENmbEMsazNDQTRDTSwwREQvQkssc0JBQXNCOzs0RkFFcEIscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNDLG9CQUFvQixjQUNsQixJQUFJLFdBR1AsQ0FBQyxzQkFBc0IsQ0FBQzs4QkFTeEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUExBVEZPUk1fSUQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGF5bWVudFNlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IExvYWRpbmdGdWxsRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi93aWRnZXRzLWVjJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxudHlwZSBNcFN0YXRlID0gJ3N1Y2Nlc3MnIHwgJ3BlbmRpbmcnIHwgJ2ZhaWx1cmUnIHwgJ2NhbmNlbCc7XG50eXBlIFBoYXNlID0gJ2lkbGUnIHwgJ3BheWluZycgfCAnZmluYWxpemluZyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1tcC1yZWRpcmVjdC1lYycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlVXJsOiAnLi9tcC1yZWRpcmVjdC1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL21wLXJlZGlyZWN0LWVjLmNvbXBvbmVudC5zY3NzJ10sXG5cdGltcG9ydHM6IFtMb2FkaW5nRnVsbEVjQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBNcFJlZGlyZWN0RWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0cHJpdmF0ZSBfcGF5bWVudFNlcnZpY2UgPSBpbmplY3QoUGF5bWVudFNlcnZpY2UpO1xuXHRwcml2YXRlIF90b2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcblx0cHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXHRwcml2YXRlIGZpbmlzaGVkID0gZmFsc2U7XG5cblx0QElucHV0KCkgbWV0aG9kID0gbnVsbDtcblx0QElucHV0KCkgdG90YWxfYW1vdW50ID0gMDtcblx0QElucHV0KCkgYWxsRGF0YTogYW55O1xuXHRAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cblx0cHJvdGVjdGVkIHByZWZlcmVuY2U6IGFueTtcblx0cHVibGljIHVybD86IHN0cmluZztcblxuXHQvLyBGYXNlcyBkZSBVSVxuXHRwdWJsaWMgcGhhc2U6IFBoYXNlID0gJ2lkbGUnO1xuXHRnZXQgaXNJZGxlKCkgeyByZXR1cm4gdGhpcy5waGFzZSA9PT0gJ2lkbGUnOyB9XG5cdGdldCBpc1BheWluZygpIHsgcmV0dXJuIHRoaXMucGhhc2UgPT09ICdwYXlpbmcnOyB9XG5cdGdldCBpc0ZpbmFsaXppbmcoKSB7IHJldHVybiB0aGlzLnBoYXNlID09PSAnZmluYWxpemluZyc7IH1cblxuXHRwcml2YXRlIHZlbnRhbmE6IFdpbmRvdyB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIHdpbmRvd1JlZj86IFdpbmRvdztcblx0cHJpdmF0ZSBzaWQgPSAnJztcblx0cHJpdmF0ZSBiYz86IEJyb2FkY2FzdENoYW5uZWw7XG5cdHByaXZhdGUgcG9sbFRpbWVyPzogYW55O1xuXHRwcml2YXRlIHBvbGxTdGFydGVkQXQgPSAwO1xuXG5cdG5nT25Jbml0KCkge1xuXHRcdGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG5cdFx0XHR0aGlzLndpbmRvd1JlZiA9IHdpbmRvdztcblxuXHRcdFx0aWYgKCdCcm9hZGNhc3RDaGFubmVsJyBpbiB3aW5kb3cpIHtcblx0XHRcdFx0dGhpcy5iYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCdtcF9wYXltZW50Jyk7XG5cdFx0XHRcdHRoaXMuYmMub25tZXNzYWdlID0gKGU6IE1lc3NhZ2VFdmVudCkgPT4gdGhpcy5vbk1wTWVzc2FnZShlPy5kYXRhKTtcblx0XHRcdH1cblxuXHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCB0aGlzLm9uU3RvcmFnZSk7XG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMub25XaW5kb3dNZXNzYWdlKTtcblx0XHR9XG5cblx0XHR0aGlzLmdldFByZWZlcmVuY2UoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXHRcdHRoaXMuYmM/LmNsb3NlKCk7XG5cdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCB0aGlzLm9uU3RvcmFnZSk7XG5cdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLm9uV2luZG93TWVzc2FnZSk7XG5cdFx0aWYgKHRoaXMucG9sbFRpbWVyKSBjbGVhckludGVydmFsKHRoaXMucG9sbFRpbWVyKTtcblx0fVxuXG5cdC8qKiBDYW5jZWxhIG1hbnVhbG1lbnRlIGVsIHBhZ28geSBmaW5hbGl6YSBlbCBmbHVqbyBjb24gZXN0YWRvIFwiY2FuY2VsXCIuICovXG5cdGNsaWNrQ2xvc2UgPSAoKSA9PiB7XG5cdFx0aWYgKHRoaXMuZmluaXNoZWQpIHJldHVybjtcblx0XHR0aGlzLmZpbmlzaFdpdGhTdGF0ZSgnY2FuY2VsJyk7XG5cdH1cblxuXHQvKipcblx0ICogSW5pY2lhIGVsIHBhZ28gYWJyaWVuZG8gYGluaXRfcG9pbnRgIGVuIHVuYSB2ZW50YW5hL3Blc3Rhw7FhIG51ZXZhLlxuXHQgKiBHZW5lcmEgdW4gU0lEIHkgbG8gcGVyc2lzdGUgcGFyYSBjYXNhciBsYSByZXNwdWVzdGEgZGVsIGNhdGNoLlxuXHQgKiBTaSBlbCBwb3B1cCBlcyBibG9xdWVhZG8sIGhhY2UgZmFsbGJhY2sgbmF2ZWdhbmRvIGVuIGxhIG1pc21hIHBlc3Rhw7FhLlxuXHQgKi9cblx0aW5pY2lhciA9ICgpID0+IHtcblx0XHRpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMud2luZG93UmVmIHx8ICF0aGlzLnVybCkgcmV0dXJuO1xuXG5cdFx0dGhpcy5waGFzZSA9ICdwYXlpbmcnO1xuXHRcdHRoaXMuc2lkID0gdGhpcy5nZW5TaWQoKTtcblx0XHRjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMudXJsKTtcblxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtcDpzaWQnLCB0aGlzLnNpZCk7XG5cblx0XHR0aGlzLnZlbnRhbmEgPSB0aGlzLndpbmRvd1JlZi5vcGVuKHRoaXMudXJsLCAnX2JsYW5rJyk7XG5cblx0XHQvLyBwb3B1cCBibG9xdWVhZG8g4oaSIGZhbGxiYWNrIGEgbmF2ZWdhY2nDs24gZW4gbWlzbWEgcGVzdGHDsWFcblx0XHRpZiAoIXRoaXMudmVudGFuYSB8fCB0aGlzLnZlbnRhbmEuY2xvc2VkKSB7XG5cdFx0XHR0aGlzLndpbmRvd1JlZi5sb2NhdGlvbi5ocmVmID0gdGhpcy51cmw7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gcG9sbGluZyBkZSDDumx0aW1vIHJlY3Vyc28gKGhhc3RhIDEwIG1pbnV0b3MpXG5cdFx0dGhpcy5wb2xsU3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcblx0XHRpZiAodGhpcy5wb2xsVGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy5wb2xsVGltZXIpO1xuXHRcdHRoaXMucG9sbFRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0aWYgKERhdGUubm93KCkgLSB0aGlzLnBvbGxTdGFydGVkQXQgPiAxMCAqIDYwICogMTAwMCkge1xuXHRcdFx0XHRjbGVhckludGVydmFsKHRoaXMucG9sbFRpbWVyKTtcblx0XHRcdFx0dGhpcy5wb2xsVGltZXIgPSBudWxsO1xuXHRcdFx0XHR0aGlzLnBoYXNlID0gJ2lkbGUnO1xuXHRcdFx0XHR0aGlzLnByb2Nlc3NFcnJvcignVGllbXBvIGRlIGVzcGVyYSBhZ290YWRvIGFsIHByb2Nlc2FyIGVsIHBhZ28uJyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRoaXMuY2hlY2tMb2NhbFN0b3JhZ2VPbmNlKCk7XG5cdFx0fSwgMTAwMCk7XG5cdH1cblxuXHRwcml2YXRlIG9uV2luZG93TWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG5cdFx0Y29uc3QgZGF0YSA9IGV2ZW50Py5kYXRhO1xuXHRcdHRoaXMub25NcE1lc3NhZ2UoZGF0YSk7XG5cdH1cblxuXHRwcml2YXRlIG9uU3RvcmFnZSA9IChlOiBTdG9yYWdlRXZlbnQpID0+IHtcblx0XHRpZiAoIWUua2V5IHx8ICF0aGlzLnNpZCkgcmV0dXJuO1xuXHRcdGlmIChlLmtleSA9PT0gYG1wOnN0YXRlOiR7dGhpcy5zaWR9YCAmJiBlLm5ld1ZhbHVlKSB7XG5cdFx0XHRjb25zdCBzdGF0ZSA9IGUubmV3VmFsdWUgYXMgTXBTdGF0ZTtcblx0XHRcdHRoaXMuZmluaXNoV2l0aFN0YXRlKHN0YXRlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIG9uTXBNZXNzYWdlID0gKGRhdGE6IGFueSkgPT4ge1xuXHRcdGlmICghZGF0YSB8fCBkYXRhLnR5cGUgIT09ICdtcDpzdGF0ZScpIHJldHVybjtcblx0XHRpZiAoZGF0YS5zaWQgIT09IHRoaXMuc2lkKSByZXR1cm47XG5cdFx0dGhpcy5maW5pc2hXaXRoU3RhdGUoZGF0YS5zdGF0ZSBhcyBNcFN0YXRlKTtcblx0fVxuXG5cdHByaXZhdGUgY2hlY2tMb2NhbFN0b3JhZ2VPbmNlKCkge1xuXHRcdGlmICghdGhpcy5zaWQpIHJldHVybjtcblx0XHRjb25zdCBzdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGBtcDpzdGF0ZToke3RoaXMuc2lkfWApIGFzIE1wU3RhdGUgfCBudWxsO1xuXHRcdGlmIChzdGF0ZSkgdGhpcy5maW5pc2hXaXRoU3RhdGUoc3RhdGUpO1xuXHR9XG5cblx0LyoqIENpZXJyYSBlbCBmbHVqbyBkZSBwYWdvIGNvbiBlbCBlc3RhZG8gZmluYWwgeSBub3RpZmljYSBhbCBwYWRyZS4gKi9cblx0cHJpdmF0ZSBmaW5pc2hXaXRoU3RhdGUoc3RhdGU6IE1wU3RhdGUpIHtcblx0XHRpZiAodGhpcy5maW5pc2hlZCkgcmV0dXJuO1xuXHRcdHRoaXMuZmluaXNoZWQgPSB0cnVlO1xuXG5cdFx0aWYgKHRoaXMucG9sbFRpbWVyKSBjbGVhckludGVydmFsKHRoaXMucG9sbFRpbWVyKTtcblx0XHR0aGlzLnBvbGxUaW1lciA9IG51bGw7XG5cblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgbXA6c3RhdGU6JHt0aGlzLnNpZH1gKTtcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbXA6c2lkJyk7XG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJyk7XG5cblx0XHR0cnkgeyB0aGlzLnZlbnRhbmEgJiYgIXRoaXMudmVudGFuYS5jbG9zZWQgJiYgdGhpcy52ZW50YW5hLmNsb3NlKCk7IH0gY2F0Y2ggeyB9XG5cdFx0dGhpcy52ZW50YW5hID0gbnVsbDtcblxuXHRcdGlmIChzdGF0ZSA9PT0gJ3N1Y2Nlc3MnIHx8IHN0YXRlID09PSAncGVuZGluZycpIHtcblx0XHRcdHRoaXMucGhhc2UgPSAnZmluYWxpemluZyc7XG5cdFx0XHR0aGlzLnJlYWR5LmVtaXQodHJ1ZSk7XG5cdFx0fSBlbHNlIGlmIChzdGF0ZSA9PT0gJ2ZhaWx1cmUnIHx8IHN0YXRlID09PSAnY2FuY2VsJykge1xuXHRcdFx0dGhpcy5waGFzZSA9ICdpZGxlJztcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KHN0YXRlID09PSAnY2FuY2VsJyA/ICdTZSBjYW5jZWzDsyBlbCBwYWdvIGNvbiBNZXJjYWRvIFBhZ28nIDogJ3BheW1lbnQtZXJyb3InKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5waGFzZSA9ICdpZGxlJztcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdwYXltZW50LWVycm9yJyk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZW5TaWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYG1wXyR7RGF0ZS5ub3coKX1fJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA5KX1gO1xuXHR9XG5cblx0cHJpdmF0ZSBwcm9jZXNzRXJyb3IgPSAobXNnOiBzdHJpbmcpID0+IHtcblx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdyhtc2cgfHwgJ3BheW1lbnQtZXJyb3InKTtcblx0fVxuXG5cdC8qKiBMaW1waWEgcG9zaWJsZXMgcmVzaWR1b3MgZGUgZXN0YWRvIGVuIHN0b3JhZ2VzLiAqL1xuXHRjbGVhclN0b3JhZ2VTdGF0ZSA9ICgpID0+IHtcblx0XHRpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc3RhdGUnKTtcblx0XHRjb25zdCBzaWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbXA6c2lkJyk7XG5cdFx0aWYgKHNpZCkgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYG1wOnN0YXRlOiR7c2lkfWApO1xuXHR9XG5cblx0LyoqIE9idGllbmUgbGEgcHJlZmVyZW5jaWEgZSBpbmljaWFsaXphIGB1cmxgIChpbml0X3BvaW50KS4gKi9cblx0cHJpdmF0ZSBnZXRQcmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuX3BheW1lbnRTZXJ2aWNlLmdldFByZWZlcmVuY2UodGhpcy5hbGxEYXRhKS50aGVuKFxuXHRcdFx0KHJlcykgPT4ge1xuXHRcdFx0XHR0aGlzLnByZWZlcmVuY2UgPSByZXM7XG5cdFx0XHRcdHRoaXMudXJsID0gdGhpcy5wcmVmZXJlbmNlPy5pbml0X3BvaW50O1xuXHRcdFx0XHR0aGlzLnJlbmRlck1QKHRoaXMucHJlZmVyZW5jZSk7XG5cdFx0XHR9LFxuXHRcdFx0KCkgPT4gdGhpcy5zZXRFcnJvcignb3BlcmF0aW9uLWVycm9yJylcblx0XHQpO1xuXHR9O1xuXG5cdHByaXZhdGUgc2V0RXJyb3IgPSAobWVzc2FnZTogYW55KSA9PiB7XG5cdFx0Ly90aGlzLmVycm9yID0gbWVzc2FnZTtcblx0fVxuXG5cdHByaXZhdGUgcmVuZGVyTVAgPSAoX3ByZWY6IGFueSk6IHZvaWQgPT4geyAvKiBub29wICovIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cblx0QGlmKHVybCkge1xuXG5cdEBpZihpc0lkbGUpIHtcblx0PGJ1dHRvbiAoY2xpY2spPVwiaW5pY2lhcigpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLTAgY29tcHJhciBtdC0zXCI+UGFnYXI8L2J1dHRvbj5cblx0fVxuXG5cdEBpZihpc1BheWluZykge1xuXHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cblx0XHQ8aDM+UHJvY2VzYW5kbyBlbCBwYWdvIHBvciBNZXJjYWRvIFBhZ288L2gzPlxuXHRcdDxoNT5SZWNvcmTDoSB0b2NhciDigJxWb2x2ZXIgYWwgc2l0aW/igJ0gZW4gTWVyY2FkbyBQYWdvIHBhcmEgZmluYWxpemFyLjwvaDU+XG5cdFx0PGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxuXHQ8L2Rpdj5cblxuXHQ8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG5cdFx0PGRpdiBjbGFzcz1cInJvd1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC01XCI+XG5cdFx0XHRcdDxocj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC0yIHRleHQtY2VudGVyXCI+PGxhYmVsPm88L2xhYmVsPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC01XCI+XG5cdFx0XHRcdDxocj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblxuXHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cblx0XHQ8YnV0dG9uIChjbGljayk9XCJjbGlja0Nsb3NlKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIj5DYW5jZWxhciBwYWdvPC9idXR0b24+XG5cdDwvZGl2PlxuXHR9XG5cblx0QGlmKGlzRmluYWxpemluZykge1xuXHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cblx0XHQ8aDM+Q29uZmlybWFuZG8gcGFnbyB5IHJlZGlyaWdpZW5kb+KApjwvaDM+XG5cdFx0PGg1Pk5vIGNpZXJyZXMgbmkgcmVjYXJndWVzIGVzdGEgcMOhZ2luYS48L2g1PlxuXHRcdDxhcHAtbG9hZGluZy1mdWxsLWVjPjwvYXBwLWxvYWRpbmctZnVsbC1lYz5cblx0PC9kaXY+XG5cdH1cblxuXHR9IEBlbHNlIHtcblx0PGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG5cdFx0PGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxuXHQ8L2Rpdj5cblx0fVxuPC9kaXY+Il19
@@ -11,14 +11,14 @@ export class OfflineEcComponent {
11
11
  ngOnInit() {
12
12
  }
13
13
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OfflineEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OfflineEcComponent, isStandalone: true, selector: "app-offline-ec", inputs: { method: "method", verifyValidate: "verifyValidate", setLoading: "setLoading" }, ngImport: i0, template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\r\n<p class=\"px-5\">{{ method.instructions }}</p>\r\n<div class=\"end-button\">\r\n\t<button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\r\n\t\t('pay-with-offline'| translate) }}</button>\r\n</div>\r\n<!-- @if(loading$ | async; as loading){\r\n @if(loading){\r\n <div class=\"mt-2\">\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n }\r\n} -->", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OfflineEcComponent, isStandalone: true, selector: "app-offline-ec", inputs: { method: "method", verifyValidate: "verifyValidate", setLoading: "setLoading" }, ngImport: i0, template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\n<p class=\"px-5\">{{ method.instructions }}</p>\n<div class=\"end-button\">\n\t<button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\n\t\t('pay-with-offline'| translate) }}</button>\n</div>\n<!-- @if(loading$ | async; as loading){\n @if(loading){\n <div class=\"mt-2\">\n <app-loading-inline-ec></app-loading-inline-ec>\n </div>\n }\n} -->", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OfflineEcComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'app-offline-ec', standalone: true, imports: [
19
19
  LoadingInlineEcComponent,
20
20
  TranslateModule
21
- ], template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\r\n<p class=\"px-5\">{{ method.instructions }}</p>\r\n<div class=\"end-button\">\r\n\t<button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\r\n\t\t('pay-with-offline'| translate) }}</button>\r\n</div>\r\n<!-- @if(loading$ | async; as loading){\r\n @if(loading){\r\n <div class=\"mt-2\">\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n }\r\n} -->" }]
21
+ ], template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\n<p class=\"px-5\">{{ method.instructions }}</p>\n<div class=\"end-button\">\n\t<button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\n\t\t('pay-with-offline'| translate) }}</button>\n</div>\n<!-- @if(loading$ | async; as loading){\n @if(loading){\n <div class=\"mt-2\">\n <app-loading-inline-ec></app-loading-inline-ec>\n </div>\n }\n} -->" }]
22
22
  }], ctorParameters: () => [], propDecorators: { method: [{
23
23
  type: Input,
24
24
  args: [{
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
29
29
  }], setLoading: [{
30
30
  type: Input
31
31
  }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9jaGVja291dC1lYy9wYXltZW50LWVjL3BheW1lbnQtbWV0aG9kcy9vZmZsaW5lLWVjL29mZmxpbmUtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvb2ZmbGluZS1lYy9vZmZsaW5lLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBWXRELE1BQU0sT0FBTyxrQkFBa0I7SUFHM0IsTUFBTSxDQUFNO0lBQ04sY0FBYyxDQUFNO0lBQ3BCLFVBQVUsQ0FBTTtJQUN6QixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzt3R0FUVyxrQkFBa0I7NEZBQWxCLGtCQUFrQixvS0NkL0IsdWRBWUsseUREREgsZUFBZTs7NEZBR0osa0JBQWtCO2tCQVY5QixTQUFTOytCQUNDLGdCQUFnQixjQUNkLElBQUksV0FHUDt3QkFDUix3QkFBd0I7d0JBQ3hCLGVBQWU7cUJBQ2Y7d0RBS0UsTUFBTTtzQkFGUixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUNRLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2FkaW5nSW5saW5lRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi93aWRnZXRzLWVjJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1vZmZsaW5lLWVjJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9vZmZsaW5lLWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9vZmZsaW5lLWVjLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0aW1wb3J0czogW1xyXG5cdFx0TG9hZGluZ0lubGluZUVjQ29tcG9uZW50LFxyXG5cdFx0VHJhbnNsYXRlTW9kdWxlXHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgT2ZmbGluZUVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRASW5wdXQoe1xyXG5cdFx0cmVxdWlyZWQ6IHRydWUsXHJcblx0fSkgbWV0aG9kOiBhbnk7XHJcblx0QElucHV0KCkgdmVyaWZ5VmFsaWRhdGU6IGFueTtcclxuXHRASW5wdXQoKSBzZXRMb2FkaW5nOiBhbnk7XHJcblx0Y29uc3RydWN0b3IoKSB7IH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0fVxyXG5cclxufVxyXG4iLCI8cCBpZD1cImZhcXNcIiBjbGFzcz1cInF0IHB4LTVcIj57eyBtZXRob2QuZGVzY3JpcHRpb24gfX08L3A+XHJcbjxwIGNsYXNzPVwicHgtNVwiPnt7IG1ldGhvZC5pbnN0cnVjdGlvbnMgfX08L3A+XHJcbjxkaXYgY2xhc3M9XCJlbmQtYnV0dG9uXCI+XHJcblx0PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cInNldExvYWRpbmcoKSAmJiB2ZXJpZnlWYWxpZGF0ZSgpXCI+e3tcclxuXHRcdCgncGF5LXdpdGgtb2ZmbGluZSd8IHRyYW5zbGF0ZSkgfX08L2J1dHRvbj5cclxuPC9kaXY+XHJcbjwhLS0gQGlmKGxvYWRpbmckIHwgYXN5bmM7IGFzIGxvYWRpbmcpe1xyXG4gIEBpZihsb2FkaW5nKXtcclxuICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgPGFwcC1sb2FkaW5nLWlubGluZS1lYz48L2FwcC1sb2FkaW5nLWlubGluZS1lYz5cclxuICA8L2Rpdj5cclxuICB9XHJcbn0gLS0+Il19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9jaGVja291dC1lYy9wYXltZW50LWVjL3BheW1lbnQtbWV0aG9kcy9vZmZsaW5lLWVjL29mZmxpbmUtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvb2ZmbGluZS1lYy9vZmZsaW5lLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBWXRELE1BQU0sT0FBTyxrQkFBa0I7SUFHM0IsTUFBTSxDQUFNO0lBQ04sY0FBYyxDQUFNO0lBQ3BCLFVBQVUsQ0FBTTtJQUN6QixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzt3R0FUVyxrQkFBa0I7NEZBQWxCLGtCQUFrQixvS0NkL0IsK2JBWUsseUREREgsZUFBZTs7NEZBR0osa0JBQWtCO2tCQVY5QixTQUFTOytCQUNDLGdCQUFnQixjQUNkLElBQUksV0FHUDt3QkFDUix3QkFBd0I7d0JBQ3hCLGVBQWU7cUJBQ2Y7d0RBS0UsTUFBTTtzQkFGUixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUNRLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ0lubGluZUVjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vd2lkZ2V0cy1lYyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnYXBwLW9mZmxpbmUtZWMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZVVybDogJy4vb2ZmbGluZS1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL29mZmxpbmUtZWMuY29tcG9uZW50LnNjc3MnXSxcblx0aW1wb3J0czogW1xuXHRcdExvYWRpbmdJbmxpbmVFY0NvbXBvbmVudCxcblx0XHRUcmFuc2xhdGVNb2R1bGVcblx0XVxufSlcbmV4cG9ydCBjbGFzcyBPZmZsaW5lRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRASW5wdXQoe1xuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHR9KSBtZXRob2Q6IGFueTtcblx0QElucHV0KCkgdmVyaWZ5VmFsaWRhdGU6IGFueTtcblx0QElucHV0KCkgc2V0TG9hZGluZzogYW55O1xuXHRjb25zdHJ1Y3RvcigpIHsgfVxuXG5cdG5nT25Jbml0KCkge1xuXHR9XG5cbn1cbiIsIjxwIGlkPVwiZmFxc1wiIGNsYXNzPVwicXQgcHgtNVwiPnt7IG1ldGhvZC5kZXNjcmlwdGlvbiB9fTwvcD5cbjxwIGNsYXNzPVwicHgtNVwiPnt7IG1ldGhvZC5pbnN0cnVjdGlvbnMgfX08L3A+XG48ZGl2IGNsYXNzPVwiZW5kLWJ1dHRvblwiPlxuXHQ8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwic2V0TG9hZGluZygpICYmIHZlcmlmeVZhbGlkYXRlKClcIj57e1xuXHRcdCgncGF5LXdpdGgtb2ZmbGluZSd8IHRyYW5zbGF0ZSkgfX08L2J1dHRvbj5cbjwvZGl2PlxuPCEtLSBAaWYobG9hZGluZyQgfCBhc3luYzsgYXMgbG9hZGluZyl7XG4gIEBpZihsb2FkaW5nKXtcbiAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICA8YXBwLWxvYWRpbmctaW5saW5lLWVjPjwvYXBwLWxvYWRpbmctaW5saW5lLWVjPlxuICA8L2Rpdj5cbiAgfVxufSAtLT4iXX0=
@@ -137,10 +137,10 @@ export class ShipmentEcComponent {
137
137
  this._checkoutService.next();
138
138
  }
139
139
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ShipmentEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
140
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ShipmentEcComponent, isStandalone: true, selector: "app-shipment-ec", ngImport: i0, template: "<div class=\"container-fluid\">\r\n\t<div class=\"col-12\">\r\n\t\t<div class=\"card text-center\">\r\n\t\t\t<div class=\"card-header text-dark\">\r\n\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t@if(methods$ | async; as methods){\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for(method of filterMethods(methods); track $index){\r\n\t\t\t\t\t\t\t\t<button [disabled]=\"buttonsDisabled\" type=\"button\"\r\n\t\t\t\t\t\t\t\t\t[class]=\"'btn btn-outline-secondary mx-1 mb-1' + (isMethodActive(method.code) ? ' active' : '')\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"setMethod(method)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}@else {\r\n\t\t\t\t\t<div class=\"d-flex flex-row w-100 justify-content-center mt-2\">\r\n\t\t\t\t\t\t<h5 class=\"text-secondary\">{{'no-shipment-methods'|translate}}</h5>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"card-body\">\r\n\t\t\t\t@if(moreInfoInMethod && methodSelect && methodSelect.description){\r\n <div class=\"row justify-content-center mb-2\">\r\n <div class=\"col-12 col-md-6 col-lg-4 d-flex flex-column mb-2\" [id]=\"methodSelect.code\">\r\n @for(line of methodSelect.description.split('\\r\\n'); track $index; let i=$index){\r\n <span [id]=\"methodSelect.code+'-'+i\" [class]=\"'line-'+i\">{{line}}</span>\r\n\t\t\t\t\t }\r\n </div>\r\n </div>}\r\n\t\t\t\t@if(costs$ | async; as costs){\r\n<!-- \t\t\t\t @if(costs){ -->\r\n <div class=\"row justify-content-center\">\r\n @if(!loadingInternal){\r\n\t\t\t\t\t\t@for(cost of costs; track $index; let y = $index){\r\n <div class=\"col-auto text-dark\">\r\n\t\t\t\t\t\t\t@if(cost.contracts.length > 0){\r\n\t\t\t\t\t\t\t\t@if(costs.length > 1){\r\n\t\t\t\t\t\t\t\t\t<span><b>{{ cost.name | translate }}</b></span>\r\n\t\t\t\t\t\t\t\t\t<hr />\r\n\t\t\t\t\t\t\t\t}@else{\r\n\t\t\t\t\t\t\t\t\t<span><b>{{ methodSelect.name | translate }}</b></span>\r\n\t\t\t\t\t\t\t\t\t<hr />\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@for(contract of cost.contracts; track $index; let i = $index){\r\n <div class=\"option\">\r\n <div class=\"form-check current-contract\">\r\n <input class=\"form-check-input\" [checked]=\"(y === 0 && i === 0) ? true : contract.selected\" type=\"radio\" name=\"card\" [id]=\"cost.name + i\"\r\n value=\"dark\" (click)=\"verifyValidate(costs,cost.name, contract)\">\r\n <label class=\"form-check-label\" [for]=\"cost.name + i\" aria-label=\"Dark grey\">\r\n @if(validName(contract.name)){\r\n\t\t\t\t\t\t\t\t\t\t\t<span\r\n [class]=\"(cost.name == 'home_delivery') ? 'shipment-contractname home_delivery' : 'shipment-contractname' \">\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{ contract.name | translate }}\r\n\t\t\t\t\t\t\t\t\t\t\t</span>}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.computed){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span><br class=\"shipment-contractname\">{{ contract.computed | translate }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<br class=\"shipment-contractname\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.detail){\r\n <div class=\"contract-detail\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t@for(line of contract.detail.split(' - '); track $index; let i = $index){\r\n <div [class]=\"'contrat-item-'+i\">\r\n @if(i == 0){<span><b>{{ line }}</b></span>}\r\n @if(i > 0){<span class=\"inside-detail\">{{ line }}</span>}\r\n </div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.price > 0){\r\n <span [class]=\"'inside-detail ' + ( costos?.amount == 0 ? ' free ' : '') \">\r\n @if(!contract.computed){<br class=\"shipment-contractname\">}\r\n {{ ('price'|translate) + ': ' + (contract.price | ecCurrencySymbol) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n <br>\r\n </label>\r\n </div>\r\n </div>\r\n\t\t\t\t\t\t\t\t}\r\n \r\n\t\t\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t\t\t}\r\n }@else {\r\n\t\t\t\t\t\t<app-loading-full-ec></app-loading-full-ec>\r\n\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t}\r\n\t\t\t\t\r\n </div>\r\n\r\n\t\t</div>\r\n\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\r\n\t\t\t\t<button type=\"submit\" (click)=\"next()\" [disabled]=\"!enabledConfirmButton\" class=\"btn btn-primary text-white\">{{(isLastOne\r\n\t\t\t\t\t? 'finish-checkout' :'ready-form') | translate}}\r\n\t\t\t\t\t<!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }] });
140
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ShipmentEcComponent, isStandalone: true, selector: "app-shipment-ec", ngImport: i0, template: "<div class=\"container-fluid\">\n\t<div class=\"col-12\">\n\t\t<div class=\"card text-center\">\n\t\t\t<div class=\"card-header text-dark\">\n\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\n\t\t\t\t@if(methods$ | async; as methods){\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\n\t\t\t\t\t\t\t\t@for(method of filterMethods(methods); track $index){\n\t\t\t\t\t\t\t\t<button [disabled]=\"buttonsDisabled\" type=\"button\"\n\t\t\t\t\t\t\t\t\t[class]=\"'btn btn-outline-secondary mx-1 mb-1' + (isMethodActive(method.code) ? ' active' : '')\"\n\t\t\t\t\t\t\t\t\t(click)=\"setMethod(method)\">\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t}@else {\n\t\t\t\t\t<div class=\"d-flex flex-row w-100 justify-content-center mt-2\">\n\t\t\t\t\t\t<h5 class=\"text-secondary\">{{'no-shipment-methods'|translate}}</h5>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"card-body\">\n\t\t\t\t@if(moreInfoInMethod && methodSelect && methodSelect.description){\n <div class=\"row justify-content-center mb-2\">\n <div class=\"col-12 col-md-6 col-lg-4 d-flex flex-column mb-2\" [id]=\"methodSelect.code\">\n @for(line of methodSelect.description.split('\\r\\n'); track $index; let i=$index){\n <span [id]=\"methodSelect.code+'-'+i\" [class]=\"'line-'+i\">{{line}}</span>\n\t\t\t\t\t }\n </div>\n </div>}\n\t\t\t\t@if(costs$ | async; as costs){\n<!-- \t\t\t\t @if(costs){ -->\n <div class=\"row justify-content-center\">\n @if(!loadingInternal){\n\t\t\t\t\t\t@for(cost of costs; track $index; let y = $index){\n <div class=\"col-auto text-dark\">\n\t\t\t\t\t\t\t@if(cost.contracts.length > 0){\n\t\t\t\t\t\t\t\t@if(costs.length > 1){\n\t\t\t\t\t\t\t\t\t<span><b>{{ cost.name | translate }}</b></span>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t}@else{\n\t\t\t\t\t\t\t\t\t<span><b>{{ methodSelect.name | translate }}</b></span>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@for(contract of cost.contracts; track $index; let i = $index){\n <div class=\"option\">\n <div class=\"form-check current-contract\">\n <input class=\"form-check-input\" [checked]=\"(y === 0 && i === 0) ? true : contract.selected\" type=\"radio\" name=\"card\" [id]=\"cost.name + i\"\n value=\"dark\" (click)=\"verifyValidate(costs,cost.name, contract)\">\n <label class=\"form-check-label\" [for]=\"cost.name + i\" aria-label=\"Dark grey\">\n @if(validName(contract.name)){\n\t\t\t\t\t\t\t\t\t\t\t<span\n [class]=\"(cost.name == 'home_delivery') ? 'shipment-contractname home_delivery' : 'shipment-contractname' \">\n\t\t\t\t\t\t\t\t\t\t\t\t{{ contract.name | translate }}\n\t\t\t\t\t\t\t\t\t\t\t</span>}\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.computed){\n\t\t\t\t\t\t\t\t\t\t\t\t<span><br class=\"shipment-contractname\">{{ contract.computed | translate }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<br class=\"shipment-contractname\">\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.detail){\n <div class=\"contract-detail\">\n\t\t\t\t\t\t\t\t\t\t\t\t@for(line of contract.detail.split(' - '); track $index; let i = $index){\n <div [class]=\"'contrat-item-'+i\">\n @if(i == 0){<span><b>{{ line }}</b></span>}\n @if(i > 0){<span class=\"inside-detail\">{{ line }}</span>}\n </div>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n </div>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.price > 0){\n <span [class]=\"'inside-detail ' + ( costos?.amount == 0 ? ' free ' : '') \">\n @if(!contract.computed){<br class=\"shipment-contractname\">}\n {{ ('price'|translate) + ': ' + (contract.price | ecCurrencySymbol) }}</span>\n\t\t\t\t\t\t\t\t\t\t\t}\n <br>\n </label>\n </div>\n </div>\n\t\t\t\t\t\t\t\t}\n \n\t\t\t\t\t\t\t}\n </div>\n\t\t\t\t\t\t}\n }@else {\n\t\t\t\t\t\t<app-loading-full-ec></app-loading-full-ec>\n\t\t\t\t\t}\n </div>\n\t\t\t\t}\n\t\t\t\t\n </div>\n\n\t\t</div>\n\t\t<div class=\"row d-flex flex-row\">\n\t\t\t<div class=\"col-12 d-flex justify-content-between\">\n\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\n\t\t\t\t<button type=\"submit\" (click)=\"next()\" [disabled]=\"!enabledConfirmButton\" class=\"btn btn-primary text-white\">{{(isLastOne\n\t\t\t\t\t? 'finish-checkout' :'ready-form') | translate}}\n\t\t\t\t\t<!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }] });
141
141
  }
142
142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ShipmentEcComponent, decorators: [{
143
143
  type: Component,
144
- args: [{ selector: 'app-shipment-ec', standalone: true, imports: [LoadingFullEcComponent, TranslateModule, AsyncPipe, EcCurrencySymbolPipe, JsonPipe], template: "<div class=\"container-fluid\">\r\n\t<div class=\"col-12\">\r\n\t\t<div class=\"card text-center\">\r\n\t\t\t<div class=\"card-header text-dark\">\r\n\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t@if(methods$ | async; as methods){\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for(method of filterMethods(methods); track $index){\r\n\t\t\t\t\t\t\t\t<button [disabled]=\"buttonsDisabled\" type=\"button\"\r\n\t\t\t\t\t\t\t\t\t[class]=\"'btn btn-outline-secondary mx-1 mb-1' + (isMethodActive(method.code) ? ' active' : '')\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"setMethod(method)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}@else {\r\n\t\t\t\t\t<div class=\"d-flex flex-row w-100 justify-content-center mt-2\">\r\n\t\t\t\t\t\t<h5 class=\"text-secondary\">{{'no-shipment-methods'|translate}}</h5>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"card-body\">\r\n\t\t\t\t@if(moreInfoInMethod && methodSelect && methodSelect.description){\r\n <div class=\"row justify-content-center mb-2\">\r\n <div class=\"col-12 col-md-6 col-lg-4 d-flex flex-column mb-2\" [id]=\"methodSelect.code\">\r\n @for(line of methodSelect.description.split('\\r\\n'); track $index; let i=$index){\r\n <span [id]=\"methodSelect.code+'-'+i\" [class]=\"'line-'+i\">{{line}}</span>\r\n\t\t\t\t\t }\r\n </div>\r\n </div>}\r\n\t\t\t\t@if(costs$ | async; as costs){\r\n<!-- \t\t\t\t @if(costs){ -->\r\n <div class=\"row justify-content-center\">\r\n @if(!loadingInternal){\r\n\t\t\t\t\t\t@for(cost of costs; track $index; let y = $index){\r\n <div class=\"col-auto text-dark\">\r\n\t\t\t\t\t\t\t@if(cost.contracts.length > 0){\r\n\t\t\t\t\t\t\t\t@if(costs.length > 1){\r\n\t\t\t\t\t\t\t\t\t<span><b>{{ cost.name | translate }}</b></span>\r\n\t\t\t\t\t\t\t\t\t<hr />\r\n\t\t\t\t\t\t\t\t}@else{\r\n\t\t\t\t\t\t\t\t\t<span><b>{{ methodSelect.name | translate }}</b></span>\r\n\t\t\t\t\t\t\t\t\t<hr />\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@for(contract of cost.contracts; track $index; let i = $index){\r\n <div class=\"option\">\r\n <div class=\"form-check current-contract\">\r\n <input class=\"form-check-input\" [checked]=\"(y === 0 && i === 0) ? true : contract.selected\" type=\"radio\" name=\"card\" [id]=\"cost.name + i\"\r\n value=\"dark\" (click)=\"verifyValidate(costs,cost.name, contract)\">\r\n <label class=\"form-check-label\" [for]=\"cost.name + i\" aria-label=\"Dark grey\">\r\n @if(validName(contract.name)){\r\n\t\t\t\t\t\t\t\t\t\t\t<span\r\n [class]=\"(cost.name == 'home_delivery') ? 'shipment-contractname home_delivery' : 'shipment-contractname' \">\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{ contract.name | translate }}\r\n\t\t\t\t\t\t\t\t\t\t\t</span>}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.computed){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span><br class=\"shipment-contractname\">{{ contract.computed | translate }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<br class=\"shipment-contractname\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.detail){\r\n <div class=\"contract-detail\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t@for(line of contract.detail.split(' - '); track $index; let i = $index){\r\n <div [class]=\"'contrat-item-'+i\">\r\n @if(i == 0){<span><b>{{ line }}</b></span>}\r\n @if(i > 0){<span class=\"inside-detail\">{{ line }}</span>}\r\n </div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.price > 0){\r\n <span [class]=\"'inside-detail ' + ( costos?.amount == 0 ? ' free ' : '') \">\r\n @if(!contract.computed){<br class=\"shipment-contractname\">}\r\n {{ ('price'|translate) + ': ' + (contract.price | ecCurrencySymbol) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n <br>\r\n </label>\r\n </div>\r\n </div>\r\n\t\t\t\t\t\t\t\t}\r\n \r\n\t\t\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t\t\t}\r\n }@else {\r\n\t\t\t\t\t\t<app-loading-full-ec></app-loading-full-ec>\r\n\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t}\r\n\t\t\t\t\r\n </div>\r\n\r\n\t\t</div>\r\n\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\r\n\t\t\t\t<button type=\"submit\" (click)=\"next()\" [disabled]=\"!enabledConfirmButton\" class=\"btn btn-primary text-white\">{{(isLastOne\r\n\t\t\t\t\t? 'finish-checkout' :'ready-form') | translate}}\r\n\t\t\t\t\t<!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n</div>" }]
144
+ args: [{ selector: 'app-shipment-ec', standalone: true, imports: [LoadingFullEcComponent, TranslateModule, AsyncPipe, EcCurrencySymbolPipe, JsonPipe], template: "<div class=\"container-fluid\">\n\t<div class=\"col-12\">\n\t\t<div class=\"card text-center\">\n\t\t\t<div class=\"card-header text-dark\">\n\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\n\t\t\t\t@if(methods$ | async; as methods){\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\n\t\t\t\t\t\t\t\t@for(method of filterMethods(methods); track $index){\n\t\t\t\t\t\t\t\t<button [disabled]=\"buttonsDisabled\" type=\"button\"\n\t\t\t\t\t\t\t\t\t[class]=\"'btn btn-outline-secondary mx-1 mb-1' + (isMethodActive(method.code) ? ' active' : '')\"\n\t\t\t\t\t\t\t\t\t(click)=\"setMethod(method)\">\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t}@else {\n\t\t\t\t\t<div class=\"d-flex flex-row w-100 justify-content-center mt-2\">\n\t\t\t\t\t\t<h5 class=\"text-secondary\">{{'no-shipment-methods'|translate}}</h5>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"card-body\">\n\t\t\t\t@if(moreInfoInMethod && methodSelect && methodSelect.description){\n <div class=\"row justify-content-center mb-2\">\n <div class=\"col-12 col-md-6 col-lg-4 d-flex flex-column mb-2\" [id]=\"methodSelect.code\">\n @for(line of methodSelect.description.split('\\r\\n'); track $index; let i=$index){\n <span [id]=\"methodSelect.code+'-'+i\" [class]=\"'line-'+i\">{{line}}</span>\n\t\t\t\t\t }\n </div>\n </div>}\n\t\t\t\t@if(costs$ | async; as costs){\n<!-- \t\t\t\t @if(costs){ -->\n <div class=\"row justify-content-center\">\n @if(!loadingInternal){\n\t\t\t\t\t\t@for(cost of costs; track $index; let y = $index){\n <div class=\"col-auto text-dark\">\n\t\t\t\t\t\t\t@if(cost.contracts.length > 0){\n\t\t\t\t\t\t\t\t@if(costs.length > 1){\n\t\t\t\t\t\t\t\t\t<span><b>{{ cost.name | translate }}</b></span>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t}@else{\n\t\t\t\t\t\t\t\t\t<span><b>{{ methodSelect.name | translate }}</b></span>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@for(contract of cost.contracts; track $index; let i = $index){\n <div class=\"option\">\n <div class=\"form-check current-contract\">\n <input class=\"form-check-input\" [checked]=\"(y === 0 && i === 0) ? true : contract.selected\" type=\"radio\" name=\"card\" [id]=\"cost.name + i\"\n value=\"dark\" (click)=\"verifyValidate(costs,cost.name, contract)\">\n <label class=\"form-check-label\" [for]=\"cost.name + i\" aria-label=\"Dark grey\">\n @if(validName(contract.name)){\n\t\t\t\t\t\t\t\t\t\t\t<span\n [class]=\"(cost.name == 'home_delivery') ? 'shipment-contractname home_delivery' : 'shipment-contractname' \">\n\t\t\t\t\t\t\t\t\t\t\t\t{{ contract.name | translate }}\n\t\t\t\t\t\t\t\t\t\t\t</span>}\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.computed){\n\t\t\t\t\t\t\t\t\t\t\t\t<span><br class=\"shipment-contractname\">{{ contract.computed | translate }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<br class=\"shipment-contractname\">\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.detail){\n <div class=\"contract-detail\">\n\t\t\t\t\t\t\t\t\t\t\t\t@for(line of contract.detail.split(' - '); track $index; let i = $index){\n <div [class]=\"'contrat-item-'+i\">\n @if(i == 0){<span><b>{{ line }}</b></span>}\n @if(i > 0){<span class=\"inside-detail\">{{ line }}</span>}\n </div>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n </div>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.price > 0){\n <span [class]=\"'inside-detail ' + ( costos?.amount == 0 ? ' free ' : '') \">\n @if(!contract.computed){<br class=\"shipment-contractname\">}\n {{ ('price'|translate) + ': ' + (contract.price | ecCurrencySymbol) }}</span>\n\t\t\t\t\t\t\t\t\t\t\t}\n <br>\n </label>\n </div>\n </div>\n\t\t\t\t\t\t\t\t}\n \n\t\t\t\t\t\t\t}\n </div>\n\t\t\t\t\t\t}\n }@else {\n\t\t\t\t\t\t<app-loading-full-ec></app-loading-full-ec>\n\t\t\t\t\t}\n </div>\n\t\t\t\t}\n\t\t\t\t\n </div>\n\n\t\t</div>\n\t\t<div class=\"row d-flex flex-row\">\n\t\t\t<div class=\"col-12 d-flex justify-content-between\">\n\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\n\t\t\t\t<button type=\"submit\" (click)=\"next()\" [disabled]=\"!enabledConfirmButton\" class=\"btn btn-primary text-white\">{{(isLastOne\n\t\t\t\t\t? 'finish-checkout' :'ready-form') | translate}}\n\t\t\t\t\t<!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n</div>" }]
145
145
  }], ctorParameters: () => [] });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvc2hpcG1lbnQtZWMvc2hpcG1lbnQtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvc2hpcG1lbnQtZWMvc2hpcG1lbnQtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQVV4RCxNQUFNLE9BQU8sbUJBQW1CO0lBRXBCLGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDM0QsZ0JBQWdCLEdBQW9CLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUU1RCxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUMxQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztJQUNoRCxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztJQUVyQyxj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LENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUk7UUFDQSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDaEMsQ0FBQzt3R0F0SlEsbUJBQW1COzRGQUFuQixtQkFBbUIsMkVDZmhDLG82TEE0R00sMEREL0ZRLHNCQUFzQiwrREFBRSxlQUFlLHVGQUFFLFNBQVMseUNBQUUsb0JBQW9COzs0RkFFekUsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNJLGlCQUFpQixjQUNmLElBQUksV0FHUCxDQUFDLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2FkaW5nRnVsbEVjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy1lYyc7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSwgSnNvblBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UsIFNoaXBtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgRWNDdXJyZW5jeVN5bWJvbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9lYy1waXBlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1zaGlwbWVudC1lYycsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NoaXBtZW50LWVjLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NoaXBtZW50LWVjLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBpbXBvcnRzOiBbTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlLCBBc3luY1BpcGUsIEVjQ3VycmVuY3lTeW1ib2xQaXBlLCBKc29uUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNoaXBtZW50RWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIHByaXZhdGUgX3NoaXBtZW50U2VydmljZTogU2hpcG1lbnRTZXJ2aWNlID0gaW5qZWN0KFNoaXBtZW50U2VydmljZSlcclxuICAgIHByaXZhdGUgX2NoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlID0gaW5qZWN0KENoZWNrb3V0U2VydmljZSlcclxuXHJcbiAgICBwdWJsaWMgbWV0aG9kcyQgPSB0aGlzLl9zaGlwbWVudFNlcnZpY2UubWV0aG9kcyQ7XHJcbiAgICBwdWJsaWMgaXNMYXN0U3RlcCQgPSB0aGlzLl9jaGVja291dFNlcnZpY2UuaXNMYXN0U3RlcCQ7XHJcbiAgICBwdWJsaWMgc3RhdGUkID0gdGhpcy5fc2hpcG1lbnRTZXJ2aWNlLnN0YXRlJDtcclxuXHJcbiAgICBwcml2YXRlIF9oaWRkZW5NZXRob2RzOiBzdHJpbmdbXSA9IFsnVVBTJ11cclxuICAgIHB1YmxpYyBidXR0b25zRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICAgcHVibGljIG1ldGhvZFNlbGVjdDogYW55OyAvLyBFc3RlIGd1YXJkYXLDoSBlbCBvYmpldG8gY29tcGxldG8gZGVsIG3DqXRvZG9cclxuICAgIHB1YmxpYyBzZWxlY3RlZE1ldGhvZENvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyA8LS0gQcOxYWRpZG8gcGFyYSB0cmFja2luZ1xyXG4gICAgcHVibGljIGxvYWRpbmdJbnRlcm5hbDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICBwdWJsaWMgbW9yZUluZm9Jbk1ldGhvZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNvc3RvczogYW55ID0gbnVsbFxyXG4gICAgcHVibGljIGNvc3RzJDogT2JzZXJ2YWJsZTxhbnlbXT4gPSB0aGlzLl9zaGlwbWVudFNlcnZpY2UuY29zdHMkO1xyXG4gICAgcHVibGljIGlzTGFzdE9uZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGVuYWJsZWRDb25maXJtQnV0dG9uOiBib29sZWFuID0gZmFsc2VcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmlzTGFzdFN0ZXAkLnN1YnNjcmliZShyZXMgPT4gdGhpcy5pc0xhc3RPbmUgPSByZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCc9PT0gU0hJUE1FTlQgQ09NUE9ORU5UIElOSVQgPT09Jyk7XHJcbiAgICAgICAgdGhpcy5fc2hpcG1lbnRTZXJ2aWNlLmdldFNoaXBtZW50TWV0aG9kcygpO1xyXG5cclxuICAgICAgICB0aGlzLl9jaGVja291dFNlcnZpY2UuYXNzb2NpYXRlZERhdGEkLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb3N0b3MgPSBkYXRhICYmIGRhdGEuZmluZCgodmFsdWU6IGFueSkgPT4gdmFsdWUudHlwZSA9PSBcInNoaXBtZW50XCIpIHx8IG51bGxcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICAvLyBTdXNjcmlwY2nDs24gYWwgZXN0YWRvIHBhcmEgb2J0ZW5lciBlbCBtw6l0b2RvIHNlbGVjY2lvbmFkb1xyXG4gICAgICAgIHRoaXMuc3RhdGUkLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEubWV0aG9kKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWV0aG9kQ29kZSA9IHJlcy5kYXRhLm1ldGhvZDsgLy8gPC0tIFRyYWNraW5nIGRlbCBtw6l0b2RvIHNlbGVjY2lvbmFkb1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE9idGVuZXIgZWwgb2JqZXRvIGNvbXBsZXRvIGRlbCBtw6l0b2RvIGJhc2FkbyBlbiBlbCBjw7NkaWdvXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHMkLnN1YnNjcmliZShtZXRob2RzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kcyAmJiBtZXRob2RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm91bmRNZXRob2QgPSBtZXRob2RzLmZpbmQoKG1ldGhvZDogYW55KSA9PiBtZXRob2QuY29kZSA9PT0gcmVzLmRhdGEubWV0aG9kKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kTWV0aG9kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZFNlbGVjdCA9IGZvdW5kTWV0aG9kO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5tb3JlSW5mb0luTWV0aG9kID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJNZXRob2RzKG1ldGhvZHM6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBtZXRob2RzLmZpbHRlcigobWV0aG9kOiBhbnkpID0+ICF0aGlzLl9oaWRkZW5NZXRob2RzLmluY2x1ZGVzKG1ldGhvZC5uYW1lKSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbWJpbmEgbGFzIGZ1bmNpb25lcyBkZSBzZXRBY3RpdmUgeSBzZXRNZXRob2QgcGFyYSB1bmEgbWVqb3IgZXhwZXJpZW5jaWFcclxuICAgICAqIEBwYXJhbSBtZXRob2QgTcOpdG9kbyBkZSBlbnbDrW8gc2VsZWNjaW9uYWRvXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgRXZlbnRvIGRlbCBib3TDs24gY2xpY2tlYWRvXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIHNlbGVjdE1ldGhvZChtZXRob2Q6IGFueSwgZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIC8vIE1hbmVqYXIgbGEgY2xhc2UgYWN0aXZlXHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVCdXR0b24oZXZlbnQpO1xyXG5cclxuICAgICAgICAvLyBFc3RhYmxlY2VyIGVsIG3DqXRvZG9cclxuICAgICAgICBhd2FpdCB0aGlzLnNldE1ldGhvZChtZXRob2QpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFuZWphIGxhIGNsYXNlIC5hY3RpdmUgZGUgbG9zIGJvdG9uZXNcclxuICAgICAqIEBwYXJhbSBldmVudCBFdmVudG8gZGVsIGJvdMOzbiBjbGlja2VhZG9cclxuICAgICAqL1xyXG4gICAgc2V0QWN0aXZlQnV0dG9uKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBjb25zdCBwYXJlbnQgPSBldmVudC50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZHJlbjtcclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlciBhY3RpdmUgZGUgdG9kb3MgbG9zIGJvdG9uZXNcclxuICAgICAgICBmb3IgKGNvbnN0IGJ1dHRvbiBvZiBwYXJlbnQpIHtcclxuICAgICAgICAgICAgaWYgKGJ1dHRvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZScpKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQcOxYWRpciBhY3RpdmUgYWwgYm90w7NuIGNsaWNrZWFkb1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTcOpdG9kbyBvcmlnaW5hbCBtYW50ZW5pZG8gcGFyYSBjb21wYXRpYmlsaWRhZFxyXG4gICAgICovXHJcbiAgICBzZXRBY3RpdmUoJGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLnNldEFjdGl2ZUJ1dHRvbigkZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2kgdW4gbcOpdG9kbyBlc3TDoSBhY3Rpdm8gYmFzYWRvIGVuIHN1IGPDs2RpZ29cclxuICAgICAqIEBwYXJhbSBtZXRob2RDb2RlIEPDs2RpZ28gZGVsIG3DqXRvZG8gZGUgZW52w61vXHJcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGVsIG3DqXRvZG8gZXN0w6Egc2VsZWNjaW9uYWRvXHJcbiAgICAgKi9cclxuICAgIGlzTWV0aG9kQWN0aXZlKG1ldGhvZENvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTWV0aG9kQ29kZSA9PT0gbWV0aG9kQ29kZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRNZXRob2QobWV0aG9kOiBhbnkpIHtcclxuICAgICAgICAvLyBHdWFyZGFyIGVsIG9iamV0byBjb21wbGV0byBkZWwgbcOpdG9kb1xyXG4gICAgICAgIHRoaXMubWV0aG9kU2VsZWN0ID0gbWV0aG9kO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZXRob2RDb2RlID0gbWV0aG9kLmNvZGU7IC8vIDwtLSBBY3R1YWxpemFyIHRyYWNraW5nXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nSW50ZXJuYWwgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBEZXNoYWJpbGl0YXIgdG9kb3MgbG9zIGJvdG9uZXNcclxuICAgICAgICB0aGlzLmJ1dHRvbnNEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lbmFibGVkQ29uZmlybUJ1dHRvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAvLyBFbnZpYXIgc29sbyBlbCBjw7NkaWdvIGFsIHNlcnZpY2lvIChjb21vIGVzdGFiYSBhbnRlcylcclxuICAgICAgICB0aGlzLl9zaGlwbWVudFNlcnZpY2Uuc2V0TWV0aG9kKG1ldGhvZC5jb2RlKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0ludGVybmFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZENvbmZpcm1CdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmJ1dHRvbnNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nSW50ZXJuYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5idXR0b25zRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB2YWxpZE5hbWUobmFtZTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIGlzTmFOKG5hbWUpO1xyXG4gICAgfVxyXG4gICAgZW1pdFJlc3VsdCA9IChtZXRob2RfbmFtZTogc3RyaW5nLCBjb250cmFjdF9kYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBjb250cmFjdF9kYXRhID0ge1xyXG4gICAgICAgICAgICAuLi5jb250cmFjdF9kYXRhLFxyXG4gICAgICAgICAgICBzaGlwcGluZ19tZXRob2RfY29udHJhY3Q6IG1ldGhvZF9uYW1lICsgJ18nICsgY29udHJhY3RfZGF0YS5uYW1lLFxyXG4gICAgICAgICAgICBzaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGU6IG1ldGhvZF9uYW1lID09IFwiYnJhbmNoX2RlbGl2ZXJ5XCIgPyBjb250cmFjdF9kYXRhLnN1Y3Vyc2FsX2lkIDogY29udHJhY3RfZGF0YS5uYW1lLFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zaGlwbWVudFNlcnZpY2Uuc2V0Q29udHJhY3QoY29udHJhY3RfZGF0YSk7XHJcbiAgICB9XHJcbiAgICB2ZXJpZnlWYWxpZGF0ZShjb3N0czogYW55W10sIGNvbnRyYWN0OiBhbnksIGRhdGE6IGFueSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvc3RzLmZvckVhY2goKGNvc3Q6IGFueSkgPT4gY29zdC5jb250cmFjdHMuZm9yRWFjaCgoY286IGFueSkgPT4gY28uc2VsZWN0ZWQgPSBmYWxzZSkpXHJcbiAgICAgICAgICAgIGNvc3RzLmZpbmQoKGNvc3Q6IGFueSkgPT4gY29zdC5uYW1lID09IGNvbnRyYWN0KS5jb250cmFjdHMuZmluZCgoY29udHJhOiBhbnkpID0+IGNvbnRyYS5uYW1lID09IGRhdGEubmFtZSkuc2VsZWN0ZWQgPSB0cnVlXHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBhbCBidXNjYXIgY29udHJhdG9cIiwgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXRSZXN1bHQoY29udHJhY3QsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGdvQmFjaygpIHtcclxuICAgICAgICB0aGlzLl9jaGVja291dFNlcnZpY2UuYmFjaygpO1xyXG4gICAgfVxyXG4gICAgbmV4dCgpIHtcclxuICAgICAgICB0aGlzLl9jaGVja291dFNlcnZpY2UubmV4dCgpXHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJjYXJkIHRleHQtY2VudGVyXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciB0ZXh0LWRhcmtcIj5cclxuXHRcdFx0XHQ8aDQ+e3sgJ3NlbGVjdC1tZXRob2QnIHwgdHJhbnNsYXRlIH19PC9oND5cclxuXHRcdFx0XHRAaWYobWV0aG9kcyQgfCBhc3luYzsgYXMgbWV0aG9kcyl7XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLXRvb2xiYXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiIHJvbGU9XCJ0b29sYmFyXCIgYXJpYS1sYWJlbD1cIkVudmlvcyB0b29sYmFyXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiR3J1cG8gYm90b25lcyBlbnZpb1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24tY29udGVudC1zdGFydCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtd3JhcFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0QGZvcihtZXRob2Qgb2YgZmlsdGVyTWV0aG9kcyhtZXRob2RzKTsgdHJhY2sgJGluZGV4KXtcclxuXHRcdFx0XHRcdFx0XHRcdDxidXR0b24gW2Rpc2FibGVkXT1cImJ1dHRvbnNEaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbY2xhc3NdPVwiJ2J0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgbXgtMSBtYi0xJyArIChpc01ldGhvZEFjdGl2ZShtZXRob2QuY29kZSkgPyAnIGFjdGl2ZScgOiAnJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwic2V0TWV0aG9kKG1ldGhvZClcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0e3sgbWV0aG9kLm5hbWUgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdH1AZWxzZSB7XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IHctMTAwIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMlwiPlxyXG5cdFx0XHRcdFx0XHQ8aDUgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPnt7J25vLXNoaXBtZW50LW1ldGhvZHMnfHRyYW5zbGF0ZX19PC9oNT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuXHRcdFx0XHRAaWYobW9yZUluZm9Jbk1ldGhvZCAmJiBtZXRob2RTZWxlY3QgJiYgbWV0aG9kU2VsZWN0LmRlc2NyaXB0aW9uKXtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBjb2wtbGctNCBkLWZsZXggZmxleC1jb2x1bW4gbWItMlwiIFtpZF09XCJtZXRob2RTZWxlY3QuY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQGZvcihsaW5lIG9mIG1ldGhvZFNlbGVjdC5kZXNjcmlwdGlvbi5zcGxpdCgnXFxyXFxuJyk7IHRyYWNrICRpbmRleDsgbGV0IGk9JGluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lkXT1cIm1ldGhvZFNlbGVjdC5jb2RlKyctJytpXCIgW2NsYXNzXT1cIidsaW5lLScraVwiPnt7bGluZX19PC9zcGFuPlxyXG5cdFx0XHRcdFx0ICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj59XHJcblx0XHRcdFx0QGlmKGNvc3RzJCB8IGFzeW5jOyBhcyBjb3N0cyl7XHJcbjwhLS0gXHRcdFx0XHQgQGlmKGNvc3RzKXsgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoIWxvYWRpbmdJbnRlcm5hbCl7XHJcblx0XHRcdFx0XHRcdEBmb3IoY29zdCBvZiBjb3N0czsgdHJhY2sgJGluZGV4OyBsZXQgeSA9ICRpbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0byB0ZXh0LWRhcmtcIj5cclxuXHRcdFx0XHRcdFx0XHRAaWYoY29zdC5jb250cmFjdHMubGVuZ3RoID4gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYoY29zdHMubGVuZ3RoID4gMSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPjxiPnt7IGNvc3QubmFtZSB8IHRyYW5zbGF0ZSB9fTwvYj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxociAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0fUBlbHNle1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj48Yj57eyBtZXRob2RTZWxlY3QubmFtZSB8IHRyYW5zbGF0ZSB9fTwvYj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxociAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0QGZvcihjb250cmFjdCBvZiBjb3N0LmNvbnRyYWN0czsgdHJhY2sgJGluZGV4OyBsZXQgaSA9ICRpbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBjdXJyZW50LWNvbnRyYWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgW2NoZWNrZWRdPVwiKHkgPT09IDAgJiYgaSA9PT0gMCkgPyB0cnVlIDogY29udHJhY3Quc2VsZWN0ZWRcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiY2FyZFwiIFtpZF09XCJjb3N0Lm5hbWUgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImRhcmtcIiAoY2xpY2spPVwidmVyaWZ5VmFsaWRhdGUoY29zdHMsY29zdC5uYW1lLCBjb250cmFjdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cImNvc3QubmFtZSArIGlcIiBhcmlhLWxhYmVsPVwiRGFyayBncmV5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHZhbGlkTmFtZShjb250cmFjdC5uYW1lKSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiKGNvc3QubmFtZSA9PSAnaG9tZV9kZWxpdmVyeScpID8gJ3NoaXBtZW50LWNvbnRyYWN0bmFtZSBob21lX2RlbGl2ZXJ5JyA6ICdzaGlwbWVudC1jb250cmFjdG5hbWUnIFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7eyBjb250cmFjdC5uYW1lIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKGNvbnRyYWN0LmNvbXB1dGVkKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4+PGJyIGNsYXNzPVwic2hpcG1lbnQtY29udHJhY3RuYW1lXCI+e3sgY29udHJhY3QuY29tcHV0ZWQgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnIgY2xhc3M9XCJzaGlwbWVudC1jb250cmFjdG5hbWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKGNvbnRyYWN0LmRldGFpbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyYWN0LWRldGFpbFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAZm9yKGxpbmUgb2YgY29udHJhY3QuZGV0YWlsLnNwbGl0KCcgLSAnKTsgdHJhY2sgJGluZGV4OyBsZXQgaSA9ICRpbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidjb250cmF0LWl0ZW0tJytpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoaSA9PSAwKXs8c3Bhbj48Yj57eyBsaW5lIH19PC9iPjwvc3Bhbj59XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoaSA+IDApezxzcGFuIGNsYXNzPVwiaW5zaWRlLWRldGFpbFwiPnt7IGxpbmUgfX08L3NwYW4+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKGNvbnRyYWN0LnByaWNlID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIidpbnNpZGUtZGV0YWlsICcgKyAoIGNvc3Rvcz8uYW1vdW50ID09IDAgPyAnIGZyZWUgJyA6ICcnKSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCFjb250cmFjdC5jb21wdXRlZCl7PGJyIGNsYXNzPVwic2hpcG1lbnQtY29udHJhY3RuYW1lXCI+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAoJ3ByaWNlJ3x0cmFuc2xhdGUpICsgJzogJyArIChjb250cmFjdC5wcmljZSB8IGVjQ3VycmVuY3lTeW1ib2wpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblx0XHRcdFx0XHRcdFx0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG4gICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcblx0XHRcdFx0XHRcdDxhcHAtbG9hZGluZy1mdWxsLWVjPjwvYXBwLWxvYWRpbmctZnVsbC1lYz5cclxuXHRcdFx0XHRcdH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwicm93IGQtZmxleCBmbGV4LXJvd1wiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cdFx0XHRcdDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdGV4dC13aGl0ZVwiIChjbGljayk9XCJnb0JhY2soKVwiPnt7J2JhY2snfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cIm5leHQoKVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZENvbmZpcm1CdXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB0ZXh0LXdoaXRlXCI+e3soaXNMYXN0T25lXHJcblx0XHRcdFx0XHQ/ICdmaW5pc2gtY2hlY2tvdXQnIDoncmVhZHktZm9ybScpIHwgdHJhbnNsYXRlfX1cclxuXHRcdFx0XHRcdDwhLS0ge3soYWxscmVhZHlfZGF0YSA/ICd1cGRhdGUnIDogKGlzTGFzdE9uZSA/ICdmaW5pc2gtY2hlY2tvdXQnIDogJ3JlYWR5LWZvcm0nKSkgfCB0cmFuc2xhdGV9fSAgLS0+XHJcblx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvc2hpcG1lbnQtZWMvc2hpcG1lbnQtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvc2hpcG1lbnQtZWMvc2hpcG1lbnQtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQVV4RCxNQUFNLE9BQU8sbUJBQW1CO0lBRXBCLGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDM0QsZ0JBQWdCLEdBQW9CLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUU1RCxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUMxQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztJQUNoRCxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztJQUVyQyxj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LENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUk7UUFDQSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDaEMsQ0FBQzt3R0F0SlEsbUJBQW1COzRGQUFuQixtQkFBbUIsMkVDZmhDLDRzTEE0R00sMEREL0ZRLHNCQUFzQiwrREFBRSxlQUFlLHVGQUFFLFNBQVMseUNBQUUsb0JBQW9COzs0RkFFekUsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNJLGlCQUFpQixjQUNmLElBQUksV0FHUCxDQUFDLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IExvYWRpbmdGdWxsRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzLWVjJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgSnNvblBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlLCBTaGlwbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBFY0N1cnJlbmN5U3ltYm9sUGlwZSB9IGZyb20gJy4uLy4uLy4uL2VjLXBpcGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1zaGlwbWVudC1lYycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2hpcG1lbnQtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NoaXBtZW50LWVjLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW0xvYWRpbmdGdWxsRWNDb21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZSwgQXN5bmNQaXBlLCBFY0N1cnJlbmN5U3ltYm9sUGlwZSwgSnNvblBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFNoaXBtZW50RWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgcHJpdmF0ZSBfc2hpcG1lbnRTZXJ2aWNlOiBTaGlwbWVudFNlcnZpY2UgPSBpbmplY3QoU2hpcG1lbnRTZXJ2aWNlKVxuICAgIHByaXZhdGUgX2NoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlID0gaW5qZWN0KENoZWNrb3V0U2VydmljZSlcblxuICAgIHB1YmxpYyBtZXRob2RzJCA9IHRoaXMuX3NoaXBtZW50U2VydmljZS5tZXRob2RzJDtcbiAgICBwdWJsaWMgaXNMYXN0U3RlcCQgPSB0aGlzLl9jaGVja291dFNlcnZpY2UuaXNMYXN0U3RlcCQ7XG4gICAgcHVibGljIHN0YXRlJCA9IHRoaXMuX3NoaXBtZW50U2VydmljZS5zdGF0ZSQ7XG5cbiAgICBwcml2YXRlIF9oaWRkZW5NZXRob2RzOiBzdHJpbmdbXSA9IFsnVVBTJ11cbiAgICBwdWJsaWMgYnV0dG9uc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2VcbiAgICBwdWJsaWMgbWV0aG9kU2VsZWN0OiBhbnk7IC8vIEVzdGUgZ3VhcmRhcsOhIGVsIG9iamV0byBjb21wbGV0byBkZWwgbcOpdG9kb1xuICAgIHB1YmxpYyBzZWxlY3RlZE1ldGhvZENvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyA8LS0gQcOxYWRpZG8gcGFyYSB0cmFja2luZ1xuICAgIHB1YmxpYyBsb2FkaW5nSW50ZXJuYWw6IGJvb2xlYW4gPSBmYWxzZVxuICAgIHB1YmxpYyBtb3JlSW5mb0luTWV0aG9kOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGNvc3RvczogYW55ID0gbnVsbFxuICAgIHB1YmxpYyBjb3N0cyQ6IE9ic2VydmFibGU8YW55W10+ID0gdGhpcy5fc2hpcG1lbnRTZXJ2aWNlLmNvc3RzJDtcbiAgICBwdWJsaWMgaXNMYXN0T25lOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGVuYWJsZWRDb25maXJtQnV0dG9uOiBib29sZWFuID0gZmFsc2VcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmlzTGFzdFN0ZXAkLnN1YnNjcmliZShyZXMgPT4gdGhpcy5pc0xhc3RPbmUgPSByZXMpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zb2xlLmxvZygnPT09IFNISVBNRU5UIENPTVBPTkVOVCBJTklUID09PScpO1xuICAgICAgICB0aGlzLl9zaGlwbWVudFNlcnZpY2UuZ2V0U2hpcG1lbnRNZXRob2RzKCk7XG5cbiAgICAgICAgdGhpcy5fY2hlY2tvdXRTZXJ2aWNlLmFzc29jaWF0ZWREYXRhJC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvc3RvcyA9IGRhdGEgJiYgZGF0YS5maW5kKCh2YWx1ZTogYW55KSA9PiB2YWx1ZS50eXBlID09IFwic2hpcG1lbnRcIikgfHwgbnVsbFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFN1c2NyaXBjacOzbiBhbCBlc3RhZG8gcGFyYSBvYnRlbmVyIGVsIG3DqXRvZG8gc2VsZWNjaW9uYWRvXG4gICAgICAgIHRoaXMuc3RhdGUkLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhLm1ldGhvZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZXRob2RDb2RlID0gcmVzLmRhdGEubWV0aG9kOyAvLyA8LS0gVHJhY2tpbmcgZGVsIG3DqXRvZG8gc2VsZWNjaW9uYWRvXG5cbiAgICAgICAgICAgICAgICAvLyBPYnRlbmVyIGVsIG9iamV0byBjb21wbGV0byBkZWwgbcOpdG9kbyBiYXNhZG8gZW4gZWwgY8OzZGlnb1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kcyQuc3Vic2NyaWJlKG1ldGhvZHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kcyAmJiBtZXRob2RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kTWV0aG9kID0gbWV0aG9kcy5maW5kKChtZXRob2Q6IGFueSkgPT4gbWV0aG9kLmNvZGUgPT09IHJlcy5kYXRhLm1ldGhvZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRNZXRob2QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZFNlbGVjdCA9IGZvdW5kTWV0aG9kO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubW9yZUluZm9Jbk1ldGhvZCA9IHRydWU7XG4gICAgfVxuXG4gICAgZmlsdGVyTWV0aG9kcyhtZXRob2RzOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIG1ldGhvZHMuZmlsdGVyKChtZXRob2Q6IGFueSkgPT4gIXRoaXMuX2hpZGRlbk1ldGhvZHMuaW5jbHVkZXMobWV0aG9kLm5hbWUpKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbWJpbmEgbGFzIGZ1bmNpb25lcyBkZSBzZXRBY3RpdmUgeSBzZXRNZXRob2QgcGFyYSB1bmEgbWVqb3IgZXhwZXJpZW5jaWFcbiAgICAgKiBAcGFyYW0gbWV0aG9kIE3DqXRvZG8gZGUgZW52w61vIHNlbGVjY2lvbmFkb1xuICAgICAqIEBwYXJhbSBldmVudCBFdmVudG8gZGVsIGJvdMOzbiBjbGlja2VhZG9cbiAgICAgKi9cbiAgICBhc3luYyBzZWxlY3RNZXRob2QobWV0aG9kOiBhbnksIGV2ZW50OiBhbnkpIHtcbiAgICAgICAgLy8gTWFuZWphciBsYSBjbGFzZSBhY3RpdmVcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVCdXR0b24oZXZlbnQpO1xuXG4gICAgICAgIC8vIEVzdGFibGVjZXIgZWwgbcOpdG9kb1xuICAgICAgICBhd2FpdCB0aGlzLnNldE1ldGhvZChtZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmVqYSBsYSBjbGFzZSAuYWN0aXZlIGRlIGxvcyBib3RvbmVzXG4gICAgICogQHBhcmFtIGV2ZW50IEV2ZW50byBkZWwgYm90w7NuIGNsaWNrZWFkb1xuICAgICAqL1xuICAgIHNldEFjdGl2ZUJ1dHRvbihldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgICAgIC8vIFJlbW92ZXIgYWN0aXZlIGRlIHRvZG9zIGxvcyBib3RvbmVzXG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIHBhcmVudCkge1xuICAgICAgICAgICAgaWYgKGJ1dHRvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZScpKSB7XG4gICAgICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBw7FhZGlyIGFjdGl2ZSBhbCBib3TDs24gY2xpY2tlYWRvXG4gICAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE3DqXRvZG8gb3JpZ2luYWwgbWFudGVuaWRvIHBhcmEgY29tcGF0aWJpbGlkYWRcbiAgICAgKi9cbiAgICBzZXRBY3RpdmUoJGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVCdXR0b24oJGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmljYSBzaSB1biBtw6l0b2RvIGVzdMOhIGFjdGl2byBiYXNhZG8gZW4gc3UgY8OzZGlnb1xuICAgICAqIEBwYXJhbSBtZXRob2RDb2RlIEPDs2RpZ28gZGVsIG3DqXRvZG8gZGUgZW52w61vXG4gICAgICogQHJldHVybnMgdHJ1ZSBzaSBlbCBtw6l0b2RvIGVzdMOhIHNlbGVjY2lvbmFkb1xuICAgICAqL1xuICAgIGlzTWV0aG9kQWN0aXZlKG1ldGhvZENvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE1ldGhvZENvZGUgPT09IG1ldGhvZENvZGU7XG4gICAgfVxuXG4gICAgc2V0TWV0aG9kKG1ldGhvZDogYW55KSB7XG4gICAgICAgIC8vIEd1YXJkYXIgZWwgb2JqZXRvIGNvbXBsZXRvIGRlbCBtw6l0b2RvXG4gICAgICAgIHRoaXMubWV0aG9kU2VsZWN0ID0gbWV0aG9kO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTWV0aG9kQ29kZSA9IG1ldGhvZC5jb2RlOyAvLyA8LS0gQWN0dWFsaXphciB0cmFja2luZ1xuICAgICAgICB0aGlzLmxvYWRpbmdJbnRlcm5hbCA9IHRydWU7XG5cbiAgICAgICAgLy8gRGVzaGFiaWxpdGFyIHRvZG9zIGxvcyBib3RvbmVzXG4gICAgICAgIHRoaXMuYnV0dG9uc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lbmFibGVkQ29uZmlybUJ1dHRvbiA9IGZhbHNlO1xuXG4gICAgICAgIC8vIEVudmlhciBzb2xvIGVsIGPDs2RpZ28gYWwgc2VydmljaW8gKGNvbW8gZXN0YWJhIGFudGVzKVxuICAgICAgICB0aGlzLl9zaGlwbWVudFNlcnZpY2Uuc2V0TWV0aG9kKG1ldGhvZC5jb2RlKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdJbnRlcm5hbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5lbmFibGVkQ29uZmlybUJ1dHRvbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbnNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdJbnRlcm5hbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5idXR0b25zRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFsaWROYW1lKG5hbWU6IGFueSkge1xuICAgICAgICByZXR1cm4gaXNOYU4obmFtZSk7XG4gICAgfVxuICAgIGVtaXRSZXN1bHQgPSAobWV0aG9kX25hbWU6IHN0cmluZywgY29udHJhY3RfZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGNvbnRyYWN0X2RhdGEgPSB7XG4gICAgICAgICAgICAuLi5jb250cmFjdF9kYXRhLFxuICAgICAgICAgICAgc2hpcHBpbmdfbWV0aG9kX2NvbnRyYWN0OiBtZXRob2RfbmFtZSArICdfJyArIGNvbnRyYWN0X2RhdGEubmFtZSxcbiAgICAgICAgICAgIHNoaXBwaW5nX21ldGhvZF9icmFuY2hfY29kZTogbWV0aG9kX25hbWUgPT0gXCJicmFuY2hfZGVsaXZlcnlcIiA/IGNvbnRyYWN0X2RhdGEuc3VjdXJzYWxfaWQgOiBjb250cmFjdF9kYXRhLm5hbWUsXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hpcG1lbnRTZXJ2aWNlLnNldENvbnRyYWN0KGNvbnRyYWN0X2RhdGEpO1xuICAgIH1cbiAgICB2ZXJpZnlWYWxpZGF0ZShjb3N0czogYW55W10sIGNvbnRyYWN0OiBhbnksIGRhdGE6IGFueSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29zdHMuZm9yRWFjaCgoY29zdDogYW55KSA9PiBjb3N0LmNvbnRyYWN0cy5mb3JFYWNoKChjbzogYW55KSA9PiBjby5zZWxlY3RlZCA9IGZhbHNlKSlcbiAgICAgICAgICAgIGNvc3RzLmZpbmQoKGNvc3Q6IGFueSkgPT4gY29zdC5uYW1lID09IGNvbnRyYWN0KS5jb250cmFjdHMuZmluZCgoY29udHJhOiBhbnkpID0+IGNvbnRyYS5uYW1lID09IGRhdGEubmFtZSkuc2VsZWN0ZWQgPSB0cnVlXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGFsIGJ1c2NhciBjb250cmF0b1wiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0UmVzdWx0KGNvbnRyYWN0LCBkYXRhKTtcbiAgICB9XG5cbiAgICBnb0JhY2soKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrb3V0U2VydmljZS5iYWNrKCk7XG4gICAgfVxuICAgIG5leHQoKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrb3V0U2VydmljZS5uZXh0KClcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG5cdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cblx0XHQ8ZGl2IGNsYXNzPVwiY2FyZCB0ZXh0LWNlbnRlclwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHRleHQtZGFya1wiPlxuXHRcdFx0XHQ8aDQ+e3sgJ3NlbGVjdC1tZXRob2QnIHwgdHJhbnNsYXRlIH19PC9oND5cblx0XHRcdFx0QGlmKG1ldGhvZHMkIHwgYXN5bmM7IGFzIG1ldGhvZHMpe1xuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJidG4tdG9vbGJhciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgcm9sZT1cInRvb2xiYXJcIiBhcmlhLWxhYmVsPVwiRW52aW9zIHRvb2xiYXJcIj5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiR3J1cG8gYm90b25lcyBlbnZpb1wiPlxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNvbnRlbnQtc3RhcnQganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXBcIj5cblx0XHRcdFx0XHRcdFx0XHRAZm9yKG1ldGhvZCBvZiBmaWx0ZXJNZXRob2RzKG1ldGhvZHMpOyB0cmFjayAkaW5kZXgpe1xuXHRcdFx0XHRcdFx0XHRcdDxidXR0b24gW2Rpc2FibGVkXT1cImJ1dHRvbnNEaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0W2NsYXNzXT1cIididG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IG14LTEgbWItMScgKyAoaXNNZXRob2RBY3RpdmUobWV0aG9kLmNvZGUpID8gJyBhY3RpdmUnIDogJycpXCJcblx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJzZXRNZXRob2QobWV0aG9kKVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0e3sgbWV0aG9kLm5hbWUgfCB0cmFuc2xhdGUgfX1cblx0XHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdH1AZWxzZSB7XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyB3LTEwMCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTJcIj5cblx0XHRcdFx0XHRcdDxoNSBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+e3snbm8tc2hpcG1lbnQtbWV0aG9kcyd8dHJhbnNsYXRlfX08L2g1PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHR9XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cblx0XHRcdFx0QGlmKG1vcmVJbmZvSW5NZXRob2QgJiYgbWV0aG9kU2VsZWN0ICYmIG1ldGhvZFNlbGVjdC5kZXNjcmlwdGlvbil7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBjb2wtbGctNCBkLWZsZXggZmxleC1jb2x1bW4gbWItMlwiIFtpZF09XCJtZXRob2RTZWxlY3QuY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IobGluZSBvZiBtZXRob2RTZWxlY3QuZGVzY3JpcHRpb24uc3BsaXQoJ1xcclxcbicpOyB0cmFjayAkaW5kZXg7IGxldCBpPSRpbmRleCl7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaWRdPVwibWV0aG9kU2VsZWN0LmNvZGUrJy0nK2lcIiBbY2xhc3NdPVwiJ2xpbmUtJytpXCI+e3tsaW5lfX08L3NwYW4+XG5cdFx0XHRcdFx0ICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2Pn1cblx0XHRcdFx0QGlmKGNvc3RzJCB8IGFzeW5jOyBhcyBjb3N0cyl7XG48IS0tIFx0XHRcdFx0IEBpZihjb3N0cyl7IC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYoIWxvYWRpbmdJbnRlcm5hbCl7XG5cdFx0XHRcdFx0XHRAZm9yKGNvc3Qgb2YgY29zdHM7IHRyYWNrICRpbmRleDsgbGV0IHkgPSAkaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIHRleHQtZGFya1wiPlxuXHRcdFx0XHRcdFx0XHRAaWYoY29zdC5jb250cmFjdHMubGVuZ3RoID4gMCl7XG5cdFx0XHRcdFx0XHRcdFx0QGlmKGNvc3RzLmxlbmd0aCA+IDEpe1xuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4+PGI+e3sgY29zdC5uYW1lIHwgdHJhbnNsYXRlIH19PC9iPjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdDxociAvPlxuXHRcdFx0XHRcdFx0XHRcdH1AZWxzZXtcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPjxiPnt7IG1ldGhvZFNlbGVjdC5uYW1lIHwgdHJhbnNsYXRlIH19PC9iPjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdDxociAvPlxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRAZm9yKGNvbnRyYWN0IG9mIGNvc3QuY29udHJhY3RzOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgY3VycmVudC1jb250cmFjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBbY2hlY2tlZF09XCIoeSA9PT0gMCAmJiBpID09PSAwKSA/IHRydWUgOiBjb250cmFjdC5zZWxlY3RlZFwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJjYXJkXCIgW2lkXT1cImNvc3QubmFtZSArIGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImRhcmtcIiAoY2xpY2spPVwidmVyaWZ5VmFsaWRhdGUoY29zdHMsY29zdC5uYW1lLCBjb250cmFjdClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCJjb3N0Lm5hbWUgKyBpXCIgYXJpYS1sYWJlbD1cIkRhcmsgZ3JleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYodmFsaWROYW1lKGNvbnRyYWN0Lm5hbWUpKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIihjb3N0Lm5hbWUgPT0gJ2hvbWVfZGVsaXZlcnknKSA/ICdzaGlwbWVudC1jb250cmFjdG5hbWUgaG9tZV9kZWxpdmVyeScgOiAnc2hpcG1lbnQtY29udHJhY3RuYW1lJyBcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGNvbnRyYWN0Lm5hbWUgfCB0cmFuc2xhdGUgfX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihjb250cmFjdC5jb21wdXRlZCl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj48YnIgY2xhc3M9XCJzaGlwbWVudC1jb250cmFjdG5hbWVcIj57eyBjb250cmFjdC5jb21wdXRlZCB8IHRyYW5zbGF0ZSB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnIgY2xhc3M9XCJzaGlwbWVudC1jb250cmFjdG5hbWVcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKGNvbnRyYWN0LmRldGFpbCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cmFjdC1kZXRhaWxcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IobGluZSBvZiBjb250cmFjdC5kZXRhaWwuc3BsaXQoJyAtICcpOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidjb250cmF0LWl0ZW0tJytpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGkgPT0gMCl7PHNwYW4+PGI+e3sgbGluZSB9fTwvYj48L3NwYW4+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihpID4gMCl7PHNwYW4gY2xhc3M9XCJpbnNpZGUtZGV0YWlsXCI+e3sgbGluZSB9fTwvc3Bhbj59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihjb250cmFjdC5wcmljZSA+IDApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiJ2luc2lkZS1kZXRhaWwgJyArICggY29zdG9zPy5hbW91bnQgPT0gMCA/ICcgZnJlZSAnIDogJycpIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCFjb250cmFjdC5jb21wdXRlZCl7PGJyIGNsYXNzPVwic2hpcG1lbnQtY29udHJhY3RuYW1lXCI+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKCdwcmljZSd8dHJhbnNsYXRlKSArICc6ICcgKyAoY29udHJhY3QucHJpY2UgfCBlY0N1cnJlbmN5U3ltYm9sKSB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0XHRcdFx0XHRcdFx0fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cdFx0XHRcdFx0XHR9XG4gICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XG5cdFx0XHRcdFx0XHQ8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XG5cdFx0XHRcdFx0fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuICAgICAgICAgICAgPC9kaXY+XG5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwicm93IGQtZmxleCBmbGV4LXJvd1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cblx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB0ZXh0LXdoaXRlXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+e3snYmFjayd8dHJhbnNsYXRlfX08L2J1dHRvbj5cblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cIm5leHQoKVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZENvbmZpcm1CdXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB0ZXh0LXdoaXRlXCI+e3soaXNMYXN0T25lXG5cdFx0XHRcdFx0PyAnZmluaXNoLWNoZWNrb3V0JyA6J3JlYWR5LWZvcm0nKSB8IHRyYW5zbGF0ZX19XG5cdFx0XHRcdFx0PCEtLSB7eyhhbGxyZWFkeV9kYXRhID8gJ3VwZGF0ZScgOiAoaXNMYXN0T25lID8gJ2ZpbmlzaC1jaGVja291dCcgOiAncmVhZHktZm9ybScpKSB8IHRyYW5zbGF0ZX19ICAtLT5cblx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cbjwvZGl2PiJdfQ==