@sumaris-net/ngx-components 2.7.0-rc4 → 2.7.0-rc6

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 (194) hide show
  1. package/esm2022/src/app/admin/services/filter/person.filter.mjs +1 -1
  2. package/esm2022/src/app/admin/services/person.service.mjs +2 -2
  3. package/esm2022/src/app/admin/services/validator/person.validator.mjs +1 -1
  4. package/esm2022/src/app/admin/users/users.mjs +3 -3
  5. package/esm2022/src/app/core/about/about.modal.mjs +1 -1
  6. package/esm2022/src/app/core/account/account.page.mjs +1 -1
  7. package/esm2022/src/app/core/account/new-token.modal.mjs +2 -2
  8. package/esm2022/src/app/core/account/token.table.mjs +1 -1
  9. package/esm2022/src/app/core/auth/auth.form.mjs +1 -1
  10. package/esm2022/src/app/core/auth/auth.modal.mjs +1 -1
  11. package/esm2022/src/app/core/form/entity/editor.class.mjs +1 -1
  12. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +1 -1
  13. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +3 -3
  14. package/esm2022/src/app/core/form/form.class.mjs +1 -1
  15. package/esm2022/src/app/core/form/form.utils.mjs +1 -1
  16. package/esm2022/src/app/core/form/list/list.form.mjs +1 -1
  17. package/esm2022/src/app/core/form/properties/properties.form.mjs +1 -1
  18. package/esm2022/src/app/core/form/properties/properties.table.mjs +1 -1
  19. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +1 -1
  20. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +1 -1
  21. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +1 -1
  22. package/esm2022/src/app/core/graphql/graphql.service.mjs +1 -1
  23. package/esm2022/src/app/core/graphql/graphql.utils.mjs +1 -1
  24. package/esm2022/src/app/core/home/home.mjs +3 -3
  25. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +1 -1
  26. package/esm2022/src/app/core/menu/menu.component.mjs +3 -3
  27. package/esm2022/src/app/core/menu/menu.model.mjs +1 -1
  28. package/esm2022/src/app/core/menu/menu.service.mjs +1 -1
  29. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +1 -1
  30. package/esm2022/src/app/core/peer/select-peer.modal.mjs +1 -1
  31. package/esm2022/src/app/core/register/register-confirm.page.mjs +3 -3
  32. package/esm2022/src/app/core/register/register.form.mjs +1 -1
  33. package/esm2022/src/app/core/register/register.modal.mjs +1 -1
  34. package/esm2022/src/app/core/services/account.service.mjs +1 -1
  35. package/esm2022/src/app/core/services/auth-guard.service.mjs +1 -1
  36. package/esm2022/src/app/core/services/base-entity-service.class.mjs +1 -1
  37. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +1 -1
  38. package/esm2022/src/app/core/services/base58.mjs +1 -1
  39. package/esm2022/src/app/core/services/config.service.mjs +1 -1
  40. package/esm2022/src/app/core/services/errors.mjs +3 -3
  41. package/esm2022/src/app/core/services/local-settings.service.mjs +1 -1
  42. package/esm2022/src/app/core/services/model/account.model.mjs +1 -1
  43. package/esm2022/src/app/core/services/model/config.model.mjs +1 -1
  44. package/esm2022/src/app/core/services/model/entity.decorators.mjs +1 -1
  45. package/esm2022/src/app/core/services/model/entity.model.mjs +1 -1
  46. package/esm2022/src/app/core/services/model/filter.model.mjs +1 -1
  47. package/esm2022/src/app/core/services/model/person.model.mjs +1 -1
  48. package/esm2022/src/app/core/services/model/referential.model.mjs +3 -3
  49. package/esm2022/src/app/core/services/model/token.model.mjs +1 -1
  50. package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +1 -1
  51. package/esm2022/src/app/core/services/network.service.mjs +1 -1
  52. package/esm2022/src/app/core/services/network.types.mjs +1 -1
  53. package/esm2022/src/app/core/services/network.utils.mjs +1 -1
  54. package/esm2022/src/app/core/services/platform.service.mjs +2 -2
  55. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +1 -1
  56. package/esm2022/src/app/core/services/storage/entity-store.class.mjs +1 -1
  57. package/esm2022/src/app/core/services/testing/referential.validator.mjs +1 -1
  58. package/esm2022/src/app/core/services/validator/account.validator.mjs +1 -1
  59. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +1 -1
  60. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +1 -1
  61. package/esm2022/src/app/core/settings/settings.page.mjs +2 -2
  62. package/esm2022/src/app/core/table/actions-column.component.mjs +1 -1
  63. package/esm2022/src/app/core/table/async-table.class.mjs +1 -1
  64. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +1 -1
  65. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +2 -2
  66. package/esm2022/src/app/core/table/memory-table.class.mjs +1 -1
  67. package/esm2022/src/app/core/table/table.class.mjs +1 -1
  68. package/esm2022/src/app/core/table/table.utils.mjs +1 -1
  69. package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
  70. package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
  71. package/esm2022/src/app/shared/alerts.mjs +1 -1
  72. package/esm2022/src/app/shared/audio/audio.mjs +1 -1
  73. package/esm2022/src/app/shared/capacitor/keyboard.mjs +1 -1
  74. package/esm2022/src/app/shared/dates.mjs +1 -1
  75. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +1 -1
  76. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +1 -1
  77. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +1 -1
  78. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +1 -1
  79. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +1 -1
  80. package/esm2022/src/app/shared/events.mjs +1 -1
  81. package/esm2022/src/app/shared/file/csv.utils.mjs +1 -1
  82. package/esm2022/src/app/shared/file/file.service.mjs +1 -1
  83. package/esm2022/src/app/shared/file/file.utils.mjs +1 -1
  84. package/esm2022/src/app/shared/file/images.utils.mjs +1 -1
  85. package/esm2022/src/app/shared/file/json.utils.mjs +1 -1
  86. package/esm2022/src/app/shared/file/uri.utils.mjs +1 -1
  87. package/esm2022/src/app/shared/form/field.component.mjs +2 -2
  88. package/esm2022/src/app/shared/forms.mjs +1 -1
  89. package/esm2022/src/app/shared/functions.mjs +1 -1
  90. package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +1 -1
  91. package/esm2022/src/app/shared/gesture/gesture-config.mjs +2 -2
  92. package/esm2022/src/app/shared/graph/colors.utils.mjs +1 -1
  93. package/esm2022/src/app/shared/graph/graph-colors.mjs +8 -8
  94. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +1 -1
  95. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +1 -1
  96. package/esm2022/src/app/shared/http/http.utils.mjs +1 -1
  97. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +1 -1
  98. package/esm2022/src/app/shared/image/image.service.mjs +1 -1
  99. package/esm2022/src/app/shared/inputs.mjs +1 -1
  100. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +1 -1
  101. package/esm2022/src/app/shared/logging/logger.model.mjs +1 -1
  102. package/esm2022/src/app/shared/logging/logging-service.class.mjs +1 -1
  103. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +1 -1
  104. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +1 -1
  105. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +1 -1
  106. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +2 -2
  107. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +1 -1
  108. package/esm2022/src/app/shared/material/boolean/material-boolean.mjs +1 -1
  109. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +1 -1
  110. package/esm2022/src/app/shared/material/chips/material.chips.mjs +1 -1
  111. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +2 -2
  112. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +4 -5
  113. package/esm2022/src/app/shared/material/datetime/material.date.mjs +37 -15
  114. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +37 -17
  115. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +133 -80
  116. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +4 -4
  117. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +3 -3
  118. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +3 -3
  119. package/esm2022/src/app/shared/material/duration/duration.utils.mjs +1 -1
  120. package/esm2022/src/app/shared/material/duration/material.duration.mjs +2 -2
  121. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +2 -2
  122. package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +1 -1
  123. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +2 -2
  124. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +1 -1
  125. package/esm2022/src/app/shared/material/material.module.mjs +5 -5
  126. package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +1 -1
  127. package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +1 -1
  128. package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +1 -1
  129. package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +1 -1
  130. package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +1 -1
  131. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +1 -1
  132. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +1 -1
  133. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +1 -1
  134. package/esm2022/src/app/shared/material/testing/common.test.mjs +2 -2
  135. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +1 -1
  136. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +1 -1
  137. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +1 -1
  138. package/esm2022/src/app/shared/observables.mjs +1 -1
  139. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +1 -1
  140. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +1 -1
  141. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +1 -1
  142. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +1 -1
  143. package/esm2022/src/app/shared/pipes/form.pipes.mjs +1 -1
  144. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +1 -1
  145. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +2 -51
  146. package/esm2022/src/app/shared/pipes/math.pipes.mjs +1 -1
  147. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +1 -1
  148. package/esm2022/src/app/shared/pipes/pipes.module.mjs +4 -8
  149. package/esm2022/src/app/shared/pipes/property.pipes.mjs +1 -1
  150. package/esm2022/src/app/shared/platforms.mjs +1 -1
  151. package/esm2022/src/app/shared/services/job.utils.mjs +1 -1
  152. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +3 -3
  153. package/esm2022/src/app/shared/services/progress-bar.service.mjs +1 -1
  154. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +1 -1
  155. package/esm2022/src/app/shared/services/startable-service.class.mjs +1 -1
  156. package/esm2022/src/app/shared/services/translate-context.service.mjs +1 -1
  157. package/esm2022/src/app/shared/services.mjs +2 -2
  158. package/esm2022/src/app/shared/shared-routing.module.mjs +1 -1
  159. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +1 -1
  160. package/esm2022/src/app/shared/storage/storage.service.mjs +1 -1
  161. package/esm2022/src/app/shared/testing/observable.test.mjs +1 -1
  162. package/esm2022/src/app/shared/toast/toast.testing.mjs +2 -2
  163. package/esm2022/src/app/shared/toast/toasts.mjs +1 -1
  164. package/esm2022/src/app/shared/toolbar/toolbar.mjs +1 -1
  165. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +1 -1
  166. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +1 -1
  167. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +1 -1
  168. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +1 -1
  169. package/esm2022/src/app/shared/validator/validators.mjs +3 -3
  170. package/esm2022/src/app/shared/version/versions.mjs +1 -1
  171. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +1 -1
  172. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +1 -1
  173. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +1 -1
  174. package/esm2022/src/app/social/message/message.form.mjs +1 -1
  175. package/esm2022/src/app/social/message/message.modal.mjs +1 -1
  176. package/esm2022/src/app/social/message/message.service.mjs +1 -1
  177. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +1 -1
  178. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +1 -1
  179. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +1 -1
  180. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +1 -1
  181. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +1 -1
  182. package/esm2022/src/app/social/user-event/user-event.service.mjs +1 -1
  183. package/esm2022/src/environments/environment.loader.mjs +1 -1
  184. package/esm2022/src/environments/environment.mjs +3 -3
  185. package/fesm2022/sumaris-net.ngx-components.mjs +260 -217
  186. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  187. package/package.json +6 -6
  188. package/src/app/shared/material/datetime/datetime.module.d.ts +1 -1
  189. package/src/app/shared/material/datetime/material.date.d.ts +5 -3
  190. package/src/app/shared/material/datetime/material.dateshort.d.ts +5 -3
  191. package/src/app/shared/material/datetime/material.datetime.d.ts +12 -8
  192. package/src/app/shared/material/latlong/material.latlong.d.ts +1 -1
  193. package/src/app/shared/pipes/maskito.pipe.d.ts +1 -8
  194. package/src/app/shared/pipes/pipes.module.d.ts +1 -1
@@ -126,4 +126,4 @@ UserEventTestFilter = __decorate([
126
126
  EntityClass({ typename: 'UserEventTestFilterVO' })
127
127
  ], UserEventTestFilter);
128
128
  export { UserEventTestFilter };
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC90ZXN0aW5nL3VzZXItZXZlbnQudGVzdGluZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLFdBQVc7QUFDWCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDM0UsT0FBTyxFQUFDLE1BQU0sRUFBd0IsTUFBTSwyQ0FBMkMsQ0FBQztBQUd4RixPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFekUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRXZFLE9BQU8sRUFBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRzNFLFdBQVc7QUFFSixJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEsTUFBcUI7O0lBRXRELE1BQU0sQ0FBQyxVQUFVLENBQTZDO0lBRTlELElBQUksQ0FBUztJQUNiLEtBQUssQ0FBYTtJQUNsQixNQUFNLENBQVM7SUFDZixTQUFTLENBQVM7SUFDbEIsWUFBWSxDQUFTO0lBQ3JCLFFBQVEsQ0FBUztJQUVqQixPQUFPLENBQXFCO0lBQzVCLE9BQU8sQ0FBZTtJQUN0QixJQUFJLENBQVM7SUFDYixTQUFTLENBQVM7SUFDbEIsYUFBYSxDQUFTO0lBRXRCLE1BQU0sQ0FBVTtJQUNoQixVQUFVLENBQVc7SUFDckIsSUFBSSxDQUFXO0lBQ2YsS0FBSyxDQUFVO0lBRWYsT0FBTyxDQUFzQjtJQUU3QjtRQUNFLEtBQUssQ0FBQyxlQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUE0QjtRQUNuQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElB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LEVBQUMsQ0FBQztHQUNwQyxtQkFBbUIsQ0E0RC9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGR5bmFtaWNcbmltcG9ydCB7RW50aXR5Q2xhc3N9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5LmRlY29yYXRvcnMnO1xuaW1wb3J0IHtFbnRpdHksIEVudGl0eUFzT2JqZWN0T3B0aW9uc30gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtNb21lbnR9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0ljb25SZWZ9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge2Zyb21EYXRlSVNPU3RyaW5nLCB0b0RhdGVJU09TdHJpbmd9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlcyc7XG5pbXBvcnQge0V2ZW50TGV2ZWwsIElVc2VyRXZlbnQsIElVc2VyRXZlbnRGaWx0ZXIsIElVc2VyRXZlbnRBY3Rpb259IGZyb20gJy4uL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHtFbnRpdHlGaWx0ZXJ9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZmlsdGVyLm1vZGVsJztcbmltcG9ydCB7RmlsdGVyRm59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge2lzTmlsLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7U3RvcmVPYmplY3R9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuXG4vLyBAZHluYW1pY1xuQEVudGl0eUNsYXNzKHt0eXBlbmFtZTogJ1VzZXJFdmVudFRlc3RWTyd9KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3QgZXh0ZW5kcyBFbnRpdHk8VXNlckV2ZW50VGVzdD4gaW1wbGVtZW50cyBJVXNlckV2ZW50PFVzZXJFdmVudFRlc3Q+IHtcblxuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiBVc2VyRXZlbnRUZXN0O1xuXG4gIHR5cGU6IHN0cmluZztcbiAgbGV2ZWw6IEV2ZW50TGV2ZWw7XG4gIGlzc3Vlcjogc3RyaW5nO1xuICByZWNpcGllbnQ6IHN0cmluZztcbiAgY3JlYXRpb25EYXRlOiBNb21lbnQ7XG4gIHJlYWREYXRlOiBNb21lbnQ7XG5cbiAgbWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb250ZW50OiBzdHJpbmcgfCBhbnk7XG4gIGhhc2g6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gIHJlYWRTaWduYXR1cmU6IHN0cmluZztcblxuICBhdmF0YXI/OiBzdHJpbmc7XG4gIGF2YXRhckljb24/OiBJY29uUmVmO1xuICBpY29uPzogSWNvblJlZjtcbiAgam9iSWQ/OiBudW1iZXI7XG5cbiAgYWN0aW9ucz86IElVc2VyRXZlbnRBY3Rpb25bXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihVc2VyRXZlbnRUZXN0LlRZUEVOQU1FKTtcbiAgfVxuXG4gIGFzT2JqZWN0KG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IHRhcmdldCA9IHN1cGVyLmFzT2JqZWN0KG9wdHMpO1xuICAgIHRhcmdldC5jcmVhdGlvbkRhdGUgPSB0b0RhdGVJU09TdHJpbmcodGhpcy5jcmVhdGlvbkRhdGUpO1xuICAgIHRhcmdldC5yZWFkRGF0ZSA9IHRvRGF0ZUlTT1N0cmluZyh0aGlzLnJlYWREYXRlKTtcblxuICAgIC8vIFNlcmlhbGl6ZSBjb250ZW50XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQuY29udGVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRhcmdldC5jb250ZW50ID0gSlNPTi5zdHJpbmdpZnkodGFyZ2V0LmNvbnRlbnQpO1xuICAgIH1cblxuICAgIGRlbGV0ZSB0YXJnZXQuYXZhdGFyO1xuICAgIGRlbGV0ZSB0YXJnZXQuYXZhdGFySWNvbjtcbiAgICBkZWxldGUgdGFyZ2V0Lmljb247XG4gICAgZGVsZXRlIHRhcmdldC5hY3Rpb25zO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHNvdXJjZSk7IC8vIENvcHkgYWxsIHByb3BlcnRpZXNcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSk7XG4gICAgdGhpcy5jcmVhdGlvbkRhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhzb3VyY2UuY3JlYXRpb25EYXRlKTtcbiAgICB0aGlzLnJlYWREYXRlID0gZnJvbURhdGVJU09TdHJpbmcoc291cmNlLnJlYWREYXRlKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBEZXNlcmlhbGl6ZSBjb250ZW50XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZS5jb250ZW50ID09PSAnc3RyaW5nJyAmJiBzb3VyY2UuY29udGVudC5zdGFydHNXaXRoKCd7JykpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gSlNPTi5wYXJzZShzb3VyY2UuY29udGVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIERlc2VyaWFsaXplIGNvbnRlbnQuY29udGV4dFxuICAgICAgaWYgKHRoaXMuY29udGVudCAmJiB0eXBlb2YgdGhpcy5jb250ZW50LmNvbnRleHQgPT09ICdzdHJpbmcnICYmIHRoaXMuY29udGVudC5jb250ZXh0LnN0YXJ0c1dpdGgoJ3snKSkge1xuICAgICAgICB0aGlzLmNvbnRlbnQuY29udGV4dCA9IEpTT04ucGFyc2UodGhpcy5jb250ZW50LmNvbnRleHQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIFVzZXJFdmVudCBkZXNlcmlhbGl6YXRpb24nLCBlcnIpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBAZHluYW1pY1xuQEVudGl0eUNsYXNzKHt0eXBlbmFtZTogJ1VzZXJFdmVudFRlc3RGaWx0ZXJWTyd9KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3RGaWx0ZXIgZXh0ZW5kcyBFbnRpdHlGaWx0ZXI8VXNlckV2ZW50VGVzdEZpbHRlciwgVXNlckV2ZW50VGVzdD4gaW1wbGVtZW50cyBJVXNlckV2ZW50RmlsdGVyPFVzZXJFdmVudFRlc3Q+IHtcblxuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiBVc2VyRXZlbnRUZXN0RmlsdGVyO1xuXG4gIHR5cGVzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXZlbHM6IEV2ZW50TGV2ZWxbXSA9IFtdO1xuICBpc3N1ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICByZWNpcGllbnRzOiBzdHJpbmdbXSA9IFtdO1xuICBzdGFydERhdGU6IE1vbWVudCA9IG51bGw7XG4gIGluY2x1ZGVkSWRzOiBudW1iZXJbXTtcbiAgZXhjbHVkZVJlYWQgPSBmYWxzZTtcbiAgam9iSWQ6IG51bWJlciA9IG51bGw7XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkge1xuICAgIHN1cGVyLmZyb21PYmplY3Qoc291cmNlLCBvcHRzKTtcbiAgICB0aGlzLnR5cGVzID0gc291cmNlLnR5cGVzIHx8IFtdO1xuICAgIHRoaXMubGV2ZWxzID0gc291cmNlLmxldmVscyB8fCBbXTtcbiAgICB0aGlzLmlzc3VlcnMgPSBzb3VyY2UuaXNzdWVycyB8fCBbXTtcbiAgICB0aGlzLnJlY2lwaWVudHMgPSBzb3VyY2UucmVjaXBpZW50cyB8fCBbXTtcbiAgICB0aGlzLnN0YXJ0RGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKHNvdXJjZS5zdGFydERhdGUpO1xuICAgIHRoaXMuZXhjbHVkZVJlYWQgPSBzb3VyY2UuZXhjbHVkZVJlYWQgfHwgZmFsc2U7XG4gICAgdGhpcy5pbmNsdWRlZElkcyA9IHNvdXJjZS5pbmNsdWRlZElkcyB8fCBbXTtcbiAgICB0aGlzLmpvYklkID0gc291cmNlLmpvYklkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkRmlsdGVyKCk6IEZpbHRlckZuPFVzZXJFdmVudFRlc3Q+W10ge1xuICAgIGNvbnN0IGZpbHRlckZucyA9IHN1cGVyLmJ1aWxkRmlsdGVyKCk7XG5cbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMudHlwZXMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IHRoaXMudHlwZXMuaW5jbHVkZXModC50eXBlKSk7XG4gICAgfVxuICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy5sZXZlbHMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IHRoaXMubGV2ZWxzLmluY2x1ZGVzKHQubGV2ZWwpKTtcbiAgICB9XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLmlzc3VlcnMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IHRoaXMuaXNzdWVycy5pbmNsdWRlcyh0Lmlzc3VlcikpO1xuICAgIH1cbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMucmVjaXBpZW50cykpIHtcbiAgICAgIGZpbHRlckZucy5wdXNoKHQgPT4gdGhpcy5yZWNpcGllbnRzLmluY2x1ZGVzKHQucmVjaXBpZW50KSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTm90TmlsKHRoaXMuc3RhcnREYXRlKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2godCA9PiB0aGlzLnN0YXJ0RGF0ZS5pc1NhbWVPckJlZm9yZSh0LmNyZWF0aW9uRGF0ZSkpO1xuICAgIH1cbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMuaW5jbHVkZWRJZHMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCgodCkgPT4gdGhpcy5pbmNsdWRlZElkcy5pbmNsdWRlcyh0LmlkKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4Y2x1ZGVSZWFkID09PSB0cnVlKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IGlzTmlsKHQucmVhZFNpZ25hdHVyZSkpOyAvLyB0b2RvIG9yIHQuc2lnbmF0dXJlID9cbiAgICB9XG4gICAgaWYgKGlzTm90TmlsKHRoaXMuam9iSWQpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IHRoaXMuam9iSWQgPT09IHQuam9iSWQpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyRm5zO1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEVudGl0eUFzT2JqZWN0T3B0aW9ucyk6IFN0b3JlT2JqZWN0IHtcbiAgICBjb25zdCB0YXJnZXQgPSBzdXBlci5hc09iamVjdChvcHRzKTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG59XG4iXX0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC90ZXN0aW5nL3VzZXItZXZlbnQudGVzdGluZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLFdBQVc7QUFDWCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDM0UsT0FBTyxFQUFDLE1BQU0sRUFBd0IsTUFBTSwyQ0FBMkMsQ0FBQztBQUd4RixPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFekUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRXZFLE9BQU8sRUFBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRzNFLFdBQVc7QUFFSixJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEsTUFBcUI7O0lBRXRELE1BQU0sQ0FBQyxVQUFVLENBQTZDO0lBRTlELElBQUksQ0FBUztJQUNiLEtBQUssQ0FBYTtJQUNsQixNQUFNLENBQVM7SUFDZixTQUFTLENBQVM7SUFDbEIsWUFBWSxDQUFTO0lBQ3JCLFFBQVEsQ0FBUztJQUVqQixPQUFPLENBQXFCO0lBQzVCLE9BQU8sQ0FBZTtJQUN0QixJQUFJLENBQVM7SUFDYixTQUFTLENBQVM7SUFDbEIsYUFBYSxDQUFTO0lBRXRCLE1BQU0sQ0FBVTtJQUNoQixVQUFVLENBQVc7SUFDckIsSUFBSSxDQUFXO0lBQ2YsS0FBSyxDQUFVO0lBRWYsT0FBTyxDQUFzQjtJQUU3QjtRQUNFLEtBQUssQ0FBQyxlQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUE0QjtRQUNuQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElB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QUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YsQ0FBQTtBQTVEWSxtQkFBbUI7SUFEL0IsV0FBVyxDQUFDLEVBQUMsUUFBUSxFQUFFLHVCQUF1QixFQUFDLENBQUM7R0FDcEMsbUJBQW1CLENBNEQvQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBkeW5hbWljXG5pbXBvcnQge0VudGl0eUNsYXNzfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5kZWNvcmF0b3JzJztcbmltcG9ydCB7RW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnN9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7TW9tZW50fSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtJY29uUmVmfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHtmcm9tRGF0ZUlTT1N0cmluZywgdG9EYXRlSVNPU3RyaW5nfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGF0ZXMnO1xuaW1wb3J0IHtFdmVudExldmVsLCBJVXNlckV2ZW50LCBJVXNlckV2ZW50RmlsdGVyLCBJVXNlckV2ZW50QWN0aW9ufSBmcm9tICcuLi91c2VyLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7RW50aXR5RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQge0ZpbHRlckZufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtpc05pbCwgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge1N0b3JlT2JqZWN0fSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcblxuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7dHlwZW5hbWU6ICdVc2VyRXZlbnRUZXN0Vk8nfSlcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRUZXN0IGV4dGVuZHMgRW50aXR5PFVzZXJFdmVudFRlc3Q+IGltcGxlbWVudHMgSVVzZXJFdmVudDxVc2VyRXZlbnRUZXN0PiB7XG5cbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkgPT4gVXNlckV2ZW50VGVzdDtcblxuICB0eXBlOiBzdHJpbmc7XG4gIGxldmVsOiBFdmVudExldmVsO1xuICBpc3N1ZXI6IHN0cmluZztcbiAgcmVjaXBpZW50OiBzdHJpbmc7XG4gIGNyZWF0aW9uRGF0ZTogTW9tZW50O1xuICByZWFkRGF0ZTogTW9tZW50O1xuXG4gIG1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29udGVudDogc3RyaW5nIHwgYW55O1xuICBoYXNoOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xuICByZWFkU2lnbmF0dXJlOiBzdHJpbmc7XG5cbiAgYXZhdGFyPzogc3RyaW5nO1xuICBhdmF0YXJJY29uPzogSWNvblJlZjtcbiAgaWNvbj86IEljb25SZWY7XG4gIGpvYklkPzogbnVtYmVyO1xuXG4gIGFjdGlvbnM/OiBJVXNlckV2ZW50QWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoVXNlckV2ZW50VGVzdC5UWVBFTkFNRSk7XG4gIH1cblxuICBhc09iamVjdChvcHRzPzogRW50aXR5QXNPYmplY3RPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCB0YXJnZXQgPSBzdXBlci5hc09iamVjdChvcHRzKTtcbiAgICB0YXJnZXQuY3JlYXRpb25EYXRlID0gdG9EYXRlSVNPU3RyaW5nKHRoaXMuY3JlYXRpb25EYXRlKTtcbiAgICB0YXJnZXQucmVhZERhdGUgPSB0b0RhdGVJU09TdHJpbmcodGhpcy5yZWFkRGF0ZSk7XG5cbiAgICAvLyBTZXJpYWxpemUgY29udGVudFxuICAgIGlmICh0eXBlb2YgdGFyZ2V0LmNvbnRlbnQgPT09ICdvYmplY3QnKSB7XG4gICAgICB0YXJnZXQuY29udGVudCA9IEpTT04uc3RyaW5naWZ5KHRhcmdldC5jb250ZW50KTtcbiAgICB9XG5cbiAgICBkZWxldGUgdGFyZ2V0LmF2YXRhcjtcbiAgICBkZWxldGUgdGFyZ2V0LmF2YXRhckljb247XG4gICAgZGVsZXRlIHRhcmdldC5pY29uO1xuICAgIGRlbGV0ZSB0YXJnZXQuYWN0aW9ucztcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBzb3VyY2UpOyAvLyBDb3B5IGFsbCBwcm9wZXJ0aWVzXG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHRoaXMuY3JlYXRpb25EYXRlID0gZnJvbURhdGVJU09TdHJpbmcoc291cmNlLmNyZWF0aW9uRGF0ZSk7XG4gICAgdGhpcy5yZWFkRGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKHNvdXJjZS5yZWFkRGF0ZSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRGVzZXJpYWxpemUgY29udGVudFxuICAgICAgaWYgKHR5cGVvZiBzb3VyY2UuY29udGVudCA9PT0gJ3N0cmluZycgJiYgc291cmNlLmNvbnRlbnQuc3RhcnRzV2l0aCgneycpKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IEpTT04ucGFyc2Uoc291cmNlLmNvbnRlbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXNlcmlhbGl6ZSBjb250ZW50LmNvbnRleHRcbiAgICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdHlwZW9mIHRoaXMuY29udGVudC5jb250ZXh0ID09PSAnc3RyaW5nJyAmJiB0aGlzLmNvbnRlbnQuY29udGV4dC5zdGFydHNXaXRoKCd7JykpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LmNvbnRleHQgPSBKU09OLnBhcnNlKHRoaXMuY29udGVudC5jb250ZXh0KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyBVc2VyRXZlbnQgZGVzZXJpYWxpemF0aW9uJywgZXJyKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7dHlwZW5hbWU6ICdVc2VyRXZlbnRUZXN0RmlsdGVyVk8nfSlcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRUZXN0RmlsdGVyIGV4dGVuZHMgRW50aXR5RmlsdGVyPFVzZXJFdmVudFRlc3RGaWx0ZXIsIFVzZXJFdmVudFRlc3Q+IGltcGxlbWVudHMgSVVzZXJFdmVudEZpbHRlcjxVc2VyRXZlbnRUZXN0PiB7XG5cbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkgPT4gVXNlckV2ZW50VGVzdEZpbHRlcjtcblxuICB0eXBlczogc3RyaW5nW10gPSBbXTtcbiAgbGV2ZWxzOiBFdmVudExldmVsW10gPSBbXTtcbiAgaXNzdWVyczogc3RyaW5nW10gPSBbXTtcbiAgcmVjaXBpZW50czogc3RyaW5nW10gPSBbXTtcbiAgc3RhcnREYXRlOiBNb21lbnQgPSBudWxsO1xuICBpbmNsdWRlZElkczogbnVtYmVyW107XG4gIGV4Y2x1ZGVSZWFkID0gZmFsc2U7XG4gIGpvYklkOiBudW1iZXIgPSBudWxsO1xuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpIHtcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSwgb3B0cyk7XG4gICAgdGhpcy50eXBlcyA9IHNvdXJjZS50eXBlcyB8fCBbXTtcbiAgICB0aGlzLmxldmVscyA9IHNvdXJjZS5sZXZlbHMgfHwgW107XG4gICAgdGhpcy5pc3N1ZXJzID0gc291cmNlLmlzc3VlcnMgfHwgW107XG4gICAgdGhpcy5yZWNpcGllbnRzID0gc291cmNlLnJlY2lwaWVudHMgfHwgW107XG4gICAgdGhpcy5zdGFydERhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhzb3VyY2Uuc3RhcnREYXRlKTtcbiAgICB0aGlzLmV4Y2x1ZGVSZWFkID0gc291cmNlLmV4Y2x1ZGVSZWFkIHx8IGZhbHNlO1xuICAgIHRoaXMuaW5jbHVkZWRJZHMgPSBzb3VyY2UuaW5jbHVkZWRJZHMgfHwgW107XG4gICAgdGhpcy5qb2JJZCA9IHNvdXJjZS5qb2JJZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEZpbHRlcigpOiBGaWx0ZXJGbjxVc2VyRXZlbnRUZXN0PltdIHtcbiAgICBjb25zdCBmaWx0ZXJGbnMgPSBzdXBlci5idWlsZEZpbHRlcigpO1xuXG4gICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLnR5cGVzKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2godCA9PiB0aGlzLnR5cGVzLmluY2x1ZGVzKHQudHlwZSkpO1xuICAgIH1cbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMubGV2ZWxzKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2godCA9PiB0aGlzLmxldmVscy5pbmNsdWRlcyh0LmxldmVsKSk7XG4gICAgfVxuICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy5pc3N1ZXJzKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2godCA9PiB0aGlzLmlzc3VlcnMuaW5jbHVkZXModC5pc3N1ZXIpKTtcbiAgICB9XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLnJlY2lwaWVudHMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IHRoaXMucmVjaXBpZW50cy5pbmNsdWRlcyh0LnJlY2lwaWVudCkpO1xuICAgIH1cblxuICAgIGlmIChpc05vdE5pbCh0aGlzLnN0YXJ0RGF0ZSkpIHtcbiAgICAgIGZpbHRlckZucy5wdXNoKHQgPT4gdGhpcy5zdGFydERhdGUuaXNTYW1lT3JCZWZvcmUodC5jcmVhdGlvbkRhdGUpKTtcbiAgICB9XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLmluY2x1ZGVkSWRzKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2goKHQpID0+IHRoaXMuaW5jbHVkZWRJZHMuaW5jbHVkZXModC5pZCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5leGNsdWRlUmVhZCA9PT0gdHJ1ZSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2godCA9PiBpc05pbCh0LnJlYWRTaWduYXR1cmUpKTsgLy8gdG9kbyBvciB0LnNpZ25hdHVyZSA/XG4gICAgfVxuICAgIGlmIChpc05vdE5pbCh0aGlzLmpvYklkKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2godCA9PiB0aGlzLmpvYklkID09PSB0LmpvYklkKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlckZucztcbiAgfVxuXG4gIGFzT2JqZWN0KG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiBTdG9yZU9iamVjdCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gc3VwZXIuYXNPYmplY3Qob3B0cyk7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxufVxuIl19
@@ -113,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
113
113
  type: Inject,
114
114
  args: [ENVIRONMENT]
115
115
  }] }] });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3Rlc3RpbmcvdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLHdCQUF3QixFQUE4QyxNQUFNLHVCQUF1QixDQUFDO0FBQzVHLE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSzFELE9BQU8sRUFBYyxXQUFXLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUlwRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDdEUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxhQUFhLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFHOUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUE0RDtJQU14RjtJQUNBO0lBQ0E7SUFDQTtJQUNxQjtJQVJ6QixXQUFXLEdBQUcsSUFBSSxlQUFlLENBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBbUIsQ0FBQztJQUV4RCxZQUNZLE9BQXVCLEVBQ3ZCLGNBQThCLEVBQzlCLE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQ04sV0FBd0I7UUFFdkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUNqRCxPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUk7Z0JBQ2Isa0JBQWtCLEVBQUUsSUFBSTthQUN6QjtZQUNELFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVTtTQUNwQyxDQUFDLENBQUM7UUFaTyxZ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QztRQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBRWxELE1BQU0sR0FBRyxHQUE4QixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUV2RCw4RUFBOEU7UUFDOUUsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVyRCxpQkFBaUI7UUFDakIsTUFBTSxVQUFVLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDeEMsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRTtZQUMxQixHQUFHLENBQUMsU0FBUyxHQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQ2xGLEVBQUMsR0FBRyxJQUFJLEVBQUUsV0FBVyxFQUFlLFVBQVUsRUFBb0MsQ0FDbkYsQ0FBQztTQUNIO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7dUdBM0hVLG9CQUFvQiw0SUFVckIsV0FBVzsyR0FWVixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVU7OzBCQVdOLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RVc2VyRXZlbnRTZXJ2aWNlLCBVc2VyRXZlbnRMb2FkT3B0aW9ucywgVXNlckV2ZW50V2F0Y2hPcHRpb25zfSBmcm9tICcuLi91c2VyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtHcmFwaHFsU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQge0FjY291bnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge0ZldGNoUG9saWN5fSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7RW50aXR5U2VydmljZUxvYWRPcHRpb25zLCBMb2FkUmVzdWx0fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtTb3J0RGlyZWN0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7RW50aXR5VXRpbHN9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1VzZXJFdmVudFRlc3QsIFVzZXJFdmVudFRlc3RGaWx0ZXJ9IGZyb20gJy4vdXNlci1ldmVudC50ZXN0aW5nLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3RTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RVc2VyRXZlbnRTZXJ2aWNlPFVzZXJFdmVudFRlc3QsIFVzZXJFdmVudFRlc3RGaWx0ZXI+IHtcblxuICBwcml2YXRlICR1c2VyRXZlbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyRXZlbnRUZXN0W10+KFtdKTtcbiAgcHJpdmF0ZSAkbmV3VXNlckV2ZW50cyA9IG5ldyBTdWJqZWN0PFVzZXJFdmVudFRlc3RbXT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50XG4gICkge1xuICAgIHN1cGVyKGdyYXBocWwsIGFjY291bnRTZXJ2aWNlLCBuZXR3b3JrLCB0cmFuc2xhdGUsIHtcbiAgICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgbG9hZEFsbDogbnVsbCxcbiAgICAgICAgbG9hZEFsbFdpdGhDb250ZW50OiBudWxsXG4gICAgICB9LFxuICAgICAgcHJvZHVjdGlvbjogZW52aXJvbm1lbnQ/LnByb2R1Y3Rpb25cbiAgICB9KTtcbiAgfVxuXG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IFVzZXJFdmVudFRlc3Qge1xuICAgIHJldHVybiBVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoc291cmNlKTtcbiAgfVxuXG4gIGFzeW5jIGFkZChlbnRpdHk6IFVzZXJFdmVudFRlc3QpOiBQcm9taXNlPFVzZXJFdmVudFRlc3Q+IHtcbiAgICBlbnRpdHkgPSBhd2FpdCB0aGlzLnByb2Nlc3NVc2VyRXZlbnQoZW50aXR5KTtcbiAgICBlbnRpdHkuaWQgPSAodGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDApICsgMTtcbiAgICB0aGlzLiR1c2VyRXZlbnRzLm5leHQoW1xuICAgICAgZW50aXR5LFxuICAgICAgLi4udGhpcy4kdXNlckV2ZW50cy52YWx1ZVxuICAgIF0pO1xuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KCh0aGlzLl9jb3VudFN1YmplY3QudmFsdWUgfHwgMCkgKyAxKTtcbiAgICB0aGlzLiRuZXdVc2VyRXZlbnRzLm5leHQoW2VudGl0eV0pO1xuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBhc0ZpbHRlcihmaWx0ZXI6IFBhcnRpYWw8YW55Pik6IGFueSB7XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGNvdW50KGZpbHRlcjogYW55LCBvcHRpb25zPzogeyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDApO1xuICB9XG5cbiAgZGVsZXRlKGVudGl0eTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBkZWxldGVBbGwoZGF0YTogYW55W10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGxpc3RlbkFsbENoYW5nZXMoZmlsdGVyOiBhbnksIG9wdGlvbnM/OiBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgJiB7IGludGVydmFsPzogbnVtYmVyOyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuJG5ld1VzZXJFdmVudHMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzYXZlKGVudGl0eTogYW55LCBvcHRpb25zPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcblxuICAgIGNvbnN0IHRvU2F2ZSA9IHRoaXMuJHVzZXJFdmVudHMudmFsdWU/LmZpbmQodmFsdWUgPT4gdmFsdWUuaWQgPT0gZW50aXR5Py5pZCk7XG4gICAgT2JqZWN0LmFzc2lnbih0b1NhdmUsIGVudGl0eSk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXN5bmMgc2F2ZUFsbChkYXRhOiBhbnlbXSwgb3B0cz86IGFueSk6IFByb21pc2U8YW55W10+IHtcblxuICAgIGZvciAoY29uc3QgZW50aXR5IG9mIChkYXRhIHx8IFtdKSkge1xuICAgICAgYXdhaXQgdGhpcy5zYXZlKGVudGl0eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuJHVzZXJFdmVudHMudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVmYXVsdFJlY2lwaWVudCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmFjY291bnRTZXJ2aWNlLmlzTG9naW4oKSA/IHRoaXMuYWNjb3VudFNlcnZpY2UucGVyc29uLnB1YmtleSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sIGZpbHRlcj86IFBhcnRpYWw8YW55Piwgb3B0cz86IFVzZXJFdmVudFdhdGNoT3B0aW9ucyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuJHVzZXJFdmVudHMucGlwZShcbiAgICAgIG1hcCh1c2VyRXZlbnRzID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSAodXNlckV2ZW50cyB8fCBbXSkuc2xpY2Uob2Zmc2V0fHwwLCBvZmZzZXQgKyBzaXplKTtcbiAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLiR1c2VyRXZlbnRzLnZhbHVlPy5sZW5ndGggfHwgMDtcblxuICAgICAgICBjb25zdCByZXMgPSA8TG9hZFJlc3VsdDxVc2VyRXZlbnRUZXN0Pj57IGRhdGEsIHRvdGFsIH07XG5cbiAgICAgICAgLy8gTXVzdCByZS1vcmRlciBiZWNhdXNlIG9mIGxpc3RlbkNoYW5nZXMgcmVzdWx0IHdpbGwgYWRkIG5ldyBldmVudCBhdCB0aGUgZW5kXG4gICAgICAgIGRhdGEgPSBFbnRpdHlVdGlscy5zb3J0KGRhdGEsIHNvcnRCeSwgc29ydERpcmVjdGlvbik7XG5cbiAgICAgICAgLy8gQWRkIGZldGNoIG1vcmVcbiAgICAgICAgY29uc3QgbmV4dE9mZnNldCA9IG9mZnNldCArIGRhdGEubGVuZ3RoO1xuICAgICAgICBpZiAobmV4dE9mZnNldCA8IHJlcy50b3RhbCkge1xuICAgICAgICAgIHJlcy5mZXRjaE1vcmUgPSAgKF8pID0+IHRoaXMubG9hZEFsbChuZXh0T2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlcixcbiAgICAgICAgICAgIHsuLi5vcHRzLCBmZXRjaFBvbGljeTogPEZldGNoUG9saWN5Piduby1jYWNoZSd9IGFzIHVua25vd24gYXMgVXNlckV2ZW50TG9hZE9wdGlvbnNcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgKTtcblxuICB9XG5cbiAgbG9hZEFsbChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLCBmaWx0ZXI/OiBQYXJ0aWFsPGFueT4sXG4gICAgICAgICAgb3B0cz86IFVzZXJFdmVudExvYWRPcHRpb25zKTogUHJvbWlzZTxMb2FkUmVzdWx0PGFueT4+IHtcbiAgICBsZXQgZGF0YSA9ICh0aGlzLiR1c2VyRXZlbnRzLnZhbHVlIHx8IFtdKS5zbGljZShvZmZzZXR8fDAsIG9mZnNldCArIHNpemUpO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG5cbiAgICBjb25zdCByZXMgPSA8TG9hZFJlc3VsdDxVc2VyRXZlbnRUZXN0Pj57IGRhdGEsIHRvdGFsIH07XG5cbiAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgLy8gQWRkIGZldGNoIG1vcmVcbiAgICBjb25zdCBuZXh0T2Zmc2V0ID0gb2Zmc2V0ICsgZGF0YS5sZW5ndGg7XG4gICAgaWYgKG5leHRPZmZzZXQgPCByZXMudG90YWwpIHtcbiAgICAgIHJlcy5mZXRjaE1vcmUgPSAgKF8pID0+IHRoaXMubG9hZEFsbChuZXh0T2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlcixcbiAgICAgICAgey4uLm9wdHMsIGZldGNoUG9saWN5OiA8RmV0Y2hQb2xpY3k+J25vLWNhY2hlJ30gYXMgdW5rbm93biBhcyBVc2VyRXZlbnRMb2FkT3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gIH1cbn1cbiJdfQ==
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3Rlc3RpbmcvdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLHdCQUF3QixFQUE4QyxNQUFNLHVCQUF1QixDQUFDO0FBQzVHLE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSzFELE9BQU8sRUFBYyxXQUFXLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUlwRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDdEUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxhQUFhLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFHOUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUE0RDtJQU14RjtJQUNBO0lBQ0E7SUFDQTtJQUNxQjtJQVJ6QixXQUFXLEdBQUcsSUFBSSxlQUFlLENBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBbUIsQ0FBQztJQUV4RCxZQUNZLE9BQXVCLEVBQ3ZCLGNBQThCLEVBQzlCLE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQ04sV0FBd0I7UUFFdkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUNqRCxPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUk7Z0JBQ2Isa0JBQWtCLEVBQUUsSUFBSTthQUN6QjtZQUNELFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVTtTQUNwQyxDQUFDLENBQUM7UUFaTyxZ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TSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzFFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFFbEQsTUFBTSxHQUFHLEdBQThCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBRXZELDhFQUE4RTtRQUM5RSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRXJELGlCQUFpQjtRQUNqQixNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN4QyxJQUFJLFVBQVUsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsR0FBRyxDQUFDLFNBQVMsR0FBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUNsRixFQUFDLEdBQUcsSUFBSSxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQW9DLENBQ25GLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7dUdBM0hVLG9CQUFvQiw0SUFVckIsV0FBVzsyR0FWVixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVU7OzBCQVdOLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RVc2VyRXZlbnRTZXJ2aWNlLCBVc2VyRXZlbnRMb2FkT3B0aW9ucywgVXNlckV2ZW50V2F0Y2hPcHRpb25zfSBmcm9tICcuLi91c2VyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtHcmFwaHFsU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQge0FjY291bnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge0ZldGNoUG9saWN5fSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7RW50aXR5U2VydmljZUxvYWRPcHRpb25zLCBMb2FkUmVzdWx0fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtTb3J0RGlyZWN0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7RW50aXR5VXRpbHN9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1VzZXJFdmVudFRlc3QsIFVzZXJFdmVudFRlc3RGaWx0ZXJ9IGZyb20gJy4vdXNlci1ldmVudC50ZXN0aW5nLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3RTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RVc2VyRXZlbnRTZXJ2aWNlPFVzZXJFdmVudFRlc3QsIFVzZXJFdmVudFRlc3RGaWx0ZXI+IHtcblxuICBwcml2YXRlICR1c2VyRXZlbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyRXZlbnRUZXN0W10+KFtdKTtcbiAgcHJpdmF0ZSAkbmV3VXNlckV2ZW50cyA9IG5ldyBTdWJqZWN0PFVzZXJFdmVudFRlc3RbXT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50XG4gICkge1xuICAgIHN1cGVyKGdyYXBocWwsIGFjY291bnRTZXJ2aWNlLCBuZXR3b3JrLCB0cmFuc2xhdGUsIHtcbiAgICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgbG9hZEFsbDogbnVsbCxcbiAgICAgICAgbG9hZEFsbFdpdGhDb250ZW50OiBudWxsXG4gICAgICB9LFxuICAgICAgcHJvZHVjdGlvbjogZW52aXJvbm1lbnQ/LnByb2R1Y3Rpb25cbiAgICB9KTtcbiAgfVxuXG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IFVzZXJFdmVudFRlc3Qge1xuICAgIHJldHVybiBVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoc291cmNlKTtcbiAgfVxuXG4gIGFzeW5jIGFkZChlbnRpdHk6IFVzZXJFdmVudFRlc3QpOiBQcm9taXNlPFVzZXJFdmVudFRlc3Q+IHtcbiAgICBlbnRpdHkgPSBhd2FpdCB0aGlzLnByb2Nlc3NVc2VyRXZlbnQoZW50aXR5KTtcbiAgICBlbnRpdHkuaWQgPSAodGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDApICsgMTtcbiAgICB0aGlzLiR1c2VyRXZlbnRzLm5leHQoW1xuICAgICAgZW50aXR5LFxuICAgICAgLi4udGhpcy4kdXNlckV2ZW50cy52YWx1ZVxuICAgIF0pO1xuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KCh0aGlzLl9jb3VudFN1YmplY3QudmFsdWUgfHwgMCkgKyAxKTtcbiAgICB0aGlzLiRuZXdVc2VyRXZlbnRzLm5leHQoW2VudGl0eV0pO1xuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBhc0ZpbHRlcihmaWx0ZXI6IFBhcnRpYWw8YW55Pik6IGFueSB7XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGNvdW50KGZpbHRlcjogYW55LCBvcHRpb25zPzogeyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDApO1xuICB9XG5cbiAgZGVsZXRlKGVudGl0eTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBkZWxldGVBbGwoZGF0YTogYW55W10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGxpc3RlbkFsbENoYW5nZXMoZmlsdGVyOiBhbnksIG9wdGlvbnM/OiBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgJiB7IGludGVydmFsPzogbnVtYmVyOyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuJG5ld1VzZXJFdmVudHMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzYXZlKGVudGl0eTogYW55LCBvcHRpb25zPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcblxuICAgIGNvbnN0IHRvU2F2ZSA9IHRoaXMuJHVzZXJFdmVudHMudmFsdWU/LmZpbmQodmFsdWUgPT4gdmFsdWUuaWQgPT0gZW50aXR5Py5pZCk7XG4gICAgT2JqZWN0LmFzc2lnbih0b1NhdmUsIGVudGl0eSk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXN5bmMgc2F2ZUFsbChkYXRhOiBhbnlbXSwgb3B0cz86IGFueSk6IFByb21pc2U8YW55W10+IHtcblxuICAgIGZvciAoY29uc3QgZW50aXR5IG9mIChkYXRhIHx8IFtdKSkge1xuICAgICAgYXdhaXQgdGhpcy5zYXZlKGVudGl0eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuJHVzZXJFdmVudHMudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVmYXVsdFJlY2lwaWVudCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmFjY291bnRTZXJ2aWNlLmlzTG9naW4oKSA/IHRoaXMuYWNjb3VudFNlcnZpY2UucGVyc29uLnB1YmtleSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sIGZpbHRlcj86IFBhcnRpYWw8YW55Piwgb3B0cz86IFVzZXJFdmVudFdhdGNoT3B0aW9ucyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuJHVzZXJFdmVudHMucGlwZShcbiAgICAgIG1hcCh1c2VyRXZlbnRzID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSAodXNlckV2ZW50cyB8fCBbXSkuc2xpY2Uob2Zmc2V0fHwwLCBvZmZzZXQgKyBzaXplKTtcbiAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLiR1c2VyRXZlbnRzLnZhbHVlPy5sZW5ndGggfHwgMDtcblxuICAgICAgICBjb25zdCByZXMgPSA8TG9hZFJlc3VsdDxVc2VyRXZlbnRUZXN0Pj57IGRhdGEsIHRvdGFsIH07XG5cbiAgICAgICAgLy8gTXVzdCByZS1vcmRlciBiZWNhdXNlIG9mIGxpc3RlbkNoYW5nZXMgcmVzdWx0IHdpbGwgYWRkIG5ldyBldmVudCBhdCB0aGUgZW5kXG4gICAgICAgIGRhdGEgPSBFbnRpdHlVdGlscy5zb3J0KGRhdGEsIHNvcnRCeSwgc29ydERpcmVjdGlvbik7XG5cbiAgICAgICAgLy8gQWRkIGZldGNoIG1vcmVcbiAgICAgICAgY29uc3QgbmV4dE9mZnNldCA9IG9mZnNldCArIGRhdGEubGVuZ3RoO1xuICAgICAgICBpZiAobmV4dE9mZnNldCA8IHJlcy50b3RhbCkge1xuICAgICAgICAgIHJlcy5mZXRjaE1vcmUgPSAgKF8pID0+IHRoaXMubG9hZEFsbChuZXh0T2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlcixcbiAgICAgICAgICAgIHsuLi5vcHRzLCBmZXRjaFBvbGljeTogPEZldGNoUG9saWN5Piduby1jYWNoZSd9IGFzIHVua25vd24gYXMgVXNlckV2ZW50TG9hZE9wdGlvbnNcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgKTtcblxuICB9XG5cbiAgbG9hZEFsbChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLCBmaWx0ZXI/OiBQYXJ0aWFsPGFueT4sXG4gICAgICAgICAgb3B0cz86IFVzZXJFdmVudExvYWRPcHRpb25zKTogUHJvbWlzZTxMb2FkUmVzdWx0PGFueT4+IHtcbiAgICBsZXQgZGF0YSA9ICh0aGlzLiR1c2VyRXZlbnRzLnZhbHVlIHx8IFtdKS5zbGljZShvZmZzZXR8fDAsIG9mZnNldCArIHNpemUpO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG5cbiAgICBjb25zdCByZXMgPSA8TG9hZFJlc3VsdDxVc2VyRXZlbnRUZXN0Pj57IGRhdGEsIHRvdGFsIH07XG5cbiAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgLy8gQWRkIGZldGNoIG1vcmVcbiAgICBjb25zdCBuZXh0T2Zmc2V0ID0gb2Zmc2V0ICsgZGF0YS5sZW5ndGg7XG4gICAgaWYgKG5leHRPZmZzZXQgPCByZXMudG90YWwpIHtcbiAgICAgIHJlcy5mZXRjaE1vcmUgPSAgKF8pID0+IHRoaXMubG9hZEFsbChuZXh0T2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlcixcbiAgICAgICAgey4uLm9wdHMsIGZldGNoUG9saWN5OiA8RmV0Y2hQb2xpY3k+J25vLWNhY2hlJ30gYXMgdW5rbm93biBhcyBVc2VyRXZlbnRMb2FkT3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gIH1cbn1cbiJdfQ==
@@ -509,4 +509,4 @@ export class AbstractUserEventService extends BaseGraphqlService {
509
509
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AbstractUserEventService, decorators: [{
510
510
  type: Directive
511
511
  }], ctorParameters: () => [{ type: i1.GraphqlService }, { type: i2.AccountService }, { type: i3.NetworkService }, { type: i4.TranslateService }, { type: undefined }] });
512
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC91c2VyLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFXNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHM0YsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLGdEQUFnRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7OztBQUlwRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsa0JBQWtCLENBQUMsQ0FBQztBQTJFMUcsTUFBTSxPQUFnQix3QkFVcEIsU0FBUSxrQkFBNEI7SUFrQnhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFuQk8sT0FBTyxDQUFJO0lBQ1gsU0FBUyxDQUFhO0lBQ3RCLGFBQWEsQ0FBYTtJQUMxQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0Msd0JBQXdCLENBQWtD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IEluamVjdGlvblRva2VuLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBTb2NpYWxFcnJvckNvZGVzIH0gZnJvbSAnLi4vc29jaWFsLmVycm9ycyc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVVzZXJFdmVudCwgSVVzZXJFdmVudEZpbHRlciB9IGZyb20gJy4vdXNlci1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge1xuICBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucyxcbiAgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLFxuICBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMsXG4gIElFbnRpdGllc1NlcnZpY2UsXG4gIExvYWRSZXN1bHQsXG4gIFBhZ2UsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzRW1wdHlBcnJheSwgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgdG9OdW1iZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZUdyYXBocWxTZXJ2aWNlLCBCYXNlR3JhcGhxbFNlcnZpY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9iYXNlLWdyYXBocWwtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlscyB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IERhdGVVdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlZC9kYXRlcyc7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgSVN0YXJ0YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgTUlOSUZZX0VOVElUWV9GT1JfUE9EIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9yZWZlcmVudGlhbC5tb2RlbCc7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGUgfSBmcm9tICdncmFwaHFsL2luZGV4JztcbmltcG9ydCB7IE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2Jhc2UtZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgQVBQX1VTRVJfRVZFTlRfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJVXNlckV2ZW50U2VydmljZTxhbnksIGFueT4+KCdVc2VyRXZlbnRTZXJ2aWNlJyk7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBVc2VyRXZlbnRMb2FkT3B0aW9ucyBleHRlbmRzIEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zIHtcbiAgd2l0aENvbnRlbnQ/OiBib29sZWFuOyAvLyBEZWZhdWx0IHRvIGZhbHNlXG59XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVXNlckV2ZW50V2F0Y2hPcHRpb25zIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zIHtcbiAgd2l0aENvbnRlbnQ/OiBib29sZWFuOyAvLyBEZWZhdWx0IHRvIGZhbHNlXG59XG5leHBvcnQgaW50ZXJmYWNlIElVc2VyRXZlbnRRdWVyaWVzIHtcbiAgbG9hZEFsbDogYW55O1xuICBsb2FkQWxsV2l0aENvbnRlbnQ6IGFueTtcbiAgY291bnQ/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudE11dGF0aW9ucyB7XG4gIHNhdmU6IGFueTtcbiAgbWFya0FzUmVhZD86IGFueTtcbiAgZGVsZXRlQnlJZHM6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVXNlckV2ZW50U3Vic2NyaXB0aW9ucyB7XG4gIGxpc3RlbkFsbENoYW5nZXM6IGFueTtcbiAgbGlzdGVuQ291bnRDaGFuZ2VzPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyRXZlbnRMaXN0ZW5lcjxFIGV4dGVuZHMgSVVzZXJFdmVudDxFLCBJRD4sIElEID0gbnVtYmVyPiB7XG4gIGFjY2VwdDogKEUpID0+IGJvb2xlYW47XG4gIG9uUmVjZWl2ZWQ/OiAoRSkgPT4gUHJvbWlzZTxFPiB8IEUgfCB1bmRlZmluZWQ7XG4gIG9uUmVhZD86IChFKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyRXZlbnRTZXJ2aWNlT3B0aW9uczxcbiAgUSBleHRlbmRzIElVc2VyRXZlbnRRdWVyaWVzID0gSVVzZXJFdmVudFF1ZXJpZXMsXG4gIE0gZXh0ZW5kcyBJVXNlckV2ZW50TXV0YXRpb25zID0gSVVzZXJFdmVudE11dGF0aW9ucyxcbiAgUyBleHRlbmRzIElVc2VyRXZlbnRTdWJzY3JpcHRpb25zID0gSVVzZXJFdmVudFN1YnNjcmlwdGlvbnNcbiAgPiBleHRlbmRzIEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnMge1xuICBxdWVyaWVzOiBRO1xuICBtdXRhdGlvbnM/OiBQYXJ0aWFsPE0+O1xuICBzdWJzY3JpcHRpb25zPzogUGFydGlhbDxTPjtcbiAgd2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5PzogTXV0YWJsZVdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVXNlckV2ZW50U2VydmljZTxcbiAgRSBleHRlbmRzIElVc2VyRXZlbnQ8RSwgSUQ+LFxuICBGIGV4dGVuZHMgSVVzZXJFdmVudEZpbHRlcjxFLCBJRD4sXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIFVzZXJFdmVudFdhdGNoT3B0aW9ucyA9IFVzZXJFdmVudFdhdGNoT3B0aW9ucyxcbiAgTE8gZXh0ZW5kcyBVc2VyRXZlbnRMb2FkT3B0aW9ucyA9IFVzZXJFdmVudExvYWRPcHRpb25zXG4gID5cbiAgZXh0ZW5kcyBJRW50aXRpZXNTZXJ2aWNlPEUsIEYsIFdPPiwgSVN0YXJ0YWJsZVNlcnZpY2Uge1xuXG4gIGNvdW50U3ViamVjdDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIGFkZChlbnRpdHk6IEUpOiBQcm9taXNlPEU+O1xuXG4gIGxvYWQoaWQ6IElELCBvcHRzPzogTE8pOiBQcm9taXNlPEU+O1xuXG4gIGNvdW50KGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGxpc3RlbkNvdW50Q2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IFdPICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxFW10+O1xuXG4gIHNhdmUoZW50aXR5OiBFLCBvcHRpb25zPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zKTogUHJvbWlzZTxFPjtcblxuICBkZWxldGUoZW50aXR5OiBFKTogUHJvbWlzZTxhbnk+O1xuXG4gIG1hcmtBbGxBc1JlYWQoZW50aXRpZXM6IEVbXSk7XG5cbiAgcmVnaXN0ZXJMaXN0ZW5lcihsaXN0ZW5lcjogSVVzZXJFdmVudExpc3RlbmVyPEUsIElEPik7XG5cbiAgcmVzZXRDb3VudCgpO1xufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFVzZXJFdmVudFNlcnZpY2U8XG4gIEUgZXh0ZW5kcyBJVXNlckV2ZW50PEUsIElELCBhbnk+LFxuICBGIGV4dGVuZHMgSVVzZXJFdmVudEZpbHRlcjxFLCBJRCwgYW55PixcbiAgSUQgPSBudW1iZXIsXG4gIFdPIGV4dGVuZHMgVXNlckV2ZW50V2F0Y2hPcHRpb25zID0gVXNlckV2ZW50V2F0Y2hPcHRpb25zLFxuICBMTyBleHRlbmRzIFVzZXJFdmVudExvYWRPcHRpb25zID0gVXNlckV2ZW50TG9hZE9wdGlvbnMsXG4gIFEgZXh0ZW5kcyBJVXNlckV2ZW50UXVlcmllcyA9IElVc2VyRXZlbnRRdWVyaWVzLFxuICBNIGV4dGVuZHMgSVVzZXJFdmVudE11dGF0aW9ucyA9IElVc2VyRXZlbnRNdXRhdGlvbnMsXG4gIFMgZXh0ZW5kcyBJVXNlckV2ZW50U3Vic2NyaXB0aW9ucyA9IElVc2VyRXZlbnRTdWJzY3JpcHRpb25zXG4gID5cbiAgZXh0ZW5kcyBCYXNlR3JhcGhxbFNlcnZpY2U8RSwgRiwgSUQ+XG4gIGltcGxlbWVudHMgSVVzZXJFdmVudFNlcnZpY2U8RSwgRiwgSUQsIFdPLCBMTz4sIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJpZXM6IFE7XG4gIHByb3RlY3RlZCByZWFkb25seSBtdXRhdGlvbnM6IFBhcnRpYWw8TT47XG4gIHByb3RlY3RlZCByZWFkb25seSBzdWJzY3JpcHRpb25zOiBQYXJ0aWFsPFM+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvdW50U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeTogTXV0YWJsZVdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeTtcbiAgcHJvdGVjdGVkIHJlc2V0Q291bnREYXRlOiBNb21lbnQ7XG4gIHByb3RlY3RlZCBsaXN0ZW5lcnM6IElVc2VyRXZlbnRMaXN0ZW5lcjxFLCBJRD5bXSA9IFtdO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIF9saXN0ZW5TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBnZXQgY291bnRTdWJqZWN0KCk6IFN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvdW50U3ViamVjdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3B0aW9uczogVXNlckV2ZW50U2VydmljZU9wdGlvbnM8USwgTSwgUz5cbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCwgb3B0aW9ucyk7XG4gICAgdGhpcy5xdWVyaWVzID0gb3B0aW9ucy5xdWVyaWVzO1xuICAgIHRoaXMubXV0YXRpb25zID0gb3B0aW9ucy5tdXRhdGlvbnMgfHwgPFBhcnRpYWw8TT4+e307XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gb3B0aW9ucy5zdWJzY3JpcHRpb25zIHx8IDxQYXJ0aWFsPFM+Pnt9O1xuICAgIHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID0gb3B0aW9ucy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgfHwgJ3VwZGF0ZS1jYWNoZSc7XG4gICAgdGhpcy5fbG9nUHJlZml4ID0gJ1t1c2VyLWV2ZW50LXNlcnZpY2VdICc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgLy8gVXBkYXRlIGNvbXBvbmVudCB3aGVuIHJlZnJlc2ggaXMgbmVlZCAoPWxvZ2luIGV2ZW50cylcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIG1lcmdlKFxuICAgICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4sXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dvdXQsXG4gICAgICAgIHRpbWVyKDEwMDApIC8vIFN0YXJ0cyB3aXRoIC0gIGZpcnN0IGF0dGVtcHQgaWYgYWNjb3VudCBpcyByZWFkeVxuICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyBXYWl0IGFjY291bnQgc2VydmljZSByZWFkeSAoY2FuIGJlIHJlc3RhcnRlZClcbiAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmFjY291bnRTZXJ2aWNlLnJlYWR5KCkpLFxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmFjY291bnRTZXJ2aWNlLmlzTG9naW4oKSksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUobG9naW4gPT4ge1xuICAgICAgICAgIGlmIChsb2dpbikge1xuICAgICAgICAgICAgdGhpcy5vbkxvZ2luKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25Mb2dvdXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGFic3RyYWN0IGFzRmlsdGVyKGZpbHRlcjogUGFydGlhbDxGPik6IEY7XG5cbiAgYWJzdHJhY3QgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IEU7XG5cbiAgd2F0Y2hBbGwob2Zmc2V0OiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbiwgZmlsdGVyPzogUGFydGlhbDxGPiwgb3B0aW9ucz86IFdPKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PEU+PiB7XG4gICAgcmV0dXJuIHRoaXMud2F0Y2hQYWdlKDxQYWdlPnsgb2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24gfSwgZmlsdGVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHdhdGNoUGFnZShwYWdlOiBQYWdlLFxuICAgICAgICAgICAgZmlsdGVyPzogUGFydGlhbDxGPixcbiAgICAgICAgICAgIG9wdHM/OiBXTyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxFPj4ge1xuXG4gICAgbGV0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgIGZpbHRlciA9IHRoaXMuZGVmYXVsdEZpbHRlcigpO1xuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Mb2FkaW5nIHVzZXIgZXZlbnRzLi4uYCwgZmlsdGVyKTtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIC8vIEZvcmNlIHJlY2lwaWVudCB0byBjdXJyZW50IGlzc3VlciwgaWYgbm90IGFkbWluIGFuZCBub3Qgc3BlY2lmaWVkXG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXI/LnJlY2lwaWVudHMpIHx8ICF0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKSkge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gdGhpcy5kZWZhdWx0UmVjaXBpZW50KCk7XG4gICAgICBpZiAoIWZpbHRlcj8ucmVjaXBpZW50cz8uaW5jbHVkZXMocmVjaXBpZW50KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1t1c2VyLWV2ZW50cy1zZXJ2aWNlXSBGb3JjZSB1c2VyIGV2ZW50IGZpbHRlci5yZWNpcGllbnQ9JyArIHJlY2lwaWVudCk7XG4gICAgICAgIGZpbHRlci5yZWNpcGllbnRzID0gW3JlY2lwaWVudF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSBvcHRzPy53aXRoQ29udGVudCA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLm11dGFibGVXYXRjaFF1ZXJ5PExvYWRSZXN1bHQ8RT4sIHsgZmlsdGVyOiBhbnk7IHBhZ2U6IFBhZ2UgfT4oe1xuICAgICAgcXVlcnlOYW1lOiB3aXRoQ29udGVudCA/ICdMb2FkQWxsV2l0aENvbnRlbnQnIDogJ0xvYWRBbGwnLFxuICAgICAgcXVlcnk6IHdpdGhDb250ZW50ID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCA6IHRoaXMucXVlcmllcy5sb2FkQWxsLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICBzb3J0Qnk6ICdjcmVhdGlvbkRhdGUnLFxuICAgICAgICAgIC4uLnBhZ2UsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHNvcnREaXJlY3Rpb246IChwYWdlLnNvcnREaXJlY3Rpb24gfHwgJ2Rlc2MnKS50b1VwcGVyQ2FzZSgpXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcjogZmlsdGVyICYmIGZpbHRlci5hc1BvZE9iamVjdCgpXG4gICAgICB9LFxuICAgICAgYXJyYXlGaWVsZE5hbWU6ICdkYXRhJyxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuTE9BRF9VU0VSX0VWRU5UU19FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5MT0FEX1VTRVJfRVZFTlRTX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHM/LmZldGNoUG9saWN5IHx8ICdjYWNoZS1maXJzdCcsXG4gICAgICBpbnNlcnRGaWx0ZXJGbjogZmlsdGVyICYmIGZpbHRlci5hc0ZpbHRlckZuKClcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKGFzeW5jIChyZXMpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKChyZXM/LmRhdGEgfHwgW10pLm1hcCh2YWx1ZSA9PiB0aGlzLnByb2Nlc3NVc2VyRXZlbnQodmFsdWUpKSk7XG5cbiAgICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH0ke2RhdGEubGVuZ3RofSB1c2VyIGV2ZW50cyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICAgICAgICBub3cgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE11c3QgcmUtb3JkZXIgYmVjYXVzZSBvZiBsaXN0ZW5BbGxDaGFuZ2VzIHJlc3VsdCB3aWxsIGFkZCBuZXcgZXZlbnQgYXQgdGhlIGVuZFxuICAgICAgICAgIGRhdGEgPSBFbnRpdHlVdGlscy5zb3J0KGRhdGEsIHBhZ2Uuc29ydEJ5LCBwYWdlLnNvcnREaXJlY3Rpb24pO1xuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gPExvYWRSZXN1bHQ8RT4+e1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHRvdGFsOiB0b051bWJlcihyZXM/LnRvdGFsLCBkYXRhLmxlbmd0aClcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gQWRkIGZldGNoIG1vcmUgY2FwYWJpbGl0eSwgaWYgdG90YWwgd2FzIGZldGNoZWRcbiAgICAgICAgICBpZiAoaXNOb3ROaWwocmVzLnRvdGFsKSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dE9mZnNldCA9IChwYWdlLm9mZnNldCB8fCAwKSArIGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG5leHRPZmZzZXQgPCByZXN1bHQudG90YWwpIHtcbiAgICAgICAgICAgICAgcmVzdWx0LmZldGNoTW9yZSA9IChfKSA9PiB0aGlzLmxvYWRQYWdlKHsuLi5wYWdlLCBvZmZzZXQ6IG5leHRPZmZzZXR9LCBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgey4uLm9wdHMsIGZldGNoUG9saWN5OiA8RmV0Y2hQb2xpY3k+J25vLWNhY2hlJ30gYXMgdW5rbm93biBhcyBMT1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZFBhZ2UocGFnZTogUGFnZSxcbiAgICAgICAgICAgICAgICAgZmlsdGVyPzogUGFydGlhbDxGPixcbiAgICAgICAgICAgICAgICAgb3B0cz86IExPKTogUHJvbWlzZTxMb2FkUmVzdWx0PEU+PiB7XG5cbiAgICBjb25zdCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcblxuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUxvYWRpbmcgdXNlciBldmVudHMuLi5gLCBmaWx0ZXIpO1xuXG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgLy8gRm9yY2UgcmVjaXBpZW50IHRvIGN1cnJlbnQgaXNzdWVyLCBpZiBub3QgYWRtaW4gYW5kIG5vdCBzcGVjaWZpZWRcbiAgICBpZiAoaXNFbXB0eUFycmF5KGZpbHRlcj8ucmVjaXBpZW50cykgfHwgIXRoaXMuYWNjb3VudFNlcnZpY2UuaXNBZG1pbigpKSB7XG4gICAgICBjb25zdCByZWNpcGllbnQgPSB0aGlzLmRlZmF1bHRSZWNpcGllbnQoKTtcbiAgICAgIGlmICghZmlsdGVyPy5yZWNpcGllbnRzPy5pbmNsdWRlcyhyZWNpcGllbnQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW3VzZXItZXZlbnRzLXNlcnZpY2VdIEZvcmNlIHVzZXIgZXZlbnQgZmlsdGVyLnJlY2lwaWVudD0nICsgcmVjaXBpZW50KTtcbiAgICAgICAgZmlsdGVyLnJlY2lwaWVudHMgPSBbcmVjaXBpZW50XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3aXRoQ29udGVudCA9IG9wdHM/LndpdGhDb250ZW50ID09PSB0cnVlO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PExvYWRSZXN1bHQ8RT4+KHtcbiAgICAgIHF1ZXJ5OiB3aXRoQ29udGVudCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgc29ydEJ5OiAnY3JlYXRpb25EYXRlJyxcbiAgICAgICAgICAuLi5wYWdlLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAocGFnZS5zb3J0RGlyZWN0aW9uIHx8ICdkZXNjJykudG9VcHBlckNhc2UoKVxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlciAmJiBmaWx0ZXIuYXNQb2RPYmplY3QoKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuTE9BRF9VU0VSX0VWRU5UU19FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5MT0FEX1VTRVJfRVZFTlRTX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHM/LmZldGNoUG9saWN5XG4gICAgfSk7XG4gICAgbGV0IGRhdGEgPSBhd2FpdCBQcm9taXNlLmFsbCgocmVzPy5kYXRhIHx8IFtdKS5tYXAodmFsdWUgPT4gdGhpcy5wcm9jZXNzVXNlckV2ZW50KHZhbHVlKSkpO1xuXG4gICAgaWYgKG5vdykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9JHtkYXRhLmxlbmd0aH0gdXNlciBldmVudHMgbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuXG4gICAgLy8gTXVzdCByZS1vcmRlciBiZWNhdXNlIG9mIGxpc3RlbkFsbENoYW5nZXMgcmVzdWx0IHdpbGwgYWRkIG5ldyBldmVudCBhdCB0aGUgZW5kXG4gICAgZGF0YSA9IEVudGl0eVV0aWxzLnNvcnQoZGF0YSwgcGFnZS5zb3J0QnksIHBhZ2Uuc29ydERpcmVjdGlvbik7XG5cbiAgICBjb25zdCByZXN1bHQgPSA8TG9hZFJlc3VsdDxFPj57XG4gICAgICBkYXRhLFxuICAgICAgdG90YWw6IHRvTnVtYmVyKHJlcz8udG90YWwsIGRhdGEubGVuZ3RoKVxuICAgIH07XG5cbiAgICAvLyBBZGQgZmV0Y2ggbW9yZSBjYXBhYmlsaXR5LCBpZiB0b3RhbCB3YXMgZmV0Y2hlZFxuICAgIGlmIChpc05vdE5pbChyZXMudG90YWwpKSB7XG4gICAgICBjb25zdCBuZXh0T2Zmc2V0ID0gKHBhZ2Uub2Zmc2V0IHx8IDApICsgZGF0YS5sZW5ndGg7XG4gICAgICBpZiAobmV4dE9mZnNldCA8IHJlc3VsdC50b3RhbCkge1xuICAgICAgICByZXN1bHQuZmV0Y2hNb3JlID0gKF8pID0+IHRoaXMubG9hZFBhZ2Uoey4uLnBhZ2UsIG9mZnNldDogbmV4dE9mZnNldH0sIGZpbHRlciwgb3B0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoaWQ6IElELCBvcHRzPzogTE8pOiBQcm9taXNlPEU+IHtcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcbiAgICBmaWx0ZXIuaW5jbHVkZWRJZHMgPSBbaWRdO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5sb2FkUGFnZSh7b2Zmc2V0OiAwLCBzaXplOiAxfSwgZmlsdGVyLCBvcHRzKTtcbiAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdO1xuICB9XG5cbiAgYXN5bmMgYWRkKGVudGl0eTogRSk6IFByb21pc2U8RT4ge1xuICAgIGVudGl0eSA9IGF3YWl0IHRoaXMucHJvY2Vzc1VzZXJFdmVudChlbnRpdHkpO1xuXG4gICAgaWYgKCFlbnRpdHkpIHJldHVybjsgLy8gUmVqZWN0ZWRcblxuICAgIGNvbnN0IHdpdGhDb250ZW50ID0gISFlbnRpdHkuY29udGVudDtcblxuICAgIC8vIEFkZCB1c2VyIGV2ZW50IGxvY2FsbHlcbiAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICBpZiAod2l0aENvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMoXG4gICAgICAgICAgdGhpcy5ncmFwaHFsLmNhY2hlLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50LFxuICAgICAgICAgICAgZGF0YTogZW50aXR5XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMoXG4gICAgICAgIHRoaXMuZ3JhcGhxbC5jYWNoZSxcbiAgICAgICAge1xuICAgICAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAuLi5lbnRpdHksXG4gICAgICAgICAgICBjb250ZW50OiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb3VudFxuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KHRoaXMuX2NvdW50U3ViamVjdC52YWx1ZSArIDEpO1xuXG4gICAgLy8gQWRkIGlkXG4gICAgY29uc29sZS5sb2coJ1RPRE86IGFkZCBhbiBJRCB0byB1c2VyIGV2ZW50ID8nKTtcblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBhc3luYyBjb3VudChmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiB7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IFByb21pc2U8bnVtYmVyPiB7XG5cbiAgICBpZiAoIXRoaXMucXVlcmllcz8uY291bnQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9UXVlcnkgJ2NvdW50JyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcbiAgICAvLyBBcHBseSBsYXN0IHJlc2V0IGRhdGUgYXMgc3RhcnQgZGF0ZVxuICAgIGZpbHRlci5zdGFydERhdGUgPSB0aGlzLnJlc2V0Q291bnREYXRlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9Q291bnRpbmcgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IHRvdGFsOiBudW1iZXIgfT4oe1xuICAgICAgcXVlcnk6IHRoaXMucXVlcmllcy5jb3VudCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBmaWx0ZXI6IGZpbHRlci5hc1BvZE9iamVjdCgpXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHsgY29kZTogU29jaWFsRXJyb3JDb2Rlcy5DT1VOVF9VU0VSX0VWRU5UX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLkNPVU5UX1VTRVJfRVZFTlRfRVJST1InIH0sXG4gICAgICBmZXRjaFBvbGljeTogb3B0aW9ucz8uZmV0Y2hQb2xpY3kgfHwgJ25ldHdvcmstb25seSdcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzLnRvdGFsO1xuICB9XG5cbiAgbGlzdGVuQ291bnRDaGFuZ2VzKGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IFdPICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcblxuICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zPy5saXN0ZW5Db3VudENoYW5nZXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9U3Vic2NyaXB0aW9uIHF1ZXJ5ICdsaXN0ZW5Db3VudENoYW5nZXMnIG5vdCBwcm92aWRlZCwgc2tpcC5gKTtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cblxuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcbiAgICAvLyBBcHBseSBsYXN0IHJlc2V0IGRhdGUgYXMgc3RhcnQgZGF0ZVxuICAgIGZpbHRlci5zdGFydERhdGUgPSB0aGlzLnJlc2V0Q291bnREYXRlO1xuICAgIGZpbHRlci5leGNsdWRlUmVhZCA9IHRydWU7XG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1bV1NdIExpc3RlbmluZyBjb3VudCBjaGFuZ2VzIGZvciB1c2VyIGV2ZW50cyB3aXRoIGZpbHRlcjpgLCBmaWx0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5zdWJzY3JpYmU8eyB0b3RhbDogbnVtYmVyIH0sIHsgZmlsdGVyOiBhbnk7IGludGVydmFsOiBudW1iZXIgfT4oe1xuICAgICAgcXVlcnk6IHRoaXMuc3Vic2NyaXB0aW9ucy5saXN0ZW5Db3VudENoYW5nZXMsXG4gICAgICBmZXRjaFBvbGljeTogb3B0aW9ucz8uZmV0Y2hQb2xpY3ksXG4gICAgICB2YXJpYWJsZXM6IHsgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKSwgaW50ZXJ2YWw6IHRvTnVtYmVyKG9wdGlvbnM/LmludGVydmFsLCAxMCkgfSxcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU1VCU0NSSUJFX1VTRVJfRVZFTlRTX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUidcbiAgICAgIH1cbiAgICB9KS5waXBlKFxuICAgICAgbWFwKCh7IHRvdGFsIH0pID0+IHtcbiAgICAgICAgICBpZiAodG90YWwgJiYgdGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVJlY2VpdmVkIG5ldyB1c2VyIGV2ZW50cyBjb3VudDpgLCB0b3RhbCk7XG4gICAgICAgICAgLy8gdXBkYXRlIGNvdW50XG4gICAgICAgICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQodG90YWwpO1xuICAgICAgICAgIHJldHVybiB0b3RhbDtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG5cbiAgfVxuXG4gIGxpc3RlbkFsbENoYW5nZXMoZmlsdGVyOiBQYXJ0aWFsPEY+LCBvcHRzPzogV08gJiB7IGludGVydmFsPzogbnVtYmVyOyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5OyB0b0VudGl0eT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8RVtdPiB7XG5cbiAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9ucz8ubGlzdGVuQWxsQ2hhbmdlcykge1xuICAgICAgY29uc29sZS53YXJuKGAke3RoaXMuX2xvZ1ByZWZpeH1TdWJzY3JpcHRpb24gcXVlcnkgJ2xpc3RlbkFsbENoYW5nZXMnIG5vdCBwcm92aWRlZCwgc2tpcC5gKTtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cblxuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICBjb25zdCB3aXRoQ29udGVudCA9IG9wdHM/LndpdGhDb250ZW50ID09PSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1bV1NdIExpc3RlbmluZyBjaGFuZ2VzIGZvciB1c2VyIGV2ZW50cyB3aXRoIGZpbHRlcjpgLCBmaWx0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5zdWJzY3JpYmU8eyBkYXRhOiBhbnlbXSB9LCB7IGZpbHRlcjogYW55OyBpbnRlcnZhbDogbnVtYmVyIH0+KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnN1YnNjcmlwdGlvbnMubGlzdGVuQWxsQ2hhbmdlcyxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzPy5mZXRjaFBvbGljeSxcbiAgICAgIHZhcmlhYmxlczogeyBmaWx0ZXI6IGZpbHRlci5hc1BvZE9iamVjdCgpLCBpbnRlcnZhbDogdG9OdW1iZXIob3B0cz8uaW50ZXJ2YWwsIDEwKSB9LFxuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogU29jaWFsRXJyb3JDb2Rlcy5TVUJTQ1JJQkVfVVNFUl9FVkVOVFNfRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6ICdTT0NJQUwuRVJST1IuU1VCU0NSSUJFX1VTRVJfRVZFTlRTX0VSUk9SJ1xuICAgICAgfVxuICAgIH0pLnBpcGUoXG4gICAgICBtZXJnZU1hcChhc3luYyAoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgaWYgKGRhdGEgJiYgdGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVJlY2VpdmVkIG5ldyB1c2VyIGV2ZW50czpgLCBkYXRhKTtcblxuICAgICAgICAvLyBVcGRhdGUgY2FjaGUgKHdpbGwgdXBkYXRlIHdhdGNoQWxsIHF1ZXJpZXMpXG4gICAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhcbiAgICAgICAgICAgIHRoaXMuZ3JhcGhxbC5jYWNoZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcXVlcnk6IHdpdGhDb250ZW50ID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCA6IHRoaXMucXVlcmllcy5sb2FkQWxsLFxuICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnZlcnQgdG8gZW50aXRpZXNcbiAgICAgICAgaWYgKCFvcHRzIHx8IG9wdHMudG9FbnRpdHkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKChkYXRhIHx8IFtdKS5tYXAodmFsdWUgPT4gdGhpcy5wcm9jZXNzVXNlckV2ZW50KHZhbHVlKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShlbnRpdHk6IEUpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghZW50aXR5KSByZXR1cm47IC8vIHNraXBcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZUFsbChbZW50aXR5XSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVBbGwoZW50aXRpZXM6IEVbXSwgb3B0cz86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgaWRzID0gZW50aXRpZXMgJiYgZW50aXRpZXNcbiAgICAgIC5tYXAodCA9PiB0LmlkKTtcbiAgICBpZiAoaXNFbXB0eUFycmF5KGlkcykpIHJldHVybjsgLy8gc3RvcCwgaWYgbm90aGluZyBlbHNlIHRvIGRvXG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9RGVsZXRpbmcgZXZlbnRzLi4uIGlkczpgLCBpZHMpO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTxhbnk+KHtcbiAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5kZWxldGVCeUlkcyxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpZHNcbiAgICAgIH0sXG4gICAgICB1cGRhdGU6IChjYWNoZSkgPT4ge1xuICAgICAgICAvLyBSZW1vdmUgZnJvbSBjYWNoZVxuICAgICAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tTXV0YWJsZUNhY2hlZFF1ZXJpZXNCeUlkcyhjYWNoZSwge1xuICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgaWRzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUV2ZW50cyBkZWxldGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2F2ZShlbnRpdHk6IEUsIG9wdGlvbnM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMpOiBQcm9taXNlPEU+IHtcbiAgICB0aGlzLmZpbGxEZWZhdWx0UHJvcGVydGllcyhlbnRpdHkpO1xuXG4gICAgLy8gVHJhbnNmb3JtIGludG8ganNvblxuICAgIGNvbnN0IHdpdGhDb250ZW50ID0gISFlbnRpdHkuY29udGVudDtcbiAgICBjb25zdCBqc29uID0gZW50aXR5LmFzT2JqZWN0KE1JTklGWV9FTlRJVFlfRk9SX1BPRCk7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9U2F2aW5nIHVzZXIgZXZlbnQuLi5gLCBqc29uKTtcblxuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8eyBkYXRhOiBhbnkgfT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLnNhdmUsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZGF0YToganNvblxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU0FWRV9VU0VSX0VWRU5UX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNBVkVfVVNFUl9FVkVOVF9FUlJPUicgfSxcbiAgICAgIHVwZGF0ZTogKHByb3h5LCB7IGRhdGEgfSkgPT4ge1xuICAgICAgICAvLyBVcGRhdGUgZW50aXR5XG4gICAgICAgIGNvbnN0IHNhdmVkRW50aXR5ID0gZGF0YSAmJiBkYXRhLmRhdGE7XG4gICAgICAgIGlmIChzYXZlZEVudGl0eSkge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9VXNlciBldmVudCBzYXZlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBlbnRpdHkpO1xuICAgICAgICAgIHRoaXMuY29weUlkQW5kVXBkYXRlRGF0ZShzYXZlZEVudGl0eSwgZW50aXR5KTtcblxuICAgICAgICAgIC8vIEFkZCB0byBjYWNoZVxuICAgICAgICAgIGlmICh0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICAgIGlmICh3aXRoQ29udGVudCkge1xuICAgICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhwcm94eSwge1xuICAgICAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50LFxuICAgICAgICAgICAgICAgIGRhdGE6IHNhdmVkRW50aXR5XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMocHJveHksIHtcbiAgICAgICAgICAgICAgcXVlcnk6IHRoaXMucXVlcmllcy5sb2FkQWxsLFxuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLi4uc2F2ZWRFbnRpdHksXG4gICAgICAgICAgICAgICAgY29udGVudDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBhc3luYyBzYXZlQWxsKGVudGl0aWVzOiBFW10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPEVbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChlbnRpdGllc1xuICAgICAgLm1hcChlbnRpdHkgPT4gdGhpcy5zYXZlKGVudGl0eSwgb3B0cykpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG1hcmtBbGxBc1JlYWQoZW50aXRpZXM6IEVbXSkge1xuXG4gICAgY29uc3QgdXNlckV2ZW50V2l0aG91dFJlYWRMaXN0ZW5lcnM6IEVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZW50aXR5IG9mIChlbnRpdGllcyB8fCBbXSkpIHtcbiAgICAgIC8vIEdldCBvblJlYWQgbGlzdGVuZXJzXG4gICAgICBjb25zdCBvblJlYWRMaXN0ZW5lcnMgPSAodGhpcy5saXN0ZW5lcnMgfHwgW10pLmZpbHRlcihsaXN0ZW5lciA9PiAhIWxpc3RlbmVyLm9uUmVhZCkuZmlsdGVyKGxpc3RlbmVyID0+IGxpc3RlbmVyLmFjY2VwdChlbnRpdHkpKTtcbiAgICAgIGlmIChvblJlYWRMaXN0ZW5lcnMubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2Ygb25SZWFkTGlzdGVuZXJzKSB7XG4gICAgICAgICAgYXdhaXQgbGlzdGVuZXIub25SZWFkKGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCB0byB0aGlzIGxpc3QgZm9yIGRlZmF1bHQgb3BlcmF0aW9uXG4gICAgICAgIHVzZXJFdmVudFdpdGhvdXRSZWFkTGlzdGVuZXJzLnB1c2goZW50aXR5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVc2UgZGVmYXVsdFxuICAgIGF3YWl0IHRoaXMuZGVmYXVsdE1hcmtBc1JlYWQodXNlckV2ZW50V2l0aG91dFJlYWRMaXN0ZW5lcnMpO1xuICB9XG5cbiAgcmVnaXN0ZXJMaXN0ZW5lcihsaXN0ZW5lcjogSVVzZXJFdmVudExpc3RlbmVyPEUsIElEPikge1xuICAgIGlmICghdGhpcy5saXN0ZW5lcnMpIHRoaXMubGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gIH1cblxuICByZXNldENvdW50KCkge1xuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5yZXNldENvdW50RGF0ZSA9IERhdGVVdGlscy5tb21lbnQoKTtcbiAgICAvLyByZXN0YXJ0IGxpc3RlbmluZyBjb3VudCBjaGFuZ2VzXG4gICAgdGhpcy5zdGFydExpc3RlbkNvdW50Q2hhbmdlcygpO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25Mb2dpbigpIHtcbiAgICAvLyBHZXQgZmlyc3QgY291bnRcbiAgICBjb25zdCBjb3VudCA9IGF3YWl0IHRoaXMuY291bnQodW5kZWZpbmVkKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVJlY2VpdmluZyB1c2VyIGV2ZW50cyBjb3VudGAsIGNvdW50KTtcbiAgICAvLyBVcGRhdGUgY291bnRcbiAgICB0aGlzLl9jb3VudFN1YmplY3QubmV4dChjb3VudCk7XG5cbiAgICAvLyBUaGVuIGxpc3RlbiBjaGFuZ2VzXG4gICAgdGhpcy5zdGFydExpc3RlbkNvdW50Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uTG9nb3V0KCkge1xuICAgIC8vIFJlc2V0IGNvdW50ZXJcbiAgICB0aGlzLl9jb3VudFN1YmplY3QubmV4dCgwKTtcbiAgICAvLyBTdG9wIGxpc3RlbmluZ1xuICAgIHRoaXMuc3RvcExpc3RlbkNvdW50Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXJ0TGlzdGVuQ291bnRDaGFuZ2VzKCkge1xuICAgIHRoaXMuc3RvcExpc3RlbkNvdW50Q2hhbmdlcygpO1xuICAgIHRoaXMuX2xpc3RlblN1YnNjcmlwdGlvbiA9IHRoaXMubGlzdGVuQ291bnRDaGFuZ2VzKHVuZGVmaW5lZCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RvcExpc3RlbkNvdW50Q2hhbmdlcygpIHtcbiAgICB0aGlzLl9saXN0ZW5TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fbGlzdGVuU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByb2Nlc3NVc2VyRXZlbnQoc291cmNlOiBhbnkpOiBQcm9taXNlPEU+IHtcblxuICAgIC8vIENvbnZlcnQganNvbiBzb3VyY2UgdG8gSVVzZXJFdmVudFxuICAgIGxldCB0YXJnZXQgPSB0aGlzLmZyb21PYmplY3Qoc291cmNlKTtcblxuICAgIC8vIEdldCBsaXN0ZW5lcnNcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSAodGhpcy5saXN0ZW5lcnMgfHwgW10pXG4gICAgICAuZmlsdGVyKGxpc3RlbmVyID0+ICEhbGlzdGVuZXIub25SZWNlaXZlZClcbiAgICAgIC5maWx0ZXIobGlzdGVuZXIgPT4gbGlzdGVuZXIuYWNjZXB0KHRhcmdldCkpO1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzKSB7XG4gICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGxpc3RlbmVyLm9uUmVjZWl2ZWQodGFyZ2V0KTtcbiAgICAgICAgdGFyZ2V0ID0gKHJlcyBpbnN0YW5jZW9mIFByb21pc2UpID8gYXdhaXQgcmVzIDogcmVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1FdmVudCBoYXMgYmVlbiByZWplY3RlZCBieSBhIGxpc3RlbmVyYCwgc291cmNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBkZWZhdWx0TWFya0FzUmVhZCh1c2VyRXZlbnRzOiBFW10pIHtcbiAgICBpZiAoIXVzZXJFdmVudHMpIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLl9sb2dQcmVmaXh9SW52YWxpZCBldmVudCB0byBzYXZlYCk7XG4gICAgaWYgKCF1c2VyRXZlbnRzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgLy8gc2V0IHJlYWQgZGF0ZVxuICAgIHVzZXJFdmVudHMuZm9yRWFjaCh1c2VyRXZlbnQgPT4gdXNlckV2ZW50LnJlYWREYXRlID0gRGF0ZVV0aWxzLm1vbWVudCgpKTtcblxuICAgIC8vIHNwbGl0IGxvY2FsL3JlbW90ZSBlbnRpdGllc1xuICAgIGNvbnN0IGxvY2FsRW50aXRpZXMgPSB1c2VyRXZlbnRzLmZpbHRlcihFbnRpdHlVdGlscy5pc0xvY2FsKTtcbiAgICBjb25zdCByZW1vdGVFbnRpdGllcyA9IHVzZXJFdmVudHMuZmlsdGVyKEVudGl0eVV0aWxzLmlzUmVtb3RlKTtcblxuICAgIC8vIHNhdmUgbG9jYWwgZW50aXRpZXNcbiAgICBpZiAobG9jYWxFbnRpdGllcy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9U2F2ZSBsb2NhbCB1c2VyIGV2ZW50YCk7XG4gICAgICAvLyBUT0RPICEhISEhISEhISEhISFcbiAgICB9XG4gICAgLy8gbWFyayByZW1vdGUgZW50aXRpZXMgYXMgcmVhZFxuICAgIGlmIChyZW1vdGVFbnRpdGllcy5sZW5ndGgpIHtcbiAgICAgIGlmICghdGhpcy5tdXRhdGlvbnM/Lm1hcmtBc1JlYWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGAke3RoaXMuX2xvZ1ByZWZpeH1NdXRhdGlvbiBxdWVyeSAnbWFya0FzUmVhZCcgbm90IHByb3ZpZGVkLCBza2lwLmApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIENvbGxlY3QgaWRzXG4gICAgICBjb25zdCBpZHMgPSByZW1vdGVFbnRpdGllcy5tYXAodmFsdWUgPT4gdmFsdWUuaWQpO1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9TWFyayB1c2VyIGV2ZW50cyBhcyByZWFkLi4uYCwgaWRzKTtcblxuICAgICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5tYXJrQXNSZWFkLFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBpZHNcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IHsgY29kZTogU29jaWFsRXJyb3JDb2Rlcy5TQVZFX1VTRVJfRVZFTlRfRVJST1IsIG1lc3NhZ2U6ICdTT0NJQUwuRVJST1IuU0FWRV9VU0VSX0VWRU5UX0VSUk9SJyB9LFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9VXNlciBldmVudHMgbWFya2VkIGFzIHJlYWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCwgaWRzKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVmYXVsdEZpbHRlcigpOiBGIHtcbiAgICAvLyBCeSBkZWZhdWx0XG4gICAgcmV0dXJuIDxGPntcbiAgICAgIHJlY2lwaWVudHM6IFt0aGlzLmRlZmF1bHRSZWNpcGllbnQoKV1cbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGRlZmF1bHRSZWNpcGllbnQoKTogYW55O1xuXG4gIHByb3RlY3RlZCBmaWxsRGVmYXVsdFByb3BlcnRpZXMoZW50aXR5OiBFKSB7XG4gIH1cblxuICBwcm90ZWN0ZWQgdW5yZWFkRXZlbnRzKGV2ZW50czogRVtdKTogbnVtYmVyIHtcbiAgICAvLyBkZWZhdWx0IGNhbGN1bGF0aW9uIG9uIHVucmVhZCBldmVudHMgZnJvbSBhIGxpc3RcbiAgICBpZiAoaXNFbXB0eUFycmF5KGV2ZW50cykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbGFzdFJlYWREYXRlID0gZXZlbnRzXG4gICAgICAuZmlsdGVyKGV2ZW50ID0+IGlzTm90TmlsKGV2ZW50LnJlYWREYXRlKSlcbiAgICAgIC5yZWR1Y2UoKGxhc3REYXRlLCBldmVudCkgPT4gRGF0ZVV0aWxzLm1heChsYXN0RGF0ZSwgZXZlbnQucmVhZERhdGUpLCB1bmRlZmluZWQgYXMgTW9tZW50KTtcbiAgICByZXR1cm4gZXZlbnRzXG4gICAgICAuZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmNyZWF0aW9uRGF0ZS5pc1NhbWVPckFmdGVyKGxhc3RSZWFkRGF0ZSkpLmxlbmd0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3B5SWRBbmRVcGRhdGVEYXRlKHNvdXJjZTogRSwgdGFyZ2V0OiBFKSB7XG4gICAgRW50aXR5VXRpbHMuY29weUlkQW5kVXBkYXRlRGF0ZShzb3VyY2UsIHRhcmdldCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TG9hZFF1ZXJpZXMoKTogRG9jdW1lbnROb2RlW10ge1xuICAgIHJldHVybiBbdGhpcy5xdWVyaWVzLmxvYWRBbGwsIHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnRdLmZpbHRlcihpc05vdE5pbCk7XG4gIH1cblxufVxuIl19
512
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC91c2VyLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFXNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHM0YsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLGdEQUFnRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7OztBQUlwRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsa0JBQWtCLENBQUMsQ0FBQztBQTJFMUcsTUFBTSxPQUFnQix3QkFVcEIsU0FBUSxrQkFBNEI7SUFrQnhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFuQk8sT0FBTyxDQUFJO0lBQ1gsU0FBUyxDQUFhO0lBQ3RCLGFBQWEsQ0FBYTtJQUMxQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0Msd0JBQXdCLENBQWtD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LE1BQU0sQ0FBQztJQUM1RSxDQUFDO0lBRVMsbUJBQW1CLENBQUMsTUFBUyxFQUFFLE1BQVM7UUFDaEQsV0FBVyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRVMsY0FBYztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRixDQUFDO3VHQXhsQm1CLHdCQUF3QjsyRkFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUQ3QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3Rpb25Ub2tlbiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGZXRjaFBvbGljeSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgU29jaWFsRXJyb3JDb2RlcyB9IGZyb20gJy4uL3NvY2lhbC5lcnJvcnMnO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBHcmFwaHFsU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElVc2VyRXZlbnQsIElVc2VyRXZlbnRGaWx0ZXIgfSBmcm9tICcuL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMsXG4gIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgRW50aXR5U2VydmljZUxvYWRPcHRpb25zLFxuICBJRW50aXRpZXNTZXJ2aWNlLFxuICBMb2FkUmVzdWx0LFxuICBQYWdlLFxufSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0VtcHR5QXJyYXksIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIHRvTnVtYmVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOZXR3b3JrU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VHcmFwaHFsU2VydmljZSwgQmFzZUdyYXBocWxTZXJ2aWNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgRW50aXR5VXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlVXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGF0ZXMnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IElTdGFydGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IE1JTklGWV9FTlRJVFlfRk9SX1BPRCB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvcmVmZXJlbnRpYWwubW9kZWwnO1xuaW1wb3J0IHsgRG9jdW1lbnROb2RlIH0gZnJvbSAnZ3JhcGhxbC9pbmRleCc7XG5pbXBvcnQgeyBNdXRhYmxlV2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5IH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9iYXNlLWVudGl0eS1zZXJ2aWNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IEFQUF9VU0VSX0VWRU5UX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVVzZXJFdmVudFNlcnZpY2U8YW55LCBhbnk+PignVXNlckV2ZW50U2VydmljZScpO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVXNlckV2ZW50TG9hZE9wdGlvbnMgZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucyB7XG4gIHdpdGhDb250ZW50PzogYm9vbGVhbjsgLy8gRGVmYXVsdCB0byBmYWxzZVxufVxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFVzZXJFdmVudFdhdGNoT3B0aW9ucyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyB7XG4gIHdpdGhDb250ZW50PzogYm9vbGVhbjsgLy8gRGVmYXVsdCB0byBmYWxzZVxufVxuZXhwb3J0IGludGVyZmFjZSBJVXNlckV2ZW50UXVlcmllcyB7XG4gIGxvYWRBbGw6IGFueTtcbiAgbG9hZEFsbFdpdGhDb250ZW50OiBhbnk7XG4gIGNvdW50PzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyRXZlbnRNdXRhdGlvbnMge1xuICBzYXZlOiBhbnk7XG4gIG1hcmtBc1JlYWQ/OiBhbnk7XG4gIGRlbGV0ZUJ5SWRzOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudFN1YnNjcmlwdGlvbnMge1xuICBsaXN0ZW5BbGxDaGFuZ2VzOiBhbnk7XG4gIGxpc3RlbkNvdW50Q2hhbmdlcz86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVXNlckV2ZW50TGlzdGVuZXI8RSBleHRlbmRzIElVc2VyRXZlbnQ8RSwgSUQ+LCBJRCA9IG51bWJlcj4ge1xuICBhY2NlcHQ6IChFKSA9PiBib29sZWFuO1xuICBvblJlY2VpdmVkPzogKEUpID0+IFByb21pc2U8RT4gfCBFIHwgdW5kZWZpbmVkO1xuICBvblJlYWQ/OiAoRSkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckV2ZW50U2VydmljZU9wdGlvbnM8XG4gIFEgZXh0ZW5kcyBJVXNlckV2ZW50UXVlcmllcyA9IElVc2VyRXZlbnRRdWVyaWVzLFxuICBNIGV4dGVuZHMgSVVzZXJFdmVudE11dGF0aW9ucyA9IElVc2VyRXZlbnRNdXRhdGlvbnMsXG4gIFMgZXh0ZW5kcyBJVXNlckV2ZW50U3Vic2NyaXB0aW9ucyA9IElVc2VyRXZlbnRTdWJzY3JpcHRpb25zXG4gID4gZXh0ZW5kcyBCYXNlR3JhcGhxbFNlcnZpY2VPcHRpb25zIHtcbiAgcXVlcmllczogUTtcbiAgbXV0YXRpb25zPzogUGFydGlhbDxNPjtcbiAgc3Vic2NyaXB0aW9ucz86IFBhcnRpYWw8Uz47XG4gIHdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeT86IE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudFNlcnZpY2U8XG4gIEUgZXh0ZW5kcyBJVXNlckV2ZW50PEUsIElEPixcbiAgRiBleHRlbmRzIElVc2VyRXZlbnRGaWx0ZXI8RSwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgPSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMsXG4gIExPIGV4dGVuZHMgVXNlckV2ZW50TG9hZE9wdGlvbnMgPSBVc2VyRXZlbnRMb2FkT3B0aW9uc1xuICA+XG4gIGV4dGVuZHMgSUVudGl0aWVzU2VydmljZTxFLCBGLCBXTz4sIElTdGFydGFibGVTZXJ2aWNlIHtcblxuICBjb3VudFN1YmplY3Q6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICBhZGQoZW50aXR5OiBFKTogUHJvbWlzZTxFPjtcblxuICBsb2FkKGlkOiBJRCwgb3B0cz86IExPKTogUHJvbWlzZTxFPjtcblxuICBjb3VudChmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiB7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IFByb21pc2U8bnVtYmVyPjtcblxuICBsaXN0ZW5Db3VudENoYW5nZXMoZmlsdGVyOiBQYXJ0aWFsPEY+LCBvcHRpb25zPzogV08gJiB7IGludGVydmFsPzogbnVtYmVyOyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgbGlzdGVuQWxsQ2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IE9ic2VydmFibGU8RVtdPjtcblxuICBzYXZlKGVudGl0eTogRSwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8RT47XG5cbiAgZGVsZXRlKGVudGl0eTogRSk6IFByb21pc2U8YW55PjtcblxuICBtYXJrQWxsQXNSZWFkKGVudGl0aWVzOiBFW10pO1xuXG4gIHJlZ2lzdGVyTGlzdGVuZXIobGlzdGVuZXI6IElVc2VyRXZlbnRMaXN0ZW5lcjxFLCBJRD4pO1xuXG4gIHJlc2V0Q291bnQoKTtcbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RVc2VyRXZlbnRTZXJ2aWNlPFxuICBFIGV4dGVuZHMgSVVzZXJFdmVudDxFLCBJRCwgYW55PixcbiAgRiBleHRlbmRzIElVc2VyRXZlbnRGaWx0ZXI8RSwgSUQsIGFueT4sXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIFVzZXJFdmVudFdhdGNoT3B0aW9ucyA9IFVzZXJFdmVudFdhdGNoT3B0aW9ucyxcbiAgTE8gZXh0ZW5kcyBVc2VyRXZlbnRMb2FkT3B0aW9ucyA9IFVzZXJFdmVudExvYWRPcHRpb25zLFxuICBRIGV4dGVuZHMgSVVzZXJFdmVudFF1ZXJpZXMgPSBJVXNlckV2ZW50UXVlcmllcyxcbiAgTSBleHRlbmRzIElVc2VyRXZlbnRNdXRhdGlvbnMgPSBJVXNlckV2ZW50TXV0YXRpb25zLFxuICBTIGV4dGVuZHMgSVVzZXJFdmVudFN1YnNjcmlwdGlvbnMgPSBJVXNlckV2ZW50U3Vic2NyaXB0aW9uc1xuICA+XG4gIGV4dGVuZHMgQmFzZUdyYXBocWxTZXJ2aWNlPEUsIEYsIElEPlxuICBpbXBsZW1lbnRzIElVc2VyRXZlbnRTZXJ2aWNlPEUsIEYsIElELCBXTywgTE8+LCBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyaWVzOiBRO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbXV0YXRpb25zOiBQYXJ0aWFsPE0+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogUGFydGlhbDxTPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb3VudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k6IE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k7XG4gIHByb3RlY3RlZCByZXNldENvdW50RGF0ZTogTW9tZW50O1xuICBwcm90ZWN0ZWQgbGlzdGVuZXJzOiBJVXNlckV2ZW50TGlzdGVuZXI8RSwgSUQ+W10gPSBbXTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfbGlzdGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgZ2V0IGNvdW50U3ViamVjdCgpOiBTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9jb3VudFN1YmplY3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG9wdGlvbnM6IFVzZXJFdmVudFNlcnZpY2VPcHRpb25zPFEsIE0sIFM+XG4gICkge1xuICAgIHN1cGVyKGdyYXBocWwsIG9wdGlvbnMpO1xuICAgIHRoaXMucXVlcmllcyA9IG9wdGlvbnMucXVlcmllcztcbiAgICB0aGlzLm11dGF0aW9ucyA9IG9wdGlvbnMubXV0YXRpb25zIHx8IDxQYXJ0aWFsPE0+Pnt9O1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IG9wdGlvbnMuc3Vic2NyaXB0aW9ucyB8fCA8UGFydGlhbDxTPj57fTtcbiAgICB0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9IG9wdGlvbnMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5IHx8ICd1cGRhdGUtY2FjaGUnO1xuICAgIHRoaXMuX2xvZ1ByZWZpeCA9ICdbdXNlci1ldmVudC1zZXJ2aWNlXSAnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcblxuICAgIC8vIFVwZGF0ZSBjb21wb25lbnQgd2hlbiByZWZyZXNoIGlzIG5lZWQgKD1sb2dpbiBldmVudHMpXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBtZXJnZShcbiAgICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ2luLFxuICAgICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9nb3V0LFxuICAgICAgICB0aW1lcigxMDAwKSAvLyBTdGFydHMgd2l0aCAtICBmaXJzdCBhdHRlbXB0IGlmIGFjY291bnQgaXMgcmVhZHlcbiAgICAgIClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgLy8gV2FpdCBhY2NvdW50IHNlcnZpY2UgcmVhZHkgKGNhbiBiZSByZXN0YXJ0ZWQpXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5hY2NvdW50U2VydmljZS5yZWFkeSgpKSxcbiAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCkpLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKGxvZ2luID0+IHtcbiAgICAgICAgICBpZiAobG9naW4pIHtcbiAgICAgICAgICAgIHRoaXMub25Mb2dpbigpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uTG9nb3V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBhYnN0cmFjdCBhc0ZpbHRlcihmaWx0ZXI6IFBhcnRpYWw8Rj4pOiBGO1xuXG4gIGFic3RyYWN0IGZyb21PYmplY3Qoc291cmNlOiBhbnkpOiBFO1xuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sIGZpbHRlcj86IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxFPj4ge1xuICAgIHJldHVybiB0aGlzLndhdGNoUGFnZSg8UGFnZT57IG9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uIH0sIGZpbHRlciwgb3B0aW9ucyk7XG4gIH1cblxuICB3YXRjaFBhZ2UocGFnZTogUGFnZSxcbiAgICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4sXG4gICAgICAgICAgICBvcHRzPzogV08pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8RT4+IHtcblxuICAgIGxldCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuICAgIGlmICghZmlsdGVyKSB7XG4gICAgICBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcbiAgICB9XG4gICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9TG9hZGluZyB1c2VyIGV2ZW50cy4uLmAsIGZpbHRlcik7XG5cbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICAvLyBGb3JjZSByZWNpcGllbnQgdG8gY3VycmVudCBpc3N1ZXIsIGlmIG5vdCBhZG1pbiBhbmQgbm90IHNwZWNpZmllZFxuICAgIGlmIChpc0VtcHR5QXJyYXkoZmlsdGVyPy5yZWNpcGllbnRzKSB8fCAhdGhpcy5hY2NvdW50U2VydmljZS5pc0FkbWluKCkpIHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudCA9IHRoaXMuZGVmYXVsdFJlY2lwaWVudCgpO1xuICAgICAgaWYgKCFmaWx0ZXI/LnJlY2lwaWVudHM/LmluY2x1ZGVzKHJlY2lwaWVudCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbdXNlci1ldmVudHMtc2VydmljZV0gRm9yY2UgdXNlciBldmVudCBmaWx0ZXIucmVjaXBpZW50PScgKyByZWNpcGllbnQpO1xuICAgICAgICBmaWx0ZXIucmVjaXBpZW50cyA9IFtyZWNpcGllbnRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHdpdGhDb250ZW50ID0gb3B0cz8ud2l0aENvbnRlbnQgPT09IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5tdXRhYmxlV2F0Y2hRdWVyeTxMb2FkUmVzdWx0PEU+LCB7IGZpbHRlcjogYW55OyBwYWdlOiBQYWdlIH0+KHtcbiAgICAgIHF1ZXJ5TmFtZTogd2l0aENvbnRlbnQgPyAnTG9hZEFsbFdpdGhDb250ZW50JyA6ICdMb2FkQWxsJyxcbiAgICAgIHF1ZXJ5OiB3aXRoQ29udGVudCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgc29ydEJ5OiAnY3JlYXRpb25EYXRlJyxcbiAgICAgICAgICAuLi5wYWdlLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAocGFnZS5zb3J0RGlyZWN0aW9uIHx8ICdkZXNjJykudG9VcHBlckNhc2UoKVxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlciAmJiBmaWx0ZXIuYXNQb2RPYmplY3QoKVxuICAgICAgfSxcbiAgICAgIGFycmF5RmllbGROYW1lOiAnZGF0YScsXG4gICAgICBlcnJvcjogeyBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLkxPQURfVVNFUl9FVkVOVFNfRVJST1IsIG1lc3NhZ2U6ICdTT0NJQUwuRVJST1IuTE9BRF9VU0VSX0VWRU5UU19FUlJPUicgfSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzPy5mZXRjaFBvbGljeSB8fCAnY2FjaGUtZmlyc3QnLFxuICAgICAgaW5zZXJ0RmlsdGVyRm46IGZpbHRlciAmJiBmaWx0ZXIuYXNGaWx0ZXJGbigpXG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtZXJnZU1hcChhc3luYyAocmVzKSA9PiB7XG4gICAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBQcm9taXNlLmFsbCgocmVzPy5kYXRhIHx8IFtdKS5tYXAodmFsdWUgPT4gdGhpcy5wcm9jZXNzVXNlckV2ZW50KHZhbHVlKSkpO1xuXG4gICAgICAgICAgaWYgKG5vdykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9JHtkYXRhLmxlbmd0aH0gdXNlciBldmVudHMgbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgICAgICAgbm93ID0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQWxsQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICAgICAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBwYWdlLnNvcnRCeSwgcGFnZS5zb3J0RGlyZWN0aW9uKTtcblxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IDxMb2FkUmVzdWx0PEU+PntcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICB0b3RhbDogdG9OdW1iZXIocmVzPy50b3RhbCwgZGF0YS5sZW5ndGgpXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIEFkZCBmZXRjaCBtb3JlIGNhcGFiaWxpdHksIGlmIHRvdGFsIHdhcyBmZXRjaGVkXG4gICAgICAgICAgaWYgKGlzTm90TmlsKHJlcy50b3RhbCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSAocGFnZS5vZmZzZXQgfHwgMCkgKyBkYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChuZXh0T2Zmc2V0IDwgcmVzdWx0LnRvdGFsKSB7XG4gICAgICAgICAgICAgIHJlc3VsdC5mZXRjaE1vcmUgPSAoXykgPT4gdGhpcy5sb2FkUGFnZSh7Li4ucGFnZSwgb2Zmc2V0OiBuZXh0T2Zmc2V0fSwgZmlsdGVyLFxuICAgICAgICAgICAgICAgIHsuLi5vcHRzLCBmZXRjaFBvbGljeTogPEZldGNoUG9saWN5Piduby1jYWNoZSd9IGFzIHVua25vd24gYXMgTE9cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRQYWdlKHBhZ2U6IFBhZ2UsXG4gICAgICAgICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4sXG4gICAgICAgICAgICAgICAgIG9wdHM/OiBMTyk6IFByb21pc2U8TG9hZFJlc3VsdDxFPj4ge1xuXG4gICAgY29uc3Qgbm93ID0gdGhpcy5fZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG5cbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Mb2FkaW5nIHVzZXIgZXZlbnRzLi4uYCwgZmlsdGVyKTtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIC8vIEZvcmNlIHJlY2lwaWVudCB0byBjdXJyZW50IGlzc3VlciwgaWYgbm90IGFkbWluIGFuZCBub3Qgc3BlY2lmaWVkXG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXI/LnJlY2lwaWVudHMpIHx8ICF0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKSkge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gdGhpcy5kZWZhdWx0UmVjaXBpZW50KCk7XG4gICAgICBpZiAoIWZpbHRlcj8ucmVjaXBpZW50cz8uaW5jbHVkZXMocmVjaXBpZW50KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1t1c2VyLWV2ZW50cy1zZXJ2aWNlXSBGb3JjZSB1c2VyIGV2ZW50IGZpbHRlci5yZWNpcGllbnQ9JyArIHJlY2lwaWVudCk7XG4gICAgICAgIGZpbHRlci5yZWNpcGllbnRzID0gW3JlY2lwaWVudF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSBvcHRzPy53aXRoQ29udGVudCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTxMb2FkUmVzdWx0PEU+Pih7XG4gICAgICBxdWVyeTogd2l0aENvbnRlbnQgPyB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50IDogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgcGFnZToge1xuICAgICAgICAgIHNvcnRCeTogJ2NyZWF0aW9uRGF0ZScsXG4gICAgICAgICAgLi4ucGFnZSxcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgc29ydERpcmVjdGlvbjogKHBhZ2Uuc29ydERpcmVjdGlvbiB8fCAnZGVzYycpLnRvVXBwZXJDYXNlKClcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyOiBmaWx0ZXIgJiYgZmlsdGVyLmFzUG9kT2JqZWN0KClcbiAgICAgIH0sXG4gICAgICBlcnJvcjogeyBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLkxPQURfVVNFUl9FVkVOVFNfRVJST1IsIG1lc3NhZ2U6ICdTT0NJQUwuRVJST1IuTE9BRF9VU0VSX0VWRU5UU19FUlJPUicgfSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzPy5mZXRjaFBvbGljeVxuICAgIH0pO1xuICAgIGxldCBkYXRhID0gYXdhaXQgUHJvbWlzZS5hbGwoKHJlcz8uZGF0YSB8fCBbXSkubWFwKHZhbHVlID0+IHRoaXMucHJvY2Vzc1VzZXJFdmVudCh2YWx1ZSkpKTtcblxuICAgIGlmIChub3cpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fSR7ZGF0YS5sZW5ndGh9IHVzZXIgZXZlbnRzIGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcblxuICAgIC8vIE11c3QgcmUtb3JkZXIgYmVjYXVzZSBvZiBsaXN0ZW5BbGxDaGFuZ2VzIHJlc3VsdCB3aWxsIGFkZCBuZXcgZXZlbnQgYXQgdGhlIGVuZFxuICAgIGRhdGEgPSBFbnRpdHlVdGlscy5zb3J0KGRhdGEsIHBhZ2Uuc29ydEJ5LCBwYWdlLnNvcnREaXJlY3Rpb24pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gPExvYWRSZXN1bHQ8RT4+e1xuICAgICAgZGF0YSxcbiAgICAgIHRvdGFsOiB0b051bWJlcihyZXM/LnRvdGFsLCBkYXRhLmxlbmd0aClcbiAgICB9O1xuXG4gICAgLy8gQWRkIGZldGNoIG1vcmUgY2FwYWJpbGl0eSwgaWYgdG90YWwgd2FzIGZldGNoZWRcbiAgICBpZiAoaXNOb3ROaWwocmVzLnRvdGFsKSkge1xuICAgICAgY29uc3QgbmV4dE9mZnNldCA9IChwYWdlLm9mZnNldCB8fCAwKSArIGRhdGEubGVuZ3RoO1xuICAgICAgaWYgKG5leHRPZmZzZXQgPCByZXN1bHQudG90YWwpIHtcbiAgICAgICAgcmVzdWx0LmZldGNoTW9yZSA9IChfKSA9PiB0aGlzLmxvYWRQYWdlKHsuLi5wYWdlLCBvZmZzZXQ6IG5leHRPZmZzZXR9LCBmaWx0ZXIsIG9wdHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBsb2FkKGlkOiBJRCwgb3B0cz86IExPKTogUHJvbWlzZTxFPiB7XG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgZmlsdGVyLmluY2x1ZGVkSWRzID0gW2lkXTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMubG9hZFBhZ2Uoe29mZnNldDogMCwgc2l6ZTogMX0sIGZpbHRlciwgb3B0cyk7XG4gICAgcmV0dXJuIGRhdGEgJiYgZGF0YVswXTtcbiAgfVxuXG4gIGFzeW5jIGFkZChlbnRpdHk6IEUpOiBQcm9taXNlPEU+IHtcbiAgICBlbnRpdHkgPSBhd2FpdCB0aGlzLnByb2Nlc3NVc2VyRXZlbnQoZW50aXR5KTtcblxuICAgIGlmICghZW50aXR5KSByZXR1cm47IC8vIFJlamVjdGVkXG5cbiAgICBjb25zdCB3aXRoQ29udGVudCA9ICEhZW50aXR5LmNvbnRlbnQ7XG5cbiAgICAvLyBBZGQgdXNlciBldmVudCBsb2NhbGx5XG4gICAgaWYgKHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgaWYgKHdpdGhDb250ZW50KSB7XG4gICAgICAgIHRoaXMuaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyaWVzKFxuICAgICAgICAgIHRoaXMuZ3JhcGhxbC5jYWNoZSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCxcbiAgICAgICAgICAgIGRhdGE6IGVudGl0eVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyaWVzKFxuICAgICAgICB0aGlzLmdyYXBocWwuY2FjaGUsXG4gICAgICAgIHtcbiAgICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgLi4uZW50aXR5LFxuICAgICAgICAgICAgY29udGVudDogbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgY291bnRcbiAgICB0aGlzLl9jb3VudFN1YmplY3QubmV4dCh0aGlzLl9jb3VudFN1YmplY3QudmFsdWUgKyAxKTtcblxuICAgIC8vIEFkZCBpZFxuICAgIGNvbnNvbGUubG9nKCdUT0RPOiBhZGQgYW4gSUQgdG8gdXNlciBldmVudCA/Jyk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXN5bmMgY291bnQoZmlsdGVyOiBQYXJ0aWFsPEY+LCBvcHRpb25zPzogeyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBQcm9taXNlPG51bWJlcj4ge1xuXG4gICAgaWYgKCF0aGlzLnF1ZXJpZXM/LmNvdW50KSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fVF1ZXJ5ICdjb3VudCcgbm90IHByb3ZpZGVkLCBza2lwLmApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgLy8gQXBwbHkgbGFzdCByZXNldCBkYXRlIGFzIHN0YXJ0IGRhdGVcbiAgICBmaWx0ZXIuc3RhcnREYXRlID0gdGhpcy5yZXNldENvdW50RGF0ZTtcbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUNvdW50aW5nIHVzZXIgZXZlbnRzIHdpdGggZmlsdGVyOmAsIGZpbHRlcik7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyB0b3RhbDogbnVtYmVyIH0+KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMuY291bnQsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuQ09VTlRfVVNFUl9FVkVOVF9FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5DT1VOVF9VU0VSX0VWRU5UX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5IHx8ICduZXR3b3JrLW9ubHknXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy50b3RhbDtcbiAgfVxuXG4gIGxpc3RlbkNvdW50Q2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG5cbiAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9ucz8ubGlzdGVuQ291bnRDaGFuZ2VzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fVN1YnNjcmlwdGlvbiBxdWVyeSAnbGlzdGVuQ291bnRDaGFuZ2VzJyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG5cbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgLy8gQXBwbHkgbGFzdCByZXNldCBkYXRlIGFzIHN0YXJ0IGRhdGVcbiAgICBmaWx0ZXIuc3RhcnREYXRlID0gdGhpcy5yZXNldENvdW50RGF0ZTtcbiAgICBmaWx0ZXIuZXhjbHVkZVJlYWQgPSB0cnVlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9W1dTXSBMaXN0ZW5pbmcgY291bnQgY2hhbmdlcyBmb3IgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwuc3Vic2NyaWJlPHsgdG90YWw6IG51bWJlciB9LCB7IGZpbHRlcjogYW55OyBpbnRlcnZhbDogbnVtYmVyIH0+KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnN1YnNjcmlwdGlvbnMubGlzdGVuQ291bnRDaGFuZ2VzLFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5LFxuICAgICAgdmFyaWFibGVzOiB7IGZpbHRlcjogZmlsdGVyLmFzUG9kT2JqZWN0KCksIGludGVydmFsOiB0b051bWJlcihvcHRpb25zPy5pbnRlcnZhbCwgMTApIH0sXG4gICAgICBlcnJvcjoge1xuICAgICAgICBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUixcbiAgICAgICAgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5TVUJTQ1JJQkVfVVNFUl9FVkVOVFNfRVJST1InXG4gICAgICB9XG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoeyB0b3RhbCB9KSA9PiB7XG4gICAgICAgICAgaWYgKHRvdGFsICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHMgY291bnQ6YCwgdG90YWwpO1xuICAgICAgICAgIC8vIHVwZGF0ZSBjb3VudFxuICAgICAgICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KHRvdGFsKTtcbiAgICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuXG4gIH1cblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogUGFydGlhbDxGPiwgb3B0cz86IFdPICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTsgdG9FbnRpdHk/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEVbXT4ge1xuXG4gICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbnM/Lmxpc3RlbkFsbENoYW5nZXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9U3Vic2NyaXB0aW9uIHF1ZXJ5ICdsaXN0ZW5BbGxDaGFuZ2VzJyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG5cbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSBvcHRzPy53aXRoQ29udGVudCA9PT0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9W1dTXSBMaXN0ZW5pbmcgY2hhbmdlcyBmb3IgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwuc3Vic2NyaWJlPHsgZGF0YTogYW55W10gfSwgeyBmaWx0ZXI6IGFueTsgaW50ZXJ2YWw6IG51bWJlciB9Pih7XG4gICAgICBxdWVyeTogdGhpcy5zdWJzY3JpcHRpb25zLmxpc3RlbkFsbENoYW5nZXMsXG4gICAgICBmZXRjaFBvbGljeTogb3B0cz8uZmV0Y2hQb2xpY3ksXG4gICAgICB2YXJpYWJsZXM6IHsgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKSwgaW50ZXJ2YWw6IHRvTnVtYmVyKG9wdHM/LmludGVydmFsLCAxMCkgfSxcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU1VCU0NSSUJFX1VTRVJfRVZFTlRTX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUidcbiAgICAgIH1cbiAgICB9KS5waXBlKFxuICAgICAgbWVyZ2VNYXAoYXN5bmMgKHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIGlmIChkYXRhICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHM6YCwgZGF0YSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIGNhY2hlICh3aWxsIHVwZGF0ZSB3YXRjaEFsbCBxdWVyaWVzKVxuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEpKSB7XG4gICAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMoXG4gICAgICAgICAgICB0aGlzLmdyYXBocWwuY2FjaGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiB3aXRoQ29udGVudCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHRvIGVudGl0aWVzXG4gICAgICAgIGlmICghb3B0cyB8fCBvcHRzLnRvRW50aXR5ICE9PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbCgoZGF0YSB8fCBbXSkubWFwKHZhbHVlID0+IHRoaXMucHJvY2Vzc1VzZXJFdmVudCh2YWx1ZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gIH1cblxuICBhc3luYyBkZWxldGUoZW50aXR5OiBFKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIWVudGl0eSkgcmV0dXJuOyAvLyBza2lwXG4gICAgYXdhaXQgdGhpcy5kZWxldGVBbGwoW2VudGl0eV0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQWxsKGVudGl0aWVzOiBFW10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGlkcyA9IGVudGl0aWVzICYmIGVudGl0aWVzXG4gICAgICAubWFwKHQgPT4gdC5pZCk7XG4gICAgaWYgKGlzRW1wdHlBcnJheShpZHMpKSByZXR1cm47IC8vIHN0b3AsIGlmIG5vdGhpbmcgZWxzZSB0byBkb1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fURlbGV0aW5nIGV2ZW50cy4uLiBpZHM6YCwgaWRzKTtcblxuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuZGVsZXRlQnlJZHMsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaWRzXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiAoY2FjaGUpID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY2FjaGVcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbU11dGFibGVDYWNoZWRRdWVyaWVzQnlJZHMoY2FjaGUsIHtcbiAgICAgICAgICAgIHF1ZXJpZXM6IHRoaXMuZ2V0TG9hZFF1ZXJpZXMoKSxcbiAgICAgICAgICAgIGlkc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1FdmVudHMgZGVsZXRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoZW50aXR5OiBFLCBvcHRpb25zPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zKTogUHJvbWlzZTxFPiB7XG4gICAgdGhpcy5maWxsRGVmYXVsdFByb3BlcnRpZXMoZW50aXR5KTtcblxuICAgIC8vIFRyYW5zZm9ybSBpbnRvIGpzb25cbiAgICBjb25zdCB3aXRoQ29udGVudCA9ICEhZW50aXR5LmNvbnRlbnQ7XG4gICAgY29uc3QganNvbiA9IGVudGl0eS5hc09iamVjdChNSU5JRllfRU5USVRZX0ZPUl9QT0QpO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVNhdmluZyB1c2VyIGV2ZW50Li4uYCwganNvbik7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5zYXZlLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGRhdGE6IGpzb25cbiAgICAgIH0sXG4gICAgICBlcnJvcjogeyBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNBVkVfVVNFUl9FVkVOVF9FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5TQVZFX1VTRVJfRVZFTlRfRVJST1InIH0sXG4gICAgICB1cGRhdGU6IChwcm94eSwgeyBkYXRhIH0pID0+IHtcbiAgICAgICAgLy8gVXBkYXRlIGVudGl0eVxuICAgICAgICBjb25zdCBzYXZlZEVudGl0eSA9IGRhdGEgJiYgZGF0YS5kYXRhO1xuICAgICAgICBpZiAoc2F2ZWRFbnRpdHkpIHtcbiAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVVzZXIgZXZlbnQgc2F2ZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCwgZW50aXR5KTtcbiAgICAgICAgICB0aGlzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc2F2ZWRFbnRpdHksIGVudGl0eSk7XG5cbiAgICAgICAgICAvLyBBZGQgdG8gY2FjaGVcbiAgICAgICAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICAgICAgICBpZiAod2l0aENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMocHJveHksIHtcbiAgICAgICAgICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCxcbiAgICAgICAgICAgICAgICBkYXRhOiBzYXZlZEVudGl0eVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyaWVzKHByb3h5LCB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIC4uLnNhdmVkRW50aXR5LFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXN5bmMgc2F2ZUFsbChlbnRpdGllczogRVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxFW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoZW50aXRpZXNcbiAgICAgIC5tYXAoZW50aXR5ID0+IHRoaXMuc2F2ZShlbnRpdHksIG9wdHMpKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBtYXJrQWxsQXNSZWFkKGVudGl0aWVzOiBFW10pIHtcblxuICAgIGNvbnN0IHVzZXJFdmVudFdpdGhvdXRSZWFkTGlzdGVuZXJzOiBFW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiAoZW50aXRpZXMgfHwgW10pKSB7XG4gICAgICAvLyBHZXQgb25SZWFkIGxpc3RlbmVyc1xuICAgICAgY29uc3Qgb25SZWFkTGlzdGVuZXJzID0gKHRoaXMubGlzdGVuZXJzIHx8IFtdKS5maWx0ZXIobGlzdGVuZXIgPT4gISFsaXN0ZW5lci5vblJlYWQpLmZpbHRlcihsaXN0ZW5lciA9PiBsaXN0ZW5lci5hY2NlcHQoZW50aXR5KSk7XG4gICAgICBpZiAob25SZWFkTGlzdGVuZXJzLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIG9uUmVhZExpc3RlbmVycykge1xuICAgICAgICAgIGF3YWl0IGxpc3RlbmVyLm9uUmVhZChlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgdG8gdGhpcyBsaXN0IGZvciBkZWZhdWx0IG9wZXJhdGlvblxuICAgICAgICB1c2VyRXZlbnRXaXRob3V0UmVhZExpc3RlbmVycy5wdXNoKGVudGl0eSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXNlIGRlZmF1bHRcbiAgICBhd2FpdCB0aGlzLmRlZmF1bHRNYXJrQXNSZWFkKHVzZXJFdmVudFdpdGhvdXRSZWFkTGlzdGVuZXJzKTtcbiAgfVxuXG4gIHJlZ2lzdGVyTGlzdGVuZXIobGlzdGVuZXI6IElVc2VyRXZlbnRMaXN0ZW5lcjxFLCBJRD4pIHtcbiAgICBpZiAoIXRoaXMubGlzdGVuZXJzKSB0aGlzLmxpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9XG5cbiAgcmVzZXRDb3VudCgpIHtcbiAgICB0aGlzLl9jb3VudFN1YmplY3QubmV4dCh1bmRlZmluZWQpO1xuICAgIHRoaXMucmVzZXRDb3VudERhdGUgPSBEYXRlVXRpbHMubW9tZW50KCk7XG4gICAgLy8gcmVzdGFydCBsaXN0ZW5pbmcgY291bnQgY2hhbmdlc1xuICAgIHRoaXMuc3RhcnRMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTG9naW4oKSB7XG4gICAgLy8gR2V0IGZpcnN0IGNvdW50XG4gICAgY29uc3QgY291bnQgPSBhd2FpdCB0aGlzLmNvdW50KHVuZGVmaW5lZCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZpbmcgdXNlciBldmVudHMgY291bnRgLCBjb3VudCk7XG4gICAgLy8gVXBkYXRlIGNvdW50XG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQoY291bnQpO1xuXG4gICAgLy8gVGhlbiBsaXN0ZW4gY2hhbmdlc1xuICAgIHRoaXMuc3RhcnRMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkxvZ291dCgpIHtcbiAgICAvLyBSZXNldCBjb3VudGVyXG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQoMCk7XG4gICAgLy8gU3RvcCBsaXN0ZW5pbmdcbiAgICB0aGlzLnN0b3BMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGFydExpc3RlbkNvdW50Q2hhbmdlcygpIHtcbiAgICB0aGlzLnN0b3BMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgICB0aGlzLl9saXN0ZW5TdWJzY3JpcHRpb24gPSB0aGlzLmxpc3RlbkNvdW50Q2hhbmdlcyh1bmRlZmluZWQpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0b3BMaXN0ZW5Db3VudENoYW5nZXMoKSB7XG4gICAgdGhpcy5fbGlzdGVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX2xpc3RlblN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcm9jZXNzVXNlckV2ZW50KHNvdXJjZTogYW55KTogUHJvbWlzZTxFPiB7XG5cbiAgICAvLyBDb252ZXJ0IGpzb24gc291cmNlIHRvIElVc2VyRXZlbnRcbiAgICBsZXQgdGFyZ2V0ID0gdGhpcy5mcm9tT2JqZWN0KHNvdXJjZSk7XG5cbiAgICAvLyBHZXQgbGlzdGVuZXJzXG4gICAgY29uc3QgbGlzdGVuZXJzID0gKHRoaXMubGlzdGVuZXJzIHx8IFtdKVxuICAgICAgLmZpbHRlcihsaXN0ZW5lciA9PiAhIWxpc3RlbmVyLm9uUmVjZWl2ZWQpXG4gICAgICAuZmlsdGVyKGxpc3RlbmVyID0+IGxpc3RlbmVyLmFjY2VwdCh0YXJnZXQpKTtcbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykge1xuICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICBjb25zdCByZXMgPSBsaXN0ZW5lci5vblJlY2VpdmVkKHRhcmdldCk7XG4gICAgICAgIHRhcmdldCA9IChyZXMgaW5zdGFuY2VvZiBQcm9taXNlKSA/IGF3YWl0IHJlcyA6IHJlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9RXZlbnQgaGFzIGJlZW4gcmVqZWN0ZWQgYnkgYSBsaXN0ZW5lcmAsIHNvdXJjZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZGVmYXVsdE1hcmtBc1JlYWQodXNlckV2ZW50czogRVtdKSB7XG4gICAgaWYgKCF1c2VyRXZlbnRzKSB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fUludmFsaWQgZXZlbnQgdG8gc2F2ZWApO1xuICAgIGlmICghdXNlckV2ZW50cy5sZW5ndGgpIHJldHVybjtcblxuICAgIC8vIHNldCByZWFkIGRhdGVcbiAgICB1c2VyRXZlbnRzLmZvckVhY2godXNlckV2ZW50ID0+IHVzZXJFdmVudC5yZWFkRGF0ZSA9IERhdGVVdGlscy5tb21lbnQoKSk7XG5cbiAgICAvLyBzcGxpdCBsb2NhbC9yZW1vdGUgZW50aXRpZXNcbiAgICBjb25zdCBsb2NhbEVudGl0aWVzID0gdXNlckV2ZW50cy5maWx0ZXIoRW50aXR5VXRpbHMuaXNMb2NhbCk7XG4gICAgY29uc3QgcmVtb3RlRW50aXRpZXMgPSB1c2VyRXZlbnRzLmZpbHRlcihFbnRpdHlVdGlscy5pc1JlbW90ZSk7XG5cbiAgICAvLyBzYXZlIGxvY2FsIGVudGl0aWVzXG4gICAgaWYgKGxvY2FsRW50aXRpZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVNhdmUgbG9jYWwgdXNlciBldmVudGApO1xuICAgICAgLy8gVE9ETyAhISEhISEhISEhISEhXG4gICAgfVxuICAgIC8vIG1hcmsgcmVtb3RlIGVudGl0aWVzIGFzIHJlYWRcbiAgICBpZiAocmVtb3RlRW50aXRpZXMubGVuZ3RoKSB7XG4gICAgICBpZiAoIXRoaXMubXV0YXRpb25zPy5tYXJrQXNSZWFkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9TXV0YXRpb24gcXVlcnkgJ21hcmtBc1JlYWQnIG5vdCBwcm92aWRlZCwgc2tpcC5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBDb2xsZWN0IGlkc1xuICAgICAgY29uc3QgaWRzID0gcmVtb3RlRW50aXRpZXMubWFwKHZhbHVlID0+IHZhbHVlLmlkKTtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fU1hcmsgdXNlciBldmVudHMgYXMgcmVhZC4uLmAsIGlkcyk7XG5cbiAgICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8eyBkYXRhOiBhbnkgfT4oe1xuICAgICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMubWFya0FzUmVhZCxcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgaWRzXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU0FWRV9VU0VSX0VWRU5UX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNBVkVfVVNFUl9FVkVOVF9FUlJPUicgfSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVVzZXIgZXZlbnRzIG1hcmtlZCBhcyByZWFkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGlkcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRGaWx0ZXIoKTogRiB7XG4gICAgLy8gQnkgZGVmYXVsdFxuICAgIHJldHVybiA8Rj57XG4gICAgICByZWNpcGllbnRzOiBbdGhpcy5kZWZhdWx0UmVjaXBpZW50KCldXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBkZWZhdWx0UmVjaXBpZW50KCk6IGFueTtcblxuICBwcm90ZWN0ZWQgZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eTogRSkge1xuICB9XG5cbiAgcHJvdGVjdGVkIHVucmVhZEV2ZW50cyhldmVudHM6IEVbXSk6IG51bWJlciB7XG4gICAgLy8gZGVmYXVsdCBjYWxjdWxhdGlvbiBvbiB1bnJlYWQgZXZlbnRzIGZyb20gYSBsaXN0XG4gICAgaWYgKGlzRW1wdHlBcnJheShldmVudHMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxhc3RSZWFkRGF0ZSA9IGV2ZW50c1xuICAgICAgLmZpbHRlcihldmVudCA9PiBpc05vdE5pbChldmVudC5yZWFkRGF0ZSkpXG4gICAgICAucmVkdWNlKChsYXN0RGF0ZSwgZXZlbnQpID0+IERhdGVVdGlscy5tYXgobGFzdERhdGUsIGV2ZW50LnJlYWREYXRlKSwgdW5kZWZpbmVkIGFzIE1vbWVudCk7XG4gICAgcmV0dXJuIGV2ZW50c1xuICAgICAgLmZpbHRlcihldmVudCA9PiBldmVudC5jcmVhdGlvbkRhdGUuaXNTYW1lT3JBZnRlcihsYXN0UmVhZERhdGUpKS5sZW5ndGg7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29weUlkQW5kVXBkYXRlRGF0ZShzb3VyY2U6IEUsIHRhcmdldDogRSkge1xuICAgIEVudGl0eVV0aWxzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc291cmNlLCB0YXJnZXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldExvYWRRdWVyaWVzKCk6IERvY3VtZW50Tm9kZVtdIHtcbiAgICByZXR1cm4gW3RoaXMucXVlcmllcy5sb2FkQWxsLCB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50XS5maWx0ZXIoaXNOb3ROaWwpO1xuICB9XG5cbn1cbiJdfQ==
@@ -80,4 +80,4 @@ export class EnvironmentHttpLoader extends EnvironmentLoader {
80
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: EnvironmentHttpLoader, decorators: [{
81
81
  type: Injectable
82
82
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined }] });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFHMUQsTUFBTSxPQUFnQixpQkFBaUI7dUdBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUR0QyxTQUFTOztBQVFWLE1BQU0sT0FBTyxxQkFBMkQsU0FBUSxpQkFBb0I7SUFRNUU7SUFQTCxVQUFVLEdBQUcsdUJBQXVCLENBQUM7SUFFNUMsTUFBTSxDQUFVO0lBQ2hCLFlBQVksQ0FBSTtJQUNoQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ1AsdUJBQXVCLENBQVM7SUFFbkQsWUFBc0IsSUFBZ0IsRUFBRSxrQkFBc0I7UUFDNUQsS0FBSyxFQUFFLENBQUM7UUFEWSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBRXBDLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGtCQUFrQixJQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDO1FBQ3hFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO1lBQ2xFLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxxRUFBcUUsQ0FBQyxDQUFDO1NBQ3ZHO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxpQkFBaUI7UUFFN0QsSUFBSTtZQUNGLDRCQUE0QjtZQUM1QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRTtnQkFDakQsUUFBUTtnQkFDUixvQkFBb0I7Z0JBRXBCLGlDQUFpQztnQkFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUU1RCxpQ0FBaUM7Z0JBQ2pDLElBQUksSUFBSSxFQUFFO29CQUNSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDeEM7YUFDRjtZQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMxQjtnQkFBUztZQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELDhCQUE4QjtJQUVwQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQVc7UUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxzQ0FBc0MsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUVsRyxPQUFPLGNBQWMsQ0FDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNqQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxzQ0FBc0MsQ0FBQyxDQUFDO2FBQzFGO2lCQUNJO2dCQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSx3Q0FBd0MsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2pHO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzt1R0F4RVUscUJBQXFCOzJHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgb2YsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vYXBwL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnZpcm9ubWVudExvYWRlcjxUIGV4dGVuZHMgRW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudD4ge1xuICBhYnN0cmFjdCBsb2FkKCk6IFByb21pc2U8VD47XG5cbiAgYWJzdHJhY3QgZ2V0KCk6IFQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudEh0dHBMb2FkZXI8VCBleHRlbmRzIEVudmlyb25tZW50ID0gRW52aXJvbm1lbnQ+IGV4dGVuZHMgRW52aXJvbm1lbnRMb2FkZXI8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dQcmVmaXggPSAnW2Vudmlyb25tZW50LWxvYWRlcl0gJztcblxuICBwcm90ZWN0ZWQgX2RlYnVnOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX2Vudmlyb25tZW50OiBUO1xuICBwcm90ZWN0ZWQgX2xvYWRlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2V4dGVybmFsRW52aXJvbm1lbnRVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCwgZGVmYXVsdEVudmlyb25tZW50PzogVCkge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gQ29weSBkZWZhdWx0IGVudmlyb25tZW50IChiZWNhdXNlIGNhbiBiZSByZWFkb25seSlcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRFbnZpcm9ubWVudCB8fCA8VD57fSk7XG4gICAgdGhpcy5fZXh0ZXJuYWxFbnZpcm9ubWVudFVybCA9IHRoaXMuX2Vudmlyb25tZW50LmV4dGVybmFsRW52aXJvbm1lbnRVcmw7XG4gICAgdGhpcy5fZGVidWcgPSAhdGhpcy5fZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxvYWRlZCBlbnZpcm9ubWVudC4gU2hvdWxkIGJlIGNhbGwgYWZ0ZXIgbG9hZGVkXG4gICAqL1xuICBnZXQoKTogVCB7XG4gICAgaWYgKCF0aGlzLl9sb2FkZWQgJiYgaXNOb3ROaWxPckJsYW5rKHRoaXMuX2V4dGVybmFsRW52aXJvbm1lbnRVcmwpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fUVudmlyb25tZW50SHR0cExvYWRlci5nZXQoKSBzaG91bGQgYmUgY2FsbGVkIEFGVEVSIGxvYWQoKSBmaW5pc2hlZC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5fbG9hZGVkKSByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7IC8vIEFscmVhZHkgbG9hZGVkXG5cbiAgICB0cnkge1xuICAgICAgLy8gSWYgaXQgaGFzIGFuIGV4dGVybmFsIHVybFxuICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayh0aGlzLl9leHRlcm5hbEVudmlyb25tZW50VXJsKSkge1xuICAgICAgICAvLyBERUJVR1xuICAgICAgICAvL2F3YWl0IHNsZWVwKDQwMDApO1xuXG4gICAgICAgIC8vIExvYWQgZXh0ZXJuYWwgZW52aXJvbm1lbnQgZmlsZVxuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgdGhpcy5mZXRjaCh0aGlzLl9leHRlcm5hbEVudmlyb25tZW50VXJsKTtcblxuICAgICAgICAvLyBQYXRjaCB0aGUgZXhpc3RpbmcgZW52aXJvbm1lbnRcbiAgICAgICAgaWYgKGpzb24pIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2Vudmlyb25tZW50LCBqc29uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9uIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoKHVybDogc3RyaW5nKTogUHJvbWlzZTxQYXJ0aWFsPFQ+PiB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Mb2FkaW5nIGV4dGVybmFsIGVudmlyb25tZW50IGZyb20geyR7dXJsfX0uLi5gKTtcblxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaHR0cC5nZXQ8UGFydGlhbDxUPj4odXJsKS5waXBlKFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICAgdGFwKChqc29uKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1FeHRlcm5hbCBlbnZpcm9ubWVudCBsb2FkZWRgLCBqc29uKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fUV4dGVybmFsIGVudmlyb25tZW50IG5vdCBmb3VuZCAoNDA0KWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fUZhaWxlZCB0byBsb2FkIGV4dGVybmFsIGVudmlyb25tZW50OiAke2Vycm9yLm1lc3NhZ2V9YCwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFHMUQsTUFBTSxPQUFnQixpQkFBaUI7dUdBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUR0QyxTQUFTOztBQVFWLE1BQU0sT0FBTyxxQkFBMkQsU0FBUSxpQkFBb0I7SUFRNUU7SUFQTCxVQUFVLEdBQUcsdUJBQXVCLENBQUM7SUFFNUMsTUFBTSxDQUFVO0lBQ2hCLFlBQVksQ0FBSTtJQUNoQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ1AsdUJBQXVCLENBQVM7SUFFbkQsWUFBc0IsSUFBZ0IsRUFBRSxrQkFBc0I7UUFDNUQsS0FBSyxFQUFFLENBQUM7UUFEWSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBRXBDLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGtCQUFrQixJQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDO1FBQ3hFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7WUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHFFQUFxRSxDQUFDLENBQUM7UUFDeEcsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsaUJBQWlCO1FBRTdELElBQUksQ0FBQztZQUNILDRCQUE0QjtZQUM1QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxRQUFRO2dCQUNSLG9CQUFvQjtnQkFFcEIsaUNBQWlDO2dCQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBRTVELGlDQUFpQztnQkFDakMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDVCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3pDLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzNCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsOEJBQThCO0lBRXBCLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBVztRQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHNDQUFzQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRWxHLE9BQU8sY0FBYyxDQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2pDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLDZCQUE2QixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxJQUFJLENBQUMsTUFBTTtvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsc0NBQXNDLENBQUMsQ0FBQztZQUMzRixDQUFDO2lCQUNJLENBQUM7Z0JBQ0osT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHdDQUF3QyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEcsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7dUdBeEVVLHFCQUFxQjsyR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIG9mLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IGlzTm90TmlsT3JCbGFuayB9IGZyb20gJy4uL2FwcC9zaGFyZWQvZnVuY3Rpb25zJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW52aXJvbm1lbnRMb2FkZXI8VCBleHRlbmRzIEVudmlyb25tZW50ID0gRW52aXJvbm1lbnQ+IHtcbiAgYWJzdHJhY3QgbG9hZCgpOiBQcm9taXNlPFQ+O1xuXG4gIGFic3RyYWN0IGdldCgpOiBUO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnRIdHRwTG9hZGVyPFQgZXh0ZW5kcyBFbnZpcm9ubWVudCA9IEVudmlyb25tZW50PiBleHRlbmRzIEVudmlyb25tZW50TG9hZGVyPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nUHJlZml4ID0gJ1tlbnZpcm9ubWVudC1sb2FkZXJdICc7XG5cbiAgcHJvdGVjdGVkIF9kZWJ1ZzogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9lbnZpcm9ubWVudDogVDtcbiAgcHJvdGVjdGVkIF9sb2FkZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9leHRlcm5hbEVudmlyb25tZW50VXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsIGRlZmF1bHRFbnZpcm9ubWVudD86IFQpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIENvcHkgZGVmYXVsdCBlbnZpcm9ubWVudCAoYmVjYXVzZSBjYW4gYmUgcmVhZG9ubHkpXG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0RW52aXJvbm1lbnQgfHwgPFQ+e30pO1xuICAgIHRoaXMuX2V4dGVybmFsRW52aXJvbm1lbnRVcmwgPSB0aGlzLl9lbnZpcm9ubWVudC5leHRlcm5hbEVudmlyb25tZW50VXJsO1xuICAgIHRoaXMuX2RlYnVnID0gIXRoaXMuX2Vudmlyb25tZW50LnByb2R1Y3Rpb247XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsb2FkZWQgZW52aXJvbm1lbnQuIFNob3VsZCBiZSBjYWxsIGFmdGVyIGxvYWRlZFxuICAgKi9cbiAgZ2V0KCk6IFQge1xuICAgIGlmICghdGhpcy5fbG9hZGVkICYmIGlzTm90TmlsT3JCbGFuayh0aGlzLl9leHRlcm5hbEVudmlyb25tZW50VXJsKSkge1xuICAgICAgY29uc29sZS53YXJuKGAke3RoaXMuX2xvZ1ByZWZpeH1FbnZpcm9ubWVudEh0dHBMb2FkZXIuZ2V0KCkgc2hvdWxkIGJlIGNhbGxlZCBBRlRFUiBsb2FkKCkgZmluaXNoZWQuYCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuX2xvYWRlZCkgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50OyAvLyBBbHJlYWR5IGxvYWRlZFxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIElmIGl0IGhhcyBhbiBleHRlcm5hbCB1cmxcbiAgICAgIGlmIChpc05vdE5pbE9yQmxhbmsodGhpcy5fZXh0ZXJuYWxFbnZpcm9ubWVudFVybCkpIHtcbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy9hd2FpdCBzbGVlcCg0MDAwKTtcblxuICAgICAgICAvLyBMb2FkIGV4dGVybmFsIGVudmlyb25tZW50IGZpbGVcbiAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHRoaXMuZmV0Y2godGhpcy5fZXh0ZXJuYWxFbnZpcm9ubWVudFVybCk7XG5cbiAgICAgICAgLy8gUGF0Y2ggdGhlIGV4aXN0aW5nIGVudmlyb25tZW50XG4gICAgICAgIGlmIChqc29uKSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9lbnZpcm9ubWVudCwganNvbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBmdW5jdGlvbiAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBmZXRjaCh1cmw6IHN0cmluZyk6IFByb21pc2U8UGFydGlhbDxUPj4ge1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9TG9hZGluZyBleHRlcm5hbCBlbnZpcm9ubWVudCBmcm9tIHske3VybH19Li4uYCk7XG5cbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLmh0dHAuZ2V0PFBhcnRpYWw8VD4+KHVybCkucGlwZShcbiAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgICAgIHRhcCgoanNvbikgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9RXh0ZXJuYWwgZW52aXJvbm1lbnQgbG9hZGVkYCwganNvbik7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1FeHRlcm5hbCBlbnZpcm9ubWVudCBub3QgZm91bmQgKDQwNClgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1GYWlsZWQgdG8gbG9hZCBleHRlcm5hbCBlbnZpcm9ubWVudDogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -10,8 +10,8 @@
10
10
  import 'zone.js/plugins/zone-error';
11
11
  import { StorageDrivers } from '../app/shared/storage/storage.utils';
12
12
  export const environment = Object.freeze({
13
- name: '@sumaris-net/ngx-components',
14
- version: undefined,
13
+ name: '@sumaris-net/ngx-components', // overridden by ENVIRONMENT token
14
+ version: undefined, // overridden by ENVIRONMENT token
15
15
  // Do NOT set to false - because this value will be used by releases
16
16
  production: true,
17
17
  // Do NOT set - because this value will be used by releases
@@ -94,4 +94,4 @@ export const environment = Object.freeze({
94
94
  listenIntervalInSeconds: 60,
95
95
  },
96
96
  });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBR2hFOzs7OztHQUtHO0FBQ0gsT0FBTyw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFckUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFnQixNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3BELElBQUksRUFBRSw2QkFBNkI7SUFDbkMsT0FBTyxFQUFFLFNBQVM7SUFFbEIsb0VBQW9FO0lBQ3BFLFVBQVUsRUFBRSxJQUFJO0lBRWhCLDJEQUEyRDtJQUMzRCwrQkFBK0I7SUFFL0IsT0FBTyxFQUFFLEdBQUc7SUFDWixhQUFhLEVBQUUsSUFBSTtJQUNuQixvQkFBb0IsRUFBRSxNQUFNO0lBQzVCLGlCQUFpQixFQUFFLGFBQWE7SUFFaEMsc0JBQXNCO0lBQ3RCLFlBQVksRUFBRSxLQUFLO0lBRW5CLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFFaEIsY0FBYyxFQUFFLE9BQU87SUFDdkIsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLFdBQVc7UUFDakIsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUVELFlBQVksRUFBRTtRQUNaO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLEdBQUc7U0FDVjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixJQUFJLEVBQUUsR0FBRztTQUNWO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLElBQUksRUFBRSxHQUFHO1NBQ1Y7UUFDRDtZQUNFLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsSUFBSSxFQUFFLEdBQUc7U0FDVjtLQUNGO0lBQ0QsY0FBYyxFQUFFLFNBQVM7SUFDekIsd0JBQXdCLEVBQUUsK0RBQStEO0lBRXpGLFVBQVU7SUFDVixPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsWUFBWSxDQUFDO0tBQ3BIO0lBRUQsUUFBUTtJQUNSLFNBQVMsRUFBRSxxRUFBcUU7SUFDaEYsY0FBYyxFQUFFLDhFQUE4RTtJQUM5RixRQUFRLEVBQUUsMkJBQTJCO0lBQ3JDLE9BQU8sRUFBRSxnR0FBZ0c7SUFFekcsY0FBYztJQUNkLGlCQUFpQixFQUFFO0lBQ2pCLHFDQUFxQztJQUNyQyx3Q0FBd0M7SUFDeEMsbUNBQW1DO0lBQ25DLG1EQUFtRDtLQUNwRDtJQUVELE9BQU8sRUFBRTtRQUNQLG1CQUFtQixFQUFFLElBQUk7UUFDekIsdUJBQXVCLEVBQUUsRUFBRTtLQUM1QjtJQUVELFlBQVksRUFBRTtRQUNaLG1CQUFtQixFQUFFLElBQUk7UUFDekIsdUJBQXVCLEVBQUUsRUFBRTtLQUM1QjtDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBjYW4gYmUgcmVwbGFjZWQgZHVyaW5nIGJ1aWxkIGJ5IHVzaW5nIHRoZSBgZmlsZVJlcGxhY2VtZW50c2AgYXJyYXkuXG4vLyBgbmcgYnVpbGQgLS0tcHJvZGAgcmVwbGFjZXMgYGVudmlyb25tZW50LnRzYCB3aXRoIGBlbnZpcm9ubWVudC5wcm9kLnRzYC5cbi8vIFRoZSBsaXN0IG9mIGZpbGUgcmVwbGFjZW1lbnRzIGNhbiBiZSBmb3VuZCBpbiBgYW5ndWxhci5qc29uYC5cblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50LmNsYXNzJztcbi8qXG4gKiBJbiBkZXZlbG9wbWVudCBtb2RlLCB0byBpZ25vcmUgem9uZSByZWxhdGVkIGVycm9yIHN0YWNrIGZyYW1lcyBzdWNoIGFzXG4gKiBgem9uZS5ydW5gLCBgem9uZURlbGVnYXRlLmludm9rZVRhc2tgIGZvciBlYXNpZXIgZGVidWdnaW5nLCB5b3UgY2FuXG4gKiBpbXBvcnQgdGhlIGZvbGxvd2luZyBmaWxlLCBidXQgcGxlYXNlIGNvbW1lbnQgaXQgb3V0IGluIHByb2R1Y3Rpb24gbW9kZVxuICogYmVjYXVzZSBpdCB3aWxsIGhhdmUgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gdGhyb3cgZXJyb3JcbiAqL1xuaW1wb3J0ICd6b25lLmpzL3BsdWdpbnMvem9uZS1lcnJvcic7XG5pbXBvcnQgeyBTdG9yYWdlRHJpdmVycyB9IGZyb20gJy4uL2FwcC9zaGFyZWQvc3RvcmFnZS9zdG9yYWdlLnV0aWxzJztcblxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50OiBFbnZpcm9ubWVudCA9IE9iamVjdC5mcmVlemUoe1xuICBuYW1lOiAnQHN1bWFyaXMtbmV0L25neC1jb21wb25lbnRzJywgLy8gb3ZlcnJpZGRlbiBieSBFTlZJUk9OTUVOVCB0b2tlblxuICB2ZXJzaW9uOiB1bmRlZmluZWQsIC8vIG92ZXJyaWRkZW4gYnkgRU5WSVJPTk1FTlQgdG9rZW5cblxuICAvLyBEbyBOT1Qgc2V0IHRvIGZhbHNlIC0gYmVjYXVzZSB0aGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBieSByZWxlYXNlc1xuICBwcm9kdWN0aW9uOiB0cnVlLFxuXG4gIC8vIERvIE5PVCBzZXQgLSBiZWNhdXNlIHRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIGJ5IHJlbGVhc2VzXG4gIC8vZXh0ZXJuYWxFbnZpcm9ubWVudFVybDogbnVsbCxcblxuICBiYXNlVXJsOiAnLycsXG4gIGRlZmF1bHRMb2NhbGU6ICdmcicsXG4gIGRlZmF1bHRMYXRMb25nRm9ybWF0OiAnRERNTScsXG4gIGFwb2xsb0ZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnLFxuXG4gIC8vIEZJWE1FOiBlbmFibGUgY2FjaGVcbiAgcGVyc2lzdENhY2hlOiBmYWxzZSxcblxuICAvLyBUT0RPOiBtYWtlIHRoaXMgd29ya3NcbiAgLy9vZmZsaW5lOiB0cnVlLFxuXG4gIHBlZXJNaW5WZXJzaW9uOiAnMS44LjAnLFxuICBkZWZhdWx0UGVlcjoge1xuICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgIHBvcnQ6IDgwODFcbiAgfSxcblxuICBkZWZhdWx0UGVlcnM6IFtcbiAgICB7XG4gICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDgwODEsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjQ1JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjI0JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjI5JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnc2loLnNmYS5zYycsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAndGVzdC5zdW1hcmlzLm5ldCcsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnb3Blbi5zdW1hcmlzLm5ldCcsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnc2VydmVyLmUtaXMucHJvJyxcbiAgICAgIHBvcnQ6IDQ0MyxcbiAgICB9LFxuICBdLFxuICBkZWZhdWx0QXBwTmFtZTogJ1NVTUFSaVMnLFxuICBkZWZhdWx0QW5kcm9pZEluc3RhbGxVcmw6ICdodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9bmV0LnN1bWFyaXMuYXBwJyxcblxuICAvLyBTdG9yYWdlXG4gIHN0b3JhZ2U6IHtcbiAgICBkcml2ZXJPcmRlcjogW1N0b3JhZ2VEcml2ZXJzLlNRTExpdGUsIFN0b3JhZ2VEcml2ZXJzLkluZGV4ZWREQiwgU3RvcmFnZURyaXZlcnMuV2ViU1FMLCBTdG9yYWdlRHJpdmVycy5Mb2NhbFN0b3JhZ2VdLFxuICB9LFxuXG4gIC8vIEFib3V0XG4gIHNvdXJjZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMnLFxuICByZXBvcnRJc3N1ZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9pc3N1ZXMnLFxuICBmb3J1bVVybDogJ2h0dHBzOi8vZm9ydW0uc3VtYXJpcy5uZXQnLFxuICBoZWxwVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1kb2MvLS9ibG9iL21hc3Rlci91c2VyLW1hbnVhbC9pbmRleF9mci5tZCcsXG5cbiAgLy8gRGV2ZWxvcG1lbnRcbiAgZGVmYXVsdEF1dGhWYWx1ZXM6IHtcbiAgICAvLyBCYXNpYyBhdXRoICh1c2luZyBQZXJzb24udXNlcm5hbWUpXG4gICAgLy8gdXNlcm5hbWU6ICdhZG1xMicsIHBhc3N3b3JkOiAncTIyMDA2J1xuICAgIC8vIFRva2VuIGF1dGggKHVzaW5nIFBlcnNvbi5wdWJrZXkpXG4gICAgLy91c2VybmFtZTogJ2FkbWluQHN1bWFyaXMubmV0JywgcGFzc3dvcmQ6ICdhZG1pbicsXG4gIH0sXG5cbiAgYWNjb3VudDoge1xuICAgIGVuYWJsZUxpc3RlbkNoYW5nZXM6IHRydWUsXG4gICAgbGlzdGVuSW50ZXJ2YWxJblNlY29uZHM6IDYwLFxuICB9LFxuXG4gIGVudGl0eUVkaXRvcjoge1xuICAgIGVuYWJsZUxpc3RlbkNoYW5nZXM6IHRydWUsXG4gICAgbGlzdGVuSW50ZXJ2YWxJblNlY29uZHM6IDYwLFxuICB9LFxufSk7XG5cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBR2hFOzs7OztHQUtHO0FBQ0gsT0FBTyw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFckUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFnQixNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3BELElBQUksRUFBRSw2QkFBNkIsRUFBRSxrQ0FBa0M7SUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQ0FBa0M7SUFFdEQsb0VBQW9FO0lBQ3BFLFVBQVUsRUFBRSxJQUFJO0lBRWhCLDJEQUEyRDtJQUMzRCwrQkFBK0I7SUFFL0IsT0FBTyxFQUFFLEdBQUc7SUFDWixhQUFhLEVBQUUsSUFBSTtJQUNuQixvQkFBb0IsRUFBRSxNQUFNO0lBQzVCLGlCQUFpQixFQUFFLGFBQWE7SUFFaEMsc0JBQXNCO0lBQ3RCLFlBQVksRUFBRSxLQUFLO0lBRW5CLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFFaEIsY0FBYyxFQUFFLE9BQU87SUFDdkIsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLFdBQVc7UUFDakIsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUVELFlBQVksRUFBRTtRQUNaO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLEdBQUc7U0FDVjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixJQUFJLEVBQUUsR0FBRztTQUNWO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLElBQUksRUFBRSxHQUFHO1NBQ1Y7UUFDRDtZQUNFLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsSUFBSSxFQUFFLEdBQUc7U0FDVjtLQUNGO0lBQ0QsY0FBYyxFQUFFLFNBQVM7SUFDekIsd0JBQXdCLEVBQUUsK0RBQStEO0lBRXpGLFVBQVU7SUFDVixPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsWUFBWSxDQUFDO0tBQ3BIO0lBRUQsUUFBUTtJQUNSLFNBQVMsRUFBRSxxRUFBcUU7SUFDaEYsY0FBYyxFQUFFLDhFQUE4RTtJQUM5RixRQUFRLEVBQUUsMkJBQTJCO0lBQ3JDLE9BQU8sRUFBRSxnR0FBZ0c7SUFFekcsY0FBYztJQUNkLGlCQUFpQixFQUFFO0lBQ2pCLHFDQUFxQztJQUNyQyx3Q0FBd0M7SUFDeEMsbUNBQW1DO0lBQ25DLG1EQUFtRDtLQUNwRDtJQUVELE9BQU8sRUFBRTtRQUNQLG1CQUFtQixFQUFFLElBQUk7UUFDekIsdUJBQXVCLEVBQUUsRUFBRTtLQUM1QjtJQUVELFlBQVksRUFBRTtRQUNaLG1CQUFtQixFQUFFLElBQUk7UUFDekIsdUJBQXVCLEVBQUUsRUFBRTtLQUM1QjtDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBjYW4gYmUgcmVwbGFjZWQgZHVyaW5nIGJ1aWxkIGJ5IHVzaW5nIHRoZSBgZmlsZVJlcGxhY2VtZW50c2AgYXJyYXkuXG4vLyBgbmcgYnVpbGQgLS0tcHJvZGAgcmVwbGFjZXMgYGVudmlyb25tZW50LnRzYCB3aXRoIGBlbnZpcm9ubWVudC5wcm9kLnRzYC5cbi8vIFRoZSBsaXN0IG9mIGZpbGUgcmVwbGFjZW1lbnRzIGNhbiBiZSBmb3VuZCBpbiBgYW5ndWxhci5qc29uYC5cblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50LmNsYXNzJztcbi8qXG4gKiBJbiBkZXZlbG9wbWVudCBtb2RlLCB0byBpZ25vcmUgem9uZSByZWxhdGVkIGVycm9yIHN0YWNrIGZyYW1lcyBzdWNoIGFzXG4gKiBgem9uZS5ydW5gLCBgem9uZURlbGVnYXRlLmludm9rZVRhc2tgIGZvciBlYXNpZXIgZGVidWdnaW5nLCB5b3UgY2FuXG4gKiBpbXBvcnQgdGhlIGZvbGxvd2luZyBmaWxlLCBidXQgcGxlYXNlIGNvbW1lbnQgaXQgb3V0IGluIHByb2R1Y3Rpb24gbW9kZVxuICogYmVjYXVzZSBpdCB3aWxsIGhhdmUgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gdGhyb3cgZXJyb3JcbiAqL1xuaW1wb3J0ICd6b25lLmpzL3BsdWdpbnMvem9uZS1lcnJvcic7XG5pbXBvcnQgeyBTdG9yYWdlRHJpdmVycyB9IGZyb20gJy4uL2FwcC9zaGFyZWQvc3RvcmFnZS9zdG9yYWdlLnV0aWxzJztcblxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50OiBFbnZpcm9ubWVudCA9IE9iamVjdC5mcmVlemUoe1xuICBuYW1lOiAnQHN1bWFyaXMtbmV0L25neC1jb21wb25lbnRzJywgLy8gb3ZlcnJpZGRlbiBieSBFTlZJUk9OTUVOVCB0b2tlblxuICB2ZXJzaW9uOiB1bmRlZmluZWQsIC8vIG92ZXJyaWRkZW4gYnkgRU5WSVJPTk1FTlQgdG9rZW5cblxuICAvLyBEbyBOT1Qgc2V0IHRvIGZhbHNlIC0gYmVjYXVzZSB0aGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBieSByZWxlYXNlc1xuICBwcm9kdWN0aW9uOiB0cnVlLFxuXG4gIC8vIERvIE5PVCBzZXQgLSBiZWNhdXNlIHRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIGJ5IHJlbGVhc2VzXG4gIC8vZXh0ZXJuYWxFbnZpcm9ubWVudFVybDogbnVsbCxcblxuICBiYXNlVXJsOiAnLycsXG4gIGRlZmF1bHRMb2NhbGU6ICdmcicsXG4gIGRlZmF1bHRMYXRMb25nRm9ybWF0OiAnRERNTScsXG4gIGFwb2xsb0ZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnLFxuXG4gIC8vIEZJWE1FOiBlbmFibGUgY2FjaGVcbiAgcGVyc2lzdENhY2hlOiBmYWxzZSxcblxuICAvLyBUT0RPOiBtYWtlIHRoaXMgd29ya3NcbiAgLy9vZmZsaW5lOiB0cnVlLFxuXG4gIHBlZXJNaW5WZXJzaW9uOiAnMS44LjAnLFxuICBkZWZhdWx0UGVlcjoge1xuICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgIHBvcnQ6IDgwODFcbiAgfSxcblxuICBkZWZhdWx0UGVlcnM6IFtcbiAgICB7XG4gICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDgwODEsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjQ1JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjI0JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjI5JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnc2loLnNmYS5zYycsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAndGVzdC5zdW1hcmlzLm5ldCcsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnb3Blbi5zdW1hcmlzLm5ldCcsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnc2VydmVyLmUtaXMucHJvJyxcbiAgICAgIHBvcnQ6IDQ0MyxcbiAgICB9LFxuICBdLFxuICBkZWZhdWx0QXBwTmFtZTogJ1NVTUFSaVMnLFxuICBkZWZhdWx0QW5kcm9pZEluc3RhbGxVcmw6ICdodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9bmV0LnN1bWFyaXMuYXBwJyxcblxuICAvLyBTdG9yYWdlXG4gIHN0b3JhZ2U6IHtcbiAgICBkcml2ZXJPcmRlcjogW1N0b3JhZ2VEcml2ZXJzLlNRTExpdGUsIFN0b3JhZ2VEcml2ZXJzLkluZGV4ZWREQiwgU3RvcmFnZURyaXZlcnMuV2ViU1FMLCBTdG9yYWdlRHJpdmVycy5Mb2NhbFN0b3JhZ2VdLFxuICB9LFxuXG4gIC8vIEFib3V0XG4gIHNvdXJjZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMnLFxuICByZXBvcnRJc3N1ZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9pc3N1ZXMnLFxuICBmb3J1bVVybDogJ2h0dHBzOi8vZm9ydW0uc3VtYXJpcy5uZXQnLFxuICBoZWxwVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1kb2MvLS9ibG9iL21hc3Rlci91c2VyLW1hbnVhbC9pbmRleF9mci5tZCcsXG5cbiAgLy8gRGV2ZWxvcG1lbnRcbiAgZGVmYXVsdEF1dGhWYWx1ZXM6IHtcbiAgICAvLyBCYXNpYyBhdXRoICh1c2luZyBQZXJzb24udXNlcm5hbWUpXG4gICAgLy8gdXNlcm5hbWU6ICdhZG1xMicsIHBhc3N3b3JkOiAncTIyMDA2J1xuICAgIC8vIFRva2VuIGF1dGggKHVzaW5nIFBlcnNvbi5wdWJrZXkpXG4gICAgLy91c2VybmFtZTogJ2FkbWluQHN1bWFyaXMubmV0JywgcGFzc3dvcmQ6ICdhZG1pbicsXG4gIH0sXG5cbiAgYWNjb3VudDoge1xuICAgIGVuYWJsZUxpc3RlbkNoYW5nZXM6IHRydWUsXG4gICAgbGlzdGVuSW50ZXJ2YWxJblNlY29uZHM6IDYwLFxuICB9LFxuXG4gIGVudGl0eUVkaXRvcjoge1xuICAgIGVuYWJsZUxpc3RlbkNoYW5nZXM6IHRydWUsXG4gICAgbGlzdGVuSW50ZXJ2YWxJblNlY29uZHM6IDYwLFxuICB9LFxufSk7XG5cbiJdfQ==