@sabstravtech/obtservices 0.0.22042501 → 0.0.22051001

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 (165) hide show
  1. package/angular/fetchers.d.ts +8 -0
  2. package/angular/lib/vendor/fetchers/fast-track-quote.fetcher.d.ts +7 -0
  3. package/angular/lib/vendor/fetchers/get-all-airlines.fetcher.d.ts +7 -0
  4. package/angular/lib/vendor/fetchers/get-cancellation-info.fetcher.d.ts +7 -0
  5. package/angular/lib/vendor/fetchers/get-car-hire-providers.fetcher.d.ts +7 -0
  6. package/angular/lib/vendor/fetchers/get-hotel-chains.fetcher.d.ts +7 -0
  7. package/angular/lib/vendor/fetchers/get-irl-supplier-station.fetcher.d.ts +7 -0
  8. package/angular/lib/vendor/fetchers/get-rail-providers.fetcher.d.ts +7 -0
  9. package/angular/lib/vendor/fetchers/send-offline-notification.fetcher.d.ts +7 -0
  10. package/angular/lib/vendor/services/enterprise-basket.service.d.ts +4 -3
  11. package/angular/lib/vendor/services/search.service.d.ts +10 -3
  12. package/angular/lib/vendor/services/ticket-queue.service.d.ts +6 -0
  13. package/angular/lib/vendor/services/user.service.d.ts +5 -3
  14. package/angular/lib/vendor/types/graphql.angular.types.d.ts +438 -16
  15. package/angular/lib/vendor/updaters/edit-user.updater.d.ts +6 -0
  16. package/angular/lib/vendor/updaters/set-user-language-updater.d.ts +6 -0
  17. package/angular/sabstravtech-obtservices-angular.d.ts +16 -13
  18. package/angular/sabstravtech-obtservices-angular.metadata.json +1 -1
  19. package/angular/services.d.ts +1 -0
  20. package/base/fetchers.d.ts +10 -0
  21. package/base/interfaces.d.ts +2 -0
  22. package/base/lib/vendor/classes/cabhire-enterprise-search.d.ts +2 -1
  23. package/base/lib/vendor/classes/carhire-enterprise-search.d.ts +1 -0
  24. package/base/lib/vendor/classes/eurostar-enterprise-search.d.ts +8 -2
  25. package/base/lib/vendor/classes/fast-track-enterprise-search.d.ts +57 -0
  26. package/base/lib/vendor/classes/flight-enterprise-search.d.ts +2 -1
  27. package/base/lib/vendor/classes/hotel-enterprise-search.d.ts +3 -1
  28. package/base/lib/vendor/classes/irl-enterprise-search.d.ts +27 -7
  29. package/base/lib/vendor/classes/lounges-enterprise-search.d.ts +1 -0
  30. package/base/lib/vendor/classes/management-info-and-valid.d.ts +6 -1
  31. package/base/lib/vendor/classes/modal-types.enum.d.ts +2 -0
  32. package/base/lib/vendor/classes/parking-enterprise-search.d.ts +1 -0
  33. package/base/lib/vendor/classes/rail-enterprise-search.d.ts +3 -2
  34. package/base/lib/vendor/fetchers/fast-track-quote.fetcher.d.ts +23 -0
  35. package/base/lib/vendor/fetchers/get-all-airlines.fetcher.d.ts +20 -0
  36. package/base/lib/vendor/fetchers/get-cancellation-info.fetcher.d.ts +20 -0
  37. package/base/lib/vendor/fetchers/get-car-hire-providers.fetcher.d.ts +20 -0
  38. package/base/lib/vendor/fetchers/get-hotel-chains.fetcher.d.ts +20 -0
  39. package/base/lib/vendor/fetchers/get-irl-supplier-station.fetcher.d.ts +21 -0
  40. package/base/lib/vendor/fetchers/get-rail-providers.fetcher.d.ts +20 -0
  41. package/base/lib/vendor/fetchers/send-offline-notification.fetcher.d.ts +21 -0
  42. package/base/lib/vendor/fetchers/user-fetcher.d.ts +2 -3
  43. package/base/lib/vendor/interfaces/Icabhire-enterprise-search.d.ts +1 -0
  44. package/base/lib/vendor/interfaces/Icarhire-enterprise-search.d.ts +1 -0
  45. package/base/lib/vendor/interfaces/Ienterprise-basket.service.d.ts +6 -3
  46. package/base/lib/vendor/interfaces/Ieurostar-enterprise-search.d.ts +2 -0
  47. package/base/lib/vendor/interfaces/Ifast-track-enterprise-search.d.ts +26 -0
  48. package/base/lib/vendor/interfaces/Iflight-enterprise-search.d.ts +1 -0
  49. package/base/lib/vendor/interfaces/Ihotel-enterprise-search.d.ts +2 -0
  50. package/base/lib/vendor/interfaces/Iirl-enterprise-search.d.ts +11 -3
  51. package/base/lib/vendor/interfaces/Ilounges-enterprise-search.d.ts +1 -0
  52. package/base/lib/vendor/interfaces/Iparking-enterprise-search.d.ts +1 -0
  53. package/base/lib/vendor/interfaces/Irail-enterprise-search.d.ts +1 -0
  54. package/base/lib/vendor/interfaces/Isearch.service.d.ts +7 -1
  55. package/base/lib/vendor/interfaces/Iuser.service.d.ts +2 -1
  56. package/base/lib/vendor/interfaces/eurostar-search-arg.interface.d.ts +2 -0
  57. package/base/lib/vendor/interfaces/fast-track-filters.interface.d.ts +4 -0
  58. package/base/lib/vendor/interfaces/rail-basket-item.interface.d.ts +2 -0
  59. package/base/lib/vendor/interfaces/summary-interface.d.ts +2 -0
  60. package/base/lib/vendor/interfaces/user.data.d.ts +1 -0
  61. package/base/lib/vendor/models/traveller.object.d.ts +1 -0
  62. package/base/lib/vendor/services/enterprise-basket.service.d.ts +13 -6
  63. package/base/lib/vendor/services/requires-reason.service.d.ts +20 -0
  64. package/base/lib/vendor/services/search.service.d.ts +30 -5
  65. package/base/lib/vendor/services/user.service.d.ts +12 -5
  66. package/base/lib/vendor/services/webtoken.service.d.ts +1 -0
  67. package/base/lib/vendor/types/graphql.types.d.ts +398 -16
  68. package/base/lib/vendor/types/types.d.ts +53 -16
  69. package/base/lib/vendor/updaters/edit-user-updater.d.ts +19 -0
  70. package/base/lib/vendor/updaters/set-user-language-updater.d.ts +19 -0
  71. package/base/sabstravtech-obtservices-base.d.ts +5 -5
  72. package/base/sabstravtech-obtservices-base.metadata.json +1 -1
  73. package/base/services.d.ts +1 -0
  74. package/base/updaters.d.ts +2 -0
  75. package/bundles/sabstravtech-obtservices-angular.umd.js +499 -91
  76. package/bundles/sabstravtech-obtservices-angular.umd.js.map +1 -1
  77. package/bundles/sabstravtech-obtservices-angular.umd.min.js +1 -1
  78. package/bundles/sabstravtech-obtservices-angular.umd.min.js.map +1 -1
  79. package/bundles/sabstravtech-obtservices-base.umd.js +3204 -176
  80. package/bundles/sabstravtech-obtservices-base.umd.js.map +1 -1
  81. package/bundles/sabstravtech-obtservices-base.umd.min.js +2 -2
  82. package/bundles/sabstravtech-obtservices-base.umd.min.js.map +1 -1
  83. package/esm2015/angular/fetchers.js +9 -1
  84. package/esm2015/angular/lib/vendor/fetchers/fast-track-quote.fetcher.js +25 -0
  85. package/esm2015/angular/lib/vendor/fetchers/get-all-airlines.fetcher.js +25 -0
  86. package/esm2015/angular/lib/vendor/fetchers/get-cancellation-info.fetcher.js +25 -0
  87. package/esm2015/angular/lib/vendor/fetchers/get-car-hire-providers.fetcher.js +25 -0
  88. package/esm2015/angular/lib/vendor/fetchers/get-hotel-chains.fetcher.js +25 -0
  89. package/esm2015/angular/lib/vendor/fetchers/get-irl-supplier-station.fetcher.js +25 -0
  90. package/esm2015/angular/lib/vendor/fetchers/get-rail-providers.fetcher.js +25 -0
  91. package/esm2015/angular/lib/vendor/fetchers/send-offline-notification.fetcher.js +25 -0
  92. package/esm2015/angular/lib/vendor/services/enterprise-basket.service.js +8 -5
  93. package/esm2015/angular/lib/vendor/services/http-call.service.js +6 -2
  94. package/esm2015/angular/lib/vendor/services/search.service.js +58 -37
  95. package/esm2015/angular/lib/vendor/services/ticket-queue.service.js +23 -0
  96. package/esm2015/angular/lib/vendor/services/user.service.js +12 -6
  97. package/esm2015/angular/lib/vendor/types/graphql.angular.types.js +583 -5
  98. package/esm2015/angular/lib/vendor/updaters/edit-user.updater.js +22 -0
  99. package/esm2015/angular/lib/vendor/updaters/set-user-language-updater.js +22 -0
  100. package/esm2015/angular/obtservices.module.js +3 -1
  101. package/esm2015/angular/sabstravtech-obtservices-angular.js +17 -14
  102. package/esm2015/angular/services.js +2 -1
  103. package/esm2015/base/fetchers.js +11 -1
  104. package/esm2015/base/interfaces.js +3 -1
  105. package/esm2015/base/lib/vendor/classes/basket-info-mi-details.impl.js +4 -1
  106. package/esm2015/base/lib/vendor/classes/cabhire-enterprise-search.js +37 -5
  107. package/esm2015/base/lib/vendor/classes/carhire-enterprise-search.js +46 -16
  108. package/esm2015/base/lib/vendor/classes/eurostar-enterprise-search.js +77 -10
  109. package/esm2015/base/lib/vendor/classes/fast-track-enterprise-search.js +296 -0
  110. package/esm2015/base/lib/vendor/classes/flight-enterprise-search.js +44 -5
  111. package/esm2015/base/lib/vendor/classes/helpers.js +6 -2
  112. package/esm2015/base/lib/vendor/classes/hotel-enterprise-search.js +58 -19
  113. package/esm2015/base/lib/vendor/classes/irl-enterprise-search.js +214 -25
  114. package/esm2015/base/lib/vendor/classes/lounges-enterprise-search.js +22 -6
  115. package/esm2015/base/lib/vendor/classes/management-info-and-valid.js +1 -1
  116. package/esm2015/base/lib/vendor/classes/modal-types.enum.js +3 -1
  117. package/esm2015/base/lib/vendor/classes/parking-enterprise-search.js +27 -7
  118. package/esm2015/base/lib/vendor/classes/rail-enterprise-search.js +62 -13
  119. package/esm2015/base/lib/vendor/classes/supplementary-booking-info-impl.js +2 -2
  120. package/esm2015/base/lib/vendor/fetchers/fast-track-quote.fetcher.js +11 -0
  121. package/esm2015/base/lib/vendor/fetchers/get-all-airlines.fetcher.js +11 -0
  122. package/esm2015/base/lib/vendor/fetchers/get-cancellation-info.fetcher.js +10 -0
  123. package/esm2015/base/lib/vendor/fetchers/get-car-hire-providers.fetcher.js +11 -0
  124. package/esm2015/base/lib/vendor/fetchers/get-hotel-chains.fetcher.js +11 -0
  125. package/esm2015/base/lib/vendor/fetchers/get-irl-supplier-station.fetcher.js +11 -0
  126. package/esm2015/base/lib/vendor/fetchers/get-rail-providers.fetcher.js +11 -0
  127. package/esm2015/base/lib/vendor/fetchers/send-offline-notification.fetcher.js +11 -0
  128. package/esm2015/base/lib/vendor/fetchers/user-fetcher.js +1 -1
  129. package/esm2015/base/lib/vendor/interfaces/Icabhire-enterprise-search.js +1 -1
  130. package/esm2015/base/lib/vendor/interfaces/Icarhire-enterprise-search.js +1 -1
  131. package/esm2015/base/lib/vendor/interfaces/Ienterprise-basket.service.js +1 -1
  132. package/esm2015/base/lib/vendor/interfaces/Ieurostar-enterprise-search.js +1 -1
  133. package/esm2015/base/lib/vendor/interfaces/Ifast-track-enterprise-search.js +2 -0
  134. package/esm2015/base/lib/vendor/interfaces/Iflight-enterprise-search.js +1 -1
  135. package/esm2015/base/lib/vendor/interfaces/Ihotel-enterprise-search.js +1 -1
  136. package/esm2015/base/lib/vendor/interfaces/Iirl-enterprise-search.js +1 -1
  137. package/esm2015/base/lib/vendor/interfaces/Ilounges-enterprise-search.js +1 -1
  138. package/esm2015/base/lib/vendor/interfaces/Iparking-enterprise-search.js +1 -1
  139. package/esm2015/base/lib/vendor/interfaces/Irail-enterprise-search.js +1 -1
  140. package/esm2015/base/lib/vendor/interfaces/Isearch.service.js +1 -1
  141. package/esm2015/base/lib/vendor/interfaces/Iuser.service.js +1 -1
  142. package/esm2015/base/lib/vendor/interfaces/eurostar-search-arg.interface.js +1 -1
  143. package/esm2015/base/lib/vendor/interfaces/fast-track-filters.interface.js +2 -0
  144. package/esm2015/base/lib/vendor/interfaces/rail-basket-item.interface.js +1 -1
  145. package/esm2015/base/lib/vendor/interfaces/summary-interface.js +1 -1
  146. package/esm2015/base/lib/vendor/interfaces/user.data.js +1 -1
  147. package/esm2015/base/lib/vendor/models/traveller.object.js +3 -2
  148. package/esm2015/base/lib/vendor/services/enterprise-basket.service.js +63 -17
  149. package/esm2015/base/lib/vendor/services/hotel-avallibility.service.js +16 -12
  150. package/esm2015/base/lib/vendor/services/requires-reason.service.js +49 -0
  151. package/esm2015/base/lib/vendor/services/search.service.js +166 -20
  152. package/esm2015/base/lib/vendor/services/user.service.js +44 -6
  153. package/esm2015/base/lib/vendor/services/webtoken.service.js +9 -5
  154. package/esm2015/base/lib/vendor/types/graphql.types.js +9 -1
  155. package/esm2015/base/lib/vendor/types/types.js +1704 -1
  156. package/esm2015/base/lib/vendor/updaters/edit-user-updater.js +11 -0
  157. package/esm2015/base/lib/vendor/updaters/set-user-language-updater.js +11 -0
  158. package/esm2015/base/sabstravtech-obtservices-base.js +6 -5
  159. package/esm2015/base/services.js +2 -1
  160. package/esm2015/base/updaters.js +3 -1
  161. package/fesm2015/sabstravtech-obtservices-angular.js +790 -19
  162. package/fesm2015/sabstravtech-obtservices-angular.js.map +1 -1
  163. package/fesm2015/sabstravtech-obtservices-base.js +3041 -169
  164. package/fesm2015/sabstravtech-obtservices-base.js.map +1 -1
  165. package/package.json +1 -1
@@ -1,16 +1,19 @@
1
1
  import { BehaviorSubject } from 'rxjs';
2
+ import { map, take, tap } from 'rxjs/operators';
2
3
  import { Suppliers } from '../classes/user-favourite.enum';
3
4
  import { TravellerObject } from '../models/traveller.object';
4
5
  import { BookerType } from '../types/graphql.types';
5
6
  export const USER_SIGNEDOUT = 'USER_SIGNEDOUT';
6
7
  export const USER_SIGNEDIN = 'USER_SIGNEDIN';
7
8
  export class BaseUserService {
8
- constructor(getUserFetcher, userUiConfigsFetcher, userProductsFetcher, userMessagesFetcher, baseConfirmMessagesUpdater, storageService, helpers) {
9
+ constructor(getUserFetcher, userUiConfigsFetcher, userProductsFetcher, userMessagesFetcher, baseConfirmMessagesUpdater, setUserLanguageUpdater, editUserUpdater, storageService, helpers) {
9
10
  this.getUserFetcher = getUserFetcher;
10
11
  this.userUiConfigsFetcher = userUiConfigsFetcher;
11
12
  this.userProductsFetcher = userProductsFetcher;
12
13
  this.userMessagesFetcher = userMessagesFetcher;
13
14
  this.baseConfirmMessagesUpdater = baseConfirmMessagesUpdater;
15
+ this.setUserLanguageUpdater = setUserLanguageUpdater;
16
+ this.editUserUpdater = editUserUpdater;
14
17
  this.storageService = storageService;
15
18
  this.helpers = helpers;
16
19
  this.fullUserDetails = {
@@ -19,13 +22,24 @@ export class BaseUserService {
19
22
  travllerObject: new BehaviorSubject(null),
20
23
  userConfigs: new BehaviorSubject(null),
21
24
  userData: new BehaviorSubject(null),
22
- userServices: new BehaviorSubject(null)
25
+ userServices: new BehaviorSubject(null),
26
+ allDetails: new BehaviorSubject(null)
23
27
  };
24
28
  this.changeUser = new BehaviorSubject(null);
25
29
  }
26
30
  setUser(user_data) {
27
31
  const userdata = this.fullUserDetails.userData.value;
28
32
  if (!userdata || userdata.username !== user_data.username) {
33
+ if (userdata === null || userdata === void 0 ? void 0 : userdata.user_id) {
34
+ this.getUserFetcher.fetchOne({
35
+ id: userdata.user_id.toString()
36
+ })
37
+ .pipe(take(1))
38
+ .subscribe((user) => {
39
+ this.fullUserDetails.allDetails.next(user);
40
+ this.checkEmitUser();
41
+ });
42
+ }
29
43
  this.userUiConfigsFetcher.fetchKeyedObject('key').subscribe((result1) => {
30
44
  this.fullUserDetails.userConfigs.next(result1);
31
45
  this.checkEmitUser();
@@ -46,6 +60,16 @@ export class BaseUserService {
46
60
  });
47
61
  this.fullUserDetails.travllerObject.next(TravellerObject.makeTravellerObjectFromUser(user_data));
48
62
  }
63
+ if (user_data === null || user_data === void 0 ? void 0 : user_data.user_id) {
64
+ this.getUserFetcher.fetchOne({
65
+ id: user_data === null || user_data === void 0 ? void 0 : user_data.user_id.toString()
66
+ })
67
+ .pipe(take(1))
68
+ .subscribe((user) => {
69
+ this.fullUserDetails.allDetails.next(user);
70
+ this.checkEmitUser();
71
+ });
72
+ }
49
73
  this.fullUserDetails.userData.next(user_data);
50
74
  this.storageService.setSessionItem('lightning_user_data', user_data);
51
75
  }
@@ -106,7 +130,6 @@ export class BaseUserService {
106
130
  return user && user.userData ? user.userData.value.surname : '';
107
131
  }
108
132
  getFullPhoneNumber() {
109
- const user = this.getfullUserDetails();
110
133
  return '';
111
134
  }
112
135
  getUserEmail() {
@@ -141,7 +164,7 @@ export class BaseUserService {
141
164
  const ufValue = this.fullUserDetails.userConfigs.value;
142
165
  return this.helpers.fromObject(ufValue, uf.value, 'config');
143
166
  }
144
- getUserFavoriteNumber(uf, supplier = Suppliers.non) {
167
+ getUserFavoriteNumber(uf) {
145
168
  const ufValue = this.fullUserDetails.userConfigs.value;
146
169
  return this.helpers.fromObject(ufValue, uf.value, 'config', 'value');
147
170
  }
@@ -245,7 +268,22 @@ export class BaseUserService {
245
268
  }
246
269
  getUser() {
247
270
  const user = this.getfullUserDetails();
248
- return this.getUserFetcher.fetchOne({ id: user.userData.value.user_id.toString() });
271
+ return this.getUserFetcher.fetchOne({
272
+ id: user.userData.value.user_id.toString()
273
+ });
274
+ }
275
+ setUserLanguage(id) {
276
+ return this.setUserLanguageUpdater.updateOne({ language: id });
277
+ }
278
+ getDocuments(type) {
279
+ return this.getUser().pipe(map((user) => user.documents || []), map((docs) => {
280
+ return type
281
+ ? docs.filter((doc) => doc.docType === type)
282
+ : docs;
283
+ }));
284
+ }
285
+ editUser(user) {
286
+ return this.editUserUpdater.updateOne(user).pipe(tap((user) => this.fullUserDetails.allDetails.next(user)));
249
287
  }
250
288
  }
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2J0c2VydmljZXMvYmFzZS9zcmMvbGliL3ZlbmRvci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBMEIsTUFBTSxNQUFNLENBQUM7QUFJL0QsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQXVCM0UsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFDTCxVQUFVLEVBS1gsTUFBTSx3QkFBd0IsQ0FBQztBQVNoQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQU03QyxNQUFNLE9BQU8sZUFBZTtJQXFCMUIsWUFDVSxjQUF3QyxFQUN4QyxvQkFBb0QsRUFDcEQsbUJBQWtELEVBQ2xELG1CQUFrRCxFQUNsRCwwQkFBNkQsRUFDN0QsY0FBa0MsRUFDbEMsT0FBMkI7UUFOM0IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBZ0M7UUFDcEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUErQjtRQUNsRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQStCO1FBQ2xELCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBbUM7UUFDN0QsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBcEI5QixvQkFBZSxHQUFvQjtZQUN4QyxpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUM7WUFDOUMsY0FBYyxFQUFFLElBQUksZUFBZSxDQUFZLElBQUksQ0FBQztZQUNwRCxXQUFXLEVBQUUs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LElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZUFBZSxDQUFDLEVBQXFCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxJQUFJLEdBQW9CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZUhlbHBlclJvdXRpbmVzIH0gZnJvbSAnLi4vY2xhc3Nlcy9oZWxwZXJzJztcclxuXHJcbmltcG9ydCB7IFN1cHBsaWVycywgVXNlckZhdm9ydXJpdGUgfSBmcm9tICcuLi9jbGFzc2VzL3VzZXItZmF2b3VyaXRlLmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VVc2VyTWVzc2FnZXNGZXRjaGVyLFxyXG4gIFVzZXJNZXNzYWdlRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLW1lc3NhZ2UuZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVVzZXJQcm9kdWN0c0ZldGNoZXIsXHJcbiAgVXNlclByb2R1Y3RzRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLXByb2R1Y3RzLWZldGNoZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VVc2VyVWlDb25maWdzRmV0Y2hlcixcclxuICBVc2VyVWlDb25maWdzRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLXVpLWNvbmZpZ3MtZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUdldFVzZXJGZXRjaGVyLFxyXG4gIFNlYXJjaEdldFVzZXJGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL3VzZXItZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgRnVsbFVzZXJEZXRhaWxzLFxyXG4gIFVzZXJTZXJ2aWNlSW50ZXJmYWNlLFxyXG4gIFVzZXJTZXJ2aWNlc1xyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSXVzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy91c2VyLmRhdGEnO1xyXG5pbXBvcnQgeyBUcmF2ZWxsZXIsIFRyYXZlbGxlck9iamVjdCB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcclxuaW1wb3J0IHtcclxuICBCb29rZXJUeXBlLFxyXG4gIE1lc3NhZ2UsXHJcbiAgU2VydmljZSxcclxuICBTZXJ2aWNlVHlwZSxcclxuICBVc2VyXHJcbn0gZnJvbSAnLi4vdHlwZXMvZ3JhcGhxbC50eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgU2VydmljZVByb3ZpZGVyLFxyXG4gIFVucGFja2VkLFxyXG4gIFVzZXJVaUNvbmZpZ3NSZXN1bHQsXHJcbiAgUmlza0FsZXJ0SW50ZXJmYWNlLFxyXG4gIFJpc2tMZXZlbFJhbmtpbmdcclxufSBmcm9tICcuLi90eXBlcy90eXBlcyc7XHJcbmltcG9ydCB7IEJhc2VTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcclxuZXhwb3J0IGNvbnN0IFVTRVJfU0lHTkVET1VUID0gJ1VTRVJfU0lHTkVET1VUJztcclxuZXhwb3J0IGNvbnN0IFVTRVJfU0lHTkVESU4gPSAnVVNFUl9TSUdORURJTic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUNvbmZpcm1NZXNzYWdlc1VwZGF0ZXIsXHJcbiAgQ29uZmlybU1lc3NhZ2VzRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9jb25maXJtLW1lc3NhZ2VzLXVwZGF0ZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIEJhc2VVc2VyU2VydmljZTxcclxuICBHVV9RIGV4dGVuZHMgU2VhcmNoR2V0VXNlckZldGNoZXJUeXBlLFxyXG4gIFVDX1EgZXh0ZW5kcyBVc2VyVWlDb25maWdzRmV0Y2hlclR5cGUsXHJcbiAgVVNfUSBleHRlbmRzIFVzZXJQcm9kdWN0c0ZldGNoZXJUeXBlLFxyXG4gIFVNX1EgZXh0ZW5kcyBVc2VyTWVzc2FnZUZldGNoZXJUeXBlLFxyXG4gIENNVV9RIGV4dGVuZHMgQ29uZmlybU1lc3NhZ2VzRmV0Y2hlclR5cGVcclxuPiBpbXBsZW1lbnRzIFVzZXJTZXJ2aWNlSW50ZXJmYWNlXHJcbntcclxuICBwdWJsaWMgZnVsbFVzZXJEZXRhaWxzOiBGdWxsVXNlckRldGFpbHMgPSB7XHJcbiAgICBib29raW5nQWxsb3dlZEZvcjogJycsXHJcbiAgICBtZXNzYWdlczogbmV3IEJlaGF2aW9yU3ViamVjdDxNZXNzYWdlW10+KG51bGwpLFxyXG4gICAgdHJhdmxsZXJPYmplY3Q6IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJhdmVsbGVyPihudWxsKSxcclxuICAgIHVzZXJDb25maWdzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuICAgICAgW2tleTogc3RyaW5nXTogVW5wYWNrZWQ8VXNlclVpQ29uZmlnc1Jlc3VsdD47XHJcbiAgICB9PihudWxsKSxcclxuICAgIHVzZXJEYXRhOiBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXJEYXRhPihudWxsKSxcclxuICAgIHVzZXJTZXJ2aWNlczogbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyU2VydmljZXM+KG51bGwpXHJcbiAgfTtcclxuICBjaGFuZ2VVc2VyOiBCZWhhdmlvclN1YmplY3Q8RnVsbFVzZXJEZXRhaWxzPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEZ1bGxVc2VyRGV0YWlscz4obnVsbCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnZXRVc2VyRmV0Y2hlcjogQmFzZUdldFVzZXJGZXRjaGVyPEdVX1E+LFxyXG4gICAgcHJpdmF0ZSB1c2VyVWlDb25maWdzRmV0Y2hlcjogQmFzZVVzZXJVaUNvbmZpZ3NGZXRjaGVyPFVDX1E+LFxyXG4gICAgcHJpdmF0ZSB1c2VyUHJvZHVjdHNGZXRjaGVyOiBCYXNlVXNlclByb2R1Y3RzRmV0Y2hlcjxVU19RPixcclxuICAgIHByaXZhdGUgdXNlck1lc3NhZ2VzRmV0Y2hlcjogQmFzZVVzZXJNZXNzYWdlc0ZldGNoZXI8VU1fUT4sXHJcbiAgICBwcml2YXRlIGJhc2VDb25maXJtTWVzc2FnZXNVcGRhdGVyOiBCYXNlQ29uZmlybU1lc3NhZ2VzVXBkYXRlcjxDTVVfUT4sXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBCYXNlU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGhlbHBlcnM6IEJhc2VIZWxwZXJSb3V0aW5lc1xyXG4gICkge31cclxuXHJcbiAgc2V0VXNlcih1c2VyX2RhdGE6IFVzZXJEYXRhKTogdm9pZCB7XHJcbiAgICBjb25zdCB1c2VyZGF0YSA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlO1xyXG4gICAgaWYgKCF1c2VyZGF0YSB8fCB1c2VyZGF0YS51c2VybmFtZSAhPT0gdXNlcl9kYXRhLnVzZXJuYW1lKSB7XHJcbiAgICAgIHRoaXMudXNlclVpQ29uZmlnc0ZldGNoZXIuZmV0Y2hLZXllZE9iamVjdCgna2V5Jykuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXN1bHQxOiB7IFtrZXk6IHN0cmluZ106IFVucGFja2VkPFVzZXJVaUNvbmZpZ3NSZXN1bHQ+IH0pID0+IHtcclxuICAgICAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLm5leHQocmVzdWx0MSk7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrRW1pdFVzZXIoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnVzZXJQcm9kdWN0c0ZldGNoZXJcclxuICAgICAgICAuZmV0Y2hLZXllZE9iamVjdEFycmF5KCd0eXBlJylcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQyOiBVc2VyU2VydmljZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy5uZXh0KHJlc3VsdDIpO1xyXG5cclxuICAgICAgICAgIHRoaXMuY2hlY2tFbWl0VXNlcigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLnVzZXJNZXNzYWdlc0ZldGNoZXIuZmV0Y2hMaXN0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXN1bHQzOiBNZXNzYWdlW10pID0+IHtcclxuICAgICAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLm1lc3NhZ2VzLm5leHQocmVzdWx0Myk7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrRW1pdFVzZXIoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudHJhdmxsZXJPYmplY3QubmV4dChcclxuICAgICAgICBUcmF2ZWxsZXJPYmplY3QubWFrZVRyYXZlbGxlck9iamVjdEZyb21Vc2VyKHVzZXJfZGF0YSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS5uZXh0KHVzZXJfZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uSXRlbSgnbGlnaHRuaW5nX3VzZXJfZGF0YScsIHVzZXJfZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjaGVja0VtaXRVc2VyKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhIXRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlICYmXHJcbiAgICAgICEhdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUgJiZcclxuICAgICAgISF0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWUgJiZcclxuICAgICAgISF0aGlzLmZ1bGxVc2VyRGV0YWlscy5tZXNzYWdlcy52YWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlVXNlci5uZXh0KHRoaXMuZnVsbFVzZXJEZXRhaWxzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldGZ1bGxVc2VyRGV0YWlscyhhZG1pbjogYm9vbGVhbiA9IGZhbHNlKTogRnVsbFVzZXJEZXRhaWxzIHwgbnVsbCB7XHJcbiAgICBpZiAoYWRtaW4pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2dldEZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9nZXRGdWxsVXNlckRldGFpbHMoKTtcclxuICAgIC8vIHJldHVybiB0aGlzLm9uQmVoYWxmVXNlciB8fCB0aGlzLl9nZXRVc2VyRGV0YWlscygpO1xyXG4gIH1cclxuXHJcbiAgX2dldEZ1bGxVc2VyRGV0YWlscygpOiBGdWxsVXNlckRldGFpbHMge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMgfHxcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uSXRlbSgnbGlnaHRuaW5nX3VzZXJfZGF0YScpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckRyb3Bkb3duSW5mbygpOiB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgYWNjb3VudF90eXBlOiBCb29rZXJUeXBlIHwgc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICB9IHtcclxuICAgIGNvbnN0IGRyb3Bkb3duX2luZm8gPSB7XHJcbiAgICAgIG5hbWU6ICdVbmFibGUgdG8gcmV0cmlldmUgbmFtZS4nLFxyXG4gICAgICBlbWFpbDogJ1VuYWJsZSB0byByZXJpZXZlIGVtYWlsJyxcclxuICAgICAgYWNjb3VudF90eXBlOiAnVW5rbm93bicsXHJcbiAgICAgIHRpdGxlOiAnJ1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFVzZXJzRnVsbG5hbWUoKTtcclxuICAgIGNvbnN0IGVtYWlsID0gdGhpcy5nZXRVc2VyRW1haWwoKTtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFVzZXJCb29raW5nVHlwZSgpO1xyXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLmdldFVzZXJUaXRsZSgpO1xyXG5cclxuICAgIGlmIChuYW1lKSB7XHJcbiAgICAgIGRyb3Bkb3duX2luZm8ubmFtZSA9IG5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVtYWlsKSB7XHJcbiAgICAgIGRyb3Bkb3duX2luZm8uZW1haWwgPSBlbWFpbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZSkge1xyXG4gICAgICBkcm9wZG93bl9pbmZvLmFjY291bnRfdHlwZSA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRpdGxlKSB7XHJcbiAgICAgIGRyb3Bkb3duX2luZm8udGl0bGUgPSB0aXRsZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZHJvcGRvd25faW5mbztcclxuICB9XHJcblxyXG4gIGdldFVzZXJUaXRsZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGEgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLnRpdGxlIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRm9yZW5hbWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS5mb3JlbmFtZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclN1cm5hbWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS5zdXJuYW1lIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRGdWxsUGhvbmVOdW1iZXIoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRW1haWwoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS51c2VybmFtZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJvb2tpbmdUeXBlKCk6IEJvb2tlclR5cGUge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGEgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLmJvb2tlcl90eXBlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFVzZXJzRnVsbG5hbWUoKTogc3RyaW5nIHwgZmFsc2Uge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGFcclxuICAgICAgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLmZvcmVuYW1lICsgJyAnICsgdXNlci51c2VyRGF0YS52YWx1ZS5zdXJuYW1lXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRVc2Vyc1RpdGxlQW5kRnVsbE5hbWUoKTogc3RyaW5nIHwgZmFsc2Uge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGFcclxuICAgICAgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLnRpdGxlICtcclxuICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICB1c2VyLnVzZXJEYXRhLnZhbHVlLmZvcmVuYW1lICtcclxuICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICB1c2VyLnVzZXJEYXRhLnZhbHVlLnN1cm5hbWVcclxuICAgICAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJGYXZvcml0ZVZhbHVlKFxyXG4gICAgdWY6IFVzZXJGYXZvcnVyaXRlLFxyXG4gICAgc3VwcGxpZXI6IFN1cHBsaWVycyA9IFN1cHBsaWVycy5ub25cclxuICApOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdWZWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZnJvbU9iamVjdCh1ZlZhbHVlLCB1Zi52YWx1ZSwgJ2NvbmZpZycsIHVmLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJGYXZvcml0ZU9iamVjdDxUPih1ZjogVXNlckZhdm9ydXJpdGUpOiBUIHtcclxuICAgIGNvbnN0IHVmVmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy52YWx1ZTtcclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZnJvbU9iamVjdCh1ZlZhbHVlLCB1Zi52YWx1ZSwgJ2NvbmZpZycpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckZhdm9yaXRlTnVtYmVyKFxyXG4gICAgdWY6IFVzZXJGYXZvcnVyaXRlLFxyXG4gICAgc3VwcGxpZXI6IFN1cHBsaWVycyA9IFN1cHBsaWVycy5ub25cclxuICApOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdWZWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZnJvbU9iamVjdCh1ZlZhbHVlLCB1Zi52YWx1ZSwgJ2NvbmZpZycsICd2YWx1ZScpO1xyXG4gIH1cclxuXHJcbiAgaXNVc2VyRmF2b3JpdGVTZXQoXHJcbiAgICB1ZjogVXNlckZhdm9ydXJpdGUsXHJcbiAgICBzdXBwbGllcjogU3VwcGxpZXJzID0gU3VwcGxpZXJzLm5vblxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdWZWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZnJvbU9iamVjdCh1ZlZhbHVlLCB1Zi52YWx1ZSwgJ2NvbmZpZycsICd2YWx1ZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2MgLSBjcmVhdGUgYSBkdW1teSB1c2VyIGZvciBzZWxmIGJvb2tlcnNcclxuICAgKi9cclxuICBjcmVhdGVTZWxmVHJhdmVsbGVyKCk6IFRyYXZlbGxlciB7XHJcbiAgICByZXR1cm4gdGhpcy5mdWxsVXNlckRldGFpbHMudHJhdmxsZXJPYmplY3QudmFsdWU7XHJcbiAgfVxyXG5cclxuICB0cmF2ZWxsZXJJc1VzZXIodHJhdmVsbGVyOiBUcmF2ZWxsZXIpOiBib29sZWFuIHtcclxuICAgIC8vIFRPRE8gY2hlY2sgdGhlIHRyYXZlbGxlciBpc24ndCB0aGUgY3VycmVudCB1c2VyIG9yIGFnZW50IGJvb2tcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGVtcHR5VXNlckRhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MubmV4dChudWxsKTtcclxuICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5mdWxsVXNlckRldGFpbHMubWVzc2FnZXMubmV4dChudWxsKTtcclxuICAgIHRoaXMuY2hhbmdlVXNlci5uZXh0KHRoaXMuZnVsbFVzZXJEZXRhaWxzKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUd1ZXN0VXNlcihcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBmb3JlbmFtZTogc3RyaW5nLFxyXG4gICAgc3VybmFtZTogc3RyaW5nLFxyXG4gICAgZW1haWw6IHN0cmluZyxcclxuICAgIGd1ZXN0TW9iaWxlQ291bnRyeU5vOiBzdHJpbmcsXHJcbiAgICBndWVzdE1vYmlsZU51bWJlcjogc3RyaW5nLFxyXG4gICAgZ3Vlc3RfbmF0aW9uYWxpdHk6IHN0cmluZyxcclxuICAgIGdlbmRlcjogc3RyaW5nLFxyXG4gICAgaXNDaGlsZDogYm9vbGVhbixcclxuICAgIGlzSW5mYW50OiBib29sZWFuLFxyXG4gICAgY2hpbGRET0I6IERhdGVcclxuICApOiBUcmF2ZWxsZXIge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXNDaGlsZCxcclxuICAgICAgaXNJbmZhbnQsXHJcbiAgICAgIGNoaWxkRE9CLFxyXG4gICAgICBndWVzdDogdHJ1ZSxcclxuICAgICAgaWQ6ICcnLFxyXG4gICAgICBmb3JlbmFtZSxcclxuICAgICAgc3VybmFtZSxcclxuICAgICAgZW1haWwsXHJcbiAgICAgIHRpdGxlLFxyXG4gICAgICBuYW1lOiBbdGl0bGUsIGZvcmVuYW1lLCBzdXJuYW1lXS5qb2luKCcgJylcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICB1c2VySXNDbGllbnQoKTogYm9vbGVhbiB7XHJcbiAgICAvKiBUT0RPXHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgIXRoaXMuaXNBZ2VuY3lVc2VyKCkgJiYgWydUcmF2ZWxsZXInLCAnTWUnLCAnT3RoZXJzJywgJ0Jvb2tlciddLmluY2x1ZGVzKHVzZXIuQm9va2luZ0FsbG93ZWRGb3IpO1xyXG4gICAgKi9cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaGFzSWdub3JlUG9saWN5KCk6IGJvb2xlYW4ge1xyXG4gICAgLyogVE9ET1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIuQm9va2luZ1BvbGljeU92ZXJyaWRlICYmIHVzZXIuQm9va2luZ1BvbGljeU92ZXJyaWRlID09PSAnOTk5OS0wMS0wMSAwMDowMDowMCc7Ki9cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgdXNlQWdlbnRDYW5Cb29rRm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7IC8vIFRPRE9cclxuICB9XHJcblxyXG4gIGNhbkJvb2soc2VydmljZTogU2VydmljZVR5cGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNlcnZpY2VzOiBVc2VyU2VydmljZXMgPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWU7XHJcbiAgICByZXR1cm4gc2VydmljZXMgJiYgISFzZXJ2aWNlc1tzZXJ2aWNlXTtcclxuICB9XHJcblxyXG4gIGlzVHJhdmVsbGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuYm9va2VyX3R5cGUgPT09IEJvb2tlclR5cGUuVHJhdmVsbGVyXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXNlcklzQWdlbnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA9PT0gQm9va2VyVHlwZS5Db21wYW55XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXNlcklzQWRtaW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuYWRtaW47XHJcbiAgfVxyXG5cclxuICB1c2VySXNDb21wYW55QWRtaW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuY29tcGFueV9hZG1pbjtcclxuICB9XHJcblxyXG4gIGlzU2VsZkJvb2soKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA9PT0gQm9va2VyVHlwZS5TZWxmQm9va1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzQm9va2VyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuYm9va2VyX3R5cGUgPT09IEJvb2tlclR5cGUuQm9va2VyXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcklkKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUudXNlcl9pZDtcclxuICB9XHJcblxyXG4gIHVzZXJIYXNTZXJ2aWNlUHJvdmlkZXIoXHJcbiAgICBzZXJ2aWNlOiBTZXJ2aWNlVHlwZSxcclxuICAgIHByb3ZpZGVyOiBTZXJ2aWNlUHJvdmlkZXJcclxuICApOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWUpIHtcclxuICAgICAgcmV0dXJuICEhKHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy52YWx1ZVtzZXJ2aWNlXSB8fCBbXSkuZmluZChcclxuICAgICAgICAodmFsdWU6IFNlcnZpY2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZS5uYW1lID09PSAocHJvdmlkZXIgYXMgc3RyaW5nKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaW5kU2VydmljZShpZDogc3RyaW5nKTogU2VydmljZSB7XHJcbiAgICBpZiAodGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZmluZFNlcnZpY2UoXHJcbiAgICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlLFxyXG4gICAgICAgIGlkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFVzZXJNZXNzYWdlcygpOiBPYnNlcnZhYmxlPE1lc3NhZ2VbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlck1lc3NhZ2VzRmV0Y2hlci5mZXRjaExpc3QoKTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm1NZXNzYWdlcyhpZDogc3RyaW5nIHwgc3RyaW5nW10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmJhc2VDb25maXJtTWVzc2FnZXNVcGRhdGVyLnVwZGF0ZU9uZSh7IG1lc3NhZ2VzOiBpZCB9KTtcclxuICB9XHJcblxyXG4gIGdldFVzZXIoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyRmV0Y2hlci5mZXRjaE9uZSh7aWQ6IHVzZXIudXNlckRhdGEudmFsdWUudXNlcl9pZC50b1N0cmluZygpfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2J0c2VydmljZXMvYmFzZS9zcmMvbGliL3ZlbmRvci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLGdDQUFnQyxDQUFDO0FBdUIzRSxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxFQUVMLFVBQVUsRUFPWCxNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBYzdDLE1BQU0sT0FBTyxlQUFlO0lBd0IxQixZQUNVLGNBQXdDLEVBQ3hDLG9CQUFvRCxFQUNwRCxtQkFBa0QsRUFDbEQsbUJBQWtELEVBQ2xELDBCQUE2RCxFQUM3RCxzQkFBeUQsRUFDekQsZUFBMkMsRUFDM0MsY0FBa0MsRUFDbEMsT0FBMkI7UUFSM0IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBZ0M7UUFDcEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUErQjtRQUNsRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQStCO1FBQ2xELCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBbUM7UUFDN0QsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFtQztRQUN6RCxvQkFBZSxHQUFmLGVBQWUsQ0FBNEI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBQ2xDLFlBQU8sR0FBUCxPQUFP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O0lBQ2pILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZUhlbHBlclJvdXRpbmVzIH0gZnJvbSAnLi4vY2xhc3Nlcy9oZWxwZXJzJztcclxuXHJcbmltcG9ydCB7IFN1cHBsaWVycywgVXNlckZhdm9ydXJpdGUgfSBmcm9tICcuLi9jbGFzc2VzL3VzZXItZmF2b3VyaXRlLmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VVc2VyTWVzc2FnZXNGZXRjaGVyLFxyXG4gIFVzZXJNZXNzYWdlRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLW1lc3NhZ2UuZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVVzZXJQcm9kdWN0c0ZldGNoZXIsXHJcbiAgVXNlclByb2R1Y3RzRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLXByb2R1Y3RzLWZldGNoZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VVc2VyVWlDb25maWdzRmV0Y2hlcixcclxuICBVc2VyVWlDb25maWdzRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLXVpLWNvbmZpZ3MtZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUdldFVzZXJGZXRjaGVyLFxyXG4gIFNlYXJjaEdldFVzZXJGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL3VzZXItZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgRnVsbFVzZXJEZXRhaWxzLFxyXG4gIFVzZXJTZXJ2aWNlSW50ZXJmYWNlLFxyXG4gIFVzZXJTZXJ2aWNlc1xyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSXVzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy91c2VyLmRhdGEnO1xyXG5pbXBvcnQgeyBUcmF2ZWxsZXIsIFRyYXZlbGxlck9iamVjdCB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcclxuaW1wb3J0IHtcclxuICBEb2N1bWVudCxcclxuICBCb29rZXJUeXBlLFxyXG4gIE1lc3NhZ2UsXHJcbiAgTXV0YXRpb25FZGl0VXNlckFyZ3MsXHJcbiAgU2VydmljZSxcclxuICBTZXJ2aWNlVHlwZSxcclxuICBVc2VyLFxyXG4gIERvY1R5cGVcclxufSBmcm9tICcuLi90eXBlcy9ncmFwaHFsLnR5cGVzJztcclxuaW1wb3J0IHsgU2VydmljZVByb3ZpZGVyLCBVbnBhY2tlZCwgVXNlclVpQ29uZmlnc1Jlc3VsdCB9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5leHBvcnQgY29uc3QgVVNFUl9TSUdORURPVVQgPSAnVVNFUl9TSUdORURPVVQnO1xyXG5leHBvcnQgY29uc3QgVVNFUl9TSUdORURJTiA9ICdVU0VSX1NJR05FRElOJztcclxuaW1wb3J0IHtcclxuICBCYXNlQ29uZmlybU1lc3NhZ2VzVXBkYXRlcixcclxuICBDb25maXJtTWVzc2FnZXNGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL3VwZGF0ZXJzL2NvbmZpcm0tbWVzc2FnZXMtdXBkYXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVNldFVzZXJMYW5ndWFnZVVwZGF0ZXIsXHJcbiAgU2V0VXNlckxhbmd1YWdlRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9zZXQtdXNlci1sYW5ndWFnZS11cGRhdGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlRWRpdFVzZXJVcGRhdGVyLFxyXG4gIEVkaXRVc2VyRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9lZGl0LXVzZXItdXBkYXRlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgQmFzZVVzZXJTZXJ2aWNlPFxyXG4gIEdVX1EgZXh0ZW5kcyBTZWFyY2hHZXRVc2VyRmV0Y2hlclR5cGUsXHJcbiAgVUNfUSBleHRlbmRzIFVzZXJVaUNvbmZpZ3NGZXRjaGVyVHlwZSxcclxuICBVU19RIGV4dGVuZHMgVXNlclByb2R1Y3RzRmV0Y2hlclR5cGUsXHJcbiAgVU1fUSBleHRlbmRzIFVzZXJNZXNzYWdlRmV0Y2hlclR5cGUsXHJcbiAgQ01VX1EgZXh0ZW5kcyBDb25maXJtTWVzc2FnZXNGZXRjaGVyVHlwZSxcclxuICBTTFVfUSBleHRlbmRzIFNldFVzZXJMYW5ndWFnZUZldGNoZXJUeXBlLFxyXG4gIEVVVV9RIGV4dGVuZHMgRWRpdFVzZXJGZXRjaGVyVHlwZVxyXG4+IGltcGxlbWVudHMgVXNlclNlcnZpY2VJbnRlcmZhY2Vcclxue1xyXG4gIHB1YmxpYyBmdWxsVXNlckRldGFpbHM6IEZ1bGxVc2VyRGV0YWlscyA9IHtcclxuICAgIGJvb2tpbmdBbGxvd2VkRm9yOiAnJyxcclxuICAgIG1lc3NhZ2VzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lc3NhZ2VbXT4obnVsbCksXHJcbiAgICB0cmF2bGxlck9iamVjdDogbmV3IEJlaGF2aW9yU3ViamVjdDxUcmF2ZWxsZXI+KG51bGwpLFxyXG4gICAgdXNlckNvbmZpZ3M6IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xyXG4gICAgICBba2V5OiBzdHJpbmddOiBVbnBhY2tlZDxVc2VyVWlDb25maWdzUmVzdWx0PjtcclxuICAgIH0+KG51bGwpLFxyXG4gICAgdXNlckRhdGE6IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlckRhdGE+KG51bGwpLFxyXG4gICAgdXNlclNlcnZpY2VzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXJTZXJ2aWNlcz4obnVsbCksXHJcbiAgICBhbGxEZXRhaWxzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXI+KG51bGwpXHJcbiAgfTtcclxuICBjaGFuZ2VVc2VyOiBCZWhhdmlvclN1YmplY3Q8RnVsbFVzZXJEZXRhaWxzPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEZ1bGxVc2VyRGV0YWlscz4obnVsbCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnZXRVc2VyRmV0Y2hlcjogQmFzZUdldFVzZXJGZXRjaGVyPEdVX1E+LFxyXG4gICAgcHJpdmF0ZSB1c2VyVWlDb25maWdzRmV0Y2hlcjogQmFzZVVzZXJVaUNvbmZpZ3NGZXRjaGVyPFVDX1E+LFxyXG4gICAgcHJpdmF0ZSB1c2VyUHJvZHVjdHNGZXRjaGVyOiBCYXNlVXNlclByb2R1Y3RzRmV0Y2hlcjxVU19RPixcclxuICAgIHByaXZhdGUgdXNlck1lc3NhZ2VzRmV0Y2hlcjogQmFzZVVzZXJNZXNzYWdlc0ZldGNoZXI8VU1fUT4sXHJcbiAgICBwcml2YXRlIGJhc2VDb25maXJtTWVzc2FnZXNVcGRhdGVyOiBCYXNlQ29uZmlybU1lc3NhZ2VzVXBkYXRlcjxDTVVfUT4sXHJcbiAgICBwcml2YXRlIHNldFVzZXJMYW5ndWFnZVVwZGF0ZXI6IEJhc2VTZXRVc2VyTGFuZ3VhZ2VVcGRhdGVyPFNMVV9RPixcclxuICAgIHByaXZhdGUgZWRpdFVzZXJVcGRhdGVyOiBCYXNlRWRpdFVzZXJVcGRhdGVyPEVVVV9RPixcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IEJhc2VTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgaGVscGVyczogQmFzZUhlbHBlclJvdXRpbmVzXHJcbiAgKSB7fVxyXG5cclxuICBzZXRVc2VyKHVzZXJfZGF0YTogVXNlckRhdGEpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVzZXJkYXRhID0gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWU7XHJcbiAgICBpZiAoIXVzZXJkYXRhIHx8IHVzZXJkYXRhLnVzZXJuYW1lICE9PSB1c2VyX2RhdGEudXNlcm5hbWUpIHtcclxuICAgICAgaWYgKHVzZXJkYXRhPy51c2VyX2lkKSB7XHJcbiAgICAgICAgdGhpcy5nZXRVc2VyRmV0Y2hlci5mZXRjaE9uZSh7XHJcbiAgICAgICAgICBpZDogdXNlcmRhdGEudXNlcl9pZC50b1N0cmluZygpXHJcbiAgICAgICAgfSlcclxuICAgICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICh1c2VyOiBVc2VyKSA9PiB7XHJcbiAgICAgICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMuYWxsRGV0YWlscy5uZXh0KHVzZXIpO1xyXG4gICAgICAgICAgIHRoaXMuY2hlY2tFbWl0VXNlcigpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVzZXJVaUNvbmZpZ3NGZXRjaGVyLmZldGNoS2V5ZWRPYmplY3QoJ2tleScpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzdWx0MTogeyBba2V5OiBzdHJpbmddOiBVbnBhY2tlZDxVc2VyVWlDb25maWdzUmVzdWx0PiB9KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy5uZXh0KHJlc3VsdDEpO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0VtaXRVc2VyKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy51c2VyUHJvZHVjdHNGZXRjaGVyXHJcbiAgICAgICAgLmZldGNoS2V5ZWRPYmplY3RBcnJheSgndHlwZScpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0MjogVXNlclNlcnZpY2VzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMubmV4dChyZXN1bHQyKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNoZWNrRW1pdFVzZXIoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy51c2VyTWVzc2FnZXNGZXRjaGVyLmZldGNoTGlzdCgpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzdWx0MzogTWVzc2FnZVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy5tZXNzYWdlcy5uZXh0KHJlc3VsdDMpO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0VtaXRVc2VyKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnRyYXZsbGVyT2JqZWN0Lm5leHQoXHJcbiAgICAgICAgVHJhdmVsbGVyT2JqZWN0Lm1ha2VUcmF2ZWxsZXJPYmplY3RGcm9tVXNlcih1c2VyX2RhdGEpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodXNlcl9kYXRhPy51c2VyX2lkKSB7XHJcbiAgICAgIHRoaXMuZ2V0VXNlckZldGNoZXIuZmV0Y2hPbmUoe1xyXG4gICAgICAgIGlkOiB1c2VyX2RhdGE/LnVzZXJfaWQudG9TdHJpbmcoKVxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgKHVzZXI6IFVzZXIpID0+IHtcclxuICAgICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMuYWxsRGV0YWlscy5uZXh0KHVzZXIpO1xyXG4gICAgICAgICB0aGlzLmNoZWNrRW1pdFVzZXIoKTtcclxuICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLm5leHQodXNlcl9kYXRhKTtcclxuXHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFNlc3Npb25JdGVtKCdsaWdodG5pbmdfdXNlcl9kYXRhJywgdXNlcl9kYXRhKTtcclxuICB9XHJcblxyXG4gIGNoZWNrRW1pdFVzZXIoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICEhdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MudmFsdWUgJiZcclxuICAgICAgISF0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZSAmJlxyXG4gICAgICAhIXRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy52YWx1ZSAmJlxyXG4gICAgICAhIXRoaXMuZnVsbFVzZXJEZXRhaWxzLm1lc3NhZ2VzLnZhbHVlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jaGFuZ2VVc2VyLm5leHQodGhpcy5mdWxsVXNlckRldGFpbHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0ZnVsbFVzZXJEZXRhaWxzKGFkbWluOiBib29sZWFuID0gZmFsc2UpOiBGdWxsVXNlckRldGFpbHMgfCBudWxsIHtcclxuICAgIGlmIChhZG1pbikge1xyXG4gICAgICByZXR1cm4gdGhpcy5fZ2V0RnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2dldEZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgLy8gcmV0dXJuIHRoaXMub25CZWhhbGZVc2VyIHx8IHRoaXMuX2dldFVzZXJEZXRhaWxzKCk7XHJcbiAgfVxyXG5cclxuICBfZ2V0RnVsbFVzZXJEZXRhaWxzKCk6IEZ1bGxVc2VyRGV0YWlscyB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscyB8fFxyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25JdGVtKCdsaWdodG5pbmdfdXNlcl9kYXRhJylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRHJvcGRvd25JbmZvKCk6IHtcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICBhY2NvdW50X3R5cGU6IEJvb2tlclR5cGUgfCBzdHJpbmc7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gIH0ge1xyXG4gICAgY29uc3QgZHJvcGRvd25faW5mbyA9IHtcclxuICAgICAgbmFtZTogJ1VuYWJsZSB0byByZXRyaWV2ZSBuYW1lLicsXHJcbiAgICAgIGVtYWlsOiAnVW5hYmxlIHRvIHJlcmlldmUgZW1haWwnLFxyXG4gICAgICBhY2NvdW50X3R5cGU6ICdVbmtub3duJyxcclxuICAgICAgdGl0bGU6ICcnXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0VXNlcnNGdWxsbmFtZSgpO1xyXG4gICAgY29uc3QgZW1haWwgPSB0aGlzLmdldFVzZXJFbWFpbCgpO1xyXG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VXNlckJvb2tpbmdUeXBlKCk7XHJcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuZ2V0VXNlclRpdGxlKCk7XHJcblxyXG4gICAgaWYgKG5hbWUpIHtcclxuICAgICAgZHJvcGRvd25faW5mby5uYW1lID0gbmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZW1haWwpIHtcclxuICAgICAgZHJvcGRvd25faW5mby5lbWFpbCA9IGVtYWlsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlKSB7XHJcbiAgICAgIGRyb3Bkb3duX2luZm8uYWNjb3VudF90eXBlID0gdHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGl0bGUpIHtcclxuICAgICAgZHJvcGRvd25faW5mby50aXRsZSA9IHRpdGxlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkcm9wZG93bl9pbmZvO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci51c2VyRGF0YSA/IHVzZXIudXNlckRhdGEudmFsdWUudGl0bGUgOiAnJztcclxuICB9XHJcblxyXG4gIGdldFVzZXJGb3JlbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGEgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLmZvcmVuYW1lIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyU3VybmFtZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGEgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLnN1cm5hbWUgOiAnJztcclxuICB9XHJcblxyXG4gIGdldEZ1bGxQaG9uZU51bWJlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckVtYWlsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci51c2VyRGF0YSA/IHVzZXIudXNlckRhdGEudmFsdWUudXNlcm5hbWUgOiAnJztcclxuICB9XHJcblxyXG4gIGdldFVzZXJCb29raW5nVHlwZSgpOiBCb29rZXJUeXBlIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRVc2Vyc0Z1bGxuYW1lKCk6IHN0cmluZyB8IGZhbHNlIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhXHJcbiAgICAgID8gdXNlci51c2VyRGF0YS52YWx1ZS5mb3JlbmFtZSArICcgJyArIHVzZXIudXNlckRhdGEudmFsdWUuc3VybmFtZVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcnNUaXRsZUFuZEZ1bGxOYW1lKCk6IHN0cmluZyB8IGZhbHNlIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhXHJcbiAgICAgID8gdXNlci51c2VyRGF0YS52YWx1ZS50aXRsZSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgdXNlci51c2VyRGF0YS52YWx1ZS5mb3JlbmFtZSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgdXNlci51c2VyRGF0YS52YWx1ZS5zdXJuYW1lXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRmF2b3JpdGVWYWx1ZShcclxuICAgIHVmOiBVc2VyRmF2b3J1cml0ZSxcclxuICAgIHN1cHBsaWVyOiBTdXBwbGllcnMgPSBTdXBwbGllcnMubm9uXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVmVmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy52YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5oZWxwZXJzLmZyb21PYmplY3QodWZWYWx1ZSwgdWYudmFsdWUsICdjb25maWcnLCB1Zi52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRmF2b3JpdGVPYmplY3Q8VD4odWY6IFVzZXJGYXZvcnVyaXRlKTogVCB7XHJcbiAgICBjb25zdCB1ZlZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MudmFsdWU7XHJcbiAgICByZXR1cm4gdGhpcy5oZWxwZXJzLmZyb21PYmplY3QodWZWYWx1ZSwgdWYudmFsdWUsICdjb25maWcnKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJGYXZvcml0ZU51bWJlcih1ZjogVXNlckZhdm9ydXJpdGUpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdWZWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZnJvbU9iamVjdCh1ZlZhbHVlLCB1Zi52YWx1ZSwgJ2NvbmZpZycsICd2YWx1ZScpO1xyXG4gIH1cclxuXHJcbiAgaXNVc2VyRmF2b3JpdGVTZXQoXHJcbiAgICB1ZjogVXNlckZhdm9ydXJpdGUsXHJcbiAgICBzdXBwbGllcjogU3VwcGxpZXJzID0gU3VwcGxpZXJzLm5vblxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdWZWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZnJvbU9iamVjdCh1ZlZhbHVlLCB1Zi52YWx1ZSwgJ2NvbmZpZycsICd2YWx1ZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2MgLSBjcmVhdGUgYSBkdW1teSB1c2VyIGZvciBzZWxmIGJvb2tlcnNcclxuICAgKi9cclxuICBjcmVhdGVTZWxmVHJhdmVsbGVyKCk6IFRyYXZlbGxlciB7XHJcbiAgICByZXR1cm4gdGhpcy5mdWxsVXNlckRldGFpbHMudHJhdmxsZXJPYmplY3QudmFsdWU7XHJcbiAgfVxyXG5cclxuICB0cmF2ZWxsZXJJc1VzZXIodHJhdmVsbGVyOiBUcmF2ZWxsZXIpOiBib29sZWFuIHtcclxuICAgIC8vIFRPRE8gY2hlY2sgdGhlIHRyYXZlbGxlciBpc24ndCB0aGUgY3VycmVudCB1c2VyIG9yIGFnZW50IGJvb2tcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGVtcHR5VXNlckRhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MubmV4dChudWxsKTtcclxuICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5mdWxsVXNlckRldGFpbHMubWVzc2FnZXMubmV4dChudWxsKTtcclxuICAgIHRoaXMuY2hhbmdlVXNlci5uZXh0KHRoaXMuZnVsbFVzZXJEZXRhaWxzKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUd1ZXN0VXNlcihcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBmb3JlbmFtZTogc3RyaW5nLFxyXG4gICAgc3VybmFtZTogc3RyaW5nLFxyXG4gICAgZW1haWw6IHN0cmluZyxcclxuICAgIGd1ZXN0TW9iaWxlQ291bnRyeU5vOiBzdHJpbmcsXHJcbiAgICBndWVzdE1vYmlsZU51bWJlcjogc3RyaW5nLFxyXG4gICAgZ3Vlc3RfbmF0aW9uYWxpdHk6IHN0cmluZyxcclxuICAgIGdlbmRlcjogc3RyaW5nLFxyXG4gICAgaXNDaGlsZDogYm9vbGVhbixcclxuICAgIGlzSW5mYW50OiBib29sZWFuLFxyXG4gICAgY2hpbGRET0I6IERhdGVcclxuICApOiBUcmF2ZWxsZXIge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXNDaGlsZCxcclxuICAgICAgaXNJbmZhbnQsXHJcbiAgICAgIGNoaWxkRE9CLFxyXG4gICAgICBndWVzdDogdHJ1ZSxcclxuICAgICAgaWQ6ICcnLFxyXG4gICAgICBmb3JlbmFtZSxcclxuICAgICAgc3VybmFtZSxcclxuICAgICAgZW1haWwsXHJcbiAgICAgIHRpdGxlLFxyXG4gICAgICBuYW1lOiBbdGl0bGUsIGZvcmVuYW1lLCBzdXJuYW1lXS5qb2luKCcgJylcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICB1c2VySXNDbGllbnQoKTogYm9vbGVhbiB7XHJcbiAgICAvKiBUT0RPXHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgIXRoaXMuaXNBZ2VuY3lVc2VyKCkgJiYgWydUcmF2ZWxsZXInLCAnTWUnLCAnT3RoZXJzJywgJ0Jvb2tlciddLmluY2x1ZGVzKHVzZXIuQm9va2luZ0FsbG93ZWRGb3IpO1xyXG4gICAgKi9cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaGFzSWdub3JlUG9saWN5KCk6IGJvb2xlYW4ge1xyXG4gICAgLyogVE9ET1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIuQm9va2luZ1BvbGljeU92ZXJyaWRlICYmIHVzZXIuQm9va2luZ1BvbGljeU92ZXJyaWRlID09PSAnOTk5OS0wMS0wMSAwMDowMDowMCc7Ki9cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgdXNlQWdlbnRDYW5Cb29rRm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7IC8vIFRPRE9cclxuICB9XHJcblxyXG4gIGNhbkJvb2soc2VydmljZTogU2VydmljZVR5cGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNlcnZpY2VzOiBVc2VyU2VydmljZXMgPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWU7XHJcbiAgICByZXR1cm4gc2VydmljZXMgJiYgISFzZXJ2aWNlc1tzZXJ2aWNlXTtcclxuICB9XHJcblxyXG4gIGlzVHJhdmVsbGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuYm9va2VyX3R5cGUgPT09IEJvb2tlclR5cGUuVHJhdmVsbGVyXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXNlcklzQWdlbnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA9PT0gQm9va2VyVHlwZS5Db21wYW55XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXNlcklzQWRtaW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuYWRtaW47XHJcbiAgfVxyXG5cclxuICB1c2VySXNDb21wYW55QWRtaW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuY29tcGFueV9hZG1pbjtcclxuICB9XHJcblxyXG4gIGlzU2VsZkJvb2soKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA9PT0gQm9va2VyVHlwZS5TZWxmQm9va1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzQm9va2VyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuYm9va2VyX3R5cGUgPT09IEJvb2tlclR5cGUuQm9va2VyXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcklkKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUudXNlcl9pZDtcclxuICB9XHJcblxyXG4gIHVzZXJIYXNTZXJ2aWNlUHJvdmlkZXIoXHJcbiAgICBzZXJ2aWNlOiBTZXJ2aWNlVHlwZSxcclxuICAgIHByb3ZpZGVyOiBTZXJ2aWNlUHJvdmlkZXJcclxuICApOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWUpIHtcclxuICAgICAgcmV0dXJuICEhKHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy52YWx1ZVtzZXJ2aWNlXSB8fCBbXSkuZmluZChcclxuICAgICAgICAodmFsdWU6IFNlcnZpY2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZS5uYW1lID09PSAocHJvdmlkZXIgYXMgc3RyaW5nKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaW5kU2VydmljZShpZDogc3RyaW5nKTogU2VydmljZSB7XHJcbiAgICBpZiAodGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZmluZFNlcnZpY2UoXHJcbiAgICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlLFxyXG4gICAgICAgIGlkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFVzZXJNZXNzYWdlcygpOiBPYnNlcnZhYmxlPE1lc3NhZ2VbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlck1lc3NhZ2VzRmV0Y2hlci5mZXRjaExpc3QoKTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm1NZXNzYWdlcyhpZDogc3RyaW5nIHwgc3RyaW5nW10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmJhc2VDb25maXJtTWVzc2FnZXNVcGRhdGVyLnVwZGF0ZU9uZSh7IG1lc3NhZ2VzOiBpZCB9KTtcclxuICB9XHJcblxyXG4gIGdldFVzZXIoKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlckZldGNoZXIuZmV0Y2hPbmUoe1xyXG4gICAgICBpZDogdXNlci51c2VyRGF0YS52YWx1ZS51c2VyX2lkLnRvU3RyaW5nKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0VXNlckxhbmd1YWdlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXI+IHtcclxuICAgIHJldHVybiB0aGlzLnNldFVzZXJMYW5ndWFnZVVwZGF0ZXIudXBkYXRlT25lKHsgbGFuZ3VhZ2U6IGlkIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RG9jdW1lbnRzKHR5cGU6IERvY1R5cGUpOiBPYnNlcnZhYmxlPERvY3VtZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLmdldFVzZXIoKS5waXBlKFxyXG4gICAgICBtYXAoKHVzZXI6IFVzZXIpID0+IHVzZXIuZG9jdW1lbnRzIHx8IFtdKSxcclxuICAgICAgbWFwKChkb2NzOiBEb2N1bWVudFtdKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVcclxuICAgICAgICAgID8gZG9jcy5maWx0ZXIoKGRvYzogRG9jdW1lbnQpID0+IGRvYy5kb2NUeXBlID09PSB0eXBlKVxyXG4gICAgICAgICAgOiBkb2NzO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGVkaXRVc2VyKHVzZXI6IE11dGF0aW9uRWRpdFVzZXJBcmdzKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0VXNlclVwZGF0ZXIudXBkYXRlT25lKHVzZXIpLnBpcGUodGFwKCh1c2VyOlVzZXIpPT50aGlzLmZ1bGxVc2VyRGV0YWlscy5hbGxEZXRhaWxzLm5leHQodXNlcikpKTtcclxuICB9XHJcbn1cclxuIl19
@@ -22,6 +22,9 @@ export class BaseWebTokenService {
22
22
  this._jwtToken = value;
23
23
  }
24
24
  }
25
+ get jwtToken() {
26
+ return this._jwtToken || null;
27
+ }
25
28
  _updateTimer() {
26
29
  window.clearTimeout(this.timer);
27
30
  this.timer = null;
@@ -31,10 +34,11 @@ export class BaseWebTokenService {
31
34
  }, 60000);
32
35
  }
33
36
  checkToLogout() {
34
- const a = moment().unix();
35
- const b = this.lastUpdated.unix();
36
- const c = this.timeoutDuration;
37
- if (moment().unix() - this.lastUpdated.unix() > this.timeoutDuration) {
37
+ var _a;
38
+ const current = moment().unix();
39
+ const last = ((_a = this.lastUpdated) === null || _a === void 0 ? void 0 : _a.unix()) || 0;
40
+ const maxTime = this.timeoutDuration;
41
+ if (current - last > maxTime) {
38
42
  this.timer = null;
39
43
  this.lastUpdated = moment();
40
44
  this.modalOpenerService
@@ -53,4 +57,4 @@ export class BaseWebTokenService {
53
57
  }
54
58
  }
55
59
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3Ivc2VydmljZXMvd2VidG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1QyxNQUFNLE9BQWdCLG1CQUFtQjtJQXFCdkMsWUFDVSxrQkFBMEMsRUFDbEQsV0FBNEI7UUFEcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQXJCcEQsMENBQTBDO1FBQ2hDLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsVUFBSyxHQUFXLElBQUksQ0FBQztRQUNyQixvQkFBZSxHQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFNUMscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBbUJwQixJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUM7SUFDcEQsQ0FBQztJQWxCRDs7T0FFRztJQUNILElBQUksZUFBZSxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBYTtRQUN4QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQVNTLFlBQVk7UUFDcEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFUyxhQUFhO1FBQ3JCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUMvQixJQUFJLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNwRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxrQkFBa0I7aUJBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7aUJBQ3RELElBQUksQ0FBQyxDQUFDLE1BQWtCLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxNQUFNLEtBQUssVUFBVSxDQUFDLE1BQU0sRUFBRTtvQkFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUNyQjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDdkI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEJhc2VFbnZpcm9ubWVudCB9IGZyb20gJy4uL2NsYXNzZXMvZW52aXJvbWVudCc7XHJcbmltcG9ydCB7IE1vZGFsVHlwZXMgfSBmcm9tICcuLi9jbGFzc2VzL21vZGFsLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQgeyBMb2dvdXRFbnVtIH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xyXG5pbXBvcnQgeyBCYXNlTW9kYWxPcGVuZXJTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1vcGVuZXIuc2VydmljZSc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVdlYlRva2VuU2VydmljZSB7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB2YXJpYWJsZS1uYW1lXHJcbiAgcHJvdGVjdGVkIF9qd3RUb2tlbjogc3RyaW5nID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgdGltZXI6IG51bWJlciA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIHRpbWVvdXREdXJhdGlvbjogbnVtYmVyID0gNjAgKiA2MDtcclxuICBwcm90ZWN0ZWQgbGFzdFVwZGF0ZWQ6IG1vbWVudC5Nb21lbnQ7XHJcbiAgYXV0b0xvZ291dENvbmZpZyA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0gdmFsdWU6ICBudW1iZXIgLy8gVGhlIHRpbWUgaW4gbWludXRlcyBiZWZvcmUgaHRlIHVzZXIgaXMgYXV0byBsb2dnZWQgb3V0LlxyXG4gICAqL1xyXG4gIHNldCB0aW1lT3V0RHVyYXRpb24odmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy50aW1lb3V0RHVyYXRpb24gPSB2YWx1ZSAqIDYwIC0gNjA7XHJcbiAgfVxyXG5cclxuICBzZXQgand0VG9rZW4odmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLmp3dFRva2VuKSB7XHJcbiAgICAgIHRoaXMuX2p3dFRva2VuID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWxPcGVuZXJTZXJ2aWNlOiBCYXNlTW9kYWxPcGVuZXJTZXJ2aWNlLFxyXG4gICAgZW52aXJvbm1lbnQ6IEJhc2VFbnZpcm9ubWVudFxyXG4gICkge1xyXG4gICAgdGhpcy50aW1lT3V0RHVyYXRpb24gPSBlbnZpcm9ubWVudC5hdXRvTG9nb3V0VGltZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfdXBkYXRlVGltZXIoKSB7XHJcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xyXG4gICAgdGhpcy50aW1lciA9IG51bGw7XHJcbiAgICBjb25zb2xlLmxvZygnUmVzZXR0aW5nIGF1dG8gbG9nIG91dCcpO1xyXG4gICAgdGhpcy50aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jaGVja1RvTG9nb3V0KCk7XHJcbiAgICB9LCA2MDAwMCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2hlY2tUb0xvZ291dCgpIHtcclxuICAgIGNvbnN0IGEgPSBtb21lbnQoKS51bml4KCk7XHJcbiAgICBjb25zdCBiID0gdGhpcy5sYXN0VXBkYXRlZC51bml4KCk7XHJcbiAgICBjb25zdCBjID0gdGhpcy50aW1lb3V0RHVyYXRpb247XHJcbiAgICBpZiAobW9tZW50KCkudW5peCgpIC0gdGhpcy5sYXN0VXBkYXRlZC51bml4KCkgPiB0aGlzLnRpbWVvdXREdXJhdGlvbikge1xyXG4gICAgICB0aGlzLnRpbWVyID0gbnVsbDtcclxuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IG1vbWVudCgpO1xyXG4gICAgICB0aGlzLm1vZGFsT3BlbmVyU2VydmljZVxyXG4gICAgICAgIC5vcGVuKE1vZGFsVHlwZXMuQXV0b0xvZ291dCwgdGhpcy5hdXRvTG9nb3V0Q29uZmlnLCB7fSlcclxuICAgICAgICAudGhlbigobG9nb3V0OiBMb2dvdXRFbnVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAobG9nb3V0ICE9PSBMb2dvdXRFbnVtLkxPR09VVCkge1xyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUaW1lcigpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fand0VG9rZW4gPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fdXBkYXRlVGltZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRIZWFkZXJzKCk6IG9iamVjdDtcclxufVxyXG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3Ivc2VydmljZXMvd2VidG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1QyxNQUFNLE9BQWdCLG1CQUFtQjtJQXlCdkMsWUFDVSxrQkFBMEMsRUFDbEQsV0FBNEI7UUFEcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQXpCcEQsMENBQTBDO1FBQ2hDLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsVUFBSyxHQUFXLElBQUksQ0FBQztRQUNyQixvQkFBZSxHQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFNUMscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBdUJwQixJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUM7SUFDcEQsQ0FBQztJQXRCRDs7T0FFRztJQUNILElBQUksZUFBZSxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBYTtRQUN4QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQVNTLFlBQVk7UUFDcEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFUyxhQUFhOztRQUNyQixNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksR0FBRyxPQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLElBQUksT0FBTSxDQUFDLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNyQyxJQUFJLE9BQU8sR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQjtpQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztpQkFDdEQsSUFBSSxDQUFDLENBQUMsTUFBa0IsRUFBRSxFQUFFO2dCQUMzQixJQUFJLE1BQU0sS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFO29CQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN2QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7Q0FHRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgQmFzZUVudmlyb25tZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9lbnZpcm9tZW50JztcclxuaW1wb3J0IHsgTW9kYWxUeXBlcyB9IGZyb20gJy4uL2NsYXNzZXMvbW9kYWwtdHlwZXMuZW51bSc7XHJcbmltcG9ydCB7IExvZ291dEVudW0gfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XHJcbmltcG9ydCB7IEJhc2VNb2RhbE9wZW5lclNlcnZpY2UgfSBmcm9tICcuL21vZGFsLW9wZW5lci5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlV2ViVG9rZW5TZXJ2aWNlIHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcclxuICBwcm90ZWN0ZWQgX2p3dFRva2VuOiBzdHJpbmcgPSBudWxsO1xyXG4gIHByb3RlY3RlZCB0aW1lcjogbnVtYmVyID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgdGltZW91dER1cmF0aW9uOiBudW1iZXIgPSA2MCAqIDYwO1xyXG4gIHByb3RlY3RlZCBsYXN0VXBkYXRlZDogbW9tZW50Lk1vbWVudDtcclxuICBhdXRvTG9nb3V0Q29uZmlnID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSB2YWx1ZTogIG51bWJlciAvLyBUaGUgdGltZSBpbiBtaW51dGVzIGJlZm9yZSBodGUgdXNlciBpcyBhdXRvIGxvZ2dlZCBvdXQuXHJcbiAgICovXHJcbiAgc2V0IHRpbWVPdXREdXJhdGlvbih2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnRpbWVvdXREdXJhdGlvbiA9IHZhbHVlICogNjAgLSA2MDtcclxuICB9XHJcblxyXG4gIHNldCBqd3RUb2tlbih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuand0VG9rZW4pIHtcclxuICAgICAgdGhpcy5fand0VG9rZW4gPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBqd3RUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9qd3RUb2tlbiB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1vZGFsT3BlbmVyU2VydmljZTogQmFzZU1vZGFsT3BlbmVyU2VydmljZSxcclxuICAgIGVudmlyb25tZW50OiBCYXNlRW52aXJvbm1lbnRcclxuICApIHtcclxuICAgIHRoaXMudGltZU91dER1cmF0aW9uID0gZW52aXJvbm1lbnQuYXV0b0xvZ291dFRpbWU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX3VwZGF0ZVRpbWVyKCkge1xyXG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcclxuICAgIHRoaXMudGltZXIgPSBudWxsO1xyXG4gICAgY29uc29sZS5sb2coJ1Jlc2V0dGluZyBhdXRvIGxvZyBvdXQnKTtcclxuICAgIHRoaXMudGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tUb0xvZ291dCgpO1xyXG4gICAgfSwgNjAwMDApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNoZWNrVG9Mb2dvdXQoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gbW9tZW50KCkudW5peCgpO1xyXG4gICAgY29uc3QgbGFzdCA9IHRoaXMubGFzdFVwZGF0ZWQ/LnVuaXgoKSB8fCAwO1xyXG4gICAgY29uc3QgbWF4VGltZSA9IHRoaXMudGltZW91dER1cmF0aW9uO1xyXG4gICAgaWYgKGN1cnJlbnQgLSBsYXN0ID4gbWF4VGltZSkge1xyXG4gICAgICB0aGlzLnRpbWVyID0gbnVsbDtcclxuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IG1vbWVudCgpO1xyXG4gICAgICB0aGlzLm1vZGFsT3BlbmVyU2VydmljZVxyXG4gICAgICAgIC5vcGVuKE1vZGFsVHlwZXMuQXV0b0xvZ291dCwgdGhpcy5hdXRvTG9nb3V0Q29uZmlnLCB7fSlcclxuICAgICAgICAudGhlbigobG9nb3V0OiBMb2dvdXRFbnVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAobG9nb3V0ICE9PSBMb2dvdXRFbnVtLkxPR09VVCkge1xyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUaW1lcigpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fand0VG9rZW4gPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fdXBkYXRlVGltZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRIZWFkZXJzKCk6IG9iamVjdDtcclxufVxyXG4iXX0=