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

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 (184) 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 +1 -1
  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 +1 -1
  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/material.date.mjs +1 -1
  113. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +1 -1
  114. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +1 -1
  115. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +2 -2
  116. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +2 -2
  117. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +2 -2
  118. package/esm2022/src/app/shared/material/duration/duration.utils.mjs +1 -1
  119. package/esm2022/src/app/shared/material/duration/material.duration.mjs +1 -1
  120. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +2 -2
  121. package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +1 -1
  122. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +1 -1
  123. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +1 -1
  124. package/esm2022/src/app/shared/material/material.module.mjs +5 -5
  125. package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +1 -1
  126. package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +1 -1
  127. package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +1 -1
  128. package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +1 -1
  129. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +1 -1
  130. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +1 -1
  131. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +1 -1
  132. package/esm2022/src/app/shared/material/testing/common.test.mjs +2 -2
  133. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +1 -1
  134. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +1 -1
  135. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +1 -1
  136. package/esm2022/src/app/shared/observables.mjs +1 -1
  137. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +1 -1
  138. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +1 -1
  139. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +1 -1
  140. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +1 -1
  141. package/esm2022/src/app/shared/pipes/form.pipes.mjs +1 -1
  142. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +1 -1
  143. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +1 -1
  144. package/esm2022/src/app/shared/pipes/math.pipes.mjs +1 -1
  145. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +1 -1
  146. package/esm2022/src/app/shared/pipes/property.pipes.mjs +1 -1
  147. package/esm2022/src/app/shared/platforms.mjs +1 -1
  148. package/esm2022/src/app/shared/services/job.utils.mjs +1 -1
  149. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +3 -3
  150. package/esm2022/src/app/shared/services/progress-bar.service.mjs +1 -1
  151. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +1 -1
  152. package/esm2022/src/app/shared/services/startable-service.class.mjs +1 -1
  153. package/esm2022/src/app/shared/services/translate-context.service.mjs +1 -1
  154. package/esm2022/src/app/shared/services.mjs +2 -2
  155. package/esm2022/src/app/shared/shared-routing.module.mjs +1 -1
  156. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +1 -1
  157. package/esm2022/src/app/shared/storage/storage.service.mjs +1 -1
  158. package/esm2022/src/app/shared/testing/observable.test.mjs +1 -1
  159. package/esm2022/src/app/shared/toast/toast.testing.mjs +2 -2
  160. package/esm2022/src/app/shared/toast/toasts.mjs +1 -1
  161. package/esm2022/src/app/shared/toolbar/toolbar.mjs +1 -1
  162. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +1 -1
  163. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +1 -1
  164. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +1 -1
  165. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +1 -1
  166. package/esm2022/src/app/shared/validator/validators.mjs +3 -3
  167. package/esm2022/src/app/shared/version/versions.mjs +1 -1
  168. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +1 -1
  169. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +1 -1
  170. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +1 -1
  171. package/esm2022/src/app/social/message/message.form.mjs +1 -1
  172. package/esm2022/src/app/social/message/message.modal.mjs +1 -1
  173. package/esm2022/src/app/social/message/message.service.mjs +1 -1
  174. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +1 -1
  175. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +1 -1
  176. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +1 -1
  177. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +1 -1
  178. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +1 -1
  179. package/esm2022/src/app/social/user-event/user-event.service.mjs +1 -1
  180. package/esm2022/src/environments/environment.loader.mjs +1 -1
  181. package/esm2022/src/environments/environment.mjs +3 -3
  182. package/fesm2022/sumaris-net.ngx-components.mjs +45 -45
  183. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  184. package/package.json +6 -6
@@ -247,7 +247,7 @@ export class SettingsPage extends AppForm {
247
247
  }
248
248
  async showSelectPeerModal(opts) {
249
249
  const peer = await this.network.showSelectPeerModal({
250
- showSetManuallyButton: false,
250
+ showSetManuallyButton: false, // Make no sense here, because same as cancel (already inside the settings page)
251
251
  ...opts
252
252
  });
253
253
  if (peer?.url) {
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
325
325
  type: Inject,
326
326
  args: [APP_SETTINGS_MENU_ITEMS]
327
327
  }] }] });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXR0aW5ncy9zZXR0aW5ncy5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NldHRpbmdzL3NldHRpbmdzLnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUErQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQXlDLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFFLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWpFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBRzdGLE9BQU8sRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0IsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTTNDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFjLG1CQUFtQixDQUFDLENBQUM7QUFVNUYsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFzQjtJQThCMUM7SUFDQTtJQUNBO0lBQ0E7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Vzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjY291bnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHtFbnRpdHlVdGlsc30gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7QVBQX0xPQ0FMRVMsIExvY2FsZUNvbmZpZywgTG9jYWxTZXR0aW5ncywgVXNhZ2VNb2RlfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9zZXR0aW5ncy5tb2RlbCc7XG5pbXBvcnQge1BlZXJ9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL3BlZXIubW9kZWwnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBcHBGb3JtfSBmcm9tICcuLi9mb3JtL2Zvcm0uY2xhc3MnO1xuaW1wb3J0IHtBcHBGb3JtVXRpbHMsIEZvcm1BcnJheUhlbHBlcn0gZnJvbSAnLi4vZm9ybS9mb3JtLnV0aWxzJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1ZhbGlkYXRvclNlcnZpY2V9IGZyb20gJ0BlLWlzL25neC1tYXRlcmlhbC10YWJsZSc7XG5pbXBvcnQge0xvY2FsU2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy92YWxpZGF0b3IvbG9jYWwtc2V0dGluZ3MudmFsaWRhdG9yJztcbmltcG9ydCB7UGxhdGZvcm1TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7TmV0d29ya1NlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQge2lzTmlsLCBpc05pbE9yQmxhbmssIHRvQm9vbGVhbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0xvY2FsU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybUZpZWxkRGVmaW5pdGlvbiwgRm9ybUZpZWxkRGVmaW5pdGlvbk1hcH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FsZXJ0Q29udHJvbGxlciwgTmF2Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtBbGVydHN9IGZyb20gJy4uLy4uL3NoYXJlZC9hbGVydHMnO1xuaW1wb3J0IHtQcm9wZXJ0eX0gZnJvbSAnLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7Q2FuTGVhdmV9IGZyb20gJy4uLy4uL3NoYXJlZC9ndWFyZC9jb21wb25lbnQtZGlydHkuZ3VhcmQnO1xuaW1wb3J0IHtJU2VsZWN0UGVlck1vZGFsT3B0aW9uc30gZnJvbSAnLi4vcGVlci9zZWxlY3QtcGVlci5tb2RhbCc7XG5pbXBvcnQge0lNZW51SXRlbX0gZnJvbSAnLi4vbWVudS9tZW51Lm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IEFQUF9TRVRUSU5HU19NRU5VX0lURU1TID0gbmV3IEluamVjdGlvblRva2VuPElNZW51SXRlbVtdPignc2V0dGluZ3NNZW51SXRlbXMnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGFnZS1zZXR0aW5ncycsXG4gIHRlbXBsYXRlVXJsOiAnc2V0dGluZ3MucGFnZS5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge3Byb3ZpZGU6IFZhbGlkYXRvclNlcnZpY2UsIHVzZUV4aXN0aW5nOiBMb2NhbFNldHRpbmdzVmFsaWRhdG9yU2VydmljZX0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzUGFnZSBleHRlbmRzIEFwcEZvcm08TG9jYWxTZXR0aW5ncz4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ2FuTGVhdmUge1xuXG4gIHByaXZhdGUgZGF0YTogTG9jYWxTZXR0aW5ncztcblxuICBtb2JpbGU6IGJvb2xlYW47XG4gIHNhdmluZyA9IGZhbHNlO1xuICB1c2FnZU1vZGVzOiBVc2FnZU1vZGVbXSA9IFsnRklFTEQnLCAnREVTSyddO1xuICBtZW51SXRlbXM6IElNZW51SXRlbVtdO1xuXG4gIHByb3BlcnR5RGVmaW5pdGlvbnM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgcHJvcGVydHlEZWZpbml0aW9uc0J5S2V5OiBGb3JtRmllbGREZWZpbml0aW9uTWFwID0ge307XG4gIHByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4OiB7IFtpbmRleDogbnVtYmVyXTogRm9ybUZpZWxkRGVmaW5pdGlvbiB9ID0ge307XG4gIHByb3BlcnRpZXNGb3JtSGVscGVyOiBGb3JtQXJyYXlIZWxwZXI8UHJvcGVydHk+O1xuXG4gIGxhdExvbmdGb3JtYXRzID0gWydERE1NU1MnLCAnRERNTScsICdERCddO1xuXG4gIGdldCBhY2NvdW50SW5oZXJpdGFuY2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1snYWNjb3VudEluaGVyaXRhbmNlJ10udmFsdWU7XG4gIH1cblxuICBnZXQgaXNMb2dpbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCk7XG4gIH1cblxuICBnZXQgcHJvcGVydGllc0Zvcm0oKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3Byb3BlcnRpZXMnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB2YWxpZGF0b3JTZXJ2aWNlOiBMb2NhbFNldHRpbmdzVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgQEluamVjdChBUFBfTE9DQUxFUykgcHVibGljIGxvY2FsZXM6IExvY2FsZUNvbmZpZ1tdLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX1NFVFRJTkdTX01FTlVfSVRFTVMpIG1lbnVJdGVtcz86IElNZW51SXRlbVtdXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLCB2YWxpZGF0b3JTZXJ2aWNlLmdldEZvcm1Hcm91cCgpKTtcblxuICAgIHRoaXMucHJvcGVydGllc0Zvcm1IZWxwZXIgPSBuZXcgRm9ybUFycmF5SGVscGVyPFByb3BlcnR5PihcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb3BlcnRpZXMnKSBhcyBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgKHZhbHVlKSA9PiB0aGlzLnZhbGlkYXRvclNlcnZpY2UuZ2V0UHJvcGVydHlGb3JtR3JvdXAodmFsdWUpLFxuICAgICAgKHYxLCB2MikgPT4gKCF2MSAmJiAhdjIpIHx8ICh2MS5rZXkgPT09IHYyLmtleSksXG4gICAgICAodmFsdWUpID0+ICBpc05pbCh2YWx1ZSkgfHwgKGlzTmlsKHZhbHVlLmtleSkgJiYgaXNOaWwodmFsdWUudmFsdWUpKSxcbiAgICAgIHtcbiAgICAgICAgYWxsb3dFbXB0eUFycmF5OiB0cnVlXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMubWVudUl0ZW1zID0gbWVudUl0ZW1zIHx8IFtdO1xuICAgIHRoaXMubW9iaWxlID0gdGhpcy5wbGF0Zm9ybS5tb2JpbGU7XG5cbiAgICAvLyBCeSBkZWZhdWx0LCBkaXNhYmxlIHRoZSBmb3JtXG4gICAgdGhpcy5fZW5hYmxlID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHBsYXRmb3JtIGlzIHJlYWR5XG4gICAgYXdhaXQgdGhpcy5wbGF0Zm9ybS5yZWFkeSgpO1xuXG4gICAgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zID0gdGhpcy5zZXR0aW5ncy5vcHRpb25EZWZzLnNsaWNlKCk7IC8vIGNvcHkgb3B0aW9uc1xuICAgIHRoaXMucHJvcGVydHlEZWZpbml0aW9ucy5mb3JFYWNoKG8gPT4gdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zQnlLZXlbby5rZXldID0gbyk7IC8vIGZpbGwgbWFwXG5cbiAgICAvLyBMb2FkIHNldHRpbmdzXG4gICAgYXdhaXQgdGhpcy5sb2FkKCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgbWVyZ2UoXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpbixcbiAgICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ291dFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldEFjY291bnRJbmhlcml0YW5jZSh0aGlzLmFjY291bnRJbmhlcml0YW5jZSkpKTtcbiAgfVxuXG4gIGdldFByb3BlcnR5RGVmaW5pdGlvbihpbmRleDogbnVtYmVyKTogRm9ybUZpZWxkRGVmaW5pdGlvbiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4W2luZGV4XTtcbiAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgIGRlZmluaXRpb24gPSB0aGlzLnVwZGF0ZVByb3BlcnR5RGVmaW5pdGlvbihpbmRleCk7XG4gICAgICB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4W2luZGV4XSA9IGRlZmluaXRpb247XG4gICAgfVxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgdXBkYXRlUHJvcGVydHlEZWZpbml0aW9uKGluZGV4OiBudW1iZXIpOiBGb3JtRmllbGREZWZpbml0aW9uIHtcbiAgICBjb25zdCBrZXkgPSAodGhpcy5wcm9wZXJ0aWVzRm9ybS5hdChpbmRleCkgYXMgVW50eXBlZEZvcm1Hcm91cCkuY29udHJvbHMua2V5LnZhbHVlO1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBrZXkgJiYgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zQnlLZXlba2V5XSB8fCBudWxsO1xuICAgIHRoaXMucHJvcGVydHlEZWZpbml0aW9uc0J5SW5kZXhbaW5kZXhdID0gZGVmaW5pdGlvbjsgLy8gdXBkYXRlIG1hcCBieSBpbmRleFxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICByZW1vdmVQcm9wZXJ0eUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtSGVscGVyLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4ID0ge307IC8vIGNsZWFyIGNhY2hlIGJ5IGluZGV4XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcbiAgICBjb25zb2xlLmRlYnVnKCdbc2V0dGluZ3NdIExvYWRpbmcgc2V0dGluZ3MuLi4nKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNldHRpbmdzLnNldHRpbmdzO1xuXG4gICAgLy8gU2V0IGRlZmF1bHRzXG4gICAgZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UgPSB0b0Jvb2xlYW4oZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UsIHRydWUpO1xuICAgIGRhdGEubG9jYWxlID0gZGF0YS5sb2NhbGUgfHwgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgfHwgdGhpcy50cmFuc2xhdGUuZGVmYXVsdExhbmc7XG4gICAgZGF0YS5sYXRMb25nRm9ybWF0ID0gZGF0YS5sYXRMb25nRm9ybWF0IHx8ICdERE1NU1MnO1xuICAgIGRhdGEudXNhZ2VNb2RlID0gZGF0YS51c2FnZU1vZGUgfHwgJ0RFU0snO1xuXG4gICAgLy8gU2V0IHBlZXJcbiAgICBpZiAoaXNOaWxPckJsYW5rKGRhdGEucGVlclVybCkpIHtcbiAgICAgIGF3YWl0IHRoaXMubmV0d29yay5yZWFkeSgpO1xuICAgICAgY29uc3QgcGVlciA9IHRoaXMubmV0d29yay5wZWVyO1xuICAgICAgZGF0YS5wZWVyVXJsID0gcGVlciAmJiBwZWVyLnVybDtcbiAgICB9XG5cbiAgICAvLyBSZW1lbWJlciBkYXRhXG4gICAgdGhpcy51cGRhdGVWaWV3KGRhdGEpO1xuICB9XG5cbiAgdXBkYXRlVmlldyhkYXRhOiBMb2NhbFNldHRpbmdzKSB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm47IC8vc2tpcFxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG5cbiAgICBjb25zdCBqc29uOiBhbnkgPSB7Li4uZGF0YX07XG5cbiAgICAvLyBUcmFuc2Zvcm0gcHJvcGVydGllcyBtYXAgaW50byBhcnJheVxuICAgIGpzb24ucHJvcGVydGllcyA9IEVudGl0eVV0aWxzLmdldE1hcEFzQXJyYXkoZGF0YS5wcm9wZXJ0aWVzIHx8IHt9KTtcbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtSGVscGVyLnJlc2l6ZShqc29uLnByb3BlcnRpZXMubGVuZ3RoKTtcblxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKGpzb24sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuXG4gICAgdGhpcy5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgIC8vIEFwcGx5IGluaGVyaXRhbmNlXG4gICAgdGhpcy5zZXRBY2NvdW50SW5oZXJpdGFuY2UoZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBhc3luYyBzYXZlKGV2ZW50PzogRXZlbnQsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgaWYgKGV2ZW50KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gUmVtb3ZlIGFsbCBlbXB0eSBjb250cm9sc1xuICAgIHRoaXMucHJvcGVydGllc0Zvcm1IZWxwZXIucmVtb3ZlQWxsRW1wdHkoKTtcblxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICBhd2FpdCBBcHBGb3JtVXRpbHMud2FpdFdoaWxlUGVuZGluZyh0aGlzLmZvcm0pO1xuXG4gICAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgICAgQXBwRm9ybVV0aWxzLmxvZ0Zvcm1FcnJvcnModGhpcy5mb3JtKTtcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnNvbGUuZGVidWcoJ1tzZXR0aW5nc10gU2F2aW5nIGxvY2FsIHNldHRpbmdzLi4uJyk7XG5cbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZ2V0VmFsdWUoKTtcblxuICAgIC8vIENoZWNrIHBlZXIgYWxpdmUsIGJlZm9yZSBzYXZpbmdcbiAgICBjb25zdCBwZWVyQ2hhbmdlZCA9IHRoaXMuZm9ybS5nZXQoJ3BlZXJVcmwnKS5kaXJ0eTtcblxuICAgIC8vIENsZWFuIHBhZ2UgaGlzdG9yeSwgd2hlbiBwZWVyIGNoYW5nZWRcbiAgICBpZiAocGVlckNoYW5nZWQpIGRhdGEucGFnZUhpc3RvcnkgPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5hcHBseShkYXRhKTtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG5cbiAgICAgIC8vIElmIHBlZXIgY2hhbmdlZFxuICAgICAgaWYgKHBlZXJDaGFuZ2VkKSB7XG4gICAgICAgIC8vIFJlc3RhcnQgdGhlIG5ldHdvcmtcbiAgICAgICAgdGhpcy5uZXR3b3JrLnBlZXIgPSBQZWVyLnBhcnNlVXJsKGRhdGEucGVlclVybCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgdGhpcy5lcnJvciA9IGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnI7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZW5hYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICAgIC8vIEFwcGx5IGluaGVyaXRhbmNlXG4gICAgICB0aGlzLnNldEFjY291bnRJbmhlcml0YW5jZShkYXRhLmFjY291bnRJbmhlcml0YW5jZSwge2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgICAgLy8gQWRkIGEgZGVsYXksIGJlY2F1c2Ugb2Ygb3B0aW9uIG1lbnUgdGhhdCBpcyBhbHdheXMgb3BlbmVkIGFmdGVyIHNhdmUhIVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LCA0MDApO1xuICAgIH1cbiAgfVxuXG5cbiAgc2V0QWNjb3VudEluaGVyaXRhbmNlKGVuYWJsZTogYm9vbGVhbiwgb3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRvIHVwZGF0ZSB0aGUgdmFsdWUgaW4gY29udHJvbFxuICAgIHRoaXMuZm9ybS5jb250cm9sc1snYWNjb3VudEluaGVyaXRhbmNlJ10uc2V0VmFsdWUoZW5hYmxlLCBvcHRzKTtcbiAgICBpZiAodGhpcy5kYXRhLmFjY291bnRJbmhlcml0YW5jZSAhPT0gZW5hYmxlKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2FjY291bnRJbmhlcml0YW5jZSddLm1hcmtBc0RpcnR5KHtvbmx5U2VsZjogZmFsc2V9KTtcbiAgICB9XG5cbiAgICBpZiAoZW5hYmxlKSB7XG4gICAgICBpZiAodGhpcy5pc0xvZ2luKSB7XG4gICAgICAgIC8vIEZvcmNlIHVzaW5nIGFjY291bnQgc2V0dGluZ3NcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IHRoaXMuYWNjb3VudFNlcnZpY2UuYWNjb3VudDtcblxuICAgICAgICAvLyBDb3B5IHZhbHVlc1xuICAgICAgICBpZiAoYWNjb3VudC5zZXR0aW5ncykge1xuICAgICAgICAgIGlmIChhY2NvdW50LnNldHRpbmdzLmxvY2FsZSkgdGhpcy5mb3JtLmdldCgnbG9jYWxlJykuc2V0VmFsdWUoYWNjb3VudC5zZXR0aW5ncy5sb2NhbGUsIG9wdHMpO1xuICAgICAgICAgIGlmIChhY2NvdW50LnNldHRpbmdzLmxhdExvbmdGb3JtYXQpIHRoaXMuZm9ybS5nZXQoJ2xhdExvbmdGb3JtYXQnKS5zZXRWYWx1ZShhY2NvdW50LnNldHRpbmdzLmxhdExvbmdGb3JtYXQsIG9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERpc2FibGUgZmllbGRzXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2FsZScpLmRpc2FibGUob3B0cyk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xhdExvbmdGb3JtYXQnKS5kaXNhYmxlKG9wdHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRW5hYmxlIGZpZWxkc1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhbGUnKS5lbmFibGUob3B0cyk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xhdExvbmdGb3JtYXQnKS5lbmFibGUob3B0cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc3RvcmUgcHJldmlvdXMgdmFsdWVzXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhbGUnKS5zZXRWYWx1ZSh0aGlzLmRhdGEubG9jYWxlLCBvcHRzKTtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2xhdExvbmdGb3JtYXQnKS5zZXRWYWx1ZSh0aGlzLmRhdGEubGF0TG9uZ0Zvcm1hdCwgb3B0cyk7XG5cbiAgICAgIC8vIEVuYWJsZSBmaWVsZHNcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2FsZScpLmVuYWJsZShvcHRzKTtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2xhdExvbmdGb3JtYXQnKS5lbmFibGUob3B0cyk7XG4gICAgfVxuXG4gICAgLy8gTWFyayBmb3IgY2hlY2ssIGlmIG5lZWRcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQpIHtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2hvd1NlbGVjdFBlZXJNb2RhbChvcHRzPzogUGFydGlhbDxJU2VsZWN0UGVlck1vZGFsT3B0aW9ucz4pIHtcbiAgICBjb25zdCBwZWVyID0gYXdhaXQgdGhpcy5uZXR3b3JrLnNob3dTZWxlY3RQZWVyTW9kYWwoe1xuICAgICAgc2hvd1NldE1hbnVhbGx5QnV0dG9uOiBmYWxzZSwgLy8gTWFrZSBubyBzZW5zZSBoZXJlLCBiZWNhdXNlIHNhbWUgYXMgY2FuY2VsIChhbHJlYWR5IGluc2lkZSB0aGUgc2V0dGluZ3MgcGFnZSlcbiAgICAgIC4uLm9wdHN9KTtcbiAgICBpZiAocGVlcj8udXJsKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldCgncGVlclVybCcpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUocGVlci51cmwsIHtlbWl0RXZlbnQ6IHRydWUsIG9ubHlTZWxmOiBmYWxzZX0pO1xuICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSh7b25seVNlbGY6IGZhbHNlfSk7XG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2FuY2VsKGV2ZW50PzogRXZlbnQpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKF8/OiBFdmVudCkge1xuICAgIGlmICh0aGlzLnNhdmluZykgcmV0dXJuO1xuXG4gICAgLy8gQmFjayB0byBob21lXG4gICAgcmV0dXJuIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoJy8nKTsgLy8gYmFjayB0byBob21lXG4gIH1cblxuICBhc3luYyBjbGVhckNhY2hlKGV2ZW50PzogRXZlbnQpIHtcbiAgICBjb25zdCBjb25maXJtID0gYXdhaXQgQWxlcnRzLmFza0FjdGlvbkNvbmZpcm1hdGlvbih0aGlzLmFsZXJ0Q3RybCwgdGhpcy50cmFuc2xhdGUsIHRydWUsIGV2ZW50KTtcbiAgICBpZiAoY29uZmlybSkge1xuICAgICAgYXdhaXQgdGhpcy5uZXR3b3JrLmNsZWFyQ2FjaGUoKTtcbiAgICAgIHRoaXMuc2V0dGluZ3MucmVtb3ZlT2ZmbGluZUZlYXR1cmVzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZUFjdGlvbihldmVudDogRXZlbnQsIGl0ZW06IElNZW51SXRlbSkge1xuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuICAgIGlmIChldmVudD8uZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuO1xuXG4gICAgaWYgKGl0ZW0ucGF0aCkge1xuICAgICAgYXdhaXQgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlRm9yd2FyZChpdGVtLnBhdGgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tzZXR0aW5nc10gVW5rbm93biBpdGVtIHR5cGUgKG5vIHBhdGgpJywgaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRWYWx1ZSgpOiBQcm9taXNlPExvY2FsU2V0dGluZ3M+IHtcbiAgICBjb25zdCBqc29uID0gYXdhaXQgdGhpcy5nZXRKc29uVmFsdWVUb1NhdmUoKTtcblxuICAgIC8vIE92ZXJyaWRlIHByb3BlcnRpZXMgZnJvbSBhY2NvdW50XG4gICAgaWYgKGpzb24uYWNjb3VudEluaGVyaXRhbmNlICYmIHRoaXMuaXNMb2dpbikge1xuICAgICAgY29uc3QgYWNjb3VudCA9IHRoaXMuYWNjb3VudFNlcnZpY2UuYWNjb3VudDtcbiAgICAgIGNvbnN0IHVzZXJTZXR0aW5ncyA9IGFjY291bnQgJiYgYWNjb3VudC5zZXR0aW5ncztcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtzZXR0aW5nc10gQXBwbHlpbmcgYWNjb3VudCBpbmhlcml0YW5jZSB7bG9jYWxlOiAnJHt1c2VyU2V0dGluZ3MubG9jYWxlfScsIGxhdExvbmdGb3JtYXQ6ICcke3VzZXJTZXR0aW5ncy5sYXRMb25nRm9ybWF0fSd9Li4uYCk7XG4gICAgICBqc29uLmxvY2FsZSA9IHVzZXJTZXR0aW5ncy5sb2NhbGUgfHwganNvbi5sb2NhbGU7XG4gICAgICBqc29uLmxhdExvbmdGb3JtYXQgPSB1c2VyU2V0dGluZ3MubGF0TG9uZ0Zvcm1hdCB8fCBqc29uLmxhdExvbmdGb3JtYXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SnNvblZhbHVlVG9TYXZlKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QganNvbiA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICBqc29uLnByb3BlcnRpZXMgPSBFbnRpdHlVdGlscy5nZXRQcm9wZXJ0eUFycmF5QXNPYmplY3QoanNvbi5wcm9wZXJ0aWVzKTtcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoanNvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuXG59XG4iLCI8YXBwLXRvb2xiYXIgW3RpdGxlXT1cIidTRVRUSU5HUy5USVRMRSd8dHJhbnNsYXRlXCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICBbaGFzVmFsaWRhdGVdPVwiZGlydHkgJiYgIXNhdmluZ1wiXG4gICAgICAgICAgICAgW2hhc0Nsb3NlXT1cIiFkaXJ0eSAmJiAhc2F2aW5nXCJcbiAgICAgICAgICAgICAob25WYWxpZGF0ZSk9XCJzYXZlKCRldmVudClcIlxuICAgICAgICAgICAgIChvbkNsb3NlKT1cImNsb3NlKCRldmVudClcIj5cblxuICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgIDwhLS0gb3B0aW9ucyBtZW51IC0tPlxuICAgIDxpb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJvcHRpb25zTWVudVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhc2F2aW5nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2F2aW5nXCI+XG4gICAgICA8bWF0LWljb24gc2xvdD1cImljb24tb25seVwiPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgPC9pb24tYnV0dG9uPlxuICA8L2lvbi1idXR0b25zPlxuPC9hcHAtdG9vbGJhcj5cblxuPCEtLSBPcHRpb25zIG1lbnUgLS0+XG48bWF0LW1lbnUgI29wdGlvbnNNZW51PVwibWF0TWVudVwiPlxuICA8IS0tIENsZWFyIGNhY2hlIC0tPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNsZWFyQ2FjaGUoJGV2ZW50KVwiPlxuICAgIDxtYXQtaWNvbj48aW9uLWljb24gbmFtZT1cInRyYXNoLW91dGxpbmVcIj48L2lvbi1pY29uPjwvbWF0LWljb24+XG4gICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+U0VUVElOR1MuQlROX0NMRUFSX0NBQ0hFPC9pb24tbGFiZWw+XG4gIDwvYnV0dG9uPlxuXG4gIDwhLS0gUmVzZXQgLS0+XG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbVxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZGlydHlcIlxuICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoJGV2ZW50KVwiPlxuICAgIDxtYXQtaWNvbj48aW9uLWljb24gbmFtZT1cInJlZnJlc2hcIj48L2lvbi1pY29uPjwvbWF0LWljb24+XG4gICAgPG1hdC1sYWJlbCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9SRVNFVDwvbWF0LWxhYmVsPlxuICA8L2J1dHRvbj5cblxuICA8IS0tIGFkZGl0aW9uYWwgaXRlbXMgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbWVudUl0ZW1zXCI+XG4gICAgICA8YSAqbmdJZj1cIml0ZW0ucGF0aFwiXG4gICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICBjbGFzcz1cInt7aXRlbS5jc3NDbGFzc319IHt7aXRlbS5jb2xvcn19XCJcbiAgICAgICAgIChjbGljayk9XCJleGVjdXRlQWN0aW9uKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCI+PGlvbi1pY29uIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+PC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5tYXRJY29uXCI+e3tpdGVtLm1hdEljb259fTwvbWF0LWljb24+XG4gICAgICAgIDxtYXQtbGFiZWwgdHJhbnNsYXRlPnt7aXRlbS50aXRsZX19PC9tYXQtbGFiZWw+XG4gICAgICA8L2E+XG4gICAgICA8IS0tIGRpdmlkZXIgLS0+XG4gICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCIhaXRlbS5wYXRoICYmICFpdGVtLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2l0ZW0uY3NzQ2xhc3N9fSB7e2l0ZW0uY29sb3J9fVwiPlxuICAgICAgICA8bWF0LWxhYmVsIHRyYW5zbGF0ZT57e2l0ZW0udGl0bGV9fTwvbWF0LWxhYmVsPlxuICAgICAgPC9tYXQtZGl2aWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L21hdC1tZW51PlxuXG48aW9uLWNvbnRlbnQ+XG5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgbm92YWxpZGF0ZSAobmdTdWJtaXQpPVwic2F2ZSgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxuXG4gICAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cblxuICAgICAgICA8IS0tIGxlZnQgIG1hcmdpbiAtLT5cbiAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjBcIiBzaXplLWxnPVwiMlwiPiZuYnNwO1xuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuXG4gICAgICAgICAgPCEtLSBlcnJvciAtLT5cbiAgICAgICAgICA8aW9uLWl0ZW0gKm5nSWY9XCJlcnJvclwiIGxpbmVzPVwibm9uZVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cInN0YXJ0XCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJlcnJvclwiIFtpbm5lckhUTUxdPVwiZXJyb3J8dHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24taXRlbT5cblxuICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiJ1NFVFRJTkdTLkRFU0NSSVBUSU9OJ3x0cmFuc2xhdGVcIj48L3A+XG5cbiAgICAgICAgICA8IS0tIGFjY291bnQgaW5oZXJpdGFuY2UgKGRlc2t0b3ApIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbaGlkZGVuXT1cIiFpc0xvZ2luXCIgKm5nSWY9XCIhbW9iaWxlOyBlbHNlIGFjY291bnRJbmhlcml0YW5jZU1vYmlsZVwiPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGhpZGRlbiBmb3JtQ29udHJvbE5hbWU9XCJhY2NvdW50SW5oZXJpdGFuY2VcIiB0eXBlPVwidGV4dFwiPlxuXG4gICAgICAgICAgICA8IS0tIGNoZWNrIGJveCAoaWYgZGVza3RvcCkgLS0+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICpuZ0lmPVwiIW1vYmlsZTsgZWxzZSBhY2NvdW50SW5oZXJpdGFuY2VNb2JpbGVcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldEFjY291bnRJbmhlcml0YW5jZSgkZXZlbnQuY2hlY2tlZClcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhY2NvdW50SW5oZXJpdGFuY2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNFVFRJTkdTLklOSEVSSVRfRlJPTV9BQ0NPVU5UPC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmFjY291bnRJbmhlcml0YW5jZS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDwhLS0gYWNjb3VudCBpbmhlcml0YW5jZSAoaWYgbW9iaWxlKSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2FjY291bnRJbmhlcml0YW5jZU1vYmlsZT5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbaGlkZGVuXT1cIiFpc0xvZ2luXCI+XG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4gZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudEluaGVyaXRhbmNlXCIgdHlwZT1cInRleHRcIj5cblxuICAgICAgICAgICAgICA8IS0tIHNsaWRlIHRvZ2dsZSAgLS0+XG4gICAgICAgICAgICAgIDxpb24tdGV4dCB0cmFuc2xhdGU+U0VUVElOR1MuSU5IRVJJVF9GUk9NX0FDQ09VTlQ8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRBY2NvdW50SW5oZXJpdGFuY2UoJGV2ZW50LmNoZWNrZWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWNjb3VudEluaGVyaXRhbmNlXCI+XG5cbiAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5hY2NvdW50SW5oZXJpdGFuY2UuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8IS0tIGxvY2FsZSAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J1NFVFRJTkdTLkxPQ0FMRSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImxvY2FsZVwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb2NhbGVzXCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+XG4gICAgICAgICAgICAgICAge3tpdGVtLnZhbHVlfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMubG9jYWxlLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDwhLS0gTmV0d29yayBlbnRyeSAtLT5cbiAgICAgICAgICA8aDM+XG4gICAgICAgICAgICA8aW9uLXRleHQgdHJhbnNsYXRlPlNFVFRJTkdTLk5FVFdPUktfRElWSURFUjwvaW9uLXRleHQ+XG4gICAgICAgICAgPC9oMz5cblxuICAgICAgICAgIDwhLS0gUGVlciBhZGRyZXNzIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snU0VUVElOR1MuUEVFUl9VUkwnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBlZXJVcmxcIlxuICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0U3VmZml4IChjbGljayk9XCJzaG93U2VsZWN0UGVlck1vZGFsKClcIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fQ0hBTkdFX1BFRVInfHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5wZWVyVXJsLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLnBlZXJVcmwuaGFzRXJyb3IoJ3BlZXJBbGl2ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPlNFVFRJTkdTLkVSUk9SLlBFRVJfTk9UX1JFQUNIQUJMRVxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5wZWVyVXJsLmhhc0Vycm9yKCdwZWVyTm90Q29tcGF0aWJsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPlNFVFRJTkdTLkVSUk9SLlBFRVJfTk9UX0NPTVBBVElCTEVcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIE9mZmxpbmUgbW9kZSAoaWYgbW9iaWxlKSAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJtb2JpbGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4gZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudEluaGVyaXRhbmNlXCIgdHlwZT1cInRleHRcIj5cblxuICAgICAgICAgICAgPCEtLSBzbGlkZSB0b2dnbGUgIC0tPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5PRkZMSU5FX01PREU8L2lvbi10ZXh0PlxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm5ldHdvcmsuc2V0Rm9yY2VPZmZsaW5lKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJuZXR3b3JrLm9mZmxpbmVcIj5cblxuICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIERhdGEgZW50cnkgLS0+XG4gICAgICAgICAgPGgzPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5EQVRBX0VOVFJZX0RJVklERVI8L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaDM+XG5cbiAgICAgICAgICA8IS0tIFVzYWdlIG1vZGUgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eydTRVRUSU5HUy5VU0FHRV9NT0RFJ3x0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidXNhZ2VNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB1c2FnZU1vZGVzXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICB7eydTRVRUSU5HUy5VU0FHRV9NT0RFUy4nK2l0ZW18dHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMudXNhZ2VNb2RlLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBsYXQvbG9uZyBmb3JtYXQtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J1NFVFRJTkdTLkxBVF9MT05HX0ZPUk1BVCd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImxhdExvbmdGb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxhdExvbmdGb3JtYXRzXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICB7eydDT01NT04uTEFUX0xPTkcuJytpdGVtKydfUExBQ0VIT0xERVInfHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmxhdExvbmdGb3JtYXQuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIGZpZWxkcyBvcHRpb25zIC0tPlxuICAgICAgICAgIDxpb24tZ3JpZCBmb3JtQXJyYXlOYW1lPVwicHJvcGVydGllc1wiIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbm8tcGFkZGluZyBpb24tYWxpZ24tc2VsZi1lbmRcIiBzaXplPVwiMTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2xiYXItc3BhY2VyXCI+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBTaG93IG1vcmUgb3B0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCIgKm5nSWY9XCJwcm9wZXJ0aWVzRm9ybT8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NFVFRJTkdTLkJUTl9TSE9XX01PUkVfSEVMUCd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvcGVydGllc0Zvcm1IZWxwZXIuYWRkKClcIj5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fU0hPV19NT1JFPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gc2xvdD1cImVuZFwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICA8L2lvbi1yb3c+XG5cbiAgICAgICAgICAgIDwhLS0gRmllbGRzIG9wdGlvbnMgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wZXJ0eUZvcm0gb2YgcHJvcGVydGllc0Zvcm0/LmNvbnRyb2xzOyBsZXQgaT1pbmRleFwiPlxuICAgICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBwcm9wZXJ0eSBrZXkgLS0+XG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdTRVRUSU5HUy5QUk9QRVJUWV9LRVknfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByb3BlcnR5RGVmaW5pdGlvbnNcIiBbdmFsdWVdPVwiaXRlbS5rZXlcIj57eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgICAgICAgIDwhLS0gcHJvcGVydHkgdmFsdWUgLS0+XG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiIHBhZGRpbmctbGVmdD5cbiAgICAgICAgICAgICAgICAgIDxhcHAtZm9ybS1maWVsZCAqbmdJZj1cImdldFByb3BlcnR5RGVmaW5pdGlvbihpKTsgbGV0IGRlZmluaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0TGFiZWw9XCJuZXZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmluaXRpb25dPVwiZGVmaW5pdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb3BlcnR5Rm9ybXxmb3JtR2V0Q29udHJvbDondmFsdWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFVFRJTkdTLlBST1BFUlRZX1ZBTFVFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDwvYXBwLWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIyXCIgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwibGlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQ09NTU9OLkJUTl9ERUxFVEUnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVQcm9wZXJ0eUF0KGkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwcm9wZXJ0aWVzRm9ybUhlbHBlci5pc0xhc3QoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwibGlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NFVFRJTkdTLkJUTl9BRERfUFJPUEVSVFknfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcm9wZXJ0aWVzRm9ybUhlbHBlci5hZGQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgIDwhLS0gcmlnaHQgbWFyZ2luIC0tPlxuICAgICAgICA8aW9uLWNvbCBzaXplPVwiMFwiIHNpemUtbGc9XCIyXCI+Jm5ic3A7XG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDwvaW9uLXJvdz5cbiAgICA8L2lvbi1ncmlkPlxuXG5cbiAgPC9mb3JtPlxuPC9pb24tY29udGVudD5cblxuPGlvbi1mb290ZXIgaGlkZGVuLXhzIGhpZGRlbi1zbSBoaWRkZW4tbW9iaWxlPlxuICA8YXBwLWZvcm0tYnV0dG9ucy1iYXIgKG9uQ2FuY2VsKT1cImNhbmNlbCgpXCIgKG9uU2F2ZSk9XCJzYXZlKCRldmVudClcIiBbZGlzYWJsZWRdPVwiIWZvcm0uZGlydHkgfHwgc2F2aW5nXCI+PC9hcHAtZm9ybS1idXR0b25zLWJhcj5cbjwvaW9uLWZvb3Rlcj5cbiJdfQ==
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXR0aW5ncy9zZXR0aW5ncy5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NldHRpbmdzL3NldHRpbmdzLnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUErQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQXlDLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFFLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWpFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBRzdGLE9BQU8sRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0IsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTTNDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFjLG1CQUFtQixDQUFDLENBQUM7QUFVNUYsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFzQjtJQThCMUM7SUFDQTtJQUNBO0lBQ0E7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QUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFDO1NBQ3hFLGlEQy9CSCwwaFdBNFFBOzsyRkQxT2EsWUFBWTtrQkFSeEIsU0FBUzsrQkFDRSxlQUFlLGFBRWQ7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFDO3FCQUN4RSxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBMEM1QyxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7RW50aXR5VXRpbHN9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0FQUF9MT0NBTEVTLCBMb2NhbGVDb25maWcsIExvY2FsU2V0dGluZ3MsIFVzYWdlTW9kZX0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHtQZWVyfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9wZWVyLm1vZGVsJztcbmltcG9ydCB7VW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QXBwRm9ybX0gZnJvbSAnLi4vZm9ybS9mb3JtLmNsYXNzJztcbmltcG9ydCB7QXBwRm9ybVV0aWxzLCBGb3JtQXJyYXlIZWxwZXJ9IGZyb20gJy4uL2Zvcm0vZm9ybS51dGlscyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHtMb2NhbFNldHRpbmdzVmFsaWRhdG9yU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvdmFsaWRhdG9yL2xvY2FsLXNldHRpbmdzLnZhbGlkYXRvcic7XG5pbXBvcnQge1BsYXRmb3JtU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtpc05pbCwgaXNOaWxPckJsYW5rLCB0b0Jvb2xlYW59IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtMb2NhbFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0Zvcm1GaWVsZERlZmluaXRpb24sIEZvcm1GaWVsZERlZmluaXRpb25NYXB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7QWxlcnRzfSBmcm9tICcuLi8uLi9zaGFyZWQvYWxlcnRzJztcbmltcG9ydCB7UHJvcGVydHl9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge0NhbkxlYXZlfSBmcm9tICcuLi8uLi9zaGFyZWQvZ3VhcmQvY29tcG9uZW50LWRpcnR5Lmd1YXJkJztcbmltcG9ydCB7SVNlbGVjdFBlZXJNb2RhbE9wdGlvbnN9IGZyb20gJy4uL3BlZXIvc2VsZWN0LXBlZXIubW9kYWwnO1xuaW1wb3J0IHtJTWVudUl0ZW19IGZyb20gJy4uL21lbnUvbWVudS5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBBUFBfU0VUVElOR1NfTUVOVV9JVEVNUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTWVudUl0ZW1bXT4oJ3NldHRpbmdzTWVudUl0ZW1zJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BhZ2Utc2V0dGluZ3MnLFxuICB0ZW1wbGF0ZVVybDogJ3NldHRpbmdzLnBhZ2UuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtwcm92aWRlOiBWYWxpZGF0b3JTZXJ2aWNlLCB1c2VFeGlzdGluZzogTG9jYWxTZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2V9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc1BhZ2UgZXh0ZW5kcyBBcHBGb3JtPExvY2FsU2V0dGluZ3M+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENhbkxlYXZlIHtcblxuICBwcml2YXRlIGRhdGE6IExvY2FsU2V0dGluZ3M7XG5cbiAgbW9iaWxlOiBib29sZWFuO1xuICBzYXZpbmcgPSBmYWxzZTtcbiAgdXNhZ2VNb2RlczogVXNhZ2VNb2RlW10gPSBbJ0ZJRUxEJywgJ0RFU0snXTtcbiAgbWVudUl0ZW1zOiBJTWVudUl0ZW1bXTtcblxuICBwcm9wZXJ0eURlZmluaXRpb25zOiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIHByb3BlcnR5RGVmaW5pdGlvbnNCeUtleTogRm9ybUZpZWxkRGVmaW5pdGlvbk1hcCA9IHt9O1xuICBwcm9wZXJ0eURlZmluaXRpb25zQnlJbmRleDogeyBbaW5kZXg6IG51bWJlcl06IEZvcm1GaWVsZERlZmluaXRpb24gfSA9IHt9O1xuICBwcm9wZXJ0aWVzRm9ybUhlbHBlcjogRm9ybUFycmF5SGVscGVyPFByb3BlcnR5PjtcblxuICBsYXRMb25nRm9ybWF0cyA9IFsnRERNTVNTJywgJ0RETU0nLCAnREQnXTtcblxuICBnZXQgYWNjb3VudEluaGVyaXRhbmNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2FjY291bnRJbmhlcml0YW5jZSddLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTG9naW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudFNlcnZpY2UuaXNMb2dpbigpO1xuICB9XG5cbiAgZ2V0IHByb3BlcnRpZXNGb3JtKCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdwcm9wZXJ0aWVzJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdG9yU2VydmljZTogTG9jYWxTZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIEBJbmplY3QoQVBQX0xPQ0FMRVMpIHB1YmxpYyBsb2NhbGVzOiBMb2NhbGVDb25maWdbXSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9TRVRUSU5HU19NRU5VX0lURU1TKSBtZW51SXRlbXM/OiBJTWVudUl0ZW1bXVxuICApIHtcbiAgICBzdXBlcihpbmplY3RvciwgdmFsaWRhdG9yU2VydmljZS5nZXRGb3JtR3JvdXAoKSk7XG5cbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtSGVscGVyID0gbmV3IEZvcm1BcnJheUhlbHBlcjxQcm9wZXJ0eT4oXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9wZXJ0aWVzJykgYXMgVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICh2YWx1ZSkgPT4gdGhpcy52YWxpZGF0b3JTZXJ2aWNlLmdldFByb3BlcnR5Rm9ybUdyb3VwKHZhbHVlKSxcbiAgICAgICh2MSwgdjIpID0+ICghdjEgJiYgIXYyKSB8fCAodjEua2V5ID09PSB2Mi5rZXkpLFxuICAgICAgKHZhbHVlKSA9PiAgaXNOaWwodmFsdWUpIHx8IChpc05pbCh2YWx1ZS5rZXkpICYmIGlzTmlsKHZhbHVlLnZhbHVlKSksXG4gICAgICB7XG4gICAgICAgIGFsbG93RW1wdHlBcnJheTogdHJ1ZVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLm1lbnVJdGVtcyA9IG1lbnVJdGVtcyB8fCBbXTtcbiAgICB0aGlzLm1vYmlsZSA9IHRoaXMucGxhdGZvcm0ubW9iaWxlO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgZGlzYWJsZSB0aGUgZm9ybVxuICAgIHRoaXMuX2VuYWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIE1ha2Ugc3VyZSBwbGF0Zm9ybSBpcyByZWFkeVxuICAgIGF3YWl0IHRoaXMucGxhdGZvcm0ucmVhZHkoKTtcblxuICAgIHRoaXMucHJvcGVydHlEZWZpbml0aW9ucyA9IHRoaXMuc2V0dGluZ3Mub3B0aW9uRGVmcy5zbGljZSgpOyAvLyBjb3B5IG9wdGlvbnNcbiAgICB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnMuZm9yRWFjaChvID0+IHRoaXMucHJvcGVydHlEZWZpbml0aW9uc0J5S2V5W28ua2V5XSA9IG8pOyAvLyBmaWxsIG1hcFxuXG4gICAgLy8gTG9hZCBzZXR0aW5nc1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIG1lcmdlKFxuICAgICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4sXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dvdXRcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZXRBY2NvdW50SW5oZXJpdGFuY2UodGhpcy5hY2NvdW50SW5oZXJpdGFuY2UpKSk7XG4gIH1cblxuICBnZXRQcm9wZXJ0eURlZmluaXRpb24oaW5kZXg6IG51bWJlcik6IEZvcm1GaWVsZERlZmluaXRpb24ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zQnlJbmRleFtpbmRleF07XG4gICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICBkZWZpbml0aW9uID0gdGhpcy51cGRhdGVQcm9wZXJ0eURlZmluaXRpb24oaW5kZXgpO1xuICAgICAgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zQnlJbmRleFtpbmRleF0gPSBkZWZpbml0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHVwZGF0ZVByb3BlcnR5RGVmaW5pdGlvbihpbmRleDogbnVtYmVyKTogRm9ybUZpZWxkRGVmaW5pdGlvbiB7XG4gICAgY29uc3Qga2V5ID0gKHRoaXMucHJvcGVydGllc0Zvcm0uYXQoaW5kZXgpIGFzIFVudHlwZWRGb3JtR3JvdXApLmNvbnRyb2xzLmtleS52YWx1ZTtcbiAgICBjb25zdCBkZWZpbml0aW9uID0ga2V5ICYmIHRoaXMucHJvcGVydHlEZWZpbml0aW9uc0J5S2V5W2tleV0gfHwgbnVsbDtcbiAgICB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4W2luZGV4XSA9IGRlZmluaXRpb247IC8vIHVwZGF0ZSBtYXAgYnkgaW5kZXhcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgcmVtb3ZlUHJvcGVydHlBdChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybUhlbHBlci5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zQnlJbmRleCA9IHt9OyAvLyBjbGVhciBjYWNoZSBieSBpbmRleFxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBhc3luYyBsb2FkKCkge1xuXG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW3NldHRpbmdzXSBMb2FkaW5nIHNldHRpbmdzLi4uJyk7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5zZXR0aW5ncy5zZXR0aW5ncztcblxuICAgIC8vIFNldCBkZWZhdWx0c1xuICAgIGRhdGEuYWNjb3VudEluaGVyaXRhbmNlID0gdG9Cb29sZWFuKGRhdGEuYWNjb3VudEluaGVyaXRhbmNlLCB0cnVlKTtcbiAgICBkYXRhLmxvY2FsZSA9IGRhdGEubG9jYWxlIHx8IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nIHx8IHRoaXMudHJhbnNsYXRlLmRlZmF1bHRMYW5nO1xuICAgIGRhdGEubGF0TG9uZ0Zvcm1hdCA9IGRhdGEubGF0TG9uZ0Zvcm1hdCB8fCAnRERNTVNTJztcbiAgICBkYXRhLnVzYWdlTW9kZSA9IGRhdGEudXNhZ2VNb2RlIHx8ICdERVNLJztcblxuICAgIC8vIFNldCBwZWVyXG4gICAgaWYgKGlzTmlsT3JCbGFuayhkYXRhLnBlZXJVcmwpKSB7XG4gICAgICBhd2FpdCB0aGlzLm5ldHdvcmsucmVhZHkoKTtcbiAgICAgIGNvbnN0IHBlZXIgPSB0aGlzLm5ldHdvcmsucGVlcjtcbiAgICAgIGRhdGEucGVlclVybCA9IHBlZXIgJiYgcGVlci51cmw7XG4gICAgfVxuXG4gICAgLy8gUmVtZW1iZXIgZGF0YVxuICAgIHRoaXMudXBkYXRlVmlldyhkYXRhKTtcbiAgfVxuXG4gIHVwZGF0ZVZpZXcoZGF0YTogTG9jYWxTZXR0aW5ncykge1xuICAgIGlmICghZGF0YSkgcmV0dXJuOyAvL3NraXBcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuXG4gICAgY29uc3QganNvbjogYW55ID0gey4uLmRhdGF9O1xuXG4gICAgLy8gVHJhbnNmb3JtIHByb3BlcnRpZXMgbWFwIGludG8gYXJyYXlcbiAgICBqc29uLnByb3BlcnRpZXMgPSBFbnRpdHlVdGlscy5nZXRNYXBBc0FycmF5KGRhdGEucHJvcGVydGllcyB8fCB7fSk7XG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybUhlbHBlci5yZXNpemUoanNvbi5wcm9wZXJ0aWVzLmxlbmd0aCk7XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShqc29uLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcblxuICAgIHRoaXMuZW5hYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICAvLyBBcHBseSBpbmhlcml0YW5jZVxuICAgIHRoaXMuc2V0QWNjb3VudEluaGVyaXRhbmNlKGRhdGEuYWNjb3VudEluaGVyaXRhbmNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZShldmVudD86IEV2ZW50LCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuc2F2aW5nKSByZXR1cm47IC8vIFNraXBcblxuICAgIGlmIChldmVudCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIFJlbW92ZSBhbGwgZW1wdHkgY29udHJvbHNcbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtSGVscGVyLnJlbW92ZUFsbEVtcHR5KCk7XG5cbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgYXdhaXQgQXBwRm9ybVV0aWxzLndhaXRXaGlsZVBlbmRpbmcodGhpcy5mb3JtKTtcblxuICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICAgIEFwcEZvcm1VdGlscy5sb2dGb3JtRXJyb3JzKHRoaXMuZm9ybSk7XG4gICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmRlYnVnKCdbc2V0dGluZ3NdIFNhdmluZyBsb2NhbCBzZXR0aW5ncy4uLicpO1xuXG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xuICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmdldFZhbHVlKCk7XG5cbiAgICAvLyBDaGVjayBwZWVyIGFsaXZlLCBiZWZvcmUgc2F2aW5nXG4gICAgY29uc3QgcGVlckNoYW5nZWQgPSB0aGlzLmZvcm0uZ2V0KCdwZWVyVXJsJykuZGlydHk7XG5cbiAgICAvLyBDbGVhbiBwYWdlIGhpc3RvcnksIHdoZW4gcGVlciBjaGFuZ2VkXG4gICAgaWYgKHBlZXJDaGFuZ2VkKSBkYXRhLnBhZ2VIaXN0b3J5ID0gW107XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3MuYXBwbHkoZGF0YSk7XG4gICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuXG4gICAgICAvLyBJZiBwZWVyIGNoYW5nZWRcbiAgICAgIGlmIChwZWVyQ2hhbmdlZCkge1xuICAgICAgICAvLyBSZXN0YXJ0IHRoZSBuZXR3b3JrXG4gICAgICAgIHRoaXMubmV0d29yay5wZWVyID0gUGVlci5wYXJzZVVybChkYXRhLnBlZXJVcmwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIHRoaXMuZXJyb3IgPSBlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICAvLyBBcHBseSBpbmhlcml0YW5jZVxuICAgICAgdGhpcy5zZXRBY2NvdW50SW5oZXJpdGFuY2UoZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICAgIC8vIEFkZCBhIGRlbGF5LCBiZWNhdXNlIG9mIG9wdGlvbiBtZW51IHRoYXQgaXMgYWx3YXlzIG9wZW5lZCBhZnRlciBzYXZlISFcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSwgNDAwKTtcbiAgICB9XG4gIH1cblxuXG4gIHNldEFjY291bnRJbmhlcml0YW5jZShlbmFibGU6IGJvb2xlYW4sIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIC8vIE1ha2Ugc3VyZSB0byB1cGRhdGUgdGhlIHZhbHVlIGluIGNvbnRyb2xcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2FjY291bnRJbmhlcml0YW5jZSddLnNldFZhbHVlKGVuYWJsZSwgb3B0cyk7XG4gICAgaWYgKHRoaXMuZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UgIT09IGVuYWJsZSkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWydhY2NvdW50SW5oZXJpdGFuY2UnXS5tYXJrQXNEaXJ0eSh7b25seVNlbGY6IGZhbHNlfSk7XG4gICAgfVxuXG4gICAgaWYgKGVuYWJsZSkge1xuICAgICAgaWYgKHRoaXMuaXNMb2dpbikge1xuICAgICAgICAvLyBGb3JjZSB1c2luZyBhY2NvdW50IHNldHRpbmdzXG4gICAgICAgIGNvbnN0IGFjY291bnQgPSB0aGlzLmFjY291bnRTZXJ2aWNlLmFjY291bnQ7XG5cbiAgICAgICAgLy8gQ29weSB2YWx1ZXNcbiAgICAgICAgaWYgKGFjY291bnQuc2V0dGluZ3MpIHtcbiAgICAgICAgICBpZiAoYWNjb3VudC5zZXR0aW5ncy5sb2NhbGUpIHRoaXMuZm9ybS5nZXQoJ2xvY2FsZScpLnNldFZhbHVlKGFjY291bnQuc2V0dGluZ3MubG9jYWxlLCBvcHRzKTtcbiAgICAgICAgICBpZiAoYWNjb3VudC5zZXR0aW5ncy5sYXRMb25nRm9ybWF0KSB0aGlzLmZvcm0uZ2V0KCdsYXRMb25nRm9ybWF0Jykuc2V0VmFsdWUoYWNjb3VudC5zZXR0aW5ncy5sYXRMb25nRm9ybWF0LCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEaXNhYmxlIGZpZWxkc1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhbGUnKS5kaXNhYmxlKG9wdHMpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsYXRMb25nRm9ybWF0JykuZGlzYWJsZShvcHRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEVuYWJsZSBmaWVsZHNcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbG9jYWxlJykuZW5hYmxlKG9wdHMpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdsYXRMb25nRm9ybWF0JykuZW5hYmxlKG9wdHMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXN0b3JlIHByZXZpb3VzIHZhbHVlc1xuICAgICAgdGhpcy5mb3JtLmdldCgnbG9jYWxlJykuc2V0VmFsdWUodGhpcy5kYXRhLmxvY2FsZSwgb3B0cyk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KCdsYXRMb25nRm9ybWF0Jykuc2V0VmFsdWUodGhpcy5kYXRhLmxhdExvbmdGb3JtYXQsIG9wdHMpO1xuXG4gICAgICAvLyBFbmFibGUgZmllbGRzXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdsb2NhbGUnKS5lbmFibGUob3B0cyk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KCdsYXRMb25nRm9ybWF0JykuZW5hYmxlKG9wdHMpO1xuICAgIH1cblxuICAgIC8vIE1hcmsgZm9yIGNoZWNrLCBpZiBuZWVkXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50KSB7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNob3dTZWxlY3RQZWVyTW9kYWwob3B0cz86IFBhcnRpYWw8SVNlbGVjdFBlZXJNb2RhbE9wdGlvbnM+KSB7XG4gICAgY29uc3QgcGVlciA9IGF3YWl0IHRoaXMubmV0d29yay5zaG93U2VsZWN0UGVlck1vZGFsKHtcbiAgICAgIHNob3dTZXRNYW51YWxseUJ1dHRvbjogZmFsc2UsIC8vIE1ha2Ugbm8gc2Vuc2UgaGVyZSwgYmVjYXVzZSBzYW1lIGFzIGNhbmNlbCAoYWxyZWFkeSBpbnNpZGUgdGhlIHNldHRpbmdzIHBhZ2UpXG4gICAgICAuLi5vcHRzfSk7XG4gICAgaWYgKHBlZXI/LnVybCkge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoJ3BlZXJVcmwnKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgICBjb250cm9sLnNldFZhbHVlKHBlZXIudXJsLCB7ZW1pdEV2ZW50OiB0cnVlLCBvbmx5U2VsZjogZmFsc2V9KTtcbiAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoe29ubHlTZWxmOiBmYWxzZX0pO1xuICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNhbmNlbChldmVudD86IEV2ZW50KSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkKCk7XG4gIH1cblxuICBhc3luYyBjbG9zZShfPzogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybjtcblxuICAgIC8vIEJhY2sgdG8gaG9tZVxuICAgIHJldHVybiB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KCcvJyk7IC8vIGJhY2sgdG8gaG9tZVxuICB9XG5cbiAgYXN5bmMgY2xlYXJDYWNoZShldmVudD86IEV2ZW50KSB7XG4gICAgY29uc3QgY29uZmlybSA9IGF3YWl0IEFsZXJ0cy5hc2tBY3Rpb25Db25maXJtYXRpb24odGhpcy5hbGVydEN0cmwsIHRoaXMudHJhbnNsYXRlLCB0cnVlLCBldmVudCk7XG4gICAgaWYgKGNvbmZpcm0pIHtcbiAgICAgIGF3YWl0IHRoaXMubmV0d29yay5jbGVhckNhY2hlKCk7XG4gICAgICB0aGlzLnNldHRpbmdzLnJlbW92ZU9mZmxpbmVGZWF0dXJlcygpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGVBY3Rpb24oZXZlbnQ6IEV2ZW50LCBpdGVtOiBJTWVudUl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBpZiAoZXZlbnQ/LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcblxuICAgIGlmIChpdGVtLnBhdGgpIHtcbiAgICAgIGF3YWl0IHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUZvcndhcmQoaXRlbS5wYXRoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbc2V0dGluZ3NdIFVua25vd24gaXRlbSB0eXBlIChubyBwYXRoKScsIGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBmdW5jdGlvbnMgLS0gKi9cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0VmFsdWUoKTogUHJvbWlzZTxMb2NhbFNldHRpbmdzPiB7XG4gICAgY29uc3QganNvbiA9IGF3YWl0IHRoaXMuZ2V0SnNvblZhbHVlVG9TYXZlKCk7XG5cbiAgICAvLyBPdmVycmlkZSBwcm9wZXJ0aWVzIGZyb20gYWNjb3VudFxuICAgIGlmIChqc29uLmFjY291bnRJbmhlcml0YW5jZSAmJiB0aGlzLmlzTG9naW4pIHtcbiAgICAgIGNvbnN0IGFjY291bnQgPSB0aGlzLmFjY291bnRTZXJ2aWNlLmFjY291bnQ7XG4gICAgICBjb25zdCB1c2VyU2V0dGluZ3MgPSBhY2NvdW50ICYmIGFjY291bnQuc2V0dGluZ3M7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbc2V0dGluZ3NdIEFwcGx5aW5nIGFjY291bnQgaW5oZXJpdGFuY2Uge2xvY2FsZTogJyR7dXNlclNldHRpbmdzLmxvY2FsZX0nLCBsYXRMb25nRm9ybWF0OiAnJHt1c2VyU2V0dGluZ3MubGF0TG9uZ0Zvcm1hdH0nfS4uLmApO1xuICAgICAganNvbi5sb2NhbGUgPSB1c2VyU2V0dGluZ3MubG9jYWxlIHx8IGpzb24ubG9jYWxlO1xuICAgICAganNvbi5sYXRMb25nRm9ybWF0ID0gdXNlclNldHRpbmdzLmxhdExvbmdGb3JtYXQgfHwganNvbi5sYXRMb25nRm9ybWF0O1xuICAgIH1cblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEpzb25WYWx1ZVRvU2F2ZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAganNvbi5wcm9wZXJ0aWVzID0gRW50aXR5VXRpbHMuZ2V0UHJvcGVydHlBcnJheUFzT2JqZWN0KGpzb24ucHJvcGVydGllcyk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGpzb24pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cblxufVxuIiwiPGFwcC10b29sYmFyIFt0aXRsZV09XCInU0VUVElOR1MuVElUTEUnfHRyYW5zbGF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgW2hhc1ZhbGlkYXRlXT1cImRpcnR5ICYmICFzYXZpbmdcIlxuICAgICAgICAgICAgIFtoYXNDbG9zZV09XCIhZGlydHkgJiYgIXNhdmluZ1wiXG4gICAgICAgICAgICAgKG9uVmFsaWRhdGUpPVwic2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAob25DbG9zZSk9XCJjbG9zZSgkZXZlbnQpXCI+XG5cbiAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICA8IS0tIG9wdGlvbnMgbWVudSAtLT5cbiAgICA8aW9uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3B0aW9uc01lbnVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNhdmluZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNhdmluZ1wiPlxuICAgICAgPG1hdC1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgPC9pb24tYnV0dG9ucz5cbjwvYXBwLXRvb2xiYXI+XG5cbjwhLS0gT3B0aW9ucyBtZW51IC0tPlxuPG1hdC1tZW51ICNvcHRpb25zTWVudT1cIm1hdE1lbnVcIj5cbiAgPCEtLSBDbGVhciBjYWNoZSAtLT5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjbGVhckNhY2hlKCRldmVudClcIj5cbiAgICA8bWF0LWljb24+PGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCI+PC9pb24taWNvbj48L21hdC1pY29uPlxuICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPlNFVFRJTkdTLkJUTl9DTEVBUl9DQUNIRTwvaW9uLWxhYmVsPlxuICA8L2J1dHRvbj5cblxuICA8IS0tIFJlc2V0IC0tPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRpcnR5XCJcbiAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKCRldmVudClcIj5cbiAgICA8bWF0LWljb24+PGlvbi1pY29uIG5hbWU9XCJyZWZyZXNoXCI+PC9pb24taWNvbj48L21hdC1pY29uPlxuICAgIDxtYXQtbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fUkVTRVQ8L21hdC1sYWJlbD5cbiAgPC9idXR0b24+XG5cbiAgPCEtLSBhZGRpdGlvbmFsIGl0ZW1zIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1lbnVJdGVtc1wiPlxuICAgICAgPGEgKm5nSWY9XCJpdGVtLnBhdGhcIlxuICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgY2xhc3M9XCJ7e2l0ZW0uY3NzQ2xhc3N9fSB7e2l0ZW0uY29sb3J9fVwiXG4gICAgICAgICAoY2xpY2spPVwiZXhlY3V0ZUFjdGlvbigkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0uaWNvblwiPjxpb24taWNvbiBbbmFtZV09XCJpdGVtLmljb25cIj48L2lvbi1pY29uPjwvbWF0LWljb24+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0ubWF0SWNvblwiPnt7aXRlbS5tYXRJY29ufX08L21hdC1pY29uPlxuICAgICAgICA8bWF0LWxhYmVsIHRyYW5zbGF0ZT57e2l0ZW0udGl0bGV9fTwvbWF0LWxhYmVsPlxuICAgICAgPC9hPlxuICAgICAgPCEtLSBkaXZpZGVyIC0tPlxuICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiIWl0ZW0ucGF0aCAmJiAhaXRlbS5hY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tpdGVtLmNzc0NsYXNzfX0ge3tpdGVtLmNvbG9yfX1cIj5cbiAgICAgICAgPG1hdC1sYWJlbCB0cmFuc2xhdGU+e3tpdGVtLnRpdGxlfX08L21hdC1sYWJlbD5cbiAgICAgIDwvbWF0LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9tYXQtbWVudT5cblxuPGlvbi1jb250ZW50PlxuXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIG5vdmFsaWRhdGUgKG5nU3VibWl0KT1cInNhdmUoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIj5cblxuICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG5cbiAgICAgICAgPCEtLSBsZWZ0ICBtYXJnaW4gLS0+XG4gICAgICAgIDxpb24tY29sIHNpemU9XCIwXCIgc2l6ZS1sZz1cIjJcIj4mbmJzcDtcbiAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cblxuICAgICAgICAgIDwhLS0gZXJyb3IgLS0+XG4gICAgICAgICAgPGlvbi1pdGVtICpuZ0lmPVwiZXJyb3JcIiBsaW5lcz1cIm5vbmVcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIVE1MXT1cImVycm9yfHRyYW5zbGF0ZVwiPjwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG5cbiAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cIidTRVRUSU5HUy5ERVNDUklQVElPTid8dHJhbnNsYXRlXCI+PC9wPlxuXG4gICAgICAgICAgPCEtLSBhY2NvdW50IGluaGVyaXRhbmNlIChkZXNrdG9wKSAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2hpZGRlbl09XCIhaXNMb2dpblwiICpuZ0lmPVwiIW1vYmlsZTsgZWxzZSBhY2NvdW50SW5oZXJpdGFuY2VNb2JpbGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4gZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudEluaGVyaXRhbmNlXCIgdHlwZT1cInRleHRcIj5cblxuICAgICAgICAgICAgPCEtLSBjaGVjayBib3ggKGlmIGRlc2t0b3ApIC0tPlxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAqbmdJZj1cIiFtb2JpbGU7IGVsc2UgYWNjb3VudEluaGVyaXRhbmNlTW9iaWxlXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRBY2NvdW50SW5oZXJpdGFuY2UoJGV2ZW50LmNoZWNrZWQpXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWNjb3VudEluaGVyaXRhbmNlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5TRVRUSU5HUy5JTkhFUklUX0ZST01fQUNDT1VOVDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuXG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5hY2NvdW50SW5oZXJpdGFuY2UuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIGFjY291bnQgaW5oZXJpdGFuY2UgKGlmIG1vYmlsZSkgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNhY2NvdW50SW5oZXJpdGFuY2VNb2JpbGU+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2hpZGRlbl09XCIhaXNMb2dpblwiPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIGZvcm1Db250cm9sTmFtZT1cImFjY291bnRJbmhlcml0YW5jZVwiIHR5cGU9XCJ0ZXh0XCI+XG5cbiAgICAgICAgICAgICAgPCEtLSBzbGlkZSB0b2dnbGUgIC0tPlxuICAgICAgICAgICAgICA8aW9uLXRleHQgdHJhbnNsYXRlPlNFVFRJTkdTLklOSEVSSVRfRlJPTV9BQ0NPVU5UPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0QWNjb3VudEluaGVyaXRhbmNlKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFjY291bnRJbmhlcml0YW5jZVwiPlxuXG4gICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuYWNjb3VudEluaGVyaXRhbmNlLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBsb2NhbGUgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eydTRVRUSU5HUy5MT0NBTEUnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJsb2NhbGVcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9jYWxlc1wiIFt2YWx1ZV09XCJpdGVtLmtleVwiPlxuICAgICAgICAgICAgICAgIHt7aXRlbS52YWx1ZX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmxvY2FsZS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIE5ldHdvcmsgZW50cnkgLS0+XG4gICAgICAgICAgPGgzPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5ORVRXT1JLX0RJVklERVI8L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaDM+XG5cbiAgICAgICAgICA8IS0tIFBlZXIgYWRkcmVzcyAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J1NFVFRJTkdTLlBFRVJfVVJMJ3x0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwZWVyVXJsXCJcbiAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cblxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdFN1ZmZpeCAoY2xpY2spPVwic2hvd1NlbGVjdFBlZXJNb2RhbCgpXCIgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU0VUVElOR1MuQlROX0NIQU5HRV9QRUVSJ3x0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMucGVlclVybC5oYXNFcnJvcigncmVxdWlyZWQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5wZWVyVXJsLmhhc0Vycm9yKCdwZWVyQWxpdmUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5TRVRUSU5HUy5FUlJPUi5QRUVSX05PVF9SRUFDSEFCTEVcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMucGVlclVybC5oYXNFcnJvcigncGVlck5vdENvbXBhdGlibGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5TRVRUSU5HUy5FUlJPUi5QRUVSX05PVF9DT01QQVRJQkxFXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBPZmZsaW5lIG1vZGUgKGlmIG1vYmlsZSkgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibW9iaWxlXCI+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIGZvcm1Db250cm9sTmFtZT1cImFjY291bnRJbmhlcml0YW5jZVwiIHR5cGU9XCJ0ZXh0XCI+XG5cbiAgICAgICAgICAgIDwhLS0gc2xpZGUgdG9nZ2xlICAtLT5cbiAgICAgICAgICAgIDxpb24tdGV4dCB0cmFuc2xhdGU+U0VUVElOR1MuT0ZGTElORV9NT0RFPC9pb24tdGV4dD5cbiAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJuZXR3b3JrLnNldEZvcmNlT2ZmbGluZSgkZXZlbnQuY2hlY2tlZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibmV0d29yay5vZmZsaW5lXCI+XG5cbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBEYXRhIGVudHJ5IC0tPlxuICAgICAgICAgIDxoMz5cbiAgICAgICAgICAgIDxpb24tdGV4dCB0cmFuc2xhdGU+U0VUVElOR1MuREFUQV9FTlRSWV9ESVZJREVSPC9pb24tdGV4dD5cbiAgICAgICAgICA8L2gzPlxuXG4gICAgICAgICAgPCEtLSBVc2FnZSBtb2RlIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snU0VUVElOR1MuVVNBR0VfTU9ERSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInVzYWdlTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgdXNhZ2VNb2Rlc1wiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAge3snU0VUVElOR1MuVVNBR0VfTU9ERVMuJytpdGVtfHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLnVzYWdlTW9kZS5oYXNFcnJvcigncmVxdWlyZWQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDwhLS0gbGF0L2xvbmcgZm9ybWF0LS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eydTRVRUSU5HUy5MQVRfTE9OR19GT1JNQVQnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJsYXRMb25nRm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXRMb25nRm9ybWF0c1wiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAge3snQ09NTU9OLkxBVF9MT05HLicraXRlbSsnX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yXG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5jb250cm9scy5sYXRMb25nRm9ybWF0Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBmaWVsZHMgb3B0aW9ucyAtLT5cbiAgICAgICAgICA8aW9uLWdyaWQgZm9ybUFycmF5TmFtZT1cInByb3BlcnRpZXNcIiBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmcgaW9uLWFsaWduLXNlbGYtZW5kXCIgc2l6ZT1cIjEyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sYmFyLXNwYWNlclwiPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDwhLS0gU2hvdyBtb3JlIG9wdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gY29sb3I9XCJsaWdodFwiICpuZ0lmPVwicHJvcGVydGllc0Zvcm0/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fU0hPV19NT1JFX0hFTFAnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByb3BlcnRpZXNGb3JtSGVscGVyLmFkZCgpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX1NIT1dfTU9SRTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJlbmRcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPC9pb24tcm93PlxuXG4gICAgICAgICAgICA8IS0tIEZpZWxkcyBvcHRpb25zIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcGVydHlGb3JtIG9mIHByb3BlcnRpZXNGb3JtPy5jb250cm9sczsgbGV0IGk9aW5kZXhcIj5cbiAgICAgICAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cblxuICAgICAgICAgICAgICAgIDwhLS0gcHJvcGVydHkga2V5IC0tPlxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnU0VUVElOR1MuUFJPUEVSVFlfS0VZJ3x0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJrZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9wZXJ0eURlZmluaXRpb25zXCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgICAgICA8IS0tIHByb3BlcnR5IHZhbHVlIC0tPlxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBwYWRkaW5nLWxlZnQ+XG4gICAgICAgICAgICAgICAgICA8YXBwLWZvcm0tZmllbGQgKm5nSWY9XCJnZXRQcm9wZXJ0eURlZmluaXRpb24oaSk7IGxldCBkZWZpbml0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdExhYmVsPVwibmV2ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZpbml0aW9uXT1cImRlZmluaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwcm9wZXJ0eUZvcm18Zm9ybUdldENvbnRyb2w6J3ZhbHVlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRVRUSU5HUy5QUk9QRVJUWV9WQUxVRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8L2FwcC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMlwiIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fREVMRVRFJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUHJvcGVydHlBdChpKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicHJvcGVydGllc0Zvcm1IZWxwZXIuaXNMYXN0KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fQUREX1BST1BFUlRZJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvcGVydGllc0Zvcm1IZWxwZXIuYWRkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8IS0tIHJpZ2h0IG1hcmdpbiAtLT5cbiAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjBcIiBzaXplLWxnPVwiMlwiPiZuYnNwO1xuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tZ3JpZD5cblxuXG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGFwcC1mb3JtLWJ1dHRvbnMtYmFyIChvbkNhbmNlbCk9XCJjYW5jZWwoKVwiIChvblNhdmUpPVwic2F2ZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIiFmb3JtLmRpcnR5IHx8IHNhdmluZ1wiPjwvYXBwLWZvcm0tYnV0dG9ucy1iYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
@@ -112,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
112
112
  }], forward: [{
113
113
  type: Output
114
114
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL2FjdGlvbnMtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9hY3Rpb25zLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBVyxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7O0FBTXRELE1BQU0sT0FBTyxzQkFBc0I7SUF3QmI7SUFDQTtJQXZCSyxTQUFTLENBQWU7SUFDdEIsY0FBYyxDQUFpQjtJQUVqRCxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLFNBQVMsQ0FBVTtJQUNuQixVQUFVLENBQVU7SUFDcEIsU0FBUyxDQUFVO0lBQ25CLFdBQVcsQ0FBVTtJQUNyQixVQUFVLENBQVU7SUFDcEIsZ0JBQWdCLENBQVU7SUFDMUIsU0FBUyxDQUFpQjtJQUMxQixZQUFZLEdBQUcsb0JBQW9CLENBQUM7SUFDN0IsU0FBUyxDQUFTO0lBQ3pCLFlBQVksQ0FBbUI7SUFFOUIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFDekMsbUJBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7SUFDbkYsc0JBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7SUFDdEYsa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7SUFDbEYsUUFBUSxH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QUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7dUJBQUMsT0FBTztnQkFDTCxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGFibGVFbGVtZW50fSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHtpc05pbCwgdG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7TWF0Q29sdW1uRGVmLCBNYXRUYWJsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHtNYXRNZW51VHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hY3Rpb25zLWNvbHVtbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb25zLWNvbHVtbi5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbnNDb2x1bW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZChNYXRDb2x1bW5EZWYpIGNvbHVtbkRlZjogTWF0Q29sdW1uRGVmO1xuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKSBtYXRNZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XG5cbiAgQElucHV0KCkgc3RpY2t5RW5kID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkNhbmNlbDogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuQ29uZmlybTogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuRGVsZXRlOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5CYWNrd2FyZDogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuRm9yd2FyZDogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuQ29uZmlybUFuZEFkZDogYm9vbGVhbjtcbiAgQElucHV0KCkgZGlydHlJY29uOiBib29sZWFufHN0cmluZztcbiAgQElucHV0KCkgb3B0aW9uc1RpdGxlID0gJ0NPTU1PTi5CVE5fT1BUSU9OUyc7XG4gIEBJbnB1dCgnY2xhc3MnKSBjbGFzc0xpc3Q6IHN0cmluZztcbiAgQElucHV0KCkgY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBPdXRwdXQoKSBvcHRpb25zQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsT3JEZWxldGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBldmVudDogRXZlbnQ7IHJvdzogVGFibGVFbGVtZW50PGFueT4gfT4oKTtcbiAgQE91dHB1dCgpIGNvbmZpcm1FZGl0Q3JlYXRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IEV2ZW50OyByb3c6IFRhYmxlRWxlbWVudDxhbnk+IH0+KCk7XG4gIEBPdXRwdXQoKSBjb25maXJtQW5kQWRkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IEV2ZW50OyByb3c6IFRhYmxlRWxlbWVudDxhbnk+IH0+KCk7XG4gIEBPdXRwdXQoKSBiYWNrd2FyZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBldmVudDogRXZlbnQ7IHJvdzogVGFibGVFbGVtZW50PGFueT4gfT4oKTtcbiAgQE91dHB1dCgpIGZvcndhcmQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IEV2ZW50OyByb3c6IFRhYmxlRWxlbWVudDxhbnk+IH0+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWJsZTogTWF0VGFibGU8YW55PixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIC8vIFRPRE8gYXV0byBjb25maWd1cmUgdXNpbmcgQXBwVGFibGUgPyAobmVlZCBhIGZvcndhcmRSZWYoKSBpbiB0aGUgdGFibGUgY29tcG9uZW50XG4gICAgICAgICAgICAgIC8vQE9wdGlvbmFsKCkgcHJpdmF0ZSBhcHBUYWJsZTogQXBwVGFibGU8YW55PlxuICApIHtcbiAgICBpZiAoIXRhYmxlKSB0aHJvdyBuZXcgRXJyb3IoYFthY3Rpb25zLWNvbHVtbl0gdGhpcyBjb2x1bW4gY29tcG9uZW50IG11c3QgYmUgaW5zaWRlIGEgTWF0VGFibGUgY29tcG9uZW50YCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnRhYmxlLmFkZENvbHVtbkRlZih0aGlzLmNvbHVtbkRlZik7XG4gICAgdGhpcy5jYW5DYW5jZWwgPSB0b0Jvb2xlYW4odGhpcy5jYW5DYW5jZWwsIHRoaXMuY2FuY2VsT3JEZWxldGVDbGljay5vYnNlcnZlcnMubGVuZ3RoID4gMCk7XG4gICAgdGhpcy5jYW5Db25maXJtID0gdG9Cb29sZWFuKHRoaXMuY2FuQ29uZmlybSwgdGhpcy5jb25maXJtRWRpdENyZWF0ZUNsaWNrLm9ic2VydmVycy5sZW5ndGggPiAwKTtcbiAgICB0aGlzLmNhbkRlbGV0ZSA9IHRvQm9vbGVhbih0aGlzLmNhbkRlbGV0ZSwgdGhpcy5jYW5jZWxPckRlbGV0ZUNsaWNrLm9ic2VydmVycy5sZW5ndGggPiAwKTtcbiAgICB0aGlzLmNhbkNvbmZpcm1BbmRBZGQgPSB0b0Jvb2xlYW4odGhpcy5jYW5Db25maXJtQW5kQWRkLCB0aGlzLmNvbmZpcm1BbmRBZGRDbGljay5vYnNlcnZlcnMubGVuZ3RoID4gMCk7XG4gICAgdGhpcy5jYW5CYWNrd2FyZCA9IHRvQm9vbGVhbih0aGlzLmNhbkJhY2t3YXJkLCB0aGlzLmJhY2t3YXJkLm9ic2VydmVycy5sZW5ndGggPiAwKTtcbiAgICB0aGlzLmNhbkZvcndhcmQgPSB0b0Jvb2xlYW4odGhpcy5jYW5Gb3J3YXJkLCB0aGlzLmZvcndhcmQub2JzZXJ2ZXJzLmxlbmd0aCA+IDApO1xuICAgIGlmIChpc05pbCh0aGlzLmRpcnR5SWNvbikpIHtcbiAgICAgIHRoaXMuZGlydHlJY29uID0gJ3N0YXInO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudGFibGUucmVtb3ZlQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtcbiAgICB0aGlzLm9wdGlvbnNDbGljay5jb21wbGV0ZSgpO1xuICAgIHRoaXMub3B0aW9uc0NsaWNrLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jYW5jZWxPckRlbGV0ZUNsaWNrLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jYW5jZWxPckRlbGV0ZUNsaWNrLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jb25maXJtQW5kQWRkQ2xpY2suY29tcGxldGUoKTtcbiAgICB0aGlzLmNvbmZpcm1BbmRBZGRDbGljay51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYmFja3dhcmQuY29tcGxldGUoKTtcbiAgICB0aGlzLmJhY2t3YXJkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5mb3J3YXJkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5mb3J3YXJkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiIFtzdGlja3lFbmRdPVwic3RpY2t5RW5kXCI+XG4gIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzXT1cImNsYXNzTGlzdFwiIFtjbGFzcy5tYXQtY29sdW1uLXN0aWNreV09XCJzdGlja3lFbmRcIj5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25zQ2xpY2sub2JzZXJ2ZXJzIHwgaXNOb3RFbXB0eUFycmF5XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJvcHRpb25zVGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnNDbGljay5lbWl0KCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRIZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICA8L3RoPlxuICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuZWRpdGluZzsgZWxzZSB2aWV3XCI+XG5cbiAgICAgIDwhLS0gcGVuZGluZyAtLT5cbiAgICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cInJvdy52YWxpZGF0b3I/LnBlbmRpbmdcIiBuYW1lPVwiZG90c1wiIGNsYXNzPVwiY2VudGVyXCI+PC9pb24tc3Bpbm5lcj5cblxuICAgICAgPCEtLSBDb25maXJtIGJ1dHRvbiAtLT5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwibGlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkNvbmZpcm0gJiYgcm93LmVkaXRpbmcgJiYgcm93LnZhbGlkYXRvcj8uZGlydHkgJiYgcm93LnZhbGlkYXRvcj8udmFsaWRcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fQVBQTFknfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtRWRpdENyZWF0ZUNsaWNrLmVtaXQoe2V2ZW50OiAkZXZlbnQsIHJvdzogcm93fSlcIj5cbiAgICAgICAgPG1hdC1pY29uPmNoZWNrbWFyazwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBuZXcgcm93IC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5pZCA9PT0gLTE7IGVsc2UgZXhpc3RpbmdSb3dcIj5cblxuICAgICAgICA8IS0tIGRlbGV0ZSBidXR0b24gLS0+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwibGlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuRGVsZXRlICYmIHJvdy52YWxpZGF0b3I/LmludmFsaWRcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQ09NTU9OLkJUTl9ERUxFVEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsT3JEZWxldGVDbGljay5lbWl0KHtldmVudDogJGV2ZW50LCByb3c6IHJvd30pXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cblxuICAgICAgICA8IS0tIGFkZCBidXR0b24gLS0+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwibGlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhbkZvcndhcmQgJiYgY2FuQ29uZmlybUFuZEFkZCAmJiByb3cudmFsaWRhdG9yPy52YWxpZFwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDT01NT04uQlROX0FERCd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybUFuZEFkZENsaWNrLmVtaXQoe2V2ZW50OiAkZXZlbnQsIHJvdzogcm93fSlcIj5cbiAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPCEtLSBuZXh0IGJ1dHRvbiAoaW52aXNpYmxlIC0gZm9jdXNhYmxlIG9ubHkpIC0tPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWF0LXJvdy1hY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiB0cmFuc3BhcmVudDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgd2lkdGg6IDA7XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkZvcndhcmQgJiYgcm93LnZhbGlkYXRvcj8udmFsaWRcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJ0aGlzLmZvcndhcmQuZW1pdCh7ZXZlbnQ6ICRldmVudCwgcm93OiByb3d9KVwiPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIGV4aXN0aW5nIHJvdyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZXhpc3RpbmdSb3c+XG4gICAgICAgIDwhLS0gY2FuY2VsIGJ1dHRvbiAtLT5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJsaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5DYW5jZWwgJiYgcm93LnZhbGlkYXRvcj8uZGlydHlcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQ09NTU9OLkJUTl9VTkRPJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbE9yRGVsZXRlQ2xpY2suZW1pdCh7ZXZlbnQ6ICRldmVudCwgcm93OiByb3d9KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj51bmRvPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPCEtLSBuZXh0IGJ1dHRvbiAoaW52aXNpYmxlIC0gZm9jdXNhYmxlIG9ubHkpIC0tPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWF0LXJvdy1hY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiB0cmFuc3BhcmVudDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgd2lkdGg6IDA7XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkZvcndhcmQgJiYgcm93LnZhbGlkYXRvcj8udmFsaWRcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJ0aGlzLmZvcndhcmQuZW1pdCh7ZXZlbnQ6ICRldmVudCwgcm93OiByb3d9KVwiPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjdmlldz5cbiAgICAgIDwhLS0gZGlydHkgaWNvbiAtLT5cbiAgICAgIDxpb24taWNvbiAqbmdJZj1cImRpcnR5SWNvbiAmJiByb3cudmFsaWRhdG9yPy5kaXJ0eVwiIFtuYW1lXT1cImRpcnR5SWNvblwiIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJkaXJ0eS1pY29uXCI+PC9pb24taWNvbj5cblxuICAgICAgPCEtLSBiYWNrd2FyZCBidXR0b24gKGludmlzaWJsZSAtIGZvY3VzYWJsZSBvbmx5KSAtLT5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwibWF0LXJvdy1hY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogdHJhbnNwYXJlbnQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IHdpZHRoOiAwO1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQmFja3dhcmRcIlxuICAgICAgICAgICAgICAoZm9jdXMpPVwidGhpcy5iYWNrd2FyZC5lbWl0KHtldmVudDogJGV2ZW50LCByb3c6IHJvd30pXCI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyAgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L3RkPlxuXG4gIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdEZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gIDwvdGQ+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL2FjdGlvbnMtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9hY3Rpb25zLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBVyxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7O0FBTXRELE1BQU0sT0FBTyxzQkFBc0I7SUF3QmI7SUFDQTtJQXZCSyxTQUFTLENBQWU7SUFDdEIsY0FBYyxDQUFpQjtJQUVqRCxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLFNBQVMsQ0FBVTtJQUNuQixVQUFVLENBQVU7SUFDcEIsU0FBUyxDQUFVO0lBQ25CLFdBQVcsQ0FBVTtJQUNyQixVQUFVLENBQVU7SUFDcEIsZ0JBQWdCLENBQVU7SUFDMUIsU0FBUyxDQUFpQjtJQUMxQixZQUFZLEdBQUcsb0JBQW9CLENBQUM7SUFDN0IsU0FBUyxDQUFTO0lBQ3pCLFlBQVksQ0FBbUI7SUFFOUIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFDekMsbUJBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7SUFDbkYsc0JBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7SUFDdEYsa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7SUFDbEYsUUFBUSxH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UztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO3VCQUFDLE9BQU87Z0JBQ0wsWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RhYmxlRWxlbWVudH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7aXNOaWwsIHRvQm9vbGVhbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge01hdENvbHVtbkRlZiwgTWF0VGFibGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7TWF0TWVudVRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWN0aW9ucy1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9ucy1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25zQ29sdW1uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWY6IE1hdENvbHVtbkRlZjtcbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgbWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIEBJbnB1dCgpIHN0aWNreUVuZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5DYW5jZWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkNvbmZpcm06IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkRlbGV0ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuQmFja3dhcmQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkZvcndhcmQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkNvbmZpcm1BbmRBZGQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRpcnR5SWNvbjogYm9vbGVhbnxzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbnNUaXRsZSA9ICdDT01NT04uQlROX09QVElPTlMnO1xuICBASW5wdXQoJ2NsYXNzJykgY2xhc3NMaXN0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KCkgb3B0aW9uc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbE9yRGVsZXRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IEV2ZW50OyByb3c6IFRhYmxlRWxlbWVudDxhbnk+IH0+KCk7XG4gIEBPdXRwdXQoKSBjb25maXJtRWRpdENyZWF0ZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBFdmVudDsgcm93OiBUYWJsZUVsZW1lbnQ8YW55PiB9PigpO1xuICBAT3V0cHV0KCkgY29uZmlybUFuZEFkZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBFdmVudDsgcm93OiBUYWJsZUVsZW1lbnQ8YW55PiB9PigpO1xuICBAT3V0cHV0KCkgYmFja3dhcmQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IEV2ZW50OyByb3c6IFRhYmxlRWxlbWVudDxhbnk+IH0+KCk7XG4gIEBPdXRwdXQoKSBmb3J3YXJkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBFdmVudDsgcm93OiBUYWJsZUVsZW1lbnQ8YW55PiB9PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFibGU6IE1hdFRhYmxlPGFueT4sXG4gICAgICAgICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICAvLyBUT0RPIGF1dG8gY29uZmlndXJlIHVzaW5nIEFwcFRhYmxlID8gKG5lZWQgYSBmb3J3YXJkUmVmKCkgaW4gdGhlIHRhYmxlIGNvbXBvbmVudFxuICAgICAgICAgICAgICAvL0BPcHRpb25hbCgpIHByaXZhdGUgYXBwVGFibGU6IEFwcFRhYmxlPGFueT5cbiAgKSB7XG4gICAgaWYgKCF0YWJsZSkgdGhyb3cgbmV3IEVycm9yKGBbYWN0aW9ucy1jb2x1bW5dIHRoaXMgY29sdW1uIGNvbXBvbmVudCBtdXN0IGJlIGluc2lkZSBhIE1hdFRhYmxlIGNvbXBvbmVudGApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy50YWJsZS5hZGRDb2x1bW5EZWYodGhpcy5jb2x1bW5EZWYpO1xuICAgIHRoaXMuY2FuQ2FuY2VsID0gdG9Cb29sZWFuKHRoaXMuY2FuQ2FuY2VsLCB0aGlzLmNhbmNlbE9yRGVsZXRlQ2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA+IDApO1xuICAgIHRoaXMuY2FuQ29uZmlybSA9IHRvQm9vbGVhbih0aGlzLmNhbkNvbmZpcm0sIHRoaXMuY29uZmlybUVkaXRDcmVhdGVDbGljay5vYnNlcnZlcnMubGVuZ3RoID4gMCk7XG4gICAgdGhpcy5jYW5EZWxldGUgPSB0b0Jvb2xlYW4odGhpcy5jYW5EZWxldGUsIHRoaXMuY2FuY2VsT3JEZWxldGVDbGljay5vYnNlcnZlcnMubGVuZ3RoID4gMCk7XG4gICAgdGhpcy5jYW5Db25maXJtQW5kQWRkID0gdG9Cb29sZWFuKHRoaXMuY2FuQ29uZmlybUFuZEFkZCwgdGhpcy5jb25maXJtQW5kQWRkQ2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA+IDApO1xuICAgIHRoaXMuY2FuQmFja3dhcmQgPSB0b0Jvb2xlYW4odGhpcy5jYW5CYWNrd2FyZCwgdGhpcy5iYWNrd2FyZC5vYnNlcnZlcnMubGVuZ3RoID4gMCk7XG4gICAgdGhpcy5jYW5Gb3J3YXJkID0gdG9Cb29sZWFuKHRoaXMuY2FuRm9yd2FyZCwgdGhpcy5mb3J3YXJkLm9ic2VydmVycy5sZW5ndGggPiAwKTtcbiAgICBpZiAoaXNOaWwodGhpcy5kaXJ0eUljb24pKSB7XG4gICAgICB0aGlzLmRpcnR5SWNvbiA9ICdzdGFyJztcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRhYmxlLnJlbW92ZUNvbHVtbkRlZih0aGlzLmNvbHVtbkRlZik7XG4gICAgdGhpcy5vcHRpb25zQ2xpY2suY29tcGxldGUoKTtcbiAgICB0aGlzLm9wdGlvbnNDbGljay51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2FuY2VsT3JEZWxldGVDbGljay5jb21wbGV0ZSgpO1xuICAgIHRoaXMuY2FuY2VsT3JEZWxldGVDbGljay51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY29uZmlybUFuZEFkZENsaWNrLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jb25maXJtQW5kQWRkQ2xpY2sudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmJhY2t3YXJkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5iYWNrd2FyZC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZm9yd2FyZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZm9yd2FyZC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvbnNcIiBbc3RpY2t5RW5kXT1cInN0aWNreUVuZFwiPlxuICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtjbGFzc109XCJjbGFzc0xpc3RcIiBbY2xhc3MubWF0LWNvbHVtbi1zdGlja3ldPVwic3RpY2t5RW5kXCI+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uc0NsaWNrLm9ic2VydmVycyB8IGlzTm90RW1wdHlBcnJheVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uc1RpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zQ2xpY2suZW1pdCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0SGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgPC90aD5cbiAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIFtjbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LmVkaXRpbmc7IGVsc2Ugdmlld1wiPlxuXG4gICAgICA8IS0tIHBlbmRpbmcgLS0+XG4gICAgICA8aW9uLXNwaW5uZXIgKm5nSWY9XCJyb3cudmFsaWRhdG9yPy5wZW5kaW5nXCIgbmFtZT1cImRvdHNcIiBjbGFzcz1cImNlbnRlclwiPjwvaW9uLXNwaW5uZXI+XG5cbiAgICAgIDwhLS0gQ29uZmlybSBidXR0b24gLS0+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5Db25maXJtICYmIHJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3I/LmRpcnR5ICYmIHJvdy52YWxpZGF0b3I/LnZhbGlkXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidDT01NT04uQlROX0FQUExZJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybUVkaXRDcmVhdGVDbGljay5lbWl0KHtldmVudDogJGV2ZW50LCByb3c6IHJvd30pXCI+XG4gICAgICAgIDxtYXQtaWNvbj5jaGVja21hcms8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gbmV3IHJvdyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuaWQgPT09IC0xOyBlbHNlIGV4aXN0aW5nUm93XCI+XG5cbiAgICAgICAgPCEtLSBkZWxldGUgYnV0dG9uIC0tPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkRlbGV0ZSAmJiByb3cudmFsaWRhdG9yPy5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fREVMRVRFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbE9yRGVsZXRlQ2xpY2suZW1pdCh7ZXZlbnQ6ICRldmVudCwgcm93OiByb3d9KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGVfb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG5cbiAgICAgICAgPCEtLSBhZGQgYnV0dG9uIC0tPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjYW5Gb3J3YXJkICYmIGNhbkNvbmZpcm1BbmRBZGQgJiYgcm93LnZhbGlkYXRvcj8udmFsaWRcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQ09NTU9OLkJUTl9BREQnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1BbmRBZGRDbGljay5lbWl0KHtldmVudDogJGV2ZW50LCByb3c6IHJvd30pXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDwhLS0gbmV4dCBidXR0b24gKGludmlzaWJsZSAtIGZvY3VzYWJsZSBvbmx5KSAtLT5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1hdC1yb3ctYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogdHJhbnNwYXJlbnQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IHdpZHRoOiAwO1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5Gb3J3YXJkICYmIHJvdy52YWxpZGF0b3I/LnZhbGlkXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwidGhpcy5mb3J3YXJkLmVtaXQoe2V2ZW50OiAkZXZlbnQsIHJvdzogcm93fSlcIj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBleGlzdGluZyByb3cgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI2V4aXN0aW5nUm93PlxuICAgICAgICA8IS0tIGNhbmNlbCBidXR0b24gLS0+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwibGlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuQ2FuY2VsICYmIHJvdy52YWxpZGF0b3I/LmRpcnR5XCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fVU5ETycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWxPckRlbGV0ZUNsaWNrLmVtaXQoe2V2ZW50OiAkZXZlbnQsIHJvdzogcm93fSlcIj5cbiAgICAgICAgICA8bWF0LWljb24+dW5kbzwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDwhLS0gbmV4dCBidXR0b24gKGludmlzaWJsZSAtIGZvY3VzYWJsZSBvbmx5KSAtLT5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1hdC1yb3ctYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogdHJhbnNwYXJlbnQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IHdpZHRoOiAwO1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5Gb3J3YXJkICYmIHJvdy52YWxpZGF0b3I/LnZhbGlkXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwidGhpcy5mb3J3YXJkLmVtaXQoe2V2ZW50OiAkZXZlbnQsIHJvdzogcm93fSlcIj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3ZpZXc+XG4gICAgICA8IS0tIGRpcnR5IGljb24gLS0+XG4gICAgICA8aW9uLWljb24gKm5nSWY9XCJkaXJ0eUljb24gJiYgcm93LnZhbGlkYXRvcj8uZGlydHlcIiBbbmFtZV09XCJkaXJ0eUljb25cIiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwiZGlydHktaWNvblwiPjwvaW9uLWljb24+XG5cbiAgICAgIDwhLS0gYmFja3dhcmQgYnV0dG9uIChpbnZpc2libGUgLSBmb2N1c2FibGUgb25seSkgLS0+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm1hdC1yb3ctYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IHRyYW5zcGFyZW50OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB3aWR0aDogMDtcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkJhY2t3YXJkXCJcbiAgICAgICAgICAgICAgKGZvY3VzKT1cInRoaXMuYmFja3dhcmQuZW1pdCh7ZXZlbnQ6ICRldmVudCwgcm93OiByb3d9KVwiPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC90ZD5cblxuICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRGb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICA8L3RkPlxuPC9uZy1jb250YWluZXI+XG4iXX0=