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
@@ -86,11 +86,16 @@ import { Router } from '@angular/router';
86
86
  import { ToastService } from '../../utils/toast.service';
87
87
  import { IpService } from '../ip-address.service';
88
88
  import * as i0 from "@angular/core";
89
- import * as i1 from "../../../public-api";
90
- import * as i2 from "../../utils/order-util.service";
91
- import * as i3 from "@angular/router";
92
- import * as i4 from "./error-handler.service";
93
- import * as i5 from "../ip-address.service";
89
+ import * as i1 from "../../api/connection.service";
90
+ import * as i2 from "../cart.service";
91
+ import * as i3 from "../../core.consts";
92
+ import * as i4 from "../../utils/toast.service";
93
+ import * as i5 from "../../utils/order-util.service";
94
+ import * as i6 from "../analytics.service";
95
+ import * as i7 from "../auth.service";
96
+ import * as i8 from "@angular/router";
97
+ import * as i9 from "./error-handler.service";
98
+ import * as i10 from "../ip-address.service";
94
99
  var CheckoutService = /** @class */ (function () {
95
100
  function CheckoutService(connection, cartService, consts, toastrService, orderUtils, analyticsService, authService, router, errorHandler, ipService) {
96
101
  var _this = this;
@@ -120,6 +125,7 @@ var CheckoutService = /** @class */ (function () {
120
125
  this.orderSubject = new BehaviorSubject(null);
121
126
  this.asociatedDataSubject = new BehaviorSubject(null);
122
127
  this.checkout_data = {};
128
+ this.checkoutStateGeneration = 0;
123
129
  this.order$ = this.orderSubject.asObservable();
124
130
  this.state$ = this.stateSubject.asObservable();
125
131
  this.loading$ = this.loadingSubject.asObservable();
@@ -161,6 +167,7 @@ var CheckoutService = /** @class */ (function () {
161
167
  };
162
168
  this.setSteps = function (steps, autohandle) {
163
169
  if (autohandle === void 0) { autohandle = true; }
170
+ _this.checkoutStateGeneration++;
164
171
  var final_steps = [];
165
172
  steps.forEach(function (step, i) { return final_steps.push(new Step(step.name, step.priority || (i + 1))); });
166
173
  _this.stateSubject.next(final_steps);
@@ -177,20 +184,28 @@ var CheckoutService = /** @class */ (function () {
177
184
  };
178
185
  var queryString = new URLSearchParams(params).toString();
179
186
  var urlWithParams = _this.getHasPurchaseConditions() + "?" + queryString;
187
+ var cartToken = _this.cartService.getCartToken();
180
188
  _this.connection.getErrorNotHandler(urlWithParams).toPromise().then(function (res) {
181
189
  var _a, _b;
182
190
  _this.analyticsService.callEvent('checkout_init', __assign(__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 }));
183
- });
191
+ }, function (error) { return _this.cartService.handleCartMutationError(error, cartToken); });
184
192
  });
185
193
  };
186
194
  this.setStepReady = function (step_number, data, order, automatic) { return __awaiter(_this, void 0, void 0, function () {
195
+ var generation;
187
196
  var _this = this;
188
197
  return __generator(this, function (_a) {
189
198
  switch (_a.label) {
190
- case 0: return [4 /*yield*/, this.restartAllStepsFrom(step_number)];
199
+ case 0:
200
+ generation = this.checkoutStateGeneration;
201
+ return [4 /*yield*/, this.restartAllStepsFrom(step_number)];
191
202
  case 1:
192
203
  _a.sent();
204
+ if (generation !== this.checkoutStateGeneration)
205
+ return [2 /*return*/, false];
193
206
  setTimeout(function () {
207
+ if (generation !== _this.checkoutStateGeneration)
208
+ return;
194
209
  var steps = _this.stateSubject.getValue();
195
210
  steps.find(function (step) { return step.priority == step_number; }).ready(data);
196
211
  _this.stateSubject.next(steps);
@@ -213,20 +228,39 @@ var CheckoutService = /** @class */ (function () {
213
228
  });
214
229
  }); };
215
230
  this.setStepDoing = function (step_number) { return __awaiter(_this, void 0, void 0, function () {
216
- var steps;
231
+ var generation, steps;
217
232
  return __generator(this, function (_a) {
218
233
  switch (_a.label) {
219
234
  case 0:
235
+ generation = this.checkoutStateGeneration;
220
236
  steps = this.stateSubject.getValue();
221
237
  return [4 /*yield*/, this.restartAllStepsFrom(step_number, false, false)];
222
238
  case 1:
223
239
  steps = _a.sent();
240
+ if (generation !== this.checkoutStateGeneration)
241
+ return [2 /*return*/, false];
224
242
  steps.find(function (step) { return step.priority == step_number; }).doing();
225
243
  this.stateSubject.next(steps);
226
244
  return [2 /*return*/, true];
227
245
  }
228
246
  });
229
247
  }); };
248
+ /** Invalida de inmediato los datos y pasos del checkout asociado a un carrito finalizado. */
249
+ this.invalidateCheckoutState = function () {
250
+ var _a;
251
+ _this.checkoutStateGeneration++;
252
+ _this.canCheckoutSubject.next(false);
253
+ _this.onReadySubject.next(false);
254
+ _this.loadingSubject.next(false);
255
+ _this.order = null;
256
+ _this.orderSubject.next(null);
257
+ _this.checkout_data = {};
258
+ _this.total = undefined;
259
+ _this.asociatedDataSubject.next(null);
260
+ _this.paymentMethodsSubject.next([]);
261
+ if ((_a = _this.stateSubject.getValue()) === null || _a === void 0 ? void 0 : _a.length)
262
+ _this.restartAllStepsFrom(1);
263
+ };
230
264
  this.restartAllStepsFrom = function (step_number, included, update) {
231
265
  if (included === void 0) { included = true; }
232
266
  if (update === void 0) { update = true; }
@@ -258,14 +292,31 @@ var CheckoutService = /** @class */ (function () {
258
292
  this.getOrder = function () { return _this.order || _this.orderSubject.value; };
259
293
  this.completeOrder = function () { return _this.connection.put(_this.completeApi(), { email: _this.checkout_data.email, notes: _this.checkout_data.notes || '' }).toPromise(); };
260
294
  this.complete = function () { return __awaiter(_this, void 0, void 0, function () {
261
- var result;
295
+ var cartToken, result, error_1;
262
296
  return __generator(this, function (_a) {
263
297
  switch (_a.label) {
264
298
  case 0:
299
+ if (!this.cartService.canMutateCart()) {
300
+ this.loadingSubject.next(false);
301
+ return [2 /*return*/, ({ ok: false, require_login: false, message: 'cart-unavailable' })];
302
+ }
265
303
  this.loadingSubject.next(true);
266
- return [4 /*yield*/, this.completeOrder()];
304
+ cartToken = this.cartService.getCartToken();
305
+ _a.label = 1;
267
306
  case 1:
307
+ _a.trys.push([1, 3, , 4]);
308
+ return [4 /*yield*/, this.completeOrder()];
309
+ case 2:
268
310
  result = _a.sent();
311
+ return [3 /*break*/, 4];
312
+ case 3:
313
+ error_1 = _a.sent();
314
+ this.loadingSubject.next(false);
315
+ if (this.cartService.handleCartMutationError(error_1, cartToken)) {
316
+ return [2 /*return*/, ({ ok: false, require_login: false, message: 'cart-not-active' })];
317
+ }
318
+ throw error_1;
319
+ case 4:
269
320
  if (!result ||
270
321
  result.error ||
271
322
  result.code === 'insufficient_credit' ||
@@ -389,7 +440,7 @@ var CheckoutService = /** @class */ (function () {
389
440
  { type: ErrorHandlerService },
390
441
  { type: IpService }
391
442
  ]; };
392
- 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" });
443
+ 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" });
393
444
  CheckoutService = __decorate([
394
445
  Injectable({
395
446
  providedIn: 'root'
@@ -398,4 +449,4 @@ var CheckoutService = /** @class */ (function () {
398
449
  return CheckoutService;
399
450
  }());
400
451
  export { CheckoutService };
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBS2xEO0lB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QW1CO2dCQUNiLGdCQUFnQjtnQkFDdEIsV0FBVztnQkFDZixNQUFNO2dCQUNBLG1CQUFtQjtnQkFDdEIsU0FBUzs7O0lBMUN2QixlQUFlO1FBSDNCLFVBQVUsQ0FBQztZQUNSLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUM7T0FDVyxlQUFlLENBK1MzQjswQkFwVUQ7Q0FvVUMsQUEvU0QsSUErU0M7U0EvU1ksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdGVwSSwgU3RlcFR5cGVJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zdGVwJztcbmltcG9ydCB7IFN0ZXAgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0L3N0ZXAnO1xuaW1wb3J0IHsgQ2hlY2tvdXREYXRhLCBDaGVja291dERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jaGVja291dC1kYXRhJztcbmltcG9ydCB7IE9yZGVyVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9vcmRlci11dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3VzZXInO1xuaW1wb3J0IHsgRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IElwU2VydmljZSB9IGZyb20gJy4uL2lwLWFkZHJlc3Muc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRTZXJ2aWNlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGJhc2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7XG4gICAgZ2V0UGF5bWVudE1ldGhvZHNBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvcGF5bWVudCc7XG4gICAgcHV0QWRkcmVzc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9hZGRyZXNzJztcbiAgICBwdXRQYXltZW50QXBpID0gKG1ldGhvZCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQvJyArIG1ldGhvZDtcbiAgICBjb21wbGV0ZUFwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9jb21wbGV0ZSc7XG4gICAgcGVyc2lzdFNoaXBtZW50QXBpID0gKCkgPT4gJyc7XG4gICAgZ2V0UHJlZmVyZW5jZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9tZXJjYWRvLXBhZ28vJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3ByZWZlcmVuY2UnO1xuICAgIGdldEhhc1B1cmNoYXNlQ29uZGl0aW9ucyA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jYXJ0cy8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvaGFzX3B1cmNoYXNlX2NvbmRpdGlvbnMnO1xuXG4gICAgcHJpdmF0ZSBjYW5DaGVja291dFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgb25SZWFkeVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHByaXZhdGUgc3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdGVwW10+KG51bGwpO1xuICAgIHByaXZhdGUgcGF5bWVudE1ldGhvZHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICAgIHByaXZhdGUgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIG9yZGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgICBwcml2YXRlIGFzb2NpYXRlZERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGVja291dERhdGFbXT4obnVsbCk7XG4gICAgcHJpdmF0ZSBvcmRlcjogYW55O1xuICAgIHByaXZhdGUgY2hlY2tvdXRfZGF0YTogYW55ID0ge307XG4gICAgcHVibGljIHRvdGFsO1xuICAgIHByaXZhdGUgY2FydExvY2FsO1xuICAgIHByaXZhdGUgdXNlcjogVXNlcjtcblxuICAgIHB1YmxpYyBvcmRlciQgPSB0aGlzLm9yZGVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgc3RhdGUkID0gdGhpcy5zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGxvYWRpbmckID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgY2FuQ2hlY2tvdXQkID0gdGhpcy5jYW5DaGVja291dFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGFzb2NpYXRlZERhdGEkID0gdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgb25SZWFkeSQgPSB0aGlzLm9uUmVhZHlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBwYXltZW50TWV0aG9kcyQgPSB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLFxuICAgICAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBvcmRlclV0aWxzOiBPcmRlclV0aWxpdHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGlwU2VydmljZTogSXBTZXJ2aWNlKSB7XG5cbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5jYXJ0U2VydmljZS5jYXJ0SXRlbXMsIHRoaXMuY2FydFNlcnZpY2UubG9hZGluZ10pLnN1YnNjcmliZSgoW2l0ZW1zLCBsb2FkaW5nXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFsb2FkaW5nICYmIGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbkNoZWNrb3V0U3ViamVjdC5uZXh0KHRydWUpXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5nZXRUb3RhbEFtb3VudCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsID0gcmVzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2FydC5zdWJzY3JpYmUoY2FydCA9PiBjYXJ0ICYmICh0aGlzLmNhcnRMb2NhbCA9IGNhcnQpICYmIHRoaXMudXBkYXRlQXNvY2lhdGVkRGF0YShjYXJ0KSk7XG4gICAgICAgIHRoaXMub3JkZXIkLnN1YnNjcmliZShvcmRlciA9PiBvcmRlciAmJiB0aGlzLnVwZGF0ZUFzb2NpYXRlZERhdGEob3JkZXIpKVxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJQcm9maWxlKCkuc3Vic2NyaWJlKHVzZXIgPT4gdGhpcy51c2VyID0gdXNlcilcbiAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuZXJyb3IkLnBpcGUoZmlsdGVyKHJlcyA9PiByZXMgIT0gbnVsbCkpLnN1YnNjcmliZShcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09ICdvdXRfb2Zfc3RvY2snIHx8IHJlcy5jb2RlID09ICdpdGVtc193aXRoX3Byb2R1Y3Rfb3JfcHJvZHVjdF92YXJpYW50X25vdF9lbmFibGVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygncmVkaXJlY3QtY2FydCcpXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2NhcnQnKVxuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIClcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICB9XG5cbiAgICB1cGRhdGVPcmRlciA9IChvcmRlcikgPT4gb3JkZXIgJiYgdGhpcy5vcmRlclN1YmplY3QubmV4dChvcmRlcik7XG5cbiAgICBzZXRDaGVja291dE5vdGVzID0gKG5vdGVzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja291dF9kYXRhLm5vdGVzID0gbm90ZXMgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0Q2hlY2tvdXROb3RlcyA9ICgpID0+IHRoaXMuY2hlY2tvdXRfZGF0YS5ub3RlcyB8fCAnJztcblxuICAgIHNldFBheW1lbnRNZXRob2RzID0gKG1ldGhvZHM6IGFueVtdKSA9PiB7XG4gICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyB8fCBbXSk7XG4gICAgfVxuXG4gICAgcHJlZmV0Y2hQYXltZW50TWV0aG9kcyA9IGFzeW5jICgpID0+XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRQYXltZW50TWV0aG9kc0FwaSgpKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRob2RzID0gcmVzLnBheW1lbnRzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBPYmplY3Qua2V5cyhyZXMucGF5bWVudHNbMF0ubWV0aG9kcykubWFwKGtleSA9PiByZXMucGF5bWVudHNbMF0ubWV0aG9kc1trZXldKVxuICAgICAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgICAgIGlmIChtZXRob2RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5uZXh0KG1ldGhvZHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICBnZXRTdGVwRGF0YSA9IChzdGVwX25hbWU6IFN0ZXBUeXBlSSkgPT4ge1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghc3RlcHMgfHwgIXN0ZXBzLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHN0ZXBfcmVzdWx0ID0gc3RlcHMuZmluZChzdGVwID0+IHN0ZXAubmFtZSA9PSBzdGVwX25hbWUpO1xuICAgICAgICByZXR1cm4gKHN0ZXBfcmVzdWx0ICYmIHN0ZXBfcmVzdWx0LmRhdGEpIHx8IG51bGw7XG4gICAgfVxuXG4gICAgc2V0U3RlcHMgPSAoc3RlcHM6IFN0ZXBJW10sIGF1dG9oYW5kbGUgPSB0cnVlKSA9PiB7XG4gICAgICAgIGxldCBmaW5hbF9zdGVwcyA9IFtdO1xuICAgICAgICBzdGVwcy5mb3JFYWNoKChzdGVwLCBpKSA9PiBmaW5hbF9zdGVwcy5wdXNoKG5ldyBTdGVwKHN0ZXAubmFtZSwgc3RlcC5wcmlvcml0eSB8fCAoaSArIDEpKSkpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KGZpbmFsX3N0ZXBzKTtcblxuICAgICAgICAvLyBPYnRlbmVyIElQIHkgdWJpY2FjacOzblxuICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICBpcDogdGhpcy5pcFNlcnZpY2UuZ2V0SXAoKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiB0aGlzLmlwU2VydmljZS5nZXRMb2NhdGlvbigpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpXG4gICAgICAgIH0pLnN1YnNjcmliZShyZXN1bHRzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBpcDogcmVzdWx0cy5pcD8uaXAgfHwgJ3Vua25vd24nLFxuICAgICAgICAgICAgICAgIGNvdW50cnk6IHJlc3VsdHMubG9jYXRpb24/LmNvdW50cnkgfHwgJ3Vua25vd24nLFxuICAgICAgICAgICAgICAgIGNpdHk6IHJlc3VsdHMubG9jYXRpb24/LmNpdHkgfHwgJ3Vua25vd24nXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpO1xuICAgICAgICAgICAgY29uc3QgdXJsV2l0aFBhcmFtcyA9IGAke3RoaXMuZ2V0SGFzUHVyY2hhc2VDb25kaXRpb25zKCl9PyR7cXVlcnlTdHJpbmd9YDtcblxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldEVycm9yTm90SGFuZGxlcih1cmxXaXRoUGFyYW1zKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ2NoZWNrb3V0X2luaXQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNhcnRMb2NhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmNhcnRMb2NhbD8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5jYXJ0TG9jYWw/LnRvdGFsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFN0ZXBSZWFkeSA9IGFzeW5jIChzdGVwX251bWJlciwgZGF0YSwgb3JkZXI/LCBhdXRvbWF0aWM/KSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVzdGFydEFsbFN0ZXBzRnJvbShzdGVwX251bWJlcik7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLnByaW9yaXR5ID09IHN0ZXBfbnVtYmVyKS5yZWFkeShkYXRhKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RlcHMpO1xuXG4gICAgICAgICAgICBpZiAob3JkZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyU3ViamVjdC5uZXh0KG9yZGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsID0gb3JkZXIudG90YWxzLnRvdGFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0NoZWNrb3V0UmVhZHkoKSkge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwc1tzdGVwcy5sZW5ndGggLSAxXS5uYW1lID09ICdzaGlwbWVudCcpIHtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25SZWFkeVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgc2V0U3RlcERvaW5nID0gYXN5bmMgKHN0ZXBfbnVtYmVyKSA9PiB7XG4gICAgICAgIGxldCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIHN0ZXBzID0gYXdhaXQgdGhpcy5yZXN0YXJ0QWxsU3RlcHNGcm9tKHN0ZXBfbnVtYmVyLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5wcmlvcml0eSA9PSBzdGVwX251bWJlcikuZG9pbmcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGVwcyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJlc3RhcnRBbGxTdGVwc0Zyb20gPSAoc3RlcF9udW1iZXIsIGluY2x1ZGVkID0gdHJ1ZSwgdXBkYXRlID0gdHJ1ZSkgPT4ge1xuICAgICAgICBsZXQgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgaW5jbHVkZWRcbiAgICAgICAgICAgICAgICA/IChzdGVwLnByaW9yaXR5ID49IHN0ZXBfbnVtYmVyKSAmJiBzdGVwLnJlc3RhcnQoKVxuICAgICAgICAgICAgICAgIDogKHN0ZXAucHJpb3JpdHkgPiBzdGVwX251bWJlcikgJiYgc3RlcC5yZXN0YXJ0KClcbiAgICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICB9KVxuICAgICAgICB1cGRhdGUgJiYgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGVwcyk7XG4gICAgICAgIHJldHVybiBzdGVwcztcbiAgICB9XG5cbiAgICBpc0NoZWNrb3V0UmVhZHkgPSAoKSA9PiB7XG4gICAgICAgIGxldCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LnZhbHVlO1xuICAgICAgICBjb25zdCBzdGVwX21pc3NpbmcgPSBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5pc1BlbmRpbmcoKSk7XG4gICAgICAgIHJldHVybiAhc3RlcF9taXNzaW5nO1xuICAgIH1cblxuICAgIGlzU3RlcFJlYWR5ID0gKHN0ZXBfbmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCkgfHwgW107XG4gICAgICAgIGlmICghc3RlcHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5uYW1lID09IHN0ZXBfbmFtZSk7XG4gICAgICAgIGlmICghc3RlcCkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBzdGVwLmlzUmVhZHkoKTtcbiAgICB9O1xuXG4gICAgc2V0T3JkZXIgPSAob3JkZXIpID0+IHsgdGhpcy5vcmRlciA9IG9yZGVyLCB0aGlzLm9yZGVyU3ViamVjdC5uZXh0KG9yZGVyKSB9O1xuICAgIGdldE9yZGVyID0gKCkgPT4gdGhpcy5vcmRlciB8fCB0aGlzLm9yZGVyU3ViamVjdC52YWx1ZTtcblxuICAgIHByaXZhdGUgY29tcGxldGVPcmRlciA9ICgpID0+IHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5jb21wbGV0ZUFwaSgpLCB7IGVtYWlsOiB0aGlzLmNoZWNrb3V0X2RhdGEuZW1haWwsIG5vdGVzOiB0aGlzLmNoZWNrb3V0X2RhdGEubm90ZXMgfHwgJycgfSkudG9Qcm9taXNlKCk7XG5cbiAgICBjb21wbGV0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb21wbGV0ZU9yZGVyKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFyZXN1bHQgfHxcbiAgICAgICAgICAgIHJlc3VsdC5lcnJvciB8fFxuICAgICAgICAgICAgcmVzdWx0LmNvZGUgPT09ICdpbnN1ZmZpY2llbnRfY3JlZGl0JyB8fFxuICAgICAgICAgICAgcmVzdWx0LmNvZGUgPT09ICdlcnJvcidcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNoYW5nZUhhdmVUb1VwZGF0ZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuICh7IG9rOiBmYWxzZSwgcmVxdWlyZV9sb2dpbjogdHJ1ZSwgbWVzc2FnZTogJ25vdC1jb21wbGV0ZWQnIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0T3JkZXIocmVzdWx0KTtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncHVyY2hhc2UnLCB7IC4uLnJlc3VsdCwgY3VycmVuY3k6IHJlc3VsdC5jdXJyZW5jeSwgdmFsdWU6IHJlc3VsdC50b3RhbCB9KTtcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jbGVhckFuZFJlc2V0Q2FydCgpO1xuICAgICAgICB0aGlzLmNhbkNoZWNrb3V0U3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5vblJlYWR5U3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuICh7IG9rOiB0cnVlLCByZXF1aXJlX2xvZ2luOiBmYWxzZSwgbWVzc2FnZTogJycgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQXNvY2lhdGVkRGF0YSA9IChjYXJ0OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuY2FydFNlcnZpY2UgJiYgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0U3VtbWFyeVByaWNlUHJlc2VudGF0aW9uXG4gICAgICAgICAgICA/IHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFN1bW1hcnlQcmljZVByZXNlbnRhdGlvbihjYXJ0LCB1bmRlZmluZWQsIHRydWUpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIGNvbnN0IHBheW1lbnRNZXRob2RBZGp1c3RtZW50ID0gdGhpcy5vcmRlclV0aWxzLmdldFBheW1lbnRNZXRob2RBZGp1c3RtZW50KGNhcnQpO1xuXG4gICAgICAgIGlmIChzdW1tYXJ5Py5zb3VyY2UgPT09ICdsaW5lUHJpY2luZycpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogQ2hlY2tvdXREYXRhW10gPSBbXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAncHJvZHVjdHNCZWZvcmVEaXNjb3VudHMnLCBuYW1lOiAncHJvZHVjdHMtYmVmb3JlLWRpc2NvdW50cycsIGFtb3VudDogc3VtbWFyeS5wcm9kdWN0c0JlZm9yZURpc2NvdW50cyB9LFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LmxpbmVEaXNjb3VudHMgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnbGluZURpc2NvdW50JywgbmFtZTogJ2xpbmUtZGlzY291bnRzJywgYW1vdW50OiBzdW1tYXJ5LmxpbmVEaXNjb3VudHMgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ3N1YnRvdGFsJywgbmFtZTogJ3N1YnRvdGFsJywgYW1vdW50OiBzdW1tYXJ5LnN1YnRvdGFsIH0sXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkub3JkZXJEaXNjb3VudCAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdkaXNjb3VudCcsIG5hbWU6ICdkaXNjb3VudCcsIGFtb3VudDogc3VtbWFyeS5vcmRlckRpc2NvdW50IH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5jb3Vwb25EaXNjb3VudCAhPT0gbnVsbCAmJiBzdW1tYXJ5LmNvdXBvbkRpc2NvdW50ICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ2NvdXBvbicsIG5hbWU6ICdjb3Vwb24nLCBhbW91bnQ6IHN1bW1hcnkuY291cG9uRGlzY291bnQgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LnRheGVzICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ3RheGVzJywgbmFtZTogJ3RheGVzJywgYW1vdW50OiBzdW1tYXJ5LnRheGVzLCB0YXhlc0luY2x1ZGVkSW5Ub3RhbDogc3VtbWFyeS50YXhlc0luY2x1ZGVkSW5Ub3RhbCB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkuY2xpZW50VGF4ZXMgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnY2xpZW50VGF4ZXMnLCBuYW1lOiAnY2xpZW50VGF4ZXMnLCBhbW91bnQ6IHN1bW1hcnkuY2xpZW50VGF4ZXMgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LnNoaXBwaW5nICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ3NoaXBtZW50JywgbmFtZTogJ3NoaXBtZW50JywgYW1vdW50OiBzdW1tYXJ5LnNoaXBwaW5nIH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4ocGF5bWVudE1ldGhvZEFkanVzdG1lbnQgPyBbcGF5bWVudE1ldGhvZEFkanVzdG1lbnRdIDogW10pLFxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ3RvdGFsJywgbmFtZTogJ3RvdGFsJywgYW1vdW50OiBzdW1tYXJ5LnRvdGFsIH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0U3VtbWFyeVByb21vdGlvbnMoY2FydCk7XG4gICAgICAgIGNvbnN0IHRvdGFscyA9IGNhcnQ/LnRvdGFscztcbiAgICAgICAgaWYgKCF0b3RhbHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNoaXBtZW50QW1vdW50ID0gdGhpcy5vcmRlclV0aWxzLmdldFN1bW1hcnlTaGlwbWVudEFtb3VudChjYXJ0KTtcbiAgICAgICAgaWYgKHRvdGFscy50YXhlcyAhPSAwKSB7XG4gICAgICAgICAgICBsZXQgdG90YWwgPSB7IC4uLnJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gfTtcbiAgICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RheGVzJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAndGF4ZXMnLFxuICAgICAgICAgICAgICAgIGFtb3VudDogdG90YWxzLnRheGVzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0b3RhbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNoaXBtZW50QW1vdW50ICE9PSBudWxsICYmIHJlc3VsdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBzaGlwbWVudEluZGV4ID0gcmVzdWx0LmZpbmRJbmRleChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3NoaXBtZW50Jyk7XG4gICAgICAgICAgICBjb25zdCBzaGlwbWVudEl0ZW06IENoZWNrb3V0RGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2hpcG1lbnQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaGlwbWVudCcsXG4gICAgICAgICAgICAgICAgYW1vdW50OiBzaGlwbWVudEFtb3VudFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHNoaXBtZW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W3NoaXBtZW50SW5kZXhdID0gc2hpcG1lbnRJdGVtO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbEluZGV4ID0gcmVzdWx0LmZpbmRJbmRleChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RvdGFsJyk7XG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdC5zbGljZSgwLCB0b3RhbEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoaXBtZW50SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdC5zbGljZSh0b3RhbEluZGV4KVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNoaXBtZW50SXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgIH1cblxuICAgIHJlc3RhcnRDaGVja291dCA9ICgpID0+IHsgfVxuXG59XG4iXX0=
452
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7QUFL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fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RlcEksIFN0ZXBUeXBlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc3RlcCc7XG5pbXBvcnQgeyBTdGVwIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jaGVja291dC9zdGVwJztcbmltcG9ydCB7IENoZWNrb3V0RGF0YSwgQ2hlY2tvdXREYXRhVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY2hlY2tvdXQtZGF0YSc7XG5pbXBvcnQgeyBPcmRlclV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvb3JkZXItdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy91c2VyJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJcFNlcnZpY2UgfSBmcm9tICcuLi9pcC1hZGRyZXNzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0U2VydmljZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBiYXNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpO1xuICAgIGdldFBheW1lbnRNZXRob2RzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQnO1xuICAgIHB1dEFkZHJlc3NBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvYWRkcmVzcyc7XG4gICAgcHV0UGF5bWVudEFwaSA9IChtZXRob2QpID0+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
  var ErrorHandlerService = /** @class */ (function () {
17
18
  function ErrorHandlerService(cartService, toastrService, injector, consts) {
18
19
  var _this = this;
@@ -73,11 +74,11 @@ var ErrorHandlerService = /** @class */ (function () {
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
  return ErrorHandlerService;
81
82
  }());
82
83
  export { ErrorHandlerService };
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L2Vycm9yLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFJOUM7SUFLSSw2QkFBb0IsV0FBd0IsRUFDaEMsYUFBNEIsRUFDNUIsUUFBa0IsRUFDbEIsTUFBaUI7UUFIN0IsaUJBR2tDO1FBSGQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBTnJCLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7UUFDckQsV0FBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFPakQsZUFBVSxHQUFHLFVBQUMsS0FBZ0I7WUFDMUIsS0FBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM5RCxLQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzNCLENBQUMsQ0FBQTtRQUVELGlDQUE0QixHQUFHLFVBQUMsS0FBZ0I7WUFDNUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7WUFDdkMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzQixDQUFDLENBQUE7UUFFRCxnQkFBVyxHQUFHLFVBQUMsS0FBZ0I7WUFDekIsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDdkQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtnQkFDOUIsSUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBWixDQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlELElBQU0sT0FBTyxHQUFNLEtBQUssQ0FBQyxPQUFPLFlBQU8sR0FBSyxDQUFDO2dCQUM3QyxLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzdGO2lCQUFNO2dCQUNILEtBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNwRjtZQUNGLEtBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN2QixDQUFDLENBQUE7UUFFRCxlQUFVLEdBQUc7WUFDVCxVQUFVLENBQUM7Z0JBQ1AsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDaEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFBO1FBRUQseUJBQW9CLEdBQUcsVUFBQyxLQUFnQjtZQUNwQyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hCLEtBQUssY0FBYztvQkFBRSxLQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQ25ELEtBQUssbURBQW1EO29CQUFFLEtBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDeEYsS0FBSyxrQ0FBa0M7b0JBQUUsS0FBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQ3pGLEtBQUssZUFBZTtvQkFBRSxLQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQ3JEO29CQUFTLEtBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQUMsTUFBTTthQUMzQztRQUNMLENBQUMsQ0FBQTtJQXRDZ0MsQ0FBQzs7Z0JBSEQsV0FBVztnQkFDakIsYUFBYTtnQkFDbEIsUUFBUTtnQkFDVixTQUFTOzs7SUFScEIsbUJBQW1CO1FBRC9CLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztPQUN0QixtQkFBbUIsQ0ErQy9COzhCQTFERDtDQTBEQyxBQS9DRCxJQStDQztTQS9DWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9keUVycm9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jaGVja291dC9jaGVja291dC1lcnJvcic7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGltZW91dCB9IGZyb20gJ3J4anMtY29tcGF0L29wZXJhdG9yL3RpbWVvdXQnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlclNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBlcnJvclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJvZHlFcnJvcj4obnVsbCk7XG4gICAgcHVibGljIGVycm9yJCA9IHRoaXMuZXJyb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMpIHsgfVxuXG4gICAgb3V0T2ZTdG9jayA9IChlcnJvcjogQm9keUVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UudXBkYXRlSXRlbXNPbkVycm9yKGVycm9yLmNvbnRlbnQsIGVycm9yLmNvZGUpXG4gICAgICAgIHRoaXMub3RoZXJFcnJvcnMoZXJyb3IpXG4gICAgfVxuXG4gICAgY2hhbm5lQWNjZXNzUGVybWlzc2lvbkRlbmllZCA9IChlcnJvcjogQm9keUVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlKS5sb2dvdXQoKVxuICAgICAgICB0aGlzLm90aGVyRXJyb3JzKGVycm9yKVxuICAgIH1cblxuICAgIG90aGVyRXJyb3JzID0gKGVycm9yOiBCb2R5RXJyb3IpID0+IHtcbiAgICAgICAgICBlcnJvciAmJiBlcnJvci5tZXNzYWdlICYmIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoZXJyb3IpXG4gICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdvdXRfb2Zfc3RvY2snKSB7XG4gICAgICAgICAgICAgICBjb25zdCBpZHMgPSBlcnJvci5jb250ZW50Lm1hcChlID0+IGUucHJvZHVjdC5pZCkuam9pbignPGJyPicpO1xuICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAke2Vycm9yLm1lc3NhZ2V9PGJyPiR7aWRzfWA7XG4gICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhtZXNzYWdlLCAnJywgeyBjbG9zZUJ1dHRvbjogdHJ1ZSwgdGltZU91dDogMCwgZW5hYmxlSHRtbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KGVycm9yLm1lc3NhZ2UsICcnLCB7IGNsb3NlQnV0dG9uOiB0cnVlLCB0aW1lT3V0OiA2MDAwIH0pO1xuICAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jbGVhckVycm9yKClcbiAgICB9XG5cbiAgICBjbGVhckVycm9yID0gKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbClcbiAgICAgICAgfSwgMzAwMCk7XG4gICAgfVxuXG4gICAgaGFuZGxlckVycm9yUmVzcG9uc2UgPSAoZXJyb3I6IEJvZHlFcnJvcikgPT4ge1xuICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ291dF9vZl9zdG9jayc6IHRoaXMub3V0T2ZTdG9jayhlcnJvcik7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaXRlbXNfd2l0aF9wcm9kdWN0X29yX3Byb2R1Y3RfdmFyaWFudF9ub3RfZW5hYmxlZCc6IHRoaXMub3V0T2ZTdG9jayhlcnJvcik7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2hhbm5lbF9hY2Nlc3NfcGVybWlzc2lvbl9kZW5pZWQnOiB0aGlzLmNoYW5uZUFjY2Vzc1Blcm1pc3Npb25EZW5pZWQoZXJyb3IpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VzZXJfZGlzYWJsZWQnOiB0aGlzLm90aGVyRXJyb3JzKGVycm9yKTsgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OiB0aGlzLm90aGVyRXJyb3JzKGVycm9yKTsgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L2Vycm9yLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBSTlDO0lBS0ksNkJBQW9CLFdBQXdCLEVBQ2hDLGFBQTRCLEVBQzVCLFFBQWtCLEVBQ2xCLE1BQWlCO1FBSDdCLGlCQUdrQztRQUhkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQU5yQixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFZLElBQUksQ0FBQyxDQUFDO1FBQ3JELFdBQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBT2pELGVBQVUsR0FBRyxVQUFDLEtBQWdCO1lBQzFCLEtBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDOUQsS0FBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzQixDQUFDLENBQUE7UUFFRCxpQ0FBNEIsR0FBRyxVQUFDLEtBQWdCO1lBQzVDLEtBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1lBQ3ZDLEtBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsQ0FBQyxDQUFBO1FBRUQsZ0JBQVcsR0FBRyxVQUFDLEtBQWdCO1lBQ3pCLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3ZELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUU7Z0JBQzlCLElBQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQVosQ0FBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5RCxJQUFNLE9BQU8sR0FBTSxLQUFLLENBQUMsT0FBTyxZQUFPLEdBQUssQ0FBQztnQkFDN0MsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUM3RjtpQkFBTTtnQkFDSCxLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDcEY7WUFDRixLQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDdkIsQ0FBQyxDQUFBO1FBRUQsZUFBVSxHQUFHO1lBQ1QsVUFBVSxDQUFDO2dCQUNQLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2hDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQTtRQUVELHlCQUFvQixHQUFHLFVBQUMsS0FBZ0I7WUFDcEMsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQixLQUFLLGNBQWM7b0JBQUUsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFBQyxNQUFNO2dCQUNuRCxLQUFLLG1EQUFtRDtvQkFBRSxLQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQ3hGLEtBQUssa0NBQWtDO29CQUFFLEtBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFBQyxNQUFNO2dCQUN6RixLQUFLLGVBQWU7b0JBQUUsS0FBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFBQyxNQUFNO2dCQUNyRDtvQkFBUyxLQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUFDLE1BQU07YUFDM0M7UUFDTCxDQUFDLENBQUE7SUF0Q2dDLENBQUM7O2dCQUhELFdBQVc7Z0JBQ2pCLGFBQWE7Z0JBQ2xCLFFBQVE7Z0JBQ1YsU0FBUzs7O0lBUnBCLG1CQUFtQjtRQUQvQixVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7T0FDdEIsbUJBQW1CLENBK0MvQjs4QkExREQ7Q0EwREMsQUEvQ0QsSUErQ0M7U0EvQ1ksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvZHlFcnJvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY2hlY2tvdXQvY2hlY2tvdXQtZXJyb3InO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IHRpbWVvdXQgfSBmcm9tICdyeGpzLWNvbXBhdC9vcGVyYXRvci90aW1lb3V0JztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBFcnJvckhhbmRsZXJTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgZXJyb3JTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCb2R5RXJyb3I+KG51bGwpO1xuICAgIHB1YmxpYyBlcnJvciQgPSB0aGlzLmVycm9yU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzKSB7IH1cblxuICAgIG91dE9mU3RvY2sgPSAoZXJyb3I6IEJvZHlFcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnVwZGF0ZUl0ZW1zT25FcnJvcihlcnJvci5jb250ZW50LCBlcnJvci5jb2RlKVxuICAgICAgICB0aGlzLm90aGVyRXJyb3JzKGVycm9yKVxuICAgIH1cblxuICAgIGNoYW5uZUFjY2Vzc1Blcm1pc3Npb25EZW5pZWQgPSAoZXJyb3I6IEJvZHlFcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmluamVjdG9yLmdldChBdXRoU2VydmljZSkubG9nb3V0KClcbiAgICAgICAgdGhpcy5vdGhlckVycm9ycyhlcnJvcilcbiAgICB9XG5cbiAgICBvdGhlckVycm9ycyA9IChlcnJvcjogQm9keUVycm9yKSA9PiB7XG4gICAgICAgICAgZXJyb3IgJiYgZXJyb3IubWVzc2FnZSAmJiB0aGlzLmVycm9yU3ViamVjdC5uZXh0KGVycm9yKVxuICAgICAgICAgIGlmIChlcnJvci5jb2RlID09PSAnb3V0X29mX3N0b2NrJykge1xuICAgICAgICAgICAgICAgY29uc3QgaWRzID0gZXJyb3IuY29udGVudC5tYXAoZSA9PiBlLnByb2R1Y3QuaWQpLmpvaW4oJzxicj4nKTtcbiAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtlcnJvci5tZXNzYWdlfTxicj4ke2lkc31gO1xuICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3cobWVzc2FnZSwgJycsIHsgY2xvc2VCdXR0b246IHRydWUsIHRpbWVPdXQ6IDAsIGVuYWJsZUh0bWw6IHRydWUgfSk7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhlcnJvci5tZXNzYWdlLCAnJywgeyBjbG9zZUJ1dHRvbjogdHJ1ZSwgdGltZU91dDogNjAwMCB9KTtcbiAgICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2xlYXJFcnJvcigpXG4gICAgfVxuXG4gICAgY2xlYXJFcnJvciA9ICgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KG51bGwpXG4gICAgICAgIH0sIDMwMDApO1xuICAgIH1cblxuICAgIGhhbmRsZXJFcnJvclJlc3BvbnNlID0gKGVycm9yOiBCb2R5RXJyb3IpID0+IHtcbiAgICAgICAgc3dpdGNoIChlcnJvci5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdvdXRfb2Zfc3RvY2snOiB0aGlzLm91dE9mU3RvY2soZXJyb3IpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2l0ZW1zX3dpdGhfcHJvZHVjdF9vcl9wcm9kdWN0X3ZhcmlhbnRfbm90X2VuYWJsZWQnOiB0aGlzLm91dE9mU3RvY2soZXJyb3IpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NoYW5uZWxfYWNjZXNzX3Blcm1pc3Npb25fZGVuaWVkJzogdGhpcy5jaGFubmVBY2Nlc3NQZXJtaXNzaW9uRGVuaWVkKGVycm9yKTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1c2VyX2Rpc2FibGVkJzogdGhpcy5vdGhlckVycm9ycyhlcnJvcik7IGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDogdGhpcy5vdGhlckVycm9ycyhlcnJvcik7IGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -103,22 +103,40 @@ var PaymentService = /** @class */ (function (_super) {
103
103
  }); };
104
104
  // putPayment = (method) => this.connection.put(this.putPaymentApi(method), { method }).toPromise();
105
105
  _this.putPayment = function (method) {
106
- return _this.connection
107
- .put(_this.putPaymentApi(method), { method: method })
108
- .toPromise()
109
- .then(function (res) {
106
+ if (!_this.cartService.canMutateCart())
107
+ return Promise.resolve(false);
108
+ var cartContext = _this.cartService.captureCartResponseContext();
109
+ return _this.connection.put(_this.putPaymentApi(method), { method: method }).toPromise().then(function (res) {
110
+ if (!_this.cartService.applyCartResponse(res, cartContext, false))
111
+ return false;
110
112
  _this.analyticsService.callEvent('add_payment_info', res);
111
113
  return res;
112
114
  }, function (err) {
115
+ if (_this.cartService.handleCartMutationError(err, cartContext.token))
116
+ return false;
113
117
  return new Promise(function (resolve, reject) { return reject(new Error(err.error)); });
114
- }).catch(function (err) { return console.error(err); });
118
+ }).catch(function (err) {
119
+ if (_this.cartService.handleCartMutationError(err, cartContext.token))
120
+ return false;
121
+ return console.error(err);
122
+ });
115
123
  };
116
- _this.getPreference = function (shipment_data) { return _this.connection.post(_this.getPreferenceApi(), shipment_data).pipe(map(function (res) { return (res.preference || res); })).toPromise(); };
117
- _this.getCheckoutMobbex = function (shipment_data) { return _this.connection.post(_this.getCheckoutMobbexApi(), shipment_data).toPromise(); };
118
- _this.getCheckoutBancard = function (shipment_data) { return _this.connection.get(_this.getCheckoutBancardApi(), shipment_data).toPromise(); };
119
- _this.getCheckoutBamboo = function (shipment_data) { return _this.connection.get(_this.getCheckoutBambooApi(), shipment_data).toPromise(); };
124
+ _this.getPreference = function (shipment_data) { return !_this.cartService.canMutateCart()
125
+ ? Promise.resolve(false)
126
+ : _this.connection.post(_this.getPreferenceApi(), shipment_data).pipe(map(function (res) { return (res.preference || res); })).toPromise(); };
127
+ _this.getCheckoutMobbex = function (shipment_data) { return !_this.cartService.canMutateCart()
128
+ ? Promise.resolve(false)
129
+ : _this.connection.post(_this.getCheckoutMobbexApi(), shipment_data).toPromise(); };
130
+ _this.getCheckoutBancard = function (shipment_data) { return !_this.cartService.canMutateCart()
131
+ ? Promise.resolve(false)
132
+ : _this.connection.get(_this.getCheckoutBancardApi(), shipment_data).toPromise(); };
133
+ _this.getCheckoutBamboo = function (shipment_data) { return !_this.cartService.canMutateCart()
134
+ ? Promise.resolve(false)
135
+ : _this.connection.get(_this.getCheckoutBambooApi(), shipment_data).toPromise(); };
120
136
  _this.getCheckoutPlaceToPay = function (shipment_data) {
121
- return _this.connection.post(_this.getCheckoutPlaceToPayApi(), shipment_data).toPromise();
137
+ return !_this.cartService.canMutateCart()
138
+ ? Promise.resolve(false)
139
+ : _this.connection.post(_this.getCheckoutPlaceToPayApi(), shipment_data).toPromise();
122
140
  };
123
141
  _this.getRandomArbitrary = function () { return Math.round(Math.random() * (Number(9999999) - Number(2000003)) + Number(2000003)); };
124
142
  _this.checkoutService.paymentMethods$.subscribe(function (methods) {
@@ -142,4 +160,4 @@ var PaymentService = /** @class */ (function (_super) {
142
160
  return PaymentService;
143
161
  }(StepService));
144
162
  export { PaymentService };
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L3BheW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RDtJQUFvQyxrQ0FBVztJQWMzQyx3QkFBb0IsVUFBNkIsRUFBVSxhQUEyQixFQUFVLFdBQXdCLEVBQVUsTUFBaUIsRUFDdkksZUFBZ0MsRUFBVSxnQkFBa0M7UUFEeEYsWUFFSSxrQkFBTSxlQUFlLENBQUMsU0FNekI7UUFSbUIsZ0JBQVUsR0FBVixVQUFVLENBQW1CO1FBQVUsbUJBQWEsR0FBYixhQUFhLENBQWM7UUFBVSxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFlBQU0sR0FBTixNQUFNLENBQVc7UUFDdkkscUJBQWUsR0FBZixlQUFlLENBQWlC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QUFTO2dCQUN0SCxlQUFlO2dCQUE0QixnQkFBZ0I7O0lBZi9FLGNBQWM7UUFEMUIsVUFBVSxFQUFFO09BQ0EsY0FBYyxDQW9FMUI7SUFBRCxxQkFBQztDQUFBLEFBcEVELENBQW9DLFdBQVcsR0FvRTlDO1NBcEVZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoZWNrb3V0U2VydmljZSB9IGZyb20gJy4vY2hlY2tvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBTdGVwU2VydmljZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2hlY2tvdXQvc3RlcC1zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3Muc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQYXltZW50U2VydmljZSBleHRlbmRzIFN0ZXBTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgcGF5bWVudE1ldGhvZHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICAgIHB1YmxpYyBtZXRob2RzJCA9IHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgYmFzZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy8nICsgJ2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpO1xuICAgIGdldFBheW1lbnRNZXRob2RzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQnO1xuICAgIGdldFByZWZlcmVuY2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvbWVyY2Fkby1wYWdvLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcmVmZXJlbmNlJztcbiAgICBnZXRDaGVja291dE1vYmJleEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9tb2JiZXgvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3Byb2Nlc3MtcGF5bWVudCdcbiAgICBnZXRDaGVja291dEJhbmNhcmRBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJvY2Vzcy1wYXltZW50JyAvLz90ZXN0T3JkZXJOdW1iZXI9JyArIHRoaXMuZ2V0UmFuZG9tQXJiaXRyYXJ5KClcbiAgICBnZXRDaGVja291dEJhbWJvb0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW1ib28vJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3Byb2Nlc3MtcGF5bWVudCdcbiAgICBnZXRDaGVja291dFBsYWNlVG9QYXlBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvcGxhY2UtdG8tcGF5LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcm9jZXNzLXBheW1lbnQnO1xuICAgIHB1dFBheW1lbnRBcGkgPSAobWV0aG9kKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvcGF5bWVudC8nICsgbWV0aG9kO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSwgcHJpdmF0ZSB0b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLCBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLFxuICAgICAgICBwcml2YXRlIGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlLCBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoY2hlY2tvdXRTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UucGF5bWVudE1ldGhvZHMkLnN1YnNjcmliZShtZXRob2RzID0+IHtcbiAgICAgICAgICAgIGlmIChtZXRob2RzICYmIG1ldGhvZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QubmV4dChtZXRob2RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0UGF5bWVudE1ldGhvZHMgPSBhc3luYyAoKSA9PiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0UGF5bWVudE1ldGhvZHNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZHMgPSByZXMucGF5bWVudHM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgID8gT2JqZWN0LmtleXMocmVzLnBheW1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzLnBheW1lbnRzWzBdLm1ldGhvZHNba2V5XSlcbiAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgaWYgKG1ldGhvZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QubmV4dChtZXRob2RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnNldFBheW1lbnRNZXRob2RzKG1ldGhvZHMpO1xuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZHM7XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gcHV0UGF5bWVudCA9IChtZXRob2QpID0+IHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5wdXRQYXltZW50QXBpKG1ldGhvZCksIHsgbWV0aG9kIH0pLnRvUHJvbWlzZSgpO1xuICAgIHB1dFBheW1lbnQgPSAobWV0aG9kKSA9PlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25cbiAgICAgICAgICAgIC5wdXQodGhpcy5wdXRQYXltZW50QXBpKG1ldGhvZCksIHsgbWV0aG9kIH0pXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcbiAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ2FkZF9wYXltZW50X2luZm8nLCByZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0KG5ldyBFcnJvcihlcnIuZXJyb3IpKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpXG5cbiAgICBnZXRQcmVmZXJlbmNlID0gKHNoaXBtZW50X2RhdGEpID0+IHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuZ2V0UHJlZmVyZW5jZUFwaSgpLCBzaGlwbWVudF9kYXRhKS5waXBlKG1hcChyZXMgPT4gKHJlcy5wcmVmZXJlbmNlIHx8IHJlcykpKS50b1Byb21pc2UoKTtcblxuICAgIGdldENoZWNrb3V0TW9iYmV4ID0gKHNoaXBtZW50X2RhdGEpID0+IHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuZ2V0Q2hlY2tvdXRNb2JiZXhBcGkoKSwgc2hpcG1lbnRfZGF0YSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDaGVja291dEJhbmNhcmQgPSAoc2hpcG1lbnRfZGF0YSkgPT4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldENoZWNrb3V0QmFuY2FyZEFwaSgpLCBzaGlwbWVudF9kYXRhKS50b1Byb21pc2UoKTtcblxuICAgIGdldENoZWNrb3V0QmFtYm9vID0gKHNoaXBtZW50X2RhdGEpID0+IHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRDaGVja291dEJhbWJvb0FwaSgpLCBzaGlwbWVudF9kYXRhKS50b1Byb21pc2UoKTtcblxuICAgIGdldENoZWNrb3V0UGxhY2VUb1BheSA9IChzaGlwbWVudF9kYXRhKSA9PlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24ucG9zdCh0aGlzLmdldENoZWNrb3V0UGxhY2VUb1BheUFwaSgpLCBzaGlwbWVudF9kYXRhKS50b1Byb21pc2UoKTtcblxuICAgIHByaXZhdGUgZ2V0UmFuZG9tQXJiaXRyYXJ5ID0gKCkgPT4gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogKE51bWJlcig5OTk5OTk5KSAtIE51bWJlcigyMDAwMDAzKSkgKyBOdW1iZXIoMjAwMDAwMykpXG59Il19
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L3BheW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RDtJQUFvQyxrQ0FBVztJQWMzQyx3QkFBb0IsVUFBNkIsRUFBVSxhQUEyQixFQUFVLFdBQXdCLEVBQVUsTUFBaUIsRUFDdkksZUFBZ0MsRUFBVSxnQkFBa0M7UUFEeEYsWUFFSSxrQkFBTSxlQUFlLENBQUMsU0FNekI7UUFSbUIsZ0JBQVUsR0FBVixVQUFVLENBQW1CO1FBQVUsbUJBQWEsR0FBYixhQUFhLENBQWM7UUFBVSxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFlBQU0sR0FBTixNQUFNLENBQVc7UUFDdkkscUJBQWUsR0FBZixlQUFlLENBQWlC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QkFBeUIsWUFBWTtnQkFBdUIsV0FBVztnQkFBa0IsU0FBUztnQkFDdEgsZUFBZTtnQkFBNEIsZ0JBQWdCOztJQWYvRSxjQUFjO1FBRDFCLFVBQVUsRUFBRTtPQUNBLGNBQWMsQ0FtRjFCO0lBQUQscUJBQUM7Q0FBQSxBQW5GRCxDQUFvQyxXQUFXLEdBbUY5QztTQW5GWSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RlcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0L3N0ZXAtc2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uL3BhcmFtZXRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGF5bWVudFNlcnZpY2UgZXh0ZW5kcyBTdGVwU2VydmljZSB7XG5cbiAgICBwcml2YXRlIHBheW1lbnRNZXRob2RzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwdWJsaWMgbWV0aG9kcyQgPSB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGJhc2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvJyArICdjaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKTtcbiAgICBnZXRQYXltZW50TWV0aG9kc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50JztcbiAgICBnZXRQcmVmZXJlbmNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL21lcmNhZG8tcGFnby8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJlZmVyZW5jZSc7XG4gICAgZ2V0Q2hlY2tvdXRNb2JiZXhBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvbW9iYmV4LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcm9jZXNzLXBheW1lbnQnXG4gICAgZ2V0Q2hlY2tvdXRCYW5jYXJkQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2JhbmNhcmQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3Byb2Nlc3MtcGF5bWVudCcgLy8/dGVzdE9yZGVyTnVtYmVyPScgKyB0aGlzLmdldFJhbmRvbUFyYml0cmFyeSgpXG4gICAgZ2V0Q2hlY2tvdXRCYW1ib29BcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFtYm9vLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9wcm9jZXNzLXBheW1lbnQnXG4gICAgZ2V0Q2hlY2tvdXRQbGFjZVRvUGF5QXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL3BsYWNlLXRvLXBheS8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJvY2Vzcy1wYXltZW50JztcbiAgICBwdXRQYXltZW50QXBpID0gKG1ldGhvZCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQvJyArIG1ldGhvZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHJpdmF0ZSBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSwgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGNoZWNrb3V0U2VydmljZSk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnBheW1lbnRNZXRob2RzJC5zdWJzY3JpYmUobWV0aG9kcyA9PiB7XG4gICAgICAgICAgICBpZiAobWV0aG9kcyAmJiBtZXRob2RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFBheW1lbnRNZXRob2RzID0gYXN5bmMgKCkgPT4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldFBheW1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRob2RzID0gcmVzLnBheW1lbnRzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IE9iamVjdC5rZXlzKHJlcy5wYXltZW50c1swXS5tZXRob2RzKS5tYXAoa2V5ID0+IHJlcy5wYXltZW50c1swXS5tZXRob2RzW2tleV0pXG4gICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgIGlmIChtZXRob2RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRQYXltZW50TWV0aG9kcyhtZXRob2RzKTtcbiAgICAgICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgICAgICB9LFxuICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIHB1dFBheW1lbnQgPSAobWV0aG9kKSA9PiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0UGF5bWVudEFwaShtZXRob2QpLCB7IG1ldGhvZCB9KS50b1Byb21pc2UoKTtcbiAgICBwdXRQYXltZW50ID0gKG1ldGhvZCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuY2FuTXV0YXRlQ2FydCgpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgY29uc3QgY2FydENvbnRleHQgPSB0aGlzLmNhcnRTZXJ2aWNlLmNhcHR1cmVDYXJ0UmVzcG9uc2VDb250ZXh0KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0UGF5bWVudEFwaShtZXRob2QpLCB7IG1ldGhvZCB9KS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuYXBwbHlDYXJ0UmVzcG9uc2UocmVzLCBjYXJ0Q29udGV4dCwgZmFsc2UpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnYWRkX3BheW1lbnRfaW5mbycsIHJlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVyciwgY2FydENvbnRleHQudG9rZW4pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyLmVycm9yKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jYXJ0U2VydmljZS5oYW5kbGVDYXJ0TXV0YXRpb25FcnJvcihlcnIsIGNhcnRDb250ZXh0LnRva2VuKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0UHJlZmVyZW5jZSA9IChzaGlwbWVudF9kYXRhKSA9PiAhdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KClcbiAgICAgICAgPyBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gICAgICAgIDogdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5nZXRQcmVmZXJlbmNlQXBpKCksIHNoaXBtZW50X2RhdGEpLnBpcGUobWFwKHJlcyA9PiAocmVzLnByZWZlcmVuY2UgfHwgcmVzKSkpLnRvUHJvbWlzZSgpO1xuXG4gICAgZ2V0Q2hlY2tvdXRNb2JiZXggPSAoc2hpcG1lbnRfZGF0YSkgPT4gIXRoaXMuY2FydFNlcnZpY2UuY2FuTXV0YXRlQ2FydCgpXG4gICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKVxuICAgICAgICA6IHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuZ2V0Q2hlY2tvdXRNb2JiZXhBcGkoKSwgc2hpcG1lbnRfZGF0YSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDaGVja291dEJhbmNhcmQgPSAoc2hpcG1lbnRfZGF0YSkgPT4gIXRoaXMuY2FydFNlcnZpY2UuY2FuTXV0YXRlQ2FydCgpXG4gICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKVxuICAgICAgICA6IHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRDaGVja291dEJhbmNhcmRBcGkoKSwgc2hpcG1lbnRfZGF0YSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDaGVja291dEJhbWJvbyA9IChzaGlwbWVudF9kYXRhKSA9PiAhdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KClcbiAgICAgICAgPyBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gICAgICAgIDogdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldENoZWNrb3V0QmFtYm9vQXBpKCksIHNoaXBtZW50X2RhdGEpLnRvUHJvbWlzZSgpO1xuXG4gICAgZ2V0Q2hlY2tvdXRQbGFjZVRvUGF5ID0gKHNoaXBtZW50X2RhdGEpID0+XG4gICAgICAgICF0aGlzLmNhcnRTZXJ2aWNlLmNhbk11dGF0ZUNhcnQoKVxuICAgICAgICAgICAgPyBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gICAgICAgICAgICA6IHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuZ2V0Q2hlY2tvdXRQbGFjZVRvUGF5QXBpKCksIHNoaXBtZW50X2RhdGEpLnRvUHJvbWlzZSgpO1xuXG4gICAgcHJpdmF0ZSBnZXRSYW5kb21BcmJpdHJhcnkgPSAoKSA9PiBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAoTnVtYmVyKDk5OTk5OTkpIC0gTnVtYmVyKDIwMDAwMDMpKSArIE51bWJlcigyMDAwMDAzKSlcbn1cbiJdfQ==