@sabstravtech/obtservices 0.2.2505201645 → 0.2.2506041247

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 (30) hide show
  1. package/base/lib/vendor/classes/carhire-enterprise-search.d.ts +1 -0
  2. package/base/lib/vendor/classes/management-info-and-valid.d.ts +2 -0
  3. package/base/lib/vendor/classes/user-favourite.enum.d.ts +1 -0
  4. package/base/lib/vendor/interfaces/Icarhire-enterprise-search.d.ts +1 -0
  5. package/base/lib/vendor/interfaces/Iflight-enterprise-search.d.ts +2 -0
  6. package/base/lib/vendor/interfaces/Ihotel-enterprise-search.d.ts +2 -1
  7. package/base/lib/vendor/interfaces/hotel-stars-to-hide.interface.d.ts +7 -0
  8. package/base/lib/vendor/types/types.d.ts +5 -1
  9. package/base/sabstravtech-obtservices-base.metadata.json +1 -1
  10. package/bundles/sabstravtech-obtservices-base.umd.js +285 -190
  11. package/bundles/sabstravtech-obtservices-base.umd.js.map +1 -1
  12. package/esm2015/base/lib/vendor/classes/cabhire-enterprise-search.js +4 -3
  13. package/esm2015/base/lib/vendor/classes/carhire-enterprise-search.js +36 -9
  14. package/esm2015/base/lib/vendor/classes/eurostar-enterprise-search.js +58 -26
  15. package/esm2015/base/lib/vendor/classes/fast-track-enterprise-search.js +4 -3
  16. package/esm2015/base/lib/vendor/classes/helpers.js +5 -5
  17. package/esm2015/base/lib/vendor/classes/hotel-enterprise-search.js +22 -31
  18. package/esm2015/base/lib/vendor/classes/management-info-and-valid.js +17 -7
  19. package/esm2015/base/lib/vendor/classes/user-favourite.enum.js +2 -1
  20. package/esm2015/base/lib/vendor/interfaces/Icarhire-enterprise-search.js +1 -1
  21. package/esm2015/base/lib/vendor/interfaces/Iflight-enterprise-search.js +1 -1
  22. package/esm2015/base/lib/vendor/interfaces/Ihotel-enterprise-search.js +1 -1
  23. package/esm2015/base/lib/vendor/interfaces/hotel-stars-to-hide.interface.js +1 -1
  24. package/esm2015/base/lib/vendor/services/hotel-avallibility.service.js +5 -3
  25. package/esm2015/base/lib/vendor/services/logon.service.js +6 -3
  26. package/esm2015/base/lib/vendor/services/search.service.js +25 -14
  27. package/esm2015/base/lib/vendor/types/types.js +10 -2
  28. package/fesm2015/sabstravtech-obtservices-base.js +179 -93
  29. package/fesm2015/sabstravtech-obtservices-base.js.map +1 -1
  30. package/package.json +1 -1
@@ -65,6 +65,7 @@ export class BaseHotelAvalibilityService {
65
65
  }
66
66
  else {
67
67
  // add the data to the array
68
+ console.log(`+++ Add hotel: ${fullHotel.id} to behaviours +++`);
68
69
  this.behaviours[fullHotel.id] =
69
70
  new BehaviorSubject(null);
70
71
  const newBehaviourObject = fullHotel.availableRates;
@@ -105,6 +106,7 @@ export class BaseHotelAvalibilityService {
105
106
  {});
106
107
  }
107
108
  updateHotel(hotel) {
109
+ console.log('updating hotels');
108
110
  if (!hotel.availableRates) {
109
111
  hotel.availableRates = this.getAvailabilityValue(hotel);
110
112
  }
@@ -139,7 +141,6 @@ export class BaseHotelAvalibilityService {
139
141
  return hotel;
140
142
  }
141
143
  _getAvailabilityForId(hotel) {
142
- // console.log('+++ Fetching availabilty for: ', hotel, ' +++');
143
144
  if (this.timeout) {
144
145
  window.clearTimeout(this.timeout);
145
146
  this.timeout = 0;
@@ -239,7 +240,8 @@ export class BaseHotelAvalibilityService {
239
240
  this.lowestPriceHotel.price = hotel.minprice;
240
241
  }
241
242
  hotel.rooms = hotel.rooms;
242
- hotel.fullRooms = hotel.rooms;
243
+ hotel.fullRooms = this.helpers.clone(hotel.rooms);
244
+ this.data[hotel.hotelId] = this.helpers.clone(hotel);
243
245
  if ((hotel === null || hotel === void 0 ? void 0 : hotel.hotelId) && this.behaviours[hotel.hotelId]) {
244
246
  this.data[hotel.hotelId] = hotel;
245
247
  this.behaviours[hotel.hotelId].next(hotel);
@@ -324,4 +326,4 @@ export class BaseHotelAvalibilityService {
324
326
  return this._sabreCSLMode;
325
327
  }
326
328
  }
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90ZWwtYXZhbGxpYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYnRzZXJ2aWNlcy9iYXNlL3NyYy9saWIvdmVuZG9yL3NlcnZpY2VzL2hvdGVsLWF2YWxsaWJpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBWXRDLE9BQU8sRUFVTCxlQUFlLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsTUFBTSxZQUFZLEdBQUcsNEJBQTRCLENBQUM7QUFFbEQsTUFBTSxPQUFPLDJCQUEyQjtJQTBCdEMsWUFDVSxrQkFBdUQsRUFDdkQsY0FBa0MsRUFDbEMsT0FBMkIsRUFDM0IsV0FBNEI7UUFINUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQztRQUN2RCxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBM0I5QixTQUFJLEdBQWUsSUFBSSxDQUFDO1FBQ3hCLGVBQVUsR0FFZCxFQUFFLENBQUM7UUFFQyxZQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUN2QyxhQUFRLEdBQTZCLElBQUksZUFBZSxDQUM3RCxLQUFLLENBQ04sQ0FBQztRQUNGLGVBQVUsR0FBb0IsRUFBRSxDQUFDO1FBQ2pDLDRCQUF1QixHQUFvQixFQUFFLENBQUM7UUFDOUMscUJBQWdCLEdBR1o7WUFDRixFQUFFLEVBQUUsSUFBSTtZQUNSLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQztRQUVNLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQUN2Qyx3QkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7SUFPM0IsQ0FBQztJQUVJLGVBQWU7UUFDckIsTUFBTSxJQUFJLEdBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQWEsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBZ0MsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksZUFBZSxDQUNqRCxJQUFJLENBQ0wsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsRUFBRSxFQUFFLElBQUk7WUFDUixLQUFLLEVBQUUsQ0FBQztTQUNULENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQWlDLEVBQUUsRUFBRTtZQUNyRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLEtBQTRCLEVBQzVCLFNBQTBCO1FBRTFCLHlFQUF5RTs7UUFFekUsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxRQUFRLEVBQUU7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxNQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxjQUFjLDBDQUFFLEtBQUssRUFBRTtZQUNwQyxnQ0FBZ0M7WUFDaEMsb0ZBQW9GO1lBQ3BGLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0wsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQzNCLElBQUksZUFBZSxDQUE4QixJQUFJLENBQUMsQ0FBQztnQkFFekQsTUFBTSxrQkFBa0IsR0FDdEIsU0FBUyxDQUFDLGNBQWMsQ0FBQztnQkFDM0Isa0JBQWtCLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDN0QsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7b0JBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ04sa0JBQWtCLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLFFBQVE7b0JBQ3ZELENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDNUIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDMUMsQ0FBQyxLQUFLO29CQUNULENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ04sU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBZSxFQUFFLEVBQUU7b0JBQ3JELDJEQUEyRDtvQkFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTt3QkFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHOzRCQUN4QixhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVk7NEJBQ2hDLElBQUksRUFBRSxDQUFDOzRCQUNQLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWTs0QkFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLOzRCQUN0QixjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUs7eUJBQzNCLENBQUE7cUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQzBCLFNBQVMsQ0FBQyxjQUFlLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO2dCQUNsRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNqRCxvQ0FBb0M7Z0JBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0QztTQUNGO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoRCxPQUFPLENBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFtQjs7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoRCxPQUFPLENBQ0wsQ0FBQSxNQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQVksQ0FBQywwQ0FBRSxLQUFLO1lBQ3pDLEVBQWtDLENBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQW1CO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQ3pCLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlDLEVBQUUsT0FBb0I7UUFFakUsSUFBSSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxLQUFLLE1BQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sQ0FBQSxFQUFFO1lBQ25DLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNqQyxnQ0FBZ0M7WUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVDO2FBQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxVQUFVLEVBQUUsRUFBRSwrREFBK0Q7WUFDdkgsZ0JBQWdCO1lBQ2hCLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQW1COztRQUNyQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLGNBQWMsS0FBSSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsY0FBYywwQ0FBRSxPQUFPLENBQUMsRUFBRTtZQUU1RyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQzthQUNoQjtZQUNELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQy9ELElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2FBQy9EO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDMUU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxxQkFBcUIsQ0FDM0IsS0FBNEI7UUFFNUIsZ0VBQWdFO1FBQ2hFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztTQUNsQjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQ3ZDLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQ0UsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFDN0Q7WUFDQSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtRQUVELE1BQU0sUUFBUSxHQUFRLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2xDLElBQUksZUFBZSxDQUE4QixJQUFJLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxpQkFBaUI7O1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztTQUNsQjtRQUNELE1BQU0sT0FBTyxHQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUNyQyxDQUFDLEVBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FDdkMsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxRCxNQUFNLEdBQUcsR0FBVSxFQUFFLENBQUM7UUFFdEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLEdBQTJDO1lBQ3BELE1BQU0sRUFBRSxHQUFHO1lBQ1gsUUFBUSxFQUFFLE1BQUEsT0FBTyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxRQUFRO1lBQzlCLE9BQU8sRUFBRSxNQUFBLE9BQU8sQ0FBQyxDQUFDLENBQUMsMENBQUUsT0FBTztZQUM1QixTQUFTLEVBQUUsTUFBQSxPQUFPLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFNBQVM7WUFDaEMsU0FBUyxFQUFFLE1BQUEsT0FBTyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxTQUFTO1lBQ2hDLEtBQUssRUFBRSxNQUFBLE9BQU8sQ0FBQyxDQUFDLENBQUMsMENBQUUsS0FBSztTQUN6QixDQUFDO1FBRUYsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixTQUFTLENBQUMsS0FBSyxDQUFDO2FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQ1IsQ0FBQyxNQUF3QyxFQUFFLEVBQUU7WUFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWtDLEVBQUUsRUFBRTs7Z0JBQ3BELEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO3FCQUM5QixNQUFNLENBQUMsQ0FBQyxJQUE2QixFQUFFLEVBQUU7b0JBQ3hDLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQztxQkFDRCxHQUFHLENBQUMsQ0FBQyxJQUE2QixFQUFFLEVBQUU7b0JBQ3JDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBMEIsSUFBSSxDQUFDLENBQUM7b0JBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjt3QkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVO3dCQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDZixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0I7d0JBQzFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUzt3QkFDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQ3RCLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUMsQ0FBQyxDQUFDO2dCQUNMLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDOUIsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDbkMsQ0FBQyxPQUF3QixFQUFFLElBQTZCLEVBQUUsRUFBRTtvQkFDMUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7d0JBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEdBQUcsT0FBTyxDQUN0RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUN0QyxJQUFJOzRCQUNILFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCOzRCQUNqQyxRQUFRLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjt5QkFDbEMsQ0FBQzt3QkFDRixPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVE7NEJBQ3JELElBQUksQ0FBQyxHQUFHLENBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLEVBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQ3ZDLENBQUM7d0JBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFROzRCQUNyRCxJQUFJLENBQUMsR0FBRyxDQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxFQUN2RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUN2QyxDQUFDO3dCQUVKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUk7NkJBQ3RELFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUk7NEJBQ2xELFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCOzRCQUNqQyxRQUFRLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjt5QkFDbEMsQ0FBQzt3QkFDRixJQUFJLENBQUMsVUFBVSxDQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQ2xDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ3BCLElBQUksQ0FBQyxHQUFHLENBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDOzZCQUMvQyxRQUFRLEVBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FDbkMsQ0FDRixDQUFDO3dCQUNGLElBQUksQ0FBQyxVQUFVLENBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FDbEMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDcEIsSUFBSSxDQUFDLEdBQUcsQ0FDTixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7NkJBQy9DLFFBQVEsRUFDWCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUNuQyxDQUNGLENBQUM7cUJBQ0g7b0JBQ0QsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLENBQUMsRUFDRCxFQUFxQixDQUN0QixDQUFDO2dCQUNGLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFpQixPQUFPLENBQUMsQ0FDekQsQ0FBQztnQkFDRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU07b0JBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7Z0JBQ3pDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBRyxNQUFBLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDBDQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDMUYsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDdEMsSUFBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDbEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO29CQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQzlDO2dCQUVELElBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUNoSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztpQkFDOUM7Z0JBRUQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUMxQixLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLElBQUksQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsT0FBTyxLQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDNUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILCtEQUErRDtZQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDOUM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywyRUFBMkU7Z0JBQ3JHLGlHQUFpRzthQUNuRztRQUNILENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsNEJBQTRCO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQ1gsMkNBQTJDLEtBQUssNkJBQTZCLENBQzlFLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQztZQUNaLGdCQUFnQjtRQUNsQixDQUFDLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFrQztRQUNsRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25GLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7U0FDOUM7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNqSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFFBQWdCO1FBQ2xDLE9BQU8sQ0FDTCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzNCLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1lBQ2pDLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1NBQ2xDLENBQ0YsQ0FBQyxRQUFRLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSCx1QkFBdUI7UUFDckIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNwRCxJQUFJLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLEVBQUU7b0JBQ2YsS0FBSyxFQUFFLENBQUM7aUJBQ1Q7YUFDRjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QsMEJBQTBCLENBQUMsS0FBa0M7UUFDM0QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJO1lBQ3JHLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1lBQ2pDLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1lBQ2pDLFdBQVcsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1NBQ3JDLENBQUM7UUFFRixJQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUM7WUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5RjtRQUVELElBQUksQ0FBQyx1QkFBdUIsQ0FDMUIsS0FBSyxDQUFDLFlBQVksQ0FDbkIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDcEIsSUFBSSxDQUFDLEdBQUcsQ0FDTixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQzthQUM3QyxRQUFRLEVBQ1QsS0FBSyxDQUFDLElBQUksQ0FDYixDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsdUJBQXVCLENBQzFCLEtBQUssQ0FBQyxZQUFZLENBQ25CLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDN0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7YUFDN0MsUUFBUSxFQUNULEtBQUssQ0FBQyxJQUFJLENBQ2IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHVCQUF1QixDQUMxQixLQUFLLENBQUMsWUFBWSxDQUNuQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUN0QixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQzthQUM3QyxXQUFXLEVBQ1osS0FBSyxDQUFDLElBQUksQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELDZCQUE2QixDQUFDLFFBQWdCO1FBQzVDLE9BQU8sQ0FDTCxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDeEMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDakMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDakMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7U0FDckMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFzZUVudmlyb25tZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9lbnZpcm9tZW50JztcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4uL2NsYXNzZXMvaGVscGVycyc7XG5pbXBvcnQge1xuICBCYXNlSG90ZWxBdmFsaWJpbGl0eVF1b3RlRmV0Y2hlcixcbiAgSG90ZWxBdmFsaW5pbGl0eUZldGNoZXJUeXBlXG59IGZyb20gJy4uL2ZldGNoZXJzL2hvdGVsLWF2YWxpYWJpbGl0eS1mZXRjaGVyJztcbmltcG9ydCB7XG4gIEhvdGVsSXRpbmVyYXJ5LFxuICBIb3RlbFJvb20sXG4gIFF1ZXJ5R2V0TXVsdGlwbGVIb3RlbHNBdmFpbGFiaWxpdHlBcmdzXG59IGZyb20gJy4uL3R5cGVzL2dyYXBocWwudHlwZXMnO1xuaW1wb3J0IHtcbiAgQ3VycmVuY3lEZXRhaWwsXG4gIEN1cnJlbmN5RGV0YWlscyxcbiAgSG90ZWxBdmFpbGFiaWxpdHlGdWxsUm9vbXMsXG4gIEhvdGVsQXZhbGliaWxpdHlRdWVyeSxcbiAgSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0LFxuICBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHRBcnJheSxcbiAgSG90ZWxDdXJyZW5jaWVzLFxuICBIb3RlbERldGFpbHMsXG4gIEhvdGVsUm9vbVdpdGhMb2NhbFByaWNlLFxuICBTZXJ2aWNlUHJvdmlkZXJcbn0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuXG5pbXBvcnQgeyBCYXNlU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5cbnR5cGUgU3RvcmVkRGF0YSA9IHsgW2tleTogc3RyaW5nXTogSG90ZWxBdmFpbGFiaWxpdHlGdWxsUm9vbXMgfTtcblxuY29uc3QgU0VTU0lPTl9OQU1FID0gJ3Jlc3VsdHNfaG90ZWxfYXZhbGxpYmlsaXR5JztcblxuZXhwb3J0IGNsYXNzIEJhc2VIb3RlbEF2YWxpYmlsaXR5U2VydmljZTxcbiAgUSBleHRlbmRzIEhvdGVsQXZhbGluaWxpdHlGZXRjaGVyVHlwZVxuPiB7XG4gIHByaXZhdGUgZGF0YTogU3RvcmVkRGF0YSA9IG51bGw7XG4gIHByaXZhdGUgYmVoYXZpb3Vyczoge1xuICAgIFtrZXk6IHN0cmluZ106IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWlsYWJpbGl0eUZ1bGxSb29tcz47XG4gIH0gPSB7fTtcbiAgcHJpdmF0ZSB0aW1lb3V0OiBudW1iZXI7XG4gIHByaXZhdGUgdG9GZXRjaDogSG90ZWxBdmFsaWJpbGl0eVF1ZXJ5W10gPSBbXTtcbiAgcHVibGljIGZldGNoaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KFxuICAgIGZhbHNlXG4gICk7XG4gIGN1cnJlbmNpZXM6IEN1cnJlbmN5RGV0YWlscyA9IHt9O1xuICBjdXJyZW5jaWVzUGVyTmlnaHRQcmljZTogQ3VycmVuY3lEZXRhaWxzID0ge307XG4gIGxvd2VzdFByaWNlSG90ZWw6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHByaWNlOiBudW1iZXI7XG4gIH0gPSB7XG4gICAgaWQ6IG51bGwsXG4gICAgcHJpY2U6IDBcbiAgfTtcblxuICBwcml2YXRlIGhvdGVsQ3VycmVuY2llczogSG90ZWxDdXJyZW5jaWVzID0ge307XG4gIHB1YmxpYyBtYXhIb3RlbFJhd01pblByaWNlID0gMDtcbiAgcHJpdmF0ZSBfc2FicmVDU0xNb2RlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhdmFsaWJpbGl0eUZldGhjZXI6IEJhc2VIb3RlbEF2YWxpYmlsaXR5UXVvdGVGZXRjaGVyPFE+LFxuICAgIHByaXZhdGUgc2Vzc2lvblN0b3JhZ2U6IEJhc2VTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGhlbHBlcnM6IEJhc2VIZWxwZXJSb3V0aW5lcyxcbiAgICBwcml2YXRlIGVudmlyb25tZW50OiBCYXNlRW52aXJvbm1lbnRcbiAgKSB7fVxuXG4gIHByaXZhdGUgcmVhZEZyb21TZXNzaW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPVxuICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZS5nZXRTZXNzaW9uSXRlbTxTdG9yZWREYXRhPihTRVNTSU9OX05BTUUpIHx8IHt9O1xuICAgIE9iamVjdC52YWx1ZXMoZGF0YSkuZm9yRWFjaCgoaXRlbTogSG90ZWxBdmFpbGFiaWxpdHlGdWxsUm9vbXMpID0+IHtcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tpdGVtLmhvdGVsSWRdID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWlsYWJpbGl0eUZ1bGxSb29tcz4oXG4gICAgICAgIGl0ZW1cbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmRhdGEgPSB7fTtcbiAgICB0aGlzLmN1cnJlbmNpZXMgPSB7fTtcbiAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlID0ge307XG4gICAgdGhpcy50b0ZldGNoID0gW107XG4gICAgdGhpcy5sb3dlc3RQcmljZUhvdGVsID0ge1xuICAgICAgaWQ6IG51bGwsXG4gICAgICBwcmljZTogMFxuICAgIH07XG4gICAgdGhpcy5mZXRjaGluZy5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlLnJlbW92ZVNlc3Npb25JdGVtKFNFU1NJT05fTkFNRSk7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEpLmZvckVhY2goKGl0ZW06IEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5iZWhhdmlvdXJzW2l0ZW0uaG90ZWxJZF0uY29tcGxldGUoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmJlaGF2aW91cnNbaXRlbS5ob3RlbElkXTtcbiAgICB9KTtcbiAgICB0aGlzLmJlaGF2aW91cnMgPSB7fTtcbiAgICB0aGlzLmhvdGVsQ3VycmVuY2llcyA9IHt9O1xuICAgIHRoaXMubWF4SG90ZWxSYXdNaW5QcmljZSA9IDA7XG4gIH1cblxuICBnZXRBdmFpbGFiaWxpdHlGb3JJZChcbiAgICBob3RlbDogSG90ZWxBdmFsaWJpbGl0eVF1ZXJ5LFxuICAgIGZ1bGxIb3RlbD86IEhvdGVsSXRpbmVyYXJ5XG4gICk6IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQ+IHtcbiAgICAvLyBjb25zb2xlLmxvZygnKysrIEZldGNoaW5nIHdpdGggZnVsbCBob3RlbCBkYXRhOiAnLCBmdWxsSG90ZWwsICcgKysrJyk7XG5cbiAgICBpZiAoZnVsbEhvdGVsLnNvdXJjZSA9PT0gU2VydmljZVByb3ZpZGVyLlNhYnJlQ1NMKSB7XG4gICAgICB0aGlzLl9zYWJyZUNTTE1vZGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zYWJyZUNTTE1vZGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZnVsbEhvdGVsPy5hdmFpbGFibGVSYXRlcz8ucm9vbXMpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYmVoYXZpb3Vycyk7XG4gICAgICAvLyBhZGQgdGhpcyBkYXRhIHRvIHRoZSBiZWhhdmlvdXJzIGFycmF5IGFuZCByZXR1cm4gaXQgKGlmIGl0IGRvc2VuJ3QgYWxyZWFkeSBleGlzdClcbiAgICAgIGlmICh0aGlzLmJlaGF2aW91cnNbZnVsbEhvdGVsLmlkXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5iZWhhdmlvdXJzW2Z1bGxIb3RlbC5pZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBhZGQgdGhlIGRhdGEgdG8gdGhlIGFycmF5XG4gICAgICAgIHRoaXMuYmVoYXZpb3Vyc1tmdWxsSG90ZWwuaWRdID1cbiAgICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdD4obnVsbCk7XG5cbiAgICAgICAgY29uc3QgbmV3QmVoYXZpb3VyT2JqZWN0OiBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQgPVxuICAgICAgICAgIGZ1bGxIb3RlbC5hdmFpbGFibGVSYXRlcztcbiAgICAgICAgbmV3QmVoYXZpb3VyT2JqZWN0Lm1pbnByaWNlID0gZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzLnJvb21zWzBdXG4gICAgICAgICAgPyBmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMucm9vbXNbMF0udG90YWxcbiAgICAgICAgICA6IDA7XG4gICAgICAgIG5ld0JlaGF2aW91ck9iamVjdC5tYXhwcmljZSA9IG5ld0JlaGF2aW91ck9iamVjdC5taW5wcmljZVxuICAgICAgICAgID8gZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzLnJvb21zW1xuICAgICAgICAgICAgICBmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMucm9vbXMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgXS50b3RhbFxuICAgICAgICAgIDogMDtcbiAgICAgICAgZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzLnJvb21zLm1hcCgocm9vbTogSG90ZWxSb29tKSA9PiB7XG4gICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gY3VycmVuY3lDb252ZXJzaW9uIC0gc2V0IGN1cnJlbnQgY3VycmVuY3lcbiAgICAgICAgICBpZiAoIXJvb20uY3VycmVuY3lDb252ZXJzaW9uKSB7XG4gICAgICAgICAgICByb29tLmN1cnJlbmN5Q29udmVyc2lvbiA9IHtcbiAgICAgICAgICAgICAgY29udmVydGVkQ29kZTogcm9vbS5jdXJyZW5jeUNvZGUsXG4gICAgICAgICAgICAgIHJhdGU6IDEsXG4gICAgICAgICAgICAgIGxvY2FsQ29kZTogcm9vbS5jdXJyZW5jeUNvZGUsXG4gICAgICAgICAgICAgIGxvY2FsVG90YWw6IHJvb20udG90YWwsXG4gICAgICAgICAgICAgIGNvbnZlcnRlZFRvdGFsOiByb29tLnRvdGFsLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICg8SG90ZWxBdmFpbGFiaWxpdHlGdWxsUm9vbXM+ZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzKS5mdWxsUm9vbXMgPSBmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMucm9vbXM7XG4gICAgICAgIHRoaXMudXBkYXRlTG93ZXN0UHJpY2UoZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzKTtcbiAgICAgICAgLy8gY29uc29sZS53YXJuKG5ld0JlaGF2aW91ck9iamVjdCk7XG4gICAgICAgIHRoaXMuYmVoYXZpb3Vyc1tmdWxsSG90ZWwuaWRdLm5leHQobmV3QmVoYXZpb3VyT2JqZWN0KTtcbiAgICAgICAgdGhpcy5mZXRjaGluZy5uZXh0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmVoYXZpb3Vyc1tmdWxsSG90ZWwuaWRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YSB8fCB0aGlzLnJlYWRGcm9tU2Vzc2lvbigpO1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmJlaGF2aW91cnNbZnVsbEhvdGVsLmlkXSB8fFxuICAgICAgdGhpcy5fZ2V0QXZhaWxhYmlsaXR5Rm9ySWQoaG90ZWwpXG4gICAgKTtcbiAgfVxuXG4gIGdldEF2YWlsYWJpbGl0eVZhbHVlKGhvdGVsOiBIb3RlbERldGFpbHMpOiBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQge1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YSB8fCB0aGlzLnJlYWRGcm9tU2Vzc2lvbigpO1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaWQgYXMgc3RyaW5nXT8udmFsdWUgfHxcbiAgICAgICh7fSBhcyBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQpXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUhvdGVsKGhvdGVsOiBIb3RlbERldGFpbHMpOiBIb3RlbERldGFpbHMge1xuICAgIGlmICghaG90ZWwuYXZhaWxhYmxlUmF0ZXMpIHtcbiAgICAgIGhvdGVsLmF2YWlsYWJsZVJhdGVzID0gdGhpcy5nZXRBdmFpbGFiaWxpdHlWYWx1ZShob3RlbCk7XG4gICAgfVxuICAgIHJldHVybiBob3RlbDtcbiAgfVxuXG4gIHVwZGF0ZVJvb21zKGhvdGVsOiBIb3RlbEF2YWlsYWJpbGl0eUZ1bGxSb29tcywgbWF0Y2hlczogSG90ZWxSb29tW10pOnZvaWQge1xuXG4gICAgaWYgKGhvdGVsPy5yb29tcyAmJiBtYXRjaGVzPy5sZW5ndGgpIHtcbiAgICAgIGhvdGVsLnJvb21zID0gbWF0Y2hlcztcbiAgICAgIHRoaXMuZGF0YVtob3RlbC5ob3RlbElkXSA9IGhvdGVsO1xuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5iZWhhdmlvdXJzKTtcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbElkXS5uZXh0KGhvdGVsKTtcbiAgICB9IGVsc2UgaWYgKGhvdGVsLnNvdXJjZSAhPT0gU2VydmljZVByb3ZpZGVyLlByZW1pZXJJbm4pIHsgLy8gISAtIFByZW1pZXIgSW5uIGFscmVhZHkgY29tZXMgd2l0aCByb29tcyAtIGRvbid0IHJlbW92ZSB0aGVtXG4gICAgICAvLyBpZiBubyBtYXRjaGVzXG4gICAgICBob3RlbC5yb29tcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHNldEhvdGVsQXZhbGFiaWxpdHkoaG90ZWw6IEhvdGVsRGV0YWlscyk6IEhvdGVsRGV0YWlscyB7XG4gICAgaG90ZWwucmVjZWl2ZWRKaXRSdWxlcyA9IHRydWU7XG4gICAgaWYgKGhvdGVsLmF2YWlsYWJsZVJhdGVzICYmIGhvdGVsPy5hdmFpbGFibGVSYXRlcy5ob3RlbElkICYmIHRoaXMuYmVoYXZpb3Vyc1tob3RlbD8uYXZhaWxhYmxlUmF0ZXM/LmhvdGVsSWRdKSB7XG5cbiAgICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgZnVsbFJvb21zID0gaG90ZWwuYXZhaWxhYmxlUmF0ZXMucm9vbXM7XG4gICAgICB0aGlzLmRhdGFbaG90ZWwuYXZhaWxhYmxlUmF0ZXMuaG90ZWxJZF0gPSBob3RlbC5hdmFpbGFibGVSYXRlcztcbiAgICAgIGlmIChmdWxsUm9vbXMpIHtcbiAgICAgICAgdGhpcy5kYXRhW2hvdGVsLmF2YWlsYWJsZVJhdGVzLmhvdGVsSWRdLmZ1bGxSb29tcyA9IGZ1bGxSb29tcztcbiAgICAgIH1cbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5hdmFpbGFibGVSYXRlcy5ob3RlbElkXS5uZXh0KGhvdGVsLmF2YWlsYWJsZVJhdGVzKTtcbiAgICB9XG4gICAgcmV0dXJuIGhvdGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QXZhaWxhYmlsaXR5Rm9ySWQoXG4gICAgaG90ZWw6IEhvdGVsQXZhbGliaWxpdHlRdWVyeVxuICApOiBCZWhhdmlvclN1YmplY3Q8SG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0PiB7XG4gICAgLy8gY29uc29sZS5sb2coJysrKyBGZXRjaGluZyBhdmFpbGFiaWx0eSBmb3I6ICcsIGhvdGVsLCAnICsrKycpO1xuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICAgIHRoaXMudGltZW91dCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZldGNoaW5nLnZhbHVlKSB7XG4gICAgICB0aGlzLnRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5mZXRjaEF2YWxpbGJpbGl0eS5iaW5kKHRoaXMpLFxuICAgICAgICB0aGlzLmVudmlyb25tZW50LmF1dG9GZXRjaEhvdGVsVGltZW91dFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy50b0ZldGNoLnB1c2goaG90ZWwpO1xuICAgIGlmIChcbiAgICAgICF0aGlzLmZldGNoaW5nLnZhbHVlICYmXG4gICAgICB0aGlzLnRvRmV0Y2gubGVuZ3RoID49IHRoaXMuZW52aXJvbm1lbnQubnVtYmVyT2ZIb3RlbHNUb0ZldGNoXG4gICAgKSB7XG4gICAgICB0aGlzLmZldGNoQXZhbGlsYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgY29uc3QgaG90ZWxJZHM6IGFueSA9IGhvdGVsLmhvdGVscztcbiAgICB0aGlzLmJlaGF2aW91cnNbaG90ZWxJZHNbMF0uaG90ZWxJZF0gPVxuICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQ+KG51bGwpO1xuICAgIHJldHVybiB0aGlzLmJlaGF2aW91cnNbaG90ZWxJZHNbMF0uaG90ZWxJZF07XG4gIH1cblxuICBwcml2YXRlIGZldGNoQXZhbGlsYmlsaXR5KCkge1xuICAgIHRoaXMuZmV0Y2hpbmcubmV4dCh0cnVlKTtcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICB0aGlzLnRpbWVvdXQgPSAwO1xuICAgIH1cbiAgICBjb25zdCB0b0ZldGNoOiBhbnkgPSB0aGlzLnRvRmV0Y2guc2xpY2UoXG4gICAgICAwLFxuICAgICAgdGhpcy5lbnZpcm9ubWVudC5udW1iZXJPZkhvdGVsc1RvRmV0Y2hcbiAgICApO1xuICAgIHRoaXMudG9GZXRjaCA9IHRoaXMudG9GZXRjaC5zbGljZSh0aGlzLmVudmlyb25tZW50Lm51bWJlck9mSG90ZWxzVG9GZXRjaCk7XG5cbiAgICBjb25zb2xlLmxvZygnSG90ZWxzIHN0aWxsIHRvIGZldGNoJywgdGhpcy50b0ZldGNoLmxlbmd0aCk7XG5cbiAgICBjb25zdCBpZHM6IGFueVtdID0gW107XG5cbiAgICB0b0ZldGNoLmZvckVhY2goKGZldGNoOiBhbnkpID0+IHtcbiAgICAgIGlkcy5wdXNoKGZldGNoLmhvdGVsc1swXSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBxdWVyeTogUXVlcnlHZXRNdWx0aXBsZUhvdGVsc0F2YWlsYWJpbGl0eUFyZ3MgPSB7XG4gICAgICBob3RlbHM6IGlkcyxcbiAgICAgIGN1cnJlbmN5OiB0b0ZldGNoWzBdPy5jdXJyZW5jeSxcbiAgICAgIGVuZERhdGU6IHRvRmV0Y2hbMF0/LmVuZERhdGUsXG4gICAgICBzdGFydERhdGU6IHRvRmV0Y2hbMF0/LnN0YXJ0RGF0ZSxcbiAgICAgIG9jY3VwYW50czogdG9GZXRjaFswXT8ub2NjdXBhbnRzLFxuICAgICAgcm9vbXM6IHRvRmV0Y2hbMF0/LnJvb21zXG4gICAgfTtcblxuICAgIHRoaXMuYXZhbGliaWxpdHlGZXRoY2VyXG4gICAgICAuZmV0Y2hMaXN0KHF1ZXJ5KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChob3RlbHM6IEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdEFycmF5KSA9PiB7XG4gICAgICAgICAgaG90ZWxzLmZvckVhY2goKGhvdGVsOiBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGhvdGVsID0gdGhpcy5oZWxwZXJzLmNsb25lKGhvdGVsKTtcbiAgICAgICAgICAgIGhvdGVsLnJvb21zID0gKGhvdGVsLnJvb21zIHx8IFtdKVxuICAgICAgICAgICAgICAuZmlsdGVyKChyb29tOiBIb3RlbFJvb21XaXRoTG9jYWxQcmljZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByb29tLnRvdGFsID4gMDtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLm1hcCgocm9vbTogSG90ZWxSb29tV2l0aExvY2FsUHJpY2UpID0+IHtcbiAgICAgICAgICAgICAgICByb29tID0gdGhpcy5oZWxwZXJzLmNsb25lPEhvdGVsUm9vbVdpdGhMb2NhbFByaWNlPihyb29tKTtcbiAgICAgICAgICAgICAgICByb29tLkxvY2FsUHJpY2UgPSByb29tLmN1cnJlbmN5Q29udmVyc2lvblxuICAgICAgICAgICAgICAgICAgPyByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5sb2NhbFRvdGFsXG4gICAgICAgICAgICAgICAgICA6IHJvb20udG90YWw7XG4gICAgICAgICAgICAgICAgcm9vbS5Mb2NhbEN1cnJlbmN5ID0gcm9vbS5jdXJyZW5jeUNvbnZlcnNpb25cbiAgICAgICAgICAgICAgICAgID8gcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24ubG9jYWxDb2RlXG4gICAgICAgICAgICAgICAgICA6IHJvb20uY3VycmVuY3lDb2RlO1xuICAgICAgICAgICAgICAgIHJldHVybiByb29tO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGhvdGVsLmZ1bGxSb29tcyA9IGhvdGVsLnJvb21zO1xuICAgICAgICAgICAgaG90ZWwuY3VycmVuY2llcyA9IGhvdGVsLnJvb21zLnJlZHVjZShcbiAgICAgICAgICAgICAgKGRldGFpbHM6IEN1cnJlbmN5RGV0YWlscywgcm9vbTogSG90ZWxSb29tV2l0aExvY2FsUHJpY2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocm9vbS5jdXJyZW5jeUNvbnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgIGRldGFpbHNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0gPSBkZXRhaWxzW1xuICAgICAgICAgICAgICAgICAgICByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXG4gICAgICAgICAgICAgICAgICBdIHx8IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4cHJpY2U6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgICAgICAgICBtaW5wcmljZTogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBkZXRhaWxzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVdLm1heHByaWNlID1cbiAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc1tyb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXS5tYXhwcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRUb3RhbFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgZGV0YWlsc1tyb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXS5taW5wcmljZSA9XG4gICAgICAgICAgICAgICAgICAgIE1hdGgubWluKFxuICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0ubWlucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkVG90YWxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jaWVzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsQ29kZV0gPSB0aGlzXG4gICAgICAgICAgICAgICAgICAgIC5jdXJyZW5jaWVzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsQ29kZV0gfHwge1xuICAgICAgICAgICAgICAgICAgICBtYXhwcmljZTogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICAgICAgICAgIG1pbnByaWNlOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY2llc1tcbiAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24ubG9jYWxDb2RlXG4gICAgICAgICAgICAgICAgICBdLm1pbnByaWNlID0gTWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmNpZXNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24ubG9jYWxDb2RlXVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1pbnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgIHJvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsVG90YWxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY2llc1tcbiAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24ubG9jYWxDb2RlXG4gICAgICAgICAgICAgICAgICBdLm1heHByaWNlID0gTWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmNpZXNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24ubG9jYWxDb2RlXVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1heHByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgIHJvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsVG90YWxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHt9IGFzIEN1cnJlbmN5RGV0YWlsc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHJvb21QcmljZXMgPSBob3RlbC5yb29tcy5tYXAoXG4gICAgICAgICAgICAgIHRoaXMuaGVscGVycy5tYXBGaWVsZEZyb21PYmplY3Q8c3RyaW5nLCBudW1iZXI+KCd0b3RhbCcpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFyb29tUHJpY2VzLmxlbmd0aCkgcm9vbVByaWNlcy5wdXNoKDApO1xuICAgICAgICAgICAgaG90ZWwubWlucHJpY2UgPSBNYXRoLm1pbiguLi5yb29tUHJpY2VzKTtcbiAgICAgICAgICAgIGhvdGVsLnBycG4gPSBob3RlbC5taW5wcmljZSA/IGhvdGVsLm1pbnByaWNlIC8gaG90ZWwucm9vbXNbMF0/Lm5pZ2h0cy5sZW5ndGggOiBob3RlbC5wcnBuO1xuICAgICAgICAgICAgaG90ZWwubWF4cHJpY2UgPSBNYXRoLm1heCguLi5yb29tUHJpY2VzKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0SG90ZWxQcmVOaWdodFJhbmdlUHJpY2UoaG90ZWwpXG4gICAgICAgICAgICBpZih0aGlzLmxvd2VzdFByaWNlSG90ZWwuaWQgPT09IG51bGwgJiYgaG90ZWwubWlucHJpY2UgIT09IDAgJiYgaG90ZWwucm9vbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRoaXMubG93ZXN0UHJpY2VIb3RlbC5pZCA9IGhvdGVsLmhvdGVsSWQ7XG4gICAgICAgICAgICAgIHRoaXMubG93ZXN0UHJpY2VIb3RlbC5wcmljZSA9IGhvdGVsLm1pbnByaWNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZih0aGlzLmxvd2VzdFByaWNlSG90ZWwuaWQgJiYgaG90ZWwubWlucHJpY2UgIT09IDAgJiYgaG90ZWwucm9vbXMubGVuZ3RoICYmICh0aGlzLmxvd2VzdFByaWNlSG90ZWwucHJpY2UgPiBob3RlbC5taW5wcmljZSB8fCB0aGlzLmxvd2VzdFByaWNlSG90ZWwucHJpY2UgPT09IDApKSB7XG4gICAgICAgICAgICAgIHRoaXMubG93ZXN0UHJpY2VIb3RlbC5pZCA9IGhvdGVsLmhvdGVsSWQ7XG4gICAgICAgICAgICAgIHRoaXMubG93ZXN0UHJpY2VIb3RlbC5wcmljZSA9IGhvdGVsLm1pbnByaWNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBob3RlbC5yb29tcyA9IGhvdGVsLnJvb21zO1xuICAgICAgICAgICAgaG90ZWwuZnVsbFJvb21zID0gaG90ZWwucm9vbXM7XG4gICAgICAgICAgICBpZiAoaG90ZWw/LmhvdGVsSWQgJiYgdGhpcy5iZWhhdmlvdXJzW2hvdGVsLmhvdGVsSWRdKSB7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtob3RlbC5ob3RlbElkXSA9IGhvdGVsO1xuICAgICAgICAgICAgICB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaG90ZWxJZF0ubmV4dChob3RlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyB0aGlzLnNlc3Npb25TdG9yYWdlLnNldFNlc3Npb25JdGVtKFNFU1NJT05fTkFNRSwgdGhpcy5kYXRhKTtcbiAgICAgICAgICB0aGlzLnNlc3Npb25TdG9yYWdlLnNldFNlc3Npb25JdGVtKFNFU1NJT05fTkFNRSwgaG90ZWxzKTtcbiAgICAgICAgICBpZiAodGhpcy50b0ZldGNoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmZldGNoQXZhbGlsYmlsaXR5KCk7XG4gICAgICAgICAgICB9LCB0aGlzLmVudmlyb25tZW50LmhvdGVsQXZhbGliaWxpdHlUaW1lb3V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mZXRjaGluZy5uZXh0KGZhbHNlKTsgLy8gbW92ZWQgYmFjayBmcm9tIGxpbmUgMzEyIEVkJ3MgcmVhc29uIGZvciBtb3ZpbmcgaW4gdGhlIGZpcnN0IHBsYWNlIGJlbG93XG4gICAgICAgICAgICAgLy8gISAtIG1vdmVkIGhlcmUgc28gdGhhdCBsaWdodG5pbmcgY2FuIHJlc2V0IHRoZSB2aWV3cG9ydCByYXRoZXIgdGhhbiB3YWl0aW5nIHVudGlsIGFsbCBhcmUgZG9uZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgLy8gbWlnaHQgbmVlZCB0byByZWZpbmUgdGhpc1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgKysrIEVycm9yIHJlY292ZXJpbmcgaG90ZWwgYXZhaWxhYmlsdHk6ICR7ZXJyb3J9IC0gcmVzZXRpbmcgYXZhaWxhYmlsdHkgKysrYFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5mZXRjaGluZy5uZXh0KGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAvLyB0aGlzLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVMb3dlc3RQcmljZShob3RlbDogSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG93ZXN0UHJpY2VIb3RlbC5pZCA9PT0gbnVsbCAmJiBob3RlbC5taW5wcmljZSAhPT0gMCAmJiBob3RlbC5yb29tcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubG93ZXN0UHJpY2VIb3RlbC5pZCA9IGhvdGVsLmhvdGVsSWQ7XG4gICAgICB0aGlzLmxvd2VzdFByaWNlSG90ZWwucHJpY2UgPSBob3RlbC5taW5wcmljZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sb3dlc3RQcmljZUhvdGVsLmlkICYmIGhvdGVsLm1pbnByaWNlICE9PSAwICYmIGhvdGVsLnJvb21zLmxlbmd0aCAmJiAodGhpcy5sb3dlc3RQcmljZUhvdGVsLnByaWNlID4gaG90ZWwubWlucHJpY2UgfHwgdGhpcy5sb3dlc3RQcmljZUhvdGVsLnByaWNlID09PSAwKSkge1xuICAgICAgdGhpcy5sb3dlc3RQcmljZUhvdGVsLmlkID0gaG90ZWwuaG90ZWxJZDtcbiAgICAgIHRoaXMubG93ZXN0UHJpY2VIb3RlbC5wcmljZSA9IGhvdGVsLm1pbnByaWNlO1xuICAgIH1cbiAgfVxuXG4gIG1heFByaWNlRm9yQ3VycmVuY3koY3VycmVuY3k6IHN0cmluZykge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmN1cnJlbmNpZXNbY3VycmVuY3ldIHx8IHtcbiAgICAgICAgbWF4cHJpY2U6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICBtaW5wcmljZTogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJcbiAgICAgIH1cbiAgICApLm1heHByaWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiAtIHJldHVybiB0aGUgbnVtYmVyIG9mIGhvdGVscyB0aGF0IGhhdmUgYSBwcmljZSAocHJwbiB2YWx1ZSlcbiAgICovXG4gIG51bWJlck9mSG90ZWxzV2l0aFByaWNlKCk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmRhdGEpKSB7XG4gICAgICAgIGlmICh2YWx1ZT8ucHJwbikge1xuICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cblxuICBnZXRIb3RlbFByZU5pZ2h0UmFuZ2VQcmljZShob3RlbDogSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0KXtcbiAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlW2hvdGVsLmN1cnJlbmN5Q29kZV0gPSB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlW2hvdGVsLmN1cnJlbmN5Q29kZV0gfHwge1xuICAgICAgbWF4cHJpY2U6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICAgbWlucHJpY2U6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgbWF4UmF3UHJpY2U6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSXG4gICAgfTtcblxuICAgIGlmKGhvdGVsLmN1cnJlbmN5Q29kZSl7XG4gICAgICB0aGlzLmhvdGVsQ3VycmVuY2llc1tob3RlbC5jdXJyZW5jeUNvZGVdID0gdGhpcy5ob3RlbEN1cnJlbmNpZXNbaG90ZWwuY3VycmVuY3lDb2RlXSArIDEgfHwgMTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlW1xuICAgICAgaG90ZWwuY3VycmVuY3lDb2RlXG4gICAgXS5taW5wcmljZSA9IE1hdGguY2VpbChcbiAgICAgIE1hdGgubWluKFxuICAgICAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlW2hvdGVsLmN1cnJlbmN5Q29kZV1cbiAgICAgICAgICAubWlucHJpY2UsXG4gICAgICAgICAgaG90ZWwucHJwblxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlW1xuICAgICAgaG90ZWwuY3VycmVuY3lDb2RlXG4gICAgXS5tYXhwcmljZSA9IE1hdGguY2VpbChNYXRoLm1heChcbiAgICAgIHRoaXMuY3VycmVuY2llc1Blck5pZ2h0UHJpY2VbaG90ZWwuY3VycmVuY3lDb2RlXVxuICAgICAgICAubWF4cHJpY2UsXG4gICAgICAgIGhvdGVsLnBycG5cbiAgICApKTtcblxuICAgIHRoaXMuY3VycmVuY2llc1Blck5pZ2h0UHJpY2VbXG4gICAgICBob3RlbC5jdXJyZW5jeUNvZGVcbiAgICBdLm1heFJhd1ByaWNlID0gTWF0aC5tYXgoXG4gICAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlW2hvdGVsLmN1cnJlbmN5Q29kZV1cbiAgICAgICAgLm1heFJhd1ByaWNlLFxuICAgICAgICBob3RlbC5wcnBuXG4gICAgKTtcbiAgfVxuXG4gIHBlck5pZ2h0UHJpY2VSYW5nZUZvckN1cnJlbmN5KGN1cnJlbmN5OiBzdHJpbmcpOiBDdXJyZW5jeURldGFpbCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VycmVuY2llc1Blck5pZ2h0UHJpY2VbY3VycmVuY3ldIHx8IHtcbiAgICAgICAgbWF4cHJpY2U6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICBtaW5wcmljZTogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgIG1heFJhd1ByaWNlOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIGZpbmRDb21tb25Ib3RlbEN1cnJlbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5maW5kSGlnaGVzdFZhbHVlRnJvbU9iaih0aGlzLmhvdGVsQ3VycmVuY2llcyk7XG4gIH1cblxuICBnZXQgaGFzU2FicmVDU0xSZXN1bHRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zYWJyZUNTTE1vZGU7XG4gIH1cblxufVxuIl19
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90ZWwtYXZhbGxpYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYnRzZXJ2aWNlcy9iYXNlL3NyYy9saWIvdmVuZG9yL3NlcnZpY2VzL2hvdGVsLWF2YWxsaWJpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBWXRDLE9BQU8sRUFVTCxlQUFlLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsTUFBTSxZQUFZLEdBQUcsNEJBQTRCLENBQUM7QUFFbEQsTUFBTSxPQUFPLDJCQUEyQjtJQTBCdEMsWUFDVSxrQkFBdUQsRUFDdkQsY0FBa0MsRUFDbEMsT0FBMkIsRUFDM0IsV0FBNEI7UUFINUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQztRQUN2RCxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBM0I5QixTQUFJLEdBQWUsSUFBSSxDQUFDO1FBQ3hCLGVBQVUsR0FFZCxFQUFFLENBQUM7UUFFQyxZQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUN2QyxhQUFRLEdBQTZCLElBQUksZUFBZSxDQUM3RCxLQUFLLENBQ04sQ0FBQztRQUNGLGVBQVUsR0FBb0IsRUFBRSxDQUFDO1FBQ2pDLDRCQUF1QixHQUFvQixFQUFFLENBQUM7UUFDOUMscUJBQWdCLEdBR1o7WUFDRixFQUFFLEVBQUUsSUFBSTtZQUNSLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQztRQUVNLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQUN2Qyx3QkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7SUFPM0IsQ0FB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LElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFzZUVudmlyb25tZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9lbnZpcm9tZW50JztcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4uL2NsYXNzZXMvaGVscGVycyc7XG5pbXBvcnQge1xuICBCYXNlSG90ZWxBdmFsaWJpbGl0eVF1b3RlRmV0Y2hlcixcbiAgSG90ZWxBdmFsaW5pbGl0eUZldGNoZXJUeXBlXG59IGZyb20gJy4uL2ZldGNoZXJzL2hvdGVsLWF2YWxpYWJpbGl0eS1mZXRjaGVyJztcbmltcG9ydCB7XG4gIEhvdGVsSXRpbmVyYXJ5LFxuICBIb3RlbFJvb20sXG4gIFF1ZXJ5R2V0TXVsdGlwbGVIb3RlbHNBdmFpbGFiaWxpdHlBcmdzXG59IGZyb20gJy4uL3R5cGVzL2dyYXBocWwudHlwZXMnO1xuaW1wb3J0IHtcbiAgQ3VycmVuY3lEZXRhaWwsXG4gIEN1cnJlbmN5RGV0YWlscyxcbiAgSG90ZWxBdmFpbGFiaWxpdHlGdWxsUm9vbXMsXG4gIEhvdGVsQXZhbGliaWxpdHlRdWVyeSxcbiAgSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0LFxuICBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHRBcnJheSxcbiAgSG90ZWxDdXJyZW5jaWVzLFxuICBIb3RlbERldGFpbHMsXG4gIEhvdGVsUm9vbVdpdGhMb2NhbFByaWNlLFxuICBTZXJ2aWNlUHJvdmlkZXJcbn0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuXG5pbXBvcnQgeyBCYXNlU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5cbnR5cGUgU3RvcmVkRGF0YSA9IHsgW2tleTogc3RyaW5nXTogSG90ZWxBdmFpbGFiaWxpdHlGdWxsUm9vbXMgfTtcblxuY29uc3QgU0VTU0lPTl9OQU1FID0gJ3Jlc3VsdHNfaG90ZWxfYXZhbGxpYmlsaXR5JztcblxuZXhwb3J0IGNsYXNzIEJhc2VIb3RlbEF2YWxpYmlsaXR5U2VydmljZTxcbiAgUSBleHRlbmRzIEhvdGVsQXZhbGluaWxpdHlGZXRjaGVyVHlwZVxuPiB7XG4gIHByaXZhdGUgZGF0YTogU3RvcmVkRGF0YSA9IG51bGw7XG4gIHByaXZhdGUgYmVoYXZpb3Vyczoge1xuICAgIFtrZXk6IHN0cmluZ106IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWlsYWJpbGl0eUZ1bGxSb29tcz47XG4gIH0gPSB7fTtcbiAgcHJpdmF0ZSB0aW1lb3V0OiBudW1iZXI7XG4gIHByaXZhdGUgdG9GZXRjaDogSG90ZWxBdmFsaWJpbGl0eVF1ZXJ5W10gPSBbXTtcbiAgcHVibGljIGZldGNoaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KFxuICAgIGZhbHNlXG4gICk7XG4gIGN1cnJlbmNpZXM6IEN1cnJlbmN5RGV0YWlscyA9IHt9O1xuICBjdXJyZW5jaWVzUGVyTmlnaHRQcmljZTogQ3VycmVuY3lEZXRhaWxzID0ge307XG4gIGxvd2VzdFByaWNlSG90ZWw6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHByaWNlOiBudW1iZXI7XG4gIH0gPSB7XG4gICAgaWQ6IG51bGwsXG4gICAgcHJpY2U6IDBcbiAgfTtcblxuICBwcml2YXRlIGhvdGVsQ3VycmVuY2llczogSG90ZWxDdXJyZW5jaWVzID0ge307XG4gIHB1YmxpYyBtYXhIb3RlbFJhd01pblByaWNlID0gMDtcbiAgcHJpdmF0ZSBfc2FicmVDU0xNb2RlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhdmFsaWJpbGl0eUZldGhjZXI6IEJhc2VIb3RlbEF2YWxpYmlsaXR5UXVvdGVGZXRjaGVyPFE+LFxuICAgIHByaXZhdGUgc2Vzc2lvblN0b3JhZ2U6IEJhc2VTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGhlbHBlcnM6IEJhc2VIZWxwZXJSb3V0aW5lcyxcbiAgICBwcml2YXRlIGVudmlyb25tZW50OiBCYXNlRW52aXJvbm1lbnRcbiAgKSB7fVxuXG4gIHByaXZhdGUgcmVhZEZyb21TZXNzaW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPVxuICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZS5nZXRTZXNzaW9uSXRlbTxTdG9yZWREYXRhPihTRVNTSU9OX05BTUUpIHx8IHt9O1xuICAgIE9iamVjdC52YWx1ZXMoZGF0YSkuZm9yRWFjaCgoaXRlbTogSG90ZWxBdmFpbGFiaWxpdHlGdWxsUm9vbXMpID0+IHtcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tpdGVtLmhvdGVsSWRdID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWlsYWJpbGl0eUZ1bGxSb29tcz4oXG4gICAgICAgIGl0ZW1cbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmRhdGEgPSB7fTtcbiAgICB0aGlzLmN1cnJlbmNpZXMgPSB7fTtcbiAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlID0ge307XG4gICAgdGhpcy50b0ZldGNoID0gW107XG4gICAgdGhpcy5sb3dlc3RQcmljZUhvdGVsID0ge1xuICAgICAgaWQ6IG51bGwsXG4gICAgICBwcmljZTogMFxuICAgIH07XG4gICAgdGhpcy5mZXRjaGluZy5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlLnJlbW92ZVNlc3Npb25JdGVtKFNFU1NJT05fTkFNRSk7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEpLmZvckVhY2goKGl0ZW06IEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5iZWhhdmlvdXJzW2l0ZW0uaG90ZWxJZF0uY29tcGxldGUoKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmJlaGF2aW91cnNbaXRlbS5ob3RlbElkXTtcbiAgICB9KTtcbiAgICB0aGlzLmJlaGF2aW91cnMgPSB7fTtcbiAgICB0aGlzLmhvdGVsQ3VycmVuY2llcyA9IHt9O1xuICAgIHRoaXMubWF4SG90ZWxSYXdNaW5QcmljZSA9IDA7XG4gIH1cblxuICBnZXRBdmFpbGFiaWxpdHlGb3JJZChcbiAgICBob3RlbDogSG90ZWxBdmFsaWJpbGl0eVF1ZXJ5LFxuICAgIGZ1bGxIb3RlbD86IEhvdGVsSXRpbmVyYXJ5XG4gICk6IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQ+IHtcbiAgICAvLyBjb25zb2xlLmxvZygnKysrIEZldGNoaW5nIHdpdGggZnVsbCBob3RlbCBkYXRhOiAnLCBmdWxsSG90ZWwsICcgKysrJyk7XG5cbiAgICBpZiAoZnVsbEhvdGVsLnNvdXJjZSA9PT0gU2VydmljZVByb3ZpZGVyLlNhYnJlQ1NMKSB7XG4gICAgICB0aGlzLl9zYWJyZUNTTE1vZGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zYWJyZUNTTE1vZGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZnVsbEhvdGVsPy5hdmFpbGFibGVSYXRlcz8ucm9vbXMpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYmVoYXZpb3Vycyk7XG4gICAgICAvLyBhZGQgdGhpcyBkYXRhIHRvIHRoZSBiZWhhdmlvdXJzIGFycmF5IGFuZCByZXR1cm4gaXQgKGlmIGl0IGRvc2VuJ3QgYWxyZWFkeSBleGlzdClcbiAgICAgIGlmICh0aGlzLmJlaGF2aW91cnNbZnVsbEhvdGVsLmlkXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5iZWhhdmlvdXJzW2Z1bGxIb3RlbC5pZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBhZGQgdGhlIGRhdGEgdG8gdGhlIGFycmF5XG4gICAgICAgIGNvbnNvbGUubG9nKGArKysgQWRkIGhvdGVsOiAke2Z1bGxIb3RlbC5pZH0gdG8gYmVoYXZpb3VycyArKytgKTtcbiAgICAgICAgdGhpcy5iZWhhdmlvdXJzW2Z1bGxIb3RlbC5pZF0gPVxuICAgICAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8SG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0PihudWxsKTtcblxuICAgICAgICBjb25zdCBuZXdCZWhhdmlvdXJPYmplY3Q6IEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdCA9XG4gICAgICAgICAgZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzO1xuICAgICAgICBuZXdCZWhhdmlvdXJPYmplY3QubWlucHJpY2UgPSBmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMucm9vbXNbMF1cbiAgICAgICAgICA/IGZ1bGxIb3RlbC5hdmFpbGFibGVSYXRlcy5yb29tc1swXS50b3RhbFxuICAgICAgICAgIDogMDtcbiAgICAgICAgbmV3QmVoYXZpb3VyT2JqZWN0Lm1heHByaWNlID0gbmV3QmVoYXZpb3VyT2JqZWN0Lm1pbnByaWNlXG4gICAgICAgICAgPyBmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMucm9vbXNbXG4gICAgICAgICAgICAgIGZ1bGxIb3RlbC5hdmFpbGFibGVSYXRlcy5yb29tcy5sZW5ndGggLSAxXG4gICAgICAgICAgICBdLnRvdGFsXG4gICAgICAgICAgOiAwO1xuICAgICAgICBmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMucm9vbXMubWFwKChyb29tOiBIb3RlbFJvb20pID0+IHtcbiAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyBjdXJyZW5jeUNvbnZlcnNpb24gLSBzZXQgY3VycmVudCBjdXJyZW5jeVxuICAgICAgICAgIGlmICghcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24pIHtcbiAgICAgICAgICAgIHJvb20uY3VycmVuY3lDb252ZXJzaW9uID0ge1xuICAgICAgICAgICAgICBjb252ZXJ0ZWRDb2RlOiByb29tLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgICAgICAgcmF0ZTogMSxcbiAgICAgICAgICAgICAgbG9jYWxDb2RlOiByb29tLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgICAgICAgbG9jYWxUb3RhbDogcm9vbS50b3RhbCxcbiAgICAgICAgICAgICAgY29udmVydGVkVG90YWw6IHJvb20udG90YWwsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDxIb3RlbEF2YWlsYWJpbGl0eUZ1bGxSb29tcz5mdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMpLmZ1bGxSb29tcyA9IGZ1bGxIb3RlbC5hdmFpbGFibGVSYXRlcy5yb29tcztcbiAgICAgICAgdGhpcy51cGRhdGVMb3dlc3RQcmljZShmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMpO1xuICAgICAgICAvLyBjb25zb2xlLndhcm4obmV3QmVoYXZpb3VyT2JqZWN0KTtcbiAgICAgICAgdGhpcy5iZWhhdmlvdXJzW2Z1bGxIb3RlbC5pZF0ubmV4dChuZXdCZWhhdmlvdXJPYmplY3QpO1xuICAgICAgICB0aGlzLmZldGNoaW5nLm5leHQoZmFsc2UpO1xuICAgICAgICByZXR1cm4gdGhpcy5iZWhhdmlvdXJzW2Z1bGxIb3RlbC5pZF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhIHx8IHRoaXMucmVhZEZyb21TZXNzaW9uKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tmdWxsSG90ZWwuaWRdIHx8XG4gICAgICB0aGlzLl9nZXRBdmFpbGFiaWxpdHlGb3JJZChob3RlbClcbiAgICApO1xuICB9XG5cbiAgZ2V0QXZhaWxhYmlsaXR5VmFsdWUoaG90ZWw6IEhvdGVsRGV0YWlscyk6IEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdCB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhIHx8IHRoaXMucmVhZEZyb21TZXNzaW9uKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5pZCBhcyBzdHJpbmddPy52YWx1ZSB8fFxuICAgICAgKHt9IGFzIEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdClcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlSG90ZWwoaG90ZWw6IEhvdGVsRGV0YWlscyk6IEhvdGVsRGV0YWlscyB7XG4gICAgY29uc29sZS5sb2coJ3VwZGF0aW5nIGhvdGVscycpXG4gICAgaWYgKCFob3RlbC5hdmFpbGFibGVSYXRlcykge1xuICAgICAgaG90ZWwuYXZhaWxhYmxlUmF0ZXMgPSB0aGlzLmdldEF2YWlsYWJpbGl0eVZhbHVlKGhvdGVsKTtcbiAgICB9XG4gICAgcmV0dXJuIGhvdGVsO1xuICB9XG5cbiAgdXBkYXRlUm9vbXMoaG90ZWw6IEhvdGVsQXZhaWxhYmlsaXR5RnVsbFJvb21zLCBtYXRjaGVzOiBIb3RlbFJvb21bXSk6dm9pZCB7XG5cbiAgICBpZiAoaG90ZWw/LnJvb21zICYmIG1hdGNoZXM/Lmxlbmd0aCkge1xuICAgICAgaG90ZWwucm9vbXMgPSBtYXRjaGVzO1xuICAgICAgdGhpcy5kYXRhW2hvdGVsLmhvdGVsSWRdID0gaG90ZWw7XG4gICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmJlaGF2aW91cnMpO1xuICAgICAgdGhpcy5iZWhhdmlvdXJzW2hvdGVsLmhvdGVsSWRdLm5leHQoaG90ZWwpO1xuICAgIH0gZWxzZSBpZiAoaG90ZWwuc291cmNlICE9PSBTZXJ2aWNlUHJvdmlkZXIuUHJlbWllcklubikgeyAvLyAhIC0gUHJlbWllciBJbm4gYWxyZWFkeSBjb21lcyB3aXRoIHJvb21zIC0gZG9uJ3QgcmVtb3ZlIHRoZW1cbiAgICAgIC8vIGlmIG5vIG1hdGNoZXNcbiAgICAgIGhvdGVsLnJvb21zID0gW107XG4gICAgfVxuICB9XG5cbiAgc2V0SG90ZWxBdmFsYWJpbGl0eShob3RlbDogSG90ZWxEZXRhaWxzKTogSG90ZWxEZXRhaWxzIHtcbiAgICBob3RlbC5yZWNlaXZlZEppdFJ1bGVzID0gdHJ1ZTtcbiAgICBpZiAoaG90ZWwuYXZhaWxhYmxlUmF0ZXMgJiYgaG90ZWw/LmF2YWlsYWJsZVJhdGVzLmhvdGVsSWQgJiYgdGhpcy5iZWhhdmlvdXJzW2hvdGVsPy5hdmFpbGFibGVSYXRlcz8uaG90ZWxJZF0pIHtcblxuICAgICAgaWYgKCF0aGlzLmRhdGEpIHtcbiAgICAgICAgdGhpcy5kYXRhID0ge307XG4gICAgICB9XG4gICAgICBjb25zdCBmdWxsUm9vbXMgPSBob3RlbC5hdmFpbGFibGVSYXRlcy5yb29tcztcbiAgICAgIHRoaXMuZGF0YVtob3RlbC5hdmFpbGFibGVSYXRlcy5ob3RlbElkXSA9IGhvdGVsLmF2YWlsYWJsZVJhdGVzO1xuICAgICAgaWYgKGZ1bGxSb29tcykge1xuICAgICAgICB0aGlzLmRhdGFbaG90ZWwuYXZhaWxhYmxlUmF0ZXMuaG90ZWxJZF0uZnVsbFJvb21zID0gZnVsbFJvb21zO1xuICAgICAgfVxuICAgICAgdGhpcy5iZWhhdmlvdXJzW2hvdGVsLmF2YWlsYWJsZVJhdGVzLmhvdGVsSWRdLm5leHQoaG90ZWwuYXZhaWxhYmxlUmF0ZXMpO1xuICAgIH1cbiAgICByZXR1cm4gaG90ZWw7XG4gIH1cblxuICBwcml2YXRlIF9nZXRBdmFpbGFiaWxpdHlGb3JJZChcbiAgICBob3RlbDogSG90ZWxBdmFsaWJpbGl0eVF1ZXJ5XG4gICk6IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQ+IHtcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICB0aGlzLnRpbWVvdXQgPSAwO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5mZXRjaGluZy52YWx1ZSkge1xuICAgICAgdGhpcy50aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuZmV0Y2hBdmFsaWxiaWxpdHkuYmluZCh0aGlzKSxcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudC5hdXRvRmV0Y2hIb3RlbFRpbWVvdXRcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMudG9GZXRjaC5wdXNoKGhvdGVsKTtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5mZXRjaGluZy52YWx1ZSAmJlxuICAgICAgdGhpcy50b0ZldGNoLmxlbmd0aCA+PSB0aGlzLmVudmlyb25tZW50Lm51bWJlck9mSG90ZWxzVG9GZXRjaFxuICAgICkge1xuICAgICAgdGhpcy5mZXRjaEF2YWxpbGJpbGl0eSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGhvdGVsSWRzOiBhbnkgPSBob3RlbC5ob3RlbHM7XG4gICAgdGhpcy5iZWhhdmlvdXJzW2hvdGVsSWRzWzBdLmhvdGVsSWRdID1cbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8SG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0PihudWxsKTtcbiAgICByZXR1cm4gdGhpcy5iZWhhdmlvdXJzW2hvdGVsSWRzWzBdLmhvdGVsSWRdO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaEF2YWxpbGJpbGl0eSgpIHtcbiAgICB0aGlzLmZldGNoaW5nLm5leHQodHJ1ZSk7XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgICAgdGhpcy50aW1lb3V0ID0gMDtcbiAgICB9XG4gICAgY29uc3QgdG9GZXRjaDogYW55ID0gdGhpcy50b0ZldGNoLnNsaWNlKFxuICAgICAgMCxcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQubnVtYmVyT2ZIb3RlbHNUb0ZldGNoXG4gICAgKTtcbiAgICB0aGlzLnRvRmV0Y2ggPSB0aGlzLnRvRmV0Y2guc2xpY2UodGhpcy5lbnZpcm9ubWVudC5udW1iZXJPZkhvdGVsc1RvRmV0Y2gpO1xuXG4gICAgY29uc29sZS5sb2coJ0hvdGVscyBzdGlsbCB0byBmZXRjaCcsIHRoaXMudG9GZXRjaC5sZW5ndGgpO1xuXG4gICAgY29uc3QgaWRzOiBhbnlbXSA9IFtdO1xuXG4gICAgdG9GZXRjaC5mb3JFYWNoKChmZXRjaDogYW55KSA9PiB7XG4gICAgICBpZHMucHVzaChmZXRjaC5ob3RlbHNbMF0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcXVlcnk6IFF1ZXJ5R2V0TXVsdGlwbGVIb3RlbHNBdmFpbGFiaWxpdHlBcmdzID0ge1xuICAgICAgaG90ZWxzOiBpZHMsXG4gICAgICBjdXJyZW5jeTogdG9GZXRjaFswXT8uY3VycmVuY3ksXG4gICAgICBlbmREYXRlOiB0b0ZldGNoWzBdPy5lbmREYXRlLFxuICAgICAgc3RhcnREYXRlOiB0b0ZldGNoWzBdPy5zdGFydERhdGUsXG4gICAgICBvY2N1cGFudHM6IHRvRmV0Y2hbMF0/Lm9jY3VwYW50cyxcbiAgICAgIHJvb21zOiB0b0ZldGNoWzBdPy5yb29tc1xuICAgIH07XG5cbiAgICB0aGlzLmF2YWxpYmlsaXR5RmV0aGNlclxuICAgICAgLmZldGNoTGlzdChxdWVyeSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoaG90ZWxzOiBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHRBcnJheSkgPT4ge1xuICAgICAgICAgIGhvdGVscy5mb3JFYWNoKChob3RlbDogSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBob3RlbCA9IHRoaXMuaGVscGVycy5jbG9uZShob3RlbCk7XG4gICAgICAgICAgICBob3RlbC5yb29tcyA9IChob3RlbC5yb29tcyB8fCBbXSlcbiAgICAgICAgICAgICAgLmZpbHRlcigocm9vbTogSG90ZWxSb29tV2l0aExvY2FsUHJpY2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9vbS50b3RhbCA+IDA7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5tYXAoKHJvb206IEhvdGVsUm9vbVdpdGhMb2NhbFByaWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcm9vbSA9IHRoaXMuaGVscGVycy5jbG9uZTxIb3RlbFJvb21XaXRoTG9jYWxQcmljZT4ocm9vbSk7XG4gICAgICAgICAgICAgICAgcm9vbS5Mb2NhbFByaWNlID0gcm9vbS5jdXJyZW5jeUNvbnZlcnNpb25cbiAgICAgICAgICAgICAgICAgID8gcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24ubG9jYWxUb3RhbFxuICAgICAgICAgICAgICAgICAgOiByb29tLnRvdGFsO1xuICAgICAgICAgICAgICAgIHJvb20uTG9jYWxDdXJyZW5jeSA9IHJvb20uY3VycmVuY3lDb252ZXJzaW9uXG4gICAgICAgICAgICAgICAgICA/IHJvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsQ29kZVxuICAgICAgICAgICAgICAgICAgOiByb29tLmN1cnJlbmN5Q29kZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9vbTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBob3RlbC5mdWxsUm9vbXMgPSBob3RlbC5yb29tcztcbiAgICAgICAgICAgIGhvdGVsLmN1cnJlbmNpZXMgPSBob3RlbC5yb29tcy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChkZXRhaWxzOiBDdXJyZW5jeURldGFpbHMsIHJvb206IEhvdGVsUm9vbVdpdGhMb2NhbFByaWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJvb20uY3VycmVuY3lDb252ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICBkZXRhaWxzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVdID0gZGV0YWlsc1tcbiAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZVxuICAgICAgICAgICAgICAgICAgXSB8fCB7XG4gICAgICAgICAgICAgICAgICAgIG1heHByaWNlOiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgICAgICAgICAgbWlucHJpY2U6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgZGV0YWlsc1tyb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXS5tYXhwcmljZSA9XG4gICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0ubWF4cHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkVG90YWxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGRldGFpbHNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0ubWlucHJpY2UgPVxuICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVdLm1pbnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgIHJvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZFRvdGFsXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY2llc1tyb29tLmN1cnJlbmN5Q29udmVyc2lvbi5sb2NhbENvZGVdID0gdGhpc1xuICAgICAgICAgICAgICAgICAgICAuY3VycmVuY2llc1tyb29tLmN1cnJlbmN5Q29udmVyc2lvbi5sb2NhbENvZGVdIHx8IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4cHJpY2U6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgICAgICAgICBtaW5wcmljZTogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmNpZXNbXG4gICAgICAgICAgICAgICAgICAgIHJvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsQ29kZVxuICAgICAgICAgICAgICAgICAgXS5taW5wcmljZSA9IE1hdGguY2VpbChcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jaWVzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsQ29kZV1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5taW5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5sb2NhbFRvdGFsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmNpZXNbXG4gICAgICAgICAgICAgICAgICAgIHJvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsQ29kZVxuICAgICAgICAgICAgICAgICAgXS5tYXhwcmljZSA9IE1hdGguY2VpbChcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jaWVzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsQ29kZV1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXhwcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5sb2NhbFRvdGFsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fSBhcyBDdXJyZW5jeURldGFpbHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCByb29tUHJpY2VzID0gaG90ZWwucm9vbXMubWFwKFxuICAgICAgICAgICAgICB0aGlzLmhlbHBlcnMubWFwRmllbGRGcm9tT2JqZWN0PHN0cmluZywgbnVtYmVyPigndG90YWwnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghcm9vbVByaWNlcy5sZW5ndGgpIHJvb21QcmljZXMucHVzaCgwKTtcbiAgICAgICAgICAgIGhvdGVsLm1pbnByaWNlID0gTWF0aC5taW4oLi4ucm9vbVByaWNlcyk7XG4gICAgICAgICAgICBob3RlbC5wcnBuID0gaG90ZWwubWlucHJpY2UgPyBob3RlbC5taW5wcmljZSAvIGhvdGVsLnJvb21zWzBdPy5uaWdodHMubGVuZ3RoIDogaG90ZWwucHJwbjtcbiAgICAgICAgICAgIGhvdGVsLm1heHByaWNlID0gTWF0aC5tYXgoLi4ucm9vbVByaWNlcyk7XG4gICAgICAgICAgICB0aGlzLmdldEhvdGVsUHJlTmlnaHRSYW5nZVByaWNlKGhvdGVsKVxuICAgICAgICAgICAgaWYodGhpcy5sb3dlc3RQcmljZUhvdGVsLmlkID09PSBudWxsICYmIGhvdGVsLm1pbnByaWNlICE9PSAwICYmIGhvdGVsLnJvb21zLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLmxvd2VzdFByaWNlSG90ZWwuaWQgPSBob3RlbC5ob3RlbElkO1xuICAgICAgICAgICAgICB0aGlzLmxvd2VzdFByaWNlSG90ZWwucHJpY2UgPSBob3RlbC5taW5wcmljZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYodGhpcy5sb3dlc3RQcmljZUhvdGVsLmlkICYmIGhvdGVsLm1pbnByaWNlICE9PSAwICYmIGhvdGVsLnJvb21zLmxlbmd0aCAmJiAodGhpcy5sb3dlc3RQcmljZUhvdGVsLnByaWNlID4gaG90ZWwubWlucHJpY2UgfHwgdGhpcy5sb3dlc3RQcmljZUhvdGVsLnByaWNlID09PSAwKSkge1xuICAgICAgICAgICAgICB0aGlzLmxvd2VzdFByaWNlSG90ZWwuaWQgPSBob3RlbC5ob3RlbElkO1xuICAgICAgICAgICAgICB0aGlzLmxvd2VzdFByaWNlSG90ZWwucHJpY2UgPSBob3RlbC5taW5wcmljZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaG90ZWwucm9vbXMgPSBob3RlbC5yb29tcztcbiAgICAgICAgICAgIGhvdGVsLmZ1bGxSb29tcyA9IHRoaXMuaGVscGVycy5jbG9uZShob3RlbC5yb29tcyk7XG4gICAgICAgICAgICB0aGlzLmRhdGFbaG90ZWwuaG90ZWxJZF0gPSB0aGlzLmhlbHBlcnMuY2xvbmUoaG90ZWwpO1xuICAgICAgICAgICAgaWYgKGhvdGVsPy5ob3RlbElkICYmIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbElkXSkge1xuICAgICAgICAgICAgICB0aGlzLmRhdGFbaG90ZWwuaG90ZWxJZF0gPSBob3RlbDtcbiAgICAgICAgICAgICAgdGhpcy5iZWhhdmlvdXJzW2hvdGVsLmhvdGVsSWRdLm5leHQoaG90ZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gdGhpcy5zZXNzaW9uU3RvcmFnZS5zZXRTZXNzaW9uSXRlbShTRVNTSU9OX05BTUUsIHRoaXMuZGF0YSk7XG4gICAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZS5zZXRTZXNzaW9uSXRlbShTRVNTSU9OX05BTUUsIGhvdGVscyk7XG4gICAgICAgICAgaWYgKHRoaXMudG9GZXRjaC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5mZXRjaEF2YWxpbGJpbGl0eSgpO1xuICAgICAgICAgICAgfSwgdGhpcy5lbnZpcm9ubWVudC5ob3RlbEF2YWxpYmlsaXR5VGltZW91dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hpbmcubmV4dChmYWxzZSk7IC8vIG1vdmVkIGJhY2sgZnJvbSBsaW5lIDMxMiBFZCdzIHJlYXNvbiBmb3IgbW92aW5nIGluIHRoZSBmaXJzdCBwbGFjZSBiZWxvd1xuICAgICAgICAgICAgIC8vICEgLSBtb3ZlZCBoZXJlIHNvIHRoYXQgbGlnaHRuaW5nIGNhbiByZXNldCB0aGUgdmlld3BvcnQgcmF0aGVyIHRoYW4gd2FpdGluZyB1bnRpbCBhbGwgYXJlIGRvbmVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIC8vIG1pZ2h0IG5lZWQgdG8gcmVmaW5lIHRoaXNcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYCsrKyBFcnJvciByZWNvdmVyaW5nIGhvdGVsIGF2YWlsYWJpbHR5OiAke2Vycm9yfSAtIHJlc2V0aW5nIGF2YWlsYWJpbHR5ICsrK2BcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZmV0Y2hpbmcubmV4dChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgLy8gdGhpcy5yZXNldCgpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlTG93ZXN0UHJpY2UoaG90ZWw6IEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvd2VzdFByaWNlSG90ZWwuaWQgPT09IG51bGwgJiYgaG90ZWwubWlucHJpY2UgIT09IDAgJiYgaG90ZWwucm9vbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxvd2VzdFByaWNlSG90ZWwuaWQgPSBob3RlbC5ob3RlbElkO1xuICAgICAgdGhpcy5sb3dlc3RQcmljZUhvdGVsLnByaWNlID0gaG90ZWwubWlucHJpY2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubG93ZXN0UHJpY2VIb3RlbC5pZCAmJiBob3RlbC5taW5wcmljZSAhPT0gMCAmJiBob3RlbC5yb29tcy5sZW5ndGggJiYgKHRoaXMubG93ZXN0UHJpY2VIb3RlbC5wcmljZSA+IGhvdGVsLm1pbnByaWNlIHx8IHRoaXMubG93ZXN0UHJpY2VIb3RlbC5wcmljZSA9PT0gMCkpIHtcbiAgICAgIHRoaXMubG93ZXN0UHJpY2VIb3RlbC5pZCA9IGhvdGVsLmhvdGVsSWQ7XG4gICAgICB0aGlzLmxvd2VzdFByaWNlSG90ZWwucHJpY2UgPSBob3RlbC5taW5wcmljZTtcbiAgICB9XG4gIH1cblxuICBtYXhQcmljZUZvckN1cnJlbmN5KGN1cnJlbmN5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jdXJyZW5jaWVzW2N1cnJlbmN5XSB8fCB7XG4gICAgICAgIG1heHByaWNlOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgbWlucHJpY2U6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSXG4gICAgICB9XG4gICAgKS5tYXhwcmljZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gLSByZXR1cm4gdGhlIG51bWJlciBvZiBob3RlbHMgdGhhdCBoYXZlIGEgcHJpY2UgKHBycG4gdmFsdWUpXG4gICAqL1xuICBudW1iZXJPZkhvdGVsc1dpdGhQcmljZSgpOiBudW1iZXIge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5kYXRhKSkge1xuICAgICAgICBpZiAodmFsdWU/LnBycG4pIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG5cbiAgZ2V0SG90ZWxQcmVOaWdodFJhbmdlUHJpY2UoaG90ZWw6IEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdCl7XG4gICAgdGhpcy5jdXJyZW5jaWVzUGVyTmlnaHRQcmljZVtob3RlbC5jdXJyZW5jeUNvZGVdID0gdGhpcy5jdXJyZW5jaWVzUGVyTmlnaHRQcmljZVtob3RlbC5jdXJyZW5jeUNvZGVdIHx8IHtcbiAgICAgIG1heHByaWNlOiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixcbiAgICAgIG1pbnByaWNlOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgIG1heFJhd1ByaWNlOiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUlxuICAgIH07XG5cbiAgICBpZihob3RlbC5jdXJyZW5jeUNvZGUpe1xuICAgICAgdGhpcy5ob3RlbEN1cnJlbmNpZXNbaG90ZWwuY3VycmVuY3lDb2RlXSA9IHRoaXMuaG90ZWxDdXJyZW5jaWVzW2hvdGVsLmN1cnJlbmN5Q29kZV0gKyAxIHx8IDE7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW5jaWVzUGVyTmlnaHRQcmljZVtcbiAgICAgIGhvdGVsLmN1cnJlbmN5Q29kZVxuICAgIF0ubWlucHJpY2UgPSBNYXRoLmNlaWwoXG4gICAgICBNYXRoLm1pbihcbiAgICAgICAgdGhpcy5jdXJyZW5jaWVzUGVyTmlnaHRQcmljZVtob3RlbC5jdXJyZW5jeUNvZGVdXG4gICAgICAgICAgLm1pbnByaWNlLFxuICAgICAgICAgIGhvdGVsLnBycG5cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5jdXJyZW5jaWVzUGVyTmlnaHRQcmljZVtcbiAgICAgIGhvdGVsLmN1cnJlbmN5Q29kZVxuICAgIF0ubWF4cHJpY2UgPSBNYXRoLmNlaWwoTWF0aC5tYXgoXG4gICAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlW2hvdGVsLmN1cnJlbmN5Q29kZV1cbiAgICAgICAgLm1heHByaWNlLFxuICAgICAgICBob3RlbC5wcnBuXG4gICAgKSk7XG5cbiAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlW1xuICAgICAgaG90ZWwuY3VycmVuY3lDb2RlXG4gICAgXS5tYXhSYXdQcmljZSA9IE1hdGgubWF4KFxuICAgICAgdGhpcy5jdXJyZW5jaWVzUGVyTmlnaHRQcmljZVtob3RlbC5jdXJyZW5jeUNvZGVdXG4gICAgICAgIC5tYXhSYXdQcmljZSxcbiAgICAgICAgaG90ZWwucHJwblxuICAgICk7XG4gIH1cblxuICBwZXJOaWdodFByaWNlUmFuZ2VGb3JDdXJyZW5jeShjdXJyZW5jeTogc3RyaW5nKTogQ3VycmVuY3lEZXRhaWwge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmN1cnJlbmNpZXNQZXJOaWdodFByaWNlW2N1cnJlbmN5XSB8fCB7XG4gICAgICAgIG1heHByaWNlOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgbWlucHJpY2U6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICAgICBtYXhSYXdQcmljZTogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBmaW5kQ29tbW9uSG90ZWxDdXJyZW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZmluZEhpZ2hlc3RWYWx1ZUZyb21PYmoodGhpcy5ob3RlbEN1cnJlbmNpZXMpO1xuICB9XG5cbiAgZ2V0IGhhc1NhYnJlQ1NMUmVzdWx0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2FicmVDU0xNb2RlO1xuICB9XG5cbn1cbiJdfQ==
@@ -215,7 +215,9 @@ export class BaseLogonService {
215
215
  this.router.navigate(['logOutDigitsUser']);
216
216
  }
217
217
  else if (ssoUser) {
218
- this.router.navigate(['sso-logout']);
218
+ // App doesnt have sso-logout route
219
+ // this.router.navigate(['sso-logout']);
220
+ this.router.navigate(['logon']);
219
221
  }
220
222
  else {
221
223
  this.router.navigate(['logon']);
@@ -223,7 +225,8 @@ export class BaseLogonService {
223
225
  });
224
226
  }
225
227
  else if (ssoUser) {
226
- this.router.navigate(['sso-logout']);
228
+ // this.router.navigate(['sso-logout']);
229
+ this.router.navigate(['logon']);
227
230
  }
228
231
  else {
229
232
  this.router.navigate(['logon']);
@@ -451,4 +454,4 @@ export class BaseLogonService {
451
454
  // }
452
455
  }
453
456
  }
454
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3Ivc2VydmljZXMvbG9nb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFrQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBZXpELE1BQU0sT0FBTyxnQkFBZ0I7SUFxQjNCLFlBQ1UsV0FBaUMsRUFDakMsWUFBb0MsRUFDcEMsSUFBNkIsRUFDN0IsTUFBYyxFQUNkLGVBQW9DLEVBQ3BDLGNBQWtDLEVBQ2xDLFdBQTRCLEVBQzVCLGFBQStDLEVBQy9DLGFBQStDLEVBQy9DLGlCQUFzRDtRQVR0RCxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQXlCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFDL0Msa0JBQWEsR0FBYixhQUFhLENBQWtDO1FBQy9DLHNCQUFpQixH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QUM7aUJBQ2hDO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkI7UUFDSCxDQUFDLEVBQ0QsS0FBSyxDQUFDLEVBQUU7WUFDTixNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLCtEQUErRCxRQUFRLEVBQUUsQ0FBQztZQUMvRixJQUFJLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQ2xCLElBQUksUUFBUSxFQUFFO29CQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixVQUFVLENBQUMsbUJBQW1CLEVBQzlCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQ3RDO3dCQUNFLEtBQUssRUFBRSxRQUFRO3FCQUNoQixDQUNGLENBQUM7aUJBQ0g7YUFDRjtZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUNGLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYztRQUNaLHFFQUFxRTtRQUNyRSwwQ0FBMEM7UUFDMUMsb0RBQW9EO1FBQ3BELHdEQUF3RDtRQUN4RCw0Q0FBNEM7UUFDNUMsSUFBSTtJQUNOLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVTRVJfU0lHTkVET1VUIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFzZU1vZGFsT3BlbmVyU2VydmljZSB9IGZyb20gJy4vbW9kYWwtb3BlbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhdmVsbGVyU2VhcmNoVHlwZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZWFyY2guc2VydmljZSc7XG5cbmltcG9ydCB7IFVSTFMgfSBmcm9tICcuL3VybC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJGYXZvcnVyaXRlIH0gZnJvbSAnLi4vY2xhc3Nlcy91c2VyLWZhdm91cml0ZS5lbnVtJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlRXZlbnRNZXNzZW5hZ2VyIH0gZnJvbSAnLi4vY2xhc3Nlcy9ldmVudC1tZXNzZW5hZ2VyJztcbmltcG9ydCB7IEJhc2VFbnZpcm9ubWVudCB9IGZyb20gJy4uL2NsYXNzZXMvZW52aXJvbWVudCc7XG5pbXBvcnQgeyBNb2RhbFR5cGVzIH0gZnJvbSAnLi4vY2xhc3Nlcy9tb2RhbC10eXBlcy5lbnVtJztcbmltcG9ydCB7IFVzZXJEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy91c2VyLmRhdGEnO1xuaW1wb3J0IHsgQXV0aEluZm8sIExvZ2luUmVzcG9uc2UsIFBhc3N3b3JkQ2hhbmdlUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvbG9naW4ubW9kZWwnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0l1c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RIdHRwQ2FsbFNlcnZpY2UgfSBmcm9tICcuL2h0dHAtY2FsbC5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7IEVudGVycHJpc2VTZWFyY2hTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9Jc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0llbnRlcnByaXNlLWJhc2tldC5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYXZlbGxlciB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcblxuaW1wb3J0IHtcbiAgQmFzZUdldExhdGVzdFZlcnNpb25zRmV0Y2hlcixcbiAgR2V0TGF0ZXN0VmVyc2lvbnNGZXRjaGVyVHlwZVxufSBmcm9tICcuLi9mZXRjaGVycy9nZXQtbGF0ZXN0LXZlcnNpb25zLmZldGNoZXInO1xuXG5leHBvcnQgY2xhc3MgQmFzZUxvZ29uU2VydmljZTxHTFZfRiBleHRlbmRzIEdldExhdGVzdFZlcnNpb25zRmV0Y2hlclR5cGU+IHtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICBpc0xvZ2dlZEluID0gZmFsc2U7XG4gIHJlZGlyZWN0VXJsID0gJyc7XG4gIGF1dGhJbmZvOiBBdXRoSW5mbztcbiAgbG9naW5SZXNwb25zZTogTG9naW5SZXNwb25zZTtcbiAgdGltZW91dFN1YnNjcmlwdGlvbjogbnVtYmVyO1xuICByZWZyZXNoUHJvbWlzZTogUHJvbWlzZTxib29sZWFuPiA9IG51bGw7XG4gIGJlY29taW5nVXNlcjogYm9vbGVhbiA9IGZhbHNlO1xuICB1bkJlY29taW5nVXNlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvcl9tZXNzYWdlOiBzdHJpbmc7XG4gIGlzQ2hlY2tpbmdWZXJzaW9uID0gZmFsc2U7XG4gIF92ZXJzaW9uOiBzdHJpbmcgPSBudWxsO1xuICBpc1NjaW9uRW52OiBib29sZWFuID0gZmFsc2U7XG4gIGlzTGlnaHRuaW5nRW52OiBib29sZWFuID0gdHJ1ZTtcbiAgZ2V0IG9idFZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247XG4gIH1cbiAgc2V0IG9idFZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmVyc2lvbiA9IHZlcnNpb247XG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJhc2VNb2RhbE9wZW5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBBYnN0cmFjdEh0dHBDYWxsU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZXZlbnRNZXNzZW5hZ2VyOiBCYXNlRXZlbnRNZXNzZW5hZ2VyLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IEJhc2VTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGVudmlyb25tZW50OiBCYXNlRW52aXJvbm1lbnQsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBFbnRlcnByaXNlU2VhcmNoU2VydmljZUludGVyZmFjZSxcbiAgICBwcml2YXRlIGJhc2tldFNlcnZpY2U6IEVudGVycHJpc2VCYXNrZXRTZXJ2aWNlSW50ZXJmYWNlLFxuICAgIHByaXZhdGUgZ2V0TGF0ZXN0VmVyc2lvbnM6IEJhc2VHZXRMYXRlc3RWZXJzaW9uc0ZldGNoZXI8R0xWX0Y+XG4gICkge1xuICAgIHRoaXMuc2V0RW52aXJvbm1lbnQoKTtcbiAgfVxuXG4gIGNoZWNrTG9naW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuKCk7XG4gIH1cblxuICByZWZyZXNoVG9rZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhpcy5yZWZyZXNoUHJvbWlzZSA9XG4gICAgICB0aGlzLnJlZnJlc2hQcm9taXNlIHx8XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkLCByZWplY3Q6IChlcnJvcjogYW55KSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJSZWZyZXNoKCk7XG4gICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgIC5mb3JtRW5jb2RlZFBvc3ROb0Vycm9ySGFuZGxpbmcoVVJMUy5SZWZyZXNoLCB7fSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoZGF0YSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlc3BvbnNlKGRhdGEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgIGRhdGEgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvTG9nb3V0KHJlc29sdmUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tWZXJzaW9uVXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJlZnJlc2goKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hdXRvTG9nb3V0KHJlc29sdmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICB9KVxuICAgICAgICAudGhlbigoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucmVmcmVzaFByb21pc2UgPSBudWxsO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLnJlZnJlc2hQcm9taXNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhdXRvTG9nb3V0KHJlc29sdmU6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCkge1xuICAgIGlmICghdGhpcy51c2VyU2VydmljZS5pc0xvZ2dlZEluKCkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5yb3V0ZXIudXJsICE9PSAnLycgJiZcbiAgICAgICAgIXRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnbG9nb24nKSAmJlxuICAgICAgICAhdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdyZXNldC1wYXNzd29yZCcpICYmIFxuICAgICAgICAhdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdzc28tbG9nb3V0JykgXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnJvdXRlci51cmwgIT09ICcvJyAmJlxuICAgICAgIXRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnbG9nb24nKSAmJlxuICAgICAgIXRoaXMucm91dGVyLnVybC5pbmNsdWRlcygncmVzZXQtcGFzc3dvcmQnKSAmJiBcbiAgICAgICF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ3Nzby1sb2dvdXQnKVxuICAgICkge1xuICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICAgIGlmICghdGhpcy51c2VyU2VydmljZS51c2VySXNTU08oKSkge1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxuICAgICAgICAub3BlbihNb2RhbFR5cGVzLkF1dG9Mb2dnaW5nT3V0Q29tcG9uZW50LCB7IGNlbnRlcmVkOiB0cnVlLCBiYWNrZHJvcDogJ3N0YXRpYycgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMudGltZW91dFN1YnNjcmlwdGlvbikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFN1YnNjcmlwdGlvbik7XG4gICAgICB0aGlzLnRpbWVvdXRTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0UmVmcmVzaCgpIHtcbiAgICB0aGlzLnRpbWVvdXRTdWJzY3JpcHRpb24gPSB3aW5kb3cuc2V0VGltZW91dChcbiAgICAgIHRoaXMucmVmcmVzaFRva2VuLmJpbmQodGhpcyksXG4gICAgICB0aGlzLmVudmlyb25tZW50LmF1dGhSZWZyZXNoVGltZW91dCAqIDEwMDBcbiAgICApO1xuICB9XG5cbiAgYmVjb21lVXNlcih1c2VybmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhpcy5iZWNvbWluZ1VzZXIgPSB0cnVlO1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0Qm9ibyhudWxsKTsgLy8gaXNuJ3QgYm9ibyBNciBCdXJucycgdGVkZHkgYmVhcj9cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCwgcmVqZWN0OiAoZXJyb3I6IGFueSkgPT4gdm9pZCkgPT4ge1xuICAgICAgdGhpcy5jbGVhclJlZnJlc2goKTtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXJTZXNzaW9uRGF0YSgpO1xuXG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLnBvc3QoVVJMUy5CRUNPTUVfVVNFUiwgeyB1c2VybmFtZSB9KVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5iZWNvbWluZ1VzZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYmFza2V0U2VydmljZS5yZXNldEJhc2tldHMoKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5zZXRVc2VyKGRhdGEuand0T2JqZWN0KTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnJlc2V0U2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICB0aGlzLmJhc2tldFNlcnZpY2UucmVzZXQoKTtcblxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtYWluJ10pO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmVjb21pbmdVc2VyID0gZmFsc2U7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGVuZEJlY29tZVVzZXJTZXNzaW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMudW5CZWNvbWluZ1VzZXIgPSB0cnVlO1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0Qm9ibyhudWxsKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCwgcmVqZWN0OiAoZXJyb3I6IGFueSkgPT4gdm9pZCkgPT4ge1xuICAgICAgdGhpcy5jbGVhclJlZnJlc2goKTtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXJTZXNzaW9uRGF0YSgpO1xuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnJlc2V0KCk7XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2UucmVzZXRTZWFyY2hQYXJhbXMoKTtcbiAgICAgIHRoaXMuYmFza2V0U2VydmljZS5yZXNldCgpO1xuXG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLnBvc3QoVVJMUy5FTkRfQkVDT01FX1VTRVIsIHt9KVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5iYXNrZXRTZXJ2aWNlLnJlc2V0QmFza2V0cygpO1xuICAgICAgICAgICAgdGhpcy51bkJlY29taW5nVXNlciA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldFVzZXIoZGF0YS5qd3RPYmplY3QpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMudW5CZWNvbWluZ1VzZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgbG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgYWdhaW4/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxVc2VyRGF0YT4ge1xuICAgIHRoaXMudXNlclNlcnZpY2UuZW1wdHlVc2VyRGF0YSgpO1xuXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclNlc3Npb25EYXRhKCk7XG4gICAgdGhpcy5jbGVhclJlZnJlc2goKTtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UucmVzZXRTZWFyY2hQYXJhbXMoKTtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldEJvYm8obnVsbCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmZvcm1FbmNvZGVkUG9zdE5vRXJyb3JIYW5kbGluZyhVUkxTLkFjY2Vzc1Rva2VuLCB7XG4gICAgICAgIHVzZXJuYW1lLFxuICAgICAgICBwYXNzd29yZFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAoKHZhbHVlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXNwb25zZSh2YWx1ZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLypcbiAgICBAZGVzYyAtIHRoaXMgd2lsbCBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBsb2dpbiBlcnJvciBmb3IgdGhlIHJlcXVlc3Qgb3Igbm90LCBzaW5jZSB0aGlzIGlzIGEgcG90ZW50aWFsIGVycm9yIGZvciBldmVyeSBjYWxsXG4gICoqL1xuICBoYW5kbGVSZXNwb25zZShkYXRhOiBhbnkpOiBhbnkge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgZGF0YS5qd3QpIHtcbiAgICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0VXNlcihkYXRhLmp3dE9iamVjdCk7XG4gICAgICB0aGlzLmlzTG9nZ2VkSW4gPSB0cnVlO1xuICAgICAgZGVsZXRlIGRhdGEuand0O1xuICAgICAgZGVsZXRlIGRhdGEuand0T2JqZWN0O1xuICAgICAgLy8gaGVyZSB3ZSBjYW4gZG8gdGhlIGJvYm8gbG9naWNcbiAgICAgIGNvbnN0IGJvYm86c3RyaW5nID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uSXRlbSgnYm9ibycpO1xuICAgICAgaWYgKCF0aGlzLnVzZXJTZXJ2aWNlLmJvYm8gJiYgYm9ibykge1xuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoVHJhdmVsbGVycyhib2JvLCBUcmF2ZWxsZXJTZWFyY2hUeXBlcy5lbWFpbCkuc3Vic2NyaWJlKChkYXRhOlRyYXZlbGxlcltdKT0+e1xuICAgICAgICAgIGNvbnN0IG1hdGNoZWRVc2VyID0gZGF0YS5maW5kKHVzZXI9PnVzZXIuZW1haWwgPT09IGJvYm8pXG4gICAgICAgICAgdGhpcy51c2VyU2VydmljZS5zZXRCb2JvKG1hdGNoZWRVc2VyKTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBsb2dvdXQoKSB7XG5cbiAgICBjb25zdCBzc29Vc2VyID0gdGhpcy51c2VyU2VydmljZS51c2VySXNTU08oKTtcblxuICAgIGNvbnNvbGUubG9nKGArKysgVXNlciBpcyBTU08gb25seTogJHtzc29Vc2VyfSArKytgKTtcblxuICAgIGlmICh0aGlzLmlzTG9nZ2VkSW4pIHtcbiAgICAgIHRoaXMuY2xlYXJSZWZyZXNoKCk7XG4gICAgICB0aGlzLmlzTG9nZ2VkSW4gPSBmYWxzZTtcbiAgICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0Qm9ibyhudWxsLCAhdGhpcy5pc0xvZ2dlZEluKTtcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZW1vdmVBbGxUcmF2ZWxsZXJzKCk7XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2UucmVzZXRTZWFyY2hQYXJhbXMoKTtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuZW1wdHlVc2VyRGF0YSgpO1xuXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNsZWFyU2Vzc2lvbkRhdGEoKTtcbiAgICAgIHRoaXMuaHR0cC5wb3N0KFVSTFMuTE9HT1VUX1VSTCkuc3Vic2NyaWJlKFxuICAgICAgICBkYXRhID0+IHtcbiAgICAgICAgICBpZiAoIWRhdGEuTG9nb3V0U3VjY2Vzcykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBxdW90ZW1hcmtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIllvdSdyZSBub3QgbG9nZ2VkIGluLCBjYW5ub3QgbG9nIG91dC5cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ldmVudE1lc3NlbmFnZXIuZW1pdChVU0VSX1NJR05FRE9VVCwge30pO1xuXG4gICAgICAgICAgaWYgKHRoaXMudXNlclNlcnZpY2UuaXNVc2VyRmF2b3JpdGVTZXQoVXNlckZhdm9ydXJpdGUuU1NPX25vX3Bhc3N3b3JkKSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsb2dPdXREaWdpdHNVc2VyJ10pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3NvVXNlcikge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydzc28tbG9nb3V0J10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2xvZ29uJ10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNzb1VzZXIpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnc3NvLWxvZ291dCddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsb2dvbiddKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckxvZ2luRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyUmVmcmVzaCgpO1xuICAgIHRoaXMuaXNMb2dnZWRJbiA9IGZhbHNlO1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0Qm9ibyhudWxsLCAhdGhpcy5pc0xvZ2dlZEluKTtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2UucmVtb3ZlQWxsVHJhdmVsbGVycygpO1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZXNldFNlYXJjaFBhcmFtcygpO1xuICAgIHRoaXMudXNlclNlcnZpY2UuZW1wdHlVc2VyRGF0YSgpO1xuXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclNlc3Npb25EYXRhKCk7XG4gIH1cblxuICByZXNldFBhc3N3b3JkKFxuICAgIHBhc3N3b3JkUmVzZXRUb2tlbjogc3RyaW5nLFxuICAgIG5ld1Bhc3N3b3JkOiBzdHJpbmcsXG4gICAgc291cmNlOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxQYXNzd29yZENoYW5nZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5mb3JtRW5jb2RlZFBvc3QoVVJMUy5SRVNFVF9QQVNTV09SRCwge1xuICAgICAgcGFzc3dvcmRSZXNldFRva2VuLFxuICAgICAgbmV3UGFzc3dvcmQsXG4gICAgICBzb3VyY2VcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0UGFzc3dvcmROb1Rva2VuKG5ld1Bhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5mb3JtRW5jb2RlZFBvc3QoVVJMUy5SRVNFVF9QQVNTV09SRF9OT19UT0tFTiwge1xuICAgICAgICBwYXNzd29yZDogbmV3UGFzc3dvcmRcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBjaGFuZ2VQYXNzd29yZChuZXdQYXNzOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlc2V0UGFzc3dvcmROb1Rva2VuKG5ld1Bhc3MpXG4gICAgICAudGhlbihuZXdKV1QgPT4ge1xuICAgICAgICB0aGlzLnNldFJlZnJlc2goKTtcbiAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShuZXdKV1QpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgZXJyb3I6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qXG4gICAgQGRlc2MgLSBhY3RhdWFsbHkgY2FsbCB0aGUgYmFja2VuZCBwZXJsIGZvciByZWNvdmVyIHBhc3NcbiAgKiovXG4gIHJlY292ZXJQYXNzd29yZCh1c2VybmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmZvcm1FbmNvZGVkUG9zdChcbiAgICAgIFVSTFMuUkVDT1ZFUl9QQVNTV09SRF9VUkwsXG4gICAgICB7XG4gICAgICAgIHVzZXJuYW1lOiBgJHt1c2VybmFtZX1gXG4gICAgICB9LFxuICAgICAgJ3RleHQnXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAqXHRAZGVzYyAtIGVycm9yIGhhbmRsaW5nLCBvcGVucyBhIG1vZGFsIHdpdGggdGhlIHBhc3NlZCBpbiBlcnJvciBtZXNzYWdlXG4gICAqKi9cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IHN0cmluZykge1xuICAgIC8vIHRoaXMudXNlclNlcnZpY2UuYmVjb21pbmdVc2VyID0gZmFsc2U7XG4gICAgY29uc3QgbW9kYWxWYWx1ZXMgPSB7XG4gICAgICBlcnJvclxuICAgIH07XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihNb2RhbFR5cGVzLk1vZGFsRXJyb3JDb21wb25lbnQsIHsgYmFja2Ryb3A6ICdzdGF0aWMnIH0sIG1vZGFsVmFsdWVzKTtcbiAgfVxuXG4gIGlzT25TdGFnaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzT25EZXYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hlY2tWZXJzaW9uVXBkYXRlKCk6IHZvaWQge1xuICAgIC8vIGNvbnN0IGlzUHJvZCA9ICF0aGlzLmlzT25EZXYoKSAmJiAhdGhpcy5pc09uU3RhZ2luZygpO1xuICAgIC8vIGlmICghdGhpcy5pc0NoZWNraW5nVmVyc2lvbikge1xuICAgIC8vICAgdGhpcy5pc0NoZWNraW5nVmVyc2lvbiA9IHRydWU7XG4gICAgLy8gICBjb25zdCBvbGRWZXJzaW9uOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25JdGVtKCd2ZXJzaW9uJyk7XG4gICAgLy8gICBpZiAoIW9sZFZlcnNpb24pIHtcbiAgICAvLyAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uSXRlbSgndmVyc2lvbicsIHRoaXMub2J0VmVyc2lvbik7XG4gICAgLy8gICAgIHRoaXMuaXNDaGVja2luZ1ZlcnNpb24gPSBmYWxzZTtcbiAgICAvLyAgIH0gZWxzZSBpZiAoaXNQcm9kKSB7XG4gICAgLy8gICAgIC8vICEgY29tbWVudCBvdXQgc28gZGV2IHZlcnNpb24gZG9lc24ndCBicmVhayAtIHdlIG5lZWQgdGhpcyB3b3JraW5nIGJlZm9yZSBuZXh0IHByb3BlciByZWxlYXNlXG4gICAgLy8gICAgIHRoaXMuZ2V0TGF0ZXN0VmVyc2lvbnMuZmV0Y2hMaXN0KCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgIC8vICAgICAgIC8vIHRoaXMgaXMgd2hhdCB3ZSBjYXJlIGFib3V0XG4gICAgLy8gICAgICAgY29uc3QgbmV3VmVyc2lvbiA9IGRhdGEuZmluZCh2ZXJzaW9uID0+IHZlcnNpb24ub2J0TmFtZSA9PT0gdGhpcy5lbnZpcm9ubWVudC5vYnQpPy52ZXJzaW9uO1xuICAgIC8vICAgICAgIC8vIGlmIC5zcGxpdCgnLicpIGdpdmVzIHVzIG1vcmUgdGhlbiBsZW5ndGggPT09IDEgdGhlbiBqdXN0IHJlZnJlc2ggYW5kIHRoZSBvYnQgc2V0IFxuICAgIC8vICAgICAgIGNvbnN0IHNwbGl0TmV3VmVyc2lvbiA9IG5ld1ZlcnNpb24uc3BsaXQoJy4nKTtcbiAgICAvLyAgICAgICBjb25zdCBzcGxpdE9sZFZlcnNpb24gPSBvbGRWZXJzaW9uLnNwbGl0KCcuJyk7XG4gICAgLy8gICAgICAgaWYgKHNwbGl0TmV3VmVyc2lvbi5sZW5ndGggPT09IDEpIHtcbiAgICAvLyAgICAgICAgIC8vIHdlIGFzc3VtZSB3ZSBvbmx5IGhhdmUgdGhlIGhhc2hcbiAgICAvLyAgICAgICAgIGNvbnN0IGN1cnJlbnRIYXNoID0gdGhpcy5lbnZpcm9ubWVudC5vYnQgPT09ICdsaWdodG5pbmcnID8gc3BsaXRPbGRWZXJzaW9uWzNdIDogc3BsaXRPbGRWZXJzaW9uWzJdO1xuICAgIC8vICAgICAgICAgaWYgKGN1cnJlbnRIYXNoICE9PSBuZXdWZXJzaW9uKSB7XG4gICAgLy8gICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oTW9kYWxUeXBlcy5OZXdWZXJzaW9uLCB7YmFja2Ryb3A6ICdzdGF0aWMnfSkudGhlbigoKSA9PiB7XG4gICAgLy8gICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uSXRlbSgndmVyc2lvbicsIHRoaXMub2J0VmVyc2lvbik7XG4gICAgLy8gICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgLy8gICAgICAgICAgIH0pO1xuICAgIC8vICAgICAgICAgICB0aGlzLmlzQ2hlY2tpbmdWZXJzaW9uID0gZmFsc2U7XG4gICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgICB0aGlzLmlzQ2hlY2tpbmdWZXJzaW9uID0gZmFsc2U7XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IGN1cnJlbnRSZWxlYXNlTnVtYmVyID0gdGhpcy5lbnZpcm9ubWVudC5vYnQgPT09ICdsaWdodG5pbmcnID8gK3NwbGl0T2xkVmVyc2lvblsxXSA6ICtzcGxpdE9sZFZlcnNpb25bMF07XG4gICAgLy8gICAgICAgICBjb25zdCBjdXJyZW50SXRlcmF0aW9uID0gdGhpcy5lbnZpcm9ubWVudC5vYnQgPT09ICdsaWdodG5pbmcnID8gK3NwbGl0T2xkVmVyc2lvblsyXSA6ICtzcGxpdE9sZFZlcnNpb25bMV07XG4gICAgLy8gICAgICAgICBjb25zdCBuZXdSZWxlYXNlTnVtYmVyID0gdGhpcy5lbnZpcm9ubWVudC5vYnQgPT09ICdsaWdodG5pbmcnID8gK3NwbGl0TmV3VmVyc2lvblsxXSA6ICtzcGxpdE5ld1ZlcnNpb25bMF07XG4gICAgLy8gICAgICAgICBjb25zdCBuZXdJdGVyYXRpb24gPSB0aGlzLmVudmlyb25tZW50Lm9idCA9PT0gJ2xpZ2h0bmluZycgPyArc3BsaXROZXdWZXJzaW9uWzJdIDogK3NwbGl0TmV3VmVyc2lvblsxXTtcbiAgICAvLyAgICAgICAgIC8vIG9idmlvdXNseSBpZiB0aGV5IGFyZSB0aGUgc2FtZS4uLi5kbyBub3RoaW5nXG4gICAgLy8gICAgICAgICBpZiAobmV3VmVyc2lvbiAmJiBvbGRWZXJzaW9uICYmIChvbGRWZXJzaW9uID09PSAnZGV2ZWxvcG1lbnQnIHx8IG5ld1ZlcnNpb24gPT09IG9sZFZlcnNpb24pKSB7XG4gICAgLy8gICAgICAgICAgIC8vZG8gbm90aGluZyB0aGlzIGlzIGxvY2FsIG9yIHZlcnNpb25zIG1hdGNoXG4gICAgLy8gICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U2Vzc2lvbkl0ZW0oJ3ZlcnNpb24nLCB0aGlzLm9idFZlcnNpb24pO1xuICAgIC8vICAgICAgICAgICB0aGlzLmlzQ2hlY2tpbmdWZXJzaW9uID0gZmFsc2U7XG4gICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgICBpZiAobmV3VmVyc2lvbiAmJiBvbGRWZXJzaW9uICYmIChjdXJyZW50UmVsZWFzZU51bWJlciA8IG5ld1JlbGVhc2VOdW1iZXIgfHwgY3VycmVudEl0ZXJhdGlvbiA8IG5ld0l0ZXJhdGlvbiB8fCAob2xkVmVyc2lvbiAhPT0gbmV3VmVyc2lvbiAmJiBjdXJyZW50UmVsZWFzZU51bWJlciA9PT0gbmV3UmVsZWFzZU51bWJlciAmJiBjdXJyZW50SXRlcmF0aW9uID09PSBuZXdJdGVyYXRpb24pKSkge1xuICAgIC8vICAgICAgICAgICAgIHRoaXMub2J0VmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgLy8gICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihNb2RhbFR5cGVzLk5ld1ZlcnNpb24sIHtiYWNrZHJvcDogJ3N0YXRpYyd9KS50aGVuKCgpID0+IHtcbiAgICAvLyAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U2Vzc2lvbkl0ZW0oJ3ZlcnNpb24nLCB0aGlzLm9idFZlcnNpb24pO1xuICAgIC8vICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgLy8gICAgICAgICAgICAgfSk7XG4gICAgLy8gICAgICAgICAgICAgdGhpcy5pc0NoZWNraW5nVmVyc2lvbiA9IGZhbHNlO1xuICAgIC8vICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgIHRoaXMuaXNDaGVja2luZ1ZlcnNpb24gPSBmYWxzZTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH0pO1xuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgfTtcblxuXG4gIC8vIG9wZW5SZXNldFBhc3N3b3JkRGlhbG9nKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgLy8gICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE1vZGFsVHlwZXMuTW9kYWxQYXNzd29yZFJlc2V0Q29tcG9uZW50LCB7XG4gIC8vICAgICB3aWR0aDogJzYwMHB4JyxcbiAgLy8gICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgLy8gICAgIHBhbmVsQ2xhc3M6ICdyZXNldC1wYXNzd29yZC1kaWFsb2ctY29udGFpbmVyJyxcbiAgLy8gICAgIHBvc2l0aW9uOiB7XG4gIC8vICAgICAgIHRvcDogJzUwdmgnLFxuICAvLyAgICAgICBsZWZ0OiAnNTB2dydcbiAgLy8gICAgIH1cbiAgLy8gICB9LFxuICAvLyAgICAge1xuICAvLyAgICAgICB0b2tlbjogdG9rZW5cbiAgLy8gICAgIH1cbiAgLy8gICApLnRoZW4oKHJlc3VsdDogYm9vbGVhbikgPT4ge1xuICAvLyAgICAgaWYgKHJlc3VsdCkge1xuICAvLyAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFxuICAvLyAgICAgICAgIE1vZGFsVHlwZXMuSW5mb01vZGFsQ29tcG9uZW50LFxuICAvLyAgICAgICAgIHsgY2VudGVyZWQ6IHRydWUsIGJhY2tkcm9wOiAnc3RhdGljJyB9LFxuICAvLyAgICAgICAgIHtcbiAgLy8gICAgICAgICAgIGluZm86ICdQYXNzd29yZCBjaGFuZ2VkIHN1Y2Nlc3NmdWxseS4nLFxuICAvLyAgICAgICAgICAgdGl0bGU6ICdQYXNzd29yZCBSZXNldCcsXG4gIC8vICAgICAgICAgICBzaG93SWNvbjogZmFsc2UsXG4gIC8vICAgICAgICAgICBidXR0b25UZXh0OiAnT2snXG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICApO1xuICAvLyAgICAgfVxuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgb3BlblJlc2V0UGFzc3dvcmREaWFsb2codG9rZW46IHN0cmluZywgc291cmNlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZVxuICAgICAgLm9wZW4oXG4gICAgICAgIE1vZGFsVHlwZXMuTW9kYWxQYXNzd29yZFJlc2V0Q29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgd2lkdGg6ICc2MDBweCcsXG4gICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICdyZXNldC1wYXNzd29yZC1kaWFsb2ctY29udGFpbmVyJyxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgdG9wOiAnNTB2aCcsXG4gICAgICAgICAgICBsZWZ0OiAnNTB2dydcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0b2tlbjogdG9rZW4sXG4gICAgICAgICAgc291cmNlXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC50aGVuKChyZXN1bHQ6IHsgand0OiBzdHJpbmc7IHNvdXJjZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIGlmIChyZXN1bHQuc291cmNlID09PSAnQVBQJykge1xuICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihcbiAgICAgICAgICAgICAgTW9kYWxUeXBlcy5JbmZvTW9kYWxDb21wb25lbnQsXG4gICAgICAgICAgICAgIHsgY2VudGVyZWQ6IHRydWUsIGJhY2tkcm9wOiAnc3RhdGljJyB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5mbzogJ1lvdXIgcGFzc3dvcmQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlc2V0LiBQbGVhc2UgcmV0dXJuIHRvIExpZ2h0bmluZyBFTUVBIGFwcCB0byBzaWduIGluIHRvIHlvdXIgYWNjb3VudC4nLFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnUGFzc3dvcmQgUmVzZXQnLFxuICAgICAgICAgICAgICAgIHNob3dJY29uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0OiAnT2snXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXG4gICAgICAgICAgICAgIE1vZGFsVHlwZXMuSW5mb01vZGFsQ29tcG9uZW50LFxuICAgICAgICAgICAgICB7IGNlbnRlcmVkOiB0cnVlLCBiYWNrZHJvcDogJ3N0YXRpYycgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGluZm86ICdQYXNzd29yZCBjaGFuZ2VkIHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnUGFzc3dvcmQgUmVzZXQnLFxuICAgICAgICAgICAgICAgIHNob3dJY29uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0OiAnT2snXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHJlc2V0UGFzc3dvcmREaWFsb2coXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBuZXdQYXNzd29yZDogc3RyaW5nLFxuICAgIHNvdXJjZTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8eyBqd3Q6IHN0cmluZzsgc291cmNlOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTdWJqZWN0PHsgand0OiBzdHJpbmc7IHNvdXJjZTogc3RyaW5nIH0+KCk7XG4gICAgdGhpcy5yZXNldFBhc3N3b3JkKHRva2VuLCBuZXdQYXNzd29yZCwgc291cmNlKS5zdWJzY3JpYmUoXG4gICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U2Vzc2lvbkl0ZW0oJ3JlZnJlc2hUb2tlbicsIGRhdGFbJ2p3dCddKTtcbiAgICAgICAgICBpZiAoZGF0YT8uc291cmNlID09PSAnV0VCJykge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtYWluJ10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQubmV4dChkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgY29uc3QgeyBlcnJvcjogZXJyb3JNc2csIHN0YXR1cyB9ID0gZXJyb3I7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgdGhpcy5lcnJvcl9tZXNzYWdlID0gYFBhc3N3b3JkIHJlc2V0IHVuc3VjY2Vzc2Z1bCBkdWUgdG8gZmFpbGluZyBwYXNzd29yZCBwb2xpY3k6ICR7ZXJyb3JNc2d9YDtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgaWYgKGVycm9yTXNnKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFxuICAgICAgICAgICAgICBNb2RhbFR5cGVzLk1vZGFsRXJyb3JDb21wb25lbnQsXG4gICAgICAgICAgICAgIHsgY2VudGVyZWQ6IHRydWUsIGJhY2tkcm9wOiAnc3RhdGljJyB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yTXNnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5uZXh0KG51bGwpO1xuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldEVudmlyb25tZW50KCkge1xuICAgIC8vIHRoaXMuaXNTY2lvbkVudiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdzYWJzZW50ZXJwcmlzZScpO1xuICAgIC8vIHRoaXMuaXNMaWdodG5pbmdFbnYgPSAhdGhpcy5pc1NjaW9uRW52O1xuICAgIC8vIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnbG9jYWxob3N0JykpIHtcbiAgICAvLyAgIHRoaXMuaXNTY2lvbkVudiA9IHRoaXMuZW52aXJvbm1lbnQub2J0ID09PSAnc2Npb24nO1xuICAgIC8vICAgdGhpcy5pc0xpZ2h0bmluZ0VudiA9ICF0aGlzLmlzU2Npb25FbnY7XG4gICAgLy8gfVxuICB9XG59XG5cbiJdfQ==
457
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3Ivc2VydmljZXMvbG9nb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFrQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBZXpELE1BQU0sT0FBTyxnQkFBZ0I7SUFxQjNCLFlBQ1UsV0FBaUMsRUFDakMsWUFBb0MsRUFDcEMsSUFBNkIsRUFDN0IsTUFBYyxFQUNkLGVBQW9DLEVBQ3BDLGNBQWtDLEVBQ2xDLFdBQTRCLEVBQzVCLGFBQStDLEVBQy9DLGFBQStDLEVBQy9DLGlCQUFzRDtRQVR0RCxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQXlCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFDL0Msa0JBQWEsR0FBYixhQUFhLENBQWtDO1FBQy9DLHNCQUFpQixH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QUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDaEM7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQjtRQUNILENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtZQUNOLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztZQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsK0RBQStELFFBQVEsRUFBRSxDQUFDO1lBQy9GLElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDbEIsSUFBSSxRQUFRLEVBQUU7b0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3BCLFVBQVUsQ0FBQyxtQkFBbUIsRUFDOUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFDdEM7d0JBQ0UsS0FBSyxFQUFFLFFBQVE7cUJBQ2hCLENBQ0YsQ0FBQztpQkFDSDthQUNGO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQ0YsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjO1FBQ1oscUVBQXFFO1FBQ3JFLDBDQUEwQztRQUMxQyxvREFBb0Q7UUFDcEQsd0RBQXdEO1FBQ3hELDRDQUE0QztRQUM1QyxJQUFJO0lBQ04sQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVNFUl9TSUdORURPVVQgfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNlTW9kYWxPcGVuZXJTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1vcGVuZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBUcmF2ZWxsZXJTZWFyY2hUeXBlcyB9IGZyb20gJy4uL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgVVJMUyB9IGZyb20gJy4vdXJsLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckZhdm9ydXJpdGUgfSBmcm9tICcuLi9jbGFzc2VzL3VzZXItZmF2b3VyaXRlLmVudW0nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VFdmVudE1lc3NlbmFnZXIgfSBmcm9tICcuLi9jbGFzc2VzL2V2ZW50LW1lc3NlbmFnZXInO1xuaW1wb3J0IHsgQmFzZUVudmlyb25tZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9lbnZpcm9tZW50JztcbmltcG9ydCB7IE1vZGFsVHlwZXMgfSBmcm9tICcuLi9jbGFzc2VzL21vZGFsLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgVXNlckRhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3VzZXIuZGF0YSc7XG5pbXBvcnQgeyBBdXRoSW5mbywgTG9naW5SZXNwb25zZSwgUGFzc3dvcmRDaGFuZ2VSZXNwb25zZSB9IGZyb20gJy4uL21vZGVscy9sb2dpbi5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSXVzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEh0dHBDYWxsU2VydmljZSB9IGZyb20gJy4vaHR0cC1jYWxsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHsgRW50ZXJwcmlzZVNlYXJjaFNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lzZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBFbnRlcnByaXNlQmFza2V0U2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSWVudGVycHJpc2UtYmFza2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhdmVsbGVyIH0gZnJvbSAnLi4vbW9kZWxzL3RyYXZlbGxlci5vYmplY3QnO1xuXG5pbXBvcnQge1xuICBCYXNlR2V0TGF0ZXN0VmVyc2lvbnNGZXRjaGVyLFxuICBHZXRMYXRlc3RWZXJzaW9uc0ZldGNoZXJUeXBlXG59IGZyb20gJy4uL2ZldGNoZXJzL2dldC1sYXRlc3QtdmVyc2lvbnMuZmV0Y2hlcic7XG5cbmV4cG9ydCBjbGFzcyBCYXNlTG9nb25TZXJ2aWNlPEdMVl9GIGV4dGVuZHMgR2V0TGF0ZXN0VmVyc2lvbnNGZXRjaGVyVHlwZT4ge1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGlzTG9nZ2VkSW4gPSBmYWxzZTtcbiAgcmVkaXJlY3RVcmwgPSAnJztcbiAgYXV0aEluZm86IEF1dGhJbmZvO1xuICBsb2dpblJlc3BvbnNlOiBMb2dpblJlc3BvbnNlO1xuICB0aW1lb3V0U3Vic2NyaXB0aW9uOiBudW1iZXI7XG4gIHJlZnJlc2hQcm9taXNlOiBQcm9taXNlPGJvb2xlYW4+ID0gbnVsbDtcbiAgYmVjb21pbmdVc2VyOiBib29sZWFuID0gZmFsc2U7XG4gIHVuQmVjb21pbmdVc2VyOiBib29sZWFuID0gZmFsc2U7XG4gIGVycm9yX21lc3NhZ2U6IHN0cmluZztcbiAgaXNDaGVja2luZ1ZlcnNpb24gPSBmYWxzZTtcbiAgX3ZlcnNpb246IHN0cmluZyA9IG51bGw7XG4gIGlzU2Npb25FbnY6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNMaWdodG5pbmdFbnY6IGJvb2xlYW4gPSB0cnVlO1xuICBnZXQgb2J0VmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fdmVyc2lvbjtcbiAgfVxuICBzZXQgb2J0VmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLl92ZXJzaW9uID0gdmVyc2lvbjtcbiAgfVxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZUludGVyZmFjZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQmFzZU1vZGFsT3BlbmVyU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEFic3RyYWN0SHR0cENhbGxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBldmVudE1lc3NlbmFnZXI6IEJhc2VFdmVudE1lc3NlbmFnZXIsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogQmFzZVN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52aXJvbm1lbnQ6IEJhc2VFbnZpcm9ubWVudCxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IEVudGVycHJpc2VTZWFyY2hTZXJ2aWNlSW50ZXJmYWNlLFxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBnZXRMYXRlc3RWZXJzaW9uczogQmFzZUdldExhdGVzdFZlcnNpb25zRmV0Y2hlcjxHTFZfRj5cbiAgKSB7XG4gICAgdGhpcy5zZXRFbnZpcm9ubWVudCgpO1xuICB9XG5cbiAgY2hlY2tMb2dpbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgfVxuXG4gIHJlZnJlc2hUb2tlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLnJlZnJlc2hQcm9taXNlID1cbiAgICAgIHRoaXMucmVmcmVzaFByb21pc2UgfHxcbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQsIHJlamVjdDogKGVycm9yOiBhbnkpID0+IHZvaWQpID0+IHtcbiAgICAgICAgdGhpcy5jbGVhclJlZnJlc2goKTtcbiAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgLmZvcm1FbmNvZGVkUG9zdE5vRXJyb3JIYW5kbGluZyhVUkxTLlJlZnJlc2gsIHt9KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIG1hcChkYXRhID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlUmVzcG9uc2UoZGF0YSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgZGF0YSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9Mb2dvdXQocmVzb2x2ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1ZlcnNpb25VcGRhdGUoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVmcmVzaCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmF1dG9Mb2dvdXQocmVzb2x2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAgIC50aGVuKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFByb21pc2U7XG4gIH1cblxuICBwcml2YXRlIGF1dG9Mb2dvdXQocmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKSB7XG4gICAgaWYgKCF0aGlzLnVzZXJTZXJ2aWNlLmlzTG9nZ2VkSW4oKSkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnJvdXRlci51cmwgIT09ICcvJyAmJlxuICAgICAgICAhdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdsb2dvbicpICYmXG4gICAgICAgICF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ3Jlc2V0LXBhc3N3b3JkJykgJiYgXG4gICAgICAgICF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ3Nzby1sb2dvdXQnKSBcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucm91dGVyLnVybCAhPT0gJy8nICYmXG4gICAgICAhdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdsb2dvbicpICYmXG4gICAgICAhdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdyZXNldC1wYXNzd29yZCcpICYmIFxuICAgICAgIXRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnc3NvLWxvZ291dCcpXG4gICAgKSB7XG4gICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgaWYgKCF0aGlzLnVzZXJTZXJ2aWNlLnVzZXJJc1NTTygpKSB7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXG4gICAgICAgIC5vcGVuKE1vZGFsVHlwZXMuQXV0b0xvZ2dpbmdPdXRDb21wb25lbnQsIHsgY2VudGVyZWQ6IHRydWUsIGJhY2tkcm9wOiAnc3RhdGljJyB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyUmVmcmVzaCgpIHtcbiAgICBpZiAodGhpcy50aW1lb3V0U3Vic2NyaXB0aW9uKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0U3Vic2NyaXB0aW9uKTtcbiAgICAgIHRoaXMudGltZW91dFN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRSZWZyZXNoKCkge1xuICAgIHRoaXMudGltZW91dFN1YnNjcmlwdGlvbiA9IHdpbmRvdy5zZXRUaW1lb3V0KFxuICAgICAgdGhpcy5yZWZyZXNoVG9rZW4uYmluZCh0aGlzKSxcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQuYXV0aFJlZnJlc2hUaW1lb3V0ICogMTAwMFxuICAgICk7XG4gIH1cblxuICBiZWNvbWVVc2VyKHVzZXJuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLmJlY29taW5nVXNlciA9IHRydWU7XG4gICAgdGhpcy51c2VyU2VydmljZS5zZXRCb2JvKG51bGwpOyAvLyBpc24ndCBib2JvIE1yIEJ1cm5zJyB0ZWRkeSBiZWFyP1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkLCByZWplY3Q6IChlcnJvcjogYW55KSA9PiB2b2lkKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyUmVmcmVzaCgpO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclNlc3Npb25EYXRhKCk7XG5cbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAucG9zdChVUkxTLkJFQ09NRV9VU0VSLCB7IHVzZXJuYW1lIH0pXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJlY29taW5nVXNlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5iYXNrZXRTZXJ2aWNlLnJlc2V0QmFza2V0cygpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldFVzZXIoZGF0YS5qd3RPYmplY3QpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UucmVzZXRTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHRoaXMuYmFza2V0U2VydmljZS5yZXNldCgpO1xuXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ21haW4nXSk7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5iZWNvbWluZ1VzZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgZW5kQmVjb21lVXNlclNlc3Npb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhpcy51bkJlY29taW5nVXNlciA9IHRydWU7XG4gICAgdGhpcy51c2VyU2VydmljZS5zZXRCb2JvKG51bGwpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkLCByZWplY3Q6IChlcnJvcjogYW55KSA9PiB2b2lkKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyUmVmcmVzaCgpO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclNlc3Npb25EYXRhKCk7XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2UucmVzZXQoKTtcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZXNldFNlYXJjaFBhcmFtcygpO1xuICAgICAgdGhpcy5iYXNrZXRTZXJ2aWNlLnJlc2V0KCk7XG5cbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAucG9zdChVUkxTLkVORF9CRUNPTUVfVVNFUiwge30pXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJhc2tldFNlcnZpY2UucmVzZXRCYXNrZXRzKCk7XG4gICAgICAgICAgICB0aGlzLnVuQmVjb21pbmdVc2VyID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0VXNlcihkYXRhLmp3dE9iamVjdCk7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy51bkJlY29taW5nVXNlciA9IGZhbHNlO1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBhZ2Fpbj86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPFVzZXJEYXRhPiB7XG4gICAgdGhpcy51c2VyU2VydmljZS5lbXB0eVVzZXJEYXRhKCk7XG5cbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNsZWFyU2Vzc2lvbkRhdGEoKTtcbiAgICB0aGlzLmNsZWFyUmVmcmVzaCgpO1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZXNldFNlYXJjaFBhcmFtcygpO1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0Qm9ibyhudWxsKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZm9ybUVuY29kZWRQb3N0Tm9FcnJvckhhbmRsaW5nKFVSTFMuQWNjZXNzVG9rZW4sIHtcbiAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgIHBhc3N3b3JkXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcCgodmFsdWU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlc3BvbnNlKHZhbHVlKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKlxuICAgIEBkZXNjIC0gdGhpcyB3aWxsIGRldGVybWluZSBpZiB0aGVyZSBpcyBhIGxvZ2luIGVycm9yIGZvciB0aGUgcmVxdWVzdCBvciBub3QsIHNpbmNlIHRoaXMgaXMgYSBwb3RlbnRpYWwgZXJyb3IgZm9yIGV2ZXJ5IGNhbGxcbiAgKiovXG4gIGhhbmRsZVJlc3BvbnNlKGRhdGE6IGFueSk6IGFueSB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiBkYXRhLmp3dCkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5zZXRVc2VyKGRhdGEuand0T2JqZWN0KTtcbiAgICAgIHRoaXMuaXNMb2dnZWRJbiA9IHRydWU7XG4gICAgICBkZWxldGUgZGF0YS5qd3Q7XG4gICAgICBkZWxldGUgZGF0YS5qd3RPYmplY3Q7XG4gICAgICAvLyBoZXJlIHdlIGNhbiBkbyB0aGUgYm9ibyBsb2dpY1xuICAgICAgY29uc3QgYm9ibzpzdHJpbmcgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25JdGVtKCdib2JvJyk7XG4gICAgICBpZiAoIXRoaXMudXNlclNlcnZpY2UuYm9ibyAmJiBib2JvKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hUcmF2ZWxsZXJzKGJvYm8sIFRyYXZlbGxlclNlYXJjaFR5cGVzLmVtYWlsKS5zdWJzY3JpYmUoKGRhdGE6VHJhdmVsbGVyW10pPT57XG4gICAgICAgICAgY29uc3QgbWF0Y2hlZFVzZXIgPSBkYXRhLmZpbmQodXNlcj0+dXNlci5lbWFpbCA9PT0gYm9ibylcbiAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldEJvYm8obWF0Y2hlZFVzZXIpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGxvZ291dCgpIHtcblxuICAgIGNvbnN0IHNzb1VzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJJc1NTTygpO1xuXG4gICAgY29uc29sZS5sb2coYCsrKyBVc2VyIGlzIFNTTyBvbmx5OiAke3Nzb1VzZXJ9ICsrK2ApO1xuXG4gICAgaWYgKHRoaXMuaXNMb2dnZWRJbikge1xuICAgICAgdGhpcy5jbGVhclJlZnJlc2goKTtcbiAgICAgIHRoaXMuaXNMb2dnZWRJbiA9IGZhbHNlO1xuICAgICAgdGhpcy51c2VyU2VydmljZS5zZXRCb2JvKG51bGwsICF0aGlzLmlzTG9nZ2VkSW4pO1xuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnJlbW92ZUFsbFRyYXZlbGxlcnMoKTtcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZXNldFNlYXJjaFBhcmFtcygpO1xuICAgICAgdGhpcy51c2VyU2VydmljZS5lbXB0eVVzZXJEYXRhKCk7XG5cbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXJTZXNzaW9uRGF0YSgpO1xuICAgICAgdGhpcy5odHRwLnBvc3QoVVJMUy5MT0dPVVRfVVJMKS5zdWJzY3JpYmUoXG4gICAgICAgIGRhdGEgPT4ge1xuICAgICAgICAgIGlmICghZGF0YS5Mb2dvdXRTdWNjZXNzKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHF1b3RlbWFya1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiWW91J3JlIG5vdCBsb2dnZWQgaW4sIGNhbm5vdCBsb2cgb3V0LlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmV2ZW50TWVzc2VuYWdlci5lbWl0KFVTRVJfU0lHTkVET1VULCB7fSk7XG5cbiAgICAgICAgICBpZiAodGhpcy51c2VyU2VydmljZS5pc1VzZXJGYXZvcml0ZVNldChVc2VyRmF2b3J1cml0ZS5TU09fbm9fcGFzc3dvcmQpKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2xvZ091dERpZ2l0c1VzZXInXSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzc29Vc2VyKSB7XG4gICAgICAgICAgICAvLyBBcHAgZG9lc250IGhhdmUgc3NvLWxvZ291dCByb3V0ZVxuICAgICAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydzc28tbG9nb3V0J10pO1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsb2dvbiddKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsb2dvbiddKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzc29Vc2VyKSB7XG4gICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3Nzby1sb2dvdXQnXSk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2xvZ29uJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2xvZ29uJ10pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyTG9naW5EYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJSZWZyZXNoKCk7XG4gICAgdGhpcy5pc0xvZ2dlZEluID0gZmFsc2U7XG4gICAgdGhpcy51c2VyU2VydmljZS5zZXRCb2JvKG51bGwsICF0aGlzLmlzTG9nZ2VkSW4pO1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5yZW1vdmVBbGxUcmF2ZWxsZXJzKCk7XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnJlc2V0U2VhcmNoUGFyYW1zKCk7XG4gICAgdGhpcy51c2VyU2VydmljZS5lbXB0eVVzZXJEYXRhKCk7XG5cbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNsZWFyU2Vzc2lvbkRhdGEoKTtcbiAgfVxuXG4gIHJlc2V0UGFzc3dvcmQoXG4gICAgcGFzc3dvcmRSZXNldFRva2VuOiBzdHJpbmcsXG4gICAgbmV3UGFzc3dvcmQ6IHN0cmluZyxcbiAgICBzb3VyY2U6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFBhc3N3b3JkQ2hhbmdlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmZvcm1FbmNvZGVkUG9zdChVUkxTLlJFU0VUX1BBU1NXT1JELCB7XG4gICAgICBwYXNzd29yZFJlc2V0VG9rZW4sXG4gICAgICBuZXdQYXNzd29yZCxcbiAgICAgIHNvdXJjZVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVzZXRQYXNzd29yZE5vVG9rZW4obmV3UGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmZvcm1FbmNvZGVkUG9zdChVUkxTLlJFU0VUX1BBU1NXT1JEX05PX1RPS0VOLCB7XG4gICAgICAgIHBhc3N3b3JkOiBuZXdQYXNzd29yZFxuICAgICAgfSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGNoYW5nZVBhc3N3b3JkKG5ld1Bhc3M6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVzZXRQYXNzd29yZE5vVG9rZW4obmV3UGFzcylcbiAgICAgIC50aGVuKG5ld0pXVCA9PiB7XG4gICAgICAgIHRoaXMuc2V0UmVmcmVzaCgpO1xuICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKG5ld0pXVCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBlcnJvcjogbnVsbFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgZXJyb3JcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLypcbiAgICBAZGVzYyAtIGFjdGF1YWxseSBjYWxsIHRoZSBiYWNrZW5kIHBlcmwgZm9yIHJlY292ZXIgcGFzc1xuICAqKi9cbiAgcmVjb3ZlclBhc3N3b3JkKHVzZXJuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZm9ybUVuY29kZWRQb3N0KFxuICAgICAgVVJMUy5SRUNPVkVSX1BBU1NXT1JEX1VSTCxcbiAgICAgIHtcbiAgICAgICAgdXNlcm5hbWU6IGAke3VzZXJuYW1lfWBcbiAgICAgIH0sXG4gICAgICAndGV4dCdcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICpcdEBkZXNjIC0gZXJyb3IgaGFuZGxpbmcsIG9wZW5zIGEgbW9kYWwgd2l0aCB0aGUgcGFzc2VkIGluIGVycm9yIG1lc3NhZ2VcbiAgICoqL1xuICBoYW5kbGVFcnJvcihlcnJvcjogc3RyaW5nKSB7XG4gICAgLy8gdGhpcy51c2VyU2VydmljZS5iZWNvbWluZ1VzZXIgPSBmYWxzZTtcbiAgICBjb25zdCBtb2RhbFZhbHVlcyA9IHtcbiAgICAgIGVycm9yXG4gICAgfTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE1vZGFsVHlwZXMuTW9kYWxFcnJvckNvbXBvbmVudCwgeyBiYWNrZHJvcDogJ3N0YXRpYycgfSwgbW9kYWxWYWx1ZXMpO1xuICB9XG5cbiAgaXNPblN0YWdpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNPbkRldigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGVja1ZlcnNpb25VcGRhdGUoKTogdm9pZCB7XG4gICAgLy8gY29uc3QgaXNQcm9kID0gIXRoaXMuaXNPbkRldigpICYmICF0aGlzLmlzT25TdGFnaW5nKCk7XG4gICAgLy8gaWYgKCF0aGlzLmlzQ2hlY2tpbmdWZXJzaW9uKSB7XG4gICAgLy8gICB0aGlzLmlzQ2hlY2tpbmdWZXJzaW9uID0gdHJ1ZTtcbiAgICAvLyAgIGNvbnN0IG9sZFZlcnNpb246IHN0cmluZyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvbkl0ZW0oJ3ZlcnNpb24nKTtcbiAgICAvLyAgIGlmICghb2xkVmVyc2lvbikge1xuICAgIC8vICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFNlc3Npb25JdGVtKCd2ZXJzaW9uJywgdGhpcy5vYnRWZXJzaW9uKTtcbiAgICAvLyAgICAgdGhpcy5pc0NoZWNraW5nVmVyc2lvbiA9IGZhbHNlO1xuICAgIC8vICAgfSBlbHNlIGlmIChpc1Byb2QpIHtcbiAgICAvLyAgICAgLy8gISBjb21tZW50IG91dCBzbyBkZXYgdmVyc2lvbiBkb2Vzbid0IGJyZWFrIC0gd2UgbmVlZCB0aGlzIHdvcmtpbmcgYmVmb3JlIG5leHQgcHJvcGVyIHJlbGVhc2VcbiAgICAvLyAgICAgdGhpcy5nZXRMYXRlc3RWZXJzaW9ucy5mZXRjaExpc3QoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgLy8gICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgLy8gICAgICAgLy8gdGhpcyBpcyB3aGF0IHdlIGNhcmUgYWJvdXRcbiAgICAvLyAgICAgICBjb25zdCBuZXdWZXJzaW9uID0gZGF0YS5maW5kKHZlcnNpb24gPT4gdmVyc2lvbi5vYnROYW1lID09PSB0aGlzLmVudmlyb25tZW50Lm9idCk/LnZlcnNpb247XG4gICAgLy8gICAgICAgLy8gaWYgLnNwbGl0KCcuJykgZ2l2ZXMgdXMgbW9yZSB0aGVuIGxlbmd0aCA9PT0gMSB0aGVuIGp1c3QgcmVmcmVzaCBhbmQgdGhlIG9idCBzZXQgXG4gICAgLy8gICAgICAgY29uc3Qgc3BsaXROZXdWZXJzaW9uID0gbmV3VmVyc2lvbi5zcGxpdCgnLicpO1xuICAgIC8vICAgICAgIGNvbnN0IHNwbGl0T2xkVmVyc2lvbiA9IG9sZFZlcnNpb24uc3BsaXQoJy4nKTtcbiAgICAvLyAgICAgICBpZiAoc3BsaXROZXdWZXJzaW9uLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vICAgICAgICAgLy8gd2UgYXNzdW1lIHdlIG9ubHkgaGF2ZSB0aGUgaGFzaFxuICAgIC8vICAgICAgICAgY29uc3QgY3VycmVudEhhc2ggPSB0aGlzLmVudmlyb25tZW50Lm9idCA9PT0gJ2xpZ2h0bmluZycgPyBzcGxpdE9sZFZlcnNpb25bM10gOiBzcGxpdE9sZFZlcnNpb25bMl07XG4gICAgLy8gICAgICAgICBpZiAoY3VycmVudEhhc2ggIT09IG5ld1ZlcnNpb24pIHtcbiAgICAvLyAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihNb2RhbFR5cGVzLk5ld1ZlcnNpb24sIHtiYWNrZHJvcDogJ3N0YXRpYyd9KS50aGVuKCgpID0+IHtcbiAgICAvLyAgICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFNlc3Npb25JdGVtKCd2ZXJzaW9uJywgdGhpcy5vYnRWZXJzaW9uKTtcbiAgICAvLyAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAvLyAgICAgICAgICAgfSk7XG4gICAgLy8gICAgICAgICAgIHRoaXMuaXNDaGVja2luZ1ZlcnNpb24gPSBmYWxzZTtcbiAgICAvLyAgICAgICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICAgIHRoaXMuaXNDaGVja2luZ1ZlcnNpb24gPSBmYWxzZTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgY29uc3QgY3VycmVudFJlbGVhc2VOdW1iZXIgPSB0aGlzLmVudmlyb25tZW50Lm9idCA9PT0gJ2xpZ2h0bmluZycgPyArc3BsaXRPbGRWZXJzaW9uWzFdIDogK3NwbGl0T2xkVmVyc2lvblswXTtcbiAgICAvLyAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVyYXRpb24gPSB0aGlzLmVudmlyb25tZW50Lm9idCA9PT0gJ2xpZ2h0bmluZycgPyArc3BsaXRPbGRWZXJzaW9uWzJdIDogK3NwbGl0T2xkVmVyc2lvblsxXTtcbiAgICAvLyAgICAgICAgIGNvbnN0IG5ld1JlbGVhc2VOdW1iZXIgPSB0aGlzLmVudmlyb25tZW50Lm9idCA9PT0gJ2xpZ2h0bmluZycgPyArc3BsaXROZXdWZXJzaW9uWzFdIDogK3NwbGl0TmV3VmVyc2lvblswXTtcbiAgICAvLyAgICAgICAgIGNvbnN0IG5ld0l0ZXJhdGlvbiA9IHRoaXMuZW52aXJvbm1lbnQub2J0ID09PSAnbGlnaHRuaW5nJyA/ICtzcGxpdE5ld1ZlcnNpb25bMl0gOiArc3BsaXROZXdWZXJzaW9uWzFdO1xuICAgIC8vICAgICAgICAgLy8gb2J2aW91c2x5IGlmIHRoZXkgYXJlIHRoZSBzYW1lLi4uLmRvIG5vdGhpbmdcbiAgICAvLyAgICAgICAgIGlmIChuZXdWZXJzaW9uICYmIG9sZFZlcnNpb24gJiYgKG9sZFZlcnNpb24gPT09ICdkZXZlbG9wbWVudCcgfHwgbmV3VmVyc2lvbiA9PT0gb2xkVmVyc2lvbikpIHtcbiAgICAvLyAgICAgICAgICAgLy9kbyBub3RoaW5nIHRoaXMgaXMgbG9jYWwgb3IgdmVyc2lvbnMgbWF0Y2hcbiAgICAvLyAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uSXRlbSgndmVyc2lvbicsIHRoaXMub2J0VmVyc2lvbik7XG4gICAgLy8gICAgICAgICAgIHRoaXMuaXNDaGVja2luZ1ZlcnNpb24gPSBmYWxzZTtcbiAgICAvLyAgICAgICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICAgIGlmIChuZXdWZXJzaW9uICYmIG9sZFZlcnNpb24gJiYgKGN1cnJlbnRSZWxlYXNlTnVtYmVyIDwgbmV3UmVsZWFzZU51bWJlciB8fCBjdXJyZW50SXRlcmF0aW9uIDwgbmV3SXRlcmF0aW9uIHx8IChvbGRWZXJzaW9uICE9PSBuZXdWZXJzaW9uICYmIGN1cnJlbnRSZWxlYXNlTnVtYmVyID09PSBuZXdSZWxlYXNlTnVtYmVyICYmIGN1cnJlbnRJdGVyYXRpb24gPT09IG5ld0l0ZXJhdGlvbikpKSB7XG4gICAgLy8gICAgICAgICAgICAgdGhpcy5vYnRWZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICAvLyAgICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE1vZGFsVHlwZXMuTmV3VmVyc2lvbiwge2JhY2tkcm9wOiAnc3RhdGljJ30pLnRoZW4oKCkgPT4ge1xuICAgIC8vICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uSXRlbSgndmVyc2lvbicsIHRoaXMub2J0VmVyc2lvbik7XG4gICAgLy8gICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAvLyAgICAgICAgICAgICB9KTtcbiAgICAvLyAgICAgICAgICAgICB0aGlzLmlzQ2hlY2tpbmdWZXJzaW9uID0gZmFsc2U7XG4gICAgLy8gICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgdGhpcy5pc0NoZWNraW5nVmVyc2lvbiA9IGZhbHNlO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICB9O1xuXG5cbiAgLy8gb3BlblJlc2V0UGFzc3dvcmREaWFsb2codG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAvLyAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oTW9kYWxUeXBlcy5Nb2RhbFBhc3N3b3JkUmVzZXRDb21wb25lbnQsIHtcbiAgLy8gICAgIHdpZHRoOiAnNjAwcHgnLFxuICAvLyAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAvLyAgICAgcGFuZWxDbGFzczogJ3Jlc2V0LXBhc3N3b3JkLWRpYWxvZy1jb250YWluZXInLFxuICAvLyAgICAgcG9zaXRpb246IHtcbiAgLy8gICAgICAgdG9wOiAnNTB2aCcsXG4gIC8vICAgICAgIGxlZnQ6ICc1MHZ3J1xuICAvLyAgICAgfVxuICAvLyAgIH0sXG4gIC8vICAgICB7XG4gIC8vICAgICAgIHRva2VuOiB0b2tlblxuICAvLyAgICAgfVxuICAvLyAgICkudGhlbigocmVzdWx0OiBib29sZWFuKSA9PiB7XG4gIC8vICAgICBpZiAocmVzdWx0KSB7XG4gIC8vICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXG4gIC8vICAgICAgICAgTW9kYWxUeXBlcy5JbmZvTW9kYWxDb21wb25lbnQsXG4gIC8vICAgICAgICAgeyBjZW50ZXJlZDogdHJ1ZSwgYmFja2Ryb3A6ICdzdGF0aWMnIH0sXG4gIC8vICAgICAgICAge1xuICAvLyAgICAgICAgICAgaW5mbzogJ1Bhc3N3b3JkIGNoYW5nZWQgc3VjY2Vzc2Z1bGx5LicsXG4gIC8vICAgICAgICAgICB0aXRsZTogJ1Bhc3N3b3JkIFJlc2V0JyxcbiAgLy8gICAgICAgICAgIHNob3dJY29uOiBmYWxzZSxcbiAgLy8gICAgICAgICAgIGJ1dHRvblRleHQ6ICdPaydcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuICBvcGVuUmVzZXRQYXNzd29yZERpYWxvZyh0b2tlbjogc3RyaW5nLCBzb3VyY2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlXG4gICAgICAub3BlbihcbiAgICAgICAgTW9kYWxUeXBlcy5Nb2RhbFBhc3N3b3JkUmVzZXRDb21wb25lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICB3aWR0aDogJzYwMHB4JyxcbiAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICAgICAgcGFuZWxDbGFzczogJ3Jlc2V0LXBhc3N3b3JkLWRpYWxvZy1jb250YWluZXInLFxuICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICB0b3A6ICc1MHZoJyxcbiAgICAgICAgICAgIGxlZnQ6ICc1MHZ3J1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgICAgICBzb3VyY2VcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnRoZW4oKHJlc3VsdDogeyBqd3Q6IHN0cmluZzsgc291cmNlOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5zb3VyY2UgPT09ICdBUFAnKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFxuICAgICAgICAgICAgICBNb2RhbFR5cGVzLkluZm9Nb2RhbENvbXBvbmVudCxcbiAgICAgICAgICAgICAgeyBjZW50ZXJlZDogdHJ1ZSwgYmFja2Ryb3A6ICdzdGF0aWMnIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbmZvOiAnWW91ciBwYXNzd29yZCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcmVzZXQuIFBsZWFzZSByZXR1cm4gdG8gTGlnaHRuaW5nIEVNRUEgYXBwIHRvIHNpZ24gaW4gdG8geW91ciBhY2NvdW50LicsXG4gICAgICAgICAgICAgICAgdGl0bGU6ICdQYXNzd29yZCBSZXNldCcsXG4gICAgICAgICAgICAgICAgc2hvd0ljb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRleHQ6ICdPaydcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihcbiAgICAgICAgICAgICAgTW9kYWxUeXBlcy5JbmZvTW9kYWxDb21wb25lbnQsXG4gICAgICAgICAgICAgIHsgY2VudGVyZWQ6IHRydWUsIGJhY2tkcm9wOiAnc3RhdGljJyB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5mbzogJ1Bhc3N3b3JkIGNoYW5nZWQgc3VjY2Vzc2Z1bGx5LicsXG4gICAgICAgICAgICAgICAgdGl0bGU6ICdQYXNzd29yZCBSZXNldCcsXG4gICAgICAgICAgICAgICAgc2hvd0ljb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRleHQ6ICdPaydcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcmVzZXRQYXNzd29yZERpYWxvZyhcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG5ld1Bhc3N3b3JkOiBzdHJpbmcsXG4gICAgc291cmNlOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTx7IGp3dDogc3RyaW5nOyBzb3VyY2U6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFN1YmplY3Q8eyBqd3Q6IHN0cmluZzsgc291cmNlOiBzdHJpbmcgfT4oKTtcbiAgICB0aGlzLnJlc2V0UGFzc3dvcmQodG9rZW4sIG5ld1Bhc3N3b3JkLCBzb3VyY2UpLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uSXRlbSgncmVmcmVzaFRva2VuJywgZGF0YVsnand0J10pO1xuICAgICAgICAgIGlmIChkYXRhPy5zb3VyY2UgPT09ICdXRUInKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ21haW4nXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5uZXh0KGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBjb25zdCB7IGVycm9yOiBlcnJvck1zZywgc3RhdHVzIH0gPSBlcnJvcjtcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB0aGlzLmVycm9yX21lc3NhZ2UgPSBgUGFzc3dvcmQgcmVzZXQgdW5zdWNjZXNzZnVsIGR1ZSB0byBmYWlsaW5nIHBhc3N3b3JkIHBvbGljeTogJHtlcnJvck1zZ31gO1xuICAgICAgICBpZiAoc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICBpZiAoZXJyb3JNc2cpIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXG4gICAgICAgICAgICAgIE1vZGFsVHlwZXMuTW9kYWxFcnJvckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgeyBjZW50ZXJlZDogdHJ1ZSwgYmFja2Ryb3A6ICdzdGF0aWMnIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JNc2dcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0Lm5leHQobnVsbCk7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0RW52aXJvbm1lbnQoKSB7XG4gICAgLy8gdGhpcy5pc1NjaW9uRW52ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ3NhYnNlbnRlcnByaXNlJyk7XG4gICAgLy8gdGhpcy5pc0xpZ2h0bmluZ0VudiA9ICF0aGlzLmlzU2Npb25FbnY7XG4gICAgLy8gaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdsb2NhbGhvc3QnKSkge1xuICAgIC8vICAgdGhpcy5pc1NjaW9uRW52ID0gdGhpcy5lbnZpcm9ubWVudC5vYnQgPT09ICdzY2lvbic7XG4gICAgLy8gICB0aGlzLmlzTGlnaHRuaW5nRW52ID0gIXRoaXMuaXNTY2lvbkVudjtcbiAgICAvLyB9XG4gIH1cbn1cblxuIl19