nuxeo-development-framework 3.8.1 → 3.8.3

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 (311) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +32267 -31027
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +2 -2
  4. package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +2 -2
  5. package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +2 -2
  6. package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +2 -2
  7. package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +1 -1
  8. package/esm2015/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.js +2 -2
  9. package/esm2015/lib/components/comments/services/comment-api.service.js +3 -3
  10. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +3 -3
  11. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +2 -2
  12. package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +2 -2
  13. package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +3 -3
  14. package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +3 -3
  15. package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +2 -2
  16. package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +2 -2
  17. package/esm2015/lib/components/cts-tags/services/tags-api.service.js +2 -2
  18. package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +6 -6
  19. package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +1 -1
  20. package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +23 -11
  21. package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +2 -2
  22. package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +2 -2
  23. package/esm2015/lib/components/documents/services/document-templates.service.js +3 -3
  24. package/esm2015/lib/components/documents/services/documents.service.js +3 -3
  25. package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +2 -2
  26. package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +2 -2
  27. package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +2 -2
  28. package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +2 -2
  29. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +3 -3
  30. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +2 -2
  31. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +2 -2
  32. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +5 -5
  33. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +3 -3
  34. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +2 -2
  35. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +2 -2
  36. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +2 -2
  37. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +4 -4
  38. package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +2 -2
  39. package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +2 -2
  40. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +2 -2
  41. package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +3 -3
  42. package/esm2015/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.js +3 -3
  43. package/esm2015/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.js +3 -3
  44. package/esm2015/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.js +2 -2
  45. package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +2 -2
  46. package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +2 -2
  47. package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +2 -2
  48. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +4 -4
  49. package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +2 -2
  50. package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +4 -4
  51. package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +5 -5
  52. package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +4 -4
  53. package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +3 -3
  54. package/esm2015/lib/components/file-manger/directives/file-grid-infinite-scroll.directive.js +78 -0
  55. package/esm2015/lib/components/file-manger/file-manager.abstract.js +459 -301
  56. package/esm2015/lib/components/file-manger/file-manger.module.js +10 -5
  57. package/esm2015/lib/components/file-manger/models/file-manager-config.model.js +7 -0
  58. package/esm2015/lib/components/file-manger/models/index.js +4 -0
  59. package/esm2015/lib/components/file-manger/models/pagination-payload.mode.js +2 -0
  60. package/esm2015/lib/components/file-manger/models/pagination-response.model.js +6 -0
  61. package/esm2015/lib/components/latest-activity/services/activity-log.service.js +3 -3
  62. package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +2 -2
  63. package/esm2015/lib/components/notifications/components/base-list-notfications.component.js +154 -0
  64. package/esm2015/lib/components/notifications/components/base-notifications.component.js +35 -0
  65. package/esm2015/lib/components/notifications/components/index.js +7 -0
  66. package/esm2015/lib/components/notifications/components/notification-item/get-icon.pipe.js +44 -0
  67. package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +41 -129
  68. package/esm2015/lib/components/notifications/components/notification-source-select/notification-source-select.component.js +34 -0
  69. package/esm2015/lib/components/notifications/components/notification-status-toggle/notification-status-toggle.component.js +26 -0
  70. package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +75 -165
  71. package/esm2015/lib/components/notifications/components/notifications-date-select/notifications-date-select.component.js +59 -0
  72. package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +53 -175
  73. package/esm2015/lib/components/notifications/components/notifications-list/options.js +24 -0
  74. package/esm2015/lib/components/notifications/components/notifications-list-actions/notifications-list-actions.component.js +43 -0
  75. package/esm2015/lib/components/notifications/components/notifications-settings/check-if-subscribed.pipe.js +28 -0
  76. package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.adapter.js +30 -0
  77. package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.component.js +163 -0
  78. package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar-content.js +28 -0
  79. package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar.component.js +158 -0
  80. package/esm2015/lib/components/notifications/constants/date.js +8 -0
  81. package/esm2015/lib/components/notifications/constants/index.js +5 -0
  82. package/esm2015/lib/components/notifications/constants/pagination.js +5 -0
  83. package/esm2015/lib/components/notifications/constants/panel.js +5 -0
  84. package/esm2015/lib/components/notifications/constants/status.js +10 -0
  85. package/esm2015/lib/components/notifications/containers/index.js +3 -0
  86. package/esm2015/lib/components/notifications/containers/notifications-list-container/notifications-list-container.component.js +98 -0
  87. package/esm2015/lib/components/notifications/containers/notifications-list-container/options.js +18 -0
  88. package/esm2015/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.js +67 -0
  89. package/esm2015/lib/components/notifications/directives/button.directive.js +28 -0
  90. package/esm2015/lib/components/notifications/directives/index.js +3 -0
  91. package/esm2015/lib/components/notifications/directives/notification.directive.js +28 -0
  92. package/esm2015/lib/components/notifications/index.js +2 -0
  93. package/esm2015/lib/components/notifications/models/common.js +2 -0
  94. package/esm2015/lib/components/notifications/models/index.js +11 -0
  95. package/esm2015/lib/components/notifications/models/notification-definition.model.js +2 -0
  96. package/esm2015/lib/components/notifications/models/notification-options.js +2 -0
  97. package/esm2015/lib/components/notifications/models/notification-setting.presenter.js +2 -0
  98. package/esm2015/lib/components/notifications/models/notification-subscription.model.js +2 -0
  99. package/esm2015/lib/components/notifications/models/notification.model.js +2 -0
  100. package/esm2015/lib/components/notifications/models/notifications-list-options.js +3 -0
  101. package/esm2015/lib/components/notifications/models/paging-response.model.js +2 -0
  102. package/esm2015/lib/components/notifications/models/params.model.js +2 -0
  103. package/esm2015/lib/components/notifications/models/vocabularies.js +2 -0
  104. package/esm2015/lib/components/notifications/notifications.module.js +80 -46
  105. package/esm2015/lib/components/notifications/public-api.js +9 -0
  106. package/esm2015/lib/components/notifications/services/index.js +2 -0
  107. package/esm2015/lib/components/notifications/services/listener.service.js +19 -0
  108. package/esm2015/lib/components/notifications/services/notifications.service.js +155 -0
  109. package/esm2015/lib/components/notifications/services/params.service.js +31 -0
  110. package/esm2015/lib/components/notifications/services/response.service.js +65 -0
  111. package/esm2015/lib/components/notifications/utilities/index.js +2 -0
  112. package/esm2015/lib/components/notifications/utilities/response.adapter.js +12 -0
  113. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +3 -3
  114. package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +2 -2
  115. package/esm2015/lib/components/permissions/permission.service.js +2 -2
  116. package/esm2015/lib/components/permissions/permissions/permissions.component.js +3 -3
  117. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +2 -2
  118. package/esm2015/lib/components/table/dynamic-column/dynamic-column.component.js +2 -2
  119. package/esm2015/lib/components/table/table/table.component.js +3 -3
  120. package/esm2015/lib/components/{notifications → toasts}/components/notification-toast/notification-toast.component.js +8 -12
  121. package/esm2015/lib/components/toasts/index.js +2 -0
  122. package/esm2015/lib/components/toasts/public-api.js +3 -0
  123. package/esm2015/lib/components/toasts/toasts.module.js +19 -0
  124. package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +2 -2
  125. package/esm2015/lib/components/vocabulary/translated-vocabulary-select/translated-vocabulary-select.component.js +2 -2
  126. package/esm2015/lib/core/adapters/adapter.service.js +1 -1
  127. package/esm2015/lib/core/core.module.js +1 -1
  128. package/esm2015/lib/core/env/env-manager.js +1 -1
  129. package/esm2015/lib/core/env/index.js +1 -1
  130. package/esm2015/lib/core/models/api-response.model.js +2 -0
  131. package/esm2015/lib/core/models/automation-response.model.js +2 -0
  132. package/esm2015/lib/core/models/base-response.models.js +2 -0
  133. package/esm2015/lib/core/models/index.js +5 -0
  134. package/esm2015/lib/core/services/callApi/call-api.service.js +1 -1
  135. package/esm2015/lib/core/services/extension/action.extensions.js +1 -1
  136. package/esm2015/lib/core/services/extension/component-register.service.js +1 -1
  137. package/esm2015/lib/core/services/extension/extenion-utils.js +1 -1
  138. package/esm2015/lib/core/services/extension/extension-element.js +1 -1
  139. package/esm2015/lib/core/services/extension/extension-loader.service.js +1 -1
  140. package/esm2015/lib/core/services/extension/extension.service.js +1 -1
  141. package/esm2015/lib/core/services/initialization/initialization.service.js +1 -1
  142. package/esm2015/lib/core/services/nuxeo/nuxeo.service.js +3 -3
  143. package/esm2015/lib/core/services/translation/translation.service.js +3 -3
  144. package/esm2015/lib/core/utilities/moment-date-adapter.js +1 -1
  145. package/esm2015/lib/core/utilities/utility.service.js +1 -1
  146. package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +2 -2
  147. package/esm2015/lib/directive/permissions/evaluators.service.js +2 -2
  148. package/esm2015/lib/directive/permissions/permissions.directive.js +2 -2
  149. package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +2 -2
  150. package/esm2015/lib/directive/rtl/set-rtl.directive.js +2 -2
  151. package/esm2015/lib/shared-services/dynamic-form.service.js +2 -2
  152. package/esm2015/lib/shared-services/file-manager.service.js +456 -222
  153. package/esm2015/lib/shared-services/global-admin.service.js +1 -1
  154. package/esm2015/lib/shared-services/mainfolder.service.js +3 -3
  155. package/esm2015/lib/shared-services/publishing-document.service.js +3 -3
  156. package/esm2015/lib/shared-services/recently-viewed.service.js +3 -3
  157. package/esm2015/lib/shared-services/shared-docs.service.js +3 -3
  158. package/esm2015/lib/shared-services/upload-file.service.js +2 -2
  159. package/esm2015/lib/shared-services/upload-managment.service.js +2 -2
  160. package/esm2015/lib/shared-services/user.service.js +3 -3
  161. package/esm2015/public-api.js +145 -149
  162. package/fesm2015/nuxeo-development-framework.js +24280 -23143
  163. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  164. package/lib/components/activities-log/activities-log/activities-log.service.d.ts +1 -1
  165. package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +1 -1
  166. package/lib/components/comments/components/comment-item/comment-item.component.d.ts +1 -1
  167. package/lib/components/comments/components/comments-dashlet/comments-dashlet.component.d.ts +1 -1
  168. package/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.d.ts +1 -1
  169. package/lib/components/comments/services/comment-api.service.d.ts +2 -2
  170. package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts +2 -2
  171. package/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.d.ts +1 -1
  172. package/lib/components/correspondence-relation/components/versions/versions.component.d.ts +1 -1
  173. package/lib/components/correspondence-relation/services/correspondence-realation.service.d.ts +2 -2
  174. package/lib/components/correspondence-relation/services/viewer-files.service.d.ts +2 -2
  175. package/lib/components/create-entity/create-entity/create-entity.component.d.ts +1 -1
  176. package/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.d.ts +1 -1
  177. package/lib/components/cts-tags/services/tags-api.service.d.ts +1 -1
  178. package/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.d.ts +1 -1
  179. package/lib/components/custom-toastr/interfaces/toast-type.interface.d.ts +1 -1
  180. package/lib/components/custom-toastr/services/custom-toastr.service.d.ts +8 -4
  181. package/lib/components/documents/components/attachments-list/attachments-list.component.d.ts +1 -1
  182. package/lib/components/documents/components/document-list/documents-list.component.d.ts +1 -1
  183. package/lib/components/documents/services/document-templates.service.d.ts +2 -2
  184. package/lib/components/documents/services/documents.service.d.ts +2 -2
  185. package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts +1 -1
  186. package/lib/components/dynamic-chart/services/chart-data.service.d.ts +1 -1
  187. package/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.d.ts +1 -1
  188. package/lib/components/dynamic-form/components/dynamic-form/form-builder.service.d.ts +1 -1
  189. package/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.d.ts +1 -1
  190. package/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.d.ts +1 -1
  191. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +1 -1
  192. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +4 -4
  193. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts +2 -2
  194. package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts +1 -1
  195. package/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.d.ts +1 -1
  196. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.d.ts +1 -1
  197. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +3 -3
  198. package/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.d.ts +1 -1
  199. package/lib/components/dynamic-form/services/dynamic-form-update.service.d.ts +1 -1
  200. package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts +1 -1
  201. package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +2 -2
  202. package/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.d.ts +2 -2
  203. package/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.d.ts +2 -2
  204. package/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.d.ts +1 -1
  205. package/lib/components/dynamic-view/date-viewer/date-viewer.component.d.ts +1 -1
  206. package/lib/components/dynamic-view/department-viewer/department-viewer.component.d.ts +1 -1
  207. package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts +1 -1
  208. package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +3 -3
  209. package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +1 -1
  210. package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +3 -3
  211. package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +3 -3
  212. package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +2 -2
  213. package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +2 -2
  214. package/lib/components/file-manger/directives/file-grid-infinite-scroll.directive.d.ts +12 -0
  215. package/lib/components/file-manger/file-manager.abstract.d.ts +20 -8
  216. package/lib/components/file-manger/file-manger.module.d.ts +37 -36
  217. package/lib/components/file-manger/models/file-manager-config.model.d.ts +8 -0
  218. package/lib/components/file-manger/models/index.d.ts +3 -0
  219. package/lib/components/file-manger/models/pagination-payload.mode.d.ts +3 -0
  220. package/lib/components/file-manger/models/pagination-response.model.d.ts +30 -0
  221. package/lib/components/latest-activity/services/activity-log.service.d.ts +2 -2
  222. package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +1 -1
  223. package/lib/components/notifications/components/base-list-notfications.component.d.ts +40 -0
  224. package/lib/components/notifications/components/base-notifications.component.d.ts +20 -0
  225. package/lib/components/notifications/components/index.d.ts +6 -0
  226. package/lib/components/notifications/components/notification-item/get-icon.pipe.d.ts +8 -0
  227. package/lib/components/notifications/components/notification-item/notification-item.component.d.ts +21 -22
  228. package/lib/components/notifications/components/notification-source-select/notification-source-select.component.d.ts +12 -0
  229. package/lib/components/notifications/components/notification-status-toggle/notification-status-toggle.component.d.ts +8 -0
  230. package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts +29 -30
  231. package/lib/components/notifications/components/notifications-date-select/notifications-date-select.component.d.ts +19 -0
  232. package/lib/components/notifications/components/notifications-list/notifications-list.component.d.ts +15 -54
  233. package/lib/components/notifications/components/notifications-list/options.d.ts +2 -0
  234. package/lib/components/notifications/components/notifications-list-actions/notifications-list-actions.component.d.ts +15 -0
  235. package/lib/components/notifications/components/notifications-settings/check-if-subscribed.pipe.d.ts +8 -0
  236. package/lib/components/notifications/components/notifications-settings/notifications-settings.adapter.d.ts +3 -0
  237. package/lib/components/notifications/components/notifications-settings/notifications-settings.component.d.ts +40 -0
  238. package/lib/components/notifications/components/notifications-sidebar/notifications-sidebar-content.d.ts +9 -0
  239. package/lib/components/notifications/components/notifications-sidebar/notifications-sidebar.component.d.ts +43 -0
  240. package/lib/components/notifications/constants/date.d.ts +7 -0
  241. package/lib/components/notifications/constants/index.d.ts +4 -0
  242. package/lib/components/notifications/constants/pagination.d.ts +4 -0
  243. package/lib/components/notifications/constants/panel.d.ts +4 -0
  244. package/lib/components/notifications/constants/status.d.ts +9 -0
  245. package/lib/components/notifications/containers/index.d.ts +2 -0
  246. package/lib/components/notifications/containers/notifications-list-container/notifications-list-container.component.d.ts +27 -0
  247. package/lib/components/notifications/containers/notifications-list-container/options.d.ts +2 -0
  248. package/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.d.ts +22 -0
  249. package/lib/components/notifications/directives/button.directive.d.ts +9 -0
  250. package/lib/components/notifications/directives/index.d.ts +2 -0
  251. package/lib/components/notifications/directives/notification.directive.d.ts +9 -0
  252. package/lib/components/notifications/index.d.ts +1 -0
  253. package/lib/components/notifications/models/common.d.ts +64 -0
  254. package/lib/components/notifications/models/index.d.ts +10 -0
  255. package/lib/components/notifications/models/notification-definition.model.d.ts +17 -0
  256. package/lib/components/notifications/models/notification-options.d.ts +7 -0
  257. package/lib/components/notifications/models/notification-setting.presenter.d.ts +24 -0
  258. package/lib/components/notifications/models/notification-subscription.model.d.ts +13 -0
  259. package/lib/components/notifications/models/notification.model.d.ts +16 -0
  260. package/lib/components/notifications/models/notifications-list-options.d.ts +34 -0
  261. package/lib/components/notifications/models/paging-response.model.d.ts +12 -0
  262. package/lib/components/notifications/models/params.model.d.ts +6 -0
  263. package/lib/components/notifications/models/vocabularies.d.ts +12 -0
  264. package/lib/components/notifications/notifications.module.d.ts +32 -16
  265. package/lib/components/notifications/public-api.d.ts +8 -0
  266. package/lib/components/notifications/services/index.d.ts +1 -0
  267. package/lib/components/notifications/services/listener.service.d.ts +8 -0
  268. package/lib/components/notifications/services/notifications.service.d.ts +55 -0
  269. package/lib/components/notifications/services/params.service.d.ts +19 -0
  270. package/lib/components/notifications/services/response.service.d.ts +19 -0
  271. package/lib/components/notifications/utilities/index.d.ts +1 -0
  272. package/lib/components/notifications/utilities/response.adapter.d.ts +3 -0
  273. package/lib/components/pdf-tron/pdftron/pdftron.component.d.ts +2 -2
  274. package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +1 -1
  275. package/lib/components/permissions/permission.service.d.ts +1 -1
  276. package/lib/components/permissions/permissions/permissions.component.d.ts +2 -2
  277. package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +1 -1
  278. package/lib/components/table/dynamic-column/dynamic-column.component.d.ts +1 -1
  279. package/lib/components/table/table/table.component.d.ts +2 -2
  280. package/lib/components/{notifications → toasts}/components/notification-toast/notification-toast.component.d.ts +2 -4
  281. package/lib/components/toasts/index.d.ts +1 -0
  282. package/lib/components/toasts/public-api.d.ts +2 -0
  283. package/lib/components/toasts/toasts.module.d.ts +8 -0
  284. package/lib/components/vocabulary/services/vocabulary-api.service.d.ts +1 -1
  285. package/lib/components/vocabulary/translated-vocabulary-select/translated-vocabulary-select.component.d.ts +1 -1
  286. package/lib/core/models/api-response.model.d.ts +24 -0
  287. package/lib/core/models/automation-response.model.d.ts +24 -0
  288. package/lib/core/models/base-response.models.d.ts +12 -0
  289. package/lib/core/models/index.d.ts +4 -0
  290. package/lib/core/services/nuxeo/nuxeo.service.d.ts +1 -1
  291. package/lib/core/services/translation/translation.service.d.ts +3 -3
  292. package/lib/directive/app-has-role/app-has-role.directive.d.ts +1 -1
  293. package/lib/directive/permissions/evaluators.service.d.ts +1 -1
  294. package/lib/directive/permissions/permissions.directive.d.ts +1 -1
  295. package/lib/directive/rtl/set-dir-rtl.directive.d.ts +1 -1
  296. package/lib/directive/rtl/set-rtl.directive.d.ts +1 -1
  297. package/lib/shared-services/dynamic-form.service.d.ts +1 -1
  298. package/lib/shared-services/file-manager.service.d.ts +27 -19
  299. package/lib/shared-services/mainfolder.service.d.ts +2 -2
  300. package/lib/shared-services/publishing-document.service.d.ts +2 -2
  301. package/lib/shared-services/recently-viewed.service.d.ts +2 -2
  302. package/lib/shared-services/shared-docs.service.d.ts +2 -2
  303. package/lib/shared-services/upload-file.service.d.ts +1 -1
  304. package/lib/shared-services/upload-managment.service.d.ts +1 -1
  305. package/lib/shared-services/user.service.d.ts +2 -2
  306. package/package.json +1 -1
  307. package/public-api.d.ts +139 -143
  308. package/esm2015/lib/components/notifications/components/notification-options/notification-options.component.js +0 -22
  309. package/esm2015/lib/components/notifications/notifications.service.js +0 -358
  310. package/lib/components/notifications/components/notification-options/notification-options.component.d.ts +0 -10
  311. package/lib/components/notifications/notifications.service.d.ts +0 -87
@@ -3,7 +3,7 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../../../shared-services/file-manager.service";
4
4
  import * as i2 from "../../../../shared-services/user.service";
5
5
  import * as i3 from "../../../custom-toastr/services/custom-toastr.service";
6
- import * as i4 from "../../../../Core/services/user/user-preferences.service";
6
+ import * as i4 from "../../../../core/services/user/user-preferences.service";
7
7
  import * as i5 from "@angular/material/icon";
8
8
  import * as i6 from "@angular/material/progress-bar";
9
9
  import * as i7 from "@angular/material/checkbox";
@@ -261,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
261
261
  }], directory: [{
262
262
  type: Input
263
263
  }] } });
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWE3RyxNQUFNLE9BQU8sa0JBQWtCO0lBaUI3QixZQUFvQixrQkFBc0MsRUFDaEQsV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLHFCQUE2QztRQUhuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQWxCN0MscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLG1CQUFjLEdBQUcsRUFBRSxDQUFDLENBQUMsb0NBQW9DO1FBRXpELG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRzlCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQyxDQUFDLDZEQUE2RDtRQUNyRixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxL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QUNuRyxrR0FBa0c7Z0JBQ2xHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO0lBQy9DLENBQUM7O2dIQXhRVSxrQkFBa0I7b0dBQWxCLGtCQUFrQiw0U0NiL0IsK2dMQXVGTTs0RkQxRU8sa0JBQWtCO2tCQU45QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDekMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzBNQUdXLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUUsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vQ29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY2xpcGJvYXJkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2xpcGJvYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jbGlwYm9hcmQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbGlwYm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkNsaXBib2FyZENsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJlZnJlc2hGb2xkZXJUcmVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoKSBjbGlwYm9hcmRJdGVtcyA9IFtdOyAvLyBhcnJheSBvZiBpZCB0byBpdGVtcyBpbiBjbGlwYm9hcmRcclxuICBASW5wdXQoKSBteUN1cnJlY250Rm9sZGVyRGF0YTtcclxuICBASW5wdXQoKSBwcmV2ZW50ZWRHcm91cHMgPSBbXTtcclxuICBASW5wdXQoKSBkaXJlY3Rvcnk7XHJcblxyXG4gIGNsaXBib2FyZERvY21lbnRzID0gW107IC8vIGFycmF5IG9mIGRvY3VtZW50cyB3aXRoIGZ1bGwgZGV0YWlscyBvZiBpdGVtcyBpbiBjbGlwYm9hcmRcclxuICBlbmFibGVDb3B5ID0gZmFsc2U7XHJcbiAgZW5hYmxlTW92ZSA9IGZhbHNlO1xyXG4gIGNsaXBib2FyZExvYWRpbmcgPSBmYWxzZTtcclxuICBkb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQgPSBbXTtcclxuICBteVRhcmdldEZvbGRlckFjY2VwdGVkQ2hpbGRyZW5zO1xyXG4gIHJlZnJlc2hDbGlwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlTWFuYWdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjdXN0b21Ub2FzdHJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZVNlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVmcmVzaENsaXBTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5vblJlZnJlc2hDbGlwYm9hcmQuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMub3BlbkNsaXBib2FyZCgpO1xyXG4gICAgfSlcclxuICAgIHRoaXMub3BlbkNsaXBib2FyZCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZnJlc2hDbGlwU3Vic2NyaXB0aW9uID8gdGhpcy5yZWZyZXNoQ2xpcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICB9XHJcbiAgY2xvc2VDbGlwYm9hcmQoKSB7XHJcbiAgICB0aGlzLm9uQ2xpcGJvYXJkQ2xvc2UuZW1pdCgpO1xyXG4gICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgb3BlbkNsaXBib2FyZCgpIHtcclxuICAgIHRoaXMuZW5hYmxlQ29weSA9IGZhbHNlO1xyXG4gICAgdGhpcy5lbmFibGVNb3ZlID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsaXBib2FyZExvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMubXlDdXJyZWNudEZvbGRlckRhdGEuZW50aXR5LnByb3BlcnRpZXNbJ2Rtc2ZvbGRlcjpkb2N1bWVudFR5cGVDb2RlJ10gJiYgdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSAhPT0gJzA4MTEyMDIxJykge1xyXG4gICAgICAvLyBnZXQgYWNjZXB0ZWQgY2hpbGRlcm5zIGZvciBteSBjdXJyZW50IGZvbGRlclxyXG4gICAgICAvLyBpZiAodGhpcy5zdWJ0eXBlc1NlcnZpY2Uuc3RvcmVkU3VidHlwZXNbdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkudWlkXSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5teVRhcmdldEZvbGRlckFjY2VwdGVkQ2hpbGRyZW5zID0gdGhpcy5zdWJ0eXBlc1NlcnZpY2Uuc3RvcmVkU3VidHlwZXNbdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkudWlkXTtcclxuICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWxlTWFuYWdlclNlcnZpY2UuZ2V0Q2xpcGJvYXJkQWNjZXB0ZWRUeXBlcyh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS51aWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucyA9IHJlcztcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2xpcGJvYXJkRG9jbWVudHMgPSBbXTtcclxuICAgICAgfSlcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY2xpcGJvYXJkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5nZXRDbGlwYm9hcmREb2N1bWVudHModGhpcy5jbGlwYm9hcmRJdGVtcykuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgcmVzLm1hcChkb2N1bWVudCA9PiB7XHJcbiAgICAgICAgICBkb2N1bWVudFsnY2FuQ29weVRvVGFyZ2V0J10gPSAodGhpcy5jYW5QZXJmb3JtQWN0aW9uSW5zaWRlVGFyZ2V0KGRvY3VtZW50KSAmJiB0aGlzLmNoZWNrSWZOb3RUaGVTYW1lUGFyZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC5jYW5Db3B5KTtcclxuICAgICAgICAgIGRvY3VtZW50WydjYW5Nb3ZlVG9UYXJnZXQnXSA9ICh0aGlzLmNhblBlcmZvcm1BY3Rpb25JbnNpZGVUYXJnZXQoZG9jdW1lbnQpICYmIHRoaXMuY2hlY2tJZk5vdFRoZVNhbWVQYXJlbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50LmNhbk1vdmUpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzID0gcmVzO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2xpcGJvYXJkRG9jbWVudHMpO1xyXG4gICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cyA9IFtdO1xyXG4gICAgICB0aGlzLmNsaXBib2FyZExvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHByZXZlbnQgY29weWluZyBvciBtb3ZpbmcgdGhlIGZpbGUgdG8gaXRzIHNhbWUgcGxhY2Ugc2luY2UgaXQgaXMgcHJldmVudGVkIFxyXG4gIC8vIHByZXZlbnQgY29weWluZyBvciBtb3ZpbmcgdGhlIGZvbGRlciBpbnNpZGUgaXQgc2VsZlxyXG4gIGNoZWNrSWZOb3RUaGVTYW1lUGFyZW50KGRvY3VtZW50KSB7XHJcbiAgICAvLyBsZXQgZGlyZWN0b3J5ID0gdGhpcy5nZXRDdXJyZW50RGlyZWN0b3J5KCk7XHJcbiAgICBpZiAoZG9jdW1lbnQucGFyZW50UmVmICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCAmJiBkb2N1bWVudC51aWQgIT09IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLmlkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZWZyb21DbGlwYm9hcmQoZG9jdW1lbnQpIHtcclxuICAgIGxldCBteWluZGV4ID0gLTE7XHJcbiAgICB0aGlzLmNsaXBib2FyZEl0ZW1zLm1hcCgoaWQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChkb2N1bWVudC51aWQgPT09IGlkKSB7XHJcbiAgICAgICAgbXlpbmRleCA9IGluZGV4XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLmNsaXBib2FyZEl0ZW1zLnNwbGljZShteWluZGV4LCAxKTtcclxuICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5yZW1vdmVkX2Zyb21fY2xpcGJvYXJkXCIpO1xyXG4gICAgLy8gbGV0IGRpcmVjdG9yeSA9IHRoaXMuZ2V0Q3VycmVudERpcmVjdG9yeSgpO1xyXG4gICAgLy8gbGV0IGlkID1cclxuICAgIC8vICAgICBkaXJlY3RvcnkuZGF0YUl0ZW0gPT09IHVuZGVmaW5lZFxyXG4gICAgLy8gICAgICAgICA/IHRoaXMubWFpbkZvbGRlclxyXG4gICAgLy8gICAgICAgICA6IHRoaXMuZ2V0Q3VycmVudEZvbGRlcklkKGRpcmVjdG9yeSk7XHJcbiAgICAvLyB0aGlzLnJlaW5pdGlhbGl6ZUZvbGRlclRyZWUoaWQsIGRpcmVjdG9yeSk7XHJcbiAgICB0aGlzLm9uUmVmcmVzaEZvbGRlclRyZWUuZW1pdCgpO1xyXG4gICAgdGhpcy5vcGVuQ2xpcGJvYXJkKCk7XHJcbiAgICB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5zZXQoJ2NsaXBib2FyZEl0ZW1zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5jbGlwYm9hcmRJdGVtcykpO1xyXG4gIH1cclxuXHJcbiAgLy8gZnVuY3Rpb24gdG8gY2hlY2sgaWYgaSBjYW4gcGVyZm9ybSBhY3Rpb24gb24gdGhhdCB0YXJnZXQgZm9sZGVyIG9yIG5vdCBcclxuICBjYW5QZXJmb3JtQWN0aW9uSW5zaWRlVGFyZ2V0KGRvY3VtZW50KSB7XHJcbiAgICAvL2NoZWNrIGlmIHRhcmdldCBpcyAnb3RoZXInIHR5cGUgZm9sZGVyIG9yIGRtcyBmb2xkZXJcclxuICAgIGlmICh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddID09PSAnMDgxMTIwMjEnICYmICF0aGlzLmNoZWNrSWZJblByZXZlbnRlZEdyb3Vwcyh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wYXRoKSkge1xyXG4gICAgICAvLyBpZiBteSBmb2xkZXIgaXMgZnJvbSB0eXBlIG90aGVycyBhbmQgbm90IGluIHByZXZlbnRlZCBncm91cHNcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH0gZWxzZSBpZiAodGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSAmJiB0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddICE9PSAnMDgxMTIwMjEnKSB7XHJcbiAgICAgIC8vaWYgbXkgZm9sZGVyIGhhcyBjb2RlIGFuZCB3YXMgbm90IG90aGVyIHR5cGUgZm9sZGVyIHRoZW4gY2hlY2sgZm9yIGFjY2VwdGVkIGNoaWxyZHJuIGZvciB0aGF0IGZvbGRlciB0byBjb250YWluIHRoaXMgZmlsZSB0eXBlXHJcbiAgICAgIGlmIChkb2N1bWVudC5pc0ZpbGUgPT09ICdGaWxlJykge1xyXG4gICAgICAgIGlmICh0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMgJiZcclxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbikgJiZcclxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbi5pbmRleE9mKGRvY3VtZW50LnByb3BlcnRpZXNbJ2dkb2M6ZG9jdW1lbnRUeXBlQ29kZSddKSA+IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMgJiZcclxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbikgJiZcclxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycz8uYWNjZXB0ZWRfY2hpbGRyZW4uaW5kZXhPZihkb2N1bWVudC5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddKSA+IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBwcmV2ZW50IGFjdGlvbiB0byB0aGlzIHRhcmdldCBcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLy8gZnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhpcyBwYXRoIG5vdCBiZWxvbmcgdG8gZ3JvdXAgdGhhdCBpcyBwcmV2ZW50ZWQgZnJvbSBjcmVhdGluZyBmb2xkZXIgb2YgdHlwZSBvdGhlcnNcclxuICBjaGVja0lmSW5QcmV2ZW50ZWRHcm91cHMocGF0aCkge1xyXG4gICAgLy8gaWYgaW4gcHJldmVudGVkIGZyb3VwIHJ0dXJuIHRydWUgZWxzZSByZXR1cm4gZmFsc2VcclxuICAgIGNvbnNvbGUubG9nKHBhdGgpO1xyXG4gICAgbGV0IG15RGVwYXJ0bWVudCA9IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckRlcGFydG1lbnRGcm9tUGF0aChwYXRoKTtcclxuICAgIGxldCBleGlzdCA9IHRoaXMucHJldmVudGVkR3JvdXBzLmluZGV4T2YobXlEZXBhcnRtZW50KSA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgcmV0dXJuIGV4aXN0O1xyXG4gIH1cclxuXHJcbiAgY29weUZyb21JbnNpZGVDbGlwYm9hcmQoKSB7XHJcbiAgICBsZXQgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgbGV0IGNsaXBib2FyZFNlbGVjdGVkSXRlbXNMZW5ndGggPSAwO1xyXG4gICAgLy8gc2VwZXJhdGUgc2VsZWN0ZWQgaXRlbXMgaW4gc2VwZXJhdGUgYXJyYXkgXHJcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzLm1hcCgoZG9jLCBpbmRleCkgPT4ge1xyXG4gICAgICAvLyBjYW4ndCBjb3B5IGZpbGUgaW4gdGhlIHNhbWUgcGxhY2UgaXQgZXhpc3QgYW5kIGNhbid0IGNvcHkgZm9sZGVyIGluc2lkZSBpdCBzZWxmIFxyXG4gICAgICBpZiAoZG9jLmlzU2VsZWN0ZWQgJiYgZG9jLnBhcmVudFJlZiAhPT0gdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQgJiYgZG9jLnVpZCAhPT0gdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQpIHtcclxuICAgICAgICBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnB1c2goZG9jLnVpZClcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAoY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIC8vICAgIHRoaXMuY3VycmVudFBhdGggPSAnJztcclxuICAgICAgdGhpcy5maWxlTWFuYWdlclNlcnZpY2VcclxuICAgICAgICAuY29weVRvKHsgaWQ6IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLmlkLCBuYW1lOiB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5uYW1lIH0sIGNsaXBib2FyZFNlbGVjdGVkSXRlbXMudG9TdHJpbmcoKSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgc2VsZWN0ZWQgaXRlbXMgZnJvbSBjbGlwYm9hcmQgYWZ0ZXIgYWN0aW9uIGlzIGRvbmVcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtc0FmdGVyQWN0aW9uRG9uZShjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub25DbGlwYm9hcmRDbG9zZS5lbWl0KCk7XHJcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRm9sZGVyVHJlZS5lbWl0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxyXG4gICAgICAgICAgICAgICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5TVUNDRVNTJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9DT1BJRUQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgICAgICAgJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5FUlJPUicsXHJcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfQ09QSUVEX0VSUk9SJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcclxuICAgICAgICAnZXJyb3InLFxyXG4gICAgICAgICdUT0FTVEVSLkVSUk9SJyxcclxuICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9DT1BJRURfREVTVElOQVRJT05fRVJST1InXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbW92ZUZyb21JbnNpZGVDbGlwYm9hcmQoKSB7XHJcbiAgICBsZXQgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgbGV0IGNsaXBib2FyZFNlbGVjdGVkSXRlbXNMZW5ndGggPSAwO1xyXG4gICAgLy8gc2VwZXJhdGUgc2VsZWN0ZWQgaXRlbXMgaW4gc2VwZXJhdGUgYXJyYXkgXHJcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzLm1hcCgoZG9jLCBpbmRleCkgPT4ge1xyXG4gICAgICAvLyBjYW4ndCBtb3ZlIGZpbGUgaW4gdGhlIHNhbWUgcGxhY2UgaXQgZXhpc3QgYW5kIGNhbid0IG1vdmUgZm9sZGVyIGluc2lkZSBpdCBzZWxmIFxyXG4gICAgICBpZiAoZG9jLmlzU2VsZWN0ZWQgJiYgZG9jLnBhcmVudFJlZiAhPT0gdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQgJiYgZG9jLnVpZCAhPT0gdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQpIHtcclxuICAgICAgICBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnB1c2goZG9jLnVpZClcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAoY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlXHJcbiAgICAgICAgLm1vdmVUbyh7IGlkOiB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCwgbmFtZTogdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0ubmFtZSB9LCBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIHNlbGVjdGVkIGl0ZW1zIGZyb20gY2xpcGJvYXJkIGFmdGVyIGFjdGlvbiBpcyBkb25lXHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbXNBZnRlckFjdGlvbkRvbmUoY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2xpcGJvYXJkQ2xvc2UuZW1pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaEZvbGRlclRyZWUuZW1pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcclxuICAgICAgICAgICAgICAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgJ1RPQVNURVIuU1VDQ0VTUycsXHJcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfTU9WRUQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgICAgICAgJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5FUlJPUicsXHJcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfTU9WRURfRVJST1InXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0gZWxzZVxyXG4gICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcclxuICAgICAgICAnZXJyb3InLFxyXG4gICAgICAgICdUT0FTVEVSLkVSUk9SJyxcclxuICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9NT1ZFRF9ERVNUSU5BVElPTl9FUlJPUidcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW1zQWZ0ZXJBY3Rpb25Eb25lKHNlbGVjdGVkSXRlbXMpIHtcclxuICAgIHRoaXMuY2xpcGJvYXJkSXRlbXMgPSB0aGlzLmNsaXBib2FyZEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcclxuICAgICAgcmV0dXJuICFzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGVsKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2Uuc2V0KCdjbGlwYm9hcmRJdGVtcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2xpcGJvYXJkSXRlbXMpKTtcclxuICB9XHJcblxyXG4gIGNoZWNraW5nKCkge1xyXG4gICAgdGhpcy5lbmFibGVDb3B5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZU1vdmUgPSBmYWxzZTtcclxuICAgIHRoaXMuZG9jdW1lbnRTZWxlY3RlZEluQ2xpcGJvYXJkID0gW107XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNsaXBib2FyZERvY21lbnRzKTtcclxuICAgIHRoaXMuY2xpcGJvYXJkRG9jbWVudHMubWFwKGRvY3VtZW50ID0+IHtcclxuICAgICAgLy8gd29rcmluZyB3aXRoIG9ubHkgc2VsZWN0ZWQgZG9jdW1lbnRzIFxyXG4gICAgICBpZiAoZG9jdW1lbnQuaXNTZWxlY3RlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIC8vIGRvY3VtZW50WydjYW5Db3B5VG9UYXJnZXQnXSA9ICh0aGlzLmNhblBlcmZvcm1BY3Rpb25JbnNpZGVUYXJnZXQoZG9jdW1lbnQpICYmIGRvY3VtZW50LmNhbkNvcHkpO1xyXG4gICAgICAgIC8vIGRvY3VtZW50WydjYW5Nb3ZlVG9UYXJnZXQnXSA9ICh0aGlzLmNhblBlcmZvcm1BY3Rpb25JbnNpZGVUYXJnZXQoZG9jdW1lbnQpICYmIGRvY3VtZW50LmNhbk1vdmUpXHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQucHVzaChkb2N1bWVudClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLmRvY3VtZW50U2VsZWN0ZWRJbkNsaXBib2FyZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZW5hYmxlQ29weSA9IHRoaXMuZG9jdW1lbnRTZWxlY3RlZEluQ2xpcGJvYXJkLmV2ZXJ5KGl0ZW0gPT4ge1xyXG4gICAgICAgIHJldHVybiBpdGVtLmNhbkNvcHlUb1RhcmdldCA9PT0gdHJ1ZTtcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lbmFibGVNb3ZlID0gdGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQuZXZlcnkoaXRlbSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2FuTW92ZVRvVGFyZ2V0ID09PSB0cnVlO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2codGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQpXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjbGlwYm9hcmQtc2lkZS1zZWN0aW9uIHJlbGF0aXZlXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInAtMyBoLWZ1bGxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpcGJvYXJkLWhlYWRlciBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgYm9yZGVyLWItMlwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggdGV4dC1ncmF5LTUwMCBmb250LWJvbGQgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtNHhsIGJpIGJpLWNsaXBib2FyZFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMiB0ZXh0LXhsXCI+e3snY2xpcGJvYXJkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNsb3NlLWljb24gdGV4dC1ncmF5LTUwMCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbG9zZUNsaXBib2FyZCgpXCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidCVVRUT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJoLWZ1bGwgZm9udC1ib2xkIGQtZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIiAqbmdJZj1cImNsaXBib2FyZExvYWRpbmdcIj5cclxuICAgICAgICAgICAge3sgXCJsb2FkaW5nXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBoLXB4IGJnLWdyYXktMjAwIG1iLTNcIiAqbmdJZj1cImNsaXBib2FyZExvYWRpbmdcIj5cclxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNsaXBib2FyZC1jb250ZW50IGZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB0ZXh0LWdyYXktNTAwXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2xpcGJvYXJkRG9jbWVudHMubGVuZ3RoID09PSAwXCI+e3snbm9fY2xpcGJvYXJkX2l0ZW1zJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBoLTUvNiBvdmVyZmxvdy15LWF1dG9cIiAqbmdJZj1cImNsaXBib2FyZERvY21lbnRzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYi0yXCIgKm5nRm9yPVwibGV0IGRvY3VtZW50IG9mIGNsaXBib2FyZERvY21lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTEgdy04MiBmbGV4ICBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB3LTUvNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImRvY3VtZW50LmlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cImNoZWNraW5nKClcIj4gPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0aXRsZS13aXRoLWljb24gY2xhc3M9XCJ3LTEvNiAtbXktMS41XCIgW2NvbnRleHRdPVwiZG9jdW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpdGxlXT1cImZhbHNlXCI+PC90aXRsZS13aXRoLWljb24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1kaXNwbGF5LXN1aXRhYmxlLWljb24gY2xhc3M9XCJteC0xXCIgW2RhdGFdPVwiZG9jdW1lbnRcIiBbc2l6ZV09XCInNDBweCdcIj48L2FwcC1kaXNwbGF5LXN1aXRhYmxlLWljb24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkb2N1bWVudC5pc0ZpbGUgPT09ICdGaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwianVzdGlmeS1jZW50ZXIgZmxleCBmbGV4LWNvbCBmbGV4LTEgZmxleC1ncm93LTAgdy01LzZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSB0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0cnVuY2F0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZG9jdW1lbnQucHJvcGVydGllcz8uWydmaWxlOmNvbnRlbnQnXT8uWyduYW1lJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJkb2N1bWVudC5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ25hbWUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkb2N1bWVudFsndGl0bGUnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCB0ZXh0LXNtIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eygoZG9jdW1lbnQucHJvcGVydGllcz8uWydmaWxlOmNvbnRlbnQnXT8uWydsZW5ndGgnXSkgLyAoMTAyNCAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDI0KSkudG9GaXhlZCgyKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC1mbGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy1jZW50ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYmFzZSB0ZXh0LWdyYXktNTAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWJvbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJkb2N1bWVudC5pc0ZpbGUgPT09ICdGb2xkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50Py50aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbWF0VG9vbHRpcF09XCInQlVUVE9OUy5SRU1PVkVfQ0xJUEJPQVJEJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHctNSBoLTUgcm91bmRlZC1mdWxsIGJvcmRlci0yIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGJvcmRlci1ncmF5LTUwMCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZWZyb21DbGlwYm9hcmQoZG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS01MDAgYmkgYmkteCB0ZXh0LWxnIGZsZXggaXRlbXMtY2VudGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgdGV4dC1ncmF5LTUwMCB0ZXh0LWNlbnRlciBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZG9jdW1lbnQuY2FuQ29weVRvVGFyZ2V0ICYmICFkb2N1bWVudC5jYW5Nb3ZlVG9UYXJnZXRcIj57eydjYW5fY29weV9vbmx5JyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZG9jdW1lbnQuY2FuQ29weVRvVGFyZ2V0ICYmIGRvY3VtZW50LmNhbk1vdmVUb1RhcmdldFwiPnt7J2Nhbl9tb3ZlX29ubHknIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRvY3VtZW50LmNhbkNvcHlUb1RhcmdldCAmJiBkb2N1bWVudC5jYW5Nb3ZlVG9UYXJnZXRcIj57eydjYW5fY29weV9hbmRfbW92ZScgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkb2N1bWVudC5jYW5Db3B5VG9UYXJnZXQgJiYgIWRvY3VtZW50LmNhbk1vdmVUb1RhcmdldFwiPnt7J2Nhbl9ub3RfY29weV9hbmRfbW92ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xLzYgZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWlzc2lvbi1idXR0b24gbXgtMlwiIFtkaXNhYmxlZF09XCIhZW5hYmxlQ29weVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlGcm9tSW5zaWRlQ2xpcGJvYXJkKClcIj57eydCVVRUT05TLkNPUFknIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvbiBteC0yXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVNb3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUZyb21JbnNpZGVDbGlwYm9hcmQoKVwiPnt7J0JVVFRPTlMuTU9WRScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJiZy10cmFuc3BhcmVudCBhYnNvbHV0ZSB0b3AtMCBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCBcIiAqbmdJZj1cImNsaXBib2FyZExvYWRpbmdcIj5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWE3RyxNQUFNLE9BQU8sa0JBQWtCO0lBaUI3QixZQUFvQixrQkFBc0MsRUFDaEQsV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLHFCQUE2QztRQUhuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQWxCN0MscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLG1CQUFjLEdBQUcsRUFBRSxDQUFDLENBQUMsb0NBQW9DO1FBRXpELG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRzlCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQyxDQUFDLDZEQUE2RDtRQUNyRixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxL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QUNuRyxrR0FBa0c7Z0JBQ2xHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO0lBQy9DLENBQUM7O2dIQXhRVSxrQkFBa0I7b0dBQWxCLGtCQUFrQiw0U0NiL0IsK2dMQXVGTTs0RkQxRU8sa0JBQWtCO2tCQU45QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDekMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzBNQUdXLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUUsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY2xpcGJvYXJkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2xpcGJvYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jbGlwYm9hcmQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbGlwYm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkNsaXBib2FyZENsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJlZnJlc2hGb2xkZXJUcmVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoKSBjbGlwYm9hcmRJdGVtcyA9IFtdOyAvLyBhcnJheSBvZiBpZCB0byBpdGVtcyBpbiBjbGlwYm9hcmRcclxuICBASW5wdXQoKSBteUN1cnJlY250Rm9sZGVyRGF0YTtcclxuICBASW5wdXQoKSBwcmV2ZW50ZWRHcm91cHMgPSBbXTtcclxuICBASW5wdXQoKSBkaXJlY3Rvcnk7XHJcblxyXG4gIGNsaXBib2FyZERvY21lbnRzID0gW107IC8vIGFycmF5IG9mIGRvY3VtZW50cyB3aXRoIGZ1bGwgZGV0YWlscyBvZiBpdGVtcyBpbiBjbGlwYm9hcmRcclxuICBlbmFibGVDb3B5ID0gZmFsc2U7XHJcbiAgZW5hYmxlTW92ZSA9IGZhbHNlO1xyXG4gIGNsaXBib2FyZExvYWRpbmcgPSBmYWxzZTtcclxuICBkb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQgPSBbXTtcclxuICBteVRhcmdldEZvbGRlckFjY2VwdGVkQ2hpbGRyZW5zO1xyXG4gIHJlZnJlc2hDbGlwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlTWFuYWdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjdXN0b21Ub2FzdHJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZVNlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVmcmVzaENsaXBTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5vblJlZnJlc2hDbGlwYm9hcmQuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMub3BlbkNsaXBib2FyZCgpO1xyXG4gICAgfSlcclxuICAgIHRoaXMub3BlbkNsaXBib2FyZCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZnJlc2hDbGlwU3Vic2NyaXB0aW9uID8gdGhpcy5yZWZyZXNoQ2xpcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICB9XHJcbiAgY2xvc2VDbGlwYm9hcmQoKSB7XHJcbiAgICB0aGlzLm9uQ2xpcGJvYXJkQ2xvc2UuZW1pdCgpO1xyXG4gICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgb3BlbkNsaXBib2FyZCgpIHtcclxuICAgIHRoaXMuZW5hYmxlQ29weSA9IGZhbHNlO1xyXG4gICAgdGhpcy5lbmFibGVNb3ZlID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsaXBib2FyZExvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMubXlDdXJyZWNudEZvbGRlckRhdGEuZW50aXR5LnByb3BlcnRpZXNbJ2Rtc2ZvbGRlcjpkb2N1bWVudFR5cGVDb2RlJ10gJiYgdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSAhPT0gJzA4MTEyMDIxJykge1xyXG4gICAgICAvLyBnZXQgYWNjZXB0ZWQgY2hpbGRlcm5zIGZvciBteSBjdXJyZW50IGZvbGRlclxyXG4gICAgICAvLyBpZiAodGhpcy5zdWJ0eXBlc1NlcnZpY2Uuc3RvcmVkU3VidHlwZXNbdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkudWlkXSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5teVRhcmdldEZvbGRlckFjY2VwdGVkQ2hpbGRyZW5zID0gdGhpcy5zdWJ0eXBlc1NlcnZpY2Uuc3RvcmVkU3VidHlwZXNbdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkudWlkXTtcclxuICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWxlTWFuYWdlclNlcnZpY2UuZ2V0Q2xpcGJvYXJkQWNjZXB0ZWRUeXBlcyh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS51aWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucyA9IHJlcztcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2xpcGJvYXJkRG9jbWVudHMgPSBbXTtcclxuICAgICAgfSlcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY2xpcGJvYXJkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5nZXRDbGlwYm9hcmREb2N1bWVudHModGhpcy5jbGlwYm9hcmRJdGVtcykuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgcmVzLm1hcChkb2N1bWVudCA9PiB7XHJcbiAgICAgICAgICBkb2N1bWVudFsnY2FuQ29weVRvVGFyZ2V0J10gPSAodGhpcy5jYW5QZXJmb3JtQWN0aW9uSW5zaWRlVGFyZ2V0KGRvY3VtZW50KSAmJiB0aGlzLmNoZWNrSWZOb3RUaGVTYW1lUGFyZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC5jYW5Db3B5KTtcclxuICAgICAgICAgIGRvY3VtZW50WydjYW5Nb3ZlVG9UYXJnZXQnXSA9ICh0aGlzLmNhblBlcmZvcm1BY3Rpb25JbnNpZGVUYXJnZXQoZG9jdW1lbnQpICYmIHRoaXMuY2hlY2tJZk5vdFRoZVNhbWVQYXJlbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50LmNhbk1vdmUpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzID0gcmVzO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2xpcGJvYXJkRG9jbWVudHMpO1xyXG4gICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cyA9IFtdO1xyXG4gICAgICB0aGlzLmNsaXBib2FyZExvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHByZXZlbnQgY29weWluZyBvciBtb3ZpbmcgdGhlIGZpbGUgdG8gaXRzIHNhbWUgcGxhY2Ugc2luY2UgaXQgaXMgcHJldmVudGVkIFxyXG4gIC8vIHByZXZlbnQgY29weWluZyBvciBtb3ZpbmcgdGhlIGZvbGRlciBpbnNpZGUgaXQgc2VsZlxyXG4gIGNoZWNrSWZOb3RUaGVTYW1lUGFyZW50KGRvY3VtZW50KSB7XHJcbiAgICAvLyBsZXQgZGlyZWN0b3J5ID0gdGhpcy5nZXRDdXJyZW50RGlyZWN0b3J5KCk7XHJcbiAgICBpZiAoZG9jdW1lbnQucGFyZW50UmVmICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCAmJiBkb2N1bWVudC51aWQgIT09IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLmlkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZWZyb21DbGlwYm9hcmQoZG9jdW1lbnQpIHtcclxuICAgIGxldCBteWluZGV4ID0gLTE7XHJcbiAgICB0aGlzLmNsaXBib2FyZEl0ZW1zLm1hcCgoaWQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChkb2N1bWVudC51aWQgPT09IGlkKSB7XHJcbiAgICAgICAgbXlpbmRleCA9IGluZGV4XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLmNsaXBib2FyZEl0ZW1zLnNwbGljZShteWluZGV4LCAxKTtcclxuICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5yZW1vdmVkX2Zyb21fY2xpcGJvYXJkXCIpO1xyXG4gICAgLy8gbGV0IGRpcmVjdG9yeSA9IHRoaXMuZ2V0Q3VycmVudERpcmVjdG9yeSgpO1xyXG4gICAgLy8gbGV0IGlkID1cclxuICAgIC8vICAgICBkaXJlY3RvcnkuZGF0YUl0ZW0gPT09IHVuZGVmaW5lZFxyXG4gICAgLy8gICAgICAgICA/IHRoaXMubWFpbkZvbGRlclxyXG4gICAgLy8gICAgICAgICA6IHRoaXMuZ2V0Q3VycmVudEZvbGRlcklkKGRpcmVjdG9yeSk7XHJcbiAgICAvLyB0aGlzLnJlaW5pdGlhbGl6ZUZvbGRlclRyZWUoaWQsIGRpcmVjdG9yeSk7XHJcbiAgICB0aGlzLm9uUmVmcmVzaEZvbGRlclRyZWUuZW1pdCgpO1xyXG4gICAgdGhpcy5vcGVuQ2xpcGJvYXJkKCk7XHJcbiAgICB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5zZXQoJ2NsaXBib2FyZEl0ZW1zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5jbGlwYm9hcmRJdGVtcykpO1xyXG4gIH1cclxuXHJcbiAgLy8gZnVuY3Rpb24gdG8gY2hlY2sgaWYgaSBjYW4gcGVyZm9ybSBhY3Rpb24gb24gdGhhdCB0YXJnZXQgZm9sZGVyIG9yIG5vdCBcclxuICBjYW5QZXJmb3JtQWN0aW9uSW5zaWRlVGFyZ2V0KGRvY3VtZW50KSB7XHJcbiAgICAvL2NoZWNrIGlmIHRhcmdldCBpcyAnb3RoZXInIHR5cGUgZm9sZGVyIG9yIGRtcyBmb2xkZXJcclxuICAgIGlmICh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddID09PSAnMDgxMTIwMjEnICYmICF0aGlzLmNoZWNrSWZJblByZXZlbnRlZEdyb3Vwcyh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wYXRoKSkge1xyXG4gICAgICAvLyBpZiBteSBmb2xkZXIgaXMgZnJvbSB0eXBlIG90aGVycyBhbmQgbm90IGluIHByZXZlbnRlZCBncm91cHNcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH0gZWxzZSBpZiAodGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSAmJiB0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddICE9PSAnMDgxMTIwMjEnKSB7XHJcbiAgICAgIC8vaWYgbXkgZm9sZGVyIGhhcyBjb2RlIGFuZCB3YXMgbm90IG90aGVyIHR5cGUgZm9sZGVyIHRoZW4gY2hlY2sgZm9yIGFjY2VwdGVkIGNoaWxyZHJuIGZvciB0aGF0IGZvbGRlciB0byBjb250YWluIHRoaXMgZmlsZSB0eXBlXHJcbiAgICAgIGlmIChkb2N1bWVudC5pc0ZpbGUgPT09ICdGaWxlJykge1xyXG4gICAgICAgIGlmICh0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMgJiZcclxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbikgJiZcclxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbi5pbmRleE9mKGRvY3VtZW50LnByb3BlcnRpZXNbJ2dkb2M6ZG9jdW1lbnRUeXBlQ29kZSddKSA+IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMgJiZcclxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbikgJiZcclxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycz8uYWNjZXB0ZWRfY2hpbGRyZW4uaW5kZXhPZihkb2N1bWVudC5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddKSA+IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBwcmV2ZW50IGFjdGlvbiB0byB0aGlzIHRhcmdldCBcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLy8gZnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhpcyBwYXRoIG5vdCBiZWxvbmcgdG8gZ3JvdXAgdGhhdCBpcyBwcmV2ZW50ZWQgZnJvbSBjcmVhdGluZyBmb2xkZXIgb2YgdHlwZSBvdGhlcnNcclxuICBjaGVja0lmSW5QcmV2ZW50ZWRHcm91cHMocGF0aCkge1xyXG4gICAgLy8gaWYgaW4gcHJldmVudGVkIGZyb3VwIHJ0dXJuIHRydWUgZWxzZSByZXR1cm4gZmFsc2VcclxuICAgIGNvbnNvbGUubG9nKHBhdGgpO1xyXG4gICAgbGV0IG15RGVwYXJ0bWVudCA9IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckRlcGFydG1lbnRGcm9tUGF0aChwYXRoKTtcclxuICAgIGxldCBleGlzdCA9IHRoaXMucHJldmVudGVkR3JvdXBzLmluZGV4T2YobXlEZXBhcnRtZW50KSA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgcmV0dXJuIGV4aXN0O1xyXG4gIH1cclxuXHJcbiAgY29weUZyb21JbnNpZGVDbGlwYm9hcmQoKSB7XHJcbiAgICBsZXQgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgbGV0IGNsaXBib2FyZFNlbGVjdGVkSXRlbXNMZW5ndGggPSAwO1xyXG4gICAgLy8gc2VwZXJhdGUgc2VsZWN0ZWQgaXRlbXMgaW4gc2VwZXJhdGUgYXJyYXkgXHJcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzLm1hcCgoZG9jLCBpbmRleCkgPT4ge1xyXG4gICAgICAvLyBjYW4ndCBjb3B5IGZpbGUgaW4gdGhlIHNhbWUgcGxhY2UgaXQgZXhpc3QgYW5kIGNhbid0IGNvcHkgZm9sZGVyIGluc2lkZSBpdCBzZWxmIFxyXG4gICAgICBpZiAoZG9jLmlzU2VsZWN0ZWQgJiYgZG9jLnBhcmVudFJlZiAhPT0gdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQgJiYgZG9jLnVpZCAhPT0gdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQpIHtcclxuICAgICAgICBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnB1c2goZG9jLnVpZClcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAoY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIC8vICAgIHRoaXMuY3VycmVudFBhdGggPSAnJztcclxuICAgICAgdGhpcy5maWxlTWFuYWdlclNlcnZpY2VcclxuICAgICAgICAuY29weVRvKHsgaWQ6IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLmlkLCBuYW1lOiB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5uYW1lIH0sIGNsaXBib2FyZFNlbGVjdGVkSXRlbXMudG9TdHJpbmcoKSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgc2VsZWN0ZWQgaXRlbXMgZnJvbSBjbGlwYm9hcmQgYWZ0ZXIgYWN0aW9uIGlzIGRvbmVcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtc0FmdGVyQWN0aW9uRG9uZShjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub25DbGlwYm9hcmRDbG9zZS5lbWl0KCk7XHJcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRm9sZGVyVHJlZS5lbWl0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxyXG4gICAgICAgICAgICAgICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5TVUNDRVNTJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9DT1BJRUQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgICAgICAgJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5FUlJPUicsXHJcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfQ09QSUVEX0VSUk9SJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcclxuICAgICAgICAnZXJyb3InLFxyXG4gICAgICAgICdUT0FTVEVSLkVSUk9SJyxcclxuICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9DT1BJRURfREVTVElOQVRJT05fRVJST1InXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbW92ZUZyb21JbnNpZGVDbGlwYm9hcmQoKSB7XHJcbiAgICBsZXQgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgbGV0IGNsaXBib2FyZFNlbGVjdGVkSXRlbXNMZW5ndGggPSAwO1xyXG4gICAgLy8gc2VwZXJhdGUgc2VsZWN0ZWQgaXRlbXMgaW4gc2VwZXJhdGUgYXJyYXkgXHJcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzLm1hcCgoZG9jLCBpbmRleCkgPT4ge1xyXG4gICAgICAvLyBjYW4ndCBtb3ZlIGZpbGUgaW4gdGhlIHNhbWUgcGxhY2UgaXQgZXhpc3QgYW5kIGNhbid0IG1vdmUgZm9sZGVyIGluc2lkZSBpdCBzZWxmIFxyXG4gICAgICBpZiAoZG9jLmlzU2VsZWN0ZWQgJiYgZG9jLnBhcmVudFJlZiAhPT0gdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQgJiYgZG9jLnVpZCAhPT0gdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQpIHtcclxuICAgICAgICBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnB1c2goZG9jLnVpZClcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAoY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlXHJcbiAgICAgICAgLm1vdmVUbyh7IGlkOiB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCwgbmFtZTogdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0ubmFtZSB9LCBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIHNlbGVjdGVkIGl0ZW1zIGZyb20gY2xpcGJvYXJkIGFmdGVyIGFjdGlvbiBpcyBkb25lXHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbXNBZnRlckFjdGlvbkRvbmUoY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2xpcGJvYXJkQ2xvc2UuZW1pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaEZvbGRlclRyZWUuZW1pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcclxuICAgICAgICAgICAgICAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgJ1RPQVNURVIuU1VDQ0VTUycsXHJcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfTU9WRUQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgICAgICAgJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAnVE9BU1RFUi5FUlJPUicsXHJcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfTU9WRURfRVJST1InXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0gZWxzZVxyXG4gICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcclxuICAgICAgICAnZXJyb3InLFxyXG4gICAgICAgICdUT0FTVEVSLkVSUk9SJyxcclxuICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9NT1ZFRF9ERVNUSU5BVElPTl9FUlJPUidcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW1zQWZ0ZXJBY3Rpb25Eb25lKHNlbGVjdGVkSXRlbXMpIHtcclxuICAgIHRoaXMuY2xpcGJvYXJkSXRlbXMgPSB0aGlzLmNsaXBib2FyZEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcclxuICAgICAgcmV0dXJuICFzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGVsKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2Uuc2V0KCdjbGlwYm9hcmRJdGVtcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2xpcGJvYXJkSXRlbXMpKTtcclxuICB9XHJcblxyXG4gIGNoZWNraW5nKCkge1xyXG4gICAgdGhpcy5lbmFibGVDb3B5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmVuYWJsZU1vdmUgPSBmYWxzZTtcclxuICAgIHRoaXMuZG9jdW1lbnRTZWxlY3RlZEluQ2xpcGJvYXJkID0gW107XHJcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNsaXBib2FyZERvY21lbnRzKTtcclxuICAgIHRoaXMuY2xpcGJvYXJkRG9jbWVudHMubWFwKGRvY3VtZW50ID0+IHtcclxuICAgICAgLy8gd29rcmluZyB3aXRoIG9ubHkgc2VsZWN0ZWQgZG9jdW1lbnRzIFxyXG4gICAgICBpZiAoZG9jdW1lbnQuaXNTZWxlY3RlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIC8vIGRvY3VtZW50WydjYW5Db3B5VG9UYXJnZXQnXSA9ICh0aGlzLmNhblBlcmZvcm1BY3Rpb25JbnNpZGVUYXJnZXQoZG9jdW1lbnQpICYmIGRvY3VtZW50LmNhbkNvcHkpO1xyXG4gICAgICAgIC8vIGRvY3VtZW50WydjYW5Nb3ZlVG9UYXJnZXQnXSA9ICh0aGlzLmNhblBlcmZvcm1BY3Rpb25JbnNpZGVUYXJnZXQoZG9jdW1lbnQpICYmIGRvY3VtZW50LmNhbk1vdmUpXHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQucHVzaChkb2N1bWVudClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLmRvY3VtZW50U2VsZWN0ZWRJbkNsaXBib2FyZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZW5hYmxlQ29weSA9IHRoaXMuZG9jdW1lbnRTZWxlY3RlZEluQ2xpcGJvYXJkLmV2ZXJ5KGl0ZW0gPT4ge1xyXG4gICAgICAgIHJldHVybiBpdGVtLmNhbkNvcHlUb1RhcmdldCA9PT0gdHJ1ZTtcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lbmFibGVNb3ZlID0gdGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQuZXZlcnkoaXRlbSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2FuTW92ZVRvVGFyZ2V0ID09PSB0cnVlO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2codGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQpXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjbGlwYm9hcmQtc2lkZS1zZWN0aW9uIHJlbGF0aXZlXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInAtMyBoLWZ1bGxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpcGJvYXJkLWhlYWRlciBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgYm9yZGVyLWItMlwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggdGV4dC1ncmF5LTUwMCBmb250LWJvbGQgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtNHhsIGJpIGJpLWNsaXBib2FyZFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMiB0ZXh0LXhsXCI+e3snY2xpcGJvYXJkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNsb3NlLWljb24gdGV4dC1ncmF5LTUwMCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbG9zZUNsaXBib2FyZCgpXCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidCVVRUT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJoLWZ1bGwgZm9udC1ib2xkIGQtZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIiAqbmdJZj1cImNsaXBib2FyZExvYWRpbmdcIj5cclxuICAgICAgICAgICAge3sgXCJsb2FkaW5nXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBoLXB4IGJnLWdyYXktMjAwIG1iLTNcIiAqbmdJZj1cImNsaXBib2FyZExvYWRpbmdcIj5cclxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNsaXBib2FyZC1jb250ZW50IGZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB0ZXh0LWdyYXktNTAwXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2xpcGJvYXJkRG9jbWVudHMubGVuZ3RoID09PSAwXCI+e3snbm9fY2xpcGJvYXJkX2l0ZW1zJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBoLTUvNiBvdmVyZmxvdy15LWF1dG9cIiAqbmdJZj1cImNsaXBib2FyZERvY21lbnRzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYi0yXCIgKm5nRm9yPVwibGV0IGRvY3VtZW50IG9mIGNsaXBib2FyZERvY21lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTEgdy04MiBmbGV4ICBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB3LTUvNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImRvY3VtZW50LmlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cImNoZWNraW5nKClcIj4gPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0aXRsZS13aXRoLWljb24gY2xhc3M9XCJ3LTEvNiAtbXktMS41XCIgW2NvbnRleHRdPVwiZG9jdW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpdGxlXT1cImZhbHNlXCI+PC90aXRsZS13aXRoLWljb24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1kaXNwbGF5LXN1aXRhYmxlLWljb24gY2xhc3M9XCJteC0xXCIgW2RhdGFdPVwiZG9jdW1lbnRcIiBbc2l6ZV09XCInNDBweCdcIj48L2FwcC1kaXNwbGF5LXN1aXRhYmxlLWljb24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkb2N1bWVudC5pc0ZpbGUgPT09ICdGaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwianVzdGlmeS1jZW50ZXIgZmxleCBmbGV4LWNvbCBmbGV4LTEgZmxleC1ncm93LTAgdy01LzZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSB0ZXh0LWdyYXktNTAwIGZvbnQtYm9sZCB0cnVuY2F0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZG9jdW1lbnQucHJvcGVydGllcz8uWydmaWxlOmNvbnRlbnQnXT8uWyduYW1lJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJkb2N1bWVudC5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ25hbWUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkb2N1bWVudFsndGl0bGUnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCB0ZXh0LXNtIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eygoZG9jdW1lbnQucHJvcGVydGllcz8uWydmaWxlOmNvbnRlbnQnXT8uWydsZW5ndGgnXSkgLyAoMTAyNCAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDI0KSkudG9GaXhlZCgyKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC1mbGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy1jZW50ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYmFzZSB0ZXh0LWdyYXktNTAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWJvbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJkb2N1bWVudC5pc0ZpbGUgPT09ICdGb2xkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50Py50aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbWF0VG9vbHRpcF09XCInQlVUVE9OUy5SRU1PVkVfQ0xJUEJPQVJEJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHctNSBoLTUgcm91bmRlZC1mdWxsIGJvcmRlci0yIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGJvcmRlci1ncmF5LTUwMCBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZWZyb21DbGlwYm9hcmQoZG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS01MDAgYmkgYmkteCB0ZXh0LWxnIGZsZXggaXRlbXMtY2VudGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgdGV4dC1ncmF5LTUwMCB0ZXh0LWNlbnRlciBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZG9jdW1lbnQuY2FuQ29weVRvVGFyZ2V0ICYmICFkb2N1bWVudC5jYW5Nb3ZlVG9UYXJnZXRcIj57eydjYW5fY29weV9vbmx5JyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZG9jdW1lbnQuY2FuQ29weVRvVGFyZ2V0ICYmIGRvY3VtZW50LmNhbk1vdmVUb1RhcmdldFwiPnt7J2Nhbl9tb3ZlX29ubHknIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRvY3VtZW50LmNhbkNvcHlUb1RhcmdldCAmJiBkb2N1bWVudC5jYW5Nb3ZlVG9UYXJnZXRcIj57eydjYW5fY29weV9hbmRfbW92ZScgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkb2N1bWVudC5jYW5Db3B5VG9UYXJnZXQgJiYgIWRvY3VtZW50LmNhbk1vdmVUb1RhcmdldFwiPnt7J2Nhbl9ub3RfY29weV9hbmRfbW92ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xLzYgZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWlzc2lvbi1idXR0b24gbXgtMlwiIFtkaXNhYmxlZF09XCIhZW5hYmxlQ29weVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlGcm9tSW5zaWRlQ2xpcGJvYXJkKClcIj57eydCVVRUT05TLkNPUFknIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvbiBteC0yXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVNb3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUZyb21JbnNpZGVDbGlwYm9hcmQoKVwiPnt7J0JVVFRPTlMuTU9WRScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJiZy10cmFuc3BhcmVudCBhYnNvbHV0ZSB0b3AtMCBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCBcIiAqbmdJZj1cImNsaXBib2FyZExvYWRpbmdcIj5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -10,12 +10,12 @@ import * as i3 from "../../../../shared-services/dialog-mangment.service";
10
10
  import * as i4 from "../../../../shared-services/file-manager.service";
11
11
  import * as i5 from "../../../custom-toastr/services/custom-toastr.service";
12
12
  import * as i6 from "@angular/forms";
13
- import * as i7 from "../../../../Core/adapters/adapter.service";
13
+ import * as i7 from "../../../../core/adapters/adapter.service";
14
14
  import * as i8 from "../../../../configuration/app-config.service";
15
15
  import * as i9 from "../../../hijri-gregorian-datepicker/services/date-helper.service";
16
- import * as i10 from "../../../../Core/services/translation/translation.service";
16
+ import * as i10 from "../../../../core/services/translation/translation.service";
17
17
  import * as i11 from "../../../../shared-services/user.service";
18
- import * as i12 from "../../../../Core/services/nuxeo/nuxeo.service";
18
+ import * as i12 from "../../../../core/services/nuxeo/nuxeo.service";
19
19
  import * as i13 from "../../../../shared-services/dynamic-form.service";
20
20
  import * as i14 from "../../../dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component";
21
21
  import * as i15 from "../../../dynamic-form/components/dynamic-form/dynamic-form.component";
@@ -485,4 +485,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
485
485
  type: HostListener,
486
486
  args: ['document:keyup.enter', ['$event']]
487
487
  }] } });
488
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jcmVhdGUtbW9kYWwvY3JlYXRlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jcmVhdGUtbW9kYWwvY3JlYXRlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUE2RCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBTXpFLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWTlDLE1BQU0sT0FBTyxvQkFBb0I7SUF3Qy9CLFlBQTRDLElBQUksRUFDdkMsU0FBNkMsRUFDN0MscUJBQTZDLEVBQzdDLHFCQUE0QyxFQUMzQyxpQkFBcUMsRUFDckMsYUFBa0MsRUFDbEMsV0FBd0IsRUFDeEIsUUFBd0IsRUFDeEIsa0JBQXNDLEVBQ3RDLGNBQWdDLEVBQ2hDLGlCQUFvQyxFQUNwQyxrQkFBc0MsRUFDdEMsV0FBd0IsRUFDeEIsWUFBMEIsRUFDSCxXQUFXLEVBQ2xDLGtCQUFzQztRQWZKLFNBQUksR0FBSixJQUFJLENBQUE7UUFDdkMsY0FBUyxH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QUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFVwbG9hZE1hbmFnbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvdXBsb2FkLW1hbmFnbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nTWFuZ21lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2RpYWxvZy1tYW5nbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9zZXJ2aWNlcy9kYXRlLWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL2FkYXB0ZXJzL2FkYXB0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWd1cmF0aW9uL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL0NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL0NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZU1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBhZGRpbmdQcm9wZXJ0aWVzID0gZmFsc2U7XHJcbiAgZmlsZVR5cGVGb3JtOiBGb3JtR3JvdXA7XHJcbiAgZHluYW1pY0Zvcm07XHJcbiAgZHluYW1pY0RhdGE7XHJcbiAgc2VsZWN0ZWRGaWxlO1xyXG4gIGZpbGVUeXBlO1xyXG4gIHNvdXJjZTtcclxuICBwYXlsb2FkTGlzdCA9IFtdO1xyXG4gIGNyZWF0ZVdoZW5GaW5pc2hNb2RlID0gZmFsc2U7XHJcbiAgZmlsZUZvcm1TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBjb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgdGVtcG9yYXJ5RHlhbm1pY0RhdGE7XHJcbiAgc2hvd1JlbmRlcmVyID0gZmFsc2U7IC8vIHVzZWQgdG8gZm9yY2UgcmVuZGVyZXIgdG8gZmVlbCBjaGFuZ2VzIGluIGZvcm1zIGFuZCB2YWx1ZSB3aGVuIGNoYW5naW5nIGZpbGVzXHJcbiAgLy8gdXBsb2FkRmluaXNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgdXNpbmdFeHRyYUZpZWxkcyA9IGZhbHNlOyAvLyBmbGFnZSB0byBzd2l0Y2ggYmV0d2VlbiBzdGF0aWMgZm9ybSB0eXBlc1xyXG5cclxuICBmaWxlRm9ybTogRm9ybUdyb3VwO1xyXG4gIHN0YXRpY0Zvcm1GaWVsZHM7XHJcbiAgYWdlbmN5TmFtZUZpbHRlcjtcclxuICBjb3VudHJ5TmFtZUZpbHRlcjtcclxuICBpc0FyYWJpYyA9IGZhbHNlO1xyXG4gIHNob3dTdGF0aWNGb3JtID0gZmFsc2VcclxuICBsYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgZGlzYWJsZUNyZWF0ZVdoZW5GaW5pc2hCdG4gPSB0cnVlO1xyXG4gIGNyZWF0aW5nID0gZmFsc2U7XHJcbiAgZGlzcGxheU5vdGVNZXNzYWdlID0gdHJ1ZTtcclxuICBteUVudmlyb25tZW50O1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwLmVudGVyJywgWyckZXZlbnQnXSlcclxuICBLZXlVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZih0aGlzLmFkZGluZ1Byb3BlcnRpZXMgJiYgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuZmFpbGVkRmlsZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGlmKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkSW5Qcm9ncmVzcyAmJiAhdGhpcy5kaXNhYmxlQ3JlYXRlV2hlbkZpbmlzaEJ0bikge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlV2hlbkZpbmlzaCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRG9jdW1lbnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGEsXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q3JlYXRlTW9kYWxDb21wb25lbnQ+LFxyXG4gICAgcHVibGljIHVwbG9hZE1hbmdtZW50U2VydmljZTogVXBsb2FkTWFuYWdtZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dNYW5nbWVudFNlcnZpY2U6IERpYWxvZ01hbmdtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsZU1hbmdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9zdGVyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBhZGFwZXRlcjogQWRhcHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpbGVNYW5hZ2VyU2VydmljZTogRmlsZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25mU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZUhlbHBlclNlcnZpY2U6IERhdGVIZWxwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBudXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgZHluYW1pY0Zvcm1TZXJ2aWNlOiBEeW5hbWljRm9ybVNlcnZpY2UsKSB7XHJcbiAgICAgIHRoaXMubXlFbnZpcm9ubWVudCA9IHRoaXMuZW52aXJvbm1lbnQ7XHJcblxyXG4gICAgdGhpcy5jcmVhdGVXaGVuRmluaXNoTW9kZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpbmdQcm9wZXJ0aWVzID0gdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuYWRkaW5nUHJvcGVydGllc01vZGU7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2UuZmlsZVR5cGU7IC8vIG9iamVjdCB0aGF0IHdhcyBjb25zdHJ1Y3RlZCBpbnNpZGUgc3VidHlwZXMgc2VydmljZVxyXG4gICAgdGhpcy5zb3VyY2UgPSB0aGlzLmRpYWxvZ01hbmdtZW50U2VydmljZS5hZGRpbmdGcm9tO1xyXG4gICAgdGhpcy5maWxlTWFuYWdlclNlcnZpY2UuZ2V0RmlsZVNjaGVtYXModGhpcy5maWxlVHlwZS50eXBlKS5zdWJzY3JpYmUoc2NoZW1hcyA9PiB7XHJcbiAgICAgIHNjaGVtYXMubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLm5hbWUgPT09IFwiZ2VuZXJhbGRvY3VtZW50XCIpIHtcclxuICAgICAgICAgIHRoaXMudXNpbmdFeHRyYUZpZWxkcyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmluaXRpYXRmaWxlRm9ybSgpO1xyXG4gICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5nZXR0aW5nUHJvcEZyb21Nb2RhbCh7XHJcbiAgICAgICAgJ2ZpbGVUeXBlJzogdGhpcy5zb3VyY2UgPT09ICdmaWxlTWFuZ2VyJyA/IHRoaXMuZmlsZVR5cGUgOiB7fSxcclxuICAgICAgICAnZHluYW1pY0Zvcm0nOiB0aGlzLmRpYWxvZ01hbmdtZW50U2VydmljZS5zdG9yZWREeW5hbWljRm9ybSxcclxuICAgICAgICAnZHluYW1pY0RhdGEnOiB7fSxcclxuICAgICAgICAnc3RhdGljRm9ybVZhbGlkJzogdGhpcy51c2luZ0V4dHJhRmllbGRzID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICAgICdnZW5lcmFsVmFsaWRhdGlvblZhbGlkJzogdHJ1ZSxcclxuICAgICAgICAndXNpbmdFeHRyYUZpZWxkcyc6IHRoaXMudXNpbmdFeHRyYUZpZWxkcyxcclxuICAgICAgICAncGF0aCc6IHRoaXMuZGF0YS5wYXRoXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGFuZ1N1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzQXJhYmljLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLmlzQXJhYmljID0gcmVzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZEZpbmlzaFN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRGaW5pc2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZEZpbmlzaFN1YnNjcmlwdGlvbiA9IHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLm9uVXBsb2FkRmluaXNoLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jcmVhdGVXaGVuRmluaXNoTW9kZSB8fCB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5mYWlsZWRGaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVEb2N1bWVudCgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhdGZpbGVGb3JtKCkge1xyXG4gICAgaWYgKHRoaXMudXNpbmdFeHRyYUZpZWxkcykge1xyXG4gICAgICB0aGlzLmZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgdGl0bGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogWycnXSxcclxuICAgICAgICBzdWJqZWN0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgZG9jdW1lbnROdW1iZXI6IFsnJ10sXHJcbiAgICAgICAgZ2RvY3VtZW50RGF0ZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgc2VjcmVjeUxldmVsOiBbbnVsbF0sXHJcbiAgICAgICAgaW1wb3J0YW5jZUxldmVsOiBbbnVsbF0sXHJcbiAgICAgICAgZGVwYXJ0bWVudENvZGU6IFsnJ10sXHJcbiAgICAgICAgYWdlbmN5Q2F0ZWdvcnlDb2RlOiBbbnVsbF0sXHJcbiAgICAgICAgYWdlbmN5TmFtZTogW251bGxdLFxyXG4gICAgICAgIGNvdW50cnlDYXRlZ29yeUNvZGU6IFtudWxsXSxcclxuICAgICAgICBjb3VudHJ5TmFtZTogW251bGxdLFxyXG4gICAgICAgIHJlbWFya3M6IFsnJ11cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICB0aXRsZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBbJyddXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRpY0Zvcm1GaWVsZHMgPSB0aGlzLmFwcENvbmZTZXJ2aWNlLm15Q29uZmlndXJhdGlvbi5zdGF0aWNGb3JtRmllbGRzOyBcclxuICB9XHJcbiAgXHJcbiAgY3JlYXRlV2hlbkZpbmlzaCgpIHtcclxuICAgIHRoaXMuY3JlYXRlV2hlbkZpbmlzaE1vZGUgPSB0cnVlO1xyXG4gICAgdGhpcy5taW5pbWl6RGlhbG9nKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLkdlbmVyYWxGb3JtVmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uID8gdGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogJyc7XHJcbiAgICB0aGlzLmFkZGluZ1Byb3BlcnRpZXMgPSBmYWxzZTtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnJlc2V0U3RhdHVzKCk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSlcclxuICB9XHJcblxyXG4gIHN0YXJ0QWRkaW5nUHJvcGVydGllcygpIHtcclxuICAgIC8vaWYgc3RhcnRpbmcgZnJvbSBmaWxlbW5hZ2VyIHRoZW4gaSBoYXZlIGZpeGVkIGZpbGUgdHlwZSBmb3IgYWxsIGF0dGFjaG1ldG4gYW5kIHNpbmdsZSBkeW5haW1jIGZvcm0gIHR5cGVcclxuICAgIGlmICh0aGlzLnNvdXJjZSA9PT0gJ2ZpbGVNYW5nZXInKSB7XHJcbiAgICAgIC8vIHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmdldER5bmFtaWNGb3JtKHRoaXMuZmlsZVR5cGUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG5cclxuICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzLm1hcChmaWxlID0+IHtcclxuICAgICAgICBmaWxlWydmaWxlVHlwZSddID0gdGhpcy5zb3VyY2UgPT09ICdmaWxlTWFuZ2VyJyA/IHRoaXMuZmlsZVR5cGUgOiB7fTtcclxuICAgICAgICBmaWxlWydkeW5hbWljRm9ybSddID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2Uuc3RvcmVkRHluYW1pY0Zvcm07XHJcbiAgICAgICAgZmlsZVsnZHluYW1pY0RhdGEnXSA9IHt9O1xyXG4gICAgICAgIGZpbGVbJ3N0YXRpY0Zvcm1WYWxpZCddID0gdGhpcy51c2luZ0V4dHJhRmllbGRzID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgICAgIGZpbGVbJ3N0YXRpY0RhdGEnXSA9IHRoaXMuc2V0U3RhdGljRGF0YShmaWxlLnRpdGxlID8gZmlsZS50aXRsZSA6IGZpbGUubmFtZSk7XHJcbiAgICAgICAgZmlsZVsnZ2VuZXJhbFZhbGlkYXRpb25WYWxpZCddID0gdHJ1ZTtcclxuICAgICAgfSlcclxuICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy5hbGxmaWxlcy5tYXAoZmlsZSA9PiB7XHJcbiAgICAgICAgZmlsZVsnZmlsZVR5cGUnXSA9IHRoaXMuc291cmNlID09PSAnZmlsZU1hbmdlcicgPyB0aGlzLmZpbGVUeXBlIDoge307XHJcbiAgICAgICAgZmlsZVsnZHluYW1pY0Zvcm0nXSA9IHRoaXMuZGlhbG9nTWFuZ21lbnRTZXJ2aWNlLnN0b3JlZER5bmFtaWNGb3JtO1xyXG4gICAgICAgIGZpbGVbJ2R5bmFtaWNEYXRhJ10gPSB7fTtcclxuICAgICAgICBmaWxlWydzdGF0aWNGb3JtVmFsaWQnXSA9IHRoaXMudXNpbmdFeHRyYUZpZWxkcyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgICBmaWxlWydzdGF0aWNEYXRhJ10gPSB0aGlzLnNldFN0YXRpY0RhdGEoZmlsZS50aXRsZSA/IGZpbGUudGl0bGUgOiBmaWxlLm5hbWUpO1xyXG4gICAgICAgIGZpbGVbJ2dlbmVyYWxWYWxpZGF0aW9uVmFsaWQnXSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5hZGRpbmdQcm9wZXJ0aWVzID0gdHJ1ZTtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLmFkZGluZ1Byb3BlcnRpZXNNb2RlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNldFN0YXRpY0RhdGEodGl0bGUpIHtcclxuICAgIGlmICh0aGlzLnVzaW5nRXh0cmFGaWVsZHMpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICcnLFxyXG4gICAgICAgIHN1YmplY3Q6ICcnLFxyXG4gICAgICAgIGRvY3VtZW50TnVtYmVyOiAnJyxcclxuICAgICAgICBnZG9jdW1lbnREYXRlOiBudWxsLFxyXG4gICAgICAgIHNlY3JlY3lMZXZlbDogdGhpcy5kYXRhLm91dGVyRGVmYXVsdFNlY3JlY3kgfHwgbnVsbCxcclxuICAgICAgICBpbXBvcnRhbmNlTGV2ZWw6IHRoaXMuZGF0YS5vdXRlckRlZmF1bHRJbXBvcnRhbmNlIHx8IG51bGwsXHJcbiAgICAgICAgZGVwYXJ0bWVudENvZGU6IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckRlcGFydG1lbnRGcm9tUGF0aCh0aGlzLmRhdGEucGF0aCksXHJcbiAgICAgICAgYWdlbmN5Q2F0ZWdvcnlDb2RlOiBudWxsLFxyXG4gICAgICAgIGFnZW5jeU5hbWU6IG51bGwsXHJcbiAgICAgICAgY291bnRyeUNhdGVnb3J5Q29kZTogbnVsbCxcclxuICAgICAgICBjb3VudHJ5TmFtZTogbnVsbCxcclxuICAgICAgICByZW1hcmtzOiAnJ1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJydcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRG9jdW1lbnQoKSB7XHJcbiAgICB0aGlzLmNyZWF0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLmZhaWxlZEZpbGVzID0gW107XHJcbiAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5HZW5lcmFsRm9ybVZhbGlkYXRpb24gPSB0aGlzLmNoZWNrVmFsaWRhdGlvbigpO1xyXG4gICAgaWYgKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLkdlbmVyYWxGb3JtVmFsaWRhdGlvbikge1xyXG5cclxuICAgICAgbGV0IGFwaUNhbGxzID0gW107XHJcbiAgICAgIGlmICh0aGlzLmRhdGE/LnBhdGguaW5jbHVkZXMoJy9kZWZhdWx0LWRvbWFpbi93b3Jrc3BhY2VzL0RNU1dvcmtzcGFjZXMnKSB8fCB0aGlzLmRhdGE/LnBhdGguaW5jbHVkZXMoJy9kZWZhdWx0LWRvbWFpbi9Vc2VyV29ya3NwYWNlcy8nKSkge1xyXG4gICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdFBheUxvYWRUb1dvcmtTcGFjZSh0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMpO1xyXG4gICAgICAgIHRoaXMucGF5bG9hZExpc3QubWFwKHBheWxvYWQgPT4ge1xyXG4gICAgICAgICAgYXBpQ2FsbHMucHVzaCh0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmNyZWF0ZUZpbGUocGF5bG9hZCwgdGhpcy5maWxlTWFuYWdlclNlcnZpY2Uuc2VsZWN0ZWRGb2xkZXJJZCwgJ0RNUy5DcmVhdGVEb2N1bWVudEZyb21CbG9iJykpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RQYXlMb2FkKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlcyk7XHJcbiAgICAgICAgdGhpcy5wYXlsb2FkTGlzdC5tYXAocGF5bG9hZCA9PiB7XHJcbiAgICAgICAgICBhcGlDYWxscy5wdXNoKHRoaXMuZmlsZU1hbmdlclNlcnZpY2UuY3JlYXRlRmlsZShwYXlsb2FkLCB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5zZWxlY3RlZEZvbGRlcklkKSlcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBmb3JrSm9pbihhcGlDYWxscykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHJlc3BvbnNlLm1hcChzaW5nbGVSZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKHNpbmdsZVJlc1snc3RhdHVzJ10gJiYgc2luZ2xlUmVzWydzdGF0dXMnXSA9PT0gJ2ZhaWxlZCcpIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuZmFpbGVkRmlsZXMucHVzaChzaW5nbGVSZXNbJ29yaWdpbkZpbGUnXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5mYWlsZWRGaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsICdUT0FTVEVSLlVQTE9BRF9FUlJPUicpO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLmFsbGZpbGVzID0gWy4uLnRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLmZhaWxlZEZpbGVzXTtcclxuXHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLm9uUmVmcmVzaGluZ0ZpbGVNYW5nZXIubmV4dCgpO1xyXG4gICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLkZJTEVfQ1JFQVRFRF9TVUNDRVwiKVxyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UucmVzZXRTdGF0dXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgLy8gdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJyAsICdUT0FTVEVSLkVSUk9SJyAsICdUT0FTVEVSLlVQTE9BRF9FUlJPUicpO1xyXG4gICAgICAgICAgLy8gdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0aW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RQYXlMb2FkVG9Xb3JrU3BhY2UoZmlsZXMpIHtcclxuICAgIHRoaXMucGF5bG9hZExpc3QgPSBbXTtcclxuICAgIGZpbGVzLm1hcChmaWxlID0+IHtcclxuICAgICAgbGV0IHBhcmFtID0ge1xyXG4gICAgICAgIFwiZmlsZWluZGV4XCI6IDAsXHJcbiAgICAgICAgXCJmaWxlTmFtZVwiOiBmaWxlLnN0YXRpY0RhdGEudGl0bGUsXHJcbiAgICAgICAgXCJiYXRjaGlkXCI6IGZpbGUuYmF0Y2guYmxvYlsndXBsb2FkLWJhdGNoJ10sXHJcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB0aGlzLmZpbGVGb3JtLmNvbnRyb2xzLmRlc2NyaXB0aW9uLnZhbHVlXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMucGF5bG9hZExpc3QucHVzaCh7IHBhcmFtczogcGFyYW0sIG9yaWdpbkZpbGU6IGZpbGUgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdHJ5QWdhaW5DcmVhdGVEb2N1bWVudCgpIHtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZEZpbGVzTWFuZ21lbnQodGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuZmFpbGVkRmlsZXMpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0UGF5TG9hZChmaWxlcykge1xyXG4gICAgdGhpcy5wYXlsb2FkTGlzdCA9IFtdO1xyXG4gICAgZmlsZXMubWFwKGZpbGUgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb25zdHJ1Y3REeW5hbWljRm9ybVBheWxvYWQoZmlsZS5keW5hbWljRGF0YS5kYXRhID8gZmlsZS5keW5hbWljRGF0YS5kYXRhIDoge30sIGZpbGUuZHluYW1pY0Zvcm0pO1xyXG4gICAgICBsZXQgc3RhdGljRm9ybURhdGEgPSB0aGlzLm1hcHBpbmdTdGF0aWNEYXRhKGZpbGUuc3RhdGljRGF0YSlcclxuICAgICAgbGV0IHBhcmFtID0ge1xyXG4gICAgICAgIFwiZG9jdW1lbnRcIjoge1xyXG4gICAgICAgICAgXCJ0eXBlXCI6IGZpbGUuZmlsZVR5cGUudHlwZSxcclxuICAgICAgICAgIFwibmFtZVwiOiBmaWxlLnN0YXRpY0RhdGEudGl0bGUsXHJcbiAgICAgICAgICBcInByb3BlcnRpZXNcIjoge1xyXG4gICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgLi4uc3RhdGljRm9ybURhdGEsXHJcbiAgICAgICAgICAgIFwiZmlsZTpjb250ZW50XCI6IHtcclxuICAgICAgICAgICAgICBcInVwbG9hZC1iYXRjaFwiOiBmaWxlLmJhdGNoLmJsb2JbJ3VwbG9hZC1iYXRjaCddLFxyXG4gICAgICAgICAgICAgIFwidXBsb2FkLWZpbGVJZFwiOiBmaWxlLmJhdGNoLmJsb2JbJ3VwbG9hZC1maWxlSWQnXSxcclxuICAgICAgICAgICAgICBcIm1pbWUtdHlwZVwiOiBmaWxlLnR5cGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgaWYgKGZpbGUuZmlsZVR5cGUuZG9jdW1lbnRDb2RlKSB7XHJcbiAgICAgICAgcGFyYW1bXCJkb2N1bWVudFR5cGVDb2RlXCJdID0gZmlsZS5maWxlVHlwZS5kb2N1bWVudENvZGVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBheWxvYWRMaXN0LnB1c2goeyBwYXJhbXM6IHBhcmFtLCBvcmlnaW5GaWxlOiBmaWxlIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG1hcHBpbmdTdGF0aWNEYXRhKGRhdGEpIHtcclxuICAgIGlmIChkYXRhLmdkb2N1bWVudERhdGUgJiYgZGF0YS5nZG9jdW1lbnREYXRlICE9PSBudWxsKSB7XHJcbiAgICAgIG1vbWVudC5sb2NhbGUoJ2VuJyk7XHJcbiAgICAgIGRhdGFbJ2hkb2N1bWVudERhdGUnXSA9IHRoaXMuZGF0ZUhlbHBlclNlcnZpY2UuZ3JlZ29yaWFuVG9IaWpyaShkYXRhLmdkb2N1bWVudERhdGUsICdpWVlZWS1pTU0taUREJyk7XHJcbiAgICAgIGRhdGEuZ2RvY3VtZW50RGF0ZSA9IChtb21lbnQoZGF0YS5nZG9jdW1lbnREYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREVDAwOjAwOjAwLjAwMFwiKSArIFwiWlwiKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYWRhcGV0ZXIuYWRhcHRPdXQoZGF0YSwgdGhpcy5zdGF0aWNGb3JtRmllbGRzKVxyXG4gIH1cclxuICAgIFxyXG4gIHNlbGVjdEZpbGUoZmlsZSkge1xyXG4gICAgY29uc29sZS5sb2coXCJmaWxlIGluIHNlbGVjdFwiLCBmaWxlKVxyXG4gICAgdGhpcy5zaG93U3RhdGljRm9ybSA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZ2VuY3lOYW1lRmlsdGVyID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHVuZGVmaW5lZDtcclxuICAgIC8vY29uc29sZS5sb2coZmlsZSk7XHJcbiAgICBpZiAoIXRoaXMuYWRkaW5nUHJvcGVydGllcykge1xyXG4gICAgICB0aGlzLnN0YXJ0QWRkaW5nUHJvcGVydGllcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWRkaW5nUHJvcGVydGllcykge1xyXG4gICAgICB0aGlzLnNob3dSZW5kZXJlciA9IGZhbHNlO1xyXG4gICAgICAvLyBjaGVjayBpZiBmaWxlIGhhcyBwcm9wZXJ0aWVzIG9mIGFkZGluZyBwcm9wZXJ0aWVzIG9yIG5vdCB0aGVuIGFkZCBpdCB0byBoaW1cclxuICAgICAgaWYgKCFmaWxlLmhhc093blByb3BlcnR5KCdmaWxlVHlwZScpKSB7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuZ2V0RHluYW1pY0Zvcm0odGhpcy5maWxlVHlwZS5kb2N1bWVudENvZGUgPyB0aGlzLmZpbGVUeXBlLmRvY3VtZW50Q29kZSA6IHRoaXMuZmlsZVR5cGUudHlwZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICBmaWxlWydmaWxlVHlwZSddID0gdGhpcy5zb3VyY2UgPT09ICdmaWxlTWFuZ2VyJyA/IHRoaXMuZmlsZVR5cGUgOiB7fTtcclxuICAgICAgICAgIGZpbGVbJ2R5bmFtaWNGb3JtJ10gPSByZXM7XHJcbiAgICAgICAgICBmaWxlWydkeW5hbWljRGF0YSddID0ge307XHJcbiAgICAgICAgICBmaWxlWydzdGF0aWNGb3JtVmFsaWQnXSA9IHRoaXMudXNpbmdFeHRyYUZpZWxkcyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgICAgIGZpbGVbJ2dlbmVyYWxWYWxpZGF0aW9uVmFsaWQnXSA9IHRydWU7XHJcbiAgICAgICAgICBmaWxlWydzdGF0aWNEYXRhJ10gPSB0aGlzLnNldFN0YXRpY0RhdGEoZmlsZS50aXRsZSA/IGZpbGUudGl0bGUgOiBmaWxlLm5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmZpbGVGb3JtKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhdGZpbGVGb3JtKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpbGVGb3JtLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXSk7XHJcblxyXG4gICAgICAgICAgdGhpcy50ZW1wb3JhcnlEeWFubWljRGF0YSA9IHt9O1xyXG4gICAgICAgICAgdGhpcy50ZW1wb3JhcnlEeWFubWljRGF0YSA9IHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLmRhdGEgPyB7IC4uLnRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLmRhdGEgfSA6IHt9O1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1JlbmRlcmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93U3RhdGljRm9ybSA9IHRydWU7XHJcbiAgICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhmaWxlKTtcclxuICAgICAgICAgIGlmICghdGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uID0gdGhpcy5maWxlRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZS5zdGF0aWNGb3JtVmFsaWQgPSB0aGlzLmZpbGVGb3JtID8gdGhpcy5maWxlRm9ybS52YWxpZCA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUuc3RhdGljRGF0YSA9IHRoaXMuZmlsZUZvcm0gPyB0aGlzLmZpbGVGb3JtLnZhbHVlIDoge307XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5Q2F0ZWdvcnlDb2RlJykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeU5hbWUnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hZ2VuY3lOYW1lRmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiByZXNcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2NvdW50cnlOYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRyeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IHJlc1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlO1xyXG4gICAgICAgIGlmICghdGhpcy5maWxlRm9ybSkge1xyXG4gICAgICAgICAgdGhpcy5pbml0aWF0ZmlsZUZvcm0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWxlRm9ybS5wYXRjaFZhbHVlKHsgLi4udGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXSB9KTtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnYWdlbmN5Q2F0ZWdvcnlDb2RlJ10pIHtcclxuICAgICAgICAgIHRoaXMuYWdlbmN5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuc2VsZWN0ZWRGaWxlWydzdGF0aWNEYXRhJ11bJ2FnZW5jeUNhdGVnb3J5Q29kZSddXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnY291bnRyeUNhdGVnb3J5Q29kZSddKSB7XHJcbiAgICAgICAgICB0aGlzLmNvdW50cnlOYW1lRmlsdGVyID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogdGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnY291bnRyeUNhdGVnb3J5Q29kZSddXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRlbXBvcmFyeUR5YW5taWNEYXRhID0ge307XHJcbiAgICAgICAgdGhpcy50ZW1wb3JhcnlEeWFubWljRGF0YSA9IHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLmRhdGEgPyB0aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRGF0YS5kYXRhIDoge307XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSZW5kZXJlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dTdGF0aWNGb3JtID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICBpZiAoIXRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uID0gdGhpcy5maWxlRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUuc3RhdGljRm9ybVZhbGlkID0gdGhpcy5maWxlRm9ybSA/IHRoaXMuZmlsZUZvcm0udmFsaWQgOiBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZS5zdGF0aWNEYXRhID0gdGhpcy5maWxlRm9ybSA/IHRoaXMuZmlsZUZvcm0udmFsdWUgOiB7fTtcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5Q2F0ZWdvcnlDb2RlJykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsZUZvcm0uZ2V0KCdhZ2VuY3lDYXRlZ29yeUNvZGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZ2VuY3lOYW1lRmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgICAgICBjYXRlZ29yeTogcmVzXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5Q2F0ZWdvcnlDb2RlJykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IHJlc1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uZHluYW1pY0Zvcm1DaGFuZ2UoZHluYW1pY0RhdGEpIHtcclxuICAgIGNvbnNvbGUubG9nKGR5bmFtaWNEYXRhKVxyXG4gICAgaWYgKGR5bmFtaWNEYXRhLm9yaWdpbmFsRXZlbnQ/LmlzVmFsaWQpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlQ3JlYXRlV2hlbkZpbmlzaEJ0biA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICBpZiAoZHluYW1pY0RhdGEuZGF0YSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRGF0YSA9IHsgLi4uZHluYW1pY0RhdGEgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1pbmltaXpEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW0oaXRlbSwgbGlzdG9mRmlsZXMpIHtcclxuICAgIGNvbnN0IHJlbW92ZUluZGV4ID0gbGlzdG9mRmlsZXMuZmluZEluZGV4KGZpbGUgPT4gZmlsZS5uYW1lID09PSBpdGVtLm5hbWUpO1xyXG4gICAgbGlzdG9mRmlsZXMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcclxuICAgIGlmIChpdGVtLm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRGaWxlLm5hbWUpIHtcclxuICAgICAgaWYgKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RGaWxlKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlc1swXSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLmFsbGZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEZpbGUodGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy5hbGxmaWxlc1swXSlcclxuICAgICAgfVxyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBBcHBseUNoYW5nZXNUb0FsbCgpIHtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlcy5tYXAoZmlsZSA9PiB7XHJcbiAgICAgIGxldCB0aXRsZSA9IGZpbGVbJ3N0YXRpY0RhdGEnXSA/IGZpbGVbJ3N0YXRpY0RhdGEnXVsndGl0bGUnXSA6IGZpbGUubmFtZTtcclxuICAgICAgZmlsZVsnZmlsZVR5cGUnXSA9IHRoaXMuc2VsZWN0ZWRGaWxlLmZpbGVUeXBlO1xyXG4gICAgICBmaWxlWydkeW5hbWljRm9ybSddID0gdGhpcy5zZWxlY3RlZEZpbGUuZHluYW1pY0Zvcm07XHJcbiAgICAgIGZpbGVbJ2R5bmFtaWNEYXRhJ10gPSB0aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRGF0YTtcclxuICAgICAgZmlsZVsnc3RhdGljRm9ybVZhbGlkJ10gPSB0aGlzLnNlbGVjdGVkRmlsZS5zdGF0aWNGb3JtVmFsaWQ7XHJcbiAgICAgIGZpbGVbJ3N0YXRpY0RhdGEnXSA9IHsgLi4udGhpcy5maWxlRm9ybS52YWx1ZSB9O1xyXG4gICAgICBmaWxlWydzdGF0aWNEYXRhJ11bJ3RpdGxlJ10gPSB0aXRsZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLmFsbGZpbGVzLm1hcChmaWxlID0+IHtcclxuICAgICAgbGV0IHRpdGxlID0gZmlsZVsnc3RhdGljRGF0YSddID8gZmlsZVsnc3RhdGljRGF0YSddWyd0aXRsZSddIDogZmlsZS5uYW1lO1xyXG4gICAgICBmaWxlWydmaWxlVHlwZSddID0gdGhpcy5zZWxlY3RlZEZpbGUuZmlsZVR5cGU7XHJcbiAgICAgIGZpbGVbJ2R5bmFtaWNGb3JtJ10gPSB0aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRm9ybTtcclxuICAgICAgZmlsZVsnZHluYW1pY0RhdGEnXSA9IHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhO1xyXG4gICAgICBmaWxlWydzdGF0aWNGb3JtVmFsaWQnXSA9IHRoaXMuc2VsZWN0ZWRGaWxlLnN0YXRpY0Zvcm1WYWxpZDtcclxuICAgICAgZmlsZVsnc3RhdGljRGF0YSddID0geyAuLi50aGlzLmZpbGVGb3JtLnZhbHVlIH07XHJcbiAgICAgIGZpbGVbJ3N0YXRpY0RhdGEnXVsndGl0bGUnXSA9IHRpdGxlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGVja1ZhbGlkYXRpb24oKSB7XHJcbiAgICBsZXQgdmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMubWFwKGZpbGUgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImZpbGVcIiwgZmlsZSlcclxuICAgICAgaWYgKCFmaWxlLmhhc093blByb3BlcnR5KCdmaWxlVHlwZScpIHx8IGZpbGVbJ3N0YXRpY0Zvcm1WYWxpZCddID09PSBmYWxzZSB8fCBmaWxlLmR5bmFtaWNEYXRhPy5vcmlnaW5hbEV2ZW50Py5pc1ZhbGlkID09PSBmYWxzZSkge1xyXG4gICAgICAgIGZpbGVbJ2dlbmVyYWxWYWxpZGF0aW9uVmFsaWQnXSA9IGZhbHNlXHJcbiAgICAgICAgdmFsaWRhdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZpbGVbJ2dlbmVyYWxWYWxpZGF0aW9uVmFsaWQnXSA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMuYWxsZmlsZXMubWFwKGZpbGUgPT4ge1xyXG4gICAgICBpZiAoZmlsZVsnc3RhdGljRm9ybVZhbGlkJ10gPT09IGZhbHNlIHx8IGZpbGUuZHluYW1pY0RhdGE/Lm9yaWdpbmFsRXZlbnQ/LmlzVmFsaWQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgZmlsZVsnZ2VuZXJhbFZhbGlkYXRpb25WYWxpZCddID0gZmFsc2U7XHJcbiAgICAgICAgdmFsaWRhdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWxlWydnZW5lcmFsVmFsaWRhdGlvblZhbGlkJ10gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdmFsaWRhdGlvbjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbiA/IHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG4gICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uID8gdGhpcy5sYW5nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICAgIHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogJyc7XHJcbiAgICB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbCBoLWZ1bGxcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmVyLXdyYXBwZXJcIiBbbmdDbGFzc109XCJ7ICdkLWZsZXgnOiBhZGRpbmdQcm9wZXJ0aWVzIH1cIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRkaW5nUHJvcGVydGllc1wiIGNsYXNzPVwicHJvcGVydGllcy1zZWN0aW9uIHAtMyBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy15LWF1dG9cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiICpuZ0lmPVwic2VsZWN0ZWRGaWxlICYmIHNvdXJjZSA9PT0gJ2ZpbGVNYW5nZXInICYmIHNob3dTdGF0aWNGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5GSUxFX1RZUEVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgdGV4dC1ncmF5LTkwMFwiPnt7IGlzQXJhYmljID8gZmlsZVR5cGUuYXJhYmljVGV4dCA6IGZpbGVUeXBlLmVuZ2xpc2hUZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWZpZWxkcyBtdC0zXCIgU2V0UnRsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLW9sZCBzdGF0aWMgZm9ybSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLlRJVExFXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLXN0eWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHBsYWNlaG9sZGVyPVwiIHt7ICdDUkVBVEUuVElUTEUnIHwgdHJhbnNsYXRlfX1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuREVTQ1JJUFRJT05cIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZpZWxkLXN0eWxlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiB7eyAnQ1JFQVRFLkRFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0gbmV3IHN0YXRpcyBmb3JtICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNpbmdFeHRyYUZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlciBbZm9ybV09XCJmaWxlRm9ybVwiIFthZ2VuY3lOYW1lRmlsdGVyXT1cImFnZW5jeU5hbWVGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5TmFtZUZpbHRlcl09XCJjb3VudHJ5TmFtZUZpbHRlclwiPjwvYXBwLWR5bmFtaWMtZmllbGRzLXJlbmRlcmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLXBhcnRcIiAqbmdJZj1cInNob3dSZW5kZXJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWR5bmFtaWMtZm9ybSBbZm9ybV09XCJzZWxlY3RlZEZpbGUuZHluYW1pY0Zvcm1cIiBbZGF0YV09XCJ0ZW1wb3JhcnlEeWFubWljRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uZHluYW1pY0Zvcm1DaGFuZ2UoJGV2ZW50KVwiPjwvYXBwLWR5bmFtaWMtZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHctZnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIGgtZnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIHAtM1xyXG4gICAgICAgICAgICAgICAgICAgIGZsZXhcclxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNlbnRlclxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLWNlbnRlclxyXG4gICAgICAgICAgICAgICAgICAgIHRleHQtbGcgdGV4dC1ncmF5LTkwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2VsZWN0ZWRGaWxlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5TRUxFQ1RfVE9TVEFSVF9BRERJTkdcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQtdGFiLWJvZHkgb3ZlcmZsb3ctaGlkZGVuXCIgW25nQ2xhc3NdPVwieyAnYXR0YWNobWVudC1pbmVyLXNtYWxsLWJvZHknOiBhZGRpbmdQcm9wZXJ0aWVzIH1cIj5cclxuICAgICAgICAgICAgPGFwcC1hdHRhY2htZW50cyBbbXVsdGlwbGVdPVwidHJ1ZVwiIChvblNlbGVjdGluZ0l0ZW0pPVwic2VsZWN0RmlsZSgkZXZlbnQpXCI+PC9hcHAtYXR0YWNobWVudHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgdGV4dC1yZWQtNTAwIHRleHQtYmFzZSB0ZXh0LXN0YXJ0IHB4LTNcIiAqbmdJZj1cIiF1cGxvYWRNYW5nbWVudFNlcnZpY2UuR2VuZXJhbEZvcm1WYWxpZGF0aW9uXCI+XHJcblxyXG4gICAgICAgIHt7IFwiQ1JFQVRFLkZJTExfUkVRVUlSRURfRklFTERcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1pbmVyLXdyYXBwZXIgdy1mdWxsIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBhYnNvbHV0ZSBib3R0b20tMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAodXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnVwbG9hZEluUHJvZ3Jlc3MgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCA+IDApICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIWFkZGluZ1Byb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgIFwiIChjbGljayk9XCJzdGFydEFkZGluZ1Byb3BlcnRpZXMoKVwiIGNsYXNzPVwic3VibWlzc2lvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5BRERfUFJPUEVSVElFU1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWRkaW5nUHJvcGVydGllcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLmFsbGZpbGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgXCIgKGNsaWNrKT1cIkFwcGx5Q2hhbmdlc1RvQWxsKClcIiBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkRmlsZSB8fCAhc2VsZWN0ZWRGaWxlLnN0YXRpY0Zvcm1WYWxpZFwiIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRGaWxlIHx8ICFzZWxlY3RlZEZpbGUuc3RhdGljRm9ybVZhbGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICdjdXJzb3ItcG9pbnRlciBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLWdyYXktOTAwJzogIShcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkRmlsZSB8fCAhc2VsZWN0ZWRGaWxlLnN0YXRpY0Zvcm1WYWxpZFxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIH1cIiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uIG14LTJcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5BUFBMWV9UT19BTExcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJcclxuICAgICAgICAgICAgYWRkaW5nUHJvcGVydGllcyAmJlxyXG4gICAgICAgICAgICAhdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkSW5Qcm9ncmVzcyAmJlxyXG4gICAgICAgICAgICB1cGxvYWRNYW5nbWVudFNlcnZpY2UuZmFpbGVkRmlsZXMubGVuZ3RoID09PSAwXHJcbiAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjcmVhdGVEb2N1bWVudCgpXCIgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvbiByZWxhdGl2ZVwiIFtkaXNhYmxlZF09XCJjcmVhdGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNyZWF0aW5nOyBlbHNlIGxvYWRlclwiPnt7IFwiQlVUVE9OUy5DUkVBVEVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIFt2YWx1ZV09XCI5MFwiIFtzdHJva2VXaWR0aF09XCIzXCIgb3ZlcmxheT1cInRydWVcIiBbZGlhbWV0ZXJdPVwiMjVcIiBjb2xvcj1cIndhcm5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIGFkZGluZ1Byb3BlcnRpZXMgJiZcclxuICAgICAgICAgICAgIXVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZEluUHJvZ3Jlc3MgJiZcclxuICAgICAgICAgICAgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLmZhaWxlZEZpbGVzLmxlbmd0aCA+IDBcclxuICAgICAgICBcIiAoY2xpY2spPVwidHJ5QWdhaW5DcmVhdGVEb2N1bWVudCgpXCIgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAge3sgXCJCVVRUT05TLlRSWV9BR0FJTlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIWZpbGVGb3JtPy52YWxpZCB8fCBkaXNhYmxlQ3JlYXRlV2hlbkZpbmlzaEJ0blwiICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWRkaW5nUHJvcGVydGllcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZEluUHJvZ3Jlc3NcclxuICAgICAgICAgICAgICAgIFwiIChjbGljayk9XCJjcmVhdGVXaGVuRmluaXNoKClcIiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uIHctNDRcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5DUkVBVEVfV0hFTl9GSU5TSFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxhdGlvbi1idXR0b24gbXgtMlwiIChjbGljayk9XCJtaW5pbWl6RGlhbG9nKClcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC51cGxvYWRJblByb2dyZXNzIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm51bWJlck9mVXBsb2FkZWRGaWxlcyAhPT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZGluZ1Byb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAge3sgXCJCVVRUT05TLk1JTklNSVpFRFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsYXRpb24tYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5DQU5DRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
488
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jcmVhdGUtbW9kYWwvY3JlYXRlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jcmVhdGUtbW9kYWwvY3JlYXRlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUE2RCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBTXpFLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWTlDLE1BQU0sT0FBTyxvQkFBb0I7SUF3Qy9CLFlBQTRDLElBQUksRUFDdkMsU0FBNkMsRUFDN0MscUJBQTZDLEVBQzdDLHFCQUE0QyxFQUMzQyxpQkFBcUMsRUFDckMsYUFBa0MsRUFDbEMsV0FBd0IsRUFDeEIsUUFBd0IsRUFDeEIsa0JBQXNDLEVBQ3RDLGNBQWdDLEVBQ2hDLGlCQUFvQyxFQUNwQyxrQkFBc0MsRUFDdEMsV0FBd0IsRUFDeEIsWUFBMEIsRUFDSCxXQUFXLEVBQ2xDLGtCQUFzQztRQWZKLFNBQUksR0FBSixJQUFJLENBQUE7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBb0M7UUFDN0MsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQUM3QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzNDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUNILGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFyRGhELHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQU96QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFLN0IsaUJBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxnRkFBZ0Y7UUFDdEcsMENBQTBDO1FBQzFDLHFCQUFnQixHQUFHLEtBQUssQ0FBQyxDQUFDLDRDQUE0QztRQU10RSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsS0FBSyxDQUFBO1FBRXRCLCtCQUEwQixHQUFHLElBQUksQ0FBQztRQUNsQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQTRCdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXhDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQztRQUN4RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxzREFBc0Q7UUFDM0csSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDO1FBQ3BELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDN0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDakIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFO29CQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2lCQUM5QjtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDOUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3RCxhQUFhLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQjtnQkFDM0QsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUN2RCx3QkFBd0IsRUFBRSxJQUFJO2dCQUM5QixrQkFBa0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2dCQUN6QyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQWhERCxVQUFVLENBQUMsS0FBb0I7UUFDN0IsSUFBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9FLElBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO2dCQUN0RyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUN6QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDdkI7U0FDRjtJQUNILENBQUM7SUEwQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2RSxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLHdCQUF3QixFQUFFO1lBQ3ZELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuRTtRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5RyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2xGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUNyQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLGFBQWEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO2dCQUNwQixlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDbEIsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQzNCLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ2QsQ0FBQyxDQUFBO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3JDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbEMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ2xCLENBQUMsQ0FBQTtTQUNIO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO0lBQy9FLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDeEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLDBHQUEwRztRQUMxRyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxFQUFFO1lBQ2hDLDJFQUEyRTtZQUUzRSxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNyRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDO2dCQUNuRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNILEtBQUs7U0FDTjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUN6RCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQUs7UUFDakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTztnQkFDTCxLQUFLLEVBQUUsS0FBSztnQkFDWixXQUFXLEVBQUUsRUFBRTtnQkFDZixPQUFPLEVBQUUsRUFBRTtnQkFDWCxjQUFjLEVBQUUsRUFBRTtnQkFDbEIsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUk7Z0JBQ25ELGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUk7Z0JBQ3pELGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUMxRSxrQkFBa0IsRUFBRSxJQUFJO2dCQUN4QixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxFQUFFO2FBQ1osQ0FBQTtTQUNGO2FBQU07WUFDTCxPQUFPO2dCQUNMLEtBQUssRUFBRSxLQUFLO2dCQUNaLFdBQVcsRUFBRSxFQUFFO2FBQ2hCLENBQUE7U0FDRjtJQUNILENBQUM7SUFFRCxjQUFjOztRQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUUsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMscUJBQXFCLEVBQUU7WUFFcEQsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsMENBQTBDLENBQUMsTUFBSSxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQSxFQUFFO2dCQUNoSSxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN0RyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsNEJBQTRCLENBQUMsQ0FBQyxDQUFBO2dCQUNuSSxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3BGLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7Z0JBQ3JHLENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN0QyxtQkFBbUI7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUN2QixJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssUUFBUSxFQUFFO3dCQUMzRCxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtxQkFDckU7Z0JBQ0gsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO29CQUN6QixJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBR3ZHO3FCQUFNO29CQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLDRCQUE0QixDQUFDLENBQUE7b0JBQ25GLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQzFDO1lBQ0gsQ0FBQyxFQUNDLEtBQUssQ0FBQyxFQUFFO2dCQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixzQkFBc0I7Z0JBQ3RCLCtFQUErRTtnQkFDL0Usc0JBQXNCO1lBQ3hCLENBQUMsQ0FBQyxDQUFBO1NBQ0w7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELDJCQUEyQixDQUFDLEtBQUs7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNmLElBQUksS0FBSyxHQUFHO2dCQUNWLFdBQVcsRUFBRSxDQUFDO2dCQUNkLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUs7Z0JBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQzFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSzthQUN4RCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDZixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RJLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDNUQsSUFBSSxLQUFLLEdBQUc7Z0JBQ1YsVUFBVSxFQUFFO29CQUNWLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7b0JBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUs7b0JBQzdCLFlBQVksZ0RBQ1AsS0FBSyxHQUNMLGNBQWMsS0FDakIsY0FBYyxFQUFFOzRCQUNkLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7NEJBQy9DLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7NEJBQ2pELFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSTt5QkFDdkIsR0FDRjtpQkFDRjthQUNGLENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO2dCQUM5QixLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQTthQUN2RDtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFJO1FBQ3BCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRTtZQUNyRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNyRyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtTQUMxRjtRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBSTtRQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsOEVBQThFO1lBQzlFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ25JLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNyRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxDQUFDO29CQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUMvRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0UsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO3dCQUNsQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7cUJBQ3hCO29CQUNELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFFMUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLG1CQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNoSCxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO3dCQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztvQkFDN0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNSLG9CQUFvQjtvQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTt3QkFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTs0QkFDZCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dDQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dDQUNoRixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDOzRCQUMxRSxDQUFDLENBQUMsQ0FBQzs0QkFFSCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUU7Z0NBQzNDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0NBQ3RHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQ0FDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHO3dDQUN0QixRQUFRLEVBQUUsR0FBRztxQ0FDZCxDQUFDO2dDQUNKLENBQUMsQ0FBQyxDQUFBOzZCQUNIOzRCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRTtnQ0FDNUMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQ0FDeEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO29DQUNoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUc7d0NBQ3ZCLFFBQVEsRUFBRSxHQUFHO3FDQUNkLENBQUM7Z0NBQ0osQ0FBQyxDQUFDLENBQUE7NkJBQ0g7d0JBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUNWO2dCQUNILENBQUMsQ0FBQyxDQUFBO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNsQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7aUJBQ3hCO2dCQUNELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxtQkFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFHLENBQUM7Z0JBQ2pFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO29CQUN6RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7d0JBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLG9CQUFvQixDQUFDO3FCQUNoRSxDQUFDO2lCQUNIO2dCQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO29CQUMxRCxJQUFJLENBQUMsaUJBQWlCLEdBQUc7d0JBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLHFCQUFxQixDQUFDO3FCQUNqRSxDQUFDO2lCQUNIO2dCQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN6RyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO29CQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFFN0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7b0JBQzlCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTs0QkFDckUsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzs0QkFDaEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDMUUsQ0FBQyxDQUFDLENBQUE7d0JBRUYsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFOzRCQUMzQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dDQUN0RyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRztvQ0FDdEIsUUFBUSxFQUFFLEdBQUc7aUNBQ2QsQ0FBQzs0QkFDSixDQUFDLENBQUMsQ0FBQTt5QkFDSDt3QkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7NEJBQzVDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0NBQ3hHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQ0FDaEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO29DQUN2QixRQUFRLEVBQUUsR0FBRztpQ0FDZCxDQUFDOzRCQUNKLENBQUMsQ0FBQyxDQUFBO3lCQUNIO29CQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDVjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsV0FBVzs7UUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUN4QixJQUFJLE1BQUEsV0FBVyxDQUFDLGFBQWEsMENBQUUsT0FBTyxFQUFFO1lBQ3RDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxLQUFLLENBQUE7U0FDeEM7UUFDRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLHFCQUFRLFdBQVcsQ0FBRSxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXO1FBQzFCLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRSxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUU7WUFDeEMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzNFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2pGO2lCQUNJLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUM1RTtZQUNELDRCQUE0QjtTQUM3QjtJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN6RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztZQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztZQUM1RCxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO1lBQzVELElBQUksQ0FBQyxZQUFZLENBQUMscUJBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7O1lBQ3RFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxhQUFhLDBDQUFFLE9BQU8sTUFBSyxLQUFLLEVBQUU7Z0JBQy9ILElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEtBQUssQ0FBQTtnQkFDdEMsVUFBVSxHQUFHLEtBQUssQ0FBQzthQUNwQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxJQUFJLENBQUE7YUFDdEM7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFOztZQUNqRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxhQUFhLDBDQUFFLE9BQU8sTUFBSyxLQUFLLEVBQUU7Z0JBQzNGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDdkMsVUFBVSxHQUFHLEtBQUssQ0FBQzthQUVwQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDdkM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN6RixDQUFDOztrSEFoZVUsb0JBQW9CLGtCQXdDWCxlQUFlLGliQWN6QixhQUFhO3NHQXREWixvQkFBb0IsK0hDckJqQyxpOU9BNElNOzRGRHZITyxvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsV0FBVyxFQUFFLCtCQUErQjtvQkFDNUMsU0FBUyxFQUFFLENBQUMsK0JBQStCLENBQUM7aUJBQzdDOzswQkF5Q2MsTUFBTTsyQkFBQyxlQUFlOzswQkFjaEMsTUFBTTsyQkFBQyxhQUFhOzhFQXZCdkIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLHNCQUFzQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFVwbG9hZE1hbmFnbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvdXBsb2FkLW1hbmFnbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nTWFuZ21lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2RpYWxvZy1tYW5nbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9zZXJ2aWNlcy9kYXRlLWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2FkYXB0ZXJzL2FkYXB0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWd1cmF0aW9uL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZU1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBhZGRpbmdQcm9wZXJ0aWVzID0gZmFsc2U7XHJcbiAgZmlsZVR5cGVGb3JtOiBGb3JtR3JvdXA7XHJcbiAgZHluYW1pY0Zvcm07XHJcbiAgZHluYW1pY0RhdGE7XHJcbiAgc2VsZWN0ZWRGaWxlO1xyXG4gIGZpbGVUeXBlO1xyXG4gIHNvdXJjZTtcclxuICBwYXlsb2FkTGlzdCA9IFtdO1xyXG4gIGNyZWF0ZVdoZW5GaW5pc2hNb2RlID0gZmFsc2U7XHJcbiAgZmlsZUZvcm1TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBjb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgdGVtcG9yYXJ5RHlhbm1pY0RhdGE7XHJcbiAgc2hvd1JlbmRlcmVyID0gZmFsc2U7IC8vIHVzZWQgdG8gZm9yY2UgcmVuZGVyZXIgdG8gZmVlbCBjaGFuZ2VzIGluIGZvcm1zIGFuZCB2YWx1ZSB3aGVuIGNoYW5naW5nIGZpbGVzXHJcbiAgLy8gdXBsb2FkRmluaXNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgdXNpbmdFeHRyYUZpZWxkcyA9IGZhbHNlOyAvLyBmbGFnZSB0byBzd2l0Y2ggYmV0d2VlbiBzdGF0aWMgZm9ybSB0eXBlc1xyXG5cclxuICBmaWxlRm9ybTogRm9ybUdyb3VwO1xyXG4gIHN0YXRpY0Zvcm1GaWVsZHM7XHJcbiAgYWdlbmN5TmFtZUZpbHRlcjtcclxuICBjb3VudHJ5TmFtZUZpbHRlcjtcclxuICBpc0FyYWJpYyA9IGZhbHNlO1xyXG4gIHNob3dTdGF0aWNGb3JtID0gZmFsc2VcclxuICBsYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgZGlzYWJsZUNyZWF0ZVdoZW5GaW5pc2hCdG4gPSB0cnVlO1xyXG4gIGNyZWF0aW5nID0gZmFsc2U7XHJcbiAgZGlzcGxheU5vdGVNZXNzYWdlID0gdHJ1ZTtcclxuICBteUVudmlyb25tZW50O1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwLmVudGVyJywgWyckZXZlbnQnXSlcclxuICBLZXlVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZih0aGlzLmFkZGluZ1Byb3BlcnRpZXMgJiYgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuZmFpbGVkRmlsZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGlmKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkSW5Qcm9ncmVzcyAmJiAhdGhpcy5kaXNhYmxlQ3JlYXRlV2hlbkZpbmlzaEJ0bikge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlV2hlbkZpbmlzaCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRG9jdW1lbnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGEsXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q3JlYXRlTW9kYWxDb21wb25lbnQ+LFxyXG4gICAgcHVibGljIHVwbG9hZE1hbmdtZW50U2VydmljZTogVXBsb2FkTWFuYWdtZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dNYW5nbWVudFNlcnZpY2U6IERpYWxvZ01hbmdtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsZU1hbmdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9zdGVyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBhZGFwZXRlcjogQWRhcHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpbGVNYW5hZ2VyU2VydmljZTogRmlsZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25mU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZUhlbHBlclNlcnZpY2U6IERhdGVIZWxwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBudXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgZHluYW1pY0Zvcm1TZXJ2aWNlOiBEeW5hbWljRm9ybVNlcnZpY2UsKSB7XHJcbiAgICAgIHRoaXMubXlFbnZpcm9ubWVudCA9IHRoaXMuZW52aXJvbm1lbnQ7XHJcblxyXG4gICAgdGhpcy5jcmVhdGVXaGVuRmluaXNoTW9kZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpbmdQcm9wZXJ0aWVzID0gdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuYWRkaW5nUHJvcGVydGllc01vZGU7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2UuZmlsZVR5cGU7IC8vIG9iamVjdCB0aGF0IHdhcyBjb25zdHJ1Y3RlZCBpbnNpZGUgc3VidHlwZXMgc2VydmljZVxyXG4gICAgdGhpcy5zb3VyY2UgPSB0aGlzLmRpYWxvZ01hbmdtZW50U2VydmljZS5hZGRpbmdGcm9tO1xyXG4gICAgdGhpcy5maWxlTWFuYWdlclNlcnZpY2UuZ2V0RmlsZVNjaGVtYXModGhpcy5maWxlVHlwZS50eXBlKS5zdWJzY3JpYmUoc2NoZW1hcyA9PiB7XHJcbiAgICAgIHNjaGVtYXMubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLm5hbWUgPT09IFwiZ2VuZXJhbGRvY3VtZW50XCIpIHtcclxuICAgICAgICAgIHRoaXMudXNpbmdFeHRyYUZpZWxkcyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmluaXRpYXRmaWxlRm9ybSgpO1xyXG4gICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5nZXR0aW5nUHJvcEZyb21Nb2RhbCh7XHJcbiAgICAgICAgJ2ZpbGVUeXBlJzogdGhpcy5zb3VyY2UgPT09ICdmaWxlTWFuZ2VyJyA/IHRoaXMuZmlsZVR5cGUgOiB7fSxcclxuICAgICAgICAnZHluYW1pY0Zvcm0nOiB0aGlzLmRpYWxvZ01hbmdtZW50U2VydmljZS5zdG9yZWREeW5hbWljRm9ybSxcclxuICAgICAgICAnZHluYW1pY0RhdGEnOiB7fSxcclxuICAgICAgICAnc3RhdGljRm9ybVZhbGlkJzogdGhpcy51c2luZ0V4dHJhRmllbGRzID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICAgICdnZW5lcmFsVmFsaWRhdGlvblZhbGlkJzogdHJ1ZSxcclxuICAgICAgICAndXNpbmdFeHRyYUZpZWxkcyc6IHRoaXMudXNpbmdFeHRyYUZpZWxkcyxcclxuICAgICAgICAncGF0aCc6IHRoaXMuZGF0YS5wYXRoXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGFuZ1N1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzQXJhYmljLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLmlzQXJhYmljID0gcmVzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZEZpbmlzaFN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRGaW5pc2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZEZpbmlzaFN1YnNjcmlwdGlvbiA9IHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLm9uVXBsb2FkRmluaXNoLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jcmVhdGVXaGVuRmluaXNoTW9kZSB8fCB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5mYWlsZWRGaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVEb2N1bWVudCgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhdGZpbGVGb3JtKCkge1xyXG4gICAgaWYgKHRoaXMudXNpbmdFeHRyYUZpZWxkcykge1xyXG4gICAgICB0aGlzLmZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgdGl0bGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogWycnXSxcclxuICAgICAgICBzdWJqZWN0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgZG9jdW1lbnROdW1iZXI6IFsnJ10sXHJcbiAgICAgICAgZ2RvY3VtZW50RGF0ZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgc2VjcmVjeUxldmVsOiBbbnVsbF0sXHJcbiAgICAgICAgaW1wb3J0YW5jZUxldmVsOiBbbnVsbF0sXHJcbiAgICAgICAgZGVwYXJ0bWVudENvZGU6IFsnJ10sXHJcbiAgICAgICAgYWdlbmN5Q2F0ZWdvcnlDb2RlOiBbbnVsbF0sXHJcbiAgICAgICAgYWdlbmN5TmFtZTogW251bGxdLFxyXG4gICAgICAgIGNvdW50cnlDYXRlZ29yeUNvZGU6IFtudWxsXSxcclxuICAgICAgICBjb3VudHJ5TmFtZTogW251bGxdLFxyXG4gICAgICAgIHJlbWFya3M6IFsnJ11cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICB0aXRsZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBbJyddXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRpY0Zvcm1GaWVsZHMgPSB0aGlzLmFwcENvbmZTZXJ2aWNlLm15Q29uZmlndXJhdGlvbi5zdGF0aWNGb3JtRmllbGRzOyBcclxuICB9XHJcbiAgXHJcbiAgY3JlYXRlV2hlbkZpbmlzaCgpIHtcclxuICAgIHRoaXMuY3JlYXRlV2hlbkZpbmlzaE1vZGUgPSB0cnVlO1xyXG4gICAgdGhpcy5taW5pbWl6RGlhbG9nKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLkdlbmVyYWxGb3JtVmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uID8gdGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogJyc7XHJcbiAgICB0aGlzLmFkZGluZ1Byb3BlcnRpZXMgPSBmYWxzZTtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnJlc2V0U3RhdHVzKCk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSlcclxuICB9XHJcblxyXG4gIHN0YXJ0QWRkaW5nUHJvcGVydGllcygpIHtcclxuICAgIC8vaWYgc3RhcnRpbmcgZnJvbSBmaWxlbW5hZ2VyIHRoZW4gaSBoYXZlIGZpeGVkIGZpbGUgdHlwZSBmb3IgYWxsIGF0dGFjaG1ldG4gYW5kIHNpbmdsZSBkeW5haW1jIGZvcm0gIHR5cGVcclxuICAgIGlmICh0aGlzLnNvdXJjZSA9PT0gJ2ZpbGVNYW5nZXInKSB7XHJcbiAgICAgIC8vIHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmdldER5bmFtaWNGb3JtKHRoaXMuZmlsZVR5cGUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG5cclxuICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzLm1hcChmaWxlID0+IHtcclxuICAgICAgICBmaWxlWydmaWxlVHlwZSddID0gdGhpcy5zb3VyY2UgPT09ICdmaWxlTWFuZ2VyJyA/IHRoaXMuZmlsZVR5cGUgOiB7fTtcclxuICAgICAgICBmaWxlWydkeW5hbWljRm9ybSddID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2Uuc3RvcmVkRHluYW1pY0Zvcm07XHJcbiAgICAgICAgZmlsZVsnZHluYW1pY0RhdGEnXSA9IHt9O1xyXG4gICAgICAgIGZpbGVbJ3N0YXRpY0Zvcm1WYWxpZCddID0gdGhpcy51c2luZ0V4dHJhRmllbGRzID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgICAgIGZpbGVbJ3N0YXRpY0RhdGEnXSA9IHRoaXMuc2V0U3RhdGljRGF0YShmaWxlLnRpdGxlID8gZmlsZS50aXRsZSA6IGZpbGUubmFtZSk7XHJcbiAgICAgICAgZmlsZVsnZ2VuZXJhbFZhbGlkYXRpb25WYWxpZCddID0gdHJ1ZTtcclxuICAgICAgfSlcclxuICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy5hbGxmaWxlcy5tYXAoZmlsZSA9PiB7XHJcbiAgICAgICAgZmlsZVsnZmlsZVR5cGUnXSA9IHRoaXMuc291cmNlID09PSAnZmlsZU1hbmdlcicgPyB0aGlzLmZpbGVUeXBlIDoge307XHJcbiAgICAgICAgZmlsZVsnZHluYW1pY0Zvcm0nXSA9IHRoaXMuZGlhbG9nTWFuZ21lbnRTZXJ2aWNlLnN0b3JlZER5bmFtaWNGb3JtO1xyXG4gICAgICAgIGZpbGVbJ2R5bmFtaWNEYXRhJ10gPSB7fTtcclxuICAgICAgICBmaWxlWydzdGF0aWNGb3JtVmFsaWQnXSA9IHRoaXMudXNpbmdFeHRyYUZpZWxkcyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgICBmaWxlWydzdGF0aWNEYXRhJ10gPSB0aGlzLnNldFN0YXRpY0RhdGEoZmlsZS50aXRsZSA/IGZpbGUudGl0bGUgOiBmaWxlLm5hbWUpO1xyXG4gICAgICAgIGZpbGVbJ2dlbmVyYWxWYWxpZGF0aW9uVmFsaWQnXSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5hZGRpbmdQcm9wZXJ0aWVzID0gdHJ1ZTtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLmFkZGluZ1Byb3BlcnRpZXNNb2RlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNldFN0YXRpY0RhdGEodGl0bGUpIHtcclxuICAgIGlmICh0aGlzLnVzaW5nRXh0cmFGaWVsZHMpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICcnLFxyXG4gICAgICAgIHN1YmplY3Q6ICcnLFxyXG4gICAgICAgIGRvY3VtZW50TnVtYmVyOiAnJyxcclxuICAgICAgICBnZG9jdW1lbnREYXRlOiBudWxsLFxyXG4gICAgICAgIHNlY3JlY3lMZXZlbDogdGhpcy5kYXRhLm91dGVyRGVmYXVsdFNlY3JlY3kgfHwgbnVsbCxcclxuICAgICAgICBpbXBvcnRhbmNlTGV2ZWw6IHRoaXMuZGF0YS5vdXRlckRlZmF1bHRJbXBvcnRhbmNlIHx8IG51bGwsXHJcbiAgICAgICAgZGVwYXJ0bWVudENvZGU6IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckRlcGFydG1lbnRGcm9tUGF0aCh0aGlzLmRhdGEucGF0aCksXHJcbiAgICAgICAgYWdlbmN5Q2F0ZWdvcnlDb2RlOiBudWxsLFxyXG4gICAgICAgIGFnZW5jeU5hbWU6IG51bGwsXHJcbiAgICAgICAgY291bnRyeUNhdGVnb3J5Q29kZTogbnVsbCxcclxuICAgICAgICBjb3VudHJ5TmFtZTogbnVsbCxcclxuICAgICAgICByZW1hcmtzOiAnJ1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJydcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRG9jdW1lbnQoKSB7XHJcbiAgICB0aGlzLmNyZWF0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLmZhaWxlZEZpbGVzID0gW107XHJcbiAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5HZW5lcmFsRm9ybVZhbGlkYXRpb24gPSB0aGlzLmNoZWNrVmFsaWRhdGlvbigpO1xyXG4gICAgaWYgKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLkdlbmVyYWxGb3JtVmFsaWRhdGlvbikge1xyXG5cclxuICAgICAgbGV0IGFwaUNhbGxzID0gW107XHJcbiAgICAgIGlmICh0aGlzLmRhdGE/LnBhdGguaW5jbHVkZXMoJy9kZWZhdWx0LWRvbWFpbi93b3Jrc3BhY2VzL0RNU1dvcmtzcGFjZXMnKSB8fCB0aGlzLmRhdGE/LnBhdGguaW5jbHVkZXMoJy9kZWZhdWx0LWRvbWFpbi9Vc2VyV29ya3NwYWNlcy8nKSkge1xyXG4gICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdFBheUxvYWRUb1dvcmtTcGFjZSh0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMpO1xyXG4gICAgICAgIHRoaXMucGF5bG9hZExpc3QubWFwKHBheWxvYWQgPT4ge1xyXG4gICAgICAgICAgYXBpQ2FsbHMucHVzaCh0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmNyZWF0ZUZpbGUocGF5bG9hZCwgdGhpcy5maWxlTWFuYWdlclNlcnZpY2Uuc2VsZWN0ZWRGb2xkZXJJZCwgJ0RNUy5DcmVhdGVEb2N1bWVudEZyb21CbG9iJykpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RQYXlMb2FkKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlcyk7XHJcbiAgICAgICAgdGhpcy5wYXlsb2FkTGlzdC5tYXAocGF5bG9hZCA9PiB7XHJcbiAgICAgICAgICBhcGlDYWxscy5wdXNoKHRoaXMuZmlsZU1hbmdlclNlcnZpY2UuY3JlYXRlRmlsZShwYXlsb2FkLCB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5zZWxlY3RlZEZvbGRlcklkKSlcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBmb3JrSm9pbihhcGlDYWxscykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHJlc3BvbnNlLm1hcChzaW5nbGVSZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKHNpbmdsZVJlc1snc3RhdHVzJ10gJiYgc2luZ2xlUmVzWydzdGF0dXMnXSA9PT0gJ2ZhaWxlZCcpIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuZmFpbGVkRmlsZXMucHVzaChzaW5nbGVSZXNbJ29yaWdpbkZpbGUnXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5mYWlsZWRGaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsICdUT0FTVEVSLlVQTE9BRF9FUlJPUicpO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLmFsbGZpbGVzID0gWy4uLnRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLmZhaWxlZEZpbGVzXTtcclxuXHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLm9uUmVmcmVzaGluZ0ZpbGVNYW5nZXIubmV4dCgpO1xyXG4gICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLkZJTEVfQ1JFQVRFRF9TVUNDRVwiKVxyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UucmVzZXRTdGF0dXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgLy8gdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJyAsICdUT0FTVEVSLkVSUk9SJyAsICdUT0FTVEVSLlVQTE9BRF9FUlJPUicpO1xyXG4gICAgICAgICAgLy8gdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0aW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RQYXlMb2FkVG9Xb3JrU3BhY2UoZmlsZXMpIHtcclxuICAgIHRoaXMucGF5bG9hZExpc3QgPSBbXTtcclxuICAgIGZpbGVzLm1hcChmaWxlID0+IHtcclxuICAgICAgbGV0IHBhcmFtID0ge1xyXG4gICAgICAgIFwiZmlsZWluZGV4XCI6IDAsXHJcbiAgICAgICAgXCJmaWxlTmFtZVwiOiBmaWxlLnN0YXRpY0RhdGEudGl0bGUsXHJcbiAgICAgICAgXCJiYXRjaGlkXCI6IGZpbGUuYmF0Y2guYmxvYlsndXBsb2FkLWJhdGNoJ10sXHJcbiAgICAgICAgXCJkZXNjcmlwdGlvblwiOiB0aGlzLmZpbGVGb3JtLmNvbnRyb2xzLmRlc2NyaXB0aW9uLnZhbHVlXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMucGF5bG9hZExpc3QucHVzaCh7IHBhcmFtczogcGFyYW0sIG9yaWdpbkZpbGU6IGZpbGUgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdHJ5QWdhaW5DcmVhdGVEb2N1bWVudCgpIHtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZEZpbGVzTWFuZ21lbnQodGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuZmFpbGVkRmlsZXMpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0UGF5TG9hZChmaWxlcykge1xyXG4gICAgdGhpcy5wYXlsb2FkTGlzdCA9IFtdO1xyXG4gICAgZmlsZXMubWFwKGZpbGUgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb25zdHJ1Y3REeW5hbWljRm9ybVBheWxvYWQoZmlsZS5keW5hbWljRGF0YS5kYXRhID8gZmlsZS5keW5hbWljRGF0YS5kYXRhIDoge30sIGZpbGUuZHluYW1pY0Zvcm0pO1xyXG4gICAgICBsZXQgc3RhdGljRm9ybURhdGEgPSB0aGlzLm1hcHBpbmdTdGF0aWNEYXRhKGZpbGUuc3RhdGljRGF0YSlcclxuICAgICAgbGV0IHBhcmFtID0ge1xyXG4gICAgICAgIFwiZG9jdW1lbnRcIjoge1xyXG4gICAgICAgICAgXCJ0eXBlXCI6IGZpbGUuZmlsZVR5cGUudHlwZSxcclxuICAgICAgICAgIFwibmFtZVwiOiBmaWxlLnN0YXRpY0RhdGEudGl0bGUsXHJcbiAgICAgICAgICBcInByb3BlcnRpZXNcIjoge1xyXG4gICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgLi4uc3RhdGljRm9ybURhdGEsXHJcbiAgICAgICAgICAgIFwiZmlsZTpjb250ZW50XCI6IHtcclxuICAgICAgICAgICAgICBcInVwbG9hZC1iYXRjaFwiOiBmaWxlLmJhdGNoLmJsb2JbJ3VwbG9hZC1iYXRjaCddLFxyXG4gICAgICAgICAgICAgIFwidXBsb2FkLWZpbGVJZFwiOiBmaWxlLmJhdGNoLmJsb2JbJ3VwbG9hZC1maWxlSWQnXSxcclxuICAgICAgICAgICAgICBcIm1pbWUtdHlwZVwiOiBmaWxlLnR5cGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgaWYgKGZpbGUuZmlsZVR5cGUuZG9jdW1lbnRDb2RlKSB7XHJcbiAgICAgICAgcGFyYW1bXCJkb2N1bWVudFR5cGVDb2RlXCJdID0gZmlsZS5maWxlVHlwZS5kb2N1bWVudENvZGVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBheWxvYWRMaXN0LnB1c2goeyBwYXJhbXM6IHBhcmFtLCBvcmlnaW5GaWxlOiBmaWxlIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG1hcHBpbmdTdGF0aWNEYXRhKGRhdGEpIHtcclxuICAgIGlmIChkYXRhLmdkb2N1bWVudERhdGUgJiYgZGF0YS5nZG9jdW1lbnREYXRlICE9PSBudWxsKSB7XHJcbiAgICAgIG1vbWVudC5sb2NhbGUoJ2VuJyk7XHJcbiAgICAgIGRhdGFbJ2hkb2N1bWVudERhdGUnXSA9IHRoaXMuZGF0ZUhlbHBlclNlcnZpY2UuZ3JlZ29yaWFuVG9IaWpyaShkYXRhLmdkb2N1bWVudERhdGUsICdpWVlZWS1pTU0taUREJyk7XHJcbiAgICAgIGRhdGEuZ2RvY3VtZW50RGF0ZSA9IChtb21lbnQoZGF0YS5nZG9jdW1lbnREYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREVDAwOjAwOjAwLjAwMFwiKSArIFwiWlwiKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYWRhcGV0ZXIuYWRhcHRPdXQoZGF0YSwgdGhpcy5zdGF0aWNGb3JtRmllbGRzKVxyXG4gIH1cclxuICAgIFxyXG4gIHNlbGVjdEZpbGUoZmlsZSkge1xyXG4gICAgY29uc29sZS5sb2coXCJmaWxlIGluIHNlbGVjdFwiLCBmaWxlKVxyXG4gICAgdGhpcy5zaG93U3RhdGljRm9ybSA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZ2VuY3lOYW1lRmlsdGVyID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHVuZGVmaW5lZDtcclxuICAgIC8vY29uc29sZS5sb2coZmlsZSk7XHJcbiAgICBpZiAoIXRoaXMuYWRkaW5nUHJvcGVydGllcykge1xyXG4gICAgICB0aGlzLnN0YXJ0QWRkaW5nUHJvcGVydGllcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWRkaW5nUHJvcGVydGllcykge1xyXG4gICAgICB0aGlzLnNob3dSZW5kZXJlciA9IGZhbHNlO1xyXG4gICAgICAvLyBjaGVjayBpZiBmaWxlIGhhcyBwcm9wZXJ0aWVzIG9mIGFkZGluZyBwcm9wZXJ0aWVzIG9yIG5vdCB0aGVuIGFkZCBpdCB0byBoaW1cclxuICAgICAgaWYgKCFmaWxlLmhhc093blByb3BlcnR5KCdmaWxlVHlwZScpKSB7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuZ2V0RHluYW1pY0Zvcm0odGhpcy5maWxlVHlwZS5kb2N1bWVudENvZGUgPyB0aGlzLmZpbGVUeXBlLmRvY3VtZW50Q29kZSA6IHRoaXMuZmlsZVR5cGUudHlwZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICBmaWxlWydmaWxlVHlwZSddID0gdGhpcy5zb3VyY2UgPT09ICdmaWxlTWFuZ2VyJyA/IHRoaXMuZmlsZVR5cGUgOiB7fTtcclxuICAgICAgICAgIGZpbGVbJ2R5bmFtaWNGb3JtJ10gPSByZXM7XHJcbiAgICAgICAgICBmaWxlWydkeW5hbWljRGF0YSddID0ge307XHJcbiAgICAgICAgICBmaWxlWydzdGF0aWNGb3JtVmFsaWQnXSA9IHRoaXMudXNpbmdFeHRyYUZpZWxkcyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgICAgIGZpbGVbJ2dlbmVyYWxWYWxpZGF0aW9uVmFsaWQnXSA9IHRydWU7XHJcbiAgICAgICAgICBmaWxlWydzdGF0aWNEYXRhJ10gPSB0aGlzLnNldFN0YXRpY0RhdGEoZmlsZS50aXRsZSA/IGZpbGUudGl0bGUgOiBmaWxlLm5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmZpbGVGb3JtKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhdGZpbGVGb3JtKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpbGVGb3JtLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXSk7XHJcblxyXG4gICAgICAgICAgdGhpcy50ZW1wb3JhcnlEeWFubWljRGF0YSA9IHt9O1xyXG4gICAgICAgICAgdGhpcy50ZW1wb3JhcnlEeWFubWljRGF0YSA9IHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLmRhdGEgPyB7IC4uLnRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLmRhdGEgfSA6IHt9O1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1JlbmRlcmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93U3RhdGljRm9ybSA9IHRydWU7XHJcbiAgICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhmaWxlKTtcclxuICAgICAgICAgIGlmICghdGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uID0gdGhpcy5maWxlRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZS5zdGF0aWNGb3JtVmFsaWQgPSB0aGlzLmZpbGVGb3JtID8gdGhpcy5maWxlRm9ybS52YWxpZCA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUuc3RhdGljRGF0YSA9IHRoaXMuZmlsZUZvcm0gPyB0aGlzLmZpbGVGb3JtLnZhbHVlIDoge307XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5Q2F0ZWdvcnlDb2RlJykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeU5hbWUnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hZ2VuY3lOYW1lRmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiByZXNcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2NvdW50cnlOYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRyeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IHJlc1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlO1xyXG4gICAgICAgIGlmICghdGhpcy5maWxlRm9ybSkge1xyXG4gICAgICAgICAgdGhpcy5pbml0aWF0ZmlsZUZvcm0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWxlRm9ybS5wYXRjaFZhbHVlKHsgLi4udGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXSB9KTtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnYWdlbmN5Q2F0ZWdvcnlDb2RlJ10pIHtcclxuICAgICAgICAgIHRoaXMuYWdlbmN5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuc2VsZWN0ZWRGaWxlWydzdGF0aWNEYXRhJ11bJ2FnZW5jeUNhdGVnb3J5Q29kZSddXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnY291bnRyeUNhdGVnb3J5Q29kZSddKSB7XHJcbiAgICAgICAgICB0aGlzLmNvdW50cnlOYW1lRmlsdGVyID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogdGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnY291bnRyeUNhdGVnb3J5Q29kZSddXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRlbXBvcmFyeUR5YW5taWNEYXRhID0ge307XHJcbiAgICAgICAgdGhpcy50ZW1wb3JhcnlEeWFubWljRGF0YSA9IHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLmRhdGEgPyB0aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRGF0YS5kYXRhIDoge307XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSZW5kZXJlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dTdGF0aWNGb3JtID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICBpZiAoIXRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uID0gdGhpcy5maWxlRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUuc3RhdGljRm9ybVZhbGlkID0gdGhpcy5maWxlRm9ybSA/IHRoaXMuZmlsZUZvcm0udmFsaWQgOiBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZS5zdGF0aWNEYXRhID0gdGhpcy5maWxlRm9ybSA/IHRoaXMuZmlsZUZvcm0udmFsdWUgOiB7fTtcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5Q2F0ZWdvcnlDb2RlJykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsZUZvcm0uZ2V0KCdhZ2VuY3lDYXRlZ29yeUNvZGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZ2VuY3lOYW1lRmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgICAgICBjYXRlZ29yeTogcmVzXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5Q2F0ZWdvcnlDb2RlJykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvdW50cnlDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IHJlc1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uZHluYW1pY0Zvcm1DaGFuZ2UoZHluYW1pY0RhdGEpIHtcclxuICAgIGNvbnNvbGUubG9nKGR5bmFtaWNEYXRhKVxyXG4gICAgaWYgKGR5bmFtaWNEYXRhLm9yaWdpbmFsRXZlbnQ/LmlzVmFsaWQpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlQ3JlYXRlV2hlbkZpbmlzaEJ0biA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICBpZiAoZHluYW1pY0RhdGEuZGF0YSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRGF0YSA9IHsgLi4uZHluYW1pY0RhdGEgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1pbmltaXpEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW0oaXRlbSwgbGlzdG9mRmlsZXMpIHtcclxuICAgIGNvbnN0IHJlbW92ZUluZGV4ID0gbGlzdG9mRmlsZXMuZmluZEluZGV4KGZpbGUgPT4gZmlsZS5uYW1lID09PSBpdGVtLm5hbWUpO1xyXG4gICAgbGlzdG9mRmlsZXMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcclxuICAgIGlmIChpdGVtLm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRGaWxlLm5hbWUpIHtcclxuICAgICAgaWYgKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RGaWxlKHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlc1swXSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLmFsbGZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEZpbGUodGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy5hbGxmaWxlc1swXSlcclxuICAgICAgfVxyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBBcHBseUNoYW5nZXNUb0FsbCgpIHtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlcy5tYXAoZmlsZSA9PiB7XHJcbiAgICAgIGxldCB0aXRsZSA9IGZpbGVbJ3N0YXRpY0RhdGEnXSA/IGZpbGVbJ3N0YXRpY0RhdGEnXVsndGl0bGUnXSA6IGZpbGUubmFtZTtcclxuICAgICAgZmlsZVsnZmlsZVR5cGUnXSA9IHRoaXMuc2VsZWN0ZWRGaWxlLmZpbGVUeXBlO1xyXG4gICAgICBmaWxlWydkeW5hbWljRm9ybSddID0gdGhpcy5zZWxlY3RlZEZpbGUuZHluYW1pY0Zvcm07XHJcbiAgICAgIGZpbGVbJ2R5bmFtaWNEYXRhJ10gPSB0aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRGF0YTtcclxuICAgICAgZmlsZVsnc3RhdGljRm9ybVZhbGlkJ10gPSB0aGlzLnNlbGVjdGVkRmlsZS5zdGF0aWNGb3JtVmFsaWQ7XHJcbiAgICAgIGZpbGVbJ3N0YXRpY0RhdGEnXSA9IHsgLi4udGhpcy5maWxlRm9ybS52YWx1ZSB9O1xyXG4gICAgICBmaWxlWydzdGF0aWNEYXRhJ11bJ3RpdGxlJ10gPSB0aXRsZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLmFsbGZpbGVzLm1hcChmaWxlID0+IHtcclxuICAgICAgbGV0IHRpdGxlID0gZmlsZVsnc3RhdGljRGF0YSddID8gZmlsZVsnc3RhdGljRGF0YSddWyd0aXRsZSddIDogZmlsZS5uYW1lO1xyXG4gICAgICBmaWxlWydmaWxlVHlwZSddID0gdGhpcy5zZWxlY3RlZEZpbGUuZmlsZVR5cGU7XHJcbiAgICAgIGZpbGVbJ2R5bmFtaWNGb3JtJ10gPSB0aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRm9ybTtcclxuICAgICAgZmlsZVsnZHluYW1pY0RhdGEnXSA9IHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhO1xyXG4gICAgICBmaWxlWydzdGF0aWNGb3JtVmFsaWQnXSA9IHRoaXMuc2VsZWN0ZWRGaWxlLnN0YXRpY0Zvcm1WYWxpZDtcclxuICAgICAgZmlsZVsnc3RhdGljRGF0YSddID0geyAuLi50aGlzLmZpbGVGb3JtLnZhbHVlIH07XHJcbiAgICAgIGZpbGVbJ3N0YXRpY0RhdGEnXVsndGl0bGUnXSA9IHRpdGxlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGVja1ZhbGlkYXRpb24oKSB7XHJcbiAgICBsZXQgdmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMubWFwKGZpbGUgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImZpbGVcIiwgZmlsZSlcclxuICAgICAgaWYgKCFmaWxlLmhhc093blByb3BlcnR5KCdmaWxlVHlwZScpIHx8IGZpbGVbJ3N0YXRpY0Zvcm1WYWxpZCddID09PSBmYWxzZSB8fCBmaWxlLmR5bmFtaWNEYXRhPy5vcmlnaW5hbEV2ZW50Py5pc1ZhbGlkID09PSBmYWxzZSkge1xyXG4gICAgICAgIGZpbGVbJ2dlbmVyYWxWYWxpZGF0aW9uVmFsaWQnXSA9IGZhbHNlXHJcbiAgICAgICAgdmFsaWRhdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZpbGVbJ2dlbmVyYWxWYWxpZGF0aW9uVmFsaWQnXSA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMuYWxsZmlsZXMubWFwKGZpbGUgPT4ge1xyXG4gICAgICBpZiAoZmlsZVsnc3RhdGljRm9ybVZhbGlkJ10gPT09IGZhbHNlIHx8IGZpbGUuZHluYW1pY0RhdGE/Lm9yaWdpbmFsRXZlbnQ/LmlzVmFsaWQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgZmlsZVsnZ2VuZXJhbFZhbGlkYXRpb25WYWxpZCddID0gZmFsc2U7XHJcbiAgICAgICAgdmFsaWRhdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWxlWydnZW5lcmFsVmFsaWRhdGlvblZhbGlkJ10gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdmFsaWRhdGlvbjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbiA/IHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG4gICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uID8gdGhpcy5sYW5nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICAgIHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogJyc7XHJcbiAgICB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuYWdlbmN5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbCBoLWZ1bGxcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmVyLXdyYXBwZXJcIiBbbmdDbGFzc109XCJ7ICdkLWZsZXgnOiBhZGRpbmdQcm9wZXJ0aWVzIH1cIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRkaW5nUHJvcGVydGllc1wiIGNsYXNzPVwicHJvcGVydGllcy1zZWN0aW9uIHAtMyBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy15LWF1dG9cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiICpuZ0lmPVwic2VsZWN0ZWRGaWxlICYmIHNvdXJjZSA9PT0gJ2ZpbGVNYW5nZXInICYmIHNob3dTdGF0aWNGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5GSUxFX1RZUEVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgdGV4dC1ncmF5LTkwMFwiPnt7IGlzQXJhYmljID8gZmlsZVR5cGUuYXJhYmljVGV4dCA6IGZpbGVUeXBlLmVuZ2xpc2hUZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWZpZWxkcyBtdC0zXCIgU2V0UnRsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsZUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLW9sZCBzdGF0aWMgZm9ybSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLlRJVExFXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLXN0eWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHBsYWNlaG9sZGVyPVwiIHt7ICdDUkVBVEUuVElUTEUnIHwgdHJhbnNsYXRlfX1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuREVTQ1JJUFRJT05cIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZpZWxkLXN0eWxlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiB7eyAnQ1JFQVRFLkRFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0gbmV3IHN0YXRpcyBmb3JtICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNpbmdFeHRyYUZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlciBbZm9ybV09XCJmaWxlRm9ybVwiIFthZ2VuY3lOYW1lRmlsdGVyXT1cImFnZW5jeU5hbWVGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5TmFtZUZpbHRlcl09XCJjb3VudHJ5TmFtZUZpbHRlclwiPjwvYXBwLWR5bmFtaWMtZmllbGRzLXJlbmRlcmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLXBhcnRcIiAqbmdJZj1cInNob3dSZW5kZXJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWR5bmFtaWMtZm9ybSBbZm9ybV09XCJzZWxlY3RlZEZpbGUuZHluYW1pY0Zvcm1cIiBbZGF0YV09XCJ0ZW1wb3JhcnlEeWFubWljRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uZHluYW1pY0Zvcm1DaGFuZ2UoJGV2ZW50KVwiPjwvYXBwLWR5bmFtaWMtZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHctZnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIGgtZnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIHAtM1xyXG4gICAgICAgICAgICAgICAgICAgIGZsZXhcclxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNlbnRlclxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLWNlbnRlclxyXG4gICAgICAgICAgICAgICAgICAgIHRleHQtbGcgdGV4dC1ncmF5LTkwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2VsZWN0ZWRGaWxlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5TRUxFQ1RfVE9TVEFSVF9BRERJTkdcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQtdGFiLWJvZHkgb3ZlcmZsb3ctaGlkZGVuXCIgW25nQ2xhc3NdPVwieyAnYXR0YWNobWVudC1pbmVyLXNtYWxsLWJvZHknOiBhZGRpbmdQcm9wZXJ0aWVzIH1cIj5cclxuICAgICAgICAgICAgPGFwcC1hdHRhY2htZW50cyBbbXVsdGlwbGVdPVwidHJ1ZVwiIChvblNlbGVjdGluZ0l0ZW0pPVwic2VsZWN0RmlsZSgkZXZlbnQpXCI+PC9hcHAtYXR0YWNobWVudHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgdGV4dC1yZWQtNTAwIHRleHQtYmFzZSB0ZXh0LXN0YXJ0IHB4LTNcIiAqbmdJZj1cIiF1cGxvYWRNYW5nbWVudFNlcnZpY2UuR2VuZXJhbEZvcm1WYWxpZGF0aW9uXCI+XHJcblxyXG4gICAgICAgIHt7IFwiQ1JFQVRFLkZJTExfUkVRVUlSRURfRklFTERcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1pbmVyLXdyYXBwZXIgdy1mdWxsIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBhYnNvbHV0ZSBib3R0b20tMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAodXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnVwbG9hZEluUHJvZ3Jlc3MgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkZWRGaWxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCA+IDApICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIWFkZGluZ1Byb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgIFwiIChjbGljayk9XCJzdGFydEFkZGluZ1Byb3BlcnRpZXMoKVwiIGNsYXNzPVwic3VibWlzc2lvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5BRERfUFJPUEVSVElFU1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWRkaW5nUHJvcGVydGllcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLmFsbGZpbGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgXCIgKGNsaWNrKT1cIkFwcGx5Q2hhbmdlc1RvQWxsKClcIiBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkRmlsZSB8fCAhc2VsZWN0ZWRGaWxlLnN0YXRpY0Zvcm1WYWxpZFwiIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRGaWxlIHx8ICFzZWxlY3RlZEZpbGUuc3RhdGljRm9ybVZhbGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICdjdXJzb3ItcG9pbnRlciBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJnLWdyYXktOTAwJzogIShcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkRmlsZSB8fCAhc2VsZWN0ZWRGaWxlLnN0YXRpY0Zvcm1WYWxpZFxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIH1cIiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uIG14LTJcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5BUFBMWV9UT19BTExcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJcclxuICAgICAgICAgICAgYWRkaW5nUHJvcGVydGllcyAmJlxyXG4gICAgICAgICAgICAhdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkSW5Qcm9ncmVzcyAmJlxyXG4gICAgICAgICAgICB1cGxvYWRNYW5nbWVudFNlcnZpY2UuZmFpbGVkRmlsZXMubGVuZ3RoID09PSAwXHJcbiAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjcmVhdGVEb2N1bWVudCgpXCIgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvbiByZWxhdGl2ZVwiIFtkaXNhYmxlZF09XCJjcmVhdGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNyZWF0aW5nOyBlbHNlIGxvYWRlclwiPnt7IFwiQlVUVE9OUy5DUkVBVEVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIFt2YWx1ZV09XCI5MFwiIFtzdHJva2VXaWR0aF09XCIzXCIgb3ZlcmxheT1cInRydWVcIiBbZGlhbWV0ZXJdPVwiMjVcIiBjb2xvcj1cIndhcm5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIGFkZGluZ1Byb3BlcnRpZXMgJiZcclxuICAgICAgICAgICAgIXVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZEluUHJvZ3Jlc3MgJiZcclxuICAgICAgICAgICAgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLmZhaWxlZEZpbGVzLmxlbmd0aCA+IDBcclxuICAgICAgICBcIiAoY2xpY2spPVwidHJ5QWdhaW5DcmVhdGVEb2N1bWVudCgpXCIgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAge3sgXCJCVVRUT05TLlRSWV9BR0FJTlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIWZpbGVGb3JtPy52YWxpZCB8fCBkaXNhYmxlQ3JlYXRlV2hlbkZpbmlzaEJ0blwiICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWRkaW5nUHJvcGVydGllcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZEluUHJvZ3Jlc3NcclxuICAgICAgICAgICAgICAgIFwiIChjbGljayk9XCJjcmVhdGVXaGVuRmluaXNoKClcIiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uIHctNDRcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5DUkVBVEVfV0hFTl9GSU5TSFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxhdGlvbi1idXR0b24gbXgtMlwiIChjbGljayk9XCJtaW5pbWl6RGlhbG9nKClcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC51cGxvYWRJblByb2dyZXNzIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm51bWJlck9mVXBsb2FkZWRGaWxlcyAhPT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZGluZ1Byb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAge3sgXCJCVVRUT05TLk1JTklNSVpFRFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsYXRpb24tYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5DQU5DRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -6,7 +6,7 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/material/dialog";
7
7
  import * as i2 from "../../../../shared-services/file-manager.service";
8
8
  import * as i3 from "../../../../shared-services/dynamic-form.service";
9
- import * as i4 from "../../../../Core/services/translation/translation.service";
9
+ import * as i4 from "../../../../core/services/translation/translation.service";
10
10
  import * as i5 from "../../../custom-toastr/services/custom-toastr.service";
11
11
  import * as i6 from "@angular/forms";
12
12
  import * as i7 from "../../../dynamic-form/components/dynamic-form/dynamic-form.component";
@@ -126,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
126
126
  type: HostListener,
127
127
  args: ['document:keyup.enter', ['$event']]
128
128
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVyLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9mb2xkZXItbW9kYWwvZm9sZGVyLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9mb2xkZXItbW9kYWwvZm9sZGVyLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVMzQyxNQUFNLE9BQU8sb0JBQW9CO0lBOEIvQixZQUE0QyxJQUFJLEVBQ3hDLFNBQThDLEVBQzlDLGlCQUFzQyxFQUN0QyxrQkFBdUMsRUFDdkMsa0JBQXVDLEVBQ3ZDLGFBQW1DLEVBQ25DLFdBQXlCO1FBTlcsU0FBSSxHQUFKLElBQUksQ0FBQTtRQUN4QyxjQUFTLEdBQVQsU0FBUyxDQUFxQztRQUM5QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQ3RDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQjtRQUN2QyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMs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LG9CQUFvQixrQkE4QlgsZUFBZTtzR0E5QnhCLG9CQUFvQix5T0NmakMsbzdGQXNGRTs0RkR2RVcsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2lCQUM3Qzs7MEJBK0JjLE1BQU07MkJBQUMsZUFBZTtzT0FQVixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRXZCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9sZGVyLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9sZGVyLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb2xkZXItbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9sZGVyTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQgLCBBZnRlclZpZXdJbml0ICwgT25EZXN0cm95IHtcclxuICBmb2xkZXJUeXBlO1xyXG4gIGR5bmFtaWNGb3JtO1xyXG4gIHRlbXBvcmFyeUR5YW5taWNEYXRhID0ge307XHJcbiAgc2hvd1JlbmRlcmVyID0gZmFsc2U7XHJcbiAgZHluYW1pY0RhdGEgPSB7XHJcbiAgICB2YWxpZCA6IGZhbHNlXHJcbiAgfTtcclxuICBzdGF0aWNGb3JtID0ge1xyXG4gICAgdGl0bGUgOiAnJyxcclxuICAgIGRlc2NyaXB0aW9uIDogJycsXHJcbiAgICAvLyBkZXBhcnRtZW50OicnXHJcbiAgfVxyXG5cclxuICBmaWx0ZXI9e307XHJcbiAgZmlsdGVyMj17fTtcclxuICBwYXJlbnRJZD0nMic7XHJcbiAgY2hpbGRJZDtcclxuICB0ZXN0aW5nRm9ybSA6IEZvcm1Hcm91cDtcclxuICBpc0FyYWJpYyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgaXNEbXNGb2xkZXIgPSBmYWxzZTtcclxuICBjcmVhdGluZyA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZvbGRlckZvcm0nKSBmb2xkZXJGb3JtOiBGb3JtR3JvdXA7XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZW50ZXInLCBbJyRldmVudCddKVxyXG4gIEtleVVwRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmKHRoaXMuZHluYW1pY0RhdGEudmFsaWQgJiYgIXRoaXMuZm9sZGVyRm9ybS5pbnZhbGlkICYmIHRoaXMuc3RhdGljRm9ybS50aXRsZSAhPSAnLi4nKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlRG9jdW1lbnQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhICwgXHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgOiBNYXREaWFsb2dSZWY8Rm9sZGVyTW9kYWxDb21wb25lbnQ+LFxyXG4gIHByaXZhdGUgZmlsZU1hbmdlclNlcnZpY2UgOiBGaWxlTWFuYWdlclNlcnZpY2UsXHJcbiAgcHJpdmF0ZSBkeW5hbWljRm9ybVNlcnZpY2UgOiBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgcHJpdmF0ZSB0b3N0ZXJTZXJ2aWNlIDogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuICBwcml2YXRlIGZvcm1CdWlsZGVyIDogRm9ybUJ1aWxkZXIpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzQXJhYmljLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuaXNBcmFiaWMgPSByZXM7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5mb2xkZXJUeXBlID0gdGhpcy5kYXRhLmZvbGRlclR5cGU7XHJcbiAgICB0aGlzLmR5bmFtaWNGb3JtID0gdGhpcy5kYXRhLmR5bmFtaWNGb3JtO1xyXG4gICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5nZXRGaWxlU2NoZW1hcyh0aGlzLmZvbGRlclR5cGUudHlwZSkuc3Vic2NyaWJlKHNjaGVtYXMgPT4ge1xyXG4gICAgICBzY2hlbWFzLm1hcChpdGVtID0+IHtcclxuICAgICAgICBpZihpdGVtLm5hbWUgPT09IFwiZG1zZm9sZGVyXCIpe1xyXG4gICAgICAgICAgdGhpcy5pc0Rtc0ZvbGRlciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpe1xyXG4gICAgdGhpcy5zaG93UmVuZGVyZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KCk7XHJcbiAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBvbmR5bmFtaWNGb3JtQ2hhbmdlKGR5bmFtaWNEYXRhKSB7XHJcbiAgICBpZiAoZHluYW1pY0RhdGEuZGF0YSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhkeW5hbWljRGF0YS5kYXRhKVxyXG4gICAgICB0aGlzLmR5bmFtaWNEYXRhID0geyAuLi5keW5hbWljRGF0YSB9O1xyXG4gICAgfVxyXG4gIH1cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZURvY3VtZW50KCkge1xyXG4gICAgdGhpcy5jcmVhdGluZyA9IHRydWU7XHJcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5jb25zdHJ1Y3RQYXlMb2FkKHRoaXMuZHluYW1pY0RhdGFbJ2RhdGEnXSAsIHRoaXMuc3RhdGljRm9ybSk7XHJcbiAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmNyZWF0ZUZvbGRlcihwYXJhbXMgLCB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLnNlbGVjdGVkRm9sZGVySWQpLnN1YnNjcmliZShyZXMgPT57XHJcbiAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgdGhpcy5jcmVhdGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLm9uUmVmcmVzaGluZ0ZpbGVNYW5nZXIubmV4dCgpO1xyXG4gICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnc3VjY2VzcycsICdUT0FTVEVSLlNVQ0NFU1MnLCBcIlRPQVNURVIuRk9MREVSX0NSRUFURURfU1VDQ0VcIik7XHJcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0UGF5TG9hZChkeW5hbWljVmFsdWVzICwgc3RhdGljRm9ybSkge1xyXG4gICAgICAvLyBsZXQgcHJvcHMgPSB0aGlzLmNvbnN0cnVjdER5bmFtaWNGb3JtUGF5bG9hZChkeW5hbWljVmFsdWVzKTtcclxuICAgICAgbGV0IHByb3BzID0gdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29uc3RydWN0RHluYW1pY0Zvcm1QYXlsb2FkKGR5bmFtaWNWYWx1ZXMgLCB0aGlzLmR5bmFtaWNGb3JtKTtcclxuICAgICAgbGV0IHBhcmFtID0ge1xyXG4gICAgICAgIFwiZG9jdW1lbnRcIjoge1xyXG4gICAgICAgICAgXCJ0eXBlXCI6IHRoaXMuZm9sZGVyVHlwZS50eXBlLFxyXG4gICAgICAgICAgXCJuYW1lXCI6IHN0YXRpY0Zvcm0udGl0bGUsXHJcbiAgICAgICAgICBcInByb3BlcnRpZXNcIjoge1xyXG4gICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgXCJkYzpkZXNjcmlwdGlvblwiOiBzdGF0aWNGb3JtLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBcImRjOnRpdGxlXCI6IHN0YXRpY0Zvcm0udGl0bGUsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBpZih0aGlzLmZvbGRlclR5cGUuZG9jdW1lbnRDb2RlICYmIHRoaXMuaXNEbXNGb2xkZXIpe1xyXG4gICAgICAgcGFyYW1bXCJkb2N1bWVudFR5cGVDb2RlXCJdID0gdGhpcy5mb2xkZXJUeXBlLmRvY3VtZW50Q29kZTtcclxuICAgICAgIHBhcmFtWydkb2N1bWVudCddWydwcm9wZXJ0aWVzJ11bJ2Rtc2ZvbGRlcjpkb2N1bWVudFR5cGVDb2RlJ10gPSB0aGlzLmZvbGRlclR5cGUuZG9jdW1lbnRDb2RlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwYXJhbTtcclxuICB9XHJcblxyXG4gIGNoYW5naW5nKGRhdGEpe1xyXG4gICAgLy9jb25zb2xlLmxvZyhkYXRhKTtcclxuICB9XHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJjcmVhdGUtZm9sZGVyLW1vZGFsIGQtZmxleCBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwgcmVsYXRpdmUgaC1mdWxsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9sZGVyLXdyYXBwZXJcIiBTZXRSdGw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICB7eyBcIkZPTERFUlMuVFlQRVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSB0ZXh0LWdyYXktOTAwXCI+XHJcbiAgICAgICAgICB7eyBpc0FyYWJpYyA/IGZvbGRlclR5cGUuYXJhYmljVGV4dCA6IGZvbGRlclR5cGUuZW5nbGlzaFRleHQgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxmb3JtICNmb2xkZXJGb3JtPVwibmdGb3JtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICB7eyBcIkZPTERFUlMuVElUTEVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgY2xhc3M9XCJmaWVsZC1zdHlsZVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2JvcmRlci1yZWQtNTAwJzogc3RhdGljRm9ybS50aXRsZSA9PT0gJy4uJyB9XCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0aWNGb3JtLnRpdGxlXCJcclxuICAgICAgICAgICAgaWQ9XCJmb2xkZXJUaXRsZVwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJmb2xkZXJUaXRsZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIiAqbmdJZj1cInN0YXRpY0Zvcm0udGl0bGUgPT09ICcuLidcIj5cclxuICAgICAgICAgICAgSW52YWxpZCBGb2xkZXIgVGl0bGVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAge3sgXCJGT0xERVJTLkRFU0NSSVBUSU9OXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRpY0Zvcm0uZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICBpZD1cImZvbGRlckRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgbmFtZT1cImZvbGRlckRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuICBcclxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtcGFydCAtbXgtNFwiICpuZ0lmPVwiZHluYW1pY0Zvcm0gJiYgc2hvd1JlbmRlcmVyXCI+XHJcbiAgICAgICAgPGFwcC1keW5hbWljLWZvcm1cclxuICAgICAgICAgIFtmb3JtXT1cImR5bmFtaWNGb3JtXCJcclxuICAgICAgICAgIFtkYXRhXT1cInRlbXBvcmFyeUR5YW5taWNEYXRhXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwib25keW5hbWljRm9ybUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9hcHAtZHluYW1pYy1mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSAgLS0+XHJcbiAgICA8IS0tIGFjdGlvbnMgYW5kIGJ1dHRvbnMgIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInctZnVsbCBkLWZsZXgganVzdGlmeS1iZXR3ZWVuIGFic29sdXRlIGJvdHRvbS0wIGFjdGlvbnNCdG5XcmFwcGVyXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjcmVhdGluZ1wiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIChjbGljayk9XCJjcmVhdGVEb2N1bWVudCgpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgIWR5bmFtaWNEYXRhLnZhbGlkIHx8IGZvbGRlckZvcm0uaW52YWxpZCB8fCBzdGF0aWNGb3JtLnRpdGxlID09PSAnLi4nXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICFkeW5hbWljRGF0YS52YWxpZCB8fFxyXG4gICAgICAgICAgICAgIGZvbGRlckZvcm0uaW52YWxpZCB8fFxyXG4gICAgICAgICAgICAgIHN0YXRpY0Zvcm0udGl0bGUgPT09ICcuLidcclxuICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgXCJCVVRUT05TLkNSRUFURVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCIgKm5nSWY9XCJjcmVhdGluZ1wiPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lclxyXG4gICAgICAgICAgW3ZhbHVlXT1cIjkwXCJcclxuICAgICAgICAgIFtzdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICAgIG92ZXJsYXk9XCJ0cnVlXCJcclxuICAgICAgICAgIFtkaWFtZXRlcl09XCIyNVwiXHJcbiAgICAgICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L21hdC1zcGlubmVyPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgXHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxhdGlvbi1idXR0b25cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPlxyXG4gICAgICAgIHt7IFwiQlVUVE9OUy5DQU5DRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gICJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVyLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9mb2xkZXItbW9kYWwvZm9sZGVyLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9mb2xkZXItbW9kYWwvZm9sZGVyLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVMzQyxNQUFNLE9BQU8sb0JBQW9CO0lBOEIvQixZQUE0QyxJQUFJLEVBQ3hDLFNBQThDLEVBQzlDLGlCQUFzQyxFQUN0QyxrQkFBdUMsRUFDdkMsa0JBQXVDLEVBQ3ZDLGFBQW1DLEVBQ25DLFdBQXlCO1FBTlcsU0FBSSxHQUFKLElBQUksQ0FBQTtRQUN4QyxjQUFTLEdBQVQsU0FBUyxDQUFxQztRQUM5QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQ3RDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQjtRQUN2QyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMs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LG9CQUFvQixrQkE4QlgsZUFBZTtzR0E5QnhCLG9CQUFvQix5T0NmakMsbzdGQXNGRTs0RkR2RVcsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2lCQUM3Qzs7MEJBK0JjLE1BQU07MkJBQUMsZUFBZTtzT0FQVixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRXZCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9sZGVyLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9sZGVyLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb2xkZXItbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9sZGVyTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQgLCBBZnRlclZpZXdJbml0ICwgT25EZXN0cm95IHtcclxuICBmb2xkZXJUeXBlO1xyXG4gIGR5bmFtaWNGb3JtO1xyXG4gIHRlbXBvcmFyeUR5YW5taWNEYXRhID0ge307XHJcbiAgc2hvd1JlbmRlcmVyID0gZmFsc2U7XHJcbiAgZHluYW1pY0RhdGEgPSB7XHJcbiAgICB2YWxpZCA6IGZhbHNlXHJcbiAgfTtcclxuICBzdGF0aWNGb3JtID0ge1xyXG4gICAgdGl0bGUgOiAnJyxcclxuICAgIGRlc2NyaXB0aW9uIDogJycsXHJcbiAgICAvLyBkZXBhcnRtZW50OicnXHJcbiAgfVxyXG5cclxuICBmaWx0ZXI9e307XHJcbiAgZmlsdGVyMj17fTtcclxuICBwYXJlbnRJZD0nMic7XHJcbiAgY2hpbGRJZDtcclxuICB0ZXN0aW5nRm9ybSA6IEZvcm1Hcm91cDtcclxuICBpc0FyYWJpYyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgaXNEbXNGb2xkZXIgPSBmYWxzZTtcclxuICBjcmVhdGluZyA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZvbGRlckZvcm0nKSBmb2xkZXJGb3JtOiBGb3JtR3JvdXA7XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZW50ZXInLCBbJyRldmVudCddKVxyXG4gIEtleVVwRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmKHRoaXMuZHluYW1pY0RhdGEudmFsaWQgJiYgIXRoaXMuZm9sZGVyRm9ybS5pbnZhbGlkICYmIHRoaXMuc3RhdGljRm9ybS50aXRsZSAhPSAnLi4nKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlRG9jdW1lbnQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhICwgXHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgOiBNYXREaWFsb2dSZWY8Rm9sZGVyTW9kYWxDb21wb25lbnQ+LFxyXG4gIHByaXZhdGUgZmlsZU1hbmdlclNlcnZpY2UgOiBGaWxlTWFuYWdlclNlcnZpY2UsXHJcbiAgcHJpdmF0ZSBkeW5hbWljRm9ybVNlcnZpY2UgOiBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgcHJpdmF0ZSB0b3N0ZXJTZXJ2aWNlIDogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuICBwcml2YXRlIGZvcm1CdWlsZGVyIDogRm9ybUJ1aWxkZXIpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzQXJhYmljLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuaXNBcmFiaWMgPSByZXM7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5mb2xkZXJUeXBlID0gdGhpcy5kYXRhLmZvbGRlclR5cGU7XHJcbiAgICB0aGlzLmR5bmFtaWNGb3JtID0gdGhpcy5kYXRhLmR5bmFtaWNGb3JtO1xyXG4gICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5nZXRGaWxlU2NoZW1hcyh0aGlzLmZvbGRlclR5cGUudHlwZSkuc3Vic2NyaWJlKHNjaGVtYXMgPT4ge1xyXG4gICAgICBzY2hlbWFzLm1hcChpdGVtID0+IHtcclxuICAgICAgICBpZihpdGVtLm5hbWUgPT09IFwiZG1zZm9sZGVyXCIpe1xyXG4gICAgICAgICAgdGhpcy5pc0Rtc0ZvbGRlciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpe1xyXG4gICAgdGhpcy5zaG93UmVuZGVyZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KCk7XHJcbiAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBvbmR5bmFtaWNGb3JtQ2hhbmdlKGR5bmFtaWNEYXRhKSB7XHJcbiAgICBpZiAoZHluYW1pY0RhdGEuZGF0YSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhkeW5hbWljRGF0YS5kYXRhKVxyXG4gICAgICB0aGlzLmR5bmFtaWNEYXRhID0geyAuLi5keW5hbWljRGF0YSB9O1xyXG4gICAgfVxyXG4gIH1cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZURvY3VtZW50KCkge1xyXG4gICAgdGhpcy5jcmVhdGluZyA9IHRydWU7XHJcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5jb25zdHJ1Y3RQYXlMb2FkKHRoaXMuZHluYW1pY0RhdGFbJ2RhdGEnXSAsIHRoaXMuc3RhdGljRm9ybSk7XHJcbiAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmNyZWF0ZUZvbGRlcihwYXJhbXMgLCB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLnNlbGVjdGVkRm9sZGVySWQpLnN1YnNjcmliZShyZXMgPT57XHJcbiAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgdGhpcy5jcmVhdGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLm9uUmVmcmVzaGluZ0ZpbGVNYW5nZXIubmV4dCgpO1xyXG4gICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnc3VjY2VzcycsICdUT0FTVEVSLlNVQ0NFU1MnLCBcIlRPQVNURVIuRk9MREVSX0NSRUFURURfU1VDQ0VcIik7XHJcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0UGF5TG9hZChkeW5hbWljVmFsdWVzICwgc3RhdGljRm9ybSkge1xyXG4gICAgICAvLyBsZXQgcHJvcHMgPSB0aGlzLmNvbnN0cnVjdER5bmFtaWNGb3JtUGF5bG9hZChkeW5hbWljVmFsdWVzKTtcclxuICAgICAgbGV0IHByb3BzID0gdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuY29uc3RydWN0RHluYW1pY0Zvcm1QYXlsb2FkKGR5bmFtaWNWYWx1ZXMgLCB0aGlzLmR5bmFtaWNGb3JtKTtcclxuICAgICAgbGV0IHBhcmFtID0ge1xyXG4gICAgICAgIFwiZG9jdW1lbnRcIjoge1xyXG4gICAgICAgICAgXCJ0eXBlXCI6IHRoaXMuZm9sZGVyVHlwZS50eXBlLFxyXG4gICAgICAgICAgXCJuYW1lXCI6IHN0YXRpY0Zvcm0udGl0bGUsXHJcbiAgICAgICAgICBcInByb3BlcnRpZXNcIjoge1xyXG4gICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgXCJkYzpkZXNjcmlwdGlvblwiOiBzdGF0aWNGb3JtLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBcImRjOnRpdGxlXCI6IHN0YXRpY0Zvcm0udGl0bGUsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBpZih0aGlzLmZvbGRlclR5cGUuZG9jdW1lbnRDb2RlICYmIHRoaXMuaXNEbXNGb2xkZXIpe1xyXG4gICAgICAgcGFyYW1bXCJkb2N1bWVudFR5cGVDb2RlXCJdID0gdGhpcy5mb2xkZXJUeXBlLmRvY3VtZW50Q29kZTtcclxuICAgICAgIHBhcmFtWydkb2N1bWVudCddWydwcm9wZXJ0aWVzJ11bJ2Rtc2ZvbGRlcjpkb2N1bWVudFR5cGVDb2RlJ10gPSB0aGlzLmZvbGRlclR5cGUuZG9jdW1lbnRDb2RlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwYXJhbTtcclxuICB9XHJcblxyXG4gIGNoYW5naW5nKGRhdGEpe1xyXG4gICAgLy9jb25zb2xlLmxvZyhkYXRhKTtcclxuICB9XHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJjcmVhdGUtZm9sZGVyLW1vZGFsIGQtZmxleCBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwgcmVsYXRpdmUgaC1mdWxsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9sZGVyLXdyYXBwZXJcIiBTZXRSdGw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICB7eyBcIkZPTERFUlMuVFlQRVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSB0ZXh0LWdyYXktOTAwXCI+XHJcbiAgICAgICAgICB7eyBpc0FyYWJpYyA/IGZvbGRlclR5cGUuYXJhYmljVGV4dCA6IGZvbGRlclR5cGUuZW5nbGlzaFRleHQgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxmb3JtICNmb2xkZXJGb3JtPVwibmdGb3JtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICB7eyBcIkZPTERFUlMuVElUTEVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgY2xhc3M9XCJmaWVsZC1zdHlsZVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2JvcmRlci1yZWQtNTAwJzogc3RhdGljRm9ybS50aXRsZSA9PT0gJy4uJyB9XCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0aWNGb3JtLnRpdGxlXCJcclxuICAgICAgICAgICAgaWQ9XCJmb2xkZXJUaXRsZVwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJmb2xkZXJUaXRsZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIiAqbmdJZj1cInN0YXRpY0Zvcm0udGl0bGUgPT09ICcuLidcIj5cclxuICAgICAgICAgICAgSW52YWxpZCBGb2xkZXIgVGl0bGVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAge3sgXCJGT0xERVJTLkRFU0NSSVBUSU9OXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXRpY0Zvcm0uZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICBpZD1cImZvbGRlckRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgbmFtZT1cImZvbGRlckRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuICBcclxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtcGFydCAtbXgtNFwiICpuZ0lmPVwiZHluYW1pY0Zvcm0gJiYgc2hvd1JlbmRlcmVyXCI+XHJcbiAgICAgICAgPGFwcC1keW5hbWljLWZvcm1cclxuICAgICAgICAgIFtmb3JtXT1cImR5bmFtaWNGb3JtXCJcclxuICAgICAgICAgIFtkYXRhXT1cInRlbXBvcmFyeUR5YW5taWNEYXRhXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwib25keW5hbWljRm9ybUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9hcHAtZHluYW1pYy1mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSAgLS0+XHJcbiAgICA8IS0tIGFjdGlvbnMgYW5kIGJ1dHRvbnMgIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInctZnVsbCBkLWZsZXgganVzdGlmeS1iZXR3ZWVuIGFic29sdXRlIGJvdHRvbS0wIGFjdGlvbnNCdG5XcmFwcGVyXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjcmVhdGluZ1wiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIChjbGljayk9XCJjcmVhdGVEb2N1bWVudCgpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgIWR5bmFtaWNEYXRhLnZhbGlkIHx8IGZvbGRlckZvcm0uaW52YWxpZCB8fCBzdGF0aWNGb3JtLnRpdGxlID09PSAnLi4nXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICFkeW5hbWljRGF0YS52YWxpZCB8fFxyXG4gICAgICAgICAgICAgIGZvbGRlckZvcm0uaW52YWxpZCB8fFxyXG4gICAgICAgICAgICAgIHN0YXRpY0Zvcm0udGl0bGUgPT09ICcuLidcclxuICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgXCJCVVRUT05TLkNSRUFURVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCIgKm5nSWY9XCJjcmVhdGluZ1wiPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lclxyXG4gICAgICAgICAgW3ZhbHVlXT1cIjkwXCJcclxuICAgICAgICAgIFtzdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICAgIG92ZXJsYXk9XCJ0cnVlXCJcclxuICAgICAgICAgIFtkaWFtZXRlcl09XCIyNVwiXHJcbiAgICAgICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L21hdC1zcGlubmVyPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgXHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxhdGlvbi1idXR0b25cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPlxyXG4gICAgICAgIHt7IFwiQlVUVE9OUy5DQU5DRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gICJdfQ==