@sabstravtech/obtservices 0.0.22051001 → 0.1.6161600

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 (166) hide show
  1. package/angular/components/basket-panel.d.ts +1 -0
  2. package/angular/fetchers.d.ts +5 -0
  3. package/angular/lib/vendor/fetchers/get-companies.fetcher.d.ts +7 -0
  4. package/angular/lib/vendor/fetchers/get-company.fetcher.d.ts +7 -0
  5. package/angular/lib/vendor/fetchers/get-office.fetcher.d.ts +7 -0
  6. package/angular/lib/vendor/fetchers/get-user-default-mi-value.fetcher.d.ts +7 -0
  7. package/angular/lib/vendor/fetchers/get-user-guests.fetcher.d.ts +7 -0
  8. package/angular/lib/vendor/services/enterprise-basket.service.d.ts +4 -3
  9. package/angular/lib/vendor/services/logon.service.d.ts +2 -1
  10. package/angular/lib/vendor/services/user.service.d.ts +9 -3
  11. package/angular/lib/vendor/types/graphql.angular.types.d.ts +614 -550
  12. package/angular/lib/vendor/updaters/create-guest-updater.d.ts +6 -0
  13. package/angular/sabstravtech-obtservices-angular.metadata.json +1 -1
  14. package/angular/updaters.d.ts +1 -0
  15. package/base/fetchers.d.ts +5 -0
  16. package/base/lib/vendor/classes/base-enterprise.d.ts +7 -1
  17. package/base/lib/vendor/classes/basket-info-mi-details.impl.d.ts +2 -0
  18. package/base/lib/vendor/classes/bookable-basket.d.ts +2 -0
  19. package/base/lib/vendor/classes/cabhire-enterprise-search.d.ts +9 -4
  20. package/base/lib/vendor/classes/carhire-enterprise-search.d.ts +12 -4
  21. package/base/lib/vendor/classes/eurostar-enterprise-search.d.ts +14 -7
  22. package/base/lib/vendor/classes/fast-track-enterprise-search.d.ts +5 -4
  23. package/base/lib/vendor/classes/flight-enterprise-search.d.ts +16 -5
  24. package/base/lib/vendor/classes/helpers.d.ts +6 -1
  25. package/base/lib/vendor/classes/hotel-enterprise-search.d.ts +10 -3
  26. package/base/lib/vendor/classes/irl-enterprise-search.d.ts +13 -8
  27. package/base/lib/vendor/classes/lounges-enterprise-search.d.ts +5 -4
  28. package/base/lib/vendor/classes/management-info-and-valid.d.ts +3 -3
  29. package/base/lib/vendor/classes/modal-types.enum.d.ts +1 -0
  30. package/base/lib/vendor/classes/parking-enterprise-search.d.ts +5 -4
  31. package/base/lib/vendor/classes/rail-enterprise-search.d.ts +10 -8
  32. package/base/lib/vendor/classes/supplementary-booking-info-impl.d.ts +5 -3
  33. package/base/lib/vendor/classes/user-favourite.enum.d.ts +1 -0
  34. package/base/lib/vendor/fetchers/eurostar-quote.fetcher.d.ts +3 -1
  35. package/base/lib/vendor/fetchers/flight-quote.fetcher.d.ts +1 -0
  36. package/base/lib/vendor/fetchers/get-companies.fetcher.d.ts +21 -0
  37. package/base/lib/vendor/fetchers/get-company.fetcher.d.ts +20 -0
  38. package/base/lib/vendor/fetchers/get-office.fetcher.d.ts +20 -0
  39. package/base/lib/vendor/fetchers/get-user-default-mi-value.fetcher.d.ts +21 -0
  40. package/base/lib/vendor/fetchers/get-user-guests.fetcher.d.ts +20 -0
  41. package/base/lib/vendor/fetchers/search-users-can-book-for-fetcher.d.ts +2 -2
  42. package/base/lib/vendor/interfaces/Icabhire-enterprise-search.d.ts +2 -0
  43. package/base/lib/vendor/interfaces/Icarhire-enterprise-search.d.ts +5 -2
  44. package/base/lib/vendor/interfaces/Ienterprise-basket.service.d.ts +8 -6
  45. package/base/lib/vendor/interfaces/Ieurostar-enterprise-search.d.ts +1 -0
  46. package/base/lib/vendor/interfaces/Ifast-track-enterprise-search.d.ts +7 -5
  47. package/base/lib/vendor/interfaces/Iflight-enterprise-search.d.ts +8 -1
  48. package/base/lib/vendor/interfaces/Ihotel-enterprise-search.d.ts +8 -2
  49. package/base/lib/vendor/interfaces/Iirl-enterprise-search.d.ts +8 -7
  50. package/base/lib/vendor/interfaces/Ilounges-enterprise-search.d.ts +1 -0
  51. package/base/lib/vendor/interfaces/Imybookings.service.d.ts +3 -2
  52. package/base/lib/vendor/interfaces/Iparking-enterprise-search.d.ts +1 -0
  53. package/base/lib/vendor/interfaces/Irail-enterprise-search.d.ts +5 -2
  54. package/base/lib/vendor/interfaces/Isearch.service.d.ts +5 -2
  55. package/base/lib/vendor/interfaces/Isupplementary-booking-info-impl.d.ts +3 -2
  56. package/base/lib/vendor/interfaces/Iuser.service.d.ts +11 -3
  57. package/base/lib/vendor/interfaces/car-hire-search-arg.interface.d.ts +2 -3
  58. package/base/lib/vendor/interfaces/rail-basket-item.interface.d.ts +2 -0
  59. package/base/lib/vendor/interfaces/summary-interface.d.ts +6 -0
  60. package/base/lib/vendor/interfaces/user.data.d.ts +1 -0
  61. package/base/lib/vendor/models/traveller.object.d.ts +12 -2
  62. package/base/lib/vendor/services/enterprise-basket.service.d.ts +22 -9
  63. package/base/lib/vendor/services/logon.service.d.ts +5 -1
  64. package/base/lib/vendor/services/my-bookings.service.d.ts +3 -2
  65. package/base/lib/vendor/services/search.service.d.ts +27 -23
  66. package/base/lib/vendor/services/url.service.d.ts +2 -0
  67. package/base/lib/vendor/services/user.service.d.ts +36 -5
  68. package/base/lib/vendor/services/webtoken.service.d.ts +6 -0
  69. package/base/lib/vendor/types/graphql.types.d.ts +581 -549
  70. package/base/lib/vendor/types/types.d.ts +48 -6
  71. package/base/lib/vendor/updaters/create-guest-updater.d.ts +19 -0
  72. package/base/sabstravtech-obtservices-base.d.ts +1 -1
  73. package/base/sabstravtech-obtservices-base.metadata.json +1 -1
  74. package/base/updaters.d.ts +1 -0
  75. package/bundles/sabstravtech-obtservices-angular.umd.js +541 -252
  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 +4080 -1471
  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/components/basket-panel.js +16 -7
  84. package/esm2015/angular/fetchers.js +6 -1
  85. package/esm2015/angular/lib/vendor/fetchers/get-companies.fetcher.js +25 -0
  86. package/esm2015/angular/lib/vendor/fetchers/get-company.fetcher.js +25 -0
  87. package/esm2015/angular/lib/vendor/fetchers/get-office.fetcher.js +25 -0
  88. package/esm2015/angular/lib/vendor/fetchers/get-user-default-mi-value.fetcher.js +25 -0
  89. package/esm2015/angular/lib/vendor/fetchers/get-user-guests.fetcher.js +25 -0
  90. package/esm2015/angular/lib/vendor/services/enterprise-basket.service.js +24 -21
  91. package/esm2015/angular/lib/vendor/services/http-call.service.js +1 -1
  92. package/esm2015/angular/lib/vendor/services/logon.service.js +8 -5
  93. package/esm2015/angular/lib/vendor/services/search.service.js +1 -1
  94. package/esm2015/angular/lib/vendor/services/ticket-queue.service.js +4 -1
  95. package/esm2015/angular/lib/vendor/services/user.service.js +28 -10
  96. package/esm2015/angular/lib/vendor/services/webtoken.service.js +6 -2
  97. package/esm2015/angular/lib/vendor/types/graphql.angular.types.js +1023 -1220
  98. package/esm2015/angular/lib/vendor/updaters/create-guest-updater.js +22 -0
  99. package/esm2015/angular/updaters.js +2 -1
  100. package/esm2015/base/fetchers.js +6 -1
  101. package/esm2015/base/lib/vendor/classes/base-enterprise.js +12 -3
  102. package/esm2015/base/lib/vendor/classes/basket-info-mi-details.impl.js +14 -1
  103. package/esm2015/base/lib/vendor/classes/bookable-basket.js +27 -8
  104. package/esm2015/base/lib/vendor/classes/cabhire-enterprise-search.js +219 -18
  105. package/esm2015/base/lib/vendor/classes/carhire-enterprise-search.js +235 -67
  106. package/esm2015/base/lib/vendor/classes/eurostar-enterprise-search.js +462 -49
  107. package/esm2015/base/lib/vendor/classes/fast-track-enterprise-search.js +37 -13
  108. package/esm2015/base/lib/vendor/classes/flight-enterprise-search.js +281 -62
  109. package/esm2015/base/lib/vendor/classes/helpers.js +32 -3
  110. package/esm2015/base/lib/vendor/classes/hotel-enterprise-search.js +228 -54
  111. package/esm2015/base/lib/vendor/classes/irl-enterprise-search.js +221 -46
  112. package/esm2015/base/lib/vendor/classes/lounges-enterprise-search.js +101 -14
  113. package/esm2015/base/lib/vendor/classes/management-info-and-valid.js +67 -40
  114. package/esm2015/base/lib/vendor/classes/modal-types.enum.js +2 -1
  115. package/esm2015/base/lib/vendor/classes/parking-enterprise-search.js +146 -11
  116. package/esm2015/base/lib/vendor/classes/rail-enterprise-search.js +210 -25
  117. package/esm2015/base/lib/vendor/classes/supplementary-booking-info-impl.js +58 -4
  118. package/esm2015/base/lib/vendor/classes/user-favourite.enum.js +2 -1
  119. package/esm2015/base/lib/vendor/data/countries.json +484 -242
  120. package/esm2015/base/lib/vendor/fetchers/eurostar-quote.fetcher.js +3 -3
  121. package/esm2015/base/lib/vendor/fetchers/flight-quote.fetcher.js +3 -3
  122. package/esm2015/base/lib/vendor/fetchers/get-companies.fetcher.js +11 -0
  123. package/esm2015/base/lib/vendor/fetchers/get-company.fetcher.js +11 -0
  124. package/esm2015/base/lib/vendor/fetchers/get-office.fetcher.js +11 -0
  125. package/esm2015/base/lib/vendor/fetchers/get-user-default-mi-value.fetcher.js +10 -0
  126. package/esm2015/base/lib/vendor/fetchers/get-user-guests.fetcher.js +11 -0
  127. package/esm2015/base/lib/vendor/fetchers/search-users-can-book-for-fetcher.js +1 -1
  128. package/esm2015/base/lib/vendor/interfaces/Icabhire-enterprise-search.js +1 -1
  129. package/esm2015/base/lib/vendor/interfaces/Icarhire-enterprise-search.js +1 -1
  130. package/esm2015/base/lib/vendor/interfaces/Ienterprise-basket.service.js +1 -1
  131. package/esm2015/base/lib/vendor/interfaces/Ieurostar-enterprise-search.js +1 -1
  132. package/esm2015/base/lib/vendor/interfaces/Ifast-track-enterprise-search.js +1 -1
  133. package/esm2015/base/lib/vendor/interfaces/Iflight-enterprise-search.js +1 -1
  134. package/esm2015/base/lib/vendor/interfaces/Ihotel-enterprise-search.js +2 -1
  135. package/esm2015/base/lib/vendor/interfaces/Iirl-enterprise-search.js +1 -1
  136. package/esm2015/base/lib/vendor/interfaces/Ilounges-enterprise-search.js +1 -1
  137. package/esm2015/base/lib/vendor/interfaces/Imybookings.service.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/Isupplementary-booking-info-impl.js +1 -1
  142. package/esm2015/base/lib/vendor/interfaces/Iuser.service.js +1 -1
  143. package/esm2015/base/lib/vendor/interfaces/car-hire-search-arg.interface.js +1 -1
  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 +21 -3
  148. package/esm2015/base/lib/vendor/services/enterprise-basket.service.js +129 -43
  149. package/esm2015/base/lib/vendor/services/http-call.service.js +1 -1
  150. package/esm2015/base/lib/vendor/services/logon.service.js +40 -3
  151. package/esm2015/base/lib/vendor/services/my-bookings.service.js +3 -2
  152. package/esm2015/base/lib/vendor/services/requires-reason.service.js +14 -10
  153. package/esm2015/base/lib/vendor/services/search.service.js +100 -117
  154. package/esm2015/base/lib/vendor/services/url.service.js +3 -1
  155. package/esm2015/base/lib/vendor/services/user.service.js +90 -12
  156. package/esm2015/base/lib/vendor/services/webtoken.service.js +14 -1
  157. package/esm2015/base/lib/vendor/types/graphql.types.js +21 -2
  158. package/esm2015/base/lib/vendor/types/types.js +32 -14
  159. package/esm2015/base/lib/vendor/updaters/create-guest-updater.js +11 -0
  160. package/esm2015/base/sabstravtech-obtservices-base.js +1 -1
  161. package/esm2015/base/updaters.js +2 -1
  162. package/fesm2015/sabstravtech-obtservices-angular.js +1254 -1332
  163. package/fesm2015/sabstravtech-obtservices-angular.js.map +1 -1
  164. package/fesm2015/sabstravtech-obtservices-base.js +3324 -839
  165. package/fesm2015/sabstravtech-obtservices-base.js.map +1 -1
  166. package/package.json +1 -1
@@ -8,6 +8,8 @@ export var URLS;
8
8
  URLS["CONFIRMA_INFO_URL"] = "/confermainfo/Info.aspx?mode=hotel&key=MICROSSABS&id=";
9
9
  URLS["RECOVER_PASSWORD_URL"] = "password/getResetToken";
10
10
  URLS["RESET_PASSWORD"] = "password/resetByToken";
11
+ URLS["BECOME_USER"] = "startUserSupport";
12
+ URLS["END_BECOME_USER"] = "endUserSupport";
11
13
  URLS["ADMIN_USER_PANEL"] = "https://admin-staging.ctmlightning.co.uk/user";
12
14
  })(URLS || (URLS = {}));
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYnRzZXJ2aWNlcy9iYXNlL3NyYy9saWIvdmVuZG9yL3NlcnZpY2VzL3VybC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLElBVVg7QUFWRCxXQUFZLElBQUk7SUFDZCxtQ0FBMkIsQ0FBQTtJQUMzQiw2QkFBcUIsQ0FBQTtJQUNyQixnQ0FBd0IsQ0FBQTtJQUN4QixzRkFBOEUsQ0FBQTtJQUM5RSxvRkFBNEUsQ0FBQTtJQUM1RSxtRkFBMkUsQ0FBQTtJQUMzRSx1REFBK0MsQ0FBQTtJQUMvQyxnREFBd0MsQ0FBQTtJQUN4QywwRUFBZ0UsQ0FBQTtBQUNsRSxDQUFDLEVBVlcsSUFBSSxLQUFKLElBQUksUUFVZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VFbnZpcm9ubWVudCB9IGZyb20gJy4uL2NsYXNzZXMvZW52aXJvbWVudCc7XHJcblxyXG5leHBvcnQgZW51bSBVUkxTIHtcclxuICBBY2Nlc3NUb2tlbiA9ICdhY2Nlc3NUb2tlbicsXHJcbiAgTE9HT1VUX1VSTCA9ICdsb2dvdXQnLFxyXG4gIFJlZnJlc2ggPSAncmVmcmVzaFRva2VuJyxcclxuICBDT05GRVJNQV9USFVNQk5BSUxfVVJMID0gJ2h0dHBzOi8vc3NsLmNvbmZlcm1hLmNvbS9JbWFnZXMvUHJvcGVydHlUaHVtYm5haWxzLycsXHJcbiAgQ09ORklSTUFfUEhPVE9fVVJMID0gJy9jb25mZXJtYWluZm8vSW5mby5hc3B4P21vZGU9bWVkaWEma2V5PU1JQ1JPU1NBQlMmaWQ9JyxcclxuICBDT05GSVJNQV9JTkZPX1VSTCA9ICcvY29uZmVybWFpbmZvL0luZm8uYXNweD9tb2RlPWhvdGVsJmtleT1NSUNST1NTQUJTJmlkPScsXHJcbiAgUkVDT1ZFUl9QQVNTV09SRF9VUkwgPSAncGFzc3dvcmQvZ2V0UmVzZXRUb2tlbicsXHJcbiAgUkVTRVRfUEFTU1dPUkQgPSAncGFzc3dvcmQvcmVzZXRCeVRva2VuJyxcclxuICBBRE1JTl9VU0VSX1BBTkVMPVwiaHR0cHM6Ly9hZG1pbi1zdGFnaW5nLmN0bWxpZ2h0bmluZy5jby51ay91c2VyXCJcclxufVxyXG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYnRzZXJ2aWNlcy9iYXNlL3NyYy9saWIvdmVuZG9yL3NlcnZpY2VzL3VybC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLElBWVg7QUFaRCxXQUFZLElBQUk7SUFDZCxtQ0FBMkIsQ0FBQTtJQUMzQiw2QkFBcUIsQ0FBQTtJQUNyQixnQ0FBd0IsQ0FBQTtJQUN4QixzRkFBOEUsQ0FBQTtJQUM5RSxvRkFBNEUsQ0FBQTtJQUM1RSxtRkFBMkUsQ0FBQTtJQUMzRSx1REFBK0MsQ0FBQTtJQUMvQyxnREFBd0MsQ0FBQTtJQUN4Qyx3Q0FBZ0MsQ0FBQTtJQUNoQywwQ0FBa0MsQ0FBQTtJQUNsQywwRUFBZ0UsQ0FBQTtBQUNsRSxDQUFDLEVBWlcsSUFBSSxLQUFKLElBQUksUUFZZiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuZXhwb3J0IGVudW0gVVJMUyB7XHJcbiAgQWNjZXNzVG9rZW4gPSAnYWNjZXNzVG9rZW4nLFxyXG4gIExPR09VVF9VUkwgPSAnbG9nb3V0JyxcclxuICBSZWZyZXNoID0gJ3JlZnJlc2hUb2tlbicsXHJcbiAgQ09ORkVSTUFfVEhVTUJOQUlMX1VSTCA9ICdodHRwczovL3NzbC5jb25mZXJtYS5jb20vSW1hZ2VzL1Byb3BlcnR5VGh1bWJuYWlscy8nLFxyXG4gIENPTkZJUk1BX1BIT1RPX1VSTCA9ICcvY29uZmVybWFpbmZvL0luZm8uYXNweD9tb2RlPW1lZGlhJmtleT1NSUNST1NTQUJTJmlkPScsXHJcbiAgQ09ORklSTUFfSU5GT19VUkwgPSAnL2NvbmZlcm1haW5mby9JbmZvLmFzcHg/bW9kZT1ob3RlbCZrZXk9TUlDUk9TU0FCUyZpZD0nLFxyXG4gIFJFQ09WRVJfUEFTU1dPUkRfVVJMID0gJ3Bhc3N3b3JkL2dldFJlc2V0VG9rZW4nLFxyXG4gIFJFU0VUX1BBU1NXT1JEID0gJ3Bhc3N3b3JkL3Jlc2V0QnlUb2tlbicsXHJcbiAgQkVDT01FX1VTRVIgPSAnc3RhcnRVc2VyU3VwcG9ydCcsXHJcbiAgRU5EX0JFQ09NRV9VU0VSID0gJ2VuZFVzZXJTdXBwb3J0JyxcclxuICBBRE1JTl9VU0VSX1BBTkVMPVwiaHR0cHM6Ly9hZG1pbi1zdGFnaW5nLmN0bWxpZ2h0bmluZy5jby51ay91c2VyXCJcclxufVxyXG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { __awaiter } from "tslib";
1
2
  import { BehaviorSubject } from 'rxjs';
2
3
  import { map, take, tap } from 'rxjs/operators';
3
4
  import { Suppliers } from '../classes/user-favourite.enum';
@@ -6,16 +7,22 @@ import { BookerType } from '../types/graphql.types';
6
7
  export const USER_SIGNEDOUT = 'USER_SIGNEDOUT';
7
8
  export const USER_SIGNEDIN = 'USER_SIGNEDIN';
8
9
  export class BaseUserService {
9
- constructor(getUserFetcher, userUiConfigsFetcher, userProductsFetcher, userMessagesFetcher, baseConfirmMessagesUpdater, setUserLanguageUpdater, editUserUpdater, storageService, helpers) {
10
+ constructor(getUserFetcher, userUiConfigsFetcher, userProductsFetcher, userMessagesFetcher, baseConfirmMessagesUpdater, getCompaniesFetcher, getCompanyFetcher, setUserLanguageUpdater, editUserUpdater, createGuestUpdater, getUserGuestsFetcher, getOfficeFetcher, storageService, helpers, webTokenService) {
10
11
  this.getUserFetcher = getUserFetcher;
11
12
  this.userUiConfigsFetcher = userUiConfigsFetcher;
12
13
  this.userProductsFetcher = userProductsFetcher;
13
14
  this.userMessagesFetcher = userMessagesFetcher;
14
15
  this.baseConfirmMessagesUpdater = baseConfirmMessagesUpdater;
16
+ this.getCompaniesFetcher = getCompaniesFetcher;
17
+ this.getCompanyFetcher = getCompanyFetcher;
15
18
  this.setUserLanguageUpdater = setUserLanguageUpdater;
16
19
  this.editUserUpdater = editUserUpdater;
20
+ this.createGuestUpdater = createGuestUpdater;
21
+ this.getUserGuestsFetcher = getUserGuestsFetcher;
22
+ this.getOfficeFetcher = getOfficeFetcher;
17
23
  this.storageService = storageService;
18
24
  this.helpers = helpers;
25
+ this.webTokenService = webTokenService;
19
26
  this.fullUserDetails = {
20
27
  bookingAllowedFor: '',
21
28
  messages: new BehaviorSubject(null),
@@ -26,13 +33,43 @@ export class BaseUserService {
26
33
  allDetails: new BehaviorSubject(null)
27
34
  };
28
35
  this.changeUser = new BehaviorSubject(null);
36
+ this._bobo = null;
37
+ this.invokedUserUpdater = webTokenService.getInvokedUserObservable();
38
+ }
39
+ setBobo(value) {
40
+ var _a;
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ if (!value || value.id) {
43
+ if (value === this._bobo || ((value === null || value === void 0 ? void 0 : value.id) && (value === null || value === void 0 ? void 0 : value.id) === ((_a = this._bobo) === null || _a === void 0 ? void 0 : _a.id))) {
44
+ return true;
45
+ }
46
+ this._bobo = value;
47
+ this.invokedUserUpdater.next(value || null);
48
+ return this.updateServices();
49
+ }
50
+ return false;
51
+ });
52
+ }
53
+ get bobo() {
54
+ return this._bobo;
55
+ }
56
+ updateServices() {
57
+ return new Promise((resolve, reject) => {
58
+ this.userProductsFetcher.fetchKeyedObjectArray('type').subscribe((result2) => {
59
+ this.fullUserDetails.userServices.next(result2);
60
+ this.checkEmitUser();
61
+ }, (err) => {
62
+ resolve(false);
63
+ }, () => resolve(true));
64
+ });
29
65
  }
30
66
  setUser(user_data) {
31
67
  const userdata = this.fullUserDetails.userData.value;
32
68
  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()
69
+ if (user_data === null || user_data === void 0 ? void 0 : user_data.user_id) {
70
+ this.getUserFetcher
71
+ .fetchOne({
72
+ id: user_data.user_id.toString()
36
73
  })
37
74
  .pipe(take(1))
38
75
  .subscribe((user) => {
@@ -58,10 +95,11 @@ export class BaseUserService {
58
95
  }, (error) => {
59
96
  console.error(error);
60
97
  });
61
- this.fullUserDetails.travllerObject.next(TravellerObject.makeTravellerObjectFromUser(user_data));
98
+ this.fullUserDetails.travllerObject.next(TravellerObject.makeTravellerObjectFromUserData(user_data));
62
99
  }
63
100
  if (user_data === null || user_data === void 0 ? void 0 : user_data.user_id) {
64
- this.getUserFetcher.fetchOne({
101
+ this.getUserFetcher
102
+ .fetchOne({
65
103
  id: user_data === null || user_data === void 0 ? void 0 : user_data.user_id.toString()
66
104
  })
67
105
  .pipe(take(1))
@@ -73,6 +111,9 @@ export class BaseUserService {
73
111
  this.fullUserDetails.userData.next(user_data);
74
112
  this.storageService.setSessionItem('lightning_user_data', user_data);
75
113
  }
114
+ canBookGuest() {
115
+ return this.fullUserDetails.allDetails.value.canBookGuest;
116
+ }
76
117
  checkEmitUser() {
77
118
  if (!!this.fullUserDetails.userConfigs.value &&
78
119
  !!this.fullUserDetails.userData.value &&
@@ -235,6 +276,12 @@ export class BaseUserService {
235
276
  userIsCompanyAdmin() {
236
277
  return this.fullUserDetails.userData.value.company_admin;
237
278
  }
279
+ userIsTmcAdmin() {
280
+ return this.fullUserDetails.userData.value.tmc_admin;
281
+ }
282
+ userTmcId() {
283
+ return this.fullUserDetails.userData.value.tmc_id;
284
+ }
238
285
  isSelfBook() {
239
286
  return (this.fullUserDetails.userData.value.booker_type === BookerType.SelfBook);
240
287
  }
@@ -266,24 +313,55 @@ export class BaseUserService {
266
313
  confirmMessages(id) {
267
314
  return this.baseConfirmMessagesUpdater.updateOne({ messages: id });
268
315
  }
269
- getUser() {
316
+ userIsRoot() {
317
+ return this.fullUserDetails.userData.value.booker_type === BookerType.Root;
318
+ }
319
+ userIsSupportAgent() {
320
+ return !!this.fullUserDetails.userData.value.support_agent;
321
+ }
322
+ getUserCompanies(query = null) {
323
+ return query
324
+ ? this.getCompaniesFetcher.fetchList({ query }).pipe(take(1))
325
+ : this.getCompaniesFetcher.fetchList().pipe(take(1));
326
+ }
327
+ getCompanyById(id, withUsers = false) {
328
+ return this.getCompanyFetcher.fetchOne({ id }).pipe(take(1));
329
+ }
330
+ getUserCompany() {
331
+ return this.getCompanyById(this.fullUserDetails.userData.value.company_id.toString());
332
+ }
333
+ getUser(userId) {
270
334
  const user = this.getfullUserDetails();
271
335
  return this.getUserFetcher.fetchOne({
272
- id: user.userData.value.user_id.toString()
336
+ id: userId ? userId : user.userData.value.user_id.toString()
273
337
  });
274
338
  }
275
339
  setUserLanguage(id) {
276
340
  return this.setUserLanguageUpdater.updateOne({ language: id });
277
341
  }
278
- getDocuments(type) {
279
- return this.getUser().pipe(map((user) => user.documents || []), map((docs) => {
342
+ getDocuments(type, userId) {
343
+ return this.getUser(userId).pipe(map((user) => user.documents || []), map((docs) => {
280
344
  return type
281
345
  ? docs.filter((doc) => doc.docType === type)
282
346
  : docs;
283
347
  }));
284
348
  }
285
349
  editUser(user) {
286
- return this.editUserUpdater.updateOne(user).pipe(tap((user) => this.fullUserDetails.allDetails.next(user)));
350
+ return this.editUserUpdater
351
+ .updateOne(user)
352
+ .pipe(tap((user) => this.fullUserDetails.allDetails.next(user)));
353
+ }
354
+ createGuest(newGuest) {
355
+ return this.createGuestUpdater.updateOne(newGuest).pipe(take(1));
356
+ }
357
+ getUserGuests() {
358
+ return this.getUserGuestsFetcher.fetchList();
359
+ }
360
+ canInvokeUser() {
361
+ return this.fullUserDetails.allDetails.value.canInvokeUser;
362
+ }
363
+ getOffice() {
364
+ return this.getOfficeFetcher.fetchList();
287
365
  }
288
366
  }
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
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2J0c2VydmljZXMvYmFzZS9zcmMvbGliL3ZlbmRvci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEQsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQStCM0UsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFFTCxVQUFVLEVBV1gsTUFBTSx3QkFBd0IsQ0FBQztBQUdoQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQThCN0MsTUFBTSxPQUFPLGVBQWU7SUE2QjFCLFlBQ1UsY0FBd0MsRUFDeEMsb0JBQW9ELEVBQ3BELG1CQUFrRCxFQUNsRCxtQkFBa0QsRUFDbEQsMEJBQTZELEVBQzdELG1CQUFtRCxFQUNuRCxpQkFBZ0QsRUFDaEQsc0JBQXlELEVBQ3pELGVBQTJDLEVBQzNDLGtCQUFpRCxFQUNqRCxvQkFBcUQsRUFDckQsZ0JBQTZDLEVBQzdDLGNBQWtDLEVBQ2xDLE9BQTJCLEVBQzNCLGVBQW9DO1FBZHBDLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN4Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWdDO1FBQ3BELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBK0I7UUFDbEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUErQjtRQUNsRCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQW1DO1FBQzdELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FB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aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4uL2NsYXNzZXMvaGVscGVycyc7XHJcblxyXG5pbXBvcnQgeyBTdXBwbGllcnMsIFVzZXJGYXZvcnVyaXRlIH0gZnJvbSAnLi4vY2xhc3Nlcy91c2VyLWZhdm91cml0ZS5lbnVtJztcclxuaW1wb3J0IHtcclxuICBCYXNlVXNlck1lc3NhZ2VzRmV0Y2hlcixcclxuICBVc2VyTWVzc2FnZUZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vZmV0Y2hlcnMvdXNlci1tZXNzYWdlLmZldGNoZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VVc2VyUHJvZHVjdHNGZXRjaGVyLFxyXG4gIFVzZXJQcm9kdWN0c0ZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vZmV0Y2hlcnMvdXNlci1wcm9kdWN0cy1mZXRjaGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlR2V0Q29tcGFuaWVzRmV0Y2hlcixcclxuICBDb21wYW5pZXNGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL2dldC1jb21wYW5pZXMuZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUdldENvbXBhbnlGZXRjaGVyLFxyXG4gIENvbXBhbnlGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL2dldC1jb21wYW55LmZldGNoZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VVc2VyVWlDb25maWdzRmV0Y2hlcixcclxuICBVc2VyVWlDb25maWdzRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLXVpLWNvbmZpZ3MtZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUdldFVzZXJGZXRjaGVyLFxyXG4gIFNlYXJjaEdldFVzZXJGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL3VzZXItZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgRnVsbFVzZXJEZXRhaWxzLFxyXG4gIFVzZXJTZXJ2aWNlSW50ZXJmYWNlLFxyXG4gIFVzZXJTZXJ2aWNlc1xyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSXVzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy91c2VyLmRhdGEnO1xyXG5pbXBvcnQgeyBUcmF2ZWxsZXIsIFRyYXZlbGxlck9iamVjdCB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcclxuaW1wb3J0IHtcclxuICBEb2N1bWVudCxcclxuICBCb29rZXJUeXBlLFxyXG4gIENvbXBhbnksXHJcbiAgTWVzc2FnZSxcclxuICBNdXRhdGlvbkVkaXRVc2VyQXJncyxcclxuICBTZXJ2aWNlLFxyXG4gIFNlcnZpY2VUeXBlLFxyXG4gIFVzZXIsXHJcbiAgRG9jVHlwZSxcclxuICBNdXRhdGlvbkNyZWF0ZUd1ZXN0QXJncyxcclxuICBHdWVzdCxcclxuICBPZmZpY2VcclxufSBmcm9tICcuLi90eXBlcy9ncmFwaHFsLnR5cGVzJztcclxuaW1wb3J0IHsgU2VydmljZVByb3ZpZGVyLCBVbnBhY2tlZCwgVXNlclVpQ29uZmlnc1Jlc3VsdCB9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5leHBvcnQgY29uc3QgVVNFUl9TSUdORURPVVQgPSAnVVNFUl9TSUdORURPVVQnO1xyXG5leHBvcnQgY29uc3QgVVNFUl9TSUdORURJTiA9ICdVU0VSX1NJR05FRElOJztcclxuaW1wb3J0IHtcclxuICBCYXNlQ29uZmlybU1lc3NhZ2VzVXBkYXRlcixcclxuICBDb25maXJtTWVzc2FnZXNGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL3VwZGF0ZXJzL2NvbmZpcm0tbWVzc2FnZXMtdXBkYXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVNldFVzZXJMYW5ndWFnZVVwZGF0ZXIsXHJcbiAgU2V0VXNlckxhbmd1YWdlRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9zZXQtdXNlci1sYW5ndWFnZS11cGRhdGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlRWRpdFVzZXJVcGRhdGVyLFxyXG4gIEVkaXRVc2VyRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9lZGl0LXVzZXItdXBkYXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG4gIEJhc2VDcmVhdGVHdWVzdFVwZGF0ZXIsXHJcbiAgQ3JlYXRlR3Vlc3RVcGRhdGVyVHlwZVxyXG59IGZyb20gJy4uL3VwZGF0ZXJzL2NyZWF0ZS1ndWVzdC11cGRhdGVyJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQmFzZUdldFVzZXJHdWVzdHNGZXRjaGVyLFxyXG4gIEdldFVzZXJHdWVzdHNGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL2dldC11c2VyLWd1ZXN0cy5mZXRjaGVyJztcclxuaW1wb3J0IHsgQmFzZVdlYlRva2VuU2VydmljZSB9IGZyb20gJy4vd2VidG9rZW4uc2VydmljZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEJhc2VHZXRPZmZpY2VGZXRjaGVyLFxyXG4gIEdldE9mZmljZUZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vZmV0Y2hlcnMvZ2V0LW9mZmljZS5mZXRjaGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlVXNlclNlcnZpY2U8XHJcbiAgR1VfUSBleHRlbmRzIFNlYXJjaEdldFVzZXJGZXRjaGVyVHlwZSxcclxuICBVQ19RIGV4dGVuZHMgVXNlclVpQ29uZmlnc0ZldGNoZXJUeXBlLFxyXG4gIFVTX1EgZXh0ZW5kcyBVc2VyUHJvZHVjdHNGZXRjaGVyVHlwZSxcclxuICBVTV9RIGV4dGVuZHMgVXNlck1lc3NhZ2VGZXRjaGVyVHlwZSxcclxuICBDTVVfUSBleHRlbmRzIENvbmZpcm1NZXNzYWdlc0ZldGNoZXJUeXBlLFxyXG4gIEdDRl9RIGV4dGVuZHMgQ29tcGFuaWVzRmV0Y2hlclR5cGUsXHJcbiAgR1NDRl9RIGV4dGVuZHMgQ29tcGFueUZldGNoZXJUeXBlLFxyXG4gIFNMVV9RIGV4dGVuZHMgU2V0VXNlckxhbmd1YWdlRmV0Y2hlclR5cGUsXHJcbiAgRVVVX1EgZXh0ZW5kcyBFZGl0VXNlckZldGNoZXJUeXBlLFxyXG4gIENHVV9RIGV4dGVuZHMgQ3JlYXRlR3Vlc3RVcGRhdGVyVHlwZSxcclxuICBHVUdfUSBleHRlbmRzIEdldFVzZXJHdWVzdHNGZXRjaGVyVHlwZSxcclxuICBHT0ZfUSBleHRlbmRzIEdldE9mZmljZUZldGNoZXJUeXBlXHJcbj4gaW1wbGVtZW50cyBVc2VyU2VydmljZUludGVyZmFjZVxyXG57XHJcbiAgcHVibGljIGZ1bGxVc2VyRGV0YWlsczogRnVsbFVzZXJEZXRhaWxzID0ge1xyXG4gICAgYm9va2luZ0FsbG93ZWRGb3I6ICcnLFxyXG4gICAgbWVzc2FnZXM6IG5ldyBCZWhhdmlvclN1YmplY3Q8TWVzc2FnZVtdPihudWxsKSxcclxuICAgIHRyYXZsbGVyT2JqZWN0OiBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYXZlbGxlcj4obnVsbCksXHJcbiAgICB1c2VyQ29uZmlnczogbmV3IEJlaGF2aW9yU3ViamVjdDx7XHJcbiAgICAgIFtrZXk6IHN0cmluZ106IFVucGFja2VkPFVzZXJVaUNvbmZpZ3NSZXN1bHQ+O1xyXG4gICAgfT4obnVsbCksXHJcbiAgICB1c2VyRGF0YTogbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyRGF0YT4obnVsbCksXHJcbiAgICB1c2VyU2VydmljZXM6IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlclNlcnZpY2VzPihudWxsKSxcclxuICAgIGFsbERldGFpbHM6IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlcj4obnVsbClcclxuICB9O1xyXG4gIGNoYW5nZVVzZXI6IEJlaGF2aW9yU3ViamVjdDxGdWxsVXNlckRldGFpbHM+ID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8RnVsbFVzZXJEZXRhaWxzPihudWxsKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdldFVzZXJGZXRjaGVyOiBCYXNlR2V0VXNlckZldGNoZXI8R1VfUT4sXHJcbiAgICBwcml2YXRlIHVzZXJVaUNvbmZpZ3NGZXRjaGVyOiBCYXNlVXNlclVpQ29uZmlnc0ZldGNoZXI8VUNfUT4sXHJcbiAgICBwcml2YXRlIHVzZXJQcm9kdWN0c0ZldGNoZXI6IEJhc2VVc2VyUHJvZHVjdHNGZXRjaGVyPFVTX1E+LFxyXG4gICAgcHJpdmF0ZSB1c2VyTWVzc2FnZXNGZXRjaGVyOiBCYXNlVXNlck1lc3NhZ2VzRmV0Y2hlcjxVTV9RPixcclxuICAgIHByaXZhdGUgYmFzZUNvbmZpcm1NZXNzYWdlc1VwZGF0ZXI6IEJhc2VDb25maXJtTWVzc2FnZXNVcGRhdGVyPENNVV9RPixcclxuICAgIHByaXZhdGUgZ2V0Q29tcGFuaWVzRmV0Y2hlcjogQmFzZUdldENvbXBhbmllc0ZldGNoZXI8R0NGX1E+LFxyXG4gICAgcHJpdmF0ZSBnZXRDb21wYW55RmV0Y2hlcjogQmFzZUdldENvbXBhbnlGZXRjaGVyPEdTQ0ZfUT4sXHJcbiAgICBwcml2YXRlIHNldFVzZXJMYW5ndWFnZVVwZGF0ZXI6IEJhc2VTZXRVc2VyTGFuZ3VhZ2VVcGRhdGVyPFNMVV9RPixcclxuICAgIHByaXZhdGUgZWRpdFVzZXJVcGRhdGVyOiBCYXNlRWRpdFVzZXJVcGRhdGVyPEVVVV9RPixcclxuICAgIHByaXZhdGUgY3JlYXRlR3Vlc3RVcGRhdGVyOiBCYXNlQ3JlYXRlR3Vlc3RVcGRhdGVyPENHVV9RPixcclxuICAgIHByaXZhdGUgZ2V0VXNlckd1ZXN0c0ZldGNoZXI6IEJhc2VHZXRVc2VyR3Vlc3RzRmV0Y2hlcjxHVUdfUT4sXHJcbiAgICBwcml2YXRlIGdldE9mZmljZUZldGNoZXI6IEJhc2VHZXRPZmZpY2VGZXRjaGVyPEdPRl9RPixcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IEJhc2VTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgaGVscGVyczogQmFzZUhlbHBlclJvdXRpbmVzLFxyXG4gICAgcHJpdmF0ZSB3ZWJUb2tlblNlcnZpY2U6IEJhc2VXZWJUb2tlblNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaW52b2tlZFVzZXJVcGRhdGVyID0gd2ViVG9rZW5TZXJ2aWNlLmdldEludm9rZWRVc2VyT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgX2JvYm86IFRyYXZlbGxlciA9IG51bGw7XHJcbiAgaW52b2tlZFVzZXJVcGRhdGVyOiB7IG5leHQ6ICh0OiBUcmF2ZWxsZXIpID0+IHZvaWQgfTtcclxuXHJcbiAgYXN5bmMgc2V0Qm9ibyh2YWx1ZTogVHJhdmVsbGVyKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmlkKSB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fYm9ibyB8fCAodmFsdWU/LmlkICYmIHZhbHVlPy5pZCA9PT0gdGhpcy5fYm9ibz8uaWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX2JvYm8gPSB2YWx1ZTtcclxuICAgICAgdGhpcy5pbnZva2VkVXNlclVwZGF0ZXIubmV4dCh2YWx1ZSB8fCBudWxsKTtcclxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlU2VydmljZXMoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldCBib2JvKCk6IFRyYXZlbGxlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYm9ibztcclxuICB9XHJcbiAgdXBkYXRlU2VydmljZXMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJQcm9kdWN0c0ZldGNoZXIuZmV0Y2hLZXllZE9iamVjdEFycmF5KCd0eXBlJykuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXN1bHQyOiBVc2VyU2VydmljZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy5uZXh0KHJlc3VsdDIpO1xyXG5cclxuICAgICAgICAgIHRoaXMuY2hlY2tFbWl0VXNlcigpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiByZXNvbHZlKHRydWUpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFVzZXIodXNlcl9kYXRhOiBVc2VyRGF0YSk6IHZvaWQge1xyXG4gICAgY29uc3QgdXNlcmRhdGEgPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZTtcclxuICAgIGlmICghdXNlcmRhdGEgfHwgdXNlcmRhdGEudXNlcm5hbWUgIT09IHVzZXJfZGF0YS51c2VybmFtZSkge1xyXG4gICAgICBpZiAodXNlcl9kYXRhPy51c2VyX2lkKSB7XHJcbiAgICAgICAgdGhpcy5nZXRVc2VyRmV0Y2hlclxyXG4gICAgICAgICAgLmZldGNoT25lKHtcclxuICAgICAgICAgICAgaWQ6IHVzZXJfZGF0YS51c2VyX2lkLnRvU3RyaW5nKClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgodXNlcjogVXNlcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy5hbGxEZXRhaWxzLm5leHQodXNlcik7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tFbWl0VXNlcigpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51c2VyVWlDb25maWdzRmV0Y2hlci5mZXRjaEtleWVkT2JqZWN0KCdrZXknKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3VsdDE6IHsgW2tleTogc3RyaW5nXTogVW5wYWNrZWQ8VXNlclVpQ29uZmlnc1Jlc3VsdD4gfSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MubmV4dChyZXN1bHQxKTtcclxuICAgICAgICAgIHRoaXMuY2hlY2tFbWl0VXNlcigpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMudXNlclByb2R1Y3RzRmV0Y2hlclxyXG4gICAgICAgIC5mZXRjaEtleWVkT2JqZWN0QXJyYXkoJ3R5cGUnKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDI6IFVzZXJTZXJ2aWNlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLm5leHQocmVzdWx0Mik7XHJcblxyXG4gICAgICAgICAgdGhpcy5jaGVja0VtaXRVc2VyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXNlck1lc3NhZ2VzRmV0Y2hlci5mZXRjaExpc3QoKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3VsdDM6IE1lc3NhZ2VbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMubWVzc2FnZXMubmV4dChyZXN1bHQzKTtcclxuICAgICAgICAgIHRoaXMuY2hlY2tFbWl0VXNlcigpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy50cmF2bGxlck9iamVjdC5uZXh0KFxyXG4gICAgICAgIFRyYXZlbGxlck9iamVjdC5tYWtlVHJhdmVsbGVyT2JqZWN0RnJvbVVzZXJEYXRhKHVzZXJfZGF0YSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh1c2VyX2RhdGE/LnVzZXJfaWQpIHtcclxuICAgICAgdGhpcy5nZXRVc2VyRmV0Y2hlclxyXG4gICAgICAgIC5mZXRjaE9uZSh7XHJcbiAgICAgICAgICBpZDogdXNlcl9kYXRhPy51c2VyX2lkLnRvU3RyaW5nKClcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodXNlcjogVXNlcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMuYWxsRGV0YWlscy5uZXh0KHVzZXIpO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0VtaXRVc2VyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS5uZXh0KHVzZXJfZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uSXRlbSgnbGlnaHRuaW5nX3VzZXJfZGF0YScsIHVzZXJfZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjYW5Cb29rR3Vlc3QoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mdWxsVXNlckRldGFpbHMuYWxsRGV0YWlscy52YWx1ZS5jYW5Cb29rR3Vlc3Q7XHJcbiAgfVxyXG5cclxuICBjaGVja0VtaXRVc2VyKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhIXRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlICYmXHJcbiAgICAgICEhdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUgJiZcclxuICAgICAgISF0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWUgJiZcclxuICAgICAgISF0aGlzLmZ1bGxVc2VyRGV0YWlscy5tZXNzYWdlcy52YWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlVXNlci5uZXh0KHRoaXMuZnVsbFVzZXJEZXRhaWxzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldGZ1bGxVc2VyRGV0YWlscyhhZG1pbjogYm9vbGVhbiA9IGZhbHNlKTogRnVsbFVzZXJEZXRhaWxzIHwgbnVsbCB7XHJcbiAgICBpZiAoYWRtaW4pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2dldEZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9nZXRGdWxsVXNlckRldGFpbHMoKTtcclxuICAgIC8vIHJldHVybiB0aGlzLm9uQmVoYWxmVXNlciB8fCB0aGlzLl9nZXRVc2VyRGV0YWlscygpO1xyXG4gIH1cclxuXHJcbiAgX2dldEZ1bGxVc2VyRGV0YWlscygpOiBGdWxsVXNlckRldGFpbHMge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMgfHxcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uSXRlbSgnbGlnaHRuaW5nX3VzZXJfZGF0YScpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckRyb3Bkb3duSW5mbygpOiB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgYWNjb3VudF90eXBlOiBCb29rZXJUeXBlIHwgc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICB9IHtcclxuICAgIGNvbnN0IGRyb3Bkb3duX2luZm8gPSB7XHJcbiAgICAgIG5hbWU6ICdVbmFibGUgdG8gcmV0cmlldmUgbmFtZS4nLFxyXG4gICAgICBlbWFpbDogJ1VuYWJsZSB0byByZXJpZXZlIGVtYWlsJyxcclxuICAgICAgYWNjb3VudF90eXBlOiAnVW5rbm93bicsXHJcbiAgICAgIHRpdGxlOiAnJ1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFVzZXJzRnVsbG5hbWUoKTtcclxuICAgIGNvbnN0IGVtYWlsID0gdGhpcy5nZXRVc2VyRW1haWwoKTtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFVzZXJCb29raW5nVHlwZSgpO1xyXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLmdldFVzZXJUaXRsZSgpO1xyXG5cclxuICAgIGlmIChuYW1lKSB7XHJcbiAgICAgIGRyb3Bkb3duX2luZm8ubmFtZSA9IG5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVtYWlsKSB7XHJcbiAgICAgIGRyb3Bkb3duX2luZm8uZW1haWwgPSBlbWFpbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZSkge1xyXG4gICAgICBkcm9wZG93bl9pbmZvLmFjY291bnRfdHlwZSA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRpdGxlKSB7XHJcbiAgICAgIGRyb3Bkb3duX2luZm8udGl0bGUgPSB0aXRsZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZHJvcGRvd25faW5mbztcclxuICB9XHJcblxyXG4gIGdldFVzZXJUaXRsZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGEgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLnRpdGxlIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRm9yZW5hbWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS5mb3JlbmFtZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclN1cm5hbWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS5zdXJuYW1lIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRGdWxsUGhvbmVOdW1iZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldFVzZXJFbWFpbCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGEgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLnVzZXJuYW1lIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyQm9va2luZ1R5cGUoKTogQm9va2VyVHlwZSB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci51c2VyRGF0YSA/IHVzZXIudXNlckRhdGEudmFsdWUuYm9va2VyX3R5cGUgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcnNGdWxsbmFtZSgpOiBzdHJpbmcgfCBmYWxzZSB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci51c2VyRGF0YVxyXG4gICAgICA/IHVzZXIudXNlckRhdGEudmFsdWUuZm9yZW5hbWUgKyAnICcgKyB1c2VyLnVzZXJEYXRhLnZhbHVlLnN1cm5hbWVcclxuICAgICAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJzVGl0bGVBbmRGdWxsTmFtZSgpOiBzdHJpbmcgfCBmYWxzZSB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci51c2VyRGF0YVxyXG4gICAgICA/IHVzZXIudXNlckRhdGEudmFsdWUudGl0bGUgK1xyXG4gICAgICAgICAgJyAnICtcclxuICAgICAgICAgIHVzZXIudXNlckRhdGEudmFsdWUuZm9yZW5hbWUgK1xyXG4gICAgICAgICAgJyAnICtcclxuICAgICAgICAgIHVzZXIudXNlckRhdGEudmFsdWUuc3VybmFtZVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckZhdm9yaXRlVmFsdWUoXHJcbiAgICB1ZjogVXNlckZhdm9ydXJpdGUsXHJcbiAgICBzdXBwbGllcjogU3VwcGxpZXJzID0gU3VwcGxpZXJzLm5vblxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1ZlZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5mcm9tT2JqZWN0KHVmVmFsdWUsIHVmLnZhbHVlLCAnY29uZmlnJywgdWYudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckZhdm9yaXRlT2JqZWN0PFQ+KHVmOiBVc2VyRmF2b3J1cml0ZSk6IFQge1xyXG4gICAgY29uc3QgdWZWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5mcm9tT2JqZWN0KHVmVmFsdWUsIHVmLnZhbHVlLCAnY29uZmlnJyk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRmF2b3JpdGVOdW1iZXIodWY6IFVzZXJGYXZvcnVyaXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVmVmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy52YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5oZWxwZXJzLmZyb21PYmplY3QodWZWYWx1ZSwgdWYudmFsdWUsICdjb25maWcnLCAndmFsdWUnKTtcclxuICB9XHJcblxyXG4gIGlzVXNlckZhdm9yaXRlU2V0KFxyXG4gICAgdWY6IFVzZXJGYXZvcnVyaXRlLFxyXG4gICAgc3VwcGxpZXI6IFN1cHBsaWVycyA9IFN1cHBsaWVycy5ub25cclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHVmVmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy52YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5oZWxwZXJzLmZyb21PYmplY3QodWZWYWx1ZSwgdWYudmFsdWUsICdjb25maWcnLCAndmFsdWUnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjIC0gY3JlYXRlIGEgZHVtbXkgdXNlciBmb3Igc2VsZiBib29rZXJzXHJcbiAgICovXHJcbiAgY3JlYXRlU2VsZlRyYXZlbGxlcigpOiBUcmF2ZWxsZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnRyYXZsbGVyT2JqZWN0LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgdHJhdmVsbGVySXNVc2VyKHRyYXZlbGxlcjogVHJhdmVsbGVyKTogYm9vbGVhbiB7XHJcbiAgICAvLyBUT0RPIGNoZWNrIHRoZSB0cmF2ZWxsZXIgaXNuJ3QgdGhlIGN1cnJlbnQgdXNlciBvciBhZ2VudCBib29rXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBlbXB0eVVzZXJEYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEubmV4dChudWxsKTtcclxuICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMubmV4dChudWxsKTtcclxuICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLm1lc3NhZ2VzLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLmNoYW5nZVVzZXIubmV4dCh0aGlzLmZ1bGxVc2VyRGV0YWlscyk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVHdWVzdFVzZXIoXHJcbiAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgZm9yZW5hbWU6IHN0cmluZyxcclxuICAgIHN1cm5hbWU6IHN0cmluZyxcclxuICAgIGVtYWlsOiBzdHJpbmcsXHJcbiAgICBndWVzdE1vYmlsZUNvdW50cnlObzogc3RyaW5nLFxyXG4gICAgZ3Vlc3RNb2JpbGVOdW1iZXI6IHN0cmluZyxcclxuICAgIGd1ZXN0X25hdGlvbmFsaXR5OiBzdHJpbmcsXHJcbiAgICBnZW5kZXI6IHN0cmluZyxcclxuICAgIGlzQ2hpbGQ6IGJvb2xlYW4sXHJcbiAgICBpc0luZmFudDogYm9vbGVhbixcclxuICAgIGNoaWxkRE9COiBEYXRlXHJcbiAgKTogVHJhdmVsbGVyIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGlzQ2hpbGQsXHJcbiAgICAgIGlzSW5mYW50LFxyXG4gICAgICBjaGlsZERPQixcclxuICAgICAgZ3Vlc3Q6IHRydWUsXHJcbiAgICAgIGlkOiAnJyxcclxuICAgICAgZm9yZW5hbWUsXHJcbiAgICAgIHN1cm5hbWUsXHJcbiAgICAgIGVtYWlsLFxyXG4gICAgICB0aXRsZSxcclxuICAgICAgbmFtZTogW3RpdGxlLCBmb3JlbmFtZSwgc3VybmFtZV0uam9pbignICcpXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgdXNlcklzQ2xpZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgLyogVE9ET1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmICF0aGlzLmlzQWdlbmN5VXNlcigpICYmIFsnVHJhdmVsbGVyJywgJ01lJywgJ090aGVycycsICdCb29rZXInXS5pbmNsdWRlcyh1c2VyLkJvb2tpbmdBbGxvd2VkRm9yKTtcclxuICAgICovXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGhhc0lnbm9yZVBvbGljeSgpOiBib29sZWFuIHtcclxuICAgIC8qIFRPRE9cclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLkJvb2tpbmdQb2xpY3lPdmVycmlkZSAmJiB1c2VyLkJvb2tpbmdQb2xpY3lPdmVycmlkZSA9PT0gJzk5OTktMDEtMDEgMDA6MDA6MDAnOyovXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHVzZUFnZW50Q2FuQm9va0ZvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlOyAvLyBUT0RPXHJcbiAgfVxyXG5cclxuICBjYW5Cb29rKHNlcnZpY2U6IFNlcnZpY2VUeXBlKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlczogVXNlclNlcnZpY2VzID0gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlO1xyXG4gICAgcmV0dXJuIHNlcnZpY2VzICYmICEhc2VydmljZXNbc2VydmljZV07XHJcbiAgfVxyXG5cclxuICBpc1RyYXZlbGxlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmJvb2tlcl90eXBlID09PSBCb29rZXJUeXBlLlRyYXZlbGxlclxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVzZXJJc0FnZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuYm9va2VyX3R5cGUgPT09IEJvb2tlclR5cGUuQ29tcGFueVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVzZXJJc0FkbWluKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmFkbWluO1xyXG4gIH1cclxuXHJcbiAgdXNlcklzQ29tcGFueUFkbWluKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmNvbXBhbnlfYWRtaW47XHJcbiAgfVxyXG5cclxuICB1c2VySXNUbWNBZG1pbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS50bWNfYWRtaW47XHJcbiAgfVxyXG5cclxuICB1c2VyVG1jSWQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS50bWNfaWQ7XHJcbiAgfVxyXG5cclxuICBpc1NlbGZCb29rKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEudmFsdWUuYm9va2VyX3R5cGUgPT09IEJvb2tlclR5cGUuU2VsZkJvb2tcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc0Jvb2tlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmJvb2tlcl90eXBlID09PSBCb29rZXJUeXBlLkJvb2tlclxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJJZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLnVzZXJfaWQ7XHJcbiAgfVxyXG5cclxuICB1c2VySGFzU2VydmljZVByb3ZpZGVyKFxyXG4gICAgc2VydmljZTogU2VydmljZVR5cGUsXHJcbiAgICBwcm92aWRlcjogU2VydmljZVByb3ZpZGVyXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiAhISh0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWVbc2VydmljZV0gfHwgW10pLmZpbmQoXHJcbiAgICAgICAgKHZhbHVlOiBTZXJ2aWNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUubmFtZSA9PT0gKHByb3ZpZGVyIGFzIHN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmluZFNlcnZpY2UoaWQ6IHN0cmluZyk6IFNlcnZpY2Uge1xyXG4gICAgaWYgKHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5oZWxwZXJzLmZpbmRTZXJ2aWNlKFxyXG4gICAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy52YWx1ZSxcclxuICAgICAgICBpZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyTWVzc2FnZXMoKTogT2JzZXJ2YWJsZTxNZXNzYWdlW10+IHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJNZXNzYWdlc0ZldGNoZXIuZmV0Y2hMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtTWVzc2FnZXMoaWQ6IHN0cmluZyB8IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29uZmlybU1lc3NhZ2VzVXBkYXRlci51cGRhdGVPbmUoeyBtZXNzYWdlczogaWQgfSk7XHJcbiAgfVxyXG5cclxuICB1c2VySXNSb290KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmJvb2tlcl90eXBlID09PSBCb29rZXJUeXBlLlJvb3Q7XHJcbiAgfVxyXG5cclxuICB1c2VySXNTdXBwb3J0QWdlbnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5zdXBwb3J0X2FnZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckNvbXBhbmllcyhxdWVyeTogc3RyaW5nID0gbnVsbCk6IE9ic2VydmFibGU8Q29tcGFueVtdPiB7XHJcbiAgICByZXR1cm4gcXVlcnlcclxuICAgICAgPyB0aGlzLmdldENvbXBhbmllc0ZldGNoZXIuZmV0Y2hMaXN0KHsgcXVlcnkgfSkucGlwZSh0YWtlKDEpKVxyXG4gICAgICA6IHRoaXMuZ2V0Q29tcGFuaWVzRmV0Y2hlci5mZXRjaExpc3QoKS5waXBlKHRha2UoMSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcGFueUJ5SWQoaWQ6IHN0cmluZywgd2l0aFVzZXJzOiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPENvbXBhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmdldENvbXBhbnlGZXRjaGVyLmZldGNoT25lKHsgaWQgfSkucGlwZSh0YWtlKDEpKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJDb21wYW55KCk6IE9ic2VydmFibGU8Q29tcGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29tcGFueUJ5SWQoXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmNvbXBhbnlfaWQudG9TdHJpbmcoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXIodXNlcklkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlckZldGNoZXIuZmV0Y2hPbmUoe1xyXG4gICAgICBpZDogdXNlcklkID8gdXNlcklkIDogdXNlci51c2VyRGF0YS52YWx1ZS51c2VyX2lkLnRvU3RyaW5nKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0VXNlckxhbmd1YWdlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXI+IHtcclxuICAgIHJldHVybiB0aGlzLnNldFVzZXJMYW5ndWFnZVVwZGF0ZXIudXBkYXRlT25lKHsgbGFuZ3VhZ2U6IGlkIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RG9jdW1lbnRzKHR5cGU6IERvY1R5cGUsIHVzZXJJZD86IHN0cmluZyk6IE9ic2VydmFibGU8RG9jdW1lbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcih1c2VySWQpLnBpcGUoXHJcbiAgICAgIG1hcCgodXNlcjogVXNlcikgPT4gdXNlci5kb2N1bWVudHMgfHwgW10pLFxyXG4gICAgICBtYXAoKGRvY3M6IERvY3VtZW50W10pID0+IHtcclxuICAgICAgICByZXR1cm4gdHlwZVxyXG4gICAgICAgICAgPyBkb2NzLmZpbHRlcigoZG9jOiBEb2N1bWVudCkgPT4gZG9jLmRvY1R5cGUgPT09IHR5cGUpXHJcbiAgICAgICAgICA6IGRvY3M7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZWRpdFVzZXIodXNlcjogTXV0YXRpb25FZGl0VXNlckFyZ3MpOiBPYnNlcnZhYmxlPFVzZXI+IHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRVc2VyVXBkYXRlclxyXG4gICAgICAudXBkYXRlT25lKHVzZXIpXHJcbiAgICAgIC5waXBlKHRhcCgodXNlcjogVXNlcikgPT4gdGhpcy5mdWxsVXNlckRldGFpbHMuYWxsRGV0YWlscy5uZXh0KHVzZXIpKSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVHdWVzdChuZXdHdWVzdDogTXV0YXRpb25DcmVhdGVHdWVzdEFyZ3MpOiBPYnNlcnZhYmxlPEd1ZXN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVHdWVzdFVwZGF0ZXIudXBkYXRlT25lKG5ld0d1ZXN0KS5waXBlKHRha2UoMSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckd1ZXN0cygpOiBPYnNlcnZhYmxlPEd1ZXN0W10+IHtcclxuICAgIHJldHVybiB0aGlzLmdldFVzZXJHdWVzdHNGZXRjaGVyLmZldGNoTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgY2FuSW52b2tlVXNlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy5hbGxEZXRhaWxzLnZhbHVlLmNhbkludm9rZVVzZXI7XHJcbiAgfVxyXG5cclxuICBnZXRPZmZpY2UoKTogT2JzZXJ2YWJsZTxPZmZpY2U+IHtcclxuICAgIHJldHVybiB0aGlzLmdldE9mZmljZUZldGNoZXIuZmV0Y2hMaXN0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -9,6 +9,8 @@ export class BaseWebTokenService {
9
9
  this.timer = null;
10
10
  this.timeoutDuration = 60 * 60;
11
11
  this.autoLogoutConfig = {};
12
+ this._bobo = null;
13
+ this._boboFetched = false;
12
14
  this.timeOutDuration = environment.autoLogoutTime;
13
15
  }
14
16
  /**
@@ -25,6 +27,17 @@ export class BaseWebTokenService {
25
27
  get jwtToken() {
26
28
  return this._jwtToken || null;
27
29
  }
30
+ getInvokedUserObservable() {
31
+ if (this._boboFetched) {
32
+ throw new Error('Only one service can access the service which should be the searchService');
33
+ }
34
+ this._boboFetched = true;
35
+ return Object.freeze({
36
+ next: (traveller) => {
37
+ this._bobo = !traveller || traveller.id ? traveller : null;
38
+ }
39
+ });
40
+ }
28
41
  _updateTimer() {
29
42
  window.clearTimeout(this.timer);
30
43
  this.timer = null;
@@ -57,4 +70,4 @@ export class BaseWebTokenService {
57
70
  }
58
71
  }
59
72
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3Ivc2VydmljZXMvd2VidG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1QyxNQUFNLE9BQWdCLG1CQUFtQjtJQXlCdkMsWUFDVSxrQkFBMEMsRUFDbEQsV0FBNEI7UUFEcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQXpCcEQsMENBQTBDO1FBQ2hDLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsVUFBSyxHQUFXLElBQUksQ0FBQztRQUNyQixvQkFBZSxHQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFNUMscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBdUJwQixJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUM7SUFDcEQsQ0FBQztJQXRCRDs7T0FFRztJQUNILElBQUksZUFBZSxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBYTtRQUN4QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQVNTLFlBQVk7UUFDcEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFUyxhQUFhOztRQUNyQixNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksR0FBRyxPQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLElBQUksT0FBTSxDQUFDLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNyQyxJQUFJLE9BQU8sR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQjtpQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztpQkFDdEQsSUFBSSxDQUFDLENBQUMsTUFBa0IsRUFBRSxFQUFFO2dCQUMzQixJQUFJLE1BQU0sS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFO29CQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN2QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7Q0FHRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgQmFzZUVudmlyb25tZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9lbnZpcm9tZW50JztcclxuaW1wb3J0IHsgTW9kYWxUeXBlcyB9IGZyb20gJy4uL2NsYXNzZXMvbW9kYWwtdHlwZXMuZW51bSc7XHJcbmltcG9ydCB7IExvZ291dEVudW0gfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XHJcbmltcG9ydCB7IEJhc2VNb2RhbE9wZW5lclNlcnZpY2UgfSBmcm9tICcuL21vZGFsLW9wZW5lci5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlV2ViVG9rZW5TZXJ2aWNlIHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcclxuICBwcm90ZWN0ZWQgX2p3dFRva2VuOiBzdHJpbmcgPSBudWxsO1xyXG4gIHByb3RlY3RlZCB0aW1lcjogbnVtYmVyID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgdGltZW91dER1cmF0aW9uOiBudW1iZXIgPSA2MCAqIDYwO1xyXG4gIHByb3RlY3RlZCBsYXN0VXBkYXRlZDogbW9tZW50Lk1vbWVudDtcclxuICBhdXRvTG9nb3V0Q29uZmlnID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSB2YWx1ZTogIG51bWJlciAvLyBUaGUgdGltZSBpbiBtaW51dGVzIGJlZm9yZSBodGUgdXNlciBpcyBhdXRvIGxvZ2dlZCBvdXQuXHJcbiAgICovXHJcbiAgc2V0IHRpbWVPdXREdXJhdGlvbih2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnRpbWVvdXREdXJhdGlvbiA9IHZhbHVlICogNjAgLSA2MDtcclxuICB9XHJcblxyXG4gIHNldCBqd3RUb2tlbih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuand0VG9rZW4pIHtcclxuICAgICAgdGhpcy5fand0VG9rZW4gPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBqd3RUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9qd3RUb2tlbiB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1vZGFsT3BlbmVyU2VydmljZTogQmFzZU1vZGFsT3BlbmVyU2VydmljZSxcclxuICAgIGVudmlyb25tZW50OiBCYXNlRW52aXJvbm1lbnRcclxuICApIHtcclxuICAgIHRoaXMudGltZU91dER1cmF0aW9uID0gZW52aXJvbm1lbnQuYXV0b0xvZ291dFRpbWU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX3VwZGF0ZVRpbWVyKCkge1xyXG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcclxuICAgIHRoaXMudGltZXIgPSBudWxsO1xyXG4gICAgY29uc29sZS5sb2coJ1Jlc2V0dGluZyBhdXRvIGxvZyBvdXQnKTtcclxuICAgIHRoaXMudGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tUb0xvZ291dCgpO1xyXG4gICAgfSwgNjAwMDApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNoZWNrVG9Mb2dvdXQoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gbW9tZW50KCkudW5peCgpO1xyXG4gICAgY29uc3QgbGFzdCA9IHRoaXMubGFzdFVwZGF0ZWQ/LnVuaXgoKSB8fCAwO1xyXG4gICAgY29uc3QgbWF4VGltZSA9IHRoaXMudGltZW91dER1cmF0aW9uO1xyXG4gICAgaWYgKGN1cnJlbnQgLSBsYXN0ID4gbWF4VGltZSkge1xyXG4gICAgICB0aGlzLnRpbWVyID0gbnVsbDtcclxuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IG1vbWVudCgpO1xyXG4gICAgICB0aGlzLm1vZGFsT3BlbmVyU2VydmljZVxyXG4gICAgICAgIC5vcGVuKE1vZGFsVHlwZXMuQXV0b0xvZ291dCwgdGhpcy5hdXRvTG9nb3V0Q29uZmlnLCB7fSlcclxuICAgICAgICAudGhlbigobG9nb3V0OiBMb2dvdXRFbnVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAobG9nb3V0ICE9PSBMb2dvdXRFbnVtLkxPR09VVCkge1xyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUaW1lcigpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fand0VG9rZW4gPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fdXBkYXRlVGltZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRIZWFkZXJzKCk6IG9iamVjdDtcclxufVxyXG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3Ivc2VydmljZXMvd2VidG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFHNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1QyxNQUFNLE9BQWdCLG1CQUFtQjtJQTRCdkMsWUFDVSxrQkFBMEMsRUFDbEQsV0FBNEI7UUFEcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQTVCcEQsMENBQTBDO1FBQ2hDLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsVUFBSyxHQUFXLElBQUksQ0FBQztRQUNyQixvQkFBZSxHQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFNUMscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBbUJaLFVBQUssR0FBYyxJQUFJLENBQUM7UUFDMUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFNM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO0lBQ3BELENBQUM7SUF6QkQ7O09BRUc7SUFDSCxJQUFJLGVBQWUsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFZRCx3QkFBd0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkVBQTJFLENBQzVFLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuQixJQUFJLEVBQUUsQ0FBQyxTQUFvQixFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDN0QsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxZQUFZO1FBQ3BCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRVMsYUFBYTs7UUFDckIsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEdBQUcsT0FBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxJQUFJLE9BQU0sQ0FBQyxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDckMsSUFBSSxPQUFPLEdBQUcsSUFBSSxHQUFHLE9BQU8sRUFBRTtZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxrQkFBa0I7aUJBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7aUJBQ3RELElBQUksQ0FBQyxDQUFDLE1BQWtCLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxNQUFNLEtBQUssVUFBVSxDQUFDLE1BQU0sRUFBRTtvQkFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUNyQjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDdkI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmFzZUVudmlyb25tZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9lbnZpcm9tZW50JztcclxuaW1wb3J0IHsgTW9kYWxUeXBlcyB9IGZyb20gJy4uL2NsYXNzZXMvbW9kYWwtdHlwZXMuZW51bSc7XHJcbmltcG9ydCB7IFRyYXZlbGxlciB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcclxuaW1wb3J0IHsgTG9nb3V0RW51bSB9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZU1vZGFsT3BlbmVyU2VydmljZSB9IGZyb20gJy4vbW9kYWwtb3BlbmVyLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VXZWJUb2tlblNlcnZpY2Uge1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdmFyaWFibGUtbmFtZVxyXG4gIHByb3RlY3RlZCBfand0VG9rZW46IHN0cmluZyA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIHRpbWVyOiBudW1iZXIgPSBudWxsO1xyXG4gIHByb3RlY3RlZCB0aW1lb3V0RHVyYXRpb246IG51bWJlciA9IDYwICogNjA7XHJcbiAgcHJvdGVjdGVkIGxhc3RVcGRhdGVkOiBtb21lbnQuTW9tZW50O1xyXG4gIGF1dG9Mb2dvdXRDb25maWcgPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHZhbHVlOiAgbnVtYmVyIC8vIFRoZSB0aW1lIGluIG1pbnV0ZXMgYmVmb3JlIGh0ZSB1c2VyIGlzIGF1dG8gbG9nZ2VkIG91dC5cclxuICAgKi9cclxuICBzZXQgdGltZU91dER1cmF0aW9uKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMudGltZW91dER1cmF0aW9uID0gdmFsdWUgKiA2MCAtIDYwO1xyXG4gIH1cclxuXHJcbiAgc2V0IGp3dFRva2VuKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5qd3RUb2tlbikge1xyXG4gICAgICB0aGlzLl9qd3RUb2tlbiA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGp3dFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2p3dFRva2VuIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2JvYm86IFRyYXZlbGxlciA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYm9ib0ZldGNoZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1vZGFsT3BlbmVyU2VydmljZTogQmFzZU1vZGFsT3BlbmVyU2VydmljZSxcclxuICAgIGVudmlyb25tZW50OiBCYXNlRW52aXJvbm1lbnRcclxuICApIHtcclxuICAgIHRoaXMudGltZU91dER1cmF0aW9uID0gZW52aXJvbm1lbnQuYXV0b0xvZ291dFRpbWU7XHJcbiAgfVxyXG5cclxuICBnZXRJbnZva2VkVXNlck9ic2VydmFibGUoKTogeyBuZXh0OiAodHJhdmVsbGVyOiBUcmF2ZWxsZXIpID0+IHZvaWQgfSB7XHJcbiAgICBpZiAodGhpcy5fYm9ib0ZldGNoZWQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdPbmx5IG9uZSBzZXJ2aWNlIGNhbiBhY2Nlc3MgdGhlIHNlcnZpY2Ugd2hpY2ggc2hvdWxkIGJlIHRoZSBzZWFyY2hTZXJ2aWNlJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYm9ib0ZldGNoZWQgPSB0cnVlO1xyXG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoe1xyXG4gICAgICBuZXh0OiAodHJhdmVsbGVyOiBUcmF2ZWxsZXIpID0+IHtcclxuICAgICAgICB0aGlzLl9ib2JvID0gIXRyYXZlbGxlciB8fCB0cmF2ZWxsZXIuaWQgPyB0cmF2ZWxsZXIgOiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfdXBkYXRlVGltZXIoKSB7XHJcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xyXG4gICAgdGhpcy50aW1lciA9IG51bGw7XHJcbiAgICBjb25zb2xlLmxvZygnUmVzZXR0aW5nIGF1dG8gbG9nIG91dCcpO1xyXG4gICAgdGhpcy50aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jaGVja1RvTG9nb3V0KCk7XHJcbiAgICB9LCA2MDAwMCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2hlY2tUb0xvZ291dCgpIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSBtb21lbnQoKS51bml4KCk7XHJcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5sYXN0VXBkYXRlZD8udW5peCgpIHx8IDA7XHJcbiAgICBjb25zdCBtYXhUaW1lID0gdGhpcy50aW1lb3V0RHVyYXRpb247XHJcbiAgICBpZiAoY3VycmVudCAtIGxhc3QgPiBtYXhUaW1lKSB7XHJcbiAgICAgIHRoaXMudGltZXIgPSBudWxsO1xyXG4gICAgICB0aGlzLmxhc3RVcGRhdGVkID0gbW9tZW50KCk7XHJcbiAgICAgIHRoaXMubW9kYWxPcGVuZXJTZXJ2aWNlXHJcbiAgICAgICAgLm9wZW4oTW9kYWxUeXBlcy5BdXRvTG9nb3V0LCB0aGlzLmF1dG9Mb2dvdXRDb25maWcsIHt9KVxyXG4gICAgICAgIC50aGVuKChsb2dvdXQ6IExvZ291dEVudW0pID0+IHtcclxuICAgICAgICAgIGlmIChsb2dvdXQgIT09IExvZ291dEVudW0uTE9HT1VUKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVyKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9qd3RUb2tlbiA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl91cGRhdGVUaW1lcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFic3RyYWN0IGdldEhlYWRlcnMoKTogb2JqZWN0O1xyXG59XHJcbiJdfQ==