@sumaris-net/ngx-components 2.4.85 → 2.4.86

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 (231) hide show
  1. package/esm2020/src/app/admin/admin-routing.module.mjs +5 -5
  2. package/esm2020/src/app/admin/admin.module.mjs +5 -5
  3. package/esm2020/src/app/admin/services/person.service.mjs +4 -4
  4. package/esm2020/src/app/admin/services/validator/person.validator.mjs +4 -4
  5. package/esm2020/src/app/admin/users/users.mjs +4 -4
  6. package/esm2020/src/app/admin/users/users.module.mjs +5 -5
  7. package/esm2020/src/app/core/about/about.modal.mjs +4 -4
  8. package/esm2020/src/app/core/about/about.module.mjs +5 -5
  9. package/esm2020/src/app/core/account/account.module.mjs +5 -5
  10. package/esm2020/src/app/core/account/account.page.mjs +4 -4
  11. package/esm2020/src/app/core/auth/auth.form.mjs +4 -4
  12. package/esm2020/src/app/core/auth/auth.modal.mjs +4 -4
  13. package/esm2020/src/app/core/auth/auth.module.mjs +5 -5
  14. package/esm2020/src/app/core/core.module.mjs +5 -5
  15. package/esm2020/src/app/core/core.testing.module.mjs +5 -5
  16. package/esm2020/src/app/core/form/buttons/form-buttons-bar.component.mjs +4 -4
  17. package/esm2020/src/app/core/form/buttons/form-buttons-bar.module.mjs +5 -5
  18. package/esm2020/src/app/core/form/entity/editor.class.mjs +7 -7
  19. package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +4 -4
  20. package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +49 -39
  21. package/esm2020/src/app/core/form/entity/entity-metadata.component.mjs +4 -4
  22. package/esm2020/src/app/core/form/entity/entity.module.mjs +5 -5
  23. package/esm2020/src/app/core/form/form.class.mjs +4 -4
  24. package/esm2020/src/app/core/form/form.module.mjs +5 -5
  25. package/esm2020/src/app/core/form/list/list.form.mjs +4 -4
  26. package/esm2020/src/app/core/form/list/list.module.mjs +5 -5
  27. package/esm2020/src/app/core/form/properties/properties.form.mjs +4 -4
  28. package/esm2020/src/app/core/form/properties/properties.module.mjs +5 -5
  29. package/esm2020/src/app/core/form/properties/property.validator.mjs +4 -4
  30. package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +4 -4
  31. package/esm2020/src/app/core/form/properties/testing/properties-form.testing.module.mjs +5 -5
  32. package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.mjs +4 -4
  33. package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +5 -5
  34. package/esm2020/src/app/core/form/text-popover/text-form.component.mjs +4 -4
  35. package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +4 -4
  36. package/esm2020/src/app/core/form/text-popover/text-popover.module.mjs +5 -5
  37. package/esm2020/src/app/core/graphql/graphql.module.mjs +5 -5
  38. package/esm2020/src/app/core/graphql/graphql.service.mjs +4 -4
  39. package/esm2020/src/app/core/home/home.mjs +5 -5
  40. package/esm2020/src/app/core/home/home.module.mjs +5 -5
  41. package/esm2020/src/app/core/icon/icon.component.mjs +4 -4
  42. package/esm2020/src/app/core/icon/icon.module.mjs +5 -5
  43. package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +4 -4
  44. package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +5 -5
  45. package/esm2020/src/app/core/menu/menu.component.mjs +4 -4
  46. package/esm2020/src/app/core/menu/menu.module.mjs +5 -5
  47. package/esm2020/src/app/core/menu/menu.service.mjs +4 -4
  48. package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +4 -4
  49. package/esm2020/src/app/core/offline/update-offline-mode-card.module.mjs +5 -5
  50. package/esm2020/src/app/core/peer/select-peer.modal.mjs +4 -4
  51. package/esm2020/src/app/core/peer/select-peer.module.mjs +5 -5
  52. package/esm2020/src/app/core/register/register-confirm.page.mjs +4 -4
  53. package/esm2020/src/app/core/register/register.form.mjs +4 -4
  54. package/esm2020/src/app/core/register/register.modal.mjs +4 -4
  55. package/esm2020/src/app/core/register/register.module.mjs +5 -5
  56. package/esm2020/src/app/core/services/account.service.mjs +9 -4
  57. package/esm2020/src/app/core/services/auth-guard.service.mjs +4 -4
  58. package/esm2020/src/app/core/services/base-entity-service.class.mjs +4 -4
  59. package/esm2020/src/app/core/services/base-graphql-service.class.mjs +4 -4
  60. package/esm2020/src/app/core/services/config.service.mjs +4 -4
  61. package/esm2020/src/app/core/services/crypto.service.mjs +4 -4
  62. package/esm2020/src/app/core/services/local-settings.service.mjs +10 -10
  63. package/esm2020/src/app/core/services/model/config.model.mjs +3 -3
  64. package/esm2020/src/app/core/services/network.service.mjs +4 -4
  65. package/esm2020/src/app/core/services/pipes/account.pipes.mjs +9 -9
  66. package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
  67. package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
  68. package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
  69. package/esm2020/src/app/core/services/platform.service.mjs +4 -4
  70. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +4 -4
  71. package/esm2020/src/app/core/services/testing/referential.validator.mjs +4 -4
  72. package/esm2020/src/app/core/services/validator/account.validator.mjs +4 -4
  73. package/esm2020/src/app/core/services/validator/base.validator.class.mjs +4 -4
  74. package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +4 -4
  75. package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +4 -4
  76. package/esm2020/src/app/core/settings/settings.module.mjs +5 -5
  77. package/esm2020/src/app/core/settings/settings.page.mjs +4 -4
  78. package/esm2020/src/app/core/table/actions-column.component.mjs +4 -4
  79. package/esm2020/src/app/core/table/async-table.class.mjs +4 -4
  80. package/esm2020/src/app/core/table/entities-async-table-datasource.class.mjs +4 -4
  81. package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +4 -4
  82. package/esm2020/src/app/core/table/memory-table.class.mjs +4 -4
  83. package/esm2020/src/app/core/table/table-select-columns.component.mjs +4 -4
  84. package/esm2020/src/app/core/table/table.class.mjs +4 -4
  85. package/esm2020/src/app/core/table/table.module.mjs +5 -5
  86. package/esm2020/src/app/core/table/testing/table-validator.service.mjs +4 -4
  87. package/esm2020/src/app/core/table/testing/table.testing.mjs +4 -4
  88. package/esm2020/src/app/core/table/testing/table.testing.module.mjs +5 -5
  89. package/esm2020/src/app/shared/audio/audio.mjs +4 -4
  90. package/esm2020/src/app/shared/audio/audio.testing.mjs +4 -4
  91. package/esm2020/src/app/shared/audio/audio.testing.module.mjs +5 -5
  92. package/esm2020/src/app/shared/capacitor/keyboard.mjs +4 -4
  93. package/esm2020/src/app/shared/debug/debug.component.mjs +4 -4
  94. package/esm2020/src/app/shared/debug/debug.module.mjs +5 -5
  95. package/esm2020/src/app/shared/directives/autofocus.directive.mjs +4 -4
  96. package/esm2020/src/app/shared/directives/autotitle.directive.mjs +4 -4
  97. package/esm2020/src/app/shared/directives/directives.module.mjs +5 -5
  98. package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
  99. package/esm2020/src/app/shared/directives/ng-var.directive.mjs +4 -4
  100. package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +4 -4
  101. package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +4 -4
  102. package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
  103. package/esm2020/src/app/shared/file/file.service.mjs +4 -4
  104. package/esm2020/src/app/shared/form/field.component.mjs +4 -4
  105. package/esm2020/src/app/shared/form/loading-spinner.mjs +4 -4
  106. package/esm2020/src/app/shared/functions.mjs +4 -1
  107. package/esm2020/src/app/shared/gesture/gesture-config.mjs +4 -4
  108. package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +4 -4
  109. package/esm2020/src/app/shared/help/help.modal.mjs +4 -4
  110. package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +4 -4
  111. package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +4 -4
  112. package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +5 -5
  113. package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +4 -4
  114. package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +5 -5
  115. package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +4 -4
  116. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +4 -4
  117. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +5 -5
  118. package/esm2020/src/app/shared/image/image.module.mjs +5 -5
  119. package/esm2020/src/app/shared/image/image.service.mjs +4 -4
  120. package/esm2020/src/app/shared/logging/logging-service.class.mjs +4 -4
  121. package/esm2020/src/app/shared/logging/logging-service.module.mjs +5 -5
  122. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +4 -4
  123. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +5 -5
  124. package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +4 -4
  125. package/esm2020/src/app/shared/material/badge/badge.directive.mjs +4 -4
  126. package/esm2020/src/app/shared/material/badge/badge.module.mjs +5 -5
  127. package/esm2020/src/app/shared/material/badge/badge.test.mjs +4 -4
  128. package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +5 -5
  129. package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +4 -4
  130. package/esm2020/src/app/shared/material/chips/chips.module.mjs +5 -5
  131. package/esm2020/src/app/shared/material/chips/material.chips.mjs +4 -4
  132. package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +4 -4
  133. package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +5 -5
  134. package/esm2020/src/app/shared/material/datetime/material.date.mjs +4 -4
  135. package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +4 -4
  136. package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +4 -4
  137. package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +4 -4
  138. package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +4 -4
  139. package/esm2020/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +4 -4
  140. package/esm2020/src/app/shared/material/duration/duration.module.mjs +5 -5
  141. package/esm2020/src/app/shared/material/duration/material.duration.mjs +4 -4
  142. package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +4 -4
  143. package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +5 -5
  144. package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +4 -4
  145. package/esm2020/src/app/shared/material/material.module.mjs +5 -5
  146. package/esm2020/src/app/shared/material/material.testing.module.mjs +5 -5
  147. package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +4 -4
  148. package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +4 -4
  149. package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +4 -4
  150. package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +4 -4
  151. package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +4 -4
  152. package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +4 -4
  153. package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +5 -5
  154. package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +4 -4
  155. package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +4 -4
  156. package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +4 -4
  157. package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +4 -4
  158. package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +5 -5
  159. package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +4 -4
  160. package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +25 -25
  161. package/esm2020/src/app/shared/pipes/colors.pipe.mjs +4 -4
  162. package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +5 -5
  163. package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +7 -7
  164. package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +5 -5
  165. package/esm2020/src/app/shared/pipes/duration.pipe.mjs +5 -5
  166. package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +4 -4
  167. package/esm2020/src/app/shared/pipes/form.pipes.mjs +19 -19
  168. package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +5 -5
  169. package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +10 -10
  170. package/esm2020/src/app/shared/pipes/maps.pipe.mjs +13 -13
  171. package/esm2020/src/app/shared/pipes/math.pipes.mjs +13 -13
  172. package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +4 -4
  173. package/esm2020/src/app/shared/pipes/number-format.pipe.mjs +5 -5
  174. package/esm2020/src/app/shared/pipes/pipes.module.mjs +5 -5
  175. package/esm2020/src/app/shared/pipes/property.pipes.mjs +8 -8
  176. package/esm2020/src/app/shared/pipes/string.pipes.mjs +22 -22
  177. package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +9 -9
  178. package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +4 -4
  179. package/esm2020/src/app/shared/services/progress-bar.service.mjs +4 -4
  180. package/esm2020/src/app/shared/services/startable-service.class.mjs +6 -1
  181. package/esm2020/src/app/shared/services/translate-context.service.mjs +4 -4
  182. package/esm2020/src/app/shared/shared-routing.module.mjs +8 -8
  183. package/esm2020/src/app/shared/shared.module.mjs +5 -5
  184. package/esm2020/src/app/shared/shared.testing.module.mjs +5 -5
  185. package/esm2020/src/app/shared/storage/storage-explorer.component.mjs +4 -4
  186. package/esm2020/src/app/shared/storage/storage-explorer.module.mjs +5 -5
  187. package/esm2020/src/app/shared/storage/storage.service.mjs +4 -4
  188. package/esm2020/src/app/shared/testing/observable.test.mjs +4 -4
  189. package/esm2020/src/app/shared/testing/tests.page.mjs +4 -4
  190. package/esm2020/src/app/shared/toast/toast.testing.mjs +6 -6
  191. package/esm2020/src/app/shared/toast/toast.testing.module.mjs +5 -5
  192. package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +4 -4
  193. package/esm2020/src/app/shared/toolbar/toolbar.mjs +5 -5
  194. package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +5 -5
  195. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +4 -4
  196. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +5 -5
  197. package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +4 -4
  198. package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +4 -4
  199. package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +4 -4
  200. package/esm2020/src/app/social/job/job.module.mjs +5 -5
  201. package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +4 -4
  202. package/esm2020/src/app/social/job/progression/job-progression.list.mjs +4 -4
  203. package/esm2020/src/app/social/job/progression/job-progression.service.mjs +4 -4
  204. package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +4 -4
  205. package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +4 -4
  206. package/esm2020/src/app/social/job/testing/job.testing.module.mjs +5 -5
  207. package/esm2020/src/app/social/message/message.form.mjs +4 -4
  208. package/esm2020/src/app/social/message/message.modal.mjs +4 -4
  209. package/esm2020/src/app/social/message/message.module.mjs +5 -5
  210. package/esm2020/src/app/social/message/message.service.mjs +4 -4
  211. package/esm2020/src/app/social/social.module.mjs +5 -5
  212. package/esm2020/src/app/social/social.testing.module.mjs +5 -5
  213. package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +4 -4
  214. package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +4 -4
  215. package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +4 -4
  216. package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +5 -5
  217. package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +4 -4
  218. package/esm2020/src/app/social/user-event/user-event.module.mjs +5 -5
  219. package/esm2020/src/app/social/user-event/user-event.service.mjs +4 -4
  220. package/fesm2015/sumaris-net.ngx-components.mjs +898 -871
  221. package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
  222. package/fesm2020/sumaris-net.ngx-components.mjs +891 -869
  223. package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
  224. package/package.json +1 -1
  225. package/src/app/core/form/entity/entity-editor.class.d.ts +33 -29
  226. package/src/app/core/services/account.service.d.ts +5 -0
  227. package/src/app/core/services/local-settings.service.d.ts +1 -1
  228. package/src/app/core/services/platform.service.d.ts +2 -2
  229. package/src/app/shared/file/file.utils.d.ts +1 -1
  230. package/src/app/shared/functions.d.ts +1 -0
  231. package/src/app/shared/services/startable-service.class.d.ts +1 -0
@@ -39,9 +39,9 @@ export class AppValidatorService extends ValidatorService {
39
39
  return changeCaseToUnderscore(errorKey);
40
40
  }
41
41
  }
42
- AppValidatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AppValidatorService, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Directive });
43
- AppValidatorService.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: AppValidatorService, usesInheritance: true, ngImport: i0 });
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AppValidatorService, decorators: [{
42
+ AppValidatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppValidatorService, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Directive });
43
+ AppValidatorService.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: AppValidatorService, usesInheritance: true, ngImport: i0 });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppValidatorService, decorators: [{
45
45
  type: Directive
46
46
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.TranslateService }]; } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS52YWxpZGF0b3IuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvdmFsaWRhdG9yL2Jhc2UudmFsaWRhdG9yLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRzFELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7O0FBS2pFLE1BQU0sT0FBZ0IsbUJBQ3BCLFNBQVEsZ0JBQWdCO0lBR3hCLFlBQ1ksV0FBK0IsRUFDL0IsU0FBNEI7UUFFdEMsS0FBSyxFQUFFLENBQUM7UUFIRSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBbUI7SUFHeEMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBUTtRQUN6QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUF3QjtRQUN4QyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWtCO1FBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRVMsWUFBWSxDQUFDLFFBQWdCLEVBQUUsWUFBa0I7UUFDekQsTUFBTSxPQUFPLEdBQUcsY0FBYyxHQUFHLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNsRSxJQUFJLE9BQU8sS0FBSyxXQUFXO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFDaEQsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRO1lBQUUsT0FBTyxZQUFZLENBQUM7UUFFMUQsNkJBQTZCO1FBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLFFBQVEsdURBQXVELENBQUMsQ0FBQztRQUUxSCxPQUFPLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7O2lIQTFDbUIsbUJBQW1CO3FHQUFuQixtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFEeEMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VmFsaWRhdG9yU2VydmljZX0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7SVZhbGlkYXRvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy92YWxpZGF0b3Itc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge0RpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FwcEZvcm1VdGlsc30gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLnV0aWxzJztcbmltcG9ydCB7Y2hhbmdlQ2FzZVRvVW5kZXJzY29yZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGb3JtRXJyb3JzfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybXMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBWYWxpZGF0b3JTZXJ2aWNlPFQgPSBhbnk+XG4gIGV4dGVuZHMgVmFsaWRhdG9yU2VydmljZVxuICBpbXBsZW1lbnRzIElWYWxpZGF0b3JTZXJ2aWNlPFQ+IHtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZT86IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldFJvd1ZhbGlkYXRvcigpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGb3JtR3JvdXAoKTtcbiAgfVxuXG4gIGdldEZvcm1Hcm91cChkYXRhPzogVCk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHRoaXMuZ2V0Rm9ybUdyb3VwQ29uZmlnKGRhdGEpKTtcbiAgfVxuXG4gIGdldEZvcm1Hcm91cENvbmZpZyhkYXRhPzogVCk6IHsgW2tleTogc3RyaW5nXTogYW55fSAge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGdldEkxOG5Gb3JtRXJyb3JzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBlcnJvcnMgPSBBcHBGb3JtVXRpbHMuZ2V0Rm9ybUVycm9ycyhjb250cm9sKTtcbiAgICByZXR1cm4gdGhpcy5nZXRJMThuRXJyb3JzKGVycm9ycyk7XG4gIH1cblxuICBnZXRJMThuRXJyb3JzKGVycm9yczogRm9ybUVycm9ycyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JzIHx8IHt9KS5tYXAoZXJyb3JLZXkgPT4gdGhpcy5nZXRJMThuRXJyb3IoZXJyb3JLZXksIGVycm9yc1tlcnJvcktleV0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJMThuRXJyb3IoZXJyb3JLZXk6IHN0cmluZywgZXJyb3JDb250ZW50PzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBpMThuS2V5ID0gJ0VSUk9SLkZJRUxEXycgKyBjaGFuZ2VDYXNlVG9VbmRlcnNjb3JlKGVycm9yS2V5KS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IGkxOG5NZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChpMThuS2V5LCBlcnJvckNvbnRlbnQpO1xuICAgIGlmIChpMThuS2V5ICE9PSBpMThuTWVzc2FnZSkgcmV0dXJuIGkxOG5NZXNzYWdlO1xuICAgIGlmICh0eXBlb2YgZXJyb3JDb250ZW50ID09PSAnc3RyaW5nJykgcmV0dXJuIGVycm9yQ29udGVudDtcblxuICAgIC8vIE5vdCB0cmFuc2xhdGVkOiBzaG93IGVycm9yXG4gICAgY29uc29sZS5lcnJvcihgW3ZhbGlkYXRvcl0gQ2Fubm90IHRyYW5zbGF0ZSBlcnJvciBrZXkgJyR7ZXJyb3JLZXl9Jy4gUGxlYXNlIG92ZXJyaWRlIHRyYW5zbGF0ZUVycm9yKCkgaW4geW91ciB2YWxpZGF0b3JgKTtcblxuICAgIHJldHVybiBjaGFuZ2VDYXNlVG9VbmRlcnNjb3JlKGVycm9yS2V5KTtcbiAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS52YWxpZGF0b3IuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvdmFsaWRhdG9yL2Jhc2UudmFsaWRhdG9yLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRzFELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7O0FBS2pFLE1BQU0sT0FBZ0IsbUJBQ3BCLFNBQVEsZ0JBQWdCO0lBR3hCLFlBQ1ksV0FBK0IsRUFDL0IsU0FBNEI7UUFFdEMsS0FBSyxFQUFFLENBQUM7UUFIRSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBbUI7SUFHeEMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBUTtRQUN6QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUF3QjtRQUN4QyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWtCO1FBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRVMsWUFBWSxDQUFDLFFBQWdCLEVBQUUsWUFBa0I7UUFDekQsTUFBTSxPQUFPLEdBQUcsY0FBYyxHQUFHLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNsRSxJQUFJLE9BQU8sS0FBSyxXQUFXO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFDaEQsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRO1lBQUUsT0FBTyxZQUFZLENBQUM7UUFFMUQsNkJBQTZCO1FBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLFFBQVEsdURBQXVELENBQUMsQ0FBQztRQUUxSCxPQUFPLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7O2dIQTFDbUIsbUJBQW1CO29HQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEeEMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VmFsaWRhdG9yU2VydmljZX0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7SVZhbGlkYXRvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy92YWxpZGF0b3Itc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge0RpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FwcEZvcm1VdGlsc30gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLnV0aWxzJztcbmltcG9ydCB7Y2hhbmdlQ2FzZVRvVW5kZXJzY29yZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGb3JtRXJyb3JzfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybXMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBWYWxpZGF0b3JTZXJ2aWNlPFQgPSBhbnk+XG4gIGV4dGVuZHMgVmFsaWRhdG9yU2VydmljZVxuICBpbXBsZW1lbnRzIElWYWxpZGF0b3JTZXJ2aWNlPFQ+IHtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZT86IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldFJvd1ZhbGlkYXRvcigpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGb3JtR3JvdXAoKTtcbiAgfVxuXG4gIGdldEZvcm1Hcm91cChkYXRhPzogVCk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHRoaXMuZ2V0Rm9ybUdyb3VwQ29uZmlnKGRhdGEpKTtcbiAgfVxuXG4gIGdldEZvcm1Hcm91cENvbmZpZyhkYXRhPzogVCk6IHsgW2tleTogc3RyaW5nXTogYW55fSAge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGdldEkxOG5Gb3JtRXJyb3JzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBlcnJvcnMgPSBBcHBGb3JtVXRpbHMuZ2V0Rm9ybUVycm9ycyhjb250cm9sKTtcbiAgICByZXR1cm4gdGhpcy5nZXRJMThuRXJyb3JzKGVycm9ycyk7XG4gIH1cblxuICBnZXRJMThuRXJyb3JzKGVycm9yczogRm9ybUVycm9ycyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JzIHx8IHt9KS5tYXAoZXJyb3JLZXkgPT4gdGhpcy5nZXRJMThuRXJyb3IoZXJyb3JLZXksIGVycm9yc1tlcnJvcktleV0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJMThuRXJyb3IoZXJyb3JLZXk6IHN0cmluZywgZXJyb3JDb250ZW50PzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBpMThuS2V5ID0gJ0VSUk9SLkZJRUxEXycgKyBjaGFuZ2VDYXNlVG9VbmRlcnNjb3JlKGVycm9yS2V5KS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IGkxOG5NZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChpMThuS2V5LCBlcnJvckNvbnRlbnQpO1xuICAgIGlmIChpMThuS2V5ICE9PSBpMThuTWVzc2FnZSkgcmV0dXJuIGkxOG5NZXNzYWdlO1xuICAgIGlmICh0eXBlb2YgZXJyb3JDb250ZW50ID09PSAnc3RyaW5nJykgcmV0dXJuIGVycm9yQ29udGVudDtcblxuICAgIC8vIE5vdCB0cmFuc2xhdGVkOiBzaG93IGVycm9yXG4gICAgY29uc29sZS5lcnJvcihgW3ZhbGlkYXRvcl0gQ2Fubm90IHRyYW5zbGF0ZSBlcnJvciBrZXkgJyR7ZXJyb3JLZXl9Jy4gUGxlYXNlIG92ZXJyaWRlIHRyYW5zbGF0ZUVycm9yKCkgaW4geW91ciB2YWxpZGF0b3JgKTtcblxuICAgIHJldHVybiBjaGFuZ2VDYXNlVG9VbmRlcnNjb3JlKGVycm9yS2V5KTtcbiAgfVxufVxuIl19
@@ -57,10 +57,10 @@ export class LocalSettingsValidatorService extends AppValidatorService {
57
57
  }
58
58
  }
59
59
  }
60
- LocalSettingsValidatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalSettingsValidatorService, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.NetworkService }], target: i0.ɵɵFactoryTarget.Injectable });
61
- LocalSettingsValidatorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalSettingsValidatorService, providedIn: 'root' });
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalSettingsValidatorService, decorators: [{
60
+ LocalSettingsValidatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalSettingsValidatorService, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.NetworkService }], target: i0.ɵɵFactoryTarget.Injectable });
61
+ LocalSettingsValidatorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalSettingsValidatorService, providedIn: 'root' });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalSettingsValidatorService, decorators: [{
63
63
  type: Injectable,
64
64
  args: [{ providedIn: 'root' }]
65
65
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.NetworkService }]; } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc2V0dGluZ3MudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3ZhbGlkYXRvci9sb2NhbC1zZXR0aW5ncy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQTBFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ILE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUczRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsbUJBQWtDO0lBRW5GLFlBQ0UsV0FBK0IsRUFDdkIsY0FBOEI7UUFFdEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRlgsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBR3hDLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixrQkFBa0IsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEYsTUFBTSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDMUQsYUFBYSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDeEUsU0FBUyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEUsT0FBTyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzdELEVBQUU7WUFDRCxlQUFlLEVBQUUsQ0FBQyxLQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbkYsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVc7UUFDNUIsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FDM0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQW9DO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDNUIsR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlGLEtBQUssRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNkJBQTZCO0lBRW5CLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBK0I7UUFFdkQseUJBQXlCO1FBQ3pCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDL0IsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUMxRDthQUNJO1lBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0UsNkJBQTZCO1lBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsTUFBTSxNQUFNLEdBQXFCLGNBQWMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7Z0JBQy9DLHdEQUF3RDtnQkFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQzthQUMzQjtZQUNELHFDQUFxQztpQkFDaEM7Z0JBQ0gsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUMxRDtTQUNGO0lBQ0gsQ0FBQzs7MkhBNURVLDZCQUE2QjsrSEFBN0IsNkJBQTZCLGNBRGpCLE1BQU07NEZBQ2xCLDZCQUE2QjtrQkFEekMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtFbnRpdHlVdGlsc30gZnJvbSAnLi4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7TG9jYWxTZXR0aW5nc30gZnJvbSAnLi4vbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHtTaGFyZWRWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtOZXR3b3JrU2VydmljZX0gZnJvbSAnLi4vbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7QXBwVmFsaWRhdG9yU2VydmljZX0gZnJvbSAnLi9iYXNlLnZhbGlkYXRvci5jbGFzcyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIExvY2FsU2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlIGV4dGVuZHMgQXBwVmFsaWRhdG9yU2VydmljZTxMb2NhbFNldHRpbmdzPiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG5ldHdvcmtTZXJ2aWNlOiBOZXR3b3JrU2VydmljZVxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlcik7XG4gIH1cblxuICBnZXRGb3JtR3JvdXAoZGF0YT86IExvY2FsU2V0dGluZ3MpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBhY2NvdW50SW5oZXJpdGFuY2U6IFtkYXRhICYmIGRhdGEuYWNjb3VudEluaGVyaXRhbmNlIHx8IHRydWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgbG9jYWxlOiBbZGF0YSAmJiBkYXRhLmxvY2FsZSB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGxhdExvbmdGb3JtYXQ6IFtkYXRhICYmIGRhdGEubGF0TG9uZ0Zvcm1hdCB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHVzYWdlTW9kZTogW2RhdGEgJiYgZGF0YS51c2FnZU1vZGUgfHwgJ0RFU0snLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBlZXJVcmw6IFtkYXRhICYmIGRhdGEucGVlclVybCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwcm9wZXJ0aWVzOiB0aGlzLmdldFByb3BlcnRpZXNBcnJheShkYXRhICYmIGRhdGEucHJvcGVydGllcylcbiAgICB9LCB7XG4gICAgICBhc3luY1ZhbGlkYXRvcnM6IChncm91cDogVW50eXBlZEZvcm1Hcm91cCkgPT4gdGhpcy5wZWVyQWxpdmUoZ3JvdXAuZ2V0KCdwZWVyVXJsJykpXG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzQXJyYXkoYXJyYXk/OiBhbnkpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gRW50aXR5VXRpbHMuZ2V0TWFwQXNBcnJheShhcnJheSB8fCB7fSk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoXG4gICAgICBwcm9wZXJ0aWVzLm1hcChpdGVtID0+IHRoaXMuZ2V0UHJvcGVydHlGb3JtR3JvdXAoaXRlbSkpXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb3BlcnR5Rm9ybUdyb3VwKGRhdGE/OiB7a2V5OiBzdHJpbmc7IHZhbHVlPzogc3RyaW5nfSk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGtleTogW2RhdGEgJiYgZGF0YS5rZXkgfHwgbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heCg1MCldKV0sXG4gICAgICB2YWx1ZTogW2RhdGEgJiYgZGF0YS52YWx1ZSB8fCBudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDEwMCldKV1cbiAgICB9KTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIHBlZXJBbGl2ZShwZWVyVXJsQ29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gIHtcblxuICAgIC8vIE9mZmxpbmUgbW9kZTogbm8gZXJyb3JcbiAgICBpZiAodGhpcy5uZXR3b3JrU2VydmljZS5vZmZsaW5lKSB7XG4gICAgICBTaGFyZWRWYWxpZGF0b3JzLmNsZWFyRXJyb3IocGVlclVybENvbnRyb2wsICdwZWVyQWxpdmUnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBhbGl2ZSA9IGF3YWl0IHRoaXMubmV0d29ya1NlcnZpY2UuY2hlY2tQZWVyQWxpdmUocGVlclVybENvbnRyb2wudmFsdWUpO1xuICAgICAgLy8gS086IGFkZCBhIHZhbGlkYXRpb24gZXJyb3JcbiAgICAgIGlmICghYWxpdmUpIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gcGVlclVybENvbnRyb2wuZXJyb3JzIHx8IHt9O1xuICAgICAgICBlcnJvcnNbJ3BlZXJBbGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgcGVlclVybENvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgICAgIHBlZXJVcmxDb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgZXJyb3IgKHNob3VsZCBiZSBhcHBseSB0byB0aGUgcGFyZW50IGZvcm0pXG4gICAgICAgIHJldHVybiB7IHBlZXJBbGl2ZTogdHJ1ZX07XG4gICAgICB9XG4gICAgICAvLyBPSzogcmVtb3ZlIHRoZSBleGlzdGluZyBvbiBjb250cm9sXG4gICAgICBlbHNlIHtcbiAgICAgICAgU2hhcmVkVmFsaWRhdG9ycy5jbGVhckVycm9yKHBlZXJVcmxDb250cm9sLCAncGVlckFsaXZlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc2V0dGluZ3MudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3ZhbGlkYXRvci9sb2NhbC1zZXR0aW5ncy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQTBFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ILE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUczRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsbUJBQWtDO0lBRW5GLFlBQ0UsV0FBK0IsRUFDdkIsY0FBOEI7UUFFdEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRlgsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBR3hDLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixrQkFBa0IsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEYsTUFBTSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDMUQsYUFBYSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDeEUsU0FBUyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEUsT0FBTyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzdELEVBQUU7WUFDRCxlQUFlLEVBQUUsQ0FBQyxLQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbkYsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVc7UUFDNUIsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FDM0IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQW9DO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDNUIsR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlGLEtBQUssRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNkJBQTZCO0lBRW5CLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBK0I7UUFFdkQseUJBQXlCO1FBQ3pCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDL0IsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUMxRDthQUNJO1lBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0UsNkJBQTZCO1lBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsTUFBTSxNQUFNLEdBQXFCLGNBQWMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7Z0JBQy9DLHdEQUF3RDtnQkFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQzthQUMzQjtZQUNELHFDQUFxQztpQkFDaEM7Z0JBQ0gsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUMxRDtTQUNGO0lBQ0gsQ0FBQzs7MEhBNURVLDZCQUE2Qjs4SEFBN0IsNkJBQTZCLGNBRGpCLE1BQU07MkZBQ2xCLDZCQUE2QjtrQkFEekMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtFbnRpdHlVdGlsc30gZnJvbSAnLi4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7TG9jYWxTZXR0aW5nc30gZnJvbSAnLi4vbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHtTaGFyZWRWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtOZXR3b3JrU2VydmljZX0gZnJvbSAnLi4vbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7QXBwVmFsaWRhdG9yU2VydmljZX0gZnJvbSAnLi9iYXNlLnZhbGlkYXRvci5jbGFzcyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIExvY2FsU2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlIGV4dGVuZHMgQXBwVmFsaWRhdG9yU2VydmljZTxMb2NhbFNldHRpbmdzPiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG5ldHdvcmtTZXJ2aWNlOiBOZXR3b3JrU2VydmljZVxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlcik7XG4gIH1cblxuICBnZXRGb3JtR3JvdXAoZGF0YT86IExvY2FsU2V0dGluZ3MpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBhY2NvdW50SW5oZXJpdGFuY2U6IFtkYXRhICYmIGRhdGEuYWNjb3VudEluaGVyaXRhbmNlIHx8IHRydWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgbG9jYWxlOiBbZGF0YSAmJiBkYXRhLmxvY2FsZSB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGxhdExvbmdGb3JtYXQ6IFtkYXRhICYmIGRhdGEubGF0TG9uZ0Zvcm1hdCB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHVzYWdlTW9kZTogW2RhdGEgJiYgZGF0YS51c2FnZU1vZGUgfHwgJ0RFU0snLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBlZXJVcmw6IFtkYXRhICYmIGRhdGEucGVlclVybCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwcm9wZXJ0aWVzOiB0aGlzLmdldFByb3BlcnRpZXNBcnJheShkYXRhICYmIGRhdGEucHJvcGVydGllcylcbiAgICB9LCB7XG4gICAgICBhc3luY1ZhbGlkYXRvcnM6IChncm91cDogVW50eXBlZEZvcm1Hcm91cCkgPT4gdGhpcy5wZWVyQWxpdmUoZ3JvdXAuZ2V0KCdwZWVyVXJsJykpXG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzQXJyYXkoYXJyYXk/OiBhbnkpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gRW50aXR5VXRpbHMuZ2V0TWFwQXNBcnJheShhcnJheSB8fCB7fSk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoXG4gICAgICBwcm9wZXJ0aWVzLm1hcChpdGVtID0+IHRoaXMuZ2V0UHJvcGVydHlGb3JtR3JvdXAoaXRlbSkpXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb3BlcnR5Rm9ybUdyb3VwKGRhdGE/OiB7a2V5OiBzdHJpbmc7IHZhbHVlPzogc3RyaW5nfSk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGtleTogW2RhdGEgJiYgZGF0YS5rZXkgfHwgbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heCg1MCldKV0sXG4gICAgICB2YWx1ZTogW2RhdGEgJiYgZGF0YS52YWx1ZSB8fCBudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDEwMCldKV1cbiAgICB9KTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIHBlZXJBbGl2ZShwZWVyVXJsQ29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gIHtcblxuICAgIC8vIE9mZmxpbmUgbW9kZTogbm8gZXJyb3JcbiAgICBpZiAodGhpcy5uZXR3b3JrU2VydmljZS5vZmZsaW5lKSB7XG4gICAgICBTaGFyZWRWYWxpZGF0b3JzLmNsZWFyRXJyb3IocGVlclVybENvbnRyb2wsICdwZWVyQWxpdmUnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBhbGl2ZSA9IGF3YWl0IHRoaXMubmV0d29ya1NlcnZpY2UuY2hlY2tQZWVyQWxpdmUocGVlclVybENvbnRyb2wudmFsdWUpO1xuICAgICAgLy8gS086IGFkZCBhIHZhbGlkYXRpb24gZXJyb3JcbiAgICAgIGlmICghYWxpdmUpIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gcGVlclVybENvbnRyb2wuZXJyb3JzIHx8IHt9O1xuICAgICAgICBlcnJvcnNbJ3BlZXJBbGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgcGVlclVybENvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgICAgIHBlZXJVcmxDb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgZXJyb3IgKHNob3VsZCBiZSBhcHBseSB0byB0aGUgcGFyZW50IGZvcm0pXG4gICAgICAgIHJldHVybiB7IHBlZXJBbGl2ZTogdHJ1ZX07XG4gICAgICB9XG4gICAgICAvLyBPSzogcmVtb3ZlIHRoZSBleGlzdGluZyBvbiBjb250cm9sXG4gICAgICBlbHNlIHtcbiAgICAgICAgU2hhcmVkVmFsaWRhdG9ycy5jbGVhckVycm9yKHBlZXJVcmxDb250cm9sLCAncGVlckFsaXZlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -20,10 +20,10 @@ export class UserSettingsValidatorService extends AppValidatorService {
20
20
  });
21
21
  }
22
22
  }
23
- UserSettingsValidatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserSettingsValidatorService, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable });
24
- UserSettingsValidatorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserSettingsValidatorService, providedIn: 'root' });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserSettingsValidatorService, decorators: [{
23
+ UserSettingsValidatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UserSettingsValidatorService, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable });
24
+ UserSettingsValidatorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UserSettingsValidatorService, providedIn: 'root' });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UserSettingsValidatorService, decorators: [{
26
26
  type: Injectable,
27
27
  args: [{ providedIn: 'root' }]
28
28
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }]; } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvdmFsaWRhdG9yL3VzZXItc2V0dGluZ3MudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUF1QyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRzNELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBaUM7SUFFakYsWUFDRSxXQUErQjtRQUUvQixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFtQjtRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQztZQUM3QixVQUFVLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7WUFDN0MsTUFBTSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDMUQsYUFBYSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDeEUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2hDLDZGQUE2RjthQUM1RixDQUFDO1lBQ0YsS0FBSyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7OzBIQW5CVSw0QkFBNEI7OEhBQTVCLDRCQUE0QixjQURoQixNQUFNOzRGQUNsQiw0QkFBNEI7a0JBRHhDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1VzZXJTZXR0aW5nc30gZnJvbSAnLi4vbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHtBcHBWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICcuL2Jhc2UudmFsaWRhdG9yLmNsYXNzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVXNlclNldHRpbmdzVmFsaWRhdG9yU2VydmljZSBleHRlbmRzIEFwcFZhbGlkYXRvclNlcnZpY2U8VXNlclNldHRpbmdzPiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlcik7XG4gIH1cblxuICBnZXRGb3JtR3JvdXAoZGF0YT86IFVzZXJTZXR0aW5ncyk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGlkOiBbZGF0YSAmJiBkYXRhLmlkIHx8IG51bGxdLFxuICAgICAgdXBkYXRlRGF0ZTogW2RhdGEgJiYgZGF0YS51cGRhdGVEYXRlIHx8IG51bGxdLFxuICAgICAgbG9jYWxlOiBbZGF0YSAmJiBkYXRhLmxvY2FsZSB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGxhdExvbmdGb3JtYXQ6IFtkYXRhICYmIGRhdGEubGF0TG9uZ0Zvcm1hdCB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgLy91c2FnZU1vZGU6IFtkYXRhICYmIGRhdGEuY29udGVudCAmJiBkYXRhLmNvbnRlbnQudXNhZ2VNb2RlIHx8ICdERVNLJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB9KSxcbiAgICAgIG5vbmNlOiBbZGF0YSAmJiBkYXRhLm5vbmNlIHx8IG51bGxdXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvdmFsaWRhdG9yL3VzZXItc2V0dGluZ3MudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUF1QyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRzNELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBaUM7SUFFakYsWUFDRSxXQUErQjtRQUUvQixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFtQjtRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQztZQUM3QixVQUFVLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7WUFDN0MsTUFBTSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDMUQsYUFBYSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDeEUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2hDLDZGQUE2RjthQUM1RixDQUFDO1lBQ0YsS0FBSyxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O3lIQW5CVSw0QkFBNEI7NkhBQTVCLDRCQUE0QixjQURoQixNQUFNOzJGQUNsQiw0QkFBNEI7a0JBRHhDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1VzZXJTZXR0aW5nc30gZnJvbSAnLi4vbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHtBcHBWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICcuL2Jhc2UudmFsaWRhdG9yLmNsYXNzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVXNlclNldHRpbmdzVmFsaWRhdG9yU2VydmljZSBleHRlbmRzIEFwcFZhbGlkYXRvclNlcnZpY2U8VXNlclNldHRpbmdzPiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlcik7XG4gIH1cblxuICBnZXRGb3JtR3JvdXAoZGF0YT86IFVzZXJTZXR0aW5ncyk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGlkOiBbZGF0YSAmJiBkYXRhLmlkIHx8IG51bGxdLFxuICAgICAgdXBkYXRlRGF0ZTogW2RhdGEgJiYgZGF0YS51cGRhdGVEYXRlIHx8IG51bGxdLFxuICAgICAgbG9jYWxlOiBbZGF0YSAmJiBkYXRhLmxvY2FsZSB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGxhdExvbmdGb3JtYXQ6IFtkYXRhICYmIGRhdGEubGF0TG9uZ0Zvcm1hdCB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgLy91c2FnZU1vZGU6IFtkYXRhICYmIGRhdGEuY29udGVudCAmJiBkYXRhLmNvbnRlbnQudXNhZ2VNb2RlIHx8ICdERVNLJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB9KSxcbiAgICAgIG5vbmNlOiBbZGF0YSAmJiBkYXRhLm5vbmNlIHx8IG51bGxdXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -7,14 +7,14 @@ import * as i0 from "@angular/core";
7
7
  import * as i1 from "@ngx-translate/core";
8
8
  export class AppSettingsPageModule {
9
9
  }
10
- AppSettingsPageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AppSettingsPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- AppSettingsPageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: AppSettingsPageModule, declarations: [SettingsPage], imports: [SharedModule,
10
+ AppSettingsPageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppSettingsPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ AppSettingsPageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: AppSettingsPageModule, declarations: [SettingsPage], imports: [SharedModule,
12
12
  AppFormButtonsBarModule, i1.TranslateModule], exports: [TranslateModule,
13
13
  SettingsPage] });
14
- AppSettingsPageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AppSettingsPageModule, imports: [SharedModule,
14
+ AppSettingsPageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppSettingsPageModule, imports: [SharedModule,
15
15
  AppFormButtonsBarModule,
16
16
  TranslateModule.forChild(), TranslateModule] });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AppSettingsPageModule, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppSettingsPageModule, decorators: [{
18
18
  type: NgModule,
19
19
  args: [{
20
20
  imports: [
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
31
31
  ]
32
32
  }]
33
33
  }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NldHRpbmdzL3NldHRpbmdzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDOzs7QUFpQmhGLE1BQU0sT0FBTyxxQkFBcUI7O21IQUFyQixxQkFBcUI7b0hBQXJCLHFCQUFxQixpQkFQOUIsWUFBWSxhQU5aLFlBQVk7UUFDWix1QkFBdUIsaUNBUXZCLGVBQWU7UUFDZixZQUFZO29IQUdILHFCQUFxQixZQWI5QixZQUFZO1FBQ1osdUJBQXVCO1FBQ3ZCLGVBQWUsQ0FBQyxRQUFRLEVBQUUsRUFPMUIsZUFBZTs0RkFJTixxQkFBcUI7a0JBZmpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixlQUFlLENBQUMsUUFBUSxFQUFFO3FCQUMzQjtvQkFFRCxZQUFZLEVBQUU7d0JBQ1osWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZUFBZTt3QkFDZixZQUFZO3FCQUNiO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NoYXJlZE1vZHVsZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHtTZXR0aW5nc1BhZ2V9IGZyb20gJy4vc2V0dGluZ3MucGFnZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0FwcEZvcm1CdXR0b25zQmFyTW9kdWxlfSBmcm9tICcuLi9mb3JtL2J1dHRvbnMvZm9ybS1idXR0b25zLWJhci5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgU2hhcmVkTW9kdWxlLFxuICAgIEFwcEZvcm1CdXR0b25zQmFyTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpXG4gIF0sXG5cbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2V0dGluZ3NQYWdlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgU2V0dGluZ3NQYWdlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwU2V0dGluZ3NQYWdlTW9kdWxlIHtcblxufVxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NldHRpbmdzL3NldHRpbmdzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDOzs7QUFpQmhGLE1BQU0sT0FBTyxxQkFBcUI7O2tIQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQixpQkFQOUIsWUFBWSxhQU5aLFlBQVk7UUFDWix1QkFBdUIsaUNBUXZCLGVBQWU7UUFDZixZQUFZO21IQUdILHFCQUFxQixZQWI5QixZQUFZO1FBQ1osdUJBQXVCO1FBQ3ZCLGVBQWUsQ0FBQyxRQUFRLEVBQUUsRUFPMUIsZUFBZTsyRkFJTixxQkFBcUI7a0JBZmpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixlQUFlLENBQUMsUUFBUSxFQUFFO3FCQUMzQjtvQkFFRCxZQUFZLEVBQUU7d0JBQ1osWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZUFBZTt3QkFDZixZQUFZO3FCQUNiO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NoYXJlZE1vZHVsZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHtTZXR0aW5nc1BhZ2V9IGZyb20gJy4vc2V0dGluZ3MucGFnZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0FwcEZvcm1CdXR0b25zQmFyTW9kdWxlfSBmcm9tICcuLi9mb3JtL2J1dHRvbnMvZm9ybS1idXR0b25zLWJhci5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgU2hhcmVkTW9kdWxlLFxuICAgIEFwcEZvcm1CdXR0b25zQmFyTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpXG4gIF0sXG5cbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2V0dGluZ3NQYWdlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgU2V0dGluZ3NQYWdlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwU2V0dGluZ3NQYWdlTW9kdWxlIHtcblxufVxuIl19
@@ -291,11 +291,11 @@ export class SettingsPage extends AppForm {
291
291
  this.cd.markForCheck();
292
292
  }
293
293
  }
294
- SettingsPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SettingsPage, deps: [{ token: i0.Injector }, { token: i1.PlatformService }, { token: i2.NavController }, { token: i3.LocalSettingsValidatorService }, { token: i2.AlertController }, { token: i4.TranslateService }, { token: i5.UntypedFormBuilder }, { token: i6.AccountService }, { token: i7.LocalSettingsService }, { token: i0.ChangeDetectorRef }, { token: i8.NetworkService }, { token: APP_LOCALES }, { token: APP_SETTINGS_MENU_ITEMS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
295
- SettingsPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SettingsPage, selector: "page-settings", providers: [
294
+ SettingsPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsPage, deps: [{ token: i0.Injector }, { token: i1.PlatformService }, { token: i2.NavController }, { token: i3.LocalSettingsValidatorService }, { token: i2.AlertController }, { token: i4.TranslateService }, { token: i5.UntypedFormBuilder }, { token: i6.AccountService }, { token: i7.LocalSettingsService }, { token: i0.ChangeDetectorRef }, { token: i8.NetworkService }, { token: APP_LOCALES }, { token: APP_SETTINGS_MENU_ITEMS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
295
+ SettingsPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SettingsPage, selector: "page-settings", providers: [
296
296
  { provide: ValidatorService, useExisting: LocalSettingsValidatorService },
297
297
  ], usesInheritance: true, ngImport: i0, template: "<app-toolbar [title]=\"'SETTINGS.TITLE'|translate\" color=\"primary\"\n [hasValidate]=\"dirty && !saving\"\n [hasClose]=\"!dirty && !saving\"\n (onValidate)=\"save($event)\"\n (onClose)=\"close($event)\">\n\n <ion-buttons slot=\"end\">\n <!-- options menu -->\n <ion-button [matMenuTriggerFor]=\"optionsMenu\"\n *ngIf=\"!saving\"\n [disabled]=\"saving\">\n <mat-icon slot=\"icon-only\">more_vert</mat-icon>\n </ion-button>\n </ion-buttons>\n</app-toolbar>\n\n<!-- Options menu -->\n<mat-menu #optionsMenu=\"matMenu\">\n <!-- Clear cache -->\n <button mat-menu-item (click)=\"clearCache($event)\">\n <mat-icon><ion-icon name=\"trash-outline\"></ion-icon></mat-icon>\n <ion-label translate>SETTINGS.BTN_CLEAR_CACHE</ion-label>\n </button>\n\n <!-- Reset -->\n <button mat-menu-item\n [disabled]=\"!dirty\"\n (click)=\"cancel($event)\">\n <mat-icon><ion-icon name=\"refresh\"></ion-icon></mat-icon>\n <mat-label translate>COMMON.BTN_RESET</mat-label>\n </button>\n\n <!-- additional items -->\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngFor=\"let item of menuItems\">\n <a *ngIf=\"item.path\"\n mat-menu-item\n class=\"{{item.cssClass}} {{item.color}}\"\n (click)=\"executeAction($event, item)\">\n <mat-icon *ngIf=\"item.icon\"><ion-icon [name]=\"item.icon\"></ion-icon></mat-icon>\n <mat-icon *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <mat-label translate>{{item.title}}</mat-label>\n </a>\n <!-- divider -->\n <mat-divider *ngIf=\"!item.path && !item.action\"\n class=\"{{item.cssClass}} {{item.color}}\">\n <mat-label translate>{{item.title}}</mat-label>\n </mat-divider>\n </ng-container>\n </ng-container>\n</mat-menu>\n\n<ion-content>\n\n <form [formGroup]=\"form\" novalidate (ngSubmit)=\"save($event)\" class=\"form-container\">\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n\n <!-- left margin -->\n <ion-col size=\"0\" size-lg=\"2\">&nbsp;\n </ion-col>\n\n <ion-col class=\"ion-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"error\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <p [innerHTML]=\"'SETTINGS.DESCRIPTION'|translate\"></p>\n\n <!-- account inheritance (desktop) -->\n <mat-form-field [hidden]=\"!isLogin\" *ngIf=\"!mobile; else accountInheritanceMobile\">\n <input matInput hidden formControlName=\"accountInheritance\" type=\"text\">\n\n <!-- check box (if desktop) -->\n <mat-checkbox\n *ngIf=\"!mobile; else accountInheritanceMobile\"\n (change)=\"setAccountInheritance($event.checked)\"\n [checked]=\"accountInheritance\">\n <span translate>SETTINGS.INHERIT_FROM_ACCOUNT</span>\n </mat-checkbox>\n\n <mat-error *ngIf=\"form.controls.accountInheritance.hasError('required')\" translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n\n <!-- account inheritance (if mobile) -->\n <ng-template #accountInheritanceMobile>\n <mat-form-field [hidden]=\"!isLogin\">\n <input matInput hidden formControlName=\"accountInheritance\" type=\"text\">\n\n <!-- slide toggle -->\n <ion-text translate>SETTINGS.INHERIT_FROM_ACCOUNT</ion-text>\n <mat-slide-toggle matSuffix\n (change)=\"setAccountInheritance($event.checked)\"\n [checked]=\"accountInheritance\">\n\n </mat-slide-toggle>\n <mat-error *ngIf=\"form.controls.accountInheritance.hasError('required')\" translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n </ng-template>\n\n <!-- locale -->\n <mat-form-field>\n <mat-select [placeholder]=\"'SETTINGS.LOCALE'|translate\" formControlName=\"locale\" required>\n <mat-option *ngFor=\"let item of locales\" [value]=\"item.key\">\n {{item.value}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"form.controls.locale.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Network entry -->\n <h3>\n <ion-text translate>SETTINGS.NETWORK_DIVIDER</ion-text>\n </h3>\n\n <!-- Peer address -->\n <mat-form-field>\n <input matInput type=\"text\" [placeholder]=\"'SETTINGS.PEER_URL'|translate\"\n formControlName=\"peerUrl\"\n required>\n\n <button mat-icon-button type=\"button\" matSuffix (click)=\"showSelectPeerModal()\" tabindex=\"-1\"\n [title]=\"'SETTINGS.BTN_CHANGE_PEER'|translate\">\n <mat-icon>search</mat-icon>\n </button>\n\n <mat-error *ngIf=\"form.controls.peerUrl.hasError('required')\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n <mat-error *ngIf=\"form.controls.peerUrl.hasError('peerAlive')\"\n translate>SETTINGS.ERROR.PEER_NOT_REACHABLE\n </mat-error>\n <mat-error *ngIf=\"form.controls.peerUrl.hasError('peerNotCompatible')\"\n translate>SETTINGS.ERROR.PEER_NOT_COMPATIBLE\n </mat-error>\n </mat-form-field>\n\n <!-- Offline mode (if mobile) -->\n <mat-form-field *ngIf=\"mobile\">\n <input matInput hidden formControlName=\"accountInheritance\" type=\"text\">\n\n <!-- slide toggle -->\n <ion-text translate>SETTINGS.OFFLINE_MODE</ion-text>\n <mat-slide-toggle matSuffix\n (change)=\"network.setForceOffline($event.checked)\"\n [checked]=\"network.offline\">\n\n </mat-slide-toggle>\n </mat-form-field>\n\n <!-- Data entry -->\n <h3>\n <ion-text translate>SETTINGS.DATA_ENTRY_DIVIDER</ion-text>\n </h3>\n\n <!-- Usage mode -->\n <mat-form-field>\n <mat-select [placeholder]=\"'SETTINGS.USAGE_MODE'|translate\" formControlName=\"usageMode\"\n required>\n <mat-option *ngFor=\"let item of usageModes\" [value]=\"item\">\n {{'SETTINGS.USAGE_MODES.'+item|translate}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"form.controls.usageMode.hasError('required')\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n\n <!-- lat/long format-->\n <mat-form-field>\n <mat-select [placeholder]=\"'SETTINGS.LAT_LONG_FORMAT'|translate\" formControlName=\"latLongFormat\"\n required>\n <mat-option *ngFor=\"let item of latLongFormats\" [value]=\"item\">\n {{'COMMON.LAT_LONG.'+item+'_PLACEHOLDER'|translate}}\n </mat-option>\n </mat-select>\n <mat-error\n *ngIf=\"form.controls.latLongFormat.hasError('required')\"\n translate>ERROR.FIELD_REQUIRED\n </mat-error>\n </mat-form-field>\n\n <!-- fields options -->\n <ion-grid formArrayName=\"properties\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding ion-align-self-end\" size=\"12\">\n <span class=\"toolbar-spacer\"></span>\n\n <!-- Show more options -->\n <ion-button color=\"light\" *ngIf=\"propertiesForm?.length === 0\"\n [title]=\"'SETTINGS.BTN_SHOW_MORE_HELP'|translate\"\n (click)=\"propertiesFormHelper.add()\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n\n <!-- Fields options -->\n <ng-container *ngFor=\"let propertyForm of propertiesForm?.controls; let i=index\">\n <ion-row class=\"ion-no-padding\" [formGroupName]=\"i\">\n\n <!-- property key -->\n <ion-col class=\"ion-no-padding\">\n <mat-form-field>\n <mat-select formControlName=\"key\"\n [placeholder]=\" 'SETTINGS.PROPERTY_KEY'|translate\">\n <mat-option *ngFor=\"let item of propertyDefinitions\" [value]=\"item.key\">{{ item.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <!-- property value -->\n <ion-col class=\"ion-no-padding\" padding-left>\n <app-form-field *ngIf=\"getPropertyDefinition(i); let definition\"\n floatLabel=\"never\"\n [definition]=\"definition\"\n [formControl]=\"propertyForm|formGetControl:'value'\"\n [placeholder]=\"'SETTINGS.PROPERTY_VALUE' | translate\"\n [required]=\"true\">\n </app-form-field>\n </ion-col>\n <ion-col size=\"2\" class=\"ion-no-padding\">\n <button type=\"button\" mat-icon-button color=\"light\"\n [disabled]=\"loading\"\n [title]=\"'COMMON.BTN_DELETE'|translate\"\n (click)=\"removePropertyAt(i)\">\n <mat-icon>close</mat-icon>\n </button>\n <button *ngIf=\"propertiesFormHelper.isLast(i)\"\n type=\"button\"\n mat-icon-button\n color=\"light\"\n [disabled]=\"loading\"\n [title]=\"'SETTINGS.BTN_ADD_PROPERTY'|translate\"\n (click)=\"propertiesFormHelper.add()\">\n <mat-icon>add</mat-icon>\n </button>\n </ion-col>\n </ion-row>\n </ng-container>\n </ion-grid>\n </ion-col>\n\n <!-- right margin -->\n <ion-col size=\"0\" size-lg=\"2\">&nbsp;\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n </form>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <app-form-buttons-bar (onCancel)=\"cancel()\" (onSave)=\"save($event)\" [disabled]=\"!form.dirty || saving\"></app-form-buttons-bar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i10.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i15.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i15.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i15.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i16.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i17.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i18.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i19.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i20.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "component", type: i21.AppFormField, selector: "app-form-field", inputs: ["definition", "required", "readonly", "disabled", "formControl", "formControlName", "placeholder", "compact", "floatLabel", "tabindex", "autofocus", "clearable", "chipColor", "debug", "class"], outputs: ["keyup.enter"] }, { kind: "component", type: i22.FormButtonsBarComponent, selector: "app-form-buttons-bar", inputs: ["disabled", "disabledCancel", "classList"], outputs: ["onCancel", "onSave", "onNext", "onBack"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i23.FormGetControlPipe, name: "formGetControl" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
298
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SettingsPage, decorators: [{
298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsPage, decorators: [{
299
299
  type: Component,
300
300
  args: [{ selector: 'page-settings', providers: [
301
301
  { provide: ValidatorService, useExisting: LocalSettingsValidatorService },
@@ -309,4 +309,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
309
309
  type: Inject,
310
310
  args: [APP_SETTINGS_MENU_ITEMS]
311
311
  }] }]; } });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXR0aW5ncy9zZXR0aW5ncy5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NldHRpbmdzL3NldHRpbmdzLnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUErQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQXlDLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFFLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWpFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBRzdGLE9BQU8sRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0IsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTTNDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFhLG1CQUFtQixDQUFDLENBQUM7QUFVM0YsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFzQjtJQTRCdEQsWUFDRSxRQUFrQixFQUNS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QUFxRCxZQUFZLENBQUMsTUFBTSxzQkFBc0IsWUFBWSxDQUFDLGFBQWEsT0FBTyxDQUFDLENBQUM7WUFDL0ksSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDdkU7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7OzBHQXZVVSxZQUFZLHFYQXdDYixXQUFXLGFBQ0MsdUJBQXVCOzhGQXpDbEMsWUFBWSx3Q0FMWjtRQUNULEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSw2QkFBNkIsRUFBQztLQUN4RSxpREMvQkgscThWQXdRQTs0RkR0T2EsWUFBWTtrQkFSeEIsU0FBUzsrQkFDRSxlQUFlLGFBRWQ7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFDO3FCQUN4RSxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBMEM1QyxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7RW50aXR5VXRpbHN9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0FQUF9MT0NBTEVTLCBMb2NhbGVDb25maWcsIExvY2FsU2V0dGluZ3MsIFVzYWdlTW9kZX0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHtQZWVyfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9wZWVyLm1vZGVsJztcbmltcG9ydCB7VW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QXBwRm9ybX0gZnJvbSAnLi4vZm9ybS9mb3JtLmNsYXNzJztcbmltcG9ydCB7QXBwRm9ybVV0aWxzLCBGb3JtQXJyYXlIZWxwZXJ9IGZyb20gJy4uL2Zvcm0vZm9ybS51dGlscyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHtMb2NhbFNldHRpbmdzVmFsaWRhdG9yU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvdmFsaWRhdG9yL2xvY2FsLXNldHRpbmdzLnZhbGlkYXRvcic7XG5pbXBvcnQge1BsYXRmb3JtU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtpc05pbCwgaXNOaWxPckJsYW5rLCB0b0Jvb2xlYW59IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtMb2NhbFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0Zvcm1GaWVsZERlZmluaXRpb24sIEZvcm1GaWVsZERlZmluaXRpb25NYXB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7QWxlcnRzfSBmcm9tICcuLi8uLi9zaGFyZWQvYWxlcnRzJztcbmltcG9ydCB7UHJvcGVydHl9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge0NhbkxlYXZlfSBmcm9tICcuLi8uLi9zaGFyZWQvZ3VhcmQvY29tcG9uZW50LWRpcnR5Lmd1YXJkJztcbmltcG9ydCB7SVNlbGVjdFBlZXJNb2RhbE9wdGlvbnN9IGZyb20gJy4uL3BlZXIvc2VsZWN0LXBlZXIubW9kYWwnO1xuaW1wb3J0IHtNZW51SXRlbX0gZnJvbSAnLi4vbWVudS9tZW51Lm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IEFQUF9TRVRUSU5HU19NRU5VX0lURU1TID0gbmV3IEluamVjdGlvblRva2VuPE1lbnVJdGVtW10+KCdzZXR0aW5nc01lbnVJdGVtcycpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYWdlLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICdzZXR0aW5ncy5wYWdlLmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogVmFsaWRhdG9yU2VydmljZSwgdXNlRXhpc3Rpbmc6IExvY2FsU2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NQYWdlIGV4dGVuZHMgQXBwRm9ybTxMb2NhbFNldHRpbmdzPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDYW5MZWF2ZSB7XG5cbiAgcHJpdmF0ZSBkYXRhOiBMb2NhbFNldHRpbmdzO1xuXG4gIG1vYmlsZTogYm9vbGVhbjtcbiAgc2F2aW5nID0gZmFsc2U7XG4gIHVzYWdlTW9kZXM6IFVzYWdlTW9kZVtdID0gWydGSUVMRCcsICdERVNLJ107XG4gIG1lbnVJdGVtczogTWVudUl0ZW1bXTtcblxuICBwcm9wZXJ0eURlZmluaXRpb25zOiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIHByb3BlcnR5RGVmaW5pdGlvbnNCeUtleTogRm9ybUZpZWxkRGVmaW5pdGlvbk1hcCA9IHt9O1xuICBwcm9wZXJ0eURlZmluaXRpb25zQnlJbmRleDogeyBbaW5kZXg6IG51bWJlcl06IEZvcm1GaWVsZERlZmluaXRpb24gfSA9IHt9O1xuICBwcm9wZXJ0aWVzRm9ybUhlbHBlcjogRm9ybUFycmF5SGVscGVyPFByb3BlcnR5PjtcblxuICBsYXRMb25nRm9ybWF0cyA9IFsnRERNTVNTJywgJ0RETU0nLCAnREQnXTtcblxuICBnZXQgYWNjb3VudEluaGVyaXRhbmNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2FjY291bnRJbmhlcml0YW5jZSddLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTG9naW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudFNlcnZpY2UuaXNMb2dpbigpO1xuICB9XG5cbiAgZ2V0IHByb3BlcnRpZXNGb3JtKCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdwcm9wZXJ0aWVzJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdG9yU2VydmljZTogTG9jYWxTZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIEBJbmplY3QoQVBQX0xPQ0FMRVMpIHB1YmxpYyBsb2NhbGVzOiBMb2NhbGVDb25maWdbXSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9TRVRUSU5HU19NRU5VX0lURU1TKSBtZW51SXRlbXM/OiBNZW51SXRlbVtdXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLCB2YWxpZGF0b3JTZXJ2aWNlLmdldEZvcm1Hcm91cCgpKTtcblxuICAgIHRoaXMucHJvcGVydGllc0Zvcm1IZWxwZXIgPSBuZXcgRm9ybUFycmF5SGVscGVyPFByb3BlcnR5PihcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb3BlcnRpZXMnKSBhcyBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgKHZhbHVlKSA9PiB0aGlzLnZhbGlkYXRvclNlcnZpY2UuZ2V0UHJvcGVydHlGb3JtR3JvdXAodmFsdWUpLFxuICAgICAgKHYxLCB2MikgPT4gKCF2MSAmJiAhdjIpIHx8ICh2MS5rZXkgPT09IHYyLmtleSksXG4gICAgICAodmFsdWUpID0+ICBpc05pbCh2YWx1ZSkgfHwgKGlzTmlsKHZhbHVlLmtleSkgJiYgaXNOaWwodmFsdWUudmFsdWUpKSxcbiAgICAgIHtcbiAgICAgICAgYWxsb3dFbXB0eUFycmF5OiB0cnVlXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMubWVudUl0ZW1zID0gbWVudUl0ZW1zIHx8IFtdO1xuICAgIHRoaXMubW9iaWxlID0gdGhpcy5wbGF0Zm9ybS5tb2JpbGU7XG5cbiAgICAvLyBCeSBkZWZhdWx0LCBkaXNhYmxlIHRoZSBmb3JtXG4gICAgdGhpcy5fZW5hYmxlID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHBsYXRmb3JtIGlzIHJlYWR5XG4gICAgYXdhaXQgdGhpcy5wbGF0Zm9ybS5yZWFkeSgpO1xuXG4gICAgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zID0gdGhpcy5zZXR0aW5ncy5vcHRpb25EZWZzLnNsaWNlKCk7IC8vIGNvcHkgb3B0aW9uc1xuICAgIHRoaXMucHJvcGVydHlEZWZpbml0aW9ucy5mb3JFYWNoKG8gPT4gdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zQnlLZXlbby5rZXldID0gbyk7IC8vIGZpbGwgbWFwXG5cbiAgICAvLyBMb2FkIHNldHRpbmdzXG4gICAgYXdhaXQgdGhpcy5sb2FkKCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgbWVyZ2UoXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpbixcbiAgICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ291dFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldEFjY291bnRJbmhlcml0YW5jZSh0aGlzLmFjY291bnRJbmhlcml0YW5jZSkpKTtcbiAgfVxuXG4gIGdldFByb3BlcnR5RGVmaW5pdGlvbihpbmRleDogbnVtYmVyKTogRm9ybUZpZWxkRGVmaW5pdGlvbiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4W2luZGV4XTtcbiAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgIGRlZmluaXRpb24gPSB0aGlzLnVwZGF0ZVByb3BlcnR5RGVmaW5pdGlvbihpbmRleCk7XG4gICAgICB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4W2luZGV4XSA9IGRlZmluaXRpb247XG4gICAgfVxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgdXBkYXRlUHJvcGVydHlEZWZpbml0aW9uKGluZGV4OiBudW1iZXIpOiBGb3JtRmllbGREZWZpbml0aW9uIHtcbiAgICBjb25zdCBrZXkgPSAodGhpcy5wcm9wZXJ0aWVzRm9ybS5hdChpbmRleCkgYXMgVW50eXBlZEZvcm1Hcm91cCkuY29udHJvbHMua2V5LnZhbHVlO1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBrZXkgJiYgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zQnlLZXlba2V5XSB8fCBudWxsO1xuICAgIHRoaXMucHJvcGVydHlEZWZpbml0aW9uc0J5SW5kZXhbaW5kZXhdID0gZGVmaW5pdGlvbjsgLy8gdXBkYXRlIG1hcCBieSBpbmRleFxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICByZW1vdmVQcm9wZXJ0eUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtSGVscGVyLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4ID0ge307IC8vIGNsZWFyIGNhY2hlIGJ5IGluZGV4XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcbiAgICBjb25zb2xlLmRlYnVnKCdbc2V0dGluZ3NdIExvYWRpbmcgc2V0dGluZ3MuLi4nKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNldHRpbmdzLnNldHRpbmdzO1xuXG4gICAgLy8gU2V0IGRlZmF1bHRzXG4gICAgZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UgPSB0b0Jvb2xlYW4oZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UsIHRydWUpO1xuICAgIGRhdGEubG9jYWxlID0gZGF0YS5sb2NhbGUgfHwgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgfHwgdGhpcy50cmFuc2xhdGUuZGVmYXVsdExhbmc7XG4gICAgZGF0YS5sYXRMb25nRm9ybWF0ID0gZGF0YS5sYXRMb25nRm9ybWF0IHx8ICdERE1NU1MnO1xuICAgIGRhdGEudXNhZ2VNb2RlID0gZGF0YS51c2FnZU1vZGUgfHwgJ0RFU0snO1xuXG4gICAgLy8gU2V0IHBlZXJcbiAgICBpZiAoaXNOaWxPckJsYW5rKGRhdGEucGVlclVybCkpIHtcbiAgICAgIGF3YWl0IHRoaXMubmV0d29yay5yZWFkeSgpO1xuICAgICAgY29uc3QgcGVlciA9IHRoaXMubmV0d29yay5wZWVyO1xuICAgICAgZGF0YS5wZWVyVXJsID0gcGVlciAmJiBwZWVyLnVybDtcbiAgICB9XG5cbiAgICAvLyBSZW1lbWJlciBkYXRhXG4gICAgdGhpcy51cGRhdGVWaWV3KGRhdGEpO1xuICB9XG5cbiAgdXBkYXRlVmlldyhkYXRhOiBMb2NhbFNldHRpbmdzKSB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm47IC8vc2tpcFxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG5cbiAgICBjb25zdCBqc29uOiBhbnkgPSB7Li4uZGF0YX07XG5cbiAgICAvLyBUcmFuc2Zvcm0gcHJvcGVydGllcyBtYXAgaW50byBhcnJheVxuICAgIGpzb24ucHJvcGVydGllcyA9IEVudGl0eVV0aWxzLmdldE1hcEFzQXJyYXkoZGF0YS5wcm9wZXJ0aWVzIHx8IHt9KTtcbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtSGVscGVyLnJlc2l6ZShqc29uLnByb3BlcnRpZXMubGVuZ3RoKTtcblxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKGpzb24sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuXG4gICAgdGhpcy5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgIC8vIEFwcGx5IGluaGVyaXRhbmNlXG4gICAgdGhpcy5zZXRBY2NvdW50SW5oZXJpdGFuY2UoZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBhc3luYyBzYXZlKGV2ZW50PzogRXZlbnQsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgaWYgKGV2ZW50KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAvLyBSZW1vdmUgYWxsIGVtcHR5IGNvbnRyb2xzXG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybUhlbHBlci5yZW1vdmVBbGxFbXB0eSgpO1xuXG4gICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIGF3YWl0IEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMuZm9ybSk7XG5cbiAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICBBcHBGb3JtVXRpbHMubG9nRm9ybUVycm9ycyh0aGlzLmZvcm0pO1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygnW3NldHRpbmdzXSBTYXZpbmcgbG9jYWwgc2V0dGluZ3MuLi4nKTtcblxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpO1xuXG4gICAgLy8gQ2hlY2sgcGVlciBhbGl2ZSwgYmVmb3JlIHNhdmluZ1xuICAgIGNvbnN0IHBlZXJDaGFuZ2VkID0gdGhpcy5mb3JtLmdldCgncGVlclVybCcpLmRpcnR5O1xuXG4gICAgLy8gQ2xlYW4gcGFnZSBoaXN0b3J5LCB3aGVuIHBlZXIgY2hhbmdlZFxuICAgIGlmIChwZWVyQ2hhbmdlZCkgZGF0YS5wYWdlSGlzdG9yeSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLmFwcGx5KGRhdGEpO1xuICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcblxuICAgICAgLy8gSWYgcGVlciBjaGFuZ2VkXG4gICAgICBpZiAocGVlckNoYW5nZWQpIHtcbiAgICAgICAgLy8gUmVzdGFydCB0aGUgbmV0d29ya1xuICAgICAgICB0aGlzLm5ldHdvcmsucGVlciA9IFBlZXIucGFyc2VVcmwoZGF0YS5wZWVyVXJsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB0aGlzLmVycm9yID0gZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycjtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgICAgLy8gQXBwbHkgaW5oZXJpdGFuY2VcbiAgICAgIHRoaXMuc2V0QWNjb3VudEluaGVyaXRhbmNlKGRhdGEuYWNjb3VudEluaGVyaXRhbmNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICAvLyBBZGQgYSBkZWxheSwgYmVjYXVzZSBvZiBvcHRpb24gbWVudSB0aGF0IGlzIGFsd2F5cyBvcGVuZWQgYWZ0ZXIgc2F2ZSEhXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sIDQwMCk7XG4gICAgfVxuICB9XG5cblxuICBzZXRBY2NvdW50SW5oZXJpdGFuY2UoZW5hYmxlOiBib29sZWFuLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICAvLyBNYWtlIHN1cmUgdG8gdXBkYXRlIHRoZSB2YWx1ZSBpbiBjb250cm9sXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzWydhY2NvdW50SW5oZXJpdGFuY2UnXS5zZXRWYWx1ZShlbmFibGUsIG9wdHMpO1xuICAgIGlmICh0aGlzLmRhdGEuYWNjb3VudEluaGVyaXRhbmNlICE9PSBlbmFibGUpIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1snYWNjb3VudEluaGVyaXRhbmNlJ10ubWFya0FzRGlydHkoe29ubHlTZWxmOiBmYWxzZX0pO1xuICAgIH1cblxuICAgIGlmIChlbmFibGUpIHtcbiAgICAgIGlmICh0aGlzLmlzTG9naW4pIHtcbiAgICAgICAgLy8gRm9yY2UgdXNpbmcgYWNjb3VudCBzZXR0aW5nc1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gdGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50O1xuXG4gICAgICAgIC8vIENvcHkgdmFsdWVzXG4gICAgICAgIGlmIChhY2NvdW50LnNldHRpbmdzKSB7XG4gICAgICAgICAgaWYgKGFjY291bnQuc2V0dGluZ3MubG9jYWxlKSB0aGlzLmZvcm0uZ2V0KCdsb2NhbGUnKS5zZXRWYWx1ZShhY2NvdW50LnNldHRpbmdzLmxvY2FsZSwgb3B0cyk7XG4gICAgICAgICAgaWYgKGFjY291bnQuc2V0dGluZ3MubGF0TG9uZ0Zvcm1hdCkgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLnNldFZhbHVlKGFjY291bnQuc2V0dGluZ3MubGF0TG9uZ0Zvcm1hdCwgb3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGlzYWJsZSBmaWVsZHNcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbG9jYWxlJykuZGlzYWJsZShvcHRzKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLmRpc2FibGUob3B0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFbmFibGUgZmllbGRzXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2FsZScpLmVuYWJsZShvcHRzKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLmVuYWJsZShvcHRzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVzdG9yZSBwcmV2aW91cyB2YWx1ZXNcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2FsZScpLnNldFZhbHVlKHRoaXMuZGF0YS5sb2NhbGUsIG9wdHMpO1xuICAgICAgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLnNldFZhbHVlKHRoaXMuZGF0YS5sYXRMb25nRm9ybWF0LCBvcHRzKTtcblxuICAgICAgLy8gRW5hYmxlIGZpZWxkc1xuICAgICAgdGhpcy5mb3JtLmdldCgnbG9jYWxlJykuZW5hYmxlKG9wdHMpO1xuICAgICAgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLmVuYWJsZShvcHRzKTtcbiAgICB9XG5cbiAgICAvLyBNYXJrIGZvciBjaGVjaywgaWYgbmVlZFxuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCkge1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaG93U2VsZWN0UGVlck1vZGFsKG9wdHM/OiBQYXJ0aWFsPElTZWxlY3RQZWVyTW9kYWxPcHRpb25zPikge1xuICAgIGNvbnN0IHBlZXIgPSBhd2FpdCB0aGlzLm5ldHdvcmsuc2hvd1NlbGVjdFBlZXJNb2RhbCh7XG4gICAgICBzaG93U2V0TWFudWFsbHlCdXR0b246IGZhbHNlLCAvLyBNYWtlIG5vIHNlbnNlIGhlcmUsIGJlY2F1c2Ugc2FtZSBhcyBjYW5jZWwgKGFscmVhZHkgaW5zaWRlIHRoZSBzZXR0aW5ncyBwYWdlKVxuICAgICAgLi4ub3B0c30pO1xuICAgIGlmIChwZWVyPy51cmwpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdwZWVyVXJsJykgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICAgICAgY29udHJvbC5zZXRWYWx1ZShwZWVyLnVybCwge2VtaXRFdmVudDogdHJ1ZSwgb25seVNlbGY6IGZhbHNlfSk7XG4gICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHtvbmx5U2VsZjogZmFsc2V9KTtcbiAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjYW5jZWwoZXZlbnQ/OiBFdmVudCkge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmICh0aGlzLnNhdmluZykgcmV0dXJuO1xuXG4gICAgLy8gQmFjayB0byBob21lXG4gICAgcmV0dXJuIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoJy8nKTsgLy8gYmFjayB0byBob21lXG4gIH1cblxuICBhc3luYyBjbGVhckNhY2hlKGV2ZW50PzogRXZlbnQpIHtcbiAgICBjb25zdCBjb25maXJtID0gYXdhaXQgQWxlcnRzLmFza0FjdGlvbkNvbmZpcm1hdGlvbih0aGlzLmFsZXJ0Q3RybCwgdGhpcy50cmFuc2xhdGUsIHRydWUsIGV2ZW50KTtcbiAgICBpZiAoY29uZmlybSkge1xuICAgICAgYXdhaXQgdGhpcy5uZXR3b3JrLmNsZWFyQ2FjaGUoKTtcbiAgICAgIHRoaXMuc2V0dGluZ3MucmVtb3ZlT2ZmbGluZUZlYXR1cmVzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZUFjdGlvbihldmVudDogRXZlbnQsIGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm47XG4gICAgaWYgKGV2ZW50Py5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47XG5cbiAgICBpZiAoaXRlbS5wYXRoKSB7XG4gICAgICBhd2FpdCB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVGb3J3YXJkKGl0ZW0ucGF0aCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignW3NldHRpbmdzXSBVbmtub3duIGl0ZW0gdHlwZSAobm8gcGF0aCknLCBpdGVtKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgZnVuY3Rpb25zIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldFZhbHVlKCk6IFByb21pc2U8TG9jYWxTZXR0aW5ncz4ge1xuICAgIGNvbnN0IGpzb24gPSBhd2FpdCB0aGlzLmdldEpzb25WYWx1ZVRvU2F2ZSgpO1xuXG4gICAgLy8gT3ZlcnJpZGUgcHJvcGVydGllcyBmcm9tIGFjY291bnRcbiAgICBpZiAoanNvbi5hY2NvdW50SW5oZXJpdGFuY2UgJiYgdGhpcy5pc0xvZ2luKSB7XG4gICAgICBjb25zdCBhY2NvdW50ID0gdGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50O1xuICAgICAgY29uc3QgdXNlclNldHRpbmdzID0gYWNjb3VudCAmJiBhY2NvdW50LnNldHRpbmdzO1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW3NldHRpbmdzXSBBcHBseWluZyBhY2NvdW50IGluaGVyaXRhbmNlIHtsb2NhbGU6ICcke3VzZXJTZXR0aW5ncy5sb2NhbGV9JywgbGF0TG9uZ0Zvcm1hdDogJyR7dXNlclNldHRpbmdzLmxhdExvbmdGb3JtYXR9J30uLi5gKTtcbiAgICAgIGpzb24ubG9jYWxlID0gdXNlclNldHRpbmdzLmxvY2FsZSB8fCBqc29uLmxvY2FsZTtcbiAgICAgIGpzb24ubGF0TG9uZ0Zvcm1hdCA9IHVzZXJTZXR0aW5ncy5sYXRMb25nRm9ybWF0IHx8IGpzb24ubGF0TG9uZ0Zvcm1hdDtcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRKc29uVmFsdWVUb1NhdmUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIGpzb24ucHJvcGVydGllcyA9IEVudGl0eVV0aWxzLmdldFByb3BlcnR5QXJyYXlBc09iamVjdChqc29uLnByb3BlcnRpZXMpO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShqc29uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG5cbn1cbiIsIjxhcHAtdG9vbGJhciBbdGl0bGVdPVwiJ1NFVFRJTkdTLlRJVExFJ3x0cmFuc2xhdGVcIiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgIFtoYXNWYWxpZGF0ZV09XCJkaXJ0eSAmJiAhc2F2aW5nXCJcbiAgICAgICAgICAgICBbaGFzQ2xvc2VdPVwiIWRpcnR5ICYmICFzYXZpbmdcIlxuICAgICAgICAgICAgIChvblZhbGlkYXRlKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgKG9uQ2xvc2UpPVwiY2xvc2UoJGV2ZW50KVwiPlxuXG4gIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgPCEtLSBvcHRpb25zIG1lbnUgLS0+XG4gICAgPGlvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm9wdGlvbnNNZW51XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFzYXZpbmdcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzYXZpbmdcIj5cbiAgICAgIDxtYXQtaWNvbiBzbG90PVwiaWNvbi1vbmx5XCI+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICA8L2lvbi1idXR0b24+XG4gIDwvaW9uLWJ1dHRvbnM+XG48L2FwcC10b29sYmFyPlxuXG48IS0tIE9wdGlvbnMgbWVudSAtLT5cbjxtYXQtbWVudSAjb3B0aW9uc01lbnU9XCJtYXRNZW51XCI+XG4gIDwhLS0gQ2xlYXIgY2FjaGUgLS0+XG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2xlYXJDYWNoZSgkZXZlbnQpXCI+XG4gICAgPG1hdC1pY29uPjxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiPjwvaW9uLWljb24+PC9tYXQtaWNvbj5cbiAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5TRVRUSU5HUy5CVE5fQ0xFQVJfQ0FDSEU8L2lvbi1sYWJlbD5cbiAgPC9idXR0b24+XG5cbiAgPCEtLSBSZXNldCAtLT5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFkaXJ0eVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgkZXZlbnQpXCI+XG4gICAgPG1hdC1pY29uPjxpb24taWNvbiBuYW1lPVwicmVmcmVzaFwiPjwvaW9uLWljb24+PC9tYXQtaWNvbj5cbiAgICA8bWF0LWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX1JFU0VUPC9tYXQtbGFiZWw+XG4gIDwvYnV0dG9uPlxuXG4gIDwhLS0gYWRkaXRpb25hbCBpdGVtcyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZW51SXRlbXNcIj5cbiAgICAgIDxhICpuZ0lmPVwiaXRlbS5wYXRoXCJcbiAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgIGNsYXNzPVwie3tpdGVtLmNzc0NsYXNzfX0ge3tpdGVtLmNvbG9yfX1cIlxuICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVBY3Rpb24oJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLmljb25cIj48aW9uLWljb24gW25hbWVdPVwiaXRlbS5pY29uXCI+PC9pb24taWNvbj48L21hdC1pY29uPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLm1hdEljb25cIj57e2l0ZW0ubWF0SWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1sYWJlbCB0cmFuc2xhdGU+e3tpdGVtLnRpdGxlfX08L21hdC1sYWJlbD5cbiAgICAgIDwvYT5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cIiFpdGVtLnBhdGggJiYgIWl0ZW0uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7aXRlbS5jc3NDbGFzc319IHt7aXRlbS5jb2xvcn19XCI+XG4gICAgICAgIDxtYXQtbGFiZWwgdHJhbnNsYXRlPnt7aXRlbS50aXRsZX19PC9tYXQtbGFiZWw+XG4gICAgICA8L21hdC1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LW1lbnU+XG5cbjxpb24tY29udGVudD5cblxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKCRldmVudClcIiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XG5cbiAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuXG4gICAgICAgIDwhLS0gbGVmdCAgbWFyZ2luIC0tPlxuICAgICAgICA8aW9uLWNvbCBzaXplPVwiMFwiIHNpemUtbGc9XCIyXCI+Jm5ic3A7XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG5cbiAgICAgICAgICA8IS0tIGVycm9yIC0tPlxuICAgICAgICAgIDxpb24taXRlbSAqbmdJZj1cImVycm9yXCIgbGluZXM9XCJub25lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuXG4gICAgICAgICAgPHAgW2lubmVySFRNTF09XCInU0VUVElOR1MuREVTQ1JJUFRJT04nfHRyYW5zbGF0ZVwiPjwvcD5cblxuICAgICAgICAgIDwhLS0gYWNjb3VudCBpbmhlcml0YW5jZSAoZGVza3RvcCkgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtoaWRkZW5dPVwiIWlzTG9naW5cIiAqbmdJZj1cIiFtb2JpbGU7IGVsc2UgYWNjb3VudEluaGVyaXRhbmNlTW9iaWxlXCI+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIGZvcm1Db250cm9sTmFtZT1cImFjY291bnRJbmhlcml0YW5jZVwiIHR5cGU9XCJ0ZXh0XCI+XG5cbiAgICAgICAgICAgIDwhLS0gY2hlY2sgYm94IChpZiBkZXNrdG9wKSAtLT5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgKm5nSWY9XCIhbW9iaWxlOyBlbHNlIGFjY291bnRJbmhlcml0YW5jZU1vYmlsZVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0QWNjb3VudEluaGVyaXRhbmNlKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFjY291bnRJbmhlcml0YW5jZVwiPlxuICAgICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+U0VUVElOR1MuSU5IRVJJVF9GUk9NX0FDQ09VTlQ8L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cblxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuYWNjb3VudEluaGVyaXRhbmNlLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBhY2NvdW50IGluaGVyaXRhbmNlIChpZiBtb2JpbGUpIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWNjb3VudEluaGVyaXRhbmNlTW9iaWxlPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtoaWRkZW5dPVwiIWlzTG9naW5cIj5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGhpZGRlbiBmb3JtQ29udHJvbE5hbWU9XCJhY2NvdW50SW5oZXJpdGFuY2VcIiB0eXBlPVwidGV4dFwiPlxuXG4gICAgICAgICAgICAgIDwhLS0gc2xpZGUgdG9nZ2xlICAtLT5cbiAgICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5JTkhFUklUX0ZST01fQUNDT1VOVDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldEFjY291bnRJbmhlcml0YW5jZSgkZXZlbnQuY2hlY2tlZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhY2NvdW50SW5oZXJpdGFuY2VcIj5cblxuICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmFjY291bnRJbmhlcml0YW5jZS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDwhLS0gbG9jYWxlIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU0VUVElOR1MuTE9DQUxFJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJsb2NhbGVcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9jYWxlc1wiIFt2YWx1ZV09XCJpdGVtLmtleVwiPlxuICAgICAgICAgICAgICAgIHt7aXRlbS52YWx1ZX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmxvY2FsZS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIE5ldHdvcmsgZW50cnkgLS0+XG4gICAgICAgICAgPGgzPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5ORVRXT1JLX0RJVklERVI8L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaDM+XG5cbiAgICAgICAgICA8IS0tIFBlZXIgYWRkcmVzcyAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwiJ1NFVFRJTkdTLlBFRVJfVVJMJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBlZXJVcmxcIlxuICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0U3VmZml4IChjbGljayk9XCJzaG93U2VsZWN0UGVlck1vZGFsKClcIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fQ0hBTkdFX1BFRVInfHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5wZWVyVXJsLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLnBlZXJVcmwuaGFzRXJyb3IoJ3BlZXJBbGl2ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPlNFVFRJTkdTLkVSUk9SLlBFRVJfTk9UX1JFQUNIQUJMRVxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5wZWVyVXJsLmhhc0Vycm9yKCdwZWVyTm90Q29tcGF0aWJsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPlNFVFRJTkdTLkVSUk9SLlBFRVJfTk9UX0NPTVBBVElCTEVcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIE9mZmxpbmUgbW9kZSAoaWYgbW9iaWxlKSAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJtb2JpbGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4gZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudEluaGVyaXRhbmNlXCIgdHlwZT1cInRleHRcIj5cblxuICAgICAgICAgICAgPCEtLSBzbGlkZSB0b2dnbGUgIC0tPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5PRkZMSU5FX01PREU8L2lvbi10ZXh0PlxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm5ldHdvcmsuc2V0Rm9yY2VPZmZsaW5lKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJuZXR3b3JrLm9mZmxpbmVcIj5cblxuICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIERhdGEgZW50cnkgLS0+XG4gICAgICAgICAgPGgzPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5EQVRBX0VOVFJZX0RJVklERVI8L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaDM+XG5cbiAgICAgICAgICA8IS0tIFVzYWdlIG1vZGUgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidTRVRUSU5HUy5VU0FHRV9NT0RFJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2FnZU1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHVzYWdlTW9kZXNcIiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgIHt7J1NFVFRJTkdTLlVTQUdFX01PREVTLicraXRlbXx0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy51c2FnZU1vZGUuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIGxhdC9sb25nIGZvcm1hdC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU0VUVElOR1MuTEFUX0xPTkdfRk9STUFUJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXRMb25nRm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXRMb25nRm9ybWF0c1wiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAge3snQ09NTU9OLkxBVF9MT05HLicraXRlbSsnX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yXG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5jb250cm9scy5sYXRMb25nRm9ybWF0Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBmaWVsZHMgb3B0aW9ucyAtLT5cbiAgICAgICAgICA8aW9uLWdyaWQgZm9ybUFycmF5TmFtZT1cInByb3BlcnRpZXNcIiBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmcgaW9uLWFsaWduLXNlbGYtZW5kXCIgc2l6ZT1cIjEyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sYmFyLXNwYWNlclwiPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDwhLS0gU2hvdyBtb3JlIG9wdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gY29sb3I9XCJsaWdodFwiICpuZ0lmPVwicHJvcGVydGllc0Zvcm0/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fU0hPV19NT1JFX0hFTFAnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByb3BlcnRpZXNGb3JtSGVscGVyLmFkZCgpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX1NIT1dfTU9SRTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJlbmRcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPC9pb24tcm93PlxuXG4gICAgICAgICAgICA8IS0tIEZpZWxkcyBvcHRpb25zIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcGVydHlGb3JtIG9mIHByb3BlcnRpZXNGb3JtPy5jb250cm9sczsgbGV0IGk9aW5kZXhcIj5cbiAgICAgICAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cblxuICAgICAgICAgICAgICAgIDwhLS0gcHJvcGVydHkga2V5IC0tPlxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIiAnU0VUVElOR1MuUFJPUEVSVFlfS0VZJ3x0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9wZXJ0eURlZmluaXRpb25zXCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgICAgICA8IS0tIHByb3BlcnR5IHZhbHVlIC0tPlxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBwYWRkaW5nLWxlZnQ+XG4gICAgICAgICAgICAgICAgICA8YXBwLWZvcm0tZmllbGQgKm5nSWY9XCJnZXRQcm9wZXJ0eURlZmluaXRpb24oaSk7IGxldCBkZWZpbml0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdExhYmVsPVwibmV2ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZpbml0aW9uXT1cImRlZmluaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwcm9wZXJ0eUZvcm18Zm9ybUdldENvbnRyb2w6J3ZhbHVlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRVRUSU5HUy5QUk9QRVJUWV9WQUxVRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8L2FwcC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMlwiIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fREVMRVRFJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUHJvcGVydHlBdChpKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicHJvcGVydGllc0Zvcm1IZWxwZXIuaXNMYXN0KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fQUREX1BST1BFUlRZJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvcGVydGllc0Zvcm1IZWxwZXIuYWRkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8IS0tIHJpZ2h0IG1hcmdpbiAtLT5cbiAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjBcIiBzaXplLWxnPVwiMlwiPiZuYnNwO1xuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tZ3JpZD5cblxuXG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGFwcC1mb3JtLWJ1dHRvbnMtYmFyIChvbkNhbmNlbCk9XCJjYW5jZWwoKVwiIChvblNhdmUpPVwic2F2ZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIiFmb3JtLmRpcnR5IHx8IHNhdmluZ1wiPjwvYXBwLWZvcm0tYnV0dG9ucy1iYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXR0aW5ncy9zZXR0aW5ncy5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NldHRpbmdzL3NldHRpbmdzLnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUErQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQXlDLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFFLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWpFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBRzdGLE9BQU8sRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0IsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTTNDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFhLG1CQUFtQixDQUFDLENBQUM7QUFVM0YsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFzQjtJQTRCdEQsWUFDRSxRQUFrQixFQUNS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QUFxRCxZQUFZLENBQUMsTUFBTSxzQkFBc0IsWUFBWSxDQUFDLGFBQWEsT0FBTyxDQUFDLENBQUM7WUFDL0ksSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDdkU7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7O3lHQXZVVSxZQUFZLHFYQXdDYixXQUFXLGFBQ0MsdUJBQXVCOzZGQXpDbEMsWUFBWSx3Q0FMWjtRQUNULEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSw2QkFBNkIsRUFBQztLQUN4RSxpREMvQkgscThWQXdRQTsyRkR0T2EsWUFBWTtrQkFSeEIsU0FBUzsrQkFDRSxlQUFlLGFBRWQ7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFDO3FCQUN4RSxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBMEM1QyxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7RW50aXR5VXRpbHN9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0FQUF9MT0NBTEVTLCBMb2NhbGVDb25maWcsIExvY2FsU2V0dGluZ3MsIFVzYWdlTW9kZX0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHtQZWVyfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9wZWVyLm1vZGVsJztcbmltcG9ydCB7VW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QXBwRm9ybX0gZnJvbSAnLi4vZm9ybS9mb3JtLmNsYXNzJztcbmltcG9ydCB7QXBwRm9ybVV0aWxzLCBGb3JtQXJyYXlIZWxwZXJ9IGZyb20gJy4uL2Zvcm0vZm9ybS51dGlscyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHtMb2NhbFNldHRpbmdzVmFsaWRhdG9yU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvdmFsaWRhdG9yL2xvY2FsLXNldHRpbmdzLnZhbGlkYXRvcic7XG5pbXBvcnQge1BsYXRmb3JtU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtpc05pbCwgaXNOaWxPckJsYW5rLCB0b0Jvb2xlYW59IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtMb2NhbFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0Zvcm1GaWVsZERlZmluaXRpb24sIEZvcm1GaWVsZERlZmluaXRpb25NYXB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7QWxlcnRzfSBmcm9tICcuLi8uLi9zaGFyZWQvYWxlcnRzJztcbmltcG9ydCB7UHJvcGVydHl9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge0NhbkxlYXZlfSBmcm9tICcuLi8uLi9zaGFyZWQvZ3VhcmQvY29tcG9uZW50LWRpcnR5Lmd1YXJkJztcbmltcG9ydCB7SVNlbGVjdFBlZXJNb2RhbE9wdGlvbnN9IGZyb20gJy4uL3BlZXIvc2VsZWN0LXBlZXIubW9kYWwnO1xuaW1wb3J0IHtNZW51SXRlbX0gZnJvbSAnLi4vbWVudS9tZW51Lm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IEFQUF9TRVRUSU5HU19NRU5VX0lURU1TID0gbmV3IEluamVjdGlvblRva2VuPE1lbnVJdGVtW10+KCdzZXR0aW5nc01lbnVJdGVtcycpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYWdlLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICdzZXR0aW5ncy5wYWdlLmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogVmFsaWRhdG9yU2VydmljZSwgdXNlRXhpc3Rpbmc6IExvY2FsU2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NQYWdlIGV4dGVuZHMgQXBwRm9ybTxMb2NhbFNldHRpbmdzPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDYW5MZWF2ZSB7XG5cbiAgcHJpdmF0ZSBkYXRhOiBMb2NhbFNldHRpbmdzO1xuXG4gIG1vYmlsZTogYm9vbGVhbjtcbiAgc2F2aW5nID0gZmFsc2U7XG4gIHVzYWdlTW9kZXM6IFVzYWdlTW9kZVtdID0gWydGSUVMRCcsICdERVNLJ107XG4gIG1lbnVJdGVtczogTWVudUl0ZW1bXTtcblxuICBwcm9wZXJ0eURlZmluaXRpb25zOiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIHByb3BlcnR5RGVmaW5pdGlvbnNCeUtleTogRm9ybUZpZWxkRGVmaW5pdGlvbk1hcCA9IHt9O1xuICBwcm9wZXJ0eURlZmluaXRpb25zQnlJbmRleDogeyBbaW5kZXg6IG51bWJlcl06IEZvcm1GaWVsZERlZmluaXRpb24gfSA9IHt9O1xuICBwcm9wZXJ0aWVzRm9ybUhlbHBlcjogRm9ybUFycmF5SGVscGVyPFByb3BlcnR5PjtcblxuICBsYXRMb25nRm9ybWF0cyA9IFsnRERNTVNTJywgJ0RETU0nLCAnREQnXTtcblxuICBnZXQgYWNjb3VudEluaGVyaXRhbmNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2FjY291bnRJbmhlcml0YW5jZSddLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTG9naW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudFNlcnZpY2UuaXNMb2dpbigpO1xuICB9XG5cbiAgZ2V0IHByb3BlcnRpZXNGb3JtKCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdwcm9wZXJ0aWVzJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdG9yU2VydmljZTogTG9jYWxTZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIEBJbmplY3QoQVBQX0xPQ0FMRVMpIHB1YmxpYyBsb2NhbGVzOiBMb2NhbGVDb25maWdbXSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9TRVRUSU5HU19NRU5VX0lURU1TKSBtZW51SXRlbXM/OiBNZW51SXRlbVtdXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLCB2YWxpZGF0b3JTZXJ2aWNlLmdldEZvcm1Hcm91cCgpKTtcblxuICAgIHRoaXMucHJvcGVydGllc0Zvcm1IZWxwZXIgPSBuZXcgRm9ybUFycmF5SGVscGVyPFByb3BlcnR5PihcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb3BlcnRpZXMnKSBhcyBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgKHZhbHVlKSA9PiB0aGlzLnZhbGlkYXRvclNlcnZpY2UuZ2V0UHJvcGVydHlGb3JtR3JvdXAodmFsdWUpLFxuICAgICAgKHYxLCB2MikgPT4gKCF2MSAmJiAhdjIpIHx8ICh2MS5rZXkgPT09IHYyLmtleSksXG4gICAgICAodmFsdWUpID0+ICBpc05pbCh2YWx1ZSkgfHwgKGlzTmlsKHZhbHVlLmtleSkgJiYgaXNOaWwodmFsdWUudmFsdWUpKSxcbiAgICAgIHtcbiAgICAgICAgYWxsb3dFbXB0eUFycmF5OiB0cnVlXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMubWVudUl0ZW1zID0gbWVudUl0ZW1zIHx8IFtdO1xuICAgIHRoaXMubW9iaWxlID0gdGhpcy5wbGF0Zm9ybS5tb2JpbGU7XG5cbiAgICAvLyBCeSBkZWZhdWx0LCBkaXNhYmxlIHRoZSBmb3JtXG4gICAgdGhpcy5fZW5hYmxlID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHBsYXRmb3JtIGlzIHJlYWR5XG4gICAgYXdhaXQgdGhpcy5wbGF0Zm9ybS5yZWFkeSgpO1xuXG4gICAgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zID0gdGhpcy5zZXR0aW5ncy5vcHRpb25EZWZzLnNsaWNlKCk7IC8vIGNvcHkgb3B0aW9uc1xuICAgIHRoaXMucHJvcGVydHlEZWZpbml0aW9ucy5mb3JFYWNoKG8gPT4gdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zQnlLZXlbby5rZXldID0gbyk7IC8vIGZpbGwgbWFwXG5cbiAgICAvLyBMb2FkIHNldHRpbmdzXG4gICAgYXdhaXQgdGhpcy5sb2FkKCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgbWVyZ2UoXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpbixcbiAgICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ291dFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldEFjY291bnRJbmhlcml0YW5jZSh0aGlzLmFjY291bnRJbmhlcml0YW5jZSkpKTtcbiAgfVxuXG4gIGdldFByb3BlcnR5RGVmaW5pdGlvbihpbmRleDogbnVtYmVyKTogRm9ybUZpZWxkRGVmaW5pdGlvbiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4W2luZGV4XTtcbiAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgIGRlZmluaXRpb24gPSB0aGlzLnVwZGF0ZVByb3BlcnR5RGVmaW5pdGlvbihpbmRleCk7XG4gICAgICB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4W2luZGV4XSA9IGRlZmluaXRpb247XG4gICAgfVxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgdXBkYXRlUHJvcGVydHlEZWZpbml0aW9uKGluZGV4OiBudW1iZXIpOiBGb3JtRmllbGREZWZpbml0aW9uIHtcbiAgICBjb25zdCBrZXkgPSAodGhpcy5wcm9wZXJ0aWVzRm9ybS5hdChpbmRleCkgYXMgVW50eXBlZEZvcm1Hcm91cCkuY29udHJvbHMua2V5LnZhbHVlO1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBrZXkgJiYgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zQnlLZXlba2V5XSB8fCBudWxsO1xuICAgIHRoaXMucHJvcGVydHlEZWZpbml0aW9uc0J5SW5kZXhbaW5kZXhdID0gZGVmaW5pdGlvbjsgLy8gdXBkYXRlIG1hcCBieSBpbmRleFxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICByZW1vdmVQcm9wZXJ0eUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtSGVscGVyLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnNCeUluZGV4ID0ge307IC8vIGNsZWFyIGNhY2hlIGJ5IGluZGV4XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcbiAgICBjb25zb2xlLmRlYnVnKCdbc2V0dGluZ3NdIExvYWRpbmcgc2V0dGluZ3MuLi4nKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNldHRpbmdzLnNldHRpbmdzO1xuXG4gICAgLy8gU2V0IGRlZmF1bHRzXG4gICAgZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UgPSB0b0Jvb2xlYW4oZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UsIHRydWUpO1xuICAgIGRhdGEubG9jYWxlID0gZGF0YS5sb2NhbGUgfHwgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgfHwgdGhpcy50cmFuc2xhdGUuZGVmYXVsdExhbmc7XG4gICAgZGF0YS5sYXRMb25nRm9ybWF0ID0gZGF0YS5sYXRMb25nRm9ybWF0IHx8ICdERE1NU1MnO1xuICAgIGRhdGEudXNhZ2VNb2RlID0gZGF0YS51c2FnZU1vZGUgfHwgJ0RFU0snO1xuXG4gICAgLy8gU2V0IHBlZXJcbiAgICBpZiAoaXNOaWxPckJsYW5rKGRhdGEucGVlclVybCkpIHtcbiAgICAgIGF3YWl0IHRoaXMubmV0d29yay5yZWFkeSgpO1xuICAgICAgY29uc3QgcGVlciA9IHRoaXMubmV0d29yay5wZWVyO1xuICAgICAgZGF0YS5wZWVyVXJsID0gcGVlciAmJiBwZWVyLnVybDtcbiAgICB9XG5cbiAgICAvLyBSZW1lbWJlciBkYXRhXG4gICAgdGhpcy51cGRhdGVWaWV3KGRhdGEpO1xuICB9XG5cbiAgdXBkYXRlVmlldyhkYXRhOiBMb2NhbFNldHRpbmdzKSB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm47IC8vc2tpcFxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG5cbiAgICBjb25zdCBqc29uOiBhbnkgPSB7Li4uZGF0YX07XG5cbiAgICAvLyBUcmFuc2Zvcm0gcHJvcGVydGllcyBtYXAgaW50byBhcnJheVxuICAgIGpzb24ucHJvcGVydGllcyA9IEVudGl0eVV0aWxzLmdldE1hcEFzQXJyYXkoZGF0YS5wcm9wZXJ0aWVzIHx8IHt9KTtcbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtSGVscGVyLnJlc2l6ZShqc29uLnByb3BlcnRpZXMubGVuZ3RoKTtcblxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKGpzb24sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuXG4gICAgdGhpcy5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgIC8vIEFwcGx5IGluaGVyaXRhbmNlXG4gICAgdGhpcy5zZXRBY2NvdW50SW5oZXJpdGFuY2UoZGF0YS5hY2NvdW50SW5oZXJpdGFuY2UsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBhc3luYyBzYXZlKGV2ZW50PzogRXZlbnQsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgaWYgKGV2ZW50KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAvLyBSZW1vdmUgYWxsIGVtcHR5IGNvbnRyb2xzXG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybUhlbHBlci5yZW1vdmVBbGxFbXB0eSgpO1xuXG4gICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIGF3YWl0IEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMuZm9ybSk7XG5cbiAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICBBcHBGb3JtVXRpbHMubG9nRm9ybUVycm9ycyh0aGlzLmZvcm0pO1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygnW3NldHRpbmdzXSBTYXZpbmcgbG9jYWwgc2V0dGluZ3MuLi4nKTtcblxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpO1xuXG4gICAgLy8gQ2hlY2sgcGVlciBhbGl2ZSwgYmVmb3JlIHNhdmluZ1xuICAgIGNvbnN0IHBlZXJDaGFuZ2VkID0gdGhpcy5mb3JtLmdldCgncGVlclVybCcpLmRpcnR5O1xuXG4gICAgLy8gQ2xlYW4gcGFnZSBoaXN0b3J5LCB3aGVuIHBlZXIgY2hhbmdlZFxuICAgIGlmIChwZWVyQ2hhbmdlZCkgZGF0YS5wYWdlSGlzdG9yeSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLmFwcGx5KGRhdGEpO1xuICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcblxuICAgICAgLy8gSWYgcGVlciBjaGFuZ2VkXG4gICAgICBpZiAocGVlckNoYW5nZWQpIHtcbiAgICAgICAgLy8gUmVzdGFydCB0aGUgbmV0d29ya1xuICAgICAgICB0aGlzLm5ldHdvcmsucGVlciA9IFBlZXIucGFyc2VVcmwoZGF0YS5wZWVyVXJsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB0aGlzLmVycm9yID0gZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycjtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgICAgLy8gQXBwbHkgaW5oZXJpdGFuY2VcbiAgICAgIHRoaXMuc2V0QWNjb3VudEluaGVyaXRhbmNlKGRhdGEuYWNjb3VudEluaGVyaXRhbmNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgICAvLyBBZGQgYSBkZWxheSwgYmVjYXVzZSBvZiBvcHRpb24gbWVudSB0aGF0IGlzIGFsd2F5cyBvcGVuZWQgYWZ0ZXIgc2F2ZSEhXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sIDQwMCk7XG4gICAgfVxuICB9XG5cblxuICBzZXRBY2NvdW50SW5oZXJpdGFuY2UoZW5hYmxlOiBib29sZWFuLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICAvLyBNYWtlIHN1cmUgdG8gdXBkYXRlIHRoZSB2YWx1ZSBpbiBjb250cm9sXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzWydhY2NvdW50SW5oZXJpdGFuY2UnXS5zZXRWYWx1ZShlbmFibGUsIG9wdHMpO1xuICAgIGlmICh0aGlzLmRhdGEuYWNjb3VudEluaGVyaXRhbmNlICE9PSBlbmFibGUpIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1snYWNjb3VudEluaGVyaXRhbmNlJ10ubWFya0FzRGlydHkoe29ubHlTZWxmOiBmYWxzZX0pO1xuICAgIH1cblxuICAgIGlmIChlbmFibGUpIHtcbiAgICAgIGlmICh0aGlzLmlzTG9naW4pIHtcbiAgICAgICAgLy8gRm9yY2UgdXNpbmcgYWNjb3VudCBzZXR0aW5nc1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gdGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50O1xuXG4gICAgICAgIC8vIENvcHkgdmFsdWVzXG4gICAgICAgIGlmIChhY2NvdW50LnNldHRpbmdzKSB7XG4gICAgICAgICAgaWYgKGFjY291bnQuc2V0dGluZ3MubG9jYWxlKSB0aGlzLmZvcm0uZ2V0KCdsb2NhbGUnKS5zZXRWYWx1ZShhY2NvdW50LnNldHRpbmdzLmxvY2FsZSwgb3B0cyk7XG4gICAgICAgICAgaWYgKGFjY291bnQuc2V0dGluZ3MubGF0TG9uZ0Zvcm1hdCkgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLnNldFZhbHVlKGFjY291bnQuc2V0dGluZ3MubGF0TG9uZ0Zvcm1hdCwgb3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGlzYWJsZSBmaWVsZHNcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbG9jYWxlJykuZGlzYWJsZShvcHRzKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLmRpc2FibGUob3B0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFbmFibGUgZmllbGRzXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2FsZScpLmVuYWJsZShvcHRzKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLmVuYWJsZShvcHRzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVzdG9yZSBwcmV2aW91cyB2YWx1ZXNcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2xvY2FsZScpLnNldFZhbHVlKHRoaXMuZGF0YS5sb2NhbGUsIG9wdHMpO1xuICAgICAgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLnNldFZhbHVlKHRoaXMuZGF0YS5sYXRMb25nRm9ybWF0LCBvcHRzKTtcblxuICAgICAgLy8gRW5hYmxlIGZpZWxkc1xuICAgICAgdGhpcy5mb3JtLmdldCgnbG9jYWxlJykuZW5hYmxlKG9wdHMpO1xuICAgICAgdGhpcy5mb3JtLmdldCgnbGF0TG9uZ0Zvcm1hdCcpLmVuYWJsZShvcHRzKTtcbiAgICB9XG5cbiAgICAvLyBNYXJrIGZvciBjaGVjaywgaWYgbmVlZFxuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCkge1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaG93U2VsZWN0UGVlck1vZGFsKG9wdHM/OiBQYXJ0aWFsPElTZWxlY3RQZWVyTW9kYWxPcHRpb25zPikge1xuICAgIGNvbnN0IHBlZXIgPSBhd2FpdCB0aGlzLm5ldHdvcmsuc2hvd1NlbGVjdFBlZXJNb2RhbCh7XG4gICAgICBzaG93U2V0TWFudWFsbHlCdXR0b246IGZhbHNlLCAvLyBNYWtlIG5vIHNlbnNlIGhlcmUsIGJlY2F1c2Ugc2FtZSBhcyBjYW5jZWwgKGFscmVhZHkgaW5zaWRlIHRoZSBzZXR0aW5ncyBwYWdlKVxuICAgICAgLi4ub3B0c30pO1xuICAgIGlmIChwZWVyPy51cmwpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdwZWVyVXJsJykgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICAgICAgY29udHJvbC5zZXRWYWx1ZShwZWVyLnVybCwge2VtaXRFdmVudDogdHJ1ZSwgb25seVNlbGY6IGZhbHNlfSk7XG4gICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHtvbmx5U2VsZjogZmFsc2V9KTtcbiAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjYW5jZWwoZXZlbnQ/OiBFdmVudCkge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmICh0aGlzLnNhdmluZykgcmV0dXJuO1xuXG4gICAgLy8gQmFjayB0byBob21lXG4gICAgcmV0dXJuIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoJy8nKTsgLy8gYmFjayB0byBob21lXG4gIH1cblxuICBhc3luYyBjbGVhckNhY2hlKGV2ZW50PzogRXZlbnQpIHtcbiAgICBjb25zdCBjb25maXJtID0gYXdhaXQgQWxlcnRzLmFza0FjdGlvbkNvbmZpcm1hdGlvbih0aGlzLmFsZXJ0Q3RybCwgdGhpcy50cmFuc2xhdGUsIHRydWUsIGV2ZW50KTtcbiAgICBpZiAoY29uZmlybSkge1xuICAgICAgYXdhaXQgdGhpcy5uZXR3b3JrLmNsZWFyQ2FjaGUoKTtcbiAgICAgIHRoaXMuc2V0dGluZ3MucmVtb3ZlT2ZmbGluZUZlYXR1cmVzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZUFjdGlvbihldmVudDogRXZlbnQsIGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm47XG4gICAgaWYgKGV2ZW50Py5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47XG5cbiAgICBpZiAoaXRlbS5wYXRoKSB7XG4gICAgICBhd2FpdCB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVGb3J3YXJkKGl0ZW0ucGF0aCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignW3NldHRpbmdzXSBVbmtub3duIGl0ZW0gdHlwZSAobm8gcGF0aCknLCBpdGVtKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgZnVuY3Rpb25zIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldFZhbHVlKCk6IFByb21pc2U8TG9jYWxTZXR0aW5ncz4ge1xuICAgIGNvbnN0IGpzb24gPSBhd2FpdCB0aGlzLmdldEpzb25WYWx1ZVRvU2F2ZSgpO1xuXG4gICAgLy8gT3ZlcnJpZGUgcHJvcGVydGllcyBmcm9tIGFjY291bnRcbiAgICBpZiAoanNvbi5hY2NvdW50SW5oZXJpdGFuY2UgJiYgdGhpcy5pc0xvZ2luKSB7XG4gICAgICBjb25zdCBhY2NvdW50ID0gdGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50O1xuICAgICAgY29uc3QgdXNlclNldHRpbmdzID0gYWNjb3VudCAmJiBhY2NvdW50LnNldHRpbmdzO1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW3NldHRpbmdzXSBBcHBseWluZyBhY2NvdW50IGluaGVyaXRhbmNlIHtsb2NhbGU6ICcke3VzZXJTZXR0aW5ncy5sb2NhbGV9JywgbGF0TG9uZ0Zvcm1hdDogJyR7dXNlclNldHRpbmdzLmxhdExvbmdGb3JtYXR9J30uLi5gKTtcbiAgICAgIGpzb24ubG9jYWxlID0gdXNlclNldHRpbmdzLmxvY2FsZSB8fCBqc29uLmxvY2FsZTtcbiAgICAgIGpzb24ubGF0TG9uZ0Zvcm1hdCA9IHVzZXJTZXR0aW5ncy5sYXRMb25nRm9ybWF0IHx8IGpzb24ubGF0TG9uZ0Zvcm1hdDtcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRKc29uVmFsdWVUb1NhdmUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIGpzb24ucHJvcGVydGllcyA9IEVudGl0eVV0aWxzLmdldFByb3BlcnR5QXJyYXlBc09iamVjdChqc29uLnByb3BlcnRpZXMpO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShqc29uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG5cbn1cbiIsIjxhcHAtdG9vbGJhciBbdGl0bGVdPVwiJ1NFVFRJTkdTLlRJVExFJ3x0cmFuc2xhdGVcIiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgIFtoYXNWYWxpZGF0ZV09XCJkaXJ0eSAmJiAhc2F2aW5nXCJcbiAgICAgICAgICAgICBbaGFzQ2xvc2VdPVwiIWRpcnR5ICYmICFzYXZpbmdcIlxuICAgICAgICAgICAgIChvblZhbGlkYXRlKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgKG9uQ2xvc2UpPVwiY2xvc2UoJGV2ZW50KVwiPlxuXG4gIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgPCEtLSBvcHRpb25zIG1lbnUgLS0+XG4gICAgPGlvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm9wdGlvbnNNZW51XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFzYXZpbmdcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzYXZpbmdcIj5cbiAgICAgIDxtYXQtaWNvbiBzbG90PVwiaWNvbi1vbmx5XCI+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICA8L2lvbi1idXR0b24+XG4gIDwvaW9uLWJ1dHRvbnM+XG48L2FwcC10b29sYmFyPlxuXG48IS0tIE9wdGlvbnMgbWVudSAtLT5cbjxtYXQtbWVudSAjb3B0aW9uc01lbnU9XCJtYXRNZW51XCI+XG4gIDwhLS0gQ2xlYXIgY2FjaGUgLS0+XG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2xlYXJDYWNoZSgkZXZlbnQpXCI+XG4gICAgPG1hdC1pY29uPjxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiPjwvaW9uLWljb24+PC9tYXQtaWNvbj5cbiAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5TRVRUSU5HUy5CVE5fQ0xFQVJfQ0FDSEU8L2lvbi1sYWJlbD5cbiAgPC9idXR0b24+XG5cbiAgPCEtLSBSZXNldCAtLT5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFkaXJ0eVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgkZXZlbnQpXCI+XG4gICAgPG1hdC1pY29uPjxpb24taWNvbiBuYW1lPVwicmVmcmVzaFwiPjwvaW9uLWljb24+PC9tYXQtaWNvbj5cbiAgICA8bWF0LWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX1JFU0VUPC9tYXQtbGFiZWw+XG4gIDwvYnV0dG9uPlxuXG4gIDwhLS0gYWRkaXRpb25hbCBpdGVtcyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZW51SXRlbXNcIj5cbiAgICAgIDxhICpuZ0lmPVwiaXRlbS5wYXRoXCJcbiAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgIGNsYXNzPVwie3tpdGVtLmNzc0NsYXNzfX0ge3tpdGVtLmNvbG9yfX1cIlxuICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVBY3Rpb24oJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLmljb25cIj48aW9uLWljb24gW25hbWVdPVwiaXRlbS5pY29uXCI+PC9pb24taWNvbj48L21hdC1pY29uPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLm1hdEljb25cIj57e2l0ZW0ubWF0SWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1sYWJlbCB0cmFuc2xhdGU+e3tpdGVtLnRpdGxlfX08L21hdC1sYWJlbD5cbiAgICAgIDwvYT5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cIiFpdGVtLnBhdGggJiYgIWl0ZW0uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7aXRlbS5jc3NDbGFzc319IHt7aXRlbS5jb2xvcn19XCI+XG4gICAgICAgIDxtYXQtbGFiZWwgdHJhbnNsYXRlPnt7aXRlbS50aXRsZX19PC9tYXQtbGFiZWw+XG4gICAgICA8L21hdC1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LW1lbnU+XG5cbjxpb24tY29udGVudD5cblxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKCRldmVudClcIiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XG5cbiAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuXG4gICAgICAgIDwhLS0gbGVmdCAgbWFyZ2luIC0tPlxuICAgICAgICA8aW9uLWNvbCBzaXplPVwiMFwiIHNpemUtbGc9XCIyXCI+Jm5ic3A7XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG5cbiAgICAgICAgICA8IS0tIGVycm9yIC0tPlxuICAgICAgICAgIDxpb24taXRlbSAqbmdJZj1cImVycm9yXCIgbGluZXM9XCJub25lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuXG4gICAgICAgICAgPHAgW2lubmVySFRNTF09XCInU0VUVElOR1MuREVTQ1JJUFRJT04nfHRyYW5zbGF0ZVwiPjwvcD5cblxuICAgICAgICAgIDwhLS0gYWNjb3VudCBpbmhlcml0YW5jZSAoZGVza3RvcCkgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtoaWRkZW5dPVwiIWlzTG9naW5cIiAqbmdJZj1cIiFtb2JpbGU7IGVsc2UgYWNjb3VudEluaGVyaXRhbmNlTW9iaWxlXCI+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIGZvcm1Db250cm9sTmFtZT1cImFjY291bnRJbmhlcml0YW5jZVwiIHR5cGU9XCJ0ZXh0XCI+XG5cbiAgICAgICAgICAgIDwhLS0gY2hlY2sgYm94IChpZiBkZXNrdG9wKSAtLT5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgKm5nSWY9XCIhbW9iaWxlOyBlbHNlIGFjY291bnRJbmhlcml0YW5jZU1vYmlsZVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0QWNjb3VudEluaGVyaXRhbmNlKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFjY291bnRJbmhlcml0YW5jZVwiPlxuICAgICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+U0VUVElOR1MuSU5IRVJJVF9GUk9NX0FDQ09VTlQ8L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cblxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuYWNjb3VudEluaGVyaXRhbmNlLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBhY2NvdW50IGluaGVyaXRhbmNlIChpZiBtb2JpbGUpIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWNjb3VudEluaGVyaXRhbmNlTW9iaWxlPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtoaWRkZW5dPVwiIWlzTG9naW5cIj5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGhpZGRlbiBmb3JtQ29udHJvbE5hbWU9XCJhY2NvdW50SW5oZXJpdGFuY2VcIiB0eXBlPVwidGV4dFwiPlxuXG4gICAgICAgICAgICAgIDwhLS0gc2xpZGUgdG9nZ2xlICAtLT5cbiAgICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5JTkhFUklUX0ZST01fQUNDT1VOVDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldEFjY291bnRJbmhlcml0YW5jZSgkZXZlbnQuY2hlY2tlZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhY2NvdW50SW5oZXJpdGFuY2VcIj5cblxuICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmFjY291bnRJbmhlcml0YW5jZS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDwhLS0gbG9jYWxlIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU0VUVElOR1MuTE9DQUxFJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJsb2NhbGVcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9jYWxlc1wiIFt2YWx1ZV09XCJpdGVtLmtleVwiPlxuICAgICAgICAgICAgICAgIHt7aXRlbS52YWx1ZX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmxvY2FsZS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIE5ldHdvcmsgZW50cnkgLS0+XG4gICAgICAgICAgPGgzPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5ORVRXT1JLX0RJVklERVI8L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaDM+XG5cbiAgICAgICAgICA8IS0tIFBlZXIgYWRkcmVzcyAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwiJ1NFVFRJTkdTLlBFRVJfVVJMJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBlZXJVcmxcIlxuICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0U3VmZml4IChjbGljayk9XCJzaG93U2VsZWN0UGVlck1vZGFsKClcIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fQ0hBTkdFX1BFRVInfHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5wZWVyVXJsLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLnBlZXJVcmwuaGFzRXJyb3IoJ3BlZXJBbGl2ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPlNFVFRJTkdTLkVSUk9SLlBFRVJfTk9UX1JFQUNIQUJMRVxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5wZWVyVXJsLmhhc0Vycm9yKCdwZWVyTm90Q29tcGF0aWJsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPlNFVFRJTkdTLkVSUk9SLlBFRVJfTk9UX0NPTVBBVElCTEVcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIE9mZmxpbmUgbW9kZSAoaWYgbW9iaWxlKSAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJtb2JpbGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4gZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudEluaGVyaXRhbmNlXCIgdHlwZT1cInRleHRcIj5cblxuICAgICAgICAgICAgPCEtLSBzbGlkZSB0b2dnbGUgIC0tPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5PRkZMSU5FX01PREU8L2lvbi10ZXh0PlxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm5ldHdvcmsuc2V0Rm9yY2VPZmZsaW5lKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJuZXR3b3JrLm9mZmxpbmVcIj5cblxuICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIERhdGEgZW50cnkgLS0+XG4gICAgICAgICAgPGgzPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5TRVRUSU5HUy5EQVRBX0VOVFJZX0RJVklERVI8L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaDM+XG5cbiAgICAgICAgICA8IS0tIFVzYWdlIG1vZGUgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidTRVRUSU5HUy5VU0FHRV9NT0RFJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2FnZU1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHVzYWdlTW9kZXNcIiBbdmFsdWVdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgIHt7J1NFVFRJTkdTLlVTQUdFX01PREVTLicraXRlbXx0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy51c2FnZU1vZGUuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIGxhdC9sb25nIGZvcm1hdC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU0VUVElOR1MuTEFUX0xPTkdfRk9STUFUJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXRMb25nRm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXRMb25nRm9ybWF0c1wiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAge3snQ09NTU9OLkxBVF9MT05HLicraXRlbSsnX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yXG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5jb250cm9scy5sYXRMb25nRm9ybWF0Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBmaWVsZHMgb3B0aW9ucyAtLT5cbiAgICAgICAgICA8aW9uLWdyaWQgZm9ybUFycmF5TmFtZT1cInByb3BlcnRpZXNcIiBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmcgaW9uLWFsaWduLXNlbGYtZW5kXCIgc2l6ZT1cIjEyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sYmFyLXNwYWNlclwiPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDwhLS0gU2hvdyBtb3JlIG9wdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gY29sb3I9XCJsaWdodFwiICpuZ0lmPVwicHJvcGVydGllc0Zvcm0/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fU0hPV19NT1JFX0hFTFAnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByb3BlcnRpZXNGb3JtSGVscGVyLmFkZCgpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX1NIT1dfTU9SRTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJlbmRcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPC9pb24tcm93PlxuXG4gICAgICAgICAgICA8IS0tIEZpZWxkcyBvcHRpb25zIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcGVydHlGb3JtIG9mIHByb3BlcnRpZXNGb3JtPy5jb250cm9sczsgbGV0IGk9aW5kZXhcIj5cbiAgICAgICAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cblxuICAgICAgICAgICAgICAgIDwhLS0gcHJvcGVydHkga2V5IC0tPlxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIiAnU0VUVElOR1MuUFJPUEVSVFlfS0VZJ3x0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9wZXJ0eURlZmluaXRpb25zXCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgICAgICA8IS0tIHByb3BlcnR5IHZhbHVlIC0tPlxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBwYWRkaW5nLWxlZnQ+XG4gICAgICAgICAgICAgICAgICA8YXBwLWZvcm0tZmllbGQgKm5nSWY9XCJnZXRQcm9wZXJ0eURlZmluaXRpb24oaSk7IGxldCBkZWZpbml0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdExhYmVsPVwibmV2ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZpbml0aW9uXT1cImRlZmluaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwcm9wZXJ0eUZvcm18Zm9ybUdldENvbnRyb2w6J3ZhbHVlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRVRUSU5HUy5QUk9QRVJUWV9WQUxVRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8L2FwcC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMlwiIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fREVMRVRFJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUHJvcGVydHlBdChpKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicHJvcGVydGllc0Zvcm1IZWxwZXIuaXNMYXN0KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fQUREX1BST1BFUlRZJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvcGVydGllc0Zvcm1IZWxwZXIuYWRkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8IS0tIHJpZ2h0IG1hcmdpbiAtLT5cbiAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjBcIiBzaXplLWxnPVwiMlwiPiZuYnNwO1xuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tZ3JpZD5cblxuXG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGFwcC1mb3JtLWJ1dHRvbnMtYmFyIChvbkNhbmNlbCk9XCJjYW5jZWwoKVwiIChvblNhdmUpPVwic2F2ZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIiFmb3JtLmRpcnR5IHx8IHNhdmluZ1wiPjwvYXBwLWZvcm0tYnV0dG9ucy1iYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
@@ -52,9 +52,9 @@ export class ActionsColumnComponent {
52
52
  this.forward.unsubscribe();
53
53
  }
54
54
  }
55
- ActionsColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ActionsColumnComponent, deps: [{ token: i1.MatTable }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
56
- ActionsColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ActionsColumnComponent, selector: "app-actions-column", inputs: { stickyEnd: "stickyEnd", canCancel: "canCancel", canConfirm: "canConfirm", canDelete: "canDelete", canBackward: "canBackward", canForward: "canForward", canConfirmAndAdd: "canConfirmAndAdd", dirtyIcon: "dirtyIcon", optionsTitle: "optionsTitle", classList: ["class", "classList"], cellTemplate: "cellTemplate" }, outputs: { optionsClick: "optionsClick", cancelOrDeleteClick: "cancelOrDeleteClick", confirmEditCreateClick: "confirmEditCreateClick", confirmAndAddClick: "confirmAndAddClick", backward: "backward", forward: "forward" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: MatColumnDef, descendants: true }, { propertyName: "matMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container matColumnDef=\"actions\" [stickyEnd]=\"stickyEnd\">\n <th mat-header-cell *matHeaderCellDef [class]=\"classList\" [class.mat-column-sticky]=\"stickyEnd\">\n <button mat-icon-button\n *ngIf=\"optionsClick.observers | isNotEmptyArray\"\n [title]=\"optionsTitle | translate\"\n (click)=\"optionsClick.emit($event)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <ng-content select=\"[matHeader]\"></ng-content>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class]=\"classList\">\n <ng-container *ngIf=\"row.editing; else view\">\n\n <!-- pending -->\n <ion-spinner *ngIf=\"row.validator?.pending\" name=\"dots\" class=\"center\"></ion-spinner>\n\n <!-- Confirm button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canConfirm && row.editing && row.validator?.dirty && row.validator?.valid\"\n [title]=\"'COMMON.BTN_APPLY'|translate\"\n (click)=\"confirmEditCreateClick.emit({event: $event, row: row})\">\n <mat-icon>checkmark</mat-icon>\n </button>\n\n <!-- new row -->\n <ng-container *ngIf=\"row.id === -1; else existingRow\">\n\n <!-- delete button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canDelete && row.validator?.invalid\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n\n\n <!-- add button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"!canForward && canConfirmAndAdd && row.validator?.valid\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"confirmAndAddClick.emit({event: $event, row: row})\">\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button class=\"mat-row-action-button\"\n style=\"color: transparent; position: absolute; top: 0; margin: 0; padding: 0; width: 0;\"\n *ngIf=\"canForward && row.validator?.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-container>\n\n <!-- existing row -->\n <ng-template #existingRow>\n <!-- cancel button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canCancel && row.validator?.dirty\"\n [title]=\"'COMMON.BTN_UNDO' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>undo</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button class=\"mat-row-action-button\"\n style=\"color: transparent; position: absolute; top: 0; margin: 0; padding: 0; width: 0;\"\n *ngIf=\"canForward && row.validator?.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n </ng-container>\n\n <ng-template #view>\n <!-- dirty icon -->\n <ion-icon *ngIf=\"dirtyIcon && row.validator?.dirty\" [name]=\"dirtyIcon\" color=\"accent\" class=\"dirty-icon\"></ion-icon>\n\n <!-- backward button (invisible - focusable only) -->\n <button mat-icon-button class=\"mat-row-action-button\"\n style=\"color: transparent; position: absolute; top: 0; margin: 0; padding: 0; width: 0;\"\n *ngIf=\"canBackward\"\n (focus)=\"this.backward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: row }\"></ng-container>\n </td>\n\n <td mat-footer-cell *matFooterCellDef>\n <ng-content select=\"[matFooter]\"></ng-content>\n </td>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "directive", type: i1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.NotEmptyArrayPipe, name: "isNotEmptyArray" }] });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ActionsColumnComponent, decorators: [{
55
+ ActionsColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ActionsColumnComponent, deps: [{ token: i1.MatTable }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
56
+ ActionsColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ActionsColumnComponent, selector: "app-actions-column", inputs: { stickyEnd: "stickyEnd", canCancel: "canCancel", canConfirm: "canConfirm", canDelete: "canDelete", canBackward: "canBackward", canForward: "canForward", canConfirmAndAdd: "canConfirmAndAdd", dirtyIcon: "dirtyIcon", optionsTitle: "optionsTitle", classList: ["class", "classList"], cellTemplate: "cellTemplate" }, outputs: { optionsClick: "optionsClick", cancelOrDeleteClick: "cancelOrDeleteClick", confirmEditCreateClick: "confirmEditCreateClick", confirmAndAddClick: "confirmAndAddClick", backward: "backward", forward: "forward" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: MatColumnDef, descendants: true }, { propertyName: "matMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container matColumnDef=\"actions\" [stickyEnd]=\"stickyEnd\">\n <th mat-header-cell *matHeaderCellDef [class]=\"classList\" [class.mat-column-sticky]=\"stickyEnd\">\n <button mat-icon-button\n *ngIf=\"optionsClick.observers | isNotEmptyArray\"\n [title]=\"optionsTitle | translate\"\n (click)=\"optionsClick.emit($event)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <ng-content select=\"[matHeader]\"></ng-content>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class]=\"classList\">\n <ng-container *ngIf=\"row.editing; else view\">\n\n <!-- pending -->\n <ion-spinner *ngIf=\"row.validator?.pending\" name=\"dots\" class=\"center\"></ion-spinner>\n\n <!-- Confirm button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canConfirm && row.editing && row.validator?.dirty && row.validator?.valid\"\n [title]=\"'COMMON.BTN_APPLY'|translate\"\n (click)=\"confirmEditCreateClick.emit({event: $event, row: row})\">\n <mat-icon>checkmark</mat-icon>\n </button>\n\n <!-- new row -->\n <ng-container *ngIf=\"row.id === -1; else existingRow\">\n\n <!-- delete button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canDelete && row.validator?.invalid\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n\n\n <!-- add button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"!canForward && canConfirmAndAdd && row.validator?.valid\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"confirmAndAddClick.emit({event: $event, row: row})\">\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button class=\"mat-row-action-button\"\n style=\"color: transparent; position: absolute; top: 0; margin: 0; padding: 0; width: 0;\"\n *ngIf=\"canForward && row.validator?.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-container>\n\n <!-- existing row -->\n <ng-template #existingRow>\n <!-- cancel button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canCancel && row.validator?.dirty\"\n [title]=\"'COMMON.BTN_UNDO' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>undo</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button class=\"mat-row-action-button\"\n style=\"color: transparent; position: absolute; top: 0; margin: 0; padding: 0; width: 0;\"\n *ngIf=\"canForward && row.validator?.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n </ng-container>\n\n <ng-template #view>\n <!-- dirty icon -->\n <ion-icon *ngIf=\"dirtyIcon && row.validator?.dirty\" [name]=\"dirtyIcon\" color=\"accent\" class=\"dirty-icon\"></ion-icon>\n\n <!-- backward button (invisible - focusable only) -->\n <button mat-icon-button class=\"mat-row-action-button\"\n style=\"color: transparent; position: absolute; top: 0; margin: 0; padding: 0; width: 0;\"\n *ngIf=\"canBackward\"\n (focus)=\"this.backward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: row }\"></ng-container>\n </td>\n\n <td mat-footer-cell *matFooterCellDef>\n <ng-content select=\"[matFooter]\"></ng-content>\n </td>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "directive", type: i1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.NotEmptyArrayPipe, name: "isNotEmptyArray" }] });
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ActionsColumnComponent, decorators: [{
58
58
  type: Component,
59
59
  args: [{ selector: 'app-actions-column', template: "<ng-container matColumnDef=\"actions\" [stickyEnd]=\"stickyEnd\">\n <th mat-header-cell *matHeaderCellDef [class]=\"classList\" [class.mat-column-sticky]=\"stickyEnd\">\n <button mat-icon-button\n *ngIf=\"optionsClick.observers | isNotEmptyArray\"\n [title]=\"optionsTitle | translate\"\n (click)=\"optionsClick.emit($event)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <ng-content select=\"[matHeader]\"></ng-content>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class]=\"classList\">\n <ng-container *ngIf=\"row.editing; else view\">\n\n <!-- pending -->\n <ion-spinner *ngIf=\"row.validator?.pending\" name=\"dots\" class=\"center\"></ion-spinner>\n\n <!-- Confirm button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canConfirm && row.editing && row.validator?.dirty && row.validator?.valid\"\n [title]=\"'COMMON.BTN_APPLY'|translate\"\n (click)=\"confirmEditCreateClick.emit({event: $event, row: row})\">\n <mat-icon>checkmark</mat-icon>\n </button>\n\n <!-- new row -->\n <ng-container *ngIf=\"row.id === -1; else existingRow\">\n\n <!-- delete button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canDelete && row.validator?.invalid\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n\n\n <!-- add button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"!canForward && canConfirmAndAdd && row.validator?.valid\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"confirmAndAddClick.emit({event: $event, row: row})\">\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button class=\"mat-row-action-button\"\n style=\"color: transparent; position: absolute; top: 0; margin: 0; padding: 0; width: 0;\"\n *ngIf=\"canForward && row.validator?.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-container>\n\n <!-- existing row -->\n <ng-template #existingRow>\n <!-- cancel button -->\n <button mat-icon-button color=\"light\"\n *ngIf=\"canCancel && row.validator?.dirty\"\n [title]=\"'COMMON.BTN_UNDO' | translate\"\n (click)=\"cancelOrDeleteClick.emit({event: $event, row: row})\">\n <mat-icon>undo</mat-icon>\n </button>\n\n <!-- next button (invisible - focusable only) -->\n <button class=\"mat-row-action-button\"\n style=\"color: transparent; position: absolute; top: 0; margin: 0; padding: 0; width: 0;\"\n *ngIf=\"canForward && row.validator?.valid\"\n (focus)=\"this.forward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n </ng-container>\n\n <ng-template #view>\n <!-- dirty icon -->\n <ion-icon *ngIf=\"dirtyIcon && row.validator?.dirty\" [name]=\"dirtyIcon\" color=\"accent\" class=\"dirty-icon\"></ion-icon>\n\n <!-- backward button (invisible - focusable only) -->\n <button mat-icon-button class=\"mat-row-action-button\"\n style=\"color: transparent; position: absolute; top: 0; margin: 0; padding: 0; width: 0;\"\n *ngIf=\"canBackward\"\n (focus)=\"this.backward.emit({event: $event, row: row})\">\n </button>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: row }\"></ng-container>\n </td>\n\n <td mat-footer-cell *matFooterCellDef>\n <ng-content select=\"[matFooter]\"></ng-content>\n </td>\n</ng-container>\n" }]
60
60
  }], ctorParameters: function () { return [{ type: i1.MatTable }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { columnDef: [{
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
99
99
  }], forward: [{
100
100
  type: Output
101
101
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL2FjdGlvbnMtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9hY3Rpb25zLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBQyxZQUFZLEVBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7O0FBTXhELE1BQU0sT0FBTyxzQkFBc0I7SUF3QmpDLFlBQW9CLEtBQW9CLEVBQ3BCLEVBQXFCO1FBRHJCLFVBQUssR0FBTCxLQUFLLENBQWU7UUFDcEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFwQmhDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFRbEIsaUJBQVksR0FBRyxvQkFBb0IsQ0FBQztRQUluQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDekMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7UUFDbkYsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7UUFDdEYsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7UUFDbEYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUE0QyxDQUFDO1FBQ3hFLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBNEMsQ0FBQztRQU8vRSxJQUFJLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENB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SztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO3VCQUFDLE9BQU87Z0JBQ0wsWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdENvbHVtbkRlZiwgTWF0VGFibGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7VGFibGVFbGVtZW50fSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHtNYXRNZW51VHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQge2lzTmlsLCB0b0Jvb2xlYW59IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWN0aW9ucy1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9ucy1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25zQ29sdW1uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWY6IE1hdENvbHVtbkRlZjtcbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgbWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIEBJbnB1dCgpIHN0aWNreUVuZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5DYW5jZWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkNvbmZpcm06IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkRlbGV0ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuQmFja3dhcmQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkZvcndhcmQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkNvbmZpcm1BbmRBZGQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRpcnR5SWNvbjogYm9vbGVhbnxzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbnNUaXRsZSA9ICdDT01NT04uQlROX09QVElPTlMnO1xuICBASW5wdXQoJ2NsYXNzJykgY2xhc3NMaXN0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KCkgb3B0aW9uc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbE9yRGVsZXRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IEV2ZW50OyByb3c6IFRhYmxlRWxlbWVudDxhbnk+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=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL2FjdGlvbnMtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9hY3Rpb25zLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBQyxZQUFZLEVBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7O0FBTXhELE1BQU0sT0FBTyxzQkFBc0I7SUF3QmpDLFlBQW9CLEtBQW9CLEVBQ3BCLEVBQXFCO1FBRHJCLFVBQUssR0FBTCxLQUFLLENBQWU7UUFDcEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFwQmhDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFRbEIsaUJBQVksR0FBRyxvQkFBb0IsQ0FBQztRQUluQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDekMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7UUFDbkYsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7UUFDdEYsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7UUFDbEYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUE0QyxDQUFDO1FBQ3hFLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBNEMsQ0FBQztRQU8vRSxJQUFJLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENB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SztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO3VCQUFDLE9BQU87Z0JBQ0wsWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdENvbHVtbkRlZiwgTWF0VGFibGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7VGFibGVFbGVtZW50fSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHtNYXRNZW51VHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQge2lzTmlsLCB0b0Jvb2xlYW59IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWN0aW9ucy1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9ucy1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25zQ29sdW1uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWY6IE1hdENvbHVtbkRlZjtcbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgbWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIEBJbnB1dCgpIHN0aWNreUVuZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5DYW5jZWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkNvbmZpcm06IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkRlbGV0ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuQmFja3dhcmQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkZvcndhcmQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkNvbmZpcm1BbmRBZGQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRpcnR5SWNvbjogYm9vbGVhbnxzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbnNUaXRsZSA9ICdDT01NT04uQlROX09QVElPTlMnO1xuICBASW5wdXQoJ2NsYXNzJykgY2xhc3NMaXN0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KCkgb3B0aW9uc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbE9yRGVsZXRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IEV2ZW50OyByb3c6IFRhYmxlRWxlbWVudDxhbnk+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=