ng-easycommerce 1.1.2 → 1.1.3

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 (100) hide show
  1. package/README.md +10 -0
  2. package/assets/ec-i18n/ct.json +2 -0
  3. package/assets/ec-i18n/en.json +2 -0
  4. package/assets/ec-i18n/es.json +2 -0
  5. package/assets/ec-i18n/fr.json +2 -0
  6. package/assets/ec-i18n/gl.json +2 -0
  7. package/assets/ec-i18n/pr.json +2 -0
  8. package/bundles/ng-easycommerce.umd.js +5663 -4057
  9. package/bundles/ng-easycommerce.umd.js.map +1 -1
  10. package/bundles/ng-easycommerce.umd.min.js +1 -1
  11. package/bundles/ng-easycommerce.umd.min.js.map +1 -1
  12. package/esm2015/lib/api/connection.service.js +2 -2
  13. package/esm2015/lib/core.consts.js +4 -5
  14. package/esm2015/lib/ec-component/cart-bootstrap-navigation.js +27 -0
  15. package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
  16. package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +23 -2
  17. package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +185 -13
  18. package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +3 -1
  19. package/esm2015/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +4 -2
  20. package/esm2015/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
  21. package/esm2015/lib/guards/able-buyer-guard.service.js +2 -2
  22. package/esm2015/lib/guards/auth-guard.service.js +2 -2
  23. package/esm2015/lib/guards/checkout-ready.service.js +3 -3
  24. package/esm2015/lib/guards/loggedin-guard.service.js +2 -2
  25. package/esm2015/lib/guards/user-role-guard.service.js +2 -2
  26. package/esm2015/lib/services/account/orders.service.js +6 -4
  27. package/esm2015/lib/services/auth.service.js +4 -3
  28. package/esm2015/lib/services/captcha.service.js +6 -4
  29. package/esm2015/lib/services/cart.service.js +1186 -74
  30. package/esm2015/lib/services/channel-config.service.js +4 -6
  31. package/esm2015/lib/services/checkout/addressing.service.js +65 -9
  32. package/esm2015/lib/services/checkout/checkout.service.js +56 -9
  33. package/esm2015/lib/services/checkout/error-handler.service.js +4 -3
  34. package/esm2015/lib/services/checkout/payment.service.js +35 -15
  35. package/esm2015/lib/services/checkout/shipment.service.js +54 -3
  36. package/esm2015/lib/services/concatenated-associations.service.js +4 -3
  37. package/esm2015/lib/services/currency.service.js +5 -3
  38. package/esm2015/lib/services/filters.service.js +2 -2
  39. package/esm2015/lib/services/footer/footer.service.js +4 -3
  40. package/esm2015/lib/services/gift-card.service.js +56 -5
  41. package/esm2015/lib/services/parameters.service.js +5 -3
  42. package/esm2015/lib/services/reviews.service.js +5 -4
  43. package/esm2015/lib/services/seo.service.js +4 -5
  44. package/esm2015/lib/services/stores.service.js +4 -3
  45. package/esm2015/lib/services/wishlist.service.js +3 -4
  46. package/esm2015/lib/utils/analytics/google-analytics.service.js +1 -1
  47. package/esm2015/lib/utils/price-presentation.service.js +2 -3
  48. package/esm2015/lib/utils/shipping-price-display.service.js +2 -3
  49. package/esm5/lib/api/connection.service.js +2 -2
  50. package/esm5/lib/core.consts.js +4 -5
  51. package/esm5/lib/ec-component/cart-bootstrap-navigation.js +27 -0
  52. package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
  53. package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +23 -2
  54. package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +206 -12
  55. package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +3 -1
  56. package/esm5/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +5 -3
  57. package/esm5/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
  58. package/esm5/lib/guards/able-buyer-guard.service.js +2 -2
  59. package/esm5/lib/guards/auth-guard.service.js +2 -2
  60. package/esm5/lib/guards/checkout-ready.service.js +3 -3
  61. package/esm5/lib/guards/loggedin-guard.service.js +2 -2
  62. package/esm5/lib/guards/user-role-guard.service.js +2 -2
  63. package/esm5/lib/services/account/orders.service.js +6 -4
  64. package/esm5/lib/services/auth.service.js +4 -3
  65. package/esm5/lib/services/captcha.service.js +6 -4
  66. package/esm5/lib/services/cart.service.js +1231 -94
  67. package/esm5/lib/services/channel-config.service.js +4 -6
  68. package/esm5/lib/services/checkout/addressing.service.js +65 -9
  69. package/esm5/lib/services/checkout/checkout.service.js +63 -12
  70. package/esm5/lib/services/checkout/error-handler.service.js +4 -3
  71. package/esm5/lib/services/checkout/payment.service.js +29 -11
  72. package/esm5/lib/services/checkout/shipment.service.js +58 -7
  73. package/esm5/lib/services/concatenated-associations.service.js +4 -3
  74. package/esm5/lib/services/currency.service.js +5 -3
  75. package/esm5/lib/services/filters.service.js +2 -2
  76. package/esm5/lib/services/footer/footer.service.js +4 -3
  77. package/esm5/lib/services/gift-card.service.js +59 -5
  78. package/esm5/lib/services/parameters.service.js +5 -3
  79. package/esm5/lib/services/reviews.service.js +5 -4
  80. package/esm5/lib/services/seo.service.js +4 -5
  81. package/esm5/lib/services/stores.service.js +4 -3
  82. package/esm5/lib/services/wishlist.service.js +3 -4
  83. package/esm5/lib/utils/analytics/google-analytics.service.js +1 -1
  84. package/esm5/lib/utils/price-presentation.service.js +2 -3
  85. package/esm5/lib/utils/shipping-price-display.service.js +2 -3
  86. package/fesm2015/ng-easycommerce.js +3966 -2412
  87. package/fesm2015/ng-easycommerce.js.map +1 -1
  88. package/fesm5/ng-easycommerce.js +5667 -4061
  89. package/fesm5/ng-easycommerce.js.map +1 -1
  90. package/lib/ec-component/cart-bootstrap-navigation.d.ts +7 -0
  91. package/lib/ec-component/cart-ec/cart-ec.component.d.ts +5 -2
  92. package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +5 -0
  93. package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +27 -3
  94. package/lib/services/cart.service.d.ts +120 -7
  95. package/lib/services/checkout/addressing.service.d.ts +1 -1
  96. package/lib/services/checkout/checkout.service.d.ts +3 -0
  97. package/lib/services/checkout/shipment.service.d.ts +2 -2
  98. package/lib/services/gift-card.service.d.ts +1 -0
  99. package/ng-easycommerce.metadata.json +1 -1
  100. package/package.json +1 -1
@@ -28,11 +28,16 @@ import { Router } from '@angular/router';
28
28
  import { ToastService } from '../../utils/toast.service';
29
29
  import { IpService } from '../ip-address.service';
30
30
  import * as i0 from "@angular/core";
31
- import * as i1 from "../../../public-api";
32
- import * as i2 from "../../utils/order-util.service";
33
- import * as i3 from "@angular/router";
34
- import * as i4 from "./error-handler.service";
35
- import * as i5 from "../ip-address.service";
31
+ import * as i1 from "../../api/connection.service";
32
+ import * as i2 from "../cart.service";
33
+ import * as i3 from "../../core.consts";
34
+ import * as i4 from "../../utils/toast.service";
35
+ import * as i5 from "../../utils/order-util.service";
36
+ import * as i6 from "../analytics.service";
37
+ import * as i7 from "../auth.service";
38
+ import * as i8 from "@angular/router";
39
+ import * as i9 from "./error-handler.service";
40
+ import * as i10 from "../ip-address.service";
36
41
  let CheckoutService = class CheckoutService {
37
42
  constructor(connection, cartService, consts, toastrService, orderUtils, analyticsService, authService, router, errorHandler, ipService) {
38
43
  this.connection = connection;
@@ -61,6 +66,7 @@ let CheckoutService = class CheckoutService {
61
66
  this.orderSubject = new BehaviorSubject(null);
62
67
  this.asociatedDataSubject = new BehaviorSubject(null);
63
68
  this.checkout_data = {};
69
+ this.checkoutStateGeneration = 0;
64
70
  this.order$ = this.orderSubject.asObservable();
65
71
  this.state$ = this.stateSubject.asObservable();
66
72
  this.loading$ = this.loadingSubject.asObservable();
@@ -98,6 +104,7 @@ let CheckoutService = class CheckoutService {
98
104
  return (step_result && step_result.data) || null;
99
105
  };
100
106
  this.setSteps = (steps, autohandle = true) => {
107
+ this.checkoutStateGeneration++;
101
108
  let final_steps = [];
102
109
  steps.forEach((step, i) => final_steps.push(new Step(step.name, step.priority || (i + 1))));
103
110
  this.stateSubject.next(final_steps);
@@ -114,15 +121,21 @@ let CheckoutService = class CheckoutService {
114
121
  };
115
122
  const queryString = new URLSearchParams(params).toString();
116
123
  const urlWithParams = `${this.getHasPurchaseConditions()}?${queryString}`;
124
+ const cartToken = this.cartService.getCartToken();
117
125
  this.connection.getErrorNotHandler(urlWithParams).toPromise().then(res => {
118
126
  var _a, _b;
119
127
  this.analyticsService.callEvent('checkout_init', Object.assign(Object.assign({}, this.cartLocal), { currency: (_a = this.cartLocal) === null || _a === void 0 ? void 0 : _a.currency, value: (_b = this.cartLocal) === null || _b === void 0 ? void 0 : _b.total }));
120
- });
128
+ }, error => this.cartService.handleCartMutationError(error, cartToken));
121
129
  });
122
130
  };
123
131
  this.setStepReady = (step_number, data, order, automatic) => __awaiter(this, void 0, void 0, function* () {
132
+ const generation = this.checkoutStateGeneration;
124
133
  yield this.restartAllStepsFrom(step_number);
134
+ if (generation !== this.checkoutStateGeneration)
135
+ return false;
125
136
  setTimeout(() => {
137
+ if (generation !== this.checkoutStateGeneration)
138
+ return;
126
139
  let steps = this.stateSubject.getValue();
127
140
  steps.find(step => step.priority == step_number).ready(data);
128
141
  this.stateSubject.next(steps);
@@ -143,12 +156,31 @@ let CheckoutService = class CheckoutService {
143
156
  return true;
144
157
  });
145
158
  this.setStepDoing = (step_number) => __awaiter(this, void 0, void 0, function* () {
159
+ const generation = this.checkoutStateGeneration;
146
160
  let steps = this.stateSubject.getValue();
147
161
  steps = yield this.restartAllStepsFrom(step_number, false, false);
162
+ if (generation !== this.checkoutStateGeneration)
163
+ return false;
148
164
  steps.find(step => step.priority == step_number).doing();
149
165
  this.stateSubject.next(steps);
150
166
  return true;
151
167
  });
168
+ /** Invalida de inmediato los datos y pasos del checkout asociado a un carrito finalizado. */
169
+ this.invalidateCheckoutState = () => {
170
+ var _a;
171
+ this.checkoutStateGeneration++;
172
+ this.canCheckoutSubject.next(false);
173
+ this.onReadySubject.next(false);
174
+ this.loadingSubject.next(false);
175
+ this.order = null;
176
+ this.orderSubject.next(null);
177
+ this.checkout_data = {};
178
+ this.total = undefined;
179
+ this.asociatedDataSubject.next(null);
180
+ this.paymentMethodsSubject.next([]);
181
+ if ((_a = this.stateSubject.getValue()) === null || _a === void 0 ? void 0 : _a.length)
182
+ this.restartAllStepsFrom(1);
183
+ };
152
184
  this.restartAllStepsFrom = (step_number, included = true, update = true) => {
153
185
  let steps = this.stateSubject.getValue();
154
186
  steps = steps.map((step) => {
@@ -178,8 +210,23 @@ let CheckoutService = class CheckoutService {
178
210
  this.getOrder = () => this.order || this.orderSubject.value;
179
211
  this.completeOrder = () => this.connection.put(this.completeApi(), { email: this.checkout_data.email, notes: this.checkout_data.notes || '' }).toPromise();
180
212
  this.complete = () => __awaiter(this, void 0, void 0, function* () {
213
+ if (!this.cartService.canMutateCart()) {
214
+ this.loadingSubject.next(false);
215
+ return ({ ok: false, require_login: false, message: 'cart-unavailable' });
216
+ }
181
217
  this.loadingSubject.next(true);
182
- let result = yield this.completeOrder();
218
+ const cartToken = this.cartService.getCartToken();
219
+ let result;
220
+ try {
221
+ result = yield this.completeOrder();
222
+ }
223
+ catch (error) {
224
+ this.loadingSubject.next(false);
225
+ if (this.cartService.handleCartMutationError(error, cartToken)) {
226
+ return ({ ok: false, require_login: false, message: 'cart-not-active' });
227
+ }
228
+ throw error;
229
+ }
183
230
  if (!result ||
184
231
  result.error ||
185
232
  result.code === 'insufficient_credit' ||
@@ -308,11 +355,11 @@ CheckoutService.ctorParameters = () => [
308
355
  { type: ErrorHandlerService },
309
356
  { type: IpService }
310
357
  ];
311
- CheckoutService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CheckoutService_Factory() { return new i1.CheckoutService(i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i1.CartService), i0.ɵɵinject(i1.Constants), i0.ɵɵinject(i1.ToastService), i0.ɵɵinject(i2.OrderUtilityService), i0.ɵɵinject(i1.AnalyticsService), i0.ɵɵinject(i1.AuthService), i0.ɵɵinject(i3.Router), i0.ɵɵinject(i4.ErrorHandlerService), i0.ɵɵinject(i5.IpService)); }, token: i1.CheckoutService, providedIn: "root" });
358
+ CheckoutService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CheckoutService_Factory() { return new CheckoutService(i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i2.CartService), i0.ɵɵinject(i3.Constants), i0.ɵɵinject(i4.ToastService), i0.ɵɵinject(i5.OrderUtilityService), i0.ɵɵinject(i6.AnalyticsService), i0.ɵɵinject(i7.AuthService), i0.ɵɵinject(i8.Router), i0.ɵɵinject(i9.ErrorHandlerService), i0.ɵɵinject(i10.IpService)); }, token: CheckoutService, providedIn: "root" });
312
359
  CheckoutService = __decorate([
313
360
  Injectable({
314
361
  providedIn: 'root'
315
362
  })
316
363
  ], CheckoutService);
317
364
  export { CheckoutService };
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFLbEQsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQWlDeEIsWUFBb0IsVUFBNkIsRUFDckMsV0FBd0IsRUFD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QUFNO0tBQ3JCLENBQUM7R0FDVyxlQUFlLENBK1MzQjtTQS9TWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0ZXBJLCBTdGVwVHlwZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3N0ZXAnO1xuaW1wb3J0IHsgU3RlcCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2hlY2tvdXQvc3RlcCc7XG5pbXBvcnQgeyBDaGVja291dERhdGEsIENoZWNrb3V0RGF0YVR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NoZWNrb3V0LWRhdGEnO1xuaW1wb3J0IHsgT3JkZXJVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL29yZGVyLXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdXNlcic7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSXBTZXJ2aWNlIH0gZnJvbSAnLi4vaXAtYWRkcmVzcy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgYmFzZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKTtcbiAgICBnZXRQYXltZW50TWV0aG9kc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50JztcbiAgICBwdXRBZGRyZXNzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL2FkZHJlc3MnO1xuICAgIHB1dFBheW1lbnRBcGkgPSAobWV0aG9kKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvcGF5bWVudC8nICsgbWV0aG9kO1xuICAgIGNvbXBsZXRlQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL2NvbXBsZXRlJztcbiAgICBwZXJzaXN0U2hpcG1lbnRBcGkgPSAoKSA9PiAnJztcbiAgICBnZXRQcmVmZXJlbmNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL21lcmNhZG8tcGFnby8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJlZmVyZW5jZSc7XG4gICAgZ2V0SGFzUHVyY2hhc2VDb25kaXRpb25zID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NhcnRzLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9oYXNfcHVyY2hhc2VfY29uZGl0aW9ucyc7XG5cbiAgICBwcml2YXRlIGNhbkNoZWNrb3V0U3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBvblJlYWR5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0ZXBbXT4obnVsbCk7XG4gICAgcHJpdmF0ZSBwYXltZW50TWV0aG9kc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJpdmF0ZSBsb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgb3JkZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICAgIHByaXZhdGUgYXNvY2lhdGVkRGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoZWNrb3V0RGF0YVtdPihudWxsKTtcbiAgICBwcml2YXRlIG9yZGVyOiBhbnk7XG4gICAgcHJpdmF0ZSBjaGVja291dF9kYXRhOiBhbnkgPSB7fTtcbiAgICBwdWJsaWMgdG90YWw7XG4gICAgcHJpdmF0ZSBjYXJ0TG9jYWw7XG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyO1xuXG4gICAgcHVibGljIG9yZGVyJCA9IHRoaXMub3JkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBzdGF0ZSQgPSB0aGlzLnN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgbG9hZGluZyQgPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBjYW5DaGVja291dCQgPSB0aGlzLmNhbkNoZWNrb3V0U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgYXNvY2lhdGVkRGF0YSQgPSB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBvblJlYWR5JCA9IHRoaXMub25SZWFkeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIHBheW1lbnRNZXRob2RzJCA9IHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMsXG4gICAgICAgIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG9yZGVyVXRpbHM6IE9yZGVyVXRpbGl0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICAgICAgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaXBTZXJ2aWNlOiBJcFNlcnZpY2UpIHtcblxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmNhcnRTZXJ2aWNlLmNhcnRJdGVtcywgdGhpcy5jYXJ0U2VydmljZS5sb2FkaW5nXSkuc3Vic2NyaWJlKChbaXRlbXMsIGxvYWRpbmddKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvYWRpbmcgJiYgaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0Lm5leHQodHJ1ZSlcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmdldFRvdGFsQW1vdW50KCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWwgPSByZXM7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jYXJ0LnN1YnNjcmliZShjYXJ0ID0+IGNhcnQgJiYgKHRoaXMuY2FydExvY2FsID0gY2FydCkgJiYgdGhpcy51cGRhdGVBc29jaWF0ZWREYXRhKGNhcnQpKTtcbiAgICAgICAgdGhpcy5vcmRlciQuc3Vic2NyaWJlKG9yZGVyID0+IG9yZGVyICYmIHRoaXMudXBkYXRlQXNvY2lhdGVkRGF0YShvcmRlcikpXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlclByb2ZpbGUoKS5zdWJzY3JpYmUodXNlciA9PiB0aGlzLnVzZXIgPSB1c2VyKVxuICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5lcnJvciQucGlwZShmaWx0ZXIocmVzID0+IHJlcyAhPSBudWxsKSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gJ291dF9vZl9zdG9jaycgfHwgcmVzLmNvZGUgPT0gJ2l0ZW1zX3dpdGhfcHJvZHVjdF9vcl9wcm9kdWN0X3ZhcmlhbnRfbm90X2VuYWJsZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdyZWRpcmVjdC1jYXJ0JylcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvY2FydCcpXG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cblxuICAgIHVwZGF0ZU9yZGVyID0gKG9yZGVyKSA9PiBvcmRlciAmJiB0aGlzLm9yZGVyU3ViamVjdC5uZXh0KG9yZGVyKTtcblxuICAgIHNldENoZWNrb3V0Tm90ZXMgPSAobm90ZXM6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrb3V0X2RhdGEubm90ZXMgPSBub3RlcyB8fCAnJztcbiAgICB9XG5cbiAgICBnZXRDaGVja291dE5vdGVzID0gKCkgPT4gdGhpcy5jaGVja291dF9kYXRhLm5vdGVzIHx8ICcnO1xuXG4gICAgc2V0UGF5bWVudE1ldGhvZHMgPSAobWV0aG9kczogYW55W10pID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QubmV4dChtZXRob2RzIHx8IFtdKTtcbiAgICB9XG5cbiAgICBwcmVmZXRjaFBheW1lbnRNZXRob2RzID0gYXN5bmMgKCkgPT5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldFBheW1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1ldGhvZHMgPSByZXMucGF5bWVudHM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IE9iamVjdC5rZXlzKHJlcy5wYXltZW50c1swXS5tZXRob2RzKS5tYXAoa2V5ID0+IHJlcy5wYXltZW50c1swXS5tZXRob2RzW2tleV0pXG4gICAgICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICAgICAgaWYgKG1ldGhvZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgIGdldFN0ZXBEYXRhID0gKHN0ZXBfbmFtZTogU3RlcFR5cGVJKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFzdGVwcyB8fCAhc3RlcHMubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3Qgc3RlcF9yZXN1bHQgPSBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5uYW1lID09IHN0ZXBfbmFtZSk7XG4gICAgICAgIHJldHVybiAoc3RlcF9yZXN1bHQgJiYgc3RlcF9yZXN1bHQuZGF0YSkgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBzZXRTdGVwcyA9IChzdGVwczogU3RlcElbXSwgYXV0b2hhbmRsZSA9IHRydWUpID0+IHtcbiAgICAgICAgbGV0IGZpbmFsX3N0ZXBzID0gW107XG4gICAgICAgIHN0ZXBzLmZvckVhY2goKHN0ZXAsIGkpID0+IGZpbmFsX3N0ZXBzLnB1c2gobmV3IFN0ZXAoc3RlcC5uYW1lLCBzdGVwLnByaW9yaXR5IHx8IChpICsgMSkpKSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoZmluYWxfc3RlcHMpO1xuXG4gICAgICAgIC8vIE9idGVuZXIgSVAgeSB1YmljYWNpw7NuXG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgIGlwOiB0aGlzLmlwU2VydmljZS5nZXRJcCgpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpLFxuICAgICAgICAgICAgbG9jYXRpb246IHRoaXMuaXBTZXJ2aWNlLmdldExvY2F0aW9uKCkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSlcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdHMgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIGlwOiByZXN1bHRzLmlwPy5pcCB8fCAndW5rbm93bicsXG4gICAgICAgICAgICAgICAgY291bnRyeTogcmVzdWx0cy5sb2NhdGlvbj8uY291bnRyeSB8fCAndW5rbm93bicsXG4gICAgICAgICAgICAgICAgY2l0eTogcmVzdWx0cy5sb2NhdGlvbj8uY2l0eSB8fCAndW5rbm93bidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCB1cmxXaXRoUGFyYW1zID0gYCR7dGhpcy5nZXRIYXNQdXJjaGFzZUNvbmRpdGlvbnMoKX0/JHtxdWVyeVN0cmluZ31gO1xuXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0RXJyb3JOb3RIYW5kbGVyKHVybFdpdGhQYXJhbXMpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnY2hlY2tvdXRfaW5pdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2FydExvY2FsLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY2FydExvY2FsPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmNhcnRMb2NhbD8udG90YWxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0U3RlcFJlYWR5ID0gYXN5bmMgKHN0ZXBfbnVtYmVyLCBkYXRhLCBvcmRlcj8sIGF1dG9tYXRpYz8pID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXN0YXJ0QWxsU3RlcHNGcm9tKHN0ZXBfbnVtYmVyKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgc3RlcHMuZmluZChzdGVwID0+IHN0ZXAucHJpb3JpdHkgPT0gc3RlcF9udW1iZXIpLnJlYWR5KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGVwcyk7XG5cbiAgICAgICAgICAgIGlmIChvcmRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWwgPSBvcmRlci50b3RhbHMudG90YWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ2hlY2tvdXRSZWFkeSgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXBzW3N0ZXBzLmxlbmd0aCAtIDFdLm5hbWUgPT0gJ3NoaXBtZW50Jykge1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlYWR5U3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LCAxNTApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzZXRTdGVwRG9pbmcgPSBhc3luYyAoc3RlcF9udW1iZXIpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgc3RlcHMgPSBhd2FpdCB0aGlzLnJlc3RhcnRBbGxTdGVwc0Zyb20oc3RlcF9udW1iZXIsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLnByaW9yaXR5ID09IHN0ZXBfbnVtYmVyKS5kb2luZygpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0ZXBzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmVzdGFydEFsbFN0ZXBzRnJvbSA9IChzdGVwX251bWJlciwgaW5jbHVkZWQgPSB0cnVlLCB1cGRhdGUgPSB0cnVlKSA9PiB7XG4gICAgICAgIGxldCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpbmNsdWRlZFxuICAgICAgICAgICAgICAgID8gKHN0ZXAucHJpb3JpdHkgPj0gc3RlcF9udW1iZXIpICYmIHN0ZXAucmVzdGFydCgpXG4gICAgICAgICAgICAgICAgOiAoc3RlcC5wcmlvcml0eSA+IHN0ZXBfbnVtYmVyKSAmJiBzdGVwLnJlc3RhcnQoKVxuICAgICAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgICAgIH0pXG4gICAgICAgIHVwZGF0ZSAmJiB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0ZXBzKTtcbiAgICAgICAgcmV0dXJuIHN0ZXBzO1xuICAgIH1cblxuICAgIGlzQ2hlY2tvdXRSZWFkeSA9ICgpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QudmFsdWU7XG4gICAgICAgIGNvbnN0IHN0ZXBfbWlzc2luZyA9IHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmlzUGVuZGluZygpKTtcbiAgICAgICAgcmV0dXJuICFzdGVwX21pc3Npbmc7XG4gICAgfVxuXG4gICAgaXNTdGVwUmVhZHkgPSAoc3RlcF9uYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKSB8fCBbXTtcbiAgICAgICAgaWYgKCFzdGVwcy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3Qgc3RlcCA9IHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT0gc3RlcF9uYW1lKTtcbiAgICAgICAgaWYgKCFzdGVwKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHN0ZXAuaXNSZWFkeSgpO1xuICAgIH07XG5cbiAgICBzZXRPcmRlciA9IChvcmRlcikgPT4geyB0aGlzLm9yZGVyID0gb3JkZXIsIHRoaXMub3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpIH07XG4gICAgZ2V0T3JkZXIgPSAoKSA9PiB0aGlzLm9yZGVyIHx8IHRoaXMub3JkZXJTdWJqZWN0LnZhbHVlO1xuXG4gICAgcHJpdmF0ZSBjb21wbGV0ZU9yZGVyID0gKCkgPT4gdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLmNvbXBsZXRlQXBpKCksIHsgZW1haWw6IHRoaXMuY2hlY2tvdXRfZGF0YS5lbWFpbCwgbm90ZXM6IHRoaXMuY2hlY2tvdXRfZGF0YS5ub3RlcyB8fCAnJyB9KS50b1Byb21pc2UoKTtcblxuICAgIGNvbXBsZXRlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbXBsZXRlT3JkZXIoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXJlc3VsdCB8fFxuICAgICAgICAgICAgcmVzdWx0LmVycm9yIHx8XG4gICAgICAgICAgICByZXN1bHQuY29kZSA9PT0gJ2luc3VmZmljaWVudF9jcmVkaXQnIHx8XG4gICAgICAgICAgICByZXN1bHQuY29kZSA9PT0gJ2Vycm9yJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2hhbmdlSGF2ZVRvVXBkYXRlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gKHsgb2s6IGZhbHNlLCByZXF1aXJlX2xvZ2luOiB0cnVlLCBtZXNzYWdlOiAnbm90LWNvbXBsZXRlZCcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRPcmRlcihyZXN1bHQpO1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdwdXJjaGFzZScsIHsgLi4ucmVzdWx0LCBjdXJyZW5jeTogcmVzdWx0LmN1cnJlbmN5LCB2YWx1ZTogcmVzdWx0LnRvdGFsIH0pO1xuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNsZWFyQW5kUmVzZXRDYXJ0KCk7XG4gICAgICAgIHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLm9uUmVhZHlTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICByZXR1cm4gKHsgb2s6IHRydWUsIHJlcXVpcmVfbG9naW46IGZhbHNlLCBtZXNzYWdlOiAnJyB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVBc29jaWF0ZWREYXRhID0gKGNhcnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5jYXJ0U2VydmljZSAmJiB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRTdW1tYXJ5UHJpY2VQcmVzZW50YXRpb25cbiAgICAgICAgICAgID8gdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0U3VtbWFyeVByaWNlUHJlc2VudGF0aW9uKGNhcnQsIHVuZGVmaW5lZCwgdHJ1ZSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgY29uc3QgcGF5bWVudE1ldGhvZEFkanVzdG1lbnQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0UGF5bWVudE1ldGhvZEFkanVzdG1lbnQoY2FydCk7XG5cbiAgICAgICAgaWYgKHN1bW1hcnk/LnNvdXJjZSA9PT0gJ2xpbmVQcmljaW5nJykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBDaGVja291dERhdGFbXSA9IFtcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdwcm9kdWN0c0JlZm9yZURpc2NvdW50cycsIG5hbWU6ICdwcm9kdWN0cy1iZWZvcmUtZGlzY291bnRzJywgYW1vdW50OiBzdW1tYXJ5LnByb2R1Y3RzQmVmb3JlRGlzY291bnRzIH0sXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkubGluZURpc2NvdW50cyAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdsaW5lRGlzY291bnQnLCBuYW1lOiAnbGluZS1kaXNjb3VudHMnLCBhbW91bnQ6IHN1bW1hcnkubGluZURpc2NvdW50cyB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnc3VidG90YWwnLCBuYW1lOiAnc3VidG90YWwnLCBhbW91bnQ6IHN1bW1hcnkuc3VidG90YWwgfSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5vcmRlckRpc2NvdW50ICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ2Rpc2NvdW50JywgbmFtZTogJ2Rpc2NvdW50JywgYW1vdW50OiBzdW1tYXJ5Lm9yZGVyRGlzY291bnQgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LmNvdXBvbkRpc2NvdW50ICE9PSBudWxsICYmIHN1bW1hcnkuY291cG9uRGlzY291bnQgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnY291cG9uJywgbmFtZTogJ2NvdXBvbicsIGFtb3VudDogc3VtbWFyeS5jb3Vwb25EaXNjb3VudCB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkudGF4ZXMgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAndGF4ZXMnLCBuYW1lOiAndGF4ZXMnLCBhbW91bnQ6IHN1bW1hcnkudGF4ZXMsIHRheGVzSW5jbHVkZWRJblRvdGFsOiBzdW1tYXJ5LnRheGVzSW5jbHVkZWRJblRvdGFsIH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5jbGllbnRUYXhlcyAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdjbGllbnRUYXhlcycsIG5hbWU6ICdjbGllbnRUYXhlcycsIGFtb3VudDogc3VtbWFyeS5jbGllbnRUYXhlcyB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkuc2hpcHBpbmcgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnc2hpcG1lbnQnLCBuYW1lOiAnc2hpcG1lbnQnLCBhbW91bnQ6IHN1bW1hcnkuc2hpcHBpbmcgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihwYXltZW50TWV0aG9kQWRqdXN0bWVudCA/IFtwYXltZW50TWV0aG9kQWRqdXN0bWVudF0gOiBbXSksXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAndG90YWwnLCBuYW1lOiAndG90YWwnLCBhbW91bnQ6IHN1bW1hcnkudG90YWwgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMub3JkZXJVdGlscy5nZXRTdW1tYXJ5UHJvbW90aW9ucyhjYXJ0KTtcbiAgICAgICAgY29uc3QgdG90YWxzID0gY2FydD8udG90YWxzO1xuICAgICAgICBpZiAoIXRvdGFscykge1xuICAgICAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2hpcG1lbnRBbW91bnQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0U3VtbWFyeVNoaXBtZW50QW1vdW50KGNhcnQpO1xuICAgICAgICBpZiAodG90YWxzLnRheGVzICE9IDApIHtcbiAgICAgICAgICAgIGxldCB0b3RhbCA9IHsgLi4ucmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSB9O1xuICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAndGF4ZXMnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd0YXhlcycsXG4gICAgICAgICAgICAgICAgYW1vdW50OiB0b3RhbHMudGF4ZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRvdGFsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hpcG1lbnRBbW91bnQgIT09IG51bGwgJiYgcmVzdWx0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHNoaXBtZW50SW5kZXggPSByZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50eXBlID09PSAnc2hpcG1lbnQnKTtcbiAgICAgICAgICAgIGNvbnN0IHNoaXBtZW50SXRlbTogQ2hlY2tvdXREYXRhID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzaGlwbWVudCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ3NoaXBtZW50JyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHNoaXBtZW50QW1vdW50XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoc2hpcG1lbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbc2hpcG1lbnRJbmRleF0gPSBzaGlwbWVudEl0ZW07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsSW5kZXggPSByZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50eXBlID09PSAndG90YWwnKTtcbiAgICAgICAgICAgICAgICBpZiAodG90YWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LnNsaWNlKDAsIHRvdGFsSW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpcG1lbnRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LnNsaWNlKHRvdGFsSW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc2hpcG1lbnRJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmVzdGFydENoZWNrb3V0ID0gKCkgPT4geyB9XG5cbn1cbiJdfQ==
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7OztBQUtsRCxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFlO0lBa0N4QixZQUFvQixVQUE2QixFQUNyQyxXQUF3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SyxDQUFDLENBQUMsQ0FBQTtRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDckUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDL0QsR0FBRyxDQUFDLEVBQUU7WUFDRixJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksY0FBYyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksbURBQW1ELEVBQUU7Z0JBQy9GLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO2dCQUN4QyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2dCQUN0QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDWjtRQUNMLENBQUMsQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0NBK1FKLENBQUE7O1lBblRtQyxpQkFBaUI7WUFDeEIsV0FBVztZQUNoQixTQUFTO1lBQ0YsWUFBWTtZQUNmLG1CQUFtQjtZQUNiLGdCQUFnQjtZQUN0QixXQUFXO1lBQ2YsTUFBTTtZQUNBLG1CQUFtQjtZQUN0QixTQUFTOzs7QUEzQ3ZCLGVBQWU7SUFIM0IsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztHQUNXLGVBQWUsQ0FxVjNCO1NBclZZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RlcEksIFN0ZXBUeXBlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc3RlcCc7XG5pbXBvcnQgeyBTdGVwIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jaGVja291dC9zdGVwJztcbmltcG9ydCB7IENoZWNrb3V0RGF0YSwgQ2hlY2tvdXREYXRhVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY2hlY2tvdXQtZGF0YSc7XG5pbXBvcnQgeyBPcmRlclV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvb3JkZXItdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy91c2VyJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJcFNlcnZpY2UgfSBmcm9tICcuLi9pcC1hZGRyZXNzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0U2VydmljZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBiYXNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpO1xuICAgIGdldFBheW1lbnRNZXRob2RzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQnO1xuICAgIHB1dEFkZHJlc3NBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvYWRkcmVzcyc7XG4gICAgcHV0UGF5bWVudEFwaSA9IChtZXRob2QpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50LycgKyBtZXRob2Q7XG4gICAgY29tcGxldGVBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvY29tcGxldGUnO1xuICAgIHBlcnNpc3RTaGlwbWVudEFwaSA9ICgpID0+ICcnO1xuICAgIGdldFByZWZlcmVuY2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvbWVyY2Fkby1wYWdvLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcmVmZXJlbmNlJztcbiAgICBnZXRIYXNQdXJjaGFzZUNvbmRpdGlvbnMgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2FydHMvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL2hhc19wdXJjaGFzZV9jb25kaXRpb25zJztcblxuICAgIHByaXZhdGUgY2FuQ2hlY2tvdXRTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIG9uUmVhZHlTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcml2YXRlIHN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RlcFtdPihudWxsKTtcbiAgICBwcml2YXRlIHBheW1lbnRNZXRob2RzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBvcmRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gICAgcHJpdmF0ZSBhc29jaWF0ZWREYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hlY2tvdXREYXRhW10+KG51bGwpO1xuICAgIHByaXZhdGUgb3JkZXI6IGFueTtcbiAgICBwcml2YXRlIGNoZWNrb3V0X2RhdGE6IGFueSA9IHt9O1xuICAgIHByaXZhdGUgY2hlY2tvdXRTdGF0ZUdlbmVyYXRpb24gPSAwO1xuICAgIHB1YmxpYyB0b3RhbDtcbiAgICBwcml2YXRlIGNhcnRMb2NhbDtcbiAgICBwcml2YXRlIHVzZXI6IFVzZXI7XG5cbiAgICBwdWJsaWMgb3JkZXIkID0gdGhpcy5vcmRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIHN0YXRlJCA9IHRoaXMuc3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBsb2FkaW5nJCA9IHRoaXMubG9hZGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGNhbkNoZWNrb3V0JCA9IHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBhc29jaWF0ZWREYXRhJCA9IHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIG9uUmVhZHkkID0gdGhpcy5vblJlYWR5U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgcGF5bWVudE1ldGhvZHMkID0gdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgb3JkZXJVdGlsczogT3JkZXJVdGlsaXR5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpcFNlcnZpY2U6IElwU2VydmljZSkge1xuXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY2FydFNlcnZpY2UuY2FydEl0ZW1zLCB0aGlzLmNhcnRTZXJ2aWNlLmxvYWRpbmddKS5zdWJzY3JpYmUoKFtpdGVtcywgbG9hZGluZ10pID0+IHtcbiAgICAgICAgICAgIGlmICghbG9hZGluZyAmJiBpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5DaGVja291dFN1YmplY3QubmV4dCh0cnVlKVxuICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuZ2V0VG90YWxBbW91bnQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbCA9IHJlcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KVxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNhcnQuc3Vic2NyaWJlKGNhcnQgPT4gY2FydCAmJiAodGhpcy5jYXJ0TG9jYWwgPSBjYXJ0KSAmJiB0aGlzLnVwZGF0ZUFzb2NpYXRlZERhdGEoY2FydCkpO1xuICAgICAgICB0aGlzLm9yZGVyJC5zdWJzY3JpYmUob3JkZXIgPT4gb3JkZXIgJiYgdGhpcy51cGRhdGVBc29jaWF0ZWREYXRhKG9yZGVyKSlcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyUHJvZmlsZSgpLnN1YnNjcmliZSh1c2VyID0+IHRoaXMudXNlciA9IHVzZXIpXG4gICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmVycm9yJC5waXBlKGZpbHRlcihyZXMgPT4gcmVzICE9IG51bGwpKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAnb3V0X29mX3N0b2NrJyB8fCByZXMuY29kZSA9PSAnaXRlbXNfd2l0aF9wcm9kdWN0X29yX3Byb2R1Y3RfdmFyaWFudF9ub3RfZW5hYmxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ3JlZGlyZWN0LWNhcnQnKVxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9jYXJ0JylcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgfVxuXG4gICAgdXBkYXRlT3JkZXIgPSAob3JkZXIpID0+IG9yZGVyICYmIHRoaXMub3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpO1xuXG4gICAgc2V0Q2hlY2tvdXROb3RlcyA9IChub3Rlczogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRfZGF0YS5ub3RlcyA9IG5vdGVzIHx8ICcnO1xuICAgIH1cblxuICAgIGdldENoZWNrb3V0Tm90ZXMgPSAoKSA9PiB0aGlzLmNoZWNrb3V0X2RhdGEubm90ZXMgfHwgJyc7XG5cbiAgICBzZXRQYXltZW50TWV0aG9kcyA9IChtZXRob2RzOiBhbnlbXSkgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5uZXh0KG1ldGhvZHMgfHwgW10pO1xuICAgIH1cblxuICAgIHByZWZldGNoUGF5bWVudE1ldGhvZHMgPSBhc3luYyAoKSA9PlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0UGF5bWVudE1ldGhvZHNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWV0aG9kcyA9IHJlcy5wYXltZW50cz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gT2JqZWN0LmtleXMocmVzLnBheW1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzLnBheW1lbnRzWzBdLm1ldGhvZHNba2V5XSlcbiAgICAgICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgICAgICBpZiAobWV0aG9kcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QubmV4dChtZXRob2RzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgZ2V0U3RlcERhdGEgPSAoc3RlcF9uYW1lOiBTdGVwVHlwZUkpID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoIXN0ZXBzIHx8ICFzdGVwcy5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBzdGVwX3Jlc3VsdCA9IHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT0gc3RlcF9uYW1lKTtcbiAgICAgICAgcmV0dXJuIChzdGVwX3Jlc3VsdCAmJiBzdGVwX3Jlc3VsdC5kYXRhKSB8fCBudWxsO1xuICAgIH1cblxuICAgIHNldFN0ZXBzID0gKHN0ZXBzOiBTdGVwSVtdLCBhdXRvaGFuZGxlID0gdHJ1ZSkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrb3V0U3RhdGVHZW5lcmF0aW9uKys7XG4gICAgICAgIGxldCBmaW5hbF9zdGVwcyA9IFtdO1xuICAgICAgICBzdGVwcy5mb3JFYWNoKChzdGVwLCBpKSA9PiBmaW5hbF9zdGVwcy5wdXNoKG5ldyBTdGVwKHN0ZXAubmFtZSwgc3RlcC5wcmlvcml0eSB8fCAoaSArIDEpKSkpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KGZpbmFsX3N0ZXBzKTtcblxuICAgICAgICAvLyBPYnRlbmVyIElQIHkgdWJpY2FjacOzblxuICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICBpcDogdGhpcy5pcFNlcnZpY2UuZ2V0SXAoKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiB0aGlzLmlwU2VydmljZS5nZXRMb2NhdGlvbigpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpXG4gICAgICAgIH0pLnN1YnNjcmliZShyZXN1bHRzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBpcDogcmVzdWx0cy5pcD8uaXAgfHwgJ3Vua25vd24nLFxuICAgICAgICAgICAgICAgIGNvdW50cnk6IHJlc3VsdHMubG9jYXRpb24/LmNvdW50cnkgfHwgJ3Vua25vd24nLFxuICAgICAgICAgICAgICAgIGNpdHk6IHJlc3VsdHMubG9jYXRpb24/LmNpdHkgfHwgJ3Vua25vd24nXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpO1xuICAgICAgICAgICAgY29uc3QgdXJsV2l0aFBhcmFtcyA9IGAke3RoaXMuZ2V0SGFzUHVyY2hhc2VDb25kaXRpb25zKCl9PyR7cXVlcnlTdHJpbmd9YDtcbiAgICAgICAgICAgIGNvbnN0IGNhcnRUb2tlbiA9IHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7XG5cbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodXJsV2l0aFBhcmFtcykudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdjaGVja291dF9pbml0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jYXJ0TG9jYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogdGhpcy5jYXJ0TG9jYWw/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuY2FydExvY2FsPy50b3RhbFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yID0+IHRoaXMuY2FydFNlcnZpY2UuaGFuZGxlQ2FydE11dGF0aW9uRXJyb3IoZXJyb3IsIGNhcnRUb2tlbilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFN0ZXBSZWFkeSA9IGFzeW5jIChzdGVwX251bWJlciwgZGF0YSwgb3JkZXI/LCBhdXRvbWF0aWM/KSA9PiB7XG4gICAgICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLmNoZWNrb3V0U3RhdGVHZW5lcmF0aW9uO1xuICAgICAgICBhd2FpdCB0aGlzLnJlc3RhcnRBbGxTdGVwc0Zyb20oc3RlcF9udW1iZXIpO1xuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5jaGVja291dFN0YXRlR2VuZXJhdGlvbikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLmNoZWNrb3V0U3RhdGVHZW5lcmF0aW9uKSByZXR1cm47XG4gICAgICAgICAgICBsZXQgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgc3RlcHMuZmluZChzdGVwID0+IHN0ZXAucHJpb3JpdHkgPT0gc3RlcF9udW1iZXIpLnJlYWR5KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGVwcyk7XG5cbiAgICAgICAgICAgIGlmIChvcmRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWwgPSBvcmRlci50b3RhbHMudG90YWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ2hlY2tvdXRSZWFkeSgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXBzW3N0ZXBzLmxlbmd0aCAtIDFdLm5hbWUgPT0gJ3NoaXBtZW50Jykge1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlYWR5U3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LCAxNTApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzZXRTdGVwRG9pbmcgPSBhc3luYyAoc3RlcF9udW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuY2hlY2tvdXRTdGF0ZUdlbmVyYXRpb247XG4gICAgICAgIGxldCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIHN0ZXBzID0gYXdhaXQgdGhpcy5yZXN0YXJ0QWxsU3RlcHNGcm9tKHN0ZXBfbnVtYmVyLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5jaGVja291dFN0YXRlR2VuZXJhdGlvbikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5wcmlvcml0eSA9PSBzdGVwX251bWJlcikuZG9pbmcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGVwcyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBJbnZhbGlkYSBkZSBpbm1lZGlhdG8gbG9zIGRhdG9zIHkgcGFzb3MgZGVsIGNoZWNrb3V0IGFzb2NpYWRvIGEgdW4gY2Fycml0byBmaW5hbGl6YWRvLiAqL1xuICAgIGludmFsaWRhdGVDaGVja291dFN0YXRlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrb3V0U3RhdGVHZW5lcmF0aW9uKys7XG4gICAgICAgIHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLm9uUmVhZHlTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLm9yZGVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5vcmRlclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5jaGVja291dF9kYXRhID0ge307XG4gICAgICAgIHRoaXMudG90YWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpPy5sZW5ndGgpIHRoaXMucmVzdGFydEFsbFN0ZXBzRnJvbSgxKTtcbiAgICB9XG5cbiAgICByZXN0YXJ0QWxsU3RlcHNGcm9tID0gKHN0ZXBfbnVtYmVyLCBpbmNsdWRlZCA9IHRydWUsIHVwZGF0ZSA9IHRydWUpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgc3RlcHMgPSBzdGVwcy5tYXAoKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGluY2x1ZGVkXG4gICAgICAgICAgICAgICAgPyAoc3RlcC5wcmlvcml0eSA+PSBzdGVwX251bWJlcikgJiYgc3RlcC5yZXN0YXJ0KClcbiAgICAgICAgICAgICAgICA6IChzdGVwLnByaW9yaXR5ID4gc3RlcF9udW1iZXIpICYmIHN0ZXAucmVzdGFydCgpXG4gICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgfSlcbiAgICAgICAgdXBkYXRlICYmIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RlcHMpO1xuICAgICAgICByZXR1cm4gc3RlcHM7XG4gICAgfVxuXG4gICAgaXNDaGVja291dFJlYWR5ID0gKCkgPT4ge1xuICAgICAgICBsZXQgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC52YWx1ZTtcbiAgICAgICAgY29uc3Qgc3RlcF9taXNzaW5nID0gc3RlcHMuZmluZChzdGVwID0+IHN0ZXAuaXNQZW5kaW5nKCkpO1xuICAgICAgICByZXR1cm4gIXN0ZXBfbWlzc2luZztcbiAgICB9XG5cbiAgICBpc1N0ZXBSZWFkeSA9IChzdGVwX25hbWUpID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpIHx8IFtdO1xuICAgICAgICBpZiAoIXN0ZXBzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBzdGVwID0gc3RlcHMuZmluZChzdGVwID0+IHN0ZXAubmFtZSA9PSBzdGVwX25hbWUpO1xuICAgICAgICBpZiAoIXN0ZXApIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gc3RlcC5pc1JlYWR5KCk7XG4gICAgfTtcblxuICAgIHNldE9yZGVyID0gKG9yZGVyKSA9PiB7IHRoaXMub3JkZXIgPSBvcmRlciwgdGhpcy5vcmRlclN1YmplY3QubmV4dChvcmRlcikgfTtcbiAgICBnZXRPcmRlciA9ICgpID0+IHRoaXMub3JkZXIgfHwgdGhpcy5vcmRlclN1YmplY3QudmFsdWU7XG5cbiAgICBwcml2YXRlIGNvbXBsZXRlT3JkZXIgPSAoKSA9PiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMuY29tcGxldGVBcGkoKSwgeyBlbWFpbDogdGhpcy5jaGVja291dF9kYXRhLmVtYWlsLCBub3RlczogdGhpcy5jaGVja291dF9kYXRhLm5vdGVzIHx8ICcnIH0pLnRvUHJvbWlzZSgpO1xuXG4gICAgY29tcGxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KCkpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gKHsgb2s6IGZhbHNlLCByZXF1aXJlX2xvZ2luOiBmYWxzZSwgbWVzc2FnZTogJ2NhcnQtdW5hdmFpbGFibGUnIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgY29uc3QgY2FydFRva2VuID0gdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuY29tcGxldGVPcmRlcigpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVycm9yLCBjYXJ0VG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh7IG9rOiBmYWxzZSwgcmVxdWlyZV9sb2dpbjogZmFsc2UsIG1lc3NhZ2U6ICdjYXJ0LW5vdC1hY3RpdmUnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXJlc3VsdCB8fFxuICAgICAgICAgICAgcmVzdWx0LmVycm9yIHx8XG4gICAgICAgICAgICByZXN1bHQuY29kZSA9PT0gJ2luc3VmZmljaWVudF9jcmVkaXQnIHx8XG4gICAgICAgICAgICByZXN1bHQuY29kZSA9PT0gJ2Vycm9yJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2hhbmdlSGF2ZVRvVXBkYXRlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gKHsgb2s6IGZhbHNlLCByZXF1aXJlX2xvZ2luOiB0cnVlLCBtZXNzYWdlOiAnbm90LWNvbXBsZXRlZCcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRPcmRlcihyZXN1bHQpO1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdwdXJjaGFzZScsIHsgLi4ucmVzdWx0LCBjdXJyZW5jeTogcmVzdWx0LmN1cnJlbmN5LCB2YWx1ZTogcmVzdWx0LnRvdGFsIH0pO1xuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNsZWFyQW5kUmVzZXRDYXJ0KCk7XG4gICAgICAgIHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLm9uUmVhZHlTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICByZXR1cm4gKHsgb2s6IHRydWUsIHJlcXVpcmVfbG9naW46IGZhbHNlLCBtZXNzYWdlOiAnJyB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVBc29jaWF0ZWREYXRhID0gKGNhcnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5jYXJ0U2VydmljZSAmJiB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRTdW1tYXJ5UHJpY2VQcmVzZW50YXRpb25cbiAgICAgICAgICAgID8gdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0U3VtbWFyeVByaWNlUHJlc2VudGF0aW9uKGNhcnQsIHVuZGVmaW5lZCwgdHJ1ZSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgY29uc3QgcGF5bWVudE1ldGhvZEFkanVzdG1lbnQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0UGF5bWVudE1ldGhvZEFkanVzdG1lbnQoY2FydCk7XG5cbiAgICAgICAgaWYgKHN1bW1hcnk/LnNvdXJjZSA9PT0gJ2xpbmVQcmljaW5nJykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBDaGVja291dERhdGFbXSA9IFtcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdwcm9kdWN0c0JlZm9yZURpc2NvdW50cycsIG5hbWU6ICdwcm9kdWN0cy1iZWZvcmUtZGlzY291bnRzJywgYW1vdW50OiBzdW1tYXJ5LnByb2R1Y3RzQmVmb3JlRGlzY291bnRzIH0sXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkubGluZURpc2NvdW50cyAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdsaW5lRGlzY291bnQnLCBuYW1lOiAnbGluZS1kaXNjb3VudHMnLCBhbW91bnQ6IHN1bW1hcnkubGluZURpc2NvdW50cyB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnc3VidG90YWwnLCBuYW1lOiAnc3VidG90YWwnLCBhbW91bnQ6IHN1bW1hcnkuc3VidG90YWwgfSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5vcmRlckRpc2NvdW50ICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ2Rpc2NvdW50JywgbmFtZTogJ2Rpc2NvdW50JywgYW1vdW50OiBzdW1tYXJ5Lm9yZGVyRGlzY291bnQgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LmNvdXBvbkRpc2NvdW50ICE9PSBudWxsICYmIHN1bW1hcnkuY291cG9uRGlzY291bnQgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnY291cG9uJywgbmFtZTogJ2NvdXBvbicsIGFtb3VudDogc3VtbWFyeS5jb3Vwb25EaXNjb3VudCB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkudGF4ZXMgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAndGF4ZXMnLCBuYW1lOiAndGF4ZXMnLCBhbW91bnQ6IHN1bW1hcnkudGF4ZXMsIHRheGVzSW5jbHVkZWRJblRvdGFsOiBzdW1tYXJ5LnRheGVzSW5jbHVkZWRJblRvdGFsIH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5jbGllbnRUYXhlcyAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdjbGllbnRUYXhlcycsIG5hbWU6ICdjbGllbnRUYXhlcycsIGFtb3VudDogc3VtbWFyeS5jbGllbnRUYXhlcyB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkuc2hpcHBpbmcgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnc2hpcG1lbnQnLCBuYW1lOiAnc2hpcG1lbnQnLCBhbW91bnQ6IHN1bW1hcnkuc2hpcHBpbmcgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihwYXltZW50TWV0aG9kQWRqdXN0bWVudCA/IFtwYXltZW50TWV0aG9kQWRqdXN0bWVudF0gOiBbXSksXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAndG90YWwnLCBuYW1lOiAndG90YWwnLCBhbW91bnQ6IHN1bW1hcnkudG90YWwgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMub3JkZXJVdGlscy5nZXRTdW1tYXJ5UHJvbW90aW9ucyhjYXJ0KTtcbiAgICAgICAgY29uc3QgdG90YWxzID0gY2FydD8udG90YWxzO1xuICAgICAgICBpZiAoIXRvdGFscykge1xuICAgICAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2hpcG1lbnRBbW91bnQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0U3VtbWFyeVNoaXBtZW50QW1vdW50KGNhcnQpO1xuICAgICAgICBpZiAodG90YWxzLnRheGVzICE9IDApIHtcbiAgICAgICAgICAgIGxldCB0b3RhbCA9IHsgLi4ucmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSB9O1xuICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAndGF4ZXMnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd0YXhlcycsXG4gICAgICAgICAgICAgICAgYW1vdW50OiB0b3RhbHMudGF4ZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRvdGFsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hpcG1lbnRBbW91bnQgIT09IG51bGwgJiYgcmVzdWx0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHNoaXBtZW50SW5kZXggPSByZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50eXBlID09PSAnc2hpcG1lbnQnKTtcbiAgICAgICAgICAgIGNvbnN0IHNoaXBtZW50SXRlbTogQ2hlY2tvdXREYXRhID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzaGlwbWVudCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ3NoaXBtZW50JyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHNoaXBtZW50QW1vdW50XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoc2hpcG1lbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbc2hpcG1lbnRJbmRleF0gPSBzaGlwbWVudEl0ZW07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsSW5kZXggPSByZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50eXBlID09PSAndG90YWwnKTtcbiAgICAgICAgICAgICAgICBpZiAodG90YWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LnNsaWNlKDAsIHRvdGFsSW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpcG1lbnRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LnNsaWNlKHRvdGFsSW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc2hpcG1lbnRJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmVzdGFydENoZWNrb3V0ID0gKCkgPT4geyB9XG5cbn1cbiJdfQ==
@@ -11,8 +11,9 @@ import { BehaviorSubject } from 'rxjs';
11
11
  import { ToastrService } from 'ngx-toastr';
12
12
  import { AuthService } from '../auth.service';
13
13
  import * as i0 from "@angular/core";
14
- import * as i1 from "../../../public-api";
14
+ import * as i1 from "../cart.service";
15
15
  import * as i2 from "ngx-toastr";
16
+ import * as i3 from "../../core.consts";
16
17
  let ErrorHandlerService = class ErrorHandlerService {
17
18
  constructor(cartService, toastrService, injector, consts) {
18
19
  this.cartService = cartService;
@@ -73,9 +74,9 @@ ErrorHandlerService.ctorParameters = () => [
73
74
  { type: Injector },
74
75
  { type: Constants }
75
76
  ];
76
- ErrorHandlerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ErrorHandlerService_Factory() { return new ErrorHandlerService(i0.ɵɵinject(i1.CartService), i0.ɵɵinject(i2.ToastrService), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.Constants)); }, token: ErrorHandlerService, providedIn: "root" });
77
+ ErrorHandlerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ErrorHandlerService_Factory() { return new ErrorHandlerService(i0.ɵɵinject(i1.CartService), i0.ɵɵinject(i2.ToastrService), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i3.Constants)); }, token: ErrorHandlerService, providedIn: "root" });
77
78
  ErrorHandlerService = __decorate([
78
79
  Injectable({ providedIn: 'root' })
79
80
  ], ErrorHandlerService);
80
81
  export { ErrorHandlerService };
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L2Vycm9yLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFJOUMsSUFBYSxtQkFBbUIsR0FBaEMsTUFBYSxtQkFBbUI7SUFLNUIsWUFBb0IsV0FBd0IsRUFDaEMsYUFBNEIsRUFDNUIsUUFBa0IsRUFDbEIsTUFBaUI7UUFIVCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFOckIsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUMsQ0FBQztRQUNyRCxXQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQU9qRCxlQUFVLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzNCLENBQUMsQ0FBQTtRQUVELGlDQUE0QixHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsQ0FBQyxDQUFBO1FBRUQsZ0JBQVcsR0FBRyxDQUFDLEtBQWdCLEVBQUUsRUFBRTtZQUM3QixLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN2RCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFO2dCQUM5QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5RCxNQUFNLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDN0Y7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3BGO1lBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZCLENBQUMsQ0FBQTtRQUVELGVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDZCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2hDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQTtRQUVELHlCQUFvQixHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQ3hDLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDaEIsS0FBSyxjQUFjO29CQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDbkQsS0FBSyxtREFBbUQ7b0JBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFBQyxNQUFNO2dCQUN4RixLQUFLLGtDQUFrQztvQkFBRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDekYsS0FBSyxlQUFlO29CQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDckQ7b0JBQVMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFBQyxNQUFNO2FBQzNDO1FBQ0wsQ0FBQyxDQUFBO0lBdENnQyxDQUFDO0NBdUNyQyxDQUFBOztZQTFDb0MsV0FBVztZQUNqQixhQUFhO1lBQ2xCLFFBQVE7WUFDVixTQUFTOzs7QUFScEIsbUJBQW1CO0lBRC9CLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztHQUN0QixtQkFBbUIsQ0ErQy9CO1NBL0NZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCb2R5RXJyb3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NoZWNrb3V0L2NoZWNrb3V0LWVycm9yJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyB0aW1lb3V0IH0gZnJvbSAncnhqcy1jb21wYXQvb3BlcmF0b3IvdGltZW91dCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRXJyb3JIYW5kbGVyU2VydmljZSB7XG5cbiAgICBwcml2YXRlIGVycm9yU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Qm9keUVycm9yPihudWxsKTtcbiAgICBwdWJsaWMgZXJyb3IkID0gdGhpcy5lcnJvclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cykgeyB9XG5cbiAgICBvdXRPZlN0b2NrID0gKGVycm9yOiBCb2R5RXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS51cGRhdGVJdGVtc09uRXJyb3IoZXJyb3IuY29udGVudCwgZXJyb3IuY29kZSlcbiAgICAgICAgdGhpcy5vdGhlckVycm9ycyhlcnJvcilcbiAgICB9XG5cbiAgICBjaGFubmVBY2Nlc3NQZXJtaXNzaW9uRGVuaWVkID0gKGVycm9yOiBCb2R5RXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoQXV0aFNlcnZpY2UpLmxvZ291dCgpXG4gICAgICAgIHRoaXMub3RoZXJFcnJvcnMoZXJyb3IpXG4gICAgfVxuXG4gICAgb3RoZXJFcnJvcnMgPSAoZXJyb3I6IEJvZHlFcnJvcikgPT4ge1xuICAgICAgICAgIGVycm9yICYmIGVycm9yLm1lc3NhZ2UgJiYgdGhpcy5lcnJvclN1YmplY3QubmV4dChlcnJvcilcbiAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gJ291dF9vZl9zdG9jaycpIHtcbiAgICAgICAgICAgICAgIGNvbnN0IGlkcyA9IGVycm9yLmNvbnRlbnQubWFwKGUgPT4gZS5wcm9kdWN0LmlkKS5qb2luKCc8YnI+Jyk7XG4gICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7ZXJyb3IubWVzc2FnZX08YnI+JHtpZHN9YDtcbiAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KG1lc3NhZ2UsICcnLCB7IGNsb3NlQnV0dG9uOiB0cnVlLCB0aW1lT3V0OiAwLCBlbmFibGVIdG1sOiB0cnVlIH0pO1xuICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coZXJyb3IubWVzc2FnZSwgJycsIHsgY2xvc2VCdXR0b246IHRydWUsIHRpbWVPdXQ6IDYwMDAgfSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNsZWFyRXJyb3IoKVxuICAgIH1cblxuICAgIGNsZWFyRXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKVxuICAgICAgICB9LCAzMDAwKTtcbiAgICB9XG5cbiAgICBoYW5kbGVyRXJyb3JSZXNwb25zZSA9IChlcnJvcjogQm9keUVycm9yKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZXJyb3IuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnb3V0X29mX3N0b2NrJzogdGhpcy5vdXRPZlN0b2NrKGVycm9yKTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpdGVtc193aXRoX3Byb2R1Y3Rfb3JfcHJvZHVjdF92YXJpYW50X25vdF9lbmFibGVkJzogdGhpcy5vdXRPZlN0b2NrKGVycm9yKTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjaGFubmVsX2FjY2Vzc19wZXJtaXNzaW9uX2RlbmllZCc6IHRoaXMuY2hhbm5lQWNjZXNzUGVybWlzc2lvbkRlbmllZChlcnJvcik7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndXNlcl9kaXNhYmxlZCc6IHRoaXMub3RoZXJFcnJvcnMoZXJyb3IpOyBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6IHRoaXMub3RoZXJFcnJvcnMoZXJyb3IpOyBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L2Vycm9yLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBSTlDLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBSzVCLFlBQW9CLFdBQXdCLEVBQ2hDLGFBQTRCLEVBQzVCLFFBQWtCLEVBQ2xCLE1BQWlCO1FBSFQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBTnJCLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7UUFDckQsV0FBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFPakQsZUFBVSxHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzQixDQUFDLENBQUE7UUFFRCxpQ0FBNEIsR0FBRyxDQUFDLEtBQWdCLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtZQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzNCLENBQUMsQ0FBQTtRQUVELGdCQUFXLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDN0IsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDdkQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtnQkFDOUIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUQsTUFBTSxPQUFPLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzdGO2lCQUFNO2dCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNwRjtZQUNGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN2QixDQUFDLENBQUE7UUFFRCxlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ2QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNoQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDYixDQUFDLENBQUE7UUFFRCx5QkFBb0IsR0FBRyxDQUFDLEtBQWdCLEVBQUUsRUFBRTtZQUN4QyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hCLEtBQUssY0FBYztvQkFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQ25ELEtBQUssbURBQW1EO29CQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDeEYsS0FBSyxrQ0FBa0M7b0JBQUUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQ3pGLEtBQUssZUFBZTtvQkFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQ3JEO29CQUFTLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQUMsTUFBTTthQUMzQztRQUNMLENBQUMsQ0FBQTtJQXRDZ0MsQ0FBQztDQXVDckMsQ0FBQTs7WUExQ29DLFdBQVc7WUFDakIsYUFBYTtZQUNsQixRQUFRO1lBQ1YsU0FBUzs7O0FBUnBCLG1CQUFtQjtJQUQvQixVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7R0FDdEIsbUJBQW1CLENBK0MvQjtTQS9DWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9keUVycm9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jaGVja291dC9jaGVja291dC1lcnJvcic7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGltZW91dCB9IGZyb20gJ3J4anMtY29tcGF0L29wZXJhdG9yL3RpbWVvdXQnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlclNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBlcnJvclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJvZHlFcnJvcj4obnVsbCk7XG4gICAgcHVibGljIGVycm9yJCA9IHRoaXMuZXJyb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMpIHsgfVxuXG4gICAgb3V0T2ZTdG9jayA9IChlcnJvcjogQm9keUVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UudXBkYXRlSXRlbXNPbkVycm9yKGVycm9yLmNvbnRlbnQsIGVycm9yLmNvZGUpXG4gICAgICAgIHRoaXMub3RoZXJFcnJvcnMoZXJyb3IpXG4gICAgfVxuXG4gICAgY2hhbm5lQWNjZXNzUGVybWlzc2lvbkRlbmllZCA9IChlcnJvcjogQm9keUVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlKS5sb2dvdXQoKVxuICAgICAgICB0aGlzLm90aGVyRXJyb3JzKGVycm9yKVxuICAgIH1cblxuICAgIG90aGVyRXJyb3JzID0gKGVycm9yOiBCb2R5RXJyb3IpID0+IHtcbiAgICAgICAgICBlcnJvciAmJiBlcnJvci5tZXNzYWdlICYmIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoZXJyb3IpXG4gICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdvdXRfb2Zfc3RvY2snKSB7XG4gICAgICAgICAgICAgICBjb25zdCBpZHMgPSBlcnJvci5jb250ZW50Lm1hcChlID0+IGUucHJvZHVjdC5pZCkuam9pbignPGJyPicpO1xuICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAke2Vycm9yLm1lc3NhZ2V9PGJyPiR7aWRzfWA7XG4gICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhtZXNzYWdlLCAnJywgeyBjbG9zZUJ1dHRvbjogdHJ1ZSwgdGltZU91dDogMCwgZW5hYmxlSHRtbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KGVycm9yLm1lc3NhZ2UsICcnLCB7IGNsb3NlQnV0dG9uOiB0cnVlLCB0aW1lT3V0OiA2MDAwIH0pO1xuICAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jbGVhckVycm9yKClcbiAgICB9XG5cbiAgICBjbGVhckVycm9yID0gKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbClcbiAgICAgICAgfSwgMzAwMCk7XG4gICAgfVxuXG4gICAgaGFuZGxlckVycm9yUmVzcG9uc2UgPSAoZXJyb3I6IEJvZHlFcnJvcikgPT4ge1xuICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ291dF9vZl9zdG9jayc6IHRoaXMub3V0T2ZTdG9jayhlcnJvcik7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaXRlbXNfd2l0aF9wcm9kdWN0X29yX3Byb2R1Y3RfdmFyaWFudF9ub3RfZW5hYmxlZCc6IHRoaXMub3V0T2ZTdG9jayhlcnJvcik7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2hhbm5lbF9hY2Nlc3NfcGVybWlzc2lvbl9kZW5pZWQnOiB0aGlzLmNoYW5uZUFjY2Vzc1Blcm1pc3Npb25EZW5pZWQoZXJyb3IpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VzZXJfZGlzYWJsZWQnOiB0aGlzLm90aGVyRXJyb3JzKGVycm9yKTsgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OiB0aGlzLm90aGVyRXJyb3JzKGVycm9yKTsgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -58,20 +58,40 @@ let PaymentService = class PaymentService extends StepService {
58
58
  });
59
59
  });
60
60
  // putPayment = (method) => this.connection.put(this.putPaymentApi(method), { method }).toPromise();
61
- this.putPayment = (method) => this.connection
62
- .put(this.putPaymentApi(method), { method })
63
- .toPromise()
64
- .then(res => {
65
- this.analyticsService.callEvent('add_payment_info', res);
66
- return res;
67
- }, err => {
68
- return new Promise((resolve, reject) => reject(new Error(err.error)));
69
- }).catch(err => console.error(err));
70
- this.getPreference = (shipment_data) => this.connection.post(this.getPreferenceApi(), shipment_data).pipe(map(res => (res.preference || res))).toPromise();
71
- this.getCheckoutMobbex = (shipment_data) => this.connection.post(this.getCheckoutMobbexApi(), shipment_data).toPromise();
72
- this.getCheckoutBancard = (shipment_data) => this.connection.get(this.getCheckoutBancardApi(), shipment_data).toPromise();
73
- this.getCheckoutBamboo = (shipment_data) => this.connection.get(this.getCheckoutBambooApi(), shipment_data).toPromise();
74
- this.getCheckoutPlaceToPay = (shipment_data) => this.connection.post(this.getCheckoutPlaceToPayApi(), shipment_data).toPromise();
61
+ this.putPayment = (method) => {
62
+ if (!this.cartService.canMutateCart())
63
+ return Promise.resolve(false);
64
+ const cartContext = this.cartService.captureCartResponseContext();
65
+ return this.connection.put(this.putPaymentApi(method), { method }).toPromise().then(res => {
66
+ if (!this.cartService.applyCartResponse(res, cartContext, false))
67
+ return false;
68
+ this.analyticsService.callEvent('add_payment_info', res);
69
+ return res;
70
+ }, err => {
71
+ if (this.cartService.handleCartMutationError(err, cartContext.token))
72
+ return false;
73
+ return new Promise((resolve, reject) => reject(new Error(err.error)));
74
+ }).catch(err => {
75
+ if (this.cartService.handleCartMutationError(err, cartContext.token))
76
+ return false;
77
+ return console.error(err);
78
+ });
79
+ };
80
+ this.getPreference = (shipment_data) => !this.cartService.canMutateCart()
81
+ ? Promise.resolve(false)
82
+ : this.connection.post(this.getPreferenceApi(), shipment_data).pipe(map(res => (res.preference || res))).toPromise();
83
+ this.getCheckoutMobbex = (shipment_data) => !this.cartService.canMutateCart()
84
+ ? Promise.resolve(false)
85
+ : this.connection.post(this.getCheckoutMobbexApi(), shipment_data).toPromise();
86
+ this.getCheckoutBancard = (shipment_data) => !this.cartService.canMutateCart()
87
+ ? Promise.resolve(false)
88
+ : this.connection.get(this.getCheckoutBancardApi(), shipment_data).toPromise();
89
+ this.getCheckoutBamboo = (shipment_data) => !this.cartService.canMutateCart()
90
+ ? Promise.resolve(false)
91
+ : this.connection.get(this.getCheckoutBambooApi(), shipment_data).toPromise();
92
+ this.getCheckoutPlaceToPay = (shipment_data) => !this.cartService.canMutateCart()
93
+ ? Promise.resolve(false)
94
+ : this.connection.post(this.getCheckoutPlaceToPayApi(), shipment_data).toPromise();
75
95
  this.getRandomArbitrary = () => Math.round(Math.random() * (Number(9999999) - Number(2000003)) + Number(2000003));
76
96
  this.checkoutService.paymentMethods$.subscribe(methods => {
77
97
  if (methods && methods.length) {
@@ -92,4 +112,4 @@ PaymentService = __decorate([
92
112
  Injectable()
93
113
  ], PaymentService);
94
114
  export { PaymentService };
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L3BheW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3hELElBQWEsY0FBYyxHQUEzQixNQUFhLGNBQWUsU0FBUSxXQUFXO0lBYzNDLFlBQW9CLFVBQTZCLEVBQVUsYUFBMkIsRUFBVSxXQUF3QixFQUFVLE1BQWlCLEVBQ3ZJLGVBQWdDLEVBQVUsZ0JBQWtDO1FBQ3BGLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUZQLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDdkksb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUscUJBQWdCLEdBQWhCLGdC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O1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RlcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0L3N0ZXAtc2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uL3BhcmFtZXRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGF5bWVudFNlcnZpY2UgZXh0ZW5kcyBTdGVwU2VydmljZSB7XG5cbiAgICBwcml2YXRlIHBheW1lbnRNZXRob2RzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwdWJsaWMgbWV0aG9kcyQgPSB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGJhc2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvJyArICdjaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKTtcbiAgICBnZXRQYXltZW50TWV0aG9kc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50JztcbiAgICBnZXRQcmVmZXJlbmNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL21lcmNhZG8tcGFnby8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJlZmVyZW5jZSc7XG4gICAgZ2V0Q2hlY2tvdXRNb2JiZXhBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvbW9iYmV4LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcm9jZXNzLXBheW1lbnQnXG4gICAgZ2V0Q2hlY2tvdXRCYW5jYXJkQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2JhbmNhcmQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3Byb2Nlc3MtcGF5bWVudCcgLy8/dGVzdE9yZGVyTnVtYmVyPScgKyB0aGlzLmdldFJhbmRvbUFyYml0cmFyeSgpXG4gICAgZ2V0Q2hlY2tvdXRCYW1ib29BcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFtYm9vLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcm9jZXNzLXBheW1lbnQnXG4gICAgZ2V0Q2hlY2tvdXRQbGFjZVRvUGF5QXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL3BsYWNlLXRvLXBheS8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJvY2Vzcy1wYXltZW50JztcbiAgICBwdXRQYXltZW50QXBpID0gKG1ldGhvZCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQvJyArIG1ldGhvZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHJpdmF0ZSBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSwgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGNoZWNrb3V0U2VydmljZSk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnBheW1lbnRNZXRob2RzJC5zdWJzY3JpYmUobWV0aG9kcyA9PiB7XG4gICAgICAgICAgICBpZiAobWV0aG9kcyAmJiBtZXRob2RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFBheW1lbnRNZXRob2RzID0gYXN5bmMgKCkgPT4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldFBheW1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRob2RzID0gcmVzLnBheW1lbnRzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IE9iamVjdC5rZXlzKHJlcy5wYXltZW50c1swXS5tZXRob2RzKS5tYXAoa2V5ID0+IHJlcy5wYXltZW50c1swXS5tZXRob2RzW2tleV0pXG4gICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgIGlmIChtZXRob2RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRQYXltZW50TWV0aG9kcyhtZXRob2RzKTtcbiAgICAgICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgICAgICB9LFxuICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIHB1dFBheW1lbnQgPSAobWV0aG9kKSA9PiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0UGF5bWVudEFwaShtZXRob2QpLCB7IG1ldGhvZCB9KS50b1Byb21pc2UoKTtcbiAgICBwdXRQYXltZW50ID0gKG1ldGhvZCkgPT5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uXG4gICAgICAgICAgICAucHV0KHRoaXMucHV0UGF5bWVudEFwaShtZXRob2QpLCB7IG1ldGhvZCB9KVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdhZGRfcGF5bWVudF9pbmZvJywgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyLmVycm9yKSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKVxuXG4gICAgZ2V0UHJlZmVyZW5jZSA9IChzaGlwbWVudF9kYXRhKSA9PiB0aGlzLmNvbm5lY3Rpb24ucG9zdCh0aGlzLmdldFByZWZlcmVuY2VBcGkoKSwgc2hpcG1lbnRfZGF0YSkucGlwZShtYXAocmVzID0+IChyZXMucHJlZmVyZW5jZSB8fCByZXMpKSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDaGVja291dE1vYmJleCA9IChzaGlwbWVudF9kYXRhKSA9PiB0aGlzLmNvbm5lY3Rpb24ucG9zdCh0aGlzLmdldENoZWNrb3V0TW9iYmV4QXBpKCksIHNoaXBtZW50X2RhdGEpLnRvUHJvbWlzZSgpO1xuXG4gICAgZ2V0Q2hlY2tvdXRCYW5jYXJkID0gKHNoaXBtZW50X2RhdGEpID0+IHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRDaGVja291dEJhbmNhcmRBcGkoKSwgc2hpcG1lbnRfZGF0YSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDaGVja291dEJhbWJvbyA9IChzaGlwbWVudF9kYXRhKSA9PiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0Q2hlY2tvdXRCYW1ib29BcGkoKSwgc2hpcG1lbnRfZGF0YSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDaGVja291dFBsYWNlVG9QYXkgPSAoc2hpcG1lbnRfZGF0YSkgPT5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5nZXRDaGVja291dFBsYWNlVG9QYXlBcGkoKSwgc2hpcG1lbnRfZGF0YSkudG9Qcm9taXNlKCk7XG5cbiAgICBwcml2YXRlIGdldFJhbmRvbUFyYml0cmFyeSA9ICgpID0+IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIChOdW1iZXIoOTk5OTk5OSkgLSBOdW1iZXIoMjAwMDAwMykpICsgTnVtYmVyKDIwMDAwMDMpKVxufSJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L3BheW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3hELElBQWEsY0FBYyxHQUEzQixNQUFhLGNBQWUsU0FBUSxXQUFXO0lBYzNDLFlBQW9CLFVBQTZCLEVBQVUsYUFBMkIsRUFBVSxXQUF3QixFQUFVLE1BQWlCLEVBQ3ZJLGVBQWdDLEVBQVUsZ0JBQWtDO1FBQ3BGLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUZQLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDdkksb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUscUJBQWdCLEdBQWhCLGdC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WSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RlcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0L3N0ZXAtc2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uL3BhcmFtZXRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGF5bWVudFNlcnZpY2UgZXh0ZW5kcyBTdGVwU2VydmljZSB7XG5cbiAgICBwcml2YXRlIHBheW1lbnRNZXRob2RzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwdWJsaWMgbWV0aG9kcyQgPSB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGJhc2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvJyArICdjaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKTtcbiAgICBnZXRQYXltZW50TWV0aG9kc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50JztcbiAgICBnZXRQcmVmZXJlbmNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL21lcmNhZG8tcGFnby8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJlZmVyZW5jZSc7XG4gICAgZ2V0Q2hlY2tvdXRNb2JiZXhBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvbW9iYmV4LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcm9jZXNzLXBheW1lbnQnXG4gICAgZ2V0Q2hlY2tvdXRCYW5jYXJkQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2JhbmNhcmQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3Byb2Nlc3MtcGF5bWVudCcgLy8/dGVzdE9yZGVyTnVtYmVyPScgKyB0aGlzLmdldFJhbmRvbUFyYml0cmFyeSgpXG4gICAgZ2V0Q2hlY2tvdXRCYW1ib29BcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFtYm9vLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcm9jZXNzLXBheW1lbnQnXG4gICAgZ2V0Q2hlY2tvdXRQbGFjZVRvUGF5QXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL3BsYWNlLXRvLXBheS8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJvY2Vzcy1wYXltZW50JztcbiAgICBwdXRQYXltZW50QXBpID0gKG1ldGhvZCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQvJyArIG1ldGhvZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHJpdmF0ZSBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSwgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGNoZWNrb3V0U2VydmljZSk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnBheW1lbnRNZXRob2RzJC5zdWJzY3JpYmUobWV0aG9kcyA9PiB7XG4gICAgICAgICAgICBpZiAobWV0aG9kcyAmJiBtZXRob2RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFBheW1lbnRNZXRob2RzID0gYXN5bmMgKCkgPT4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldFBheW1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRob2RzID0gcmVzLnBheW1lbnRzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IE9iamVjdC5rZXlzKHJlcy5wYXltZW50c1swXS5tZXRob2RzKS5tYXAoa2V5ID0+IHJlcy5wYXltZW50c1swXS5tZXRob2RzW2tleV0pXG4gICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgIGlmIChtZXRob2RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRQYXltZW50TWV0aG9kcyhtZXRob2RzKTtcbiAgICAgICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgICAgICB9LFxuICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIHB1dFBheW1lbnQgPSAobWV0aG9kKSA9PiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0UGF5bWVudEFwaShtZXRob2QpLCB7IG1ldGhvZCB9KS50b1Byb21pc2UoKTtcbiAgICBwdXRQYXltZW50ID0gKG1ldGhvZCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuY2FuTXV0YXRlQ2FydCgpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgY29uc3QgY2FydENvbnRleHQgPSB0aGlzLmNhcnRTZXJ2aWNlLmNhcHR1cmVDYXJ0UmVzcG9uc2VDb250ZXh0KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0UGF5bWVudEFwaShtZXRob2QpLCB7IG1ldGhvZCB9KS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuYXBwbHlDYXJ0UmVzcG9uc2UocmVzLCBjYXJ0Q29udGV4dCwgZmFsc2UpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnYWRkX3BheW1lbnRfaW5mbycsIHJlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVyciwgY2FydENvbnRleHQudG9rZW4pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyLmVycm9yKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jYXJ0U2VydmljZS5oYW5kbGVDYXJ0TXV0YXRpb25FcnJvcihlcnIsIGNhcnRDb250ZXh0LnRva2VuKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0UHJlZmVyZW5jZSA9IChzaGlwbWVudF9kYXRhKSA9PiAhdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KClcbiAgICAgICAgPyBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gICAgICAgIDogdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5nZXRQcmVmZXJlbmNlQXBpKCksIHNoaXBtZW50X2RhdGEpLnBpcGUobWFwKHJlcyA9PiAocmVzLnByZWZlcmVuY2UgfHwgcmVzKSkpLnRvUHJvbWlzZSgpO1xuXG4gICAgZ2V0Q2hlY2tvdXRNb2JiZXggPSAoc2hpcG1lbnRfZGF0YSkgPT4gIXRoaXMuY2FydFNlcnZpY2UuY2FuTXV0YXRlQ2FydCgpXG4gICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKVxuICAgICAgICA6IHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuZ2V0Q2hlY2tvdXRNb2JiZXhBcGkoKSwgc2hpcG1lbnRfZGF0YSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDaGVja291dEJhbmNhcmQgPSAoc2hpcG1lbnRfZGF0YSkgPT4gIXRoaXMuY2FydFNlcnZpY2UuY2FuTXV0YXRlQ2FydCgpXG4gICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKVxuICAgICAgICA6IHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRDaGVja291dEJhbmNhcmRBcGkoKSwgc2hpcG1lbnRfZGF0YSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDaGVja291dEJhbWJvbyA9IChzaGlwbWVudF9kYXRhKSA9PiAhdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KClcbiAgICAgICAgPyBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gICAgICAgIDogdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldENoZWNrb3V0QmFtYm9vQXBpKCksIHNoaXBtZW50X2RhdGEpLnRvUHJvbWlzZSgpO1xuXG4gICAgZ2V0Q2hlY2tvdXRQbGFjZVRvUGF5ID0gKHNoaXBtZW50X2RhdGEpID0+XG4gICAgICAgICF0aGlzLmNhcnRTZXJ2aWNlLmNhbk11dGF0ZUNhcnQoKVxuICAgICAgICAgICAgPyBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gICAgICAgICAgICA6IHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuZ2V0Q2hlY2tvdXRQbGFjZVRvUGF5QXBpKCksIHNoaXBtZW50X2RhdGEpLnRvUHJvbWlzZSgpO1xuXG4gICAgcHJpdmF0ZSBnZXRSYW5kb21BcmJpdHJhcnkgPSAoKSA9PiBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAoTnVtYmVyKDk5OTk5OTkpIC0gTnVtYmVyKDIwMDAwMDMpKSArIE51bWJlcigyMDAwMDAzKSlcbn1cbiJdfQ==