@c8y/ngx-components 1021.38.1 → 1021.49.4

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 (529) hide show
  1. package/api/services.d.ts +1 -1
  2. package/api/services.d.ts.map +1 -1
  3. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
  4. package/connectivity/abstract-connectivity-tab.factory.d.ts +1 -1
  5. package/context-dashboard/add-dashboard.component.d.ts.map +1 -1
  6. package/context-dashboard/context-dashboard.model.d.ts +4 -2
  7. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  8. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  9. package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts +1 -0
  10. package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts.map +1 -1
  11. package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts +0 -1
  12. package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
  13. package/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  14. package/context-dashboard/new-dashboard.guard.d.ts +1 -1
  15. package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
  16. package/core/action/action.component.d.ts +2 -1
  17. package/core/action/action.component.d.ts.map +1 -1
  18. package/core/action/action.model.d.ts +3 -2
  19. package/core/action/action.model.d.ts.map +1 -1
  20. package/core/breadcrumb/breadcrumb-item.component.d.ts +2 -1
  21. package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
  22. package/core/breadcrumb/breadcrumb.model.d.ts +2 -1
  23. package/core/breadcrumb/breadcrumb.model.d.ts.map +1 -1
  24. package/core/common/ApplicationOptions.d.ts +1 -0
  25. package/core/common/ApplicationOptions.d.ts.map +1 -1
  26. package/core/common/empty-state/empty-state.component.d.ts +2 -1
  27. package/core/common/empty-state/empty-state.component.d.ts.map +1 -1
  28. package/core/common/get-group-icon.pipe.d.ts +2 -1
  29. package/core/common/get-group-icon.pipe.d.ts.map +1 -1
  30. package/core/common/group.service.d.ts +22 -7
  31. package/core/common/group.service.d.ts.map +1 -1
  32. package/core/common/icon.directive.d.ts +5 -5
  33. package/core/common/icon.directive.d.ts.map +1 -1
  34. package/core/common/service-registry.model.d.ts +2 -1
  35. package/core/common/service-registry.model.d.ts.map +1 -1
  36. package/core/data-grid/data-grid.model.d.ts +2 -1
  37. package/core/data-grid/data-grid.model.d.ts.map +1 -1
  38. package/core/docs/docs.models.d.ts +2 -1
  39. package/core/docs/docs.models.d.ts.map +1 -1
  40. package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts +5 -1
  41. package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts.map +1 -1
  42. package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts +5 -1
  43. package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts.map +1 -1
  44. package/core/docs/support-outlet/support-outlet.component.d.ts +5 -1
  45. package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
  46. package/core/forms/filter-input.component.d.ts +8 -3
  47. package/core/forms/filter-input.component.d.ts.map +1 -1
  48. package/core/i18n/translate.service.d.ts.map +1 -1
  49. package/core/list-group/list-item-action.component.d.ts +2 -1
  50. package/core/list-group/list-item-action.component.d.ts.map +1 -1
  51. package/core/list-group/list-item-icon.component.d.ts +2 -1
  52. package/core/list-group/list-item-icon.component.d.ts.map +1 -1
  53. package/core/login/login.service.d.ts.map +1 -1
  54. package/core/navigator/navigator-icon.component.d.ts +1 -1
  55. package/core/navigator/navigator-icon.component.d.ts.map +1 -1
  56. package/core/navigator/navigator-node-data.d.ts +2 -1
  57. package/core/navigator/navigator-node-data.d.ts.map +1 -1
  58. package/core/navigator/navigator-node.component.d.ts.map +1 -1
  59. package/core/navigator/navigator-node.d.ts +2 -1
  60. package/core/navigator/navigator-node.d.ts.map +1 -1
  61. package/core/plugins/plugins.model.d.ts +7 -2
  62. package/core/plugins/plugins.model.d.ts.map +1 -1
  63. package/core/plugins/plugins.service.d.ts.map +1 -1
  64. package/core/properties-list/properties-list.component.d.ts +2 -1
  65. package/core/properties-list/properties-list.component.d.ts.map +1 -1
  66. package/core/provider-configuration/model/dynamic-provider-config.model.d.ts +2 -2
  67. package/core/provider-configuration/model/dynamic-provider-config.model.d.ts.map +1 -1
  68. package/core/router/context-route.service.d.ts.map +1 -1
  69. package/core/router/router.model.d.ts +1 -1
  70. package/core/router/router.model.d.ts.map +1 -1
  71. package/core/router/scoped-context-route.service.d.ts.map +1 -1
  72. package/core/search/search.model.d.ts +2 -1
  73. package/core/search/search.model.d.ts.map +1 -1
  74. package/core/select/select-keyboard.service.d.ts +4 -0
  75. package/core/select/select-keyboard.service.d.ts.map +1 -1
  76. package/core/select/select.component.d.ts +14 -3
  77. package/core/select/select.component.d.ts.map +1 -1
  78. package/core/select-modal/select-modal.component.d.ts +2 -1
  79. package/core/select-modal/select-modal.component.d.ts.map +1 -1
  80. package/core/shared/core.model.d.ts +5 -1
  81. package/core/shared/core.model.d.ts.map +1 -1
  82. package/core/tabs/conditional-tabs-outlet.component.d.ts.map +1 -1
  83. package/core/tabs/tab.component.d.ts +3 -2
  84. package/core/tabs/tab.component.d.ts.map +1 -1
  85. package/core/tabs/tab.model.d.ts +10 -5
  86. package/core/tabs/tab.model.d.ts.map +1 -1
  87. package/core/tabs/tabs-outlet.component.d.ts +7 -4
  88. package/core/tabs/tabs-outlet.component.d.ts.map +1 -1
  89. package/core/user/user-menu-item.component.d.ts +2 -1
  90. package/core/user/user-menu-item.component.d.ts.map +1 -1
  91. package/core/user/user.model.d.ts +2 -1
  92. package/core/user/user.model.d.ts.map +1 -1
  93. package/core/wizard/wizard.model.d.ts +4 -3
  94. package/core/wizard/wizard.model.d.ts.map +1 -1
  95. package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
  96. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +15 -46
  97. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  98. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts +3 -0
  99. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts.map +1 -1
  100. package/datapoint-selector/datapoint-selection.model.d.ts +6 -7
  101. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  102. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +2 -1
  103. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  104. package/device-grid/columns/icon.cell-renderer.component.d.ts +14 -0
  105. package/device-grid/columns/icon.cell-renderer.component.d.ts.map +1 -0
  106. package/device-grid/columns/index.d.ts +1 -0
  107. package/device-grid/columns/index.d.ts.map +1 -1
  108. package/device-grid/device-grid.component.d.ts.map +1 -1
  109. package/device-grid/device-grid.service.d.ts +0 -2
  110. package/device-grid/device-grid.service.d.ts.map +1 -1
  111. package/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.d.ts.map +1 -0
  112. package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts +11 -0
  113. package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts.map +1 -0
  114. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts +13 -0
  115. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -0
  116. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts +13 -0
  117. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -0
  118. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +57 -0
  119. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -0
  120. package/device-provisioned-certificates/index.d.ts +2 -0
  121. package/device-provisioned-certificates/index.d.ts.map +1 -0
  122. package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -0
  123. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  124. package/ecosystem/application-plugins/application-plugins.module.d.ts +2 -2
  125. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  126. package/ecosystem/application-plugins/index.d.ts +1 -0
  127. package/ecosystem/application-plugins/index.d.ts.map +1 -1
  128. package/ecosystem/application-plugins/install-plugin.component.d.ts +9 -11
  129. package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
  130. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts +12 -0
  131. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -0
  132. package/ecosystem/application-plugins/plugin-list-item.component.d.ts +8 -3
  133. package/ecosystem/application-plugins/plugin-list-item.component.d.ts.map +1 -1
  134. package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
  135. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  136. package/ecosystem/applications/application-list/application-list.component.d.ts +2 -2
  137. package/ecosystem/applications/application-list/application-list.component.d.ts.map +1 -1
  138. package/ecosystem/applications/install-from-package/install-from-package.component.d.ts.map +1 -1
  139. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts +11 -0
  140. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts.map +1 -0
  141. package/ecosystem/archived-confirm/archived-confirm.module.d.ts +10 -0
  142. package/ecosystem/archived-confirm/archived-confirm.module.d.ts.map +1 -0
  143. package/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.d.ts.map +1 -0
  144. package/ecosystem/archived-confirm/index.d.ts +3 -0
  145. package/ecosystem/archived-confirm/index.d.ts.map +1 -0
  146. package/ecosystem/ecosystem.module.d.ts +2 -1
  147. package/ecosystem/ecosystem.module.d.ts.map +1 -1
  148. package/ecosystem/features/feature-list.component.d.ts +2 -2
  149. package/ecosystem/features/feature-list.component.d.ts.map +1 -1
  150. package/ecosystem/microservices/microservice-list.component.d.ts +2 -2
  151. package/ecosystem/microservices/microservice-list.component.d.ts.map +1 -1
  152. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  153. package/ecosystem/packages/package-details/package-details.component.d.ts +7 -2
  154. package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
  155. package/ecosystem/packages/package-list/packages-list.component.d.ts +2 -2
  156. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  157. package/ecosystem/shared/add-application.component.d.ts +2 -1
  158. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  159. package/ecosystem/shared/application-card.component.d.ts +4 -0
  160. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  161. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts +12 -0
  162. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -0
  163. package/ecosystem/shared/ecosystem.constants.d.ts +4 -0
  164. package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
  165. package/ecosystem/shared/ecosystem.model.d.ts +5 -1
  166. package/ecosystem/shared/ecosystem.model.d.ts.map +1 -1
  167. package/ecosystem/shared/ecosystem.service.d.ts +7 -0
  168. package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
  169. package/ecosystem/shared/index.d.ts +1 -0
  170. package/ecosystem/shared/index.d.ts.map +1 -1
  171. package/ecosystem/shared/list-filters/list-filters.component.d.ts +14 -4
  172. package/ecosystem/shared/list-filters/list-filters.component.d.ts.map +1 -1
  173. package/ecosystem/shared/list-filters/list-filters.model.d.ts +8 -2
  174. package/ecosystem/shared/list-filters/list-filters.model.d.ts.map +1 -1
  175. package/ecosystem/shared/shared-ecosystem.module.d.ts +9 -8
  176. package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
  177. package/ecosystem/shared/translate-package-label.pipe.d.ts +1 -1
  178. package/ecosystem/shared/translate-package-label.pipe.d.ts.map +1 -1
  179. package/esm2022/alarms/alarm-info.component.mjs +1 -1
  180. package/esm2022/api/services.mjs +2 -2
  181. package/esm2022/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.mjs +10 -5
  182. package/esm2022/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.mjs +4 -4
  183. package/esm2022/branding/shared/lazy/branding-form/branding-form.component.mjs +3 -3
  184. package/esm2022/context-dashboard/add-dashboard.component.mjs +4 -2
  185. package/esm2022/context-dashboard/context-dashboard.model.mjs +3 -2
  186. package/esm2022/context-dashboard/context-dashboard.service.mjs +2 -2
  187. package/esm2022/context-dashboard/dashboard-detail.component.mjs +5 -3
  188. package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.model.mjs +1 -1
  189. package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.service.mjs +5 -15
  190. package/esm2022/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.mjs +2 -2
  191. package/esm2022/context-dashboard/new-dashboard.guard.mjs +1 -1
  192. package/esm2022/core/action/action.component.mjs +1 -1
  193. package/esm2022/core/action/action.model.mjs +1 -1
  194. package/esm2022/core/bootstrap/bootstrap.component.mjs +1 -1
  195. package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +1 -1
  196. package/esm2022/core/breadcrumb/breadcrumb.model.mjs +1 -1
  197. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  198. package/esm2022/core/common/empty-state/empty-state.component.mjs +1 -1
  199. package/esm2022/core/common/get-group-icon.pipe.mjs +1 -1
  200. package/esm2022/core/common/group.service.mjs +2 -2
  201. package/esm2022/core/common/icon.directive.mjs +1 -1
  202. package/esm2022/core/common/service-registry.model.mjs +1 -1
  203. package/esm2022/core/data-grid/data-grid.model.mjs +1 -1
  204. package/esm2022/core/docs/docs.models.mjs +1 -1
  205. package/esm2022/core/docs/support-outlet/support-outlet.component.mjs +3 -3
  206. package/esm2022/core/forms/filter-input.component.mjs +22 -7
  207. package/esm2022/core/i18n/translate.service.mjs +7 -5
  208. package/esm2022/core/list-group/list-item-action.component.mjs +1 -1
  209. package/esm2022/core/list-group/list-item-icon.component.mjs +1 -1
  210. package/esm2022/core/login/credentials.component.mjs +2 -2
  211. package/esm2022/core/login/login.service.mjs +18 -7
  212. package/esm2022/core/navigator/navigator-node-data.mjs +1 -1
  213. package/esm2022/core/navigator/navigator-node.component.mjs +11 -2
  214. package/esm2022/core/navigator/navigator-node.mjs +1 -1
  215. package/esm2022/core/plugins/plugins.model.mjs +5 -1
  216. package/esm2022/core/plugins/plugins.service.mjs +6 -2
  217. package/esm2022/core/properties-list/properties-list.component.mjs +1 -1
  218. package/esm2022/core/provider-configuration/model/dynamic-provider-config.model.mjs +1 -1
  219. package/esm2022/core/router/context-route.service.mjs +4 -2
  220. package/esm2022/core/router/router.model.mjs +1 -1
  221. package/esm2022/core/router/scoped-context-route.service.mjs +4 -2
  222. package/esm2022/core/search/search.model.mjs +1 -1
  223. package/esm2022/core/select/select-keyboard.service.mjs +7 -3
  224. package/esm2022/core/select/select.component.mjs +36 -8
  225. package/esm2022/core/select-modal/select-modal.component.mjs +2 -2
  226. package/esm2022/core/shared/core.model.mjs +6 -2
  227. package/esm2022/core/tabs/conditional-tabs-outlet.component.mjs +4 -2
  228. package/esm2022/core/tabs/tab.component.mjs +1 -1
  229. package/esm2022/core/tabs/tab.model.mjs +1 -1
  230. package/esm2022/core/tabs/tabs-outlet.component.mjs +41 -12
  231. package/esm2022/core/user/user-menu-item.component.mjs +1 -1
  232. package/esm2022/core/user/user.model.mjs +1 -1
  233. package/esm2022/core/wizard/wizard.model.mjs +1 -1
  234. package/esm2022/data-grid-columns/asset-type/asset-type.cell-renderer.component.mjs +1 -1
  235. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +47 -22
  236. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.mjs +1 -1
  237. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  238. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  239. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +1 -1
  240. package/esm2022/device-grid/columns/icon.cell-renderer.component.mjs +42 -0
  241. package/esm2022/device-grid/columns/index.mjs +2 -1
  242. package/esm2022/device-grid/device-grid.component.mjs +3 -3
  243. package/esm2022/device-grid/device-grid.service.mjs +7 -25
  244. package/esm2022/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.mjs +5 -0
  245. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.guard.mjs +28 -0
  246. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.module.mjs +51 -0
  247. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +31 -0
  248. package/esm2022/device-provisioned-certificates/device-tab-provisioned-certificates.component.mjs +76 -0
  249. package/esm2022/device-provisioned-certificates/index.mjs +2 -0
  250. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +41 -39
  251. package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +8 -6
  252. package/esm2022/ecosystem/application-plugins/apps-to-update-remotes-select.component.mjs +1 -1
  253. package/esm2022/ecosystem/application-plugins/index.mjs +2 -1
  254. package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +18 -21
  255. package/esm2022/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.mjs +26 -0
  256. package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +14 -6
  257. package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +14 -12
  258. package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +7 -1
  259. package/esm2022/ecosystem/applications/application-list/application-list.component.mjs +1 -1
  260. package/esm2022/ecosystem/applications/install-from-package/install-from-package.component.mjs +6 -1
  261. package/esm2022/ecosystem/archived-confirm/archived-confirm-modal.component.mjs +22 -0
  262. package/esm2022/ecosystem/archived-confirm/archived-confirm.module.mjs +32 -0
  263. package/esm2022/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.mjs +5 -0
  264. package/esm2022/ecosystem/archived-confirm/index.mjs +3 -0
  265. package/esm2022/ecosystem/ecosystem.module.mjs +20 -16
  266. package/esm2022/ecosystem/features/feature-list.component.mjs +1 -1
  267. package/esm2022/ecosystem/microservices/microservice-list.component.mjs +1 -1
  268. package/esm2022/ecosystem/packages/deploy-application/deploy-application.component.mjs +6 -1
  269. package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +13 -8
  270. package/esm2022/ecosystem/packages/package-list/packages-list.component.mjs +4 -4
  271. package/esm2022/ecosystem/shared/add-application.component.mjs +1 -1
  272. package/esm2022/ecosystem/shared/application-card.component.mjs +3 -3
  273. package/esm2022/ecosystem/shared/archived-filter/archived-filter.component.mjs +27 -0
  274. package/esm2022/ecosystem/shared/ecosystem.constants.mjs +5 -1
  275. package/esm2022/ecosystem/shared/ecosystem.model.mjs +7 -3
  276. package/esm2022/ecosystem/shared/ecosystem.service.mjs +26 -1
  277. package/esm2022/ecosystem/shared/index.mjs +2 -1
  278. package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +75 -13
  279. package/esm2022/ecosystem/shared/list-filters/list-filters.model.mjs +1 -1
  280. package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +10 -5
  281. package/esm2022/ecosystem/shared/translate-package-label.pipe.mjs +3 -3
  282. package/esm2022/files-repository/files-repository.component.mjs +2 -2
  283. package/esm2022/files-repository/files-repository.service.mjs +5 -16
  284. package/esm2022/icon-selector/icon-selector.component.mjs +1 -1
  285. package/esm2022/icon-selector/icons/index.mjs +1 -1
  286. package/esm2022/operations/shared/status-option.model.mjs +1 -1
  287. package/esm2022/protocol-lwm2m/components/configuration/lwm2m-configuration.component.mjs +2 -2
  288. package/esm2022/protocol-opcua/opcua-auto-apply-settings.component.mjs +1 -1
  289. package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +17 -9
  290. package/esm2022/register-device/general/general-device-registration-button.component.mjs +3 -3
  291. package/esm2022/register-device/general/general-device-registration.component.mjs +109 -33
  292. package/esm2022/remote-access/configurations/c8y-ngx-components-remote-access-configurations.mjs +5 -0
  293. package/esm2022/remote-access/configurations/index.mjs +16 -0
  294. package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.mjs +218 -0
  295. package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.mjs +60 -0
  296. package/esm2022/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.mjs +36 -0
  297. package/esm2022/remote-access/data/c8y-ngx-components-remote-access-data.mjs +5 -0
  298. package/esm2022/remote-access/data/index.mjs +3 -0
  299. package/esm2022/remote-access/data/remote-access-protocol-provider.mjs +2 -0
  300. package/esm2022/remote-access/data/remote-access.service.mjs +200 -0
  301. package/esm2022/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.mjs +5 -0
  302. package/esm2022/remote-access/passthrough/index.mjs +36 -0
  303. package/esm2022/remote-access/shared/c8y-ngx-components-remote-access-shared.mjs +5 -0
  304. package/esm2022/remote-access/shared/index.mjs +3 -0
  305. package/esm2022/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.mjs +49 -0
  306. package/esm2022/remote-access/shared/ssh-key-input/ssh-key-input.component.mjs +87 -0
  307. package/esm2022/remote-access/ssh/c8y-ngx-components-remote-access-ssh.mjs +5 -0
  308. package/esm2022/remote-access/ssh/index.mjs +73 -0
  309. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +5 -0
  310. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/index.mjs +2 -0
  311. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.mjs +104 -0
  312. package/esm2022/remote-access/telnet/c8y-ngx-components-remote-access-telnet.mjs +5 -0
  313. package/esm2022/remote-access/telnet/index.mjs +43 -0
  314. package/esm2022/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.mjs +5 -0
  315. package/esm2022/remote-access/terminal-viewer/index.mjs +2 -0
  316. package/esm2022/remote-access/terminal-viewer/shell-adapter.mjs +36 -0
  317. package/esm2022/remote-access/terminal-viewer/telnet-negotiator.mjs +96 -0
  318. package/esm2022/remote-access/terminal-viewer/terminal-viewer.component.mjs +101 -0
  319. package/esm2022/remote-access/vnc/c8y-ngx-components-remote-access-vnc.mjs +5 -0
  320. package/esm2022/remote-access/vnc/index.mjs +73 -0
  321. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +5 -0
  322. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/index.mjs +2 -0
  323. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.mjs +59 -0
  324. package/esm2022/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +5 -0
  325. package/esm2022/remote-access/vnc/vnc-viewer/index.mjs +2 -0
  326. package/esm2022/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.mjs +57 -0
  327. package/esm2022/remote-access/vnc/vnc-viewer/vnc-viewer.component.mjs +158 -0
  328. package/esm2022/replace-device/replace-device-wizard/replace-device-wizard.model.mjs +1 -1
  329. package/esm2022/report-dashboard/report-dashboard-list.component.mjs +4 -3
  330. package/esm2022/repository/configuration/device-tab/device-configuration-list.component.mjs +1 -1
  331. package/esm2022/repository/shared/repository.model.mjs +1 -1
  332. package/esm2022/repository/shared/repository.service.mjs +3 -3
  333. package/esm2022/services/status-options/status-options.model.mjs +1 -1
  334. package/esm2022/sub-assets/group-info.component.mjs +1 -1
  335. package/esm2022/translation-editor/data/translation-store.service.mjs +4 -3
  336. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +35 -9
  337. package/esm2022/upgrade/bridge.service.mjs +16 -2
  338. package/esm2022/widgets/implementations/alarms/severity-icon.pipe.mjs +1 -1
  339. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +3 -2
  340. package/esm2022/widgets/implementations/kpi/kpi-widget.model.mjs +1 -1
  341. package/fesm2022/c8y-ngx-components-alarms.mjs +1 -1
  342. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  343. package/fesm2022/c8y-ngx-components-api.mjs +3 -2
  344. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  345. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +12 -7
  346. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  347. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -2
  348. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  349. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +15 -20
  350. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  351. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  352. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  353. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +48 -23
  354. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  355. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  356. package/fesm2022/c8y-ngx-components-device-grid.mjs +48 -28
  357. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  358. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +174 -0
  359. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -0
  360. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +125 -105
  361. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  362. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +57 -0
  363. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -0
  364. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +147 -31
  365. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  366. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1452 -1414
  367. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  368. package/fesm2022/c8y-ngx-components-files-repository.mjs +5 -16
  369. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  370. package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  372. package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
  373. package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
  374. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +1 -1
  375. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  376. package/fesm2022/c8y-ngx-components-register-device.mjs +269 -188
  377. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  378. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +314 -0
  379. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -0
  380. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +206 -0
  381. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -0
  382. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +42 -0
  383. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -0
  384. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +138 -0
  385. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -0
  386. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +111 -0
  387. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -0
  388. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +79 -0
  389. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -0
  390. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +50 -0
  391. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -0
  392. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +235 -0
  393. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -0
  394. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +66 -0
  395. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -0
  396. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +211 -0
  397. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -0
  398. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +79 -0
  399. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -0
  400. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  401. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +3 -2
  402. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  403. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
  404. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  405. package/fesm2022/c8y-ngx-components-repository-shared.mjs +2 -2
  406. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  407. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  408. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  409. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -2
  410. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +43 -17
  412. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components-upgrade.mjs +16 -2
  414. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  415. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  416. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
  417. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  418. package/fesm2022/c8y-ngx-components.mjs +157 -42
  419. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  420. package/files-repository/files-repository.component.d.ts.map +1 -1
  421. package/files-repository/files-repository.service.d.ts +0 -2
  422. package/files-repository/files-repository.service.d.ts.map +1 -1
  423. package/icon-selector/icon-selector.component.d.ts +3 -2
  424. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  425. package/icon-selector/icons/index.d.ts +1 -0
  426. package/icon-selector/icons/index.d.ts.map +1 -1
  427. package/locales/de.po +157 -5
  428. package/locales/es.po +157 -5
  429. package/locales/fr.po +157 -5
  430. package/locales/ja_JP.po +156 -5
  431. package/locales/ko.po +156 -5
  432. package/locales/locales.pot +156 -4
  433. package/locales/nl.po +157 -5
  434. package/locales/pl.po +157 -5
  435. package/locales/pt_BR.po +157 -5
  436. package/locales/zh_CN.po +156 -5
  437. package/locales/zh_TW.po +156 -5
  438. package/operations/shared/status-option.model.d.ts +2 -1
  439. package/operations/shared/status-option.model.d.ts.map +1 -1
  440. package/package.json +1 -1
  441. package/register-device/bulk/bulk-device-registration-modal.component.d.ts +6 -2
  442. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  443. package/register-device/general/general-device-registration-button.component.d.ts +1 -1
  444. package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
  445. package/register-device/general/general-device-registration.component.d.ts +21 -7
  446. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  447. package/remote-access/configurations/c8y-ngx-components-remote-access-configurations.d.ts.map +1 -0
  448. package/remote-access/configurations/index.d.ts +3 -0
  449. package/remote-access/configurations/index.d.ts.map +1 -0
  450. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts +34 -0
  451. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -0
  452. package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts +17 -0
  453. package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts.map +1 -0
  454. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts +18 -0
  455. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -0
  456. package/remote-access/data/c8y-ngx-components-remote-access-data.d.ts.map +1 -0
  457. package/remote-access/data/index.d.ts +3 -0
  458. package/remote-access/data/index.d.ts.map +1 -0
  459. package/remote-access/data/remote-access-protocol-provider.d.ts +21 -0
  460. package/remote-access/data/remote-access-protocol-provider.d.ts.map +1 -0
  461. package/remote-access/data/remote-access.service.d.ts +94 -0
  462. package/remote-access/data/remote-access.service.d.ts.map +1 -0
  463. package/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.d.ts.map +1 -0
  464. package/remote-access/passthrough/index.d.ts +17 -0
  465. package/remote-access/passthrough/index.d.ts.map +1 -0
  466. package/remote-access/shared/c8y-ngx-components-remote-access-shared.d.ts.map +1 -0
  467. package/remote-access/shared/index.d.ts +3 -0
  468. package/remote-access/shared/index.d.ts.map +1 -0
  469. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts +37 -0
  470. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -0
  471. package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts +38 -0
  472. package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts.map +1 -0
  473. package/remote-access/ssh/c8y-ngx-components-remote-access-ssh.d.ts.map +1 -0
  474. package/remote-access/ssh/index.d.ts +22 -0
  475. package/remote-access/ssh/index.d.ts.map +1 -0
  476. package/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.d.ts.map +1 -0
  477. package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts +2 -0
  478. package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts.map +1 -0
  479. package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts +64 -0
  480. package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts.map +1 -0
  481. package/remote-access/telnet/c8y-ngx-components-remote-access-telnet.d.ts.map +1 -0
  482. package/remote-access/telnet/index.d.ts +17 -0
  483. package/remote-access/telnet/index.d.ts.map +1 -0
  484. package/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.d.ts.map +1 -0
  485. package/remote-access/terminal-viewer/index.d.ts +2 -0
  486. package/remote-access/terminal-viewer/index.d.ts.map +1 -0
  487. package/remote-access/terminal-viewer/shell-adapter.d.ts +14 -0
  488. package/remote-access/terminal-viewer/shell-adapter.d.ts.map +1 -0
  489. package/remote-access/terminal-viewer/telnet-negotiator.d.ts +13 -0
  490. package/remote-access/terminal-viewer/telnet-negotiator.d.ts.map +1 -0
  491. package/remote-access/terminal-viewer/terminal-viewer.component.d.ts +25 -0
  492. package/remote-access/terminal-viewer/terminal-viewer.component.d.ts.map +1 -0
  493. package/remote-access/vnc/c8y-ngx-components-remote-access-vnc.d.ts.map +1 -0
  494. package/remote-access/vnc/index.d.ts +22 -0
  495. package/remote-access/vnc/index.d.ts.map +1 -0
  496. package/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.d.ts.map +1 -0
  497. package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts +2 -0
  498. package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts.map +1 -0
  499. package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts +46 -0
  500. package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts.map +1 -0
  501. package/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.d.ts.map +1 -0
  502. package/remote-access/vnc/vnc-viewer/index.d.ts +2 -0
  503. package/remote-access/vnc/vnc-viewer/index.d.ts.map +1 -0
  504. package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts +32 -0
  505. package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts.map +1 -0
  506. package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts +37 -0
  507. package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts.map +1 -0
  508. package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts +2 -1
  509. package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts.map +1 -1
  510. package/report-dashboard/report-dashboard-list.component.d.ts +29 -0
  511. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  512. package/repository/shared/repository.model.d.ts +2 -1
  513. package/repository/shared/repository.model.d.ts.map +1 -1
  514. package/services/status-options/status-options.model.d.ts +2 -1
  515. package/services/status-options/status-options.model.d.ts.map +1 -1
  516. package/sub-assets/group-info.component.d.ts +2 -1
  517. package/sub-assets/group-info.component.d.ts.map +1 -1
  518. package/translation-editor/data/translation-store.service.d.ts.map +1 -1
  519. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +7 -2
  520. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  521. package/upgrade/bridge.service.d.ts +5 -0
  522. package/upgrade/bridge.service.d.ts.map +1 -1
  523. package/widgets/implementations/alarms/severity-icon.pipe.d.ts.map +1 -1
  524. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
  525. package/widgets/implementations/kpi/kpi-widget.model.d.ts +2 -1
  526. package/widgets/implementations/kpi/kpi-widget.model.d.ts.map +1 -1
  527. package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts +0 -10
  528. package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts.map +0 -1
  529. package/esm2022/ecosystem/application-plugins/only-latest-plugin-version.pipe.mjs +0 -20
@@ -76,32 +76,21 @@ export class FilesRepositoryService {
76
76
  async getTotal() {
77
77
  const filters = {
78
78
  query: this.queriesUtil.buildQuery(this.baseQuery),
79
- pageSize: 1,
80
- withTotalPages: true
79
+ withTotalElements: true
81
80
  };
82
- return (await this.inventoryService.list(filters)).paging.totalPages;
81
+ return (await this.inventoryService.list(filters)).paging.totalElements;
83
82
  }
84
83
  /** Returns data for current columns and pagination setup. */
85
84
  async getData(columns, pagination, searchText = '') {
86
85
  // build filters based on columns and pagination
87
86
  const filters = {
88
87
  text: searchText,
89
- ...this.getFilters(columns, pagination)
88
+ ...this.getFilters(columns, pagination),
89
+ withTotalElements: true
90
90
  };
91
91
  // execute inventory query for the list of managed objects
92
92
  return this.inventoryService.list(filters);
93
93
  }
94
- /** Returns the number of items matching current columns and pagination setup. */
95
- async getCount(columns, pagination) {
96
- const filters = {
97
- // build filters based on columns and pagination
98
- ...this.getFilters(columns, pagination),
99
- // but we only need the number of items, not the items themselves
100
- pageSize: 1,
101
- currentPage: 1
102
- };
103
- return (await this.inventoryService.list(filters)).paging.totalPages;
104
- }
105
94
  /** Returns filters for given columns and pagination setup. */
106
95
  getFilters(columns, pagination) {
107
96
  return {
@@ -157,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
157
146
  providedIn: 'root'
158
147
  }]
159
148
  }], ctorParameters: () => [{ type: i1.InventoryService }] });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtcmVwb3NpdG9yeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmlsZXMtcmVwb3NpdG9yeS9maWxlcy1yZXBvc2l0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFzQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUR0RCxjQUFTLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTztZQUNMLFFBQVEsRUFBRSxFQUFFO1lBQ1osV0FBVyxFQUFFLENBQUM7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELDZCQUE2QixDQUFDLElBQVM7UUFDckMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLDBCQUEwQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxTQUFTLEVBQUUsS0FBa0I7YUFDOUI7WUFDRDtnQkFD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O1lBRUQsK0ZBQStGO1lBQy9GLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQy9CLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pGLENBQUM7UUFDSCxDQUFDO1FBRUQsOERBQThEO1FBQzlELElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDeEMseURBQXlEO1lBQ3pELEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNuQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0E5SlUsc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1ZXJpZXNVdGlsIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldHRleHQsIFBhZ2luYXRpb24sIFNvcnRPcmRlciwgQ29sdW1uLCBSb3cgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IHRyYW5zZm9ybSwgaGFzIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZXNSZXBvc2l0b3J5U2VydmljZSB7XG4gIHF1ZXJpZXNVdGlsOiBRdWVyaWVzVXRpbDtcbiAgYmFzZVF1ZXJ5ID0geyBfX2hhczogJ2M4eV9Jc0JpbmFyeScgfTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlKSB7XG4gICAgdGhpcy5xdWVyaWVzVXRpbCA9IG5ldyBRdWVyaWVzVXRpbCgpO1xuICB9XG5cbiAgZ2V0UGFnaW5hdGlvbigpOiBQYWdpbmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZVNpemU6IDEwLFxuICAgICAgY3VycmVudFBhZ2U6IDFcbiAgICB9O1xuICB9XG5cbiAgaGFzQXBwbGljYXRpb25TdG9yYWdlRnJhZ21lbnQoZmlsZTogUm93KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGhhcyhmaWxlLCAnYzh5X2FwcGxpY2F0aW9uc19zdG9yYWdlJyk7XG4gIH1cblxuICBnZXRDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnTmFtZScpLFxuICAgICAgICBwYXRoOiAnbmFtZScsXG4gICAgICAgIGZpbHRlcmFibGU6IHRydWUsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBzb3J0T3JkZXI6ICdhc2MnIGFzIFNvcnRPcmRlclxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3R5cGUnLFxuICAgICAgICBoZWFkZXI6IGdldHRleHQoJ1R5cGUnKSxcbiAgICAgICAgcGF0aDogJ3R5cGUnLFxuICAgICAgICBmaWx0ZXJhYmxlOiB0cnVlLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2xlbmd0aCcsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnU2l6ZScpLFxuICAgICAgICBwYXRoOiAnbGVuZ3RoJyxcbiAgICAgICAgZmlsdGVyYWJsZTogZmFsc2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3duZXInLFxuICAgICAgICBoZWFkZXI6IGdldHRleHQoJ093bmVyJyksXG4gICAgICAgIHBhdGg6ICdvd25lcicsXG4gICAgICAgIGZpbHRlcmFibGU6IHRydWUsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbGFzdFVwZGF0ZWQnLFxuICAgICAgICBoZWFkZXI6IGdldHRleHQoJ0xhc3QgdXBkYXRlJyksXG4gICAgICAgIHBhdGg6ICdsYXN0VXBkYXRlZCcsXG4gICAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICAvKiogUmV0dXJucyBhcnJheSB3aXRoIGl0ZW1zIGlkIHdoZXJlIGl0ZW0gaGFzIG5vdCBjOHlfYXBwbGljYXRpb25zX3N0b3JhZ2UgZnJhZ21lbnQuICovXG4gIGdldERlbGV0YWJsZUl0ZW1zSWRzKHNlbGVjdGVkSXRlbXNJZHM6IHN0cmluZ1tdLCBkYXRhRnJvbURhdGFHcmlkOiBBcnJheTxhbnk+KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXNXaXRob3V0QXBwbGljYXRpb25zID0gW107XG4gICAgZGF0YUZyb21EYXRhR3JpZC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgc2VsZWN0ZWRJdGVtc0lkcy5mb3JFYWNoKHNlbGVjdGVkSXRlbUlkID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUlkID09PSBpdGVtLmlkICYmICF0aGlzLmhhc0FwcGxpY2F0aW9uU3RvcmFnZUZyYWdtZW50KGl0ZW0pKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtc1dpdGhvdXRBcHBsaWNhdGlvbnMucHVzaChzZWxlY3RlZEl0ZW1JZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGVkSXRlbXNXaXRob3V0QXBwbGljYXRpb25zO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyAod2l0aCBubyBmaWx0ZXJzIGJhc2VkIG9uIGNvbHVtbnMgc2V0dXApLiAqL1xuICBhc3luYyBnZXRUb3RhbCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICBxdWVyeTogdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KHRoaXMuYmFzZVF1ZXJ5KSxcbiAgICAgIHBhZ2VTaXplOiAxLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3QoZmlsdGVycykpLnBhZ2luZy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgLyoqIFJldHVybnMgZGF0YSBmb3IgY3VycmVudCBjb2x1bW5zIGFuZCBwYWdpbmF0aW9uIHNldHVwLiAqL1xuICBhc3luYyBnZXREYXRhKGNvbHVtbnM6IENvbHVtbltdLCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uLCBzZWFyY2hUZXh0ID0gJycpIHtcbiAgICAvLyBidWlsZCBmaWx0ZXJzIGJhc2VkIG9uIGNvbHVtbnMgYW5kIHBhZ2luYXRpb25cbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgdGV4dDogc2VhcmNoVGV4dCxcbiAgICAgIC4uLnRoaXMuZ2V0RmlsdGVycyhjb2x1bW5zLCBwYWdpbmF0aW9uKVxuICAgIH07XG4gICAgLy8gZXhlY3V0ZSBpbnZlbnRvcnkgcXVlcnkgZm9yIHRoZSBsaXN0IG9mIG1hbmFnZWQgb2JqZWN0c1xuXG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5U2VydmljZS5saXN0KGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBtYXRjaGluZyBjdXJyZW50IGNvbHVtbnMgYW5kIHBhZ2luYXRpb24gc2V0dXAuICovXG4gIGFzeW5jIGdldENvdW50KGNvbHVtbnM6IENvbHVtbltdLCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uKSB7XG4gICAgY29uc3QgZmlsdGVycyA9IHtcbiAgICAgIC8vIGJ1aWxkIGZpbHRlcnMgYmFzZWQgb24gY29sdW1ucyBhbmQgcGFnaW5hdGlvblxuICAgICAgLi4udGhpcy5nZXRGaWx0ZXJzKGNvbHVtbnMsIHBhZ2luYXRpb24pLFxuICAgICAgLy8gYnV0IHdlIG9ubHkgbmVlZCB0aGUgbnVtYmVyIG9mIGl0ZW1zLCBub3QgdGhlIGl0ZW1zIHRoZW1zZWx2ZXNcbiAgICAgIHBhZ2VTaXplOiAxLFxuICAgICAgY3VycmVudFBhZ2U6IDFcbiAgICB9O1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3QoZmlsdGVycykpLnBhZ2luZy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgLyoqIFJldHVybnMgZmlsdGVycyBmb3IgZ2l2ZW4gY29sdW1ucyBhbmQgcGFnaW5hdGlvbiBzZXR1cC4gKi9cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJzKGNvbHVtbnM6IENvbHVtbltdLCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiB0aGlzLmdldFF1ZXJ5U3RyaW5nKGNvbHVtbnMpLFxuICAgICAgcGFnZVNpemU6IHBhZ2luYXRpb24ucGFnZVNpemUsXG4gICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50UGFnZSxcbiAgICAgIHdpdGhDaGlsZHJlbjogZmFsc2UsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZVxuICAgIH07XG4gIH1cblxuICAvKiogUmV0dXJucyBhIHF1ZXJ5IHN0cmluZyBiYXNlZCBvbiBjb2x1bW5zIHNldHVwLiAqL1xuICBwcml2YXRlIGdldFF1ZXJ5U3RyaW5nKGNvbHVtbnM6IENvbHVtbltdKTogc3RyaW5nIHtcbiAgICBsZXQgZnVsbFF1ZXJ5ID0gdGhpcy5nZXRRdWVyeU9iaihjb2x1bW5zKTtcbiAgICBmdWxsUXVlcnkgPSB0aGlzLnF1ZXJpZXNVdGlsLmFkZEFuZEZpbHRlcihmdWxsUXVlcnksIHRoaXMuYmFzZVF1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVzVXRpbC5idWlsZFF1ZXJ5KGZ1bGxRdWVyeSk7XG4gIH1cblxuICAvKiogUmV0dXJucyBhIHF1ZXJ5IG9iamVjdCBiYXNlZCBvbiBjb2x1bW5zIHNldHVwLiAqL1xuICBwcml2YXRlIGdldFF1ZXJ5T2JqKGNvbHVtbnM6IENvbHVtbltdKSB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybShjb2x1bW5zLCAocXVlcnksIGNvbHVtbikgPT4gdGhpcy5hZGRDb2x1bW5RdWVyeShxdWVyeSwgY29sdW1uKSwge1xuICAgICAgX19maWx0ZXI6IHt9LFxuICAgICAgX19vcmRlcmJ5OiBbXVxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEV4dGVuZHMgZ2l2ZW4gcXVlcnkgd2l0aCBhIHBhcnQgYmFzZWQgb24gdGhlIHNldHVwIG9mIGdpdmVuIGNvbHVtbi4gKi9cbiAgcHJpdmF0ZSBhZGRDb2x1bW5RdWVyeShxdWVyeSwgY29sdW1uOiBDb2x1bW4pOiB2b2lkIHtcbiAgICAvLyB3aGVuIGEgY29sdW1uIGlzIG1hcmtlZCBhcyBmaWx0ZXJhYmxlXG4gICAgaWYgKGNvbHVtbi5maWx0ZXJhYmxlKSB7XG4gICAgICAvLyBpbiB0aGUgY2FzZSBvZiBkZWZhdWx0IGZpbHRlcmluZyBmb3JtLCBgZmlsdGVyUHJlZGljYXRlYCB3aWxsIGNvbnRhaW4gdGhlIHN0cmluZyBlbnRlcmVkIGJ5IGEgdXNlclxuICAgICAgaWYgKGNvbHVtbi5maWx0ZXJQcmVkaWNhdGUpIHtcbiAgICAgICAgLy8gc28gd2UgdXNlIGl0IGFzIHRoZSBleHBlY3RlZCB2YWx1ZSwgKiBhbGxvdyB0byBzZWFyY2ggZm9yIGl0IGFueXdoZXJlIGluIHRoZSBwcm9wZXJ0eVxuICAgICAgICBxdWVyeS5fX2ZpbHRlcltjb2x1bW4ucGF0aF0gPSBgKiR7Y29sdW1uLmZpbHRlclByZWRpY2F0ZX0qYDtcbiAgICAgIH1cblxuICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgY3VzdG9tIGZpbHRlcmluZyBmb3JtLCB3ZSdyZSBzdG9yaW5nIHRoZSBxdWVyeSBpbiBgZXh0ZXJuYWxGaWx0ZXJRdWVyeS5xdWVyeWBcbiAgICAgIGlmIChjb2x1bW4uZXh0ZXJuYWxGaWx0ZXJRdWVyeSkge1xuICAgICAgICBxdWVyeSA9IHRoaXMucXVlcmllc1V0aWwuYWRkQW5kRmlsdGVyKHF1ZXJ5LCBjb2x1bW4uZXh0ZXJuYWxGaWx0ZXJRdWVyeS5xdWVyeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gd2hlbiBhIGNvbHVtbiBpcyBzb3J0YWJsZSBhbmQgaGFzIGEgc3BlY2lmaWVkIHNvcnRpbmcgb3JkZXJcbiAgICBpZiAoY29sdW1uLnNvcnRhYmxlICYmIGNvbHVtbi5zb3J0T3JkZXIpIHtcbiAgICAgIC8vIGFkZCBzb3J0aW5nIGNvbmRpdGlvbiBmb3IgdGhlIGNvbmZpZ3VyZWQgY29sdW1uIGBwYXRoYFxuICAgICAgcXVlcnkuX19vcmRlcmJ5LnB1c2goe1xuICAgICAgICBbY29sdW1uLnBhdGhdOiBjb2x1bW4uc29ydE9yZGVyID09PSAnYXNjJyA/IDEgOiAtMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG59XG4iXX0=
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtcmVwb3NpdG9yeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmlsZXMtcmVwb3NpdG9yeS9maWxlcy1yZXBvc2l0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFzQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUR0RCxjQUFTLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTztZQUNMLFFBQVEsRUFBRSxFQUFFO1lBQ1osV0FBVyxFQUFFLENBQUM7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELDZCQUE2QixDQUFDLElBQVM7UUFDckMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLDBCQUEwQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxTQUFTLEVBQUUsS0FBa0I7YUFDOUI7WUFDRDtnQkFD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QUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuRCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQWxKVSxzQkFBc0I7a0hBQXRCLHNCQUFzQixjQUZyQixNQUFNOzsyRkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVlcmllc1V0aWwgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCwgUGFnaW5hdGlvbiwgU29ydE9yZGVyLCBDb2x1bW4sIFJvdyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgdHJhbnNmb3JtLCBoYXMgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlc1JlcG9zaXRvcnlTZXJ2aWNlIHtcbiAgcXVlcmllc1V0aWw6IFF1ZXJpZXNVdGlsO1xuICBiYXNlUXVlcnkgPSB7IF9faGFzOiAnYzh5X0lzQmluYXJ5JyB9O1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UpIHtcbiAgICB0aGlzLnF1ZXJpZXNVdGlsID0gbmV3IFF1ZXJpZXNVdGlsKCk7XG4gIH1cblxuICBnZXRQYWdpbmF0aW9uKCk6IFBhZ2luYXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBwYWdlU2l6ZTogMTAsXG4gICAgICBjdXJyZW50UGFnZTogMVxuICAgIH07XG4gIH1cblxuICBoYXNBcHBsaWNhdGlvblN0b3JhZ2VGcmFnbWVudChmaWxlOiBSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzKGZpbGUsICdjOHlfYXBwbGljYXRpb25zX3N0b3JhZ2UnKTtcbiAgfVxuXG4gIGdldENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdOYW1lJyksXG4gICAgICAgIHBhdGg6ICduYW1lJyxcbiAgICAgICAgZmlsdGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIHNvcnRPcmRlcjogJ2FzYycgYXMgU29ydE9yZGVyXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndHlwZScsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnVHlwZScpLFxuICAgICAgICBwYXRoOiAndHlwZScsXG4gICAgICAgIGZpbHRlcmFibGU6IHRydWUsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbGVuZ3RoJyxcbiAgICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdTaXplJyksXG4gICAgICAgIHBhdGg6ICdsZW5ndGgnLFxuICAgICAgICBmaWx0ZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgc29ydGFibGU6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvd25lcicsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnT3duZXInKSxcbiAgICAgICAgcGF0aDogJ293bmVyJyxcbiAgICAgICAgZmlsdGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgc29ydGFibGU6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdsYXN0VXBkYXRlZCcsXG4gICAgICAgIGhlYWRlcjogZ2V0dGV4dCgnTGFzdCB1cGRhdGUnKSxcbiAgICAgICAgcGF0aDogJ2xhc3RVcGRhdGVkJyxcbiAgICAgICAgZmlsdGVyYWJsZTogZmFsc2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGFycmF5IHdpdGggaXRlbXMgaWQgd2hlcmUgaXRlbSBoYXMgbm90IGM4eV9hcHBsaWNhdGlvbnNfc3RvcmFnZSBmcmFnbWVudC4gKi9cbiAgZ2V0RGVsZXRhYmxlSXRlbXNJZHMoc2VsZWN0ZWRJdGVtc0lkczogc3RyaW5nW10sIGRhdGFGcm9tRGF0YUdyaWQ6IEFycmF5PGFueT4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtc1dpdGhvdXRBcHBsaWNhdGlvbnMgPSBbXTtcbiAgICBkYXRhRnJvbURhdGFHcmlkLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBzZWxlY3RlZEl0ZW1zSWRzLmZvckVhY2goc2VsZWN0ZWRJdGVtSWQgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSWQgPT09IGl0ZW0uaWQgJiYgIXRoaXMuaGFzQXBwbGljYXRpb25TdG9yYWdlRnJhZ21lbnQoaXRlbSkpIHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zV2l0aG91dEFwcGxpY2F0aW9ucy5wdXNoKHNlbGVjdGVkSXRlbUlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRJdGVtc1dpdGhvdXRBcHBsaWNhdGlvbnM7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zICh3aXRoIG5vIGZpbHRlcnMgYmFzZWQgb24gY29sdW1ucyBzZXR1cCkuICovXG4gIGFzeW5jIGdldFRvdGFsKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZmlsdGVycyA9IHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXNVdGlsLmJ1aWxkUXVlcnkodGhpcy5iYXNlUXVlcnkpLFxuICAgICAgd2l0aFRvdGFsRWxlbWVudHM6IHRydWVcbiAgICB9O1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3QoZmlsdGVycykpLnBhZ2luZy50b3RhbEVsZW1lbnRzO1xuICB9XG5cbiAgLyoqIFJldHVybnMgZGF0YSBmb3IgY3VycmVudCBjb2x1bW5zIGFuZCBwYWdpbmF0aW9uIHNldHVwLiAqL1xuICBhc3luYyBnZXREYXRhKGNvbHVtbnM6IENvbHVtbltdLCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uLCBzZWFyY2hUZXh0ID0gJycpIHtcbiAgICAvLyBidWlsZCBmaWx0ZXJzIGJhc2VkIG9uIGNvbHVtbnMgYW5kIHBhZ2luYXRpb25cbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgdGV4dDogc2VhcmNoVGV4dCxcbiAgICAgIC4uLnRoaXMuZ2V0RmlsdGVycyhjb2x1bW5zLCBwYWdpbmF0aW9uKSxcbiAgICAgIHdpdGhUb3RhbEVsZW1lbnRzOiB0cnVlXG4gICAgfTtcbiAgICAvLyBleGVjdXRlIGludmVudG9yeSBxdWVyeSBmb3IgdGhlIGxpc3Qgb2YgbWFuYWdlZCBvYmplY3RzXG5cbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3QoZmlsdGVycyk7XG4gIH1cblxuICAvKiogUmV0dXJucyBmaWx0ZXJzIGZvciBnaXZlbiBjb2x1bW5zIGFuZCBwYWdpbmF0aW9uIHNldHVwLiAqL1xuICBwcml2YXRlIGdldEZpbHRlcnMoY29sdW1uczogQ29sdW1uW10sIHBhZ2luYXRpb246IFBhZ2luYXRpb24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgcXVlcnk6IHRoaXMuZ2V0UXVlcnlTdHJpbmcoY29sdW1ucyksXG4gICAgICBwYWdlU2l6ZTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcbiAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnRQYWdlLFxuICAgICAgd2l0aENoaWxkcmVuOiBmYWxzZSxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGEgcXVlcnkgc3RyaW5nIGJhc2VkIG9uIGNvbHVtbnMgc2V0dXAuICovXG4gIHByaXZhdGUgZ2V0UXVlcnlTdHJpbmcoY29sdW1uczogQ29sdW1uW10pOiBzdHJpbmcge1xuICAgIGxldCBmdWxsUXVlcnkgPSB0aGlzLmdldFF1ZXJ5T2JqKGNvbHVtbnMpO1xuICAgIGZ1bGxRdWVyeSA9IHRoaXMucXVlcmllc1V0aWwuYWRkQW5kRmlsdGVyKGZ1bGxRdWVyeSwgdGhpcy5iYXNlUXVlcnkpO1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXNVdGlsLmJ1aWxkUXVlcnkoZnVsbFF1ZXJ5KTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGEgcXVlcnkgb2JqZWN0IGJhc2VkIG9uIGNvbHVtbnMgc2V0dXAuICovXG4gIHByaXZhdGUgZ2V0UXVlcnlPYmooY29sdW1uczogQ29sdW1uW10pIHtcbiAgICByZXR1cm4gdHJhbnNmb3JtKGNvbHVtbnMsIChxdWVyeSwgY29sdW1uKSA9PiB0aGlzLmFkZENvbHVtblF1ZXJ5KHF1ZXJ5LCBjb2x1bW4pLCB7XG4gICAgICBfX2ZpbHRlcjoge30sXG4gICAgICBfX29yZGVyYnk6IFtdXG4gICAgfSk7XG4gIH1cblxuICAvKiogRXh0ZW5kcyBnaXZlbiBxdWVyeSB3aXRoIGEgcGFydCBiYXNlZCBvbiB0aGUgc2V0dXAgb2YgZ2l2ZW4gY29sdW1uLiAqL1xuICBwcml2YXRlIGFkZENvbHVtblF1ZXJ5KHF1ZXJ5LCBjb2x1bW46IENvbHVtbik6IHZvaWQge1xuICAgIC8vIHdoZW4gYSBjb2x1bW4gaXMgbWFya2VkIGFzIGZpbHRlcmFibGVcbiAgICBpZiAoY29sdW1uLmZpbHRlcmFibGUpIHtcbiAgICAgIC8vIGluIHRoZSBjYXNlIG9mIGRlZmF1bHQgZmlsdGVyaW5nIGZvcm0sIGBmaWx0ZXJQcmVkaWNhdGVgIHdpbGwgY29udGFpbiB0aGUgc3RyaW5nIGVudGVyZWQgYnkgYSB1c2VyXG4gICAgICBpZiAoY29sdW1uLmZpbHRlclByZWRpY2F0ZSkge1xuICAgICAgICAvLyBzbyB3ZSB1c2UgaXQgYXMgdGhlIGV4cGVjdGVkIHZhbHVlLCAqIGFsbG93IHRvIHNlYXJjaCBmb3IgaXQgYW55d2hlcmUgaW4gdGhlIHByb3BlcnR5XG4gICAgICAgIHF1ZXJ5Ll9fZmlsdGVyW2NvbHVtbi5wYXRoXSA9IGAqJHtjb2x1bW4uZmlsdGVyUHJlZGljYXRlfSpgO1xuICAgICAgfVxuXG4gICAgICAvLyBpbiB0aGUgY2FzZSBvZiBjdXN0b20gZmlsdGVyaW5nIGZvcm0sIHdlJ3JlIHN0b3JpbmcgdGhlIHF1ZXJ5IGluIGBleHRlcm5hbEZpbHRlclF1ZXJ5LnF1ZXJ5YFxuICAgICAgaWYgKGNvbHVtbi5leHRlcm5hbEZpbHRlclF1ZXJ5KSB7XG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5xdWVyaWVzVXRpbC5hZGRBbmRGaWx0ZXIocXVlcnksIGNvbHVtbi5leHRlcm5hbEZpbHRlclF1ZXJ5LnF1ZXJ5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB3aGVuIGEgY29sdW1uIGlzIHNvcnRhYmxlIGFuZCBoYXMgYSBzcGVjaWZpZWQgc29ydGluZyBvcmRlclxuICAgIGlmIChjb2x1bW4uc29ydGFibGUgJiYgY29sdW1uLnNvcnRPcmRlcikge1xuICAgICAgLy8gYWRkIHNvcnRpbmcgY29uZGl0aW9uIGZvciB0aGUgY29uZmlndXJlZCBjb2x1bW4gYHBhdGhgXG4gICAgICBxdWVyeS5fX29yZGVyYnkucHVzaCh7XG4gICAgICAgIFtjb2x1bW4ucGF0aF06IGNvbHVtbi5zb3J0T3JkZXIgPT09ICdhc2MnID8gMSA6IC0xXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cbn1cbiJdfQ==
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
70
70
  }], selectedIcon: [{
71
71
  type: Input
72
72
  }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9pY29uLXNlbGVjdG9yL2ljb24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vaWNvbi1zZWxlY3Rvci9pY29uLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7OztBQUdsQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQU92RCxNQUFNLE9BQU8scUJBQXFCO0lBWWhDO1FBWFMsNEJBQXVCLEdBQWEsRUFBRSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBS2hELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQVMsZUFBZSxDQUFDLENBQUM7UUFJbkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxLQUFLLENBQUMs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Q0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDOzhHQXpFVSxxQkFBcUI7a0dBQXJCLHFCQUFxQiwwTkNkbEMsdW9GQXVFQTs7MkZEekRhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7d0RBS3BCLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0UsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIGRlZmVyLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IERlZmF1bHRJY29uRGVmaW5pdGlvbiB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9tb2RlbCc7XG5cbmNvbnN0IGFsbEljb25DYXRlZ29yeSA9IGdldHRleHQoJ0FsbGBpY29ucy1jYXRlZ29yeWAnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWljb24tc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW11cbn0pXG5leHBvcnQgY2xhc3MgSWNvblNlbGVjdG9yQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaWNvbkNhdGVnb3JpZXNUb0V4Y2x1ZGU6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNob3dJY29uQ2xhc3MgPSB0cnVlO1xuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQElucHV0KCkgc2VsZWN0ZWRJY29uOiBzdHJpbmc7XG5cbiAgaWNvbnMkOiBPYnNlcnZhYmxlPERlZmF1bHRJY29uRGVmaW5pdGlvbltdPjtcbiAgZmlsdGVyZWRJY29ucyQ6IE9ic2VydmFibGU8RGVmYXVsdEljb25EZWZpbml0aW9uW10+O1xuICBzZWFyY2hUZXJtJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBzZWxlY3RlZEljb25DYXRlZ29yeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oYWxsSWNvbkNhdGVnb3J5KTtcbiAgYXZhaWxhYmxlSWNvbkNhdGVnb3JpZXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmljb25zJCA9IGRlZmVyKCgpID0+IGZyb20odGhpcy5sb2FkSWNvbkRlZmluaXRpb25zKCkpKS5waXBlKFxuICAgICAgbWFwKGljb25zID0+IGljb25zLmZpbHRlcih0bXAgPT4gIXRoaXMuaWNvbkNhdGVnb3JpZXNUb0V4Y2x1ZGUuaW5jbHVkZXModG1wLmxhYmVsKSkpLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KVxuICAgICk7XG4gICAgdGhpcy5maWx0ZXJlZEljb25zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5pY29ucyQsXG4gICAgICB0aGlzLnNlYXJjaFRlcm0kLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHN0YXJ0V2l0aCh0aGlzLnNlYXJjaFRlcm0kLnZhbHVlKSksXG4gICAgICB0aGlzLnNlbGVjdGVkSWNvbkNhdGVnb3J5JFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtpY29ucywgc2VhcmNoVGVybSwgY2F0ZWdvcnldKSA9PlxuICAgICAgICB0aGlzLmZpbHRlckljb25zQnlDYXRlZ29yeUFuZFNlYXJjaFRlcm0oaWNvbnMsIGNhdGVnb3J5LCBzZWFyY2hUZXJtKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5hdmFpbGFibGVJY29uQ2F0ZWdvcmllcyQgPSB0aGlzLmljb25zJC5waXBlKFxuICAgICAgbWFwKGljb25zID0+IFthbGxJY29uQ2F0ZWdvcnksIC4uLmljb25zLm1hcCh0bXAgPT4gdG1wLmxhYmVsKV0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRJY29uRGVmaW5pdGlvbnMoKTogUHJvbWlzZTxEZWZhdWx0SWNvbkRlZmluaXRpb25bXT4ge1xuICAgIGNvbnN0IHsgYWxsSWNvbnMgfSA9IGF3YWl0IGltcG9ydCgnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zJyk7XG4gICAgcmV0dXJuIGFsbEljb25zO1xuICB9XG5cbiAgZmlsdGVySWNvbnNCeUNhdGVnb3J5QW5kU2VhcmNoVGVybShcbiAgICBpY29uQ2F0ZWdvcmllczogRGVmYXVsdEljb25EZWZpbml0aW9uW10sXG4gICAgc2VsZWN0ZWRDYXRlZ29yeTogc3RyaW5nLFxuICAgIHNlYXJjaFRlcm06IHN0cmluZ1xuICApOiBEZWZhdWx0SWNvbkRlZmluaXRpb25bXSB7XG4gICAgaWYgKHNlbGVjdGVkQ2F0ZWdvcnkgIT09IGFsbEljb25DYXRlZ29yeSkge1xuICAgICAgaWNvbkNhdGVnb3JpZXMgPSBpY29uQ2F0ZWdvcmllcy5maWx0ZXIoY2F0ZWdvcnkgPT4gY2F0ZWdvcnkubGFiZWwgPT09IHNlbGVjdGVkQ2F0ZWdvcnkpO1xuICAgIH1cblxuICAgIGlmIChzZWFyY2hUZXJtKSB7XG4gICAgICBjb25zdCBsb3dlckNhc2VTZWFyY2hUZXJtID0gc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgbWF0Y2hpbmdDYXRlZ29yaWVzID0gbmV3IEFycmF5PERlZmF1bHRJY29uRGVmaW5pdGlvbj4oKTtcbiAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgaWNvbkNhdGVnb3JpZXMpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdJY29ucyA9IGNhdGVnb3J5Lmljb25zLmZpbHRlcihpY29uQ2xhc3NlcyA9PlxuICAgICAgICAgIGljb25DbGFzc2VzLnNvbWUoaWNvbkNsYXNzID0+IGljb25DbGFzcy5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2hUZXJtKSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG1hdGNoaW5nSWNvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgbWF0Y2hpbmdDYXRlZ29yaWVzLnB1c2goeyAuLi5jbG9uZShjYXRlZ29yeSksIGljb25zOiBtYXRjaGluZ0ljb25zIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2hpbmdDYXRlZ29yaWVzO1xuICAgIH1cblxuICAgIHJldHVybiBpY29uQ2F0ZWdvcmllcztcbiAgfVxuXG4gIG9uU2VhcmNoQ2hhbmdlKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgfVxuXG4gIG9uQ2F0ZWdvcnlGaWx0ZXJDaGFuZ2VkKGNhdGVnb3J5Q2hhbmdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSWNvbkNhdGVnb3J5JC5uZXh0KGNhdGVnb3J5Q2hhbmdlKTtcbiAgfVxuXG4gIG9uSWNvbkNsaWNrZWQoaWNvbjogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSWNvbiA9IGljb25bMF07XG4gICAgdGhpcy5vblNlbGVjdC5lbWl0KGljb25bMF0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC1sLTI0IHAtci0yNCBwLXQtOCBwLWItOCBzZXBhcmF0b3ItYm90dG9tXCI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgZC1mbGV4LXNtXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IG0tYi04XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtc2VhcmNoIGlucHV0LWdyb3VwXCIgc3R5bGU9XCJ3aWR0aDogYXV0b1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgaWQ9XCJmaWx0ZXItaWNvbnNcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFRlcm0kIHwgYXN5bmNcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1R5cGUgdG8gZmlsdGVyIGljb25z4oCmJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2VhcmNoSWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgICA8aSBjOHlJY29uPVwic2VhcmNoXCI+PC9pPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uIHBvaW50ZXJcIlxuICAgICAgICAgICpuZ0lmPVwic2VhcmNoVGVybSQgfCBhc3luYzsgZWxzZSBzZWFyY2hJY29uXCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2hDaGFuZ2UoJycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiPjwvaT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IG0tYi04IHRleHQtcmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGEtaS1jZW50ZXIgdGV4dC1sZWZ0XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIm0tYi0wIG0tci04IGZsZXgtbm8tc2hyaW5rXCIgdHJhbnNsYXRlPkZpbHRlciBieSB0eXBlPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgIGlkPVwiZXhhbXBsZVNlbGVjdFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZEljb25DYXRlZ29yeSQgfCBhc3luY1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNhdGVnb3J5RmlsdGVyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBhdmFpbGFibGVJY29uQ2F0ZWdvcmllcyQgfCBhc3luY1wiIFtuZ1ZhbHVlXT1cImNhdGVnb3J5XCI+XG4gICAgICAgICAgICAgIHt7IGNhdGVnb3J5IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtaW5uZXItc2Nyb2xsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCIgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSAyOTNweClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHRtLWljb24tZ3JpZFwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaWNvbkRlZmluaXRpb24gb2YgZmlsdGVyZWRJY29ucyQgfCBhc3luY1wiIGNsYXNzPVwiZC1jb250ZW50c1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2sgY2VudGVyIGdyaWRfX2NvbC0tZnVsbHNwYW5cIj5cbiAgICAgICAgICB7eyBpY29uRGVmaW5pdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1jb250ZW50c1wiICpuZ0Zvcj1cImxldCBpY29uIG9mIGljb25EZWZpbml0aW9uLmljb25zXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkdG0taWNvbi1ncmlkX19pdGVtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2R0bS1pY29uLWdyaWRfX2l0ZW0tLXNlbGVjdGVkJzogc2VsZWN0ZWRJY29uICYmIGljb25bMF0gPT09IHNlbGVjdGVkSWNvblxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25JY29uQ2xpY2tlZChpY29uKVwiIGNsYXNzPVwiZHRtLWljb24tZ3JpZF9fYnRuXCIgW3RpdGxlXT1cImljb25bMF0gfCBpY29uTmFtZVwiPlxuICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJpY29uWzBdXCIgY2xhc3M9XCJkLWJsb2NrIGljb24tNDBcIj48L2k+XG4gICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cInNob3dJY29uQ2xhc3NcIiBjbGFzcz1cInRleHQtYnJlYWstd29yZFwiPnt7IGljb25bMF0gfCBpY29uTmFtZSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9pY29uLXNlbGVjdG9yL2ljb24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vaWNvbi1zZWxlY3Rvci9pY29uLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7OztBQUlsQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQU92RCxNQUFNLE9BQU8scUJBQXFCO0lBWWhDO1FBWFMsNEJBQXVCLEdBQWEsRUFBRSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBS2hELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQVMsZUFBZSxDQUFDLENBQUM7UUFJbkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxLQUFLLENBQUMs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LENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0F6RVUscUJBQXFCO2tHQUFyQixxQkFBcUIsME5DZmxDLHVvRkF1RUE7OzJGRHhEYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO3dEQUtwQix1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBkZWZlciwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBEZWZhdWx0SWNvbkRlZmluaXRpb24gfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvbW9kZWwnO1xuaW1wb3J0IHsgU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucyc7XG5cbmNvbnN0IGFsbEljb25DYXRlZ29yeSA9IGdldHRleHQoJ0FsbGBpY29ucy1jYXRlZ29yeWAnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWljb24tc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW11cbn0pXG5leHBvcnQgY2xhc3MgSWNvblNlbGVjdG9yQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaWNvbkNhdGVnb3JpZXNUb0V4Y2x1ZGU6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNob3dJY29uQ2xhc3MgPSB0cnVlO1xuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQElucHV0KCkgc2VsZWN0ZWRJY29uOiBTdXBwb3J0ZWRJY29uc1N1Z2dlc3Rpb25zO1xuXG4gIGljb25zJDogT2JzZXJ2YWJsZTxEZWZhdWx0SWNvbkRlZmluaXRpb25bXT47XG4gIGZpbHRlcmVkSWNvbnMkOiBPYnNlcnZhYmxlPERlZmF1bHRJY29uRGVmaW5pdGlvbltdPjtcbiAgc2VhcmNoVGVybSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgc2VsZWN0ZWRJY29uQ2F0ZWdvcnkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KGFsbEljb25DYXRlZ29yeSk7XG4gIGF2YWlsYWJsZUljb25DYXRlZ29yaWVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pY29ucyQgPSBkZWZlcigoKSA9PiBmcm9tKHRoaXMubG9hZEljb25EZWZpbml0aW9ucygpKSkucGlwZShcbiAgICAgIG1hcChpY29ucyA9PiBpY29ucy5maWx0ZXIodG1wID0+ICF0aGlzLmljb25DYXRlZ29yaWVzVG9FeGNsdWRlLmluY2x1ZGVzKHRtcC5sYWJlbCkpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSlcbiAgICApO1xuICAgIHRoaXMuZmlsdGVyZWRJY29ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuaWNvbnMkLFxuICAgICAgdGhpcy5zZWFyY2hUZXJtJC5waXBlKGRlYm91bmNlVGltZSg1MDApLCBzdGFydFdpdGgodGhpcy5zZWFyY2hUZXJtJC52YWx1ZSkpLFxuICAgICAgdGhpcy5zZWxlY3RlZEljb25DYXRlZ29yeSRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbaWNvbnMsIHNlYXJjaFRlcm0sIGNhdGVnb3J5XSkgPT5cbiAgICAgICAgdGhpcy5maWx0ZXJJY29uc0J5Q2F0ZWdvcnlBbmRTZWFyY2hUZXJtKGljb25zLCBjYXRlZ29yeSwgc2VhcmNoVGVybSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuYXZhaWxhYmxlSWNvbkNhdGVnb3JpZXMkID0gdGhpcy5pY29ucyQucGlwZShcbiAgICAgIG1hcChpY29ucyA9PiBbYWxsSWNvbkNhdGVnb3J5LCAuLi5pY29ucy5tYXAodG1wID0+IHRtcC5sYWJlbCldKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBsb2FkSWNvbkRlZmluaXRpb25zKCk6IFByb21pc2U8RGVmYXVsdEljb25EZWZpbml0aW9uW10+IHtcbiAgICBjb25zdCB7IGFsbEljb25zIH0gPSBhd2FpdCBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucycpO1xuICAgIHJldHVybiBhbGxJY29ucztcbiAgfVxuXG4gIGZpbHRlckljb25zQnlDYXRlZ29yeUFuZFNlYXJjaFRlcm0oXG4gICAgaWNvbkNhdGVnb3JpZXM6IERlZmF1bHRJY29uRGVmaW5pdGlvbltdLFxuICAgIHNlbGVjdGVkQ2F0ZWdvcnk6IHN0cmluZyxcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmdcbiAgKTogRGVmYXVsdEljb25EZWZpbml0aW9uW10ge1xuICAgIGlmIChzZWxlY3RlZENhdGVnb3J5ICE9PSBhbGxJY29uQ2F0ZWdvcnkpIHtcbiAgICAgIGljb25DYXRlZ29yaWVzID0gaWNvbkNhdGVnb3JpZXMuZmlsdGVyKGNhdGVnb3J5ID0+IGNhdGVnb3J5LmxhYmVsID09PSBzZWxlY3RlZENhdGVnb3J5KTtcbiAgICB9XG5cbiAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgY29uc3QgbG93ZXJDYXNlU2VhcmNoVGVybSA9IHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IG1hdGNoaW5nQ2F0ZWdvcmllcyA9IG5ldyBBcnJheTxEZWZhdWx0SWNvbkRlZmluaXRpb24+KCk7XG4gICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGljb25DYXRlZ29yaWVzKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nSWNvbnMgPSBjYXRlZ29yeS5pY29ucy5maWx0ZXIoaWNvbkNsYXNzZXMgPT5cbiAgICAgICAgICBpY29uQ2xhc3Nlcy5zb21lKGljb25DbGFzcyA9PiBpY29uQ2xhc3MuaW5jbHVkZXMobG93ZXJDYXNlU2VhcmNoVGVybSkpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChtYXRjaGluZ0ljb25zLmxlbmd0aCkge1xuICAgICAgICAgIG1hdGNoaW5nQ2F0ZWdvcmllcy5wdXNoKHsgLi4uY2xvbmUoY2F0ZWdvcnkpLCBpY29uczogbWF0Y2hpbmdJY29ucyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoaW5nQ2F0ZWdvcmllcztcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbkNhdGVnb3JpZXM7XG4gIH1cblxuICBvblNlYXJjaENoYW5nZShzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoc2VhcmNoVGVybSk7XG4gIH1cblxuICBvbkNhdGVnb3J5RmlsdGVyQ2hhbmdlZChjYXRlZ29yeUNoYW5nZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEljb25DYXRlZ29yeSQubmV4dChjYXRlZ29yeUNoYW5nZSk7XG4gIH1cblxuICBvbkljb25DbGlja2VkKGljb246IFJlYWRvbmx5QXJyYXk8c3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJY29uID0gaWNvblswXTtcbiAgICB0aGlzLm9uU2VsZWN0LmVtaXQoaWNvblswXSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwLWwtMjQgcC1yLTI0IHAtdC04IHAtYi04IHNlcGFyYXRvci1ib3R0b21cIj5cbiAgPGRpdiBjbGFzcz1cInJvdyBkLWZsZXgtc21cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgbS1iLThcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1zZWFyY2ggaW5wdXQtZ3JvdXBcIiBzdHlsZT1cIndpZHRoOiBhdXRvXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBpZD1cImZpbHRlci1pY29uc1wiXG4gICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoVGVybSQgfCBhc3luY1wiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnVHlwZSB0byBmaWx0ZXIgaWNvbnPigKYnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgLz5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzZWFyY2hJY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJzZWFyY2hcIj48L2k+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb24gcG9pbnRlclwiXG4gICAgICAgICAgKm5nSWY9XCJzZWFyY2hUZXJtJCB8IGFzeW5jOyBlbHNlIHNlYXJjaEljb25cIlxuICAgICAgICAgIChjbGljayk9XCJvblNlYXJjaENoYW5nZSgnJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cInRpbWVzXCI+PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgbS1iLTggdGV4dC1yaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggYS1pLWNlbnRlciB0ZXh0LWxlZnRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTAgbS1yLTggZmxleC1uby1zaHJpbmtcIiB0cmFuc2xhdGU+RmlsdGVyIGJ5IHR5cGU8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgaWQ9XCJleGFtcGxlU2VsZWN0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkSWNvbkNhdGVnb3J5JCB8IGFzeW5jXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2F0ZWdvcnlGaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGF2YWlsYWJsZUljb25DYXRlZ29yaWVzJCB8IGFzeW5jXCIgW25nVmFsdWVdPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAge3sgY2F0ZWdvcnkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBzdHlsZT1cImhlaWdodDogY2FsYygxMDB2aCAtIDI5M3B4KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkdG0taWNvbi1ncmlkXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpY29uRGVmaW5pdGlvbiBvZiBmaWx0ZXJlZEljb25zJCB8IGFzeW5jXCIgY2xhc3M9XCJkLWNvbnRlbnRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9jayBjZW50ZXIgZ3JpZF9fY29sLS1mdWxsc3BhblwiPlxuICAgICAgICAgIHt7IGljb25EZWZpbml0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWNvbnRlbnRzXCIgKm5nRm9yPVwibGV0IGljb24gb2YgaWNvbkRlZmluaXRpb24uaWNvbnNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImR0bS1pY29uLWdyaWRfX2l0ZW1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZHRtLWljb24tZ3JpZF9faXRlbS0tc2VsZWN0ZWQnOiBzZWxlY3RlZEljb24gJiYgaWNvblswXSA9PT0gc2VsZWN0ZWRJY29uXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkljb25DbGlja2VkKGljb24pXCIgY2xhc3M9XCJkdG0taWNvbi1ncmlkX19idG5cIiBbdGl0bGVdPVwiaWNvblswXSB8IGljb25OYW1lXCI+XG4gICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cImljb25bMF1cIiBjbGFzcz1cImQtYmxvY2sgaWNvbi00MFwiPjwvaT5cbiAgICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwic2hvd0ljb25DbGFzc1wiIGNsYXNzPVwidGV4dC1icmVhay13b3JkXCI+e3sgaWNvblswXSB8IGljb25OYW1lIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -44,4 +44,4 @@ export const allIcons = [
44
44
  userInterfaceIconCategory,
45
45
  weatherIconCategory
46
46
  ];
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9pY29uLXNlbGVjdG9yL2ljb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXRGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsNkJBQTZCO0lBQzdCLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsb0JBQW9CO0lBQ3BCLHVCQUF1QjtJQUN2QixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6QixtQkFBbUI7Q0FDYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdEljb25EZWZpbml0aW9uIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL21vZGVsJztcbmltcG9ydCB7IGFycm93SWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2Fycm93cyc7XG5pbXBvcnQgeyBjaXR5SWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2NpdHknO1xuaW1wb3J0IHsgZGF0YUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9kYXRhJztcbmltcG9ydCB7IGRhdGVBbmRUaW1lSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2RhdGVBbmRUaW1lJztcbmltcG9ydCB7IGRldmljZXNBbmRTZW5zb3JzSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2RldmljZXNBbmRTZW5zb3JzJztcbmltcG9ydCB7IGVjb21tZXJjZUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9lY29tbWVyY2UnO1xuaW1wb3J0IHsgZWRpdGluZ0ljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9lZGl0aW5nJztcbmltcG9ydCB7IGZpbGVzQW5kRm9sZGVyc0ljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9maWxlc0FuZEZvbGRlcnMnO1xuaW1wb3J0IHsgZmluYW5jZUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9maW5hbmNlJztcbmltcG9ydCB7IGhhbmRzSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2hhbmRzJztcbmltcG9ydCB7IGxvY2F0aW9uSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2xvY2F0aW9uJztcbmltcG9ydCB7IG1lc3NhZ2luZ0ljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9tZXNzYWdpbmcnO1xuaW1wb3J0IHsgbXVsdGltZWRpYUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9tdWx0aW1lZGlhJztcbmltcG9ydCB7IG5ldHdvcmtJY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvbmV0d29yayc7XG5pbXBvcnQgeyBvZmZpY2VJY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvb2ZmaWNlJztcbmltcG9ydCB7IHBlb3BsZUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9wZW9wbGUnO1xuaW1wb3J0IHsgcGxhdGZvcm1JY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvcGxhdGZvcm0nO1xuaW1wb3J0IHsgcHJvZ3JhbW1pbmdJY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvcHJvZ3JhbW1pbmcnO1xuaW1wb3J0IHsgc2VjdXJpdHlJY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvc2VjdXJpdHknO1xuaW1wb3J0IHsgdHJhbnNwb3J0SWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL3RyYW5zcG9ydCc7XG5pbXBvcnQgeyB1c2VySW50ZXJmYWNlSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL3VzZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2VhdGhlckljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy93ZWF0aGVyJztcblxuZXhwb3J0IGNvbnN0IGFsbEljb25zID0gW1xuICBhcnJvd0ljb25DYXRlZ29yeSxcbiAgY2l0eUljb25DYXRlZ29yeSxcbiAgZGF0YUljb25DYXRlZ29yeSxcbiAgZGF0ZUFuZFRpbWVJY29uQ2F0ZWdvcnksXG4gIGRldmljZXNBbmRTZW5zb3JzSWNvbkNhdGVnb3J5LFxuICBlY29tbWVyY2VJY29uQ2F0ZWdvcnksXG4gIGVkaXRpbmdJY29uQ2F0ZWdvcnksXG4gIGZpbGVzQW5kRm9sZGVyc0ljb25DYXRlZ29yeSxcbiAgZmluYW5jZUljb25DYXRlZ29yeSxcbiAgaGFuZHNJY29uQ2F0ZWdvcnksXG4gIGxvY2F0aW9uSWNvbkNhdGVnb3J5LFxuICBtZXNzYWdpbmdJY29uQ2F0ZWdvcnksXG4gIG11bHRpbWVkaWFJY29uQ2F0ZWdvcnksXG4gIG5ldHdvcmtJY29uQ2F0ZWdvcnksXG4gIG9mZmljZUljb25DYXRlZ29yeSxcbiAgcGVvcGxlSWNvbkNhdGVnb3J5LFxuICBwbGF0Zm9ybUljb25DYXRlZ29yeSxcbiAgcHJvZ3JhbW1pbmdJY29uQ2F0ZWdvcnksXG4gIHNlY3VyaXR5SWNvbkNhdGVnb3J5LFxuICB0cmFuc3BvcnRJY29uQ2F0ZWdvcnksXG4gIHVzZXJJbnRlcmZhY2VJY29uQ2F0ZWdvcnksXG4gIHdlYXRoZXJJY29uQ2F0ZWdvcnlcbl0gc2F0aXNmaWVzIERlZmF1bHRJY29uRGVmaW5pdGlvbltdO1xuXG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRJY29ucyA9ICh0eXBlb2YgYWxsSWNvbnMpW251bWJlcl1bJ2ljb25zJ11bbnVtYmVyXVtudW1iZXJdO1xuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9pY29uLXNlbGVjdG9yL2ljb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXRGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsNkJBQTZCO0lBQzdCLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsb0JBQW9CO0lBQ3BCLHVCQUF1QjtJQUN2QixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6QixtQkFBbUI7Q0FDYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdEljb25EZWZpbml0aW9uIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL21vZGVsJztcbmltcG9ydCB7IGFycm93SWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2Fycm93cyc7XG5pbXBvcnQgeyBjaXR5SWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2NpdHknO1xuaW1wb3J0IHsgZGF0YUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9kYXRhJztcbmltcG9ydCB7IGRhdGVBbmRUaW1lSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2RhdGVBbmRUaW1lJztcbmltcG9ydCB7IGRldmljZXNBbmRTZW5zb3JzSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2RldmljZXNBbmRTZW5zb3JzJztcbmltcG9ydCB7IGVjb21tZXJjZUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9lY29tbWVyY2UnO1xuaW1wb3J0IHsgZWRpdGluZ0ljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9lZGl0aW5nJztcbmltcG9ydCB7IGZpbGVzQW5kRm9sZGVyc0ljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9maWxlc0FuZEZvbGRlcnMnO1xuaW1wb3J0IHsgZmluYW5jZUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9maW5hbmNlJztcbmltcG9ydCB7IGhhbmRzSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2hhbmRzJztcbmltcG9ydCB7IGxvY2F0aW9uSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL2xvY2F0aW9uJztcbmltcG9ydCB7IG1lc3NhZ2luZ0ljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9tZXNzYWdpbmcnO1xuaW1wb3J0IHsgbXVsdGltZWRpYUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9tdWx0aW1lZGlhJztcbmltcG9ydCB7IG5ldHdvcmtJY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvbmV0d29yayc7XG5pbXBvcnQgeyBvZmZpY2VJY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvb2ZmaWNlJztcbmltcG9ydCB7IHBlb3BsZUljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy9wZW9wbGUnO1xuaW1wb3J0IHsgcGxhdGZvcm1JY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvcGxhdGZvcm0nO1xuaW1wb3J0IHsgcHJvZ3JhbW1pbmdJY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvcHJvZ3JhbW1pbmcnO1xuaW1wb3J0IHsgc2VjdXJpdHlJY29uQ2F0ZWdvcnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMvc2VjdXJpdHknO1xuaW1wb3J0IHsgdHJhbnNwb3J0SWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL3RyYW5zcG9ydCc7XG5pbXBvcnQgeyB1c2VySW50ZXJmYWNlSWNvbkNhdGVnb3J5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zL3VzZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2VhdGhlckljb25DYXRlZ29yeSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucy93ZWF0aGVyJztcblxuZXhwb3J0IGNvbnN0IGFsbEljb25zID0gW1xuICBhcnJvd0ljb25DYXRlZ29yeSxcbiAgY2l0eUljb25DYXRlZ29yeSxcbiAgZGF0YUljb25DYXRlZ29yeSxcbiAgZGF0ZUFuZFRpbWVJY29uQ2F0ZWdvcnksXG4gIGRldmljZXNBbmRTZW5zb3JzSWNvbkNhdGVnb3J5LFxuICBlY29tbWVyY2VJY29uQ2F0ZWdvcnksXG4gIGVkaXRpbmdJY29uQ2F0ZWdvcnksXG4gIGZpbGVzQW5kRm9sZGVyc0ljb25DYXRlZ29yeSxcbiAgZmluYW5jZUljb25DYXRlZ29yeSxcbiAgaGFuZHNJY29uQ2F0ZWdvcnksXG4gIGxvY2F0aW9uSWNvbkNhdGVnb3J5LFxuICBtZXNzYWdpbmdJY29uQ2F0ZWdvcnksXG4gIG11bHRpbWVkaWFJY29uQ2F0ZWdvcnksXG4gIG5ldHdvcmtJY29uQ2F0ZWdvcnksXG4gIG9mZmljZUljb25DYXRlZ29yeSxcbiAgcGVvcGxlSWNvbkNhdGVnb3J5LFxuICBwbGF0Zm9ybUljb25DYXRlZ29yeSxcbiAgcHJvZ3JhbW1pbmdJY29uQ2F0ZWdvcnksXG4gIHNlY3VyaXR5SWNvbkNhdGVnb3J5LFxuICB0cmFuc3BvcnRJY29uQ2F0ZWdvcnksXG4gIHVzZXJJbnRlcmZhY2VJY29uQ2F0ZWdvcnksXG4gIHdlYXRoZXJJY29uQ2F0ZWdvcnlcbl0gc2F0aXNmaWVzIERlZmF1bHRJY29uRGVmaW5pdGlvbltdO1xuXG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRJY29ucyA9ICh0eXBlb2YgYWxsSWNvbnMpW251bWJlcl1bJ2ljb25zJ11bbnVtYmVyXVtudW1iZXJdO1xuXG4vLyB0aGUgYChzdHJpbmcgJiBOb25OdWxsYWJsZTx1bmtub3duPilgIGFsbG93cyB0byBzdGlsbCB1c2UgYW55IHN0cmluZyBhcyBpY29uIG5hbWUgYnV0IHdlIHN0aWxsIGdldCBhdXRvLWNvbXBsZXRpb24gZm9yIHRoZSBzdXBwb3J0ZWQgaWNvbnNcbmV4cG9ydCB0eXBlIFN1cHBvcnRlZEljb25zU3VnZ2VzdGlvbnMgPSBTdXBwb3J0ZWRJY29ucyB8IChzdHJpbmcgJiBOb25OdWxsYWJsZTx1bmtub3duPik7XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLW9wdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvc2hhcmVkL3N0YXR1cy1vcHRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdGlvbkJ1bGtHZW5lcmFsU3RhdHVzLCBPcGVyYXRpb25TdGF0dXMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0aW9uU3RhdHVzT3B0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgc3RhdHVzPzogT3BlcmF0aW9uU3RhdHVzO1xuICBnZW5lcmFsU3RhdHVzZXM/OiBPcGVyYXRpb25CdWxrR2VuZXJhbFN0YXR1c1tdO1xuICBpY29uPzogc3RyaW5nO1xuICBzdHlsZUNsYXNzPzogc3RyaW5nO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLW9wdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvc2hhcmVkL3N0YXR1cy1vcHRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdGlvbkJ1bGtHZW5lcmFsU3RhdHVzLCBPcGVyYXRpb25TdGF0dXMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRJY29uc1N1Z2dlc3Rpb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRpb25TdGF0dXNPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICBzdGF0dXM/OiBPcGVyYXRpb25TdGF0dXM7XG4gIGdlbmVyYWxTdGF0dXNlcz86IE9wZXJhdGlvbkJ1bGtHZW5lcmFsU3RhdHVzW107XG4gIGljb24/OiBTdXBwb3J0ZWRJY29uc1N1Z2dlc3Rpb25zO1xuICBzdHlsZUNsYXNzPzogc3RyaW5nO1xufVxuIl19
@@ -53,10 +53,10 @@ export class Lwm2mConfigurationComponent {
53
53
  return `/device/${deviceId}/lwm2m-configuration/${endpoint}`;
54
54
  }
55
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Lwm2mConfigurationComponent, deps: [{ token: i1.Lwm2mConfigurationService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: Lwm2mConfigurationComponent, isStandalone: true, selector: "c8y-lwm2m-configuration", ngImport: i0, template: "<div class=\"card content-fullpage d-col\">\n <div class=\"card-header p-0\">\n <c8y-ui-tabs\n class=\"card-has-tabs card-tabs\"\n [tabs]=\"tabs\"\n [orientation]=\"'horizontal'\"\n ></c8y-ui-tabs>\n </div>\n <div class=\"inner-scroll bg-level-0 flex-grow\">\n <form class=\"card-block--formly fit-h\">\n <router-outlet (activate)=\"onActivate($event)\"></router-outlet>\n </form>\n </div>\n <div\n class=\"card-footer separator sticky-bottom\"\n *ngIf=\"componentInstance?.fields?.length > 0\"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"componentInstance.cancel()\"\n [disabled]=\"!componentInstance.form.dirty\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"componentInstance.form.invalid || !componentInstance.form.dirty\"\n (click)=\"componentInstance.save()\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "hasHeader"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: Lwm2mUIThemeModule }, { kind: "ngmodule", type: CdkTreeModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: Lwm2mConfigurationComponent, isStandalone: true, selector: "c8y-lwm2m-configuration", ngImport: i0, template: "<div class=\"card content-fullpage d-col\">\n <div class=\"card-header p-0\">\n <c8y-ui-tabs\n class=\"card-has-tabs card-tabs\"\n [tabs]=\"tabs\"\n [orientation]=\"'horizontal'\"\n ></c8y-ui-tabs>\n </div>\n <div class=\"inner-scroll bg-level-0 flex-grow\">\n <form class=\"card-block--formly fit-h\">\n <router-outlet (activate)=\"onActivate($event)\"></router-outlet>\n </form>\n </div>\n <div\n class=\"card-footer separator sticky-bottom\"\n *ngIf=\"componentInstance?.fields?.length > 0\"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"componentInstance.cancel()\"\n [disabled]=\"!componentInstance.form.dirty\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"componentInstance.form.invalid || !componentInstance.form.dirty\"\n (click)=\"componentInstance.save()\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "openFirstTab", "hasHeader"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: Lwm2mUIThemeModule }, { kind: "ngmodule", type: CdkTreeModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
57
57
  }
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Lwm2mConfigurationComponent, decorators: [{
59
59
  type: Component,
60
60
  args: [{ selector: 'c8y-lwm2m-configuration', imports: [CoreModule, Lwm2mUIThemeModule, CdkTreeModule, RouterModule], standalone: true, template: "<div class=\"card content-fullpage d-col\">\n <div class=\"card-header p-0\">\n <c8y-ui-tabs\n class=\"card-has-tabs card-tabs\"\n [tabs]=\"tabs\"\n [orientation]=\"'horizontal'\"\n ></c8y-ui-tabs>\n </div>\n <div class=\"inner-scroll bg-level-0 flex-grow\">\n <form class=\"card-block--formly fit-h\">\n <router-outlet (activate)=\"onActivate($event)\"></router-outlet>\n </form>\n </div>\n <div\n class=\"card-footer separator sticky-bottom\"\n *ngIf=\"componentInstance?.fields?.length > 0\"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"componentInstance.cancel()\"\n [disabled]=\"!componentInstance.form.dirty\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"componentInstance.form.invalid || !componentInstance.form.dirty\"\n (click)=\"componentInstance.save()\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n" }]
61
61
  }], ctorParameters: () => [{ type: i1.Lwm2mConfigurationService }, { type: i2.ActivatedRoute }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHdtMm0tY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb24vbHdtMm0tY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb24vbHdtMm0tY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQVksTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFPLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBVS9ELE1BQU0sT0FBTywyQkFBMkI7SUFJdEMsWUFDVSxrQkFBMEQsRUFDMUQsS0FBcUI7UUFEckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QztRQUMxRCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUU3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRTVFLElBQUksQ0FBQyxJQUFJLEdBQUc7WUFDVjtnQkFDRSxJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO2dCQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO2FBQ2pEO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO2dCQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO2FBQy9DO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7YUFDM0M7WUFDRDtnQkFDRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7YUFDNUM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsT0FBTyxDQUFDLGtDQUFrQyxDQUFDO2dCQUNsRCxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO2FBQzFDO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSztRQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVPLE9BQU8sQ0FBQyxRQUF1QjtRQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQzdDLE9BQU8sV0FBVyxRQUFRLHdCQUF3QixRQUFRLEVBQUUsQ0FBQztJQUMvRCxDQUFDOzhHQWhEVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixtRkNoQnhDLHNtQ0FxQ0EsMkNEeEJZLFVBQVUsaXpCQUFFLGtCQUFrQiw4QkFBRSxhQUFhLDhCQUFFLFlBQVk7OzJGQUcxRCwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UseUJBQXlCLFdBRTFCLENBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsY0FDMUQsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTFdNMk1FbmRwb2ludCwgU2V0dGluZ3MgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL21vZGVsJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTHdtMm1Db25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vc2VydmljZXMnO1xuaW1wb3J0IHsgTHdtMm1VSVRoZW1lTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9mb3JtbHknO1xuaW1wb3J0IHsgQ2RrVHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIFRhYiwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBMd20ybUZvcm1XcmFwcGVyQmFzZSB9IGZyb20gJy4vdHlwZWQtZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbHdtMm0tY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sd20ybS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIEx3bTJtVUlUaGVtZU1vZHVsZSwgQ2RrVHJlZU1vZHVsZSwgUm91dGVyTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMd20ybUNvbmZpZ3VyYXRpb25Db21wb25lbnQge1xuICB0YWJzOiBUYWJbXTtcbiAgY29tcG9uZW50SW5zdGFuY2U6IEx3bTJtRm9ybVdyYXBwZXJCYXNlPFNldHRpbmdzPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGx3bTJtQ29uZmlnU2VydmljZTogTHdtMm1Db25maWd1cmF0aW9uU2VydmljZTxJSWRlbnRpZmllZD4sXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy5sd20ybUNvbmZpZ1NlcnZpY2UuZGV2aWNlSWQgPSB0aGlzLnJvdXRlPy5zbmFwc2hvdD8ucGFyZW50Py5wYXJhbXM/LmlkO1xuXG4gICAgdGhpcy50YWJzID0gW1xuICAgICAge1xuICAgICAgICBpY29uOiAnY29nJyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RldmljZSBzZXR0aW5ncycpLFxuICAgICAgICBwYXRoOiB0aGlzLmdldFBhdGgoTFdNMk1FbmRwb2ludC5kZXZpY2VTZXR0aW5ncylcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246ICdjb25uZWN0ZWQnLFxuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ29ubmVjdGl2aXR5JyksXG4gICAgICAgIHBhdGg6IHRoaXMuZ2V0UGF0aChMV00yTUVuZHBvaW50LmNvbm5lY3Rpdml0eSlcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246ICdjOHktZmlybXdhcmUnLFxuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRmlybXdhcmUgdXBkYXRlJyksXG4gICAgICAgIHBhdGg6IHRoaXMuZ2V0UGF0aChMV00yTUVuZHBvaW50LmZpcm13YXJlKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogJ3Jvb3Qtc2VydmVyJyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jvb3RzdHJhcCcpLFxuICAgICAgICBwYXRoOiB0aGlzLmdldFBhdGgoTFdNMk1FbmRwb2ludC5ib290c3RyYXApXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiAnc3RhY2snLFxuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU2VydmVycyB3cml0dGVuIGR1cmluZyBib290c3RyYXAnKSxcbiAgICAgICAgcGF0aDogdGhpcy5nZXRQYXRoKExXTTJNRW5kcG9pbnQuc2VydmVycylcbiAgICAgIH1cbiAgICBdO1xuXG4gICAgdGhpcy5sd20ybUNvbmZpZ1NlcnZpY2UuZ2V0U2VjdXJpdHlNb2RlcygpO1xuICB9XG5cbiAgb25BY3RpdmF0ZShldmVudCkge1xuICAgIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSBldmVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF0aChlbmRwb2ludDogTFdNMk1FbmRwb2ludCkge1xuICAgIGNvbnN0IHsgZGV2aWNlSWQgfSA9IHRoaXMubHdtMm1Db25maWdTZXJ2aWNlO1xuICAgIHJldHVybiBgL2RldmljZS8ke2RldmljZUlkfS9sd20ybS1jb25maWd1cmF0aW9uLyR7ZW5kcG9pbnR9YDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZSBkLWNvbFwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0wXCI+XG4gICAgPGM4eS11aS10YWJzXG4gICAgICBjbGFzcz1cImNhcmQtaGFzLXRhYnMgY2FyZC10YWJzXCJcbiAgICAgIFt0YWJzXT1cInRhYnNcIlxuICAgICAgW29yaWVudGF0aW9uXT1cIidob3Jpem9udGFsJ1wiXG4gICAgPjwvYzh5LXVpLXRhYnM+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTAgZmxleC1ncm93XCI+XG4gICAgPGZvcm0gY2xhc3M9XCJjYXJkLWJsb2NrLS1mb3JtbHkgZml0LWhcIj5cbiAgICAgIDxyb3V0ZXItb3V0bGV0IChhY3RpdmF0ZSk9XCJvbkFjdGl2YXRlKCRldmVudClcIj48L3JvdXRlci1vdXRsZXQ+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yIHN0aWNreS1ib3R0b21cIlxuICAgICpuZ0lmPVwiY29tcG9uZW50SW5zdGFuY2U/LmZpZWxkcz8ubGVuZ3RoID4gMFwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImNvbXBvbmVudEluc3RhbmNlLmNhbmNlbCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY29tcG9uZW50SW5zdGFuY2UuZm9ybS5kaXJ0eVwiXG4gICAgPlxuICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJjb21wb25lbnRJbnN0YW5jZS5mb3JtLmludmFsaWQgfHwgIWNvbXBvbmVudEluc3RhbmNlLmZvcm0uZGlydHlcIlxuICAgICAgKGNsaWNrKT1cImNvbXBvbmVudEluc3RhbmNlLnNhdmUoKVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHdtMm0tY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb24vbHdtMm0tY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb24vbHdtMm0tY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQVksTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFPLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBVS9ELE1BQU0sT0FBTywyQkFBMkI7SUFJdEMsWUFDVSxrQkFBMEQsRUFDMUQsS0FBcUI7UUFEckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QztRQUMxRCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUU3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRTVFLElBQUksQ0FBQyxJQUFJLEdBQUc7WUFDVjtnQkFDRSxJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO2dCQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO2FBQ2pEO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO2dCQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO2FBQy9DO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7YUFDM0M7WUFDRDtnQkFDRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7YUFDNUM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsT0FBTyxDQUFDLGtDQUFrQyxDQUFDO2dCQUNsRCxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO2FBQzFDO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSztRQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVPLE9BQU8sQ0FBQyxRQUF1QjtRQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQzdDLE9BQU8sV0FBVyxRQUFRLHdCQUF3QixRQUFRLEVBQUUsQ0FBQztJQUMvRCxDQUFDOzhHQWhEVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixtRkNoQnhDLHNtQ0FxQ0EsMkNEeEJZLFVBQVUsaTBCQUFFLGtCQUFrQiw4QkFBRSxhQUFhLDhCQUFFLFlBQVk7OzJGQUcxRCwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UseUJBQXlCLFdBRTFCLENBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsY0FDMUQsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTFdNMk1FbmRwb2ludCwgU2V0dGluZ3MgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL21vZGVsJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTHdtMm1Db25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vc2VydmljZXMnO1xuaW1wb3J0IHsgTHdtMm1VSVRoZW1lTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9mb3JtbHknO1xuaW1wb3J0IHsgQ2RrVHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIFRhYiwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBMd20ybUZvcm1XcmFwcGVyQmFzZSB9IGZyb20gJy4vdHlwZWQtZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbHdtMm0tY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sd20ybS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIEx3bTJtVUlUaGVtZU1vZHVsZSwgQ2RrVHJlZU1vZHVsZSwgUm91dGVyTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMd20ybUNvbmZpZ3VyYXRpb25Db21wb25lbnQge1xuICB0YWJzOiBUYWJbXTtcbiAgY29tcG9uZW50SW5zdGFuY2U6IEx3bTJtRm9ybVdyYXBwZXJCYXNlPFNldHRpbmdzPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGx3bTJtQ29uZmlnU2VydmljZTogTHdtMm1Db25maWd1cmF0aW9uU2VydmljZTxJSWRlbnRpZmllZD4sXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy5sd20ybUNvbmZpZ1NlcnZpY2UuZGV2aWNlSWQgPSB0aGlzLnJvdXRlPy5zbmFwc2hvdD8ucGFyZW50Py5wYXJhbXM/LmlkO1xuXG4gICAgdGhpcy50YWJzID0gW1xuICAgICAge1xuICAgICAgICBpY29uOiAnY29nJyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RldmljZSBzZXR0aW5ncycpLFxuICAgICAgICBwYXRoOiB0aGlzLmdldFBhdGgoTFdNMk1FbmRwb2ludC5kZXZpY2VTZXR0aW5ncylcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246ICdjb25uZWN0ZWQnLFxuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ29ubmVjdGl2aXR5JyksXG4gICAgICAgIHBhdGg6IHRoaXMuZ2V0UGF0aChMV00yTUVuZHBvaW50LmNvbm5lY3Rpdml0eSlcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246ICdjOHktZmlybXdhcmUnLFxuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRmlybXdhcmUgdXBkYXRlJyksXG4gICAgICAgIHBhdGg6IHRoaXMuZ2V0UGF0aChMV00yTUVuZHBvaW50LmZpcm13YXJlKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogJ3Jvb3Qtc2VydmVyJyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jvb3RzdHJhcCcpLFxuICAgICAgICBwYXRoOiB0aGlzLmdldFBhdGgoTFdNMk1FbmRwb2ludC5ib290c3RyYXApXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiAnc3RhY2snLFxuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU2VydmVycyB3cml0dGVuIGR1cmluZyBib290c3RyYXAnKSxcbiAgICAgICAgcGF0aDogdGhpcy5nZXRQYXRoKExXTTJNRW5kcG9pbnQuc2VydmVycylcbiAgICAgIH1cbiAgICBdO1xuXG4gICAgdGhpcy5sd20ybUNvbmZpZ1NlcnZpY2UuZ2V0U2VjdXJpdHlNb2RlcygpO1xuICB9XG5cbiAgb25BY3RpdmF0ZShldmVudCkge1xuICAgIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSBldmVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF0aChlbmRwb2ludDogTFdNMk1FbmRwb2ludCkge1xuICAgIGNvbnN0IHsgZGV2aWNlSWQgfSA9IHRoaXMubHdtMm1Db25maWdTZXJ2aWNlO1xuICAgIHJldHVybiBgL2RldmljZS8ke2RldmljZUlkfS9sd20ybS1jb25maWd1cmF0aW9uLyR7ZW5kcG9pbnR9YDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZSBkLWNvbFwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcC0wXCI+XG4gICAgPGM4eS11aS10YWJzXG4gICAgICBjbGFzcz1cImNhcmQtaGFzLXRhYnMgY2FyZC10YWJzXCJcbiAgICAgIFt0YWJzXT1cInRhYnNcIlxuICAgICAgW29yaWVudGF0aW9uXT1cIidob3Jpem9udGFsJ1wiXG4gICAgPjwvYzh5LXVpLXRhYnM+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTAgZmxleC1ncm93XCI+XG4gICAgPGZvcm0gY2xhc3M9XCJjYXJkLWJsb2NrLS1mb3JtbHkgZml0LWhcIj5cbiAgICAgIDxyb3V0ZXItb3V0bGV0IChhY3RpdmF0ZSk9XCJvbkFjdGl2YXRlKCRldmVudClcIj48L3JvdXRlci1vdXRsZXQ+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yIHN0aWNreS1ib3R0b21cIlxuICAgICpuZ0lmPVwiY29tcG9uZW50SW5zdGFuY2U/LmZpZWxkcz8ubGVuZ3RoID4gMFwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImNvbXBvbmVudEluc3RhbmNlLmNhbmNlbCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY29tcG9uZW50SW5zdGFuY2UuZm9ybS5kaXJ0eVwiXG4gICAgPlxuICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJjb21wb25lbnRJbnN0YW5jZS5mb3JtLmludmFsaWQgfHwgIWNvbXBvbmVudEluc3RhbmNlLmZvcm0uZGlydHlcIlxuICAgICAgKGNsaWNrKT1cImNvbXBvbmVudEluc3RhbmNlLnNhdmUoKVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -140,7 +140,7 @@ export class OpcuaAutoApplySettingsComponent {
140
140
  this.updateConstraints(this.selectedItems);
141
141
  }
142
142
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OpcuaAutoApplySettingsComponent, deps: [{ token: i1.InventoryService }], target: i0.ɵɵFactoryTarget.Component }); }
143
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: OpcuaAutoApplySettingsComponent, selector: "opcua-auto-apply", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <p translate>\n Specifying auto-apply constraints allows you to limit the scope where the device protocols are\n applied, for example by specifying a set of possible servers or node IDs.\n </p>\n <p translate>\n If no constraints are set, device protocols are applied at any fitting location on the OPC UA\n server.\n </p>\n </div>\n\n <div class=\"col-md-6\">\n <ul class=\"list-group\" style=\"box-shadow: none;\">\n <!-- Limit device type to a set of servers -->\n <li class=\"list-group-item\">\n <label\n title=\"{{ 'Limit device protocol to a set of servers' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"\n constraints.matchesServerIds !== null && constraints.matchesServerIds.length > 0\n \"\n (change)=\"onChangeShowServerIds($event)\"\n />\n <span></span>\n <span class=\"m-l-8\">\n {{ 'Limit device protocol to a set of servers' | translate }}\n </span>\n </label>\n <div\n class=\"collapse\"\n [collapse]=\"\n (!showServerIds &&\n (constraints.matchesServerIds !== null && constraints.matchesServerIds.length < 1)) ||\n (!showServerIds && constraints.matchesServerIds === null)\n \"\n [isAnimated]=\"true\"\n >\n <c8y-form-group class=\"m-t-8 m-b-8\">\n <c8y-select-legacy\n [items]=\"opcuaServers\"\n [selected]=\"selectedItems\"\n [placeholder]=\"placeholderSelectServerIds\"\n (onChange)=\"serverIdsSelected($event)\"\n [updateItems]=\"updateSelectedItem\"\n >\n \n <c8y-li *ngIf=\"opcuaServers.length > sizeToShowFilter\" class=\"sticky-top\">\n <c8y-filter [icon]=\"'search'\" (onSearch)=\"filterItems($event)\"></c8y-filter>\n </c8y-li>\n <c8y-li *ngIf=\"filteredList && filteredList.length === 0\">\n <c8y-li-body> \n <div class=\"c8y-empty-state text-left\">\n <p>{{ 'No items to display.' | translate }}</p>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-li *ngFor=\"let item of filteredList\">\n <c8y-li-checkbox\n [selected]=\"isChecked(item)\"\n (onSelect)=\"onSelect($event, item)\"\n ></c8y-li-checkbox>\n <c8y-li-body>{{ item.name | translate }}<br>\n <span class=\"text-label-small m-r-4\" translate>ID</span> <small>{{ item.id }}</small>\n </c8y-li-body>\n </c8y-li>\n </c8y-select-legacy>\n </c8y-form-group>\n </div>\n </li>\n <!-- Limit device type scope in the address space -->\n <li class=\"list-group-item\">\n <label\n title=\"{{ 'Limit device protocol scope in the address space' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"\n constraints.browsePathMatchesRegex !== null &&\n constraints.browsePathMatchesRegex.length > 0\n \"\n (change)=\"onChangeShowBrowsePath($event)\"\n />\n <span></span>\n <span class=\"m-l-8\">\n {{ 'Limit device protocol scope in the address space' | translate }}\n </span>\n </label>\n <div\n class=\"collapse\"\n [isAnimated]=\"true\"\n [collapse]=\"\n (!showBrowsePath &&\n constraints.browsePathMatchesRegex !== null &&\n constraints.browsePathMatchesRegex.length < 1) ||\n (!showBrowsePath && constraints.browsePathMatchesRegex === null)\n \"\n >\n <c8y-form-group class=\"m-t-8 m-b-8\">\n <input\n name=\"browsePath\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} /objects/devices/.*\"\n [(ngModel)]=\"constraints.browsePathMatchesRegex\"\n ngDefaultControl\n />\n </c8y-form-group>\n </div>\n </li>\n <!-- Limit device type to servers with a certain fragment-->\n <li class=\"list-group-item\">\n <label\n title=\"{{ 'Limit device protocol to servers with a certain fragment' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"constraints.serverObjectHasFragment !== null && constraints.serverObjectHasFragment.length > 0\"\n (change)=\"onChangeShowServerFragment($event)\"\n />\n <span></span>\n <span class=\"m-l-8\">\n {{ 'Limit device protocol to servers with a certain fragment' | translate }}\n </span>\n </label>\n <div\n class=\"collapse\"\n [isAnimated]=\"true\"\n [collapse]=\"(!showServerFragment && constraints.serverObjectHasFragment !== null && constraints.serverObjectHasFragment.length < 1) || (!showServerFragment && constraints.serverObjectHasFragment === null)\"\n >\n <c8y-form-group class=\"m-t-8 m-b-8\">\n <input\n name=\"serverFragment\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_SomeServerMarker\"\n [(ngModel)]=\"constraints.serverObjectHasFragment\"\n ngDefaultControl\n />\n </c8y-form-group>\n </div>\n </li>\n <!-- Limit device type to a specific root node ID -->\n <li class=\"list-group-item\">\n <label\n title=\"{{ 'Limit device protocol to specific root nodes ID' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"constraints.matchesNodeIds !== null && constraints.matchesNodeIds.length > 0\"\n (change)=\"onChangeNodeId($event)\"\n />\n <span></span>\n <span class=\"m-l-8\">\n {{ 'Limit device protocol to specific root nodes ID' | translate }}\n </span>\n </label>\n <div\n class=\"collapse\"\n [isAnimated]=\"true\"\n [collapse]=\"(!showRootNodes && constraints.matchesNodeIds !== null && constraints.matchesNodeIds.length < 1) || ( !showRootNodes && constraints.matchesNodeIds === null)\"\n >\n <ul c8yInputGroupListContainer class=\"list-unstyled p-t-16\">\n <li\n class=\"m-b-8\"\n *ngFor=\"let item of constraints.matchesNodeIds; let i = index; trackBy: trackByFn\"\n >\n <c8y-input-group-list [index]=\"i\" (onAdd)=\"add()\" (onRemove)=\"remove($event)\">\n <c8y-form-group class=\"form-group--tooltip-validation\">\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} nodeId\"\n [(ngModel)]=\"constraints.matchesNodeIds[i]\"\n [required]=\"true\"\n />\n </c8y-form-group>\n </c8y-input-group-list>\n </li>\n </ul> \n </div>\n </li>\n </ul>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.SelectLegacyComponent, selector: "c8y-select-legacy", inputs: ["placeholder", "selectedLabel", "applyLabel", "items", "selected", "updateItems", "disableApplyOnNoSelection", "addDropdownContainerToBody"], outputs: ["onChange"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.InputGroupListComponent, selector: "c8y-input-group-list", inputs: ["plus", "minus", "index"], outputs: ["onRemove", "onAdd"] }, { kind: "directive", type: i2.InputGroupListContainerDirective, selector: "[c8yInputGroupListContainer]" }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.FilterInputComponent, selector: "c8y-filter", inputs: ["icon"], outputs: ["onSearch"] }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i2.ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "indeterminate", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "directive", type: i5.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
143
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: OpcuaAutoApplySettingsComponent, selector: "opcua-auto-apply", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <p translate>\n Specifying auto-apply constraints allows you to limit the scope where the device protocols are\n applied, for example by specifying a set of possible servers or node IDs.\n </p>\n <p translate>\n If no constraints are set, device protocols are applied at any fitting location on the OPC UA\n server.\n </p>\n </div>\n\n <div class=\"col-md-6\">\n <ul class=\"list-group\" style=\"box-shadow: none;\">\n <!-- Limit device type to a set of servers -->\n <li class=\"list-group-item\">\n <label\n title=\"{{ 'Limit device protocol to a set of servers' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"\n constraints.matchesServerIds !== null && constraints.matchesServerIds.length > 0\n \"\n (change)=\"onChangeShowServerIds($event)\"\n />\n <span></span>\n <span class=\"m-l-8\">\n {{ 'Limit device protocol to a set of servers' | translate }}\n </span>\n </label>\n <div\n class=\"collapse\"\n [collapse]=\"\n (!showServerIds &&\n (constraints.matchesServerIds !== null && constraints.matchesServerIds.length < 1)) ||\n (!showServerIds && constraints.matchesServerIds === null)\n \"\n [isAnimated]=\"true\"\n >\n <c8y-form-group class=\"m-t-8 m-b-8\">\n <c8y-select-legacy\n [items]=\"opcuaServers\"\n [selected]=\"selectedItems\"\n [placeholder]=\"placeholderSelectServerIds\"\n (onChange)=\"serverIdsSelected($event)\"\n [updateItems]=\"updateSelectedItem\"\n >\n \n <c8y-li *ngIf=\"opcuaServers.length > sizeToShowFilter\" class=\"sticky-top\">\n <c8y-filter [icon]=\"'search'\" (onSearch)=\"filterItems($event)\"></c8y-filter>\n </c8y-li>\n <c8y-li *ngIf=\"filteredList && filteredList.length === 0\">\n <c8y-li-body> \n <div class=\"c8y-empty-state text-left\">\n <p>{{ 'No items to display.' | translate }}</p>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-li *ngFor=\"let item of filteredList\">\n <c8y-li-checkbox\n [selected]=\"isChecked(item)\"\n (onSelect)=\"onSelect($event, item)\"\n ></c8y-li-checkbox>\n <c8y-li-body>{{ item.name | translate }}<br>\n <span class=\"text-label-small m-r-4\" translate>ID</span> <small>{{ item.id }}</small>\n </c8y-li-body>\n </c8y-li>\n </c8y-select-legacy>\n </c8y-form-group>\n </div>\n </li>\n <!-- Limit device type scope in the address space -->\n <li class=\"list-group-item\">\n <label\n title=\"{{ 'Limit device protocol scope in the address space' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"\n constraints.browsePathMatchesRegex !== null &&\n constraints.browsePathMatchesRegex.length > 0\n \"\n (change)=\"onChangeShowBrowsePath($event)\"\n />\n <span></span>\n <span class=\"m-l-8\">\n {{ 'Limit device protocol scope in the address space' | translate }}\n </span>\n </label>\n <div\n class=\"collapse\"\n [isAnimated]=\"true\"\n [collapse]=\"\n (!showBrowsePath &&\n constraints.browsePathMatchesRegex !== null &&\n constraints.browsePathMatchesRegex.length < 1) ||\n (!showBrowsePath && constraints.browsePathMatchesRegex === null)\n \"\n >\n <c8y-form-group class=\"m-t-8 m-b-8\">\n <input\n name=\"browsePath\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} /objects/devices/.*\"\n [(ngModel)]=\"constraints.browsePathMatchesRegex\"\n ngDefaultControl\n />\n </c8y-form-group>\n </div>\n </li>\n <!-- Limit device type to servers with a certain fragment-->\n <li class=\"list-group-item\">\n <label\n title=\"{{ 'Limit device protocol to servers with a certain fragment' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"constraints.serverObjectHasFragment !== null && constraints.serverObjectHasFragment.length > 0\"\n (change)=\"onChangeShowServerFragment($event)\"\n />\n <span></span>\n <span class=\"m-l-8\">\n {{ 'Limit device protocol to servers with a certain fragment' | translate }}\n </span>\n </label>\n <div\n class=\"collapse\"\n [isAnimated]=\"true\"\n [collapse]=\"(!showServerFragment && constraints.serverObjectHasFragment !== null && constraints.serverObjectHasFragment.length < 1) || (!showServerFragment && constraints.serverObjectHasFragment === null)\"\n >\n <c8y-form-group class=\"m-t-8 m-b-8\">\n <input\n name=\"serverFragment\"\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_SomeServerMarker\"\n [(ngModel)]=\"constraints.serverObjectHasFragment\"\n ngDefaultControl\n />\n </c8y-form-group>\n </div>\n </li>\n <!-- Limit device type to a specific root node ID -->\n <li class=\"list-group-item\">\n <label\n title=\"{{ 'Limit device protocol to specific root nodes ID' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"constraints.matchesNodeIds !== null && constraints.matchesNodeIds.length > 0\"\n (change)=\"onChangeNodeId($event)\"\n />\n <span></span>\n <span class=\"m-l-8\">\n {{ 'Limit device protocol to specific root nodes ID' | translate }}\n </span>\n </label>\n <div\n class=\"collapse\"\n [isAnimated]=\"true\"\n [collapse]=\"(!showRootNodes && constraints.matchesNodeIds !== null && constraints.matchesNodeIds.length < 1) || ( !showRootNodes && constraints.matchesNodeIds === null)\"\n >\n <ul c8yInputGroupListContainer class=\"list-unstyled p-t-16\">\n <li\n class=\"m-b-8\"\n *ngFor=\"let item of constraints.matchesNodeIds; let i = index; trackBy: trackByFn\"\n >\n <c8y-input-group-list [index]=\"i\" (onAdd)=\"add()\" (onRemove)=\"remove($event)\">\n <c8y-form-group class=\"form-group--tooltip-validation\">\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} nodeId\"\n [(ngModel)]=\"constraints.matchesNodeIds[i]\"\n [required]=\"true\"\n />\n </c8y-form-group>\n </c8y-input-group-list>\n </li>\n </ul> \n </div>\n </li>\n </ul>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.SelectLegacyComponent, selector: "c8y-select-legacy", inputs: ["placeholder", "selectedLabel", "applyLabel", "items", "selected", "updateItems", "disableApplyOnNoSelection", "addDropdownContainerToBody"], outputs: ["onChange"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.InputGroupListComponent, selector: "c8y-input-group-list", inputs: ["plus", "minus", "index"], outputs: ["onRemove", "onAdd"] }, { kind: "directive", type: i2.InputGroupListContainerDirective, selector: "[c8yInputGroupListContainer]" }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.FilterInputComponent, selector: "c8y-filter", inputs: ["icon", "filterTerm"], outputs: ["onSearch"] }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i2.ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "indeterminate", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "directive", type: i5.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
144
144
  }
145
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OpcuaAutoApplySettingsComponent, decorators: [{
146
146
  type: Component,
@@ -1,6 +1,6 @@
1
1
  import { Component, ViewChild } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
- import { DeviceRegistrationBulkService } from '@c8y/client';
3
+ import { DeviceRegistrationBulkService, FeatureService } from '@c8y/client';
4
4
  import { C8yJSONSchema, C8yStepper, GainsightService, gettext } from '@c8y/ngx-components';
5
5
  import { saveAs } from 'file-saver';
6
6
  import { BsModalRef } from 'ngx-bootstrap/modal';
@@ -29,9 +29,8 @@ const registerDeviceBulkSchema = {
29
29
  additionalProperties: false
30
30
  };
31
31
  const simpleCsvHeaders = ['ID', 'PATH'];
32
- const fullCsvHeaders = [
32
+ const csvHeaders = [
33
33
  'ID',
34
- 'CREDENTIALS',
35
34
  'TYPE',
36
35
  'NAME',
37
36
  'ICCID',
@@ -40,15 +39,21 @@ const fullCsvHeaders = [
40
39
  'SHELL',
41
40
  'AUTH_TYPE'
42
41
  ];
42
+ const fullCsvHeaders = [...csvHeaders, 'CREDENTIALS'];
43
+ export const ESTCsvHeaders = [...csvHeaders, 'ENROLLMENT_OTP'];
43
44
  export class BulkDeviceRegistrationModalComponent {
44
- constructor(jsonschema, deviceRegistrationService, registerDeviceService, bsModalRef, gainsightService) {
45
+ constructor(jsonschema, deviceRegistrationService, registerDeviceService, bsModalRef, gainsightService, featureService) {
45
46
  this.jsonschema = jsonschema;
46
47
  this.deviceRegistrationService = deviceRegistrationService;
47
48
  this.registerDeviceService = registerDeviceService;
48
49
  this.bsModalRef = bsModalRef;
49
50
  this.gainsightService = gainsightService;
51
+ this.featureService = featureService;
50
52
  this.form = new FormGroup({});
51
53
  this.model = {};
54
+ this.certificateAuthorityFeatureEnabled = this.featureService
55
+ .detail('certificate-authority')
56
+ .then(({ data }) => data.active);
52
57
  }
53
58
  ngOnInit() {
54
59
  this.template = [this.jsonschema.toFieldConfig(registerDeviceBulkSchema)];
@@ -102,6 +107,9 @@ export class BulkDeviceRegistrationModalComponent {
102
107
  downloadFull() {
103
108
  return this.download(fullCsvHeaders, gettext('Full bulk registration - template.csv'));
104
109
  }
110
+ downloadEst() {
111
+ return this.download(ESTCsvHeaders, gettext('EST registration - template.csv'));
112
+ }
105
113
  download(headers, fileName) {
106
114
  const headerRaw = headers.map(header => `"${header}"`).join(';');
107
115
  const binaryFile = new Blob([headerRaw], { type: 'text/csv' });
@@ -118,14 +126,14 @@ export class BulkDeviceRegistrationModalComponent {
118
126
  const csvBulkFile = model?.csvBulkFile;
119
127
  return csvBulkFile ? csvBulkFile[0]?.file : undefined;
120
128
  }
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BulkDeviceRegistrationModalComponent, deps: [{ token: i1.C8yJSONSchema }, { token: i2.DeviceRegistrationBulkService }, { token: i3.RegisterDeviceService }, { token: i4.BsModalRef }, { token: i1.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BulkDeviceRegistrationModalComponent, selector: "bulk-device-registration", viewQueries: [{ propertyName: "stepper", first: true, predicate: C8yStepper, descendants: true, static: true }], ngImport: i0, template: "<c8y-modal\n [title]=\"'Bulk device registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <i c8yIcon=\"upload\"></i>\n </ng-container>\n\n <c8y-stepper [hideStepProgress]=\"true\" linear id=\"modal-body\">\n <cdk-step>\n <p class=\"modal-subtitle sticky-top\" translate>Register devices in bulk</p>\n\n <c8y-form-group class=\"d-block p-24 p-t-16 p-b-0 m-b-0\">\n <formly-form [form]=\"form\" [fields]=\"template\" [model]=\"model\"></formly-form>\n </c8y-form-group>\n\n <div class=\"p-24 m-t-0 bg-level-1\">\n <div class=\"content-flex-30 flex-stretch\">\n <div class=\"col-6 p-16 p-b-0 d-flex d-col j-c-between\">\n <div>\n <p class=\"m-b-8\">\n <strong translate>Simple registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all registration requests at once, then each one needs to go through regular\n acceptance process.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadSimple()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"col-6 p-16 p-b-0 d-flex d-col j-c-between\">\n <div>\n <p class=\"m-b-8\">\n <strong translate>Full registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all device credentials and devices using provided list of property values.\n Devices can start communicating with the platform immediately.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadFull()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"form.invalid\"\n [pending]=\"pending\"\n (onCancel)=\"cancel()\"\n (onNext)=\"upload()\"\n [labels]=\"{ next: 'Upload' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step state=\"final\">\n <div class=\"m-24\">\n <div *ngIf=\"success; else warning\">\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #warning>\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-template>\n <c8y-list-group class=\"separator-top m-t-16\">\n <ng-container *ngIf=\"result; else failedResponse\">\n <c8y-li *ngIf=\"success; else fail\">\n <c8y-li-icon class=\"text-success\" icon=\"check-circle\"></c8y-li-icon>\n <p>{{ 'All devices have been processed.' | translate }}</p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n <ng-template #fail>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" icon=\"ban\"></c8y-li-icon>\n <p\n ngNonBindable\n [translateParams]=\"{ count: result?.numberOfFailed, total: result?.numberOfAll }\"\n translate\n >\n Failed to process {{ count }} out of {{ total }}.\n </p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </ng-container>\n <ng-template #failedResponse>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <small>{{ failedResult?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ failedResult | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ next: true }\"\n (onNext)=\"complete()\"\n [labels]=\"{ next: success ? 'Close' : 'Cancel' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "component", type: i1.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i1.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i6.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i1.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i1.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i7.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.JsonPipe, name: "json" }] }); }
129
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BulkDeviceRegistrationModalComponent, deps: [{ token: i1.C8yJSONSchema }, { token: i2.DeviceRegistrationBulkService }, { token: i3.RegisterDeviceService }, { token: i4.BsModalRef }, { token: i1.GainsightService }, { token: i2.FeatureService }], target: i0.ɵɵFactoryTarget.Component }); }
130
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BulkDeviceRegistrationModalComponent, selector: "bulk-device-registration", viewQueries: [{ propertyName: "stepper", first: true, predicate: C8yStepper, descendants: true, static: true }], ngImport: i0, template: "<c8y-modal\n [title]=\"'Bulk device registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <i c8yIcon=\"upload\"></i>\n </ng-container>\n\n <c8y-stepper [hideStepProgress]=\"true\" linear id=\"modal-body\">\n <cdk-step>\n <p class=\"modal-subtitle sticky-top\" translate>Register devices in bulk</p>\n\n <c8y-form-group class=\"d-block p-24 p-t-16 p-b-0 m-b-0\">\n <formly-form [form]=\"form\" [fields]=\"template\" [model]=\"model\"></formly-form>\n </c8y-form-group>\n\n <div class=\"p-24 m-t-0 bg-level-1\">\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Simple registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all registration requests at once, then each one needs to go through regular\n acceptance process.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadSimple()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all device credentials and devices using provided list of property values.\n Devices can start communicating with the platform immediately.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadFull()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\" *ngIf=\"certificateAuthorityFeatureEnabled | async\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration with device certificate creation</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates device certificates and devices using the provided list of property values. Once the certificates are provisioned, the devices can immediately start communicating with the platform\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadEst()\"\n >\n <i c8yIcon=\"download\"></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"form.invalid\"\n [pending]=\"pending\"\n (onCancel)=\"cancel()\"\n (onNext)=\"upload()\"\n [labels]=\"{ next: 'Upload' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step state=\"final\">\n <div class=\"m-24\">\n <div *ngIf=\"success; else warning\">\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #warning>\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-template>\n <c8y-list-group class=\"separator-top m-t-16\">\n <ng-container *ngIf=\"result; else failedResponse\">\n <c8y-li *ngIf=\"success; else fail\">\n <c8y-li-icon class=\"text-success\" icon=\"check-circle\"></c8y-li-icon>\n <p>{{ 'All devices have been processed.' | translate }}</p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n <ng-template #fail>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" icon=\"ban\"></c8y-li-icon>\n <p\n ngNonBindable\n [translateParams]=\"{ count: result?.numberOfFailed, total: result?.numberOfAll }\"\n translate\n >\n Failed to process {{ count }} out of {{ total }}.\n </p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </ng-container>\n <ng-template #failedResponse>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <small>{{ failedResult?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ failedResult | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ next: true }\"\n (onNext)=\"complete()\"\n [labels]=\"{ next: success ? 'Close' : 'Cancel' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "component", type: i1.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i1.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i6.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i1.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i1.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i7.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.JsonPipe, name: "json" }] }); }
123
131
  }
124
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BulkDeviceRegistrationModalComponent, decorators: [{
125
133
  type: Component,
126
- args: [{ selector: 'bulk-device-registration', template: "<c8y-modal\n [title]=\"'Bulk device registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <i c8yIcon=\"upload\"></i>\n </ng-container>\n\n <c8y-stepper [hideStepProgress]=\"true\" linear id=\"modal-body\">\n <cdk-step>\n <p class=\"modal-subtitle sticky-top\" translate>Register devices in bulk</p>\n\n <c8y-form-group class=\"d-block p-24 p-t-16 p-b-0 m-b-0\">\n <formly-form [form]=\"form\" [fields]=\"template\" [model]=\"model\"></formly-form>\n </c8y-form-group>\n\n <div class=\"p-24 m-t-0 bg-level-1\">\n <div class=\"content-flex-30 flex-stretch\">\n <div class=\"col-6 p-16 p-b-0 d-flex d-col j-c-between\">\n <div>\n <p class=\"m-b-8\">\n <strong translate>Simple registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all registration requests at once, then each one needs to go through regular\n acceptance process.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadSimple()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"col-6 p-16 p-b-0 d-flex d-col j-c-between\">\n <div>\n <p class=\"m-b-8\">\n <strong translate>Full registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all device credentials and devices using provided list of property values.\n Devices can start communicating with the platform immediately.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadFull()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"form.invalid\"\n [pending]=\"pending\"\n (onCancel)=\"cancel()\"\n (onNext)=\"upload()\"\n [labels]=\"{ next: 'Upload' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step state=\"final\">\n <div class=\"m-24\">\n <div *ngIf=\"success; else warning\">\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #warning>\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-template>\n <c8y-list-group class=\"separator-top m-t-16\">\n <ng-container *ngIf=\"result; else failedResponse\">\n <c8y-li *ngIf=\"success; else fail\">\n <c8y-li-icon class=\"text-success\" icon=\"check-circle\"></c8y-li-icon>\n <p>{{ 'All devices have been processed.' | translate }}</p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n <ng-template #fail>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" icon=\"ban\"></c8y-li-icon>\n <p\n ngNonBindable\n [translateParams]=\"{ count: result?.numberOfFailed, total: result?.numberOfAll }\"\n translate\n >\n Failed to process {{ count }} out of {{ total }}.\n </p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </ng-container>\n <ng-template #failedResponse>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <small>{{ failedResult?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ failedResult | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ next: true }\"\n (onNext)=\"complete()\"\n [labels]=\"{ next: success ? 'Close' : 'Cancel' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n" }]
127
- }], ctorParameters: () => [{ type: i1.C8yJSONSchema }, { type: i2.DeviceRegistrationBulkService }, { type: i3.RegisterDeviceService }, { type: i4.BsModalRef }, { type: i1.GainsightService }], propDecorators: { stepper: [{
134
+ args: [{ selector: 'bulk-device-registration', template: "<c8y-modal\n [title]=\"'Bulk device registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <i c8yIcon=\"upload\"></i>\n </ng-container>\n\n <c8y-stepper [hideStepProgress]=\"true\" linear id=\"modal-body\">\n <cdk-step>\n <p class=\"modal-subtitle sticky-top\" translate>Register devices in bulk</p>\n\n <c8y-form-group class=\"d-block p-24 p-t-16 p-b-0 m-b-0\">\n <formly-form [form]=\"form\" [fields]=\"template\" [model]=\"model\"></formly-form>\n </c8y-form-group>\n\n <div class=\"p-24 m-t-0 bg-level-1\">\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Simple registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all registration requests at once, then each one needs to go through regular\n acceptance process.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadSimple()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates all device credentials and devices using provided list of property values.\n Devices can start communicating with the platform immediately.\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadFull()\"\n >\n <i c8yIcon=\"download\" translate></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n <div class=\"bg-gray-white separator-bottom p-t-16 p-b-16 p-l-24 p-r-24\" *ngIf=\"certificateAuthorityFeatureEnabled | async\">\n <div>\n <p class=\"m-b-8 text-medium\">\n <strong translate>Full registration with device certificate creation</strong>\n </p>\n <small class=\"text-muted\" translate>\n Creates device certificates and devices using the provided list of property values. Once the certificates are provisioned, the devices can immediately start communicating with the platform\n </small>\n </div>\n <div class=\"m-b-16 m-t-16\">\n <a\n title=\"{{ 'Download template' | translate }}\"\n class=\"btn btn-default btn-sm\"\n target=\"_self\"\n (click)=\"downloadEst()\"\n >\n <i c8yIcon=\"download\"></i>\n {{ 'Download template' | translate }}\n </a>\n </div>\n </div>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"form.invalid\"\n [pending]=\"pending\"\n (onCancel)=\"cancel()\"\n (onNext)=\"upload()\"\n [labels]=\"{ next: 'Upload' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n\n <cdk-step state=\"final\">\n <div class=\"m-24\">\n <div *ngIf=\"success; else warning\">\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n </div>\n <ng-template #warning>\n <c8y-operation-result\n text=\"{{ message | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-template>\n <c8y-list-group class=\"separator-top m-t-16\">\n <ng-container *ngIf=\"result; else failedResponse\">\n <c8y-li *ngIf=\"success; else fail\">\n <c8y-li-icon class=\"text-success\" icon=\"check-circle\"></c8y-li-icon>\n <p>{{ 'All devices have been processed.' | translate }}</p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n <ng-template #fail>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" icon=\"ban\"></c8y-li-icon>\n <p\n ngNonBindable\n [translateParams]=\"{ count: result?.numberOfFailed, total: result?.numberOfAll }\"\n translate\n >\n Failed to process {{ count }} out of {{ total }}.\n </p>\n <c8y-li-collapse>\n <pre><code>{{ result | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </ng-container>\n <ng-template #failedResponse>\n <c8y-li>\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <small>{{ failedResult?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ failedResult | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n [showButtons]=\"{ next: true }\"\n (onNext)=\"complete()\"\n [labels]=\"{ next: success ? 'Close' : 'Cancel' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n" }]
135
+ }], ctorParameters: () => [{ type: i1.C8yJSONSchema }, { type: i2.DeviceRegistrationBulkService }, { type: i3.RegisterDeviceService }, { type: i4.BsModalRef }, { type: i1.GainsightService }, { type: i2.FeatureService }], propDecorators: { stepper: [{
128
136
  type: ViewChild,
129
137
  args: [C8yStepper, { static: true }]
130
138
  }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9idWxrL2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvYnVsay9idWxrLWRldmljZS1yZWdpc3RyYXRpb24tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSw2QkFBNkIsRUFBaUMsTUFBTSxhQUFhLENBQUM7QUFDM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFcEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQUVuRSxNQUFNLHdCQUF3QixHQUFXO0lBQ3ZDLE9BQU8sRUFBRSw4Q0FBOEM7SUFDdkQsSUFBSSxFQUFFLFFBQVE7SUFDZCxVQUFVLEVBQUU7UUFDVixXQUFXLEVBQUU7WUFDWCxJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7WUFDakMsV0FBVyxFQUFFLE9BQU8sQ0FDbEIsdUdBQXVHLENBQ3hHO1lBQ0QsZ0JBQWdCLEVBQUUsS0FBSztTQUN4QjtLQUNGO0lB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TixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxLQUFLO1FBQ25CLE1BQU0sV0FBVyxHQUFJLEtBQWEsRUFBRSxXQUFXLENBQUM7UUFDaEQsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDOzhHQTNGVSxvQ0FBb0M7a0dBQXBDLG9DQUFvQyx5R0FDcEMsVUFBVSw4REM5Q3ZCLDQwS0E4SUE7OzJGRGpHYSxvQ0FBb0M7a0JBSmhELFNBQVM7K0JBQ0UsMEJBQTBCOzBOQUlLLE9BQU87c0JBQS9DLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEZXZpY2VSZWdpc3RyYXRpb25CdWxrU2VydmljZSwgSURldmljZVJlZ2lzdHJhdGlvbkJ1bGtSZXN1bHQgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDOHlKU09OU2NoZW1hLCBDOHlTdGVwcGVyLCBHYWluc2lnaHRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04gfSBmcm9tICcuLi9leHRlbnNpYmxlL2Jhc2UtZGV2aWNlLXJlZ2lzdHJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBCdWxrRmFpbGVkUmVzdWx0IH0gZnJvbSAnLi4vZXh0ZW5zaWJsZS9idWxrL2V4dGVuc2libGUtYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJlZ2lzdGVyRGV2aWNlU2VydmljZSB9IGZyb20gJy4uL3JlZ2lzdGVyLWRldmljZS5zZXJ2aWNlJztcblxuY29uc3QgcmVnaXN0ZXJEZXZpY2VCdWxrU2NoZW1hOiBvYmplY3QgPSB7XG4gICRzY2hlbWE6ICdodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDE5LTA5L3NjaGVtYScsXG4gIHR5cGU6ICdvYmplY3QnLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgY3N2QnVsa0ZpbGU6IHtcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnQ1NWIGZpbGUgdXBsb2FkJyksXG4gICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICAgJ1lvdSBjYW4gdXNlIGZpbGUgdXBsb2FkIGNvbXBvbmVudCB0byBsZXQgdXNlcnMgc2VuZCBmaWxlcy4gVGhpcyBpbnB1dCBhY2NlcHRzIG9ubHkgYSBzaW5nbGUgQ1NWIGZpbGUuJ1xuICAgICAgKSxcbiAgICAgIGNvbnRlbnRNZWRpYVR5cGU6ICdjc3YnXG4gICAgfVxuICB9LFxuICByZXF1aXJlZDogWydjc3ZCdWxrRmlsZSddLFxuICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2Vcbn07XG5cbmNvbnN0IHNpbXBsZUNzdkhlYWRlcnM6IHN0cmluZ1tdID0gWydJRCcsICdQQVRIJ107XG5jb25zdCBmdWxsQ3N2SGVhZGVyczogc3RyaW5nW10gPSBbXG4gICdJRCcsXG4gICdDUkVERU5USUFMUycsXG4gICdUWVBFJyxcbiAgJ05BTUUnLFxuICAnSUNDSUQnLFxuICAnSURUWVBFJyxcbiAgJ1BBVEgnLFxuICAnU0hFTEwnLFxuICAnQVVUSF9UWVBFJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICdidWxrLWRldmljZS1yZWdpc3RyYXRpb24tbW9kYWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEJ1bGtEZXZpY2VSZWdpc3RyYXRpb25Nb2RhbENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoQzh5U3RlcHBlciwgeyBzdGF0aWM6IHRydWUgfSkgc3RlcHBlcjogQzh5U3RlcHBlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBwZW5kaW5nOiBib29sZWFuO1xuICByZXN1bHQ6IElEZXZpY2VSZWdpc3RyYXRpb25CdWxrUmVzdWx0O1xuICBmYWlsZWRSZXN1bHQ6IEJ1bGtGYWlsZWRSZXN1bHQ7XG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgbW9kZWwgPSB7fTtcbiAgdGVtcGxhdGU6IEZvcm1seUZpZWxkQ29uZmlnW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBqc29uc2NoZW1hOiBDOHlKU09OU2NoZW1hLFxuICAgIHByaXZhdGUgZGV2aWNlUmVnaXN0cmF0aW9uU2VydmljZTogRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWdpc3RlckRldmljZVNlcnZpY2U6IFJlZ2lzdGVyRGV2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRlbXBsYXRlID0gW3RoaXMuanNvbnNjaGVtYS50b0ZpZWxkQ29uZmlnKHJlZ2lzdGVyRGV2aWNlQnVsa1NjaGVtYSldO1xuICB9XG5cbiAgdXBsb2FkKCkge1xuICAgIHRoaXMucGVuZGluZyA9IHRydWU7XG4gICAgY29uc3QgZmlsZSA9IHRoaXMuZ2V0RmlsZSh0aGlzLm1vZGVsKTtcbiAgICB0aGlzLmRldmljZVJlZ2lzdHJhdGlvblNlcnZpY2VcbiAgICAgIC5jcmVhdGUoZmlsZSlcbiAgICAgIC50aGVuKCh7IHJlcywgZGF0YSB9KSA9PiB7XG4gICAgICAgIGlmIChyZXMuc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgICAgdGhpcy5yZXN1bHQgPSBkYXRhO1xuICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IGRhdGEubnVtYmVyT2ZGYWlsZWQgPT09IDAgJiYgZGF0YS5udW1iZXJPZlN1Y2Nlc3NmdWwgPT09IGRhdGEubnVtYmVyT2ZBbGw7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlID0gdGhpcy5zdWNjZXNzXG4gICAgICAgICAgICA/IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gY3JlYXRlZC4nKVxuICAgICAgICAgICAgOiAodGhpcy5tZXNzYWdlID0gZ2V0dGV4dCgnRGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuJykpO1xuICAgICAgICAgIGlmICh0aGlzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkVWRU5ULCB7XG4gICAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLlJFU1VMVC5TVUNDRVNTLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5DT01QT05FTlQuQlVMS1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkVWRU5ULCB7XG4gICAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLlJFU1VMVC5GQUlMVVJFLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5DT01QT05FTlQuQlVMS1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmFpbGVkUmVzdWx0ID0gZGF0YSBhcyB1bmtub3duIGFzIEJ1bGtGYWlsZWRSZXN1bHQ7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlID0gZ2V0dGV4dCgnRGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuJyk7XG4gICAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uRVZFTlQsIHtcbiAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLlJFU1VMVC5GQUlMVVJFLFxuICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGVsID0ge307XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhlIHVwbG9hZGVkIGZpbGUuJyk7XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBkb3dubG9hZFNpbXBsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kb3dubG9hZChzaW1wbGVDc3ZIZWFkZXJzLCBnZXR0ZXh0KCdTaW1wbGUgYnVsayByZWdpc3RyYXRpb24gLSB0ZW1wbGF0ZS5jc3YnKSk7XG4gIH1cblxuICBkb3dubG9hZEZ1bGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoZnVsbENzdkhlYWRlcnMsIGdldHRleHQoJ0Z1bGwgYnVsayByZWdpc3RyYXRpb24gLSB0ZW1wbGF0ZS5jc3YnKSk7XG4gIH1cblxuICBkb3dubG9hZChoZWFkZXJzOiBzdHJpbmdbXSwgZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlclJhdyA9IGhlYWRlcnMubWFwKGhlYWRlciA9PiBgXCIke2hlYWRlcn1cImApLmpvaW4oJzsnKTtcbiAgICBjb25zdCBiaW5hcnlGaWxlID0gbmV3IEJsb2IoW2hlYWRlclJhd10sIHsgdHlwZTogJ3RleHQvY3N2JyB9KTtcbiAgICBzYXZlQXMoYmluYXJ5RmlsZSwgZmlsZU5hbWUpO1xuICB9XG5cbiAgY29tcGxldGUoKSB7XG4gICAgdGhpcy5yZWdpc3RlckRldmljZVNlcnZpY2UubGlzdCgpO1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZShtb2RlbCk6IEZpbGUge1xuICAgIGNvbnN0IGNzdkJ1bGtGaWxlID0gKG1vZGVsIGFzIGFueSk/LmNzdkJ1bGtGaWxlO1xuICAgIHJldHVybiBjc3ZCdWxrRmlsZSA/IGNzdkJ1bGtGaWxlWzBdPy5maWxlIDogdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8Yzh5LW1vZGFsXG4gIFt0aXRsZV09XCInQnVsayBkZXZpY2UgcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gIFtoZWFkZXJDbGFzc2VzXT1cIidkaWFsb2ctaGVhZGVyJ1wiXG4gIFtjdXN0b21Gb290ZXJdPVwidHJ1ZVwiXG4+XG4gIDxuZy1jb250YWluZXIgYzh5LW1vZGFsLXRpdGxlPlxuICAgIDxpIGM4eUljb249XCJ1cGxvYWRcIj48L2k+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxjOHktc3RlcHBlciBbaGlkZVN0ZXBQcm9ncmVzc109XCJ0cnVlXCIgbGluZWFyIGlkPVwibW9kYWwtYm9keVwiPlxuICAgIDxjZGstc3RlcD5cbiAgICAgIDxwIGNsYXNzPVwibW9kYWwtc3VidGl0bGUgc3RpY2t5LXRvcFwiIHRyYW5zbGF0ZT5SZWdpc3RlciBkZXZpY2VzIGluIGJ1bGs8L3A+XG5cbiAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImQtYmxvY2sgcC0yNCBwLXQtMTYgcC1iLTAgbS1iLTBcIj5cbiAgICAgICAgPGZvcm1seS1mb3JtIFtmb3JtXT1cImZvcm1cIiBbZmllbGRzXT1cInRlbXBsYXRlXCIgW21vZGVsXT1cIm1vZGVsXCI+PC9mb3JtbHktZm9ybT5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTI0IG0tdC0wIGJnLWxldmVsLTFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC0zMCBmbGV4LXN0cmV0Y2hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcC0xNiBwLWItMCBkLWZsZXggZC1jb2wgai1jLWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibS1iLThcIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nIHRyYW5zbGF0ZT5TaW1wbGUgcmVnaXN0cmF0aW9uPC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgICBDcmVhdGVzIGFsbCByZWdpc3RyYXRpb24gcmVxdWVzdHMgYXQgb25jZSwgdGhlbiBlYWNoIG9uZSBuZWVkcyB0byBnbyB0aHJvdWdoIHJlZ3VsYXJcbiAgICAgICAgICAgICAgICBhY2NlcHRhbmNlIHByb2Nlc3MuXG4gICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWItMTYgbS10LTE2XCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRG93bmxvYWQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9zZWxmXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRTaW1wbGUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZG93bmxvYWRcIiB0cmFuc2xhdGU+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEb3dubG9hZCB0ZW1wbGF0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHAtMTYgcC1iLTAgZC1mbGV4IGQtY29sIGotYy1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04XCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+RnVsbCByZWdpc3RyYXRpb248L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIENyZWF0ZXMgYWxsIGRldmljZSBjcmVkZW50aWFscyBhbmQgZGV2aWNlcyB1c2luZyBwcm92aWRlZCBsaXN0IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgICAgICAgICAgICBEZXZpY2VzIGNhbiBzdGFydCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHBsYXRmb3JtIGltbWVkaWF0ZWx5LlxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTE2IG0tdC0xNlwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfc2VsZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRnVsbCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJkb3dubG9hZFwiIHRyYW5zbGF0ZT48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBjYW5jZWw6IHRydWUsIG5leHQ6IHRydWUgfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICBbcGVuZGluZ109XCJwZW5kaW5nXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cImNhbmNlbCgpXCJcbiAgICAgICAgKG9uTmV4dCk9XCJ1cGxvYWQoKVwiXG4gICAgICAgIFtsYWJlbHNdPVwieyBuZXh0OiAnVXBsb2FkJyB9XCJcbiAgICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPC9jZGstc3RlcD5cblxuICAgIDxjZGstc3RlcCBzdGF0ZT1cImZpbmFsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibS0yNFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3VjY2VzczsgZWxzZSB3YXJuaW5nXCI+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICB0ZXh0PVwie3sgbWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICAgICAgICBjbGFzcz1cImxlYWRcIlxuICAgICAgICAgID48L2M4eS1vcGVyYXRpb24tcmVzdWx0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN3YXJuaW5nPlxuICAgICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgICAgdGV4dD1cInt7IG1lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgICAgdHlwZT1cImVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxjOHktbGlzdC1ncm91cCBjbGFzcz1cInNlcGFyYXRvci10b3AgbS10LTE2XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdDsgZWxzZSBmYWlsZWRSZXNwb25zZVwiPlxuICAgICAgICAgICAgPGM4eS1saSAqbmdJZj1cInN1Y2Nlc3M7IGVsc2UgZmFpbFwiPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3NcIiBpY29uPVwiY2hlY2stY2lyY2xlXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPHA+e3sgJ0FsbCBkZXZpY2VzIGhhdmUgYmVlbiBwcm9jZXNzZWQuJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPnt7IHJlc3VsdCB8IGpzb24gfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZhaWw+XG4gICAgICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBpY29uPVwiYmFuXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IGNvdW50OiByZXN1bHQ/Lm51bWJlck9mRmFpbGVkLCB0b3RhbDogcmVzdWx0Py5udW1iZXJPZkFsbCB9XCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEZhaWxlZCB0byBwcm9jZXNzIHt7IGNvdW50IH19IG91dCBvZiB7eyB0b3RhbCB9fS5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3sgcmVzdWx0IHwganNvbiB9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmFpbGVkUmVzcG9uc2U+XG4gICAgICAgICAgICA8Yzh5LWxpPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIFtpY29uXT1cIidiYW4nXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGZhaWxlZFJlc3VsdD8ubWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxjOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgICAgICAgPHByZT48Y29kZT57eyBmYWlsZWRSZXN1bHQgfCBqc29uIH19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIGNsYXNzPVwic3RpY2t5LWJvdHRvbSBkLWJsb2NrIHAtdC0xNiBwLWItMTYgc2VwYXJhdG9yLXRvcCBiZy1sZXZlbC0wXCJcbiAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgbmV4dDogdHJ1ZSB9XCJcbiAgICAgICAgKG9uTmV4dCk9XCJjb21wbGV0ZSgpXCJcbiAgICAgICAgW2xhYmVsc109XCJ7IG5leHQ6IHN1Y2Nlc3MgPyAnQ2xvc2UnIDogJ0NhbmNlbCcgfVwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gIDwvYzh5LXN0ZXBwZXI+XG48L2M4eS1tb2RhbD5cbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9idWxrL2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvYnVsay9idWxrLWRldmljZS1yZWdpc3RyYXRpb24tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsY0FBYyxFQUVmLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXBHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFFbkUsTUFBTSx3QkFBd0IsR0FBVztJQUN2QyxPQUFPLEVBQUUsOENBQThDO0lBQ3ZELElBQUksRUFBRSxRQUFRO0lBQ2QsVUFBVSxFQUFFO1FBQ1YsV0FBVyxFQUFFO1lBQ1gsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1lBQ2pDLFdBQVcsRUFBRSxPQUFPLENBQ2xCLHVHQUF1RyxDQUN4RztZQUNELGdCQUFnQixFQUFFLEtBQUs7U0FD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bnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1NlcnZpY2UsXG4gIEZlYXR1cmVTZXJ2aWNlLFxuICBJRGV2aWNlUmVnaXN0cmF0aW9uQnVsa1Jlc3VsdFxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDOHlKU09OU2NoZW1hLCBDOHlTdGVwcGVyLCBHYWluc2lnaHRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04gfSBmcm9tICcuLi9leHRlbnNpYmxlL2Jhc2UtZGV2aWNlLXJlZ2lzdHJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBCdWxrRmFpbGVkUmVzdWx0IH0gZnJvbSAnLi4vZXh0ZW5zaWJsZS9idWxrL2V4dGVuc2libGUtYnVsay1kZXZpY2UtcmVnaXN0cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJlZ2lzdGVyRGV2aWNlU2VydmljZSB9IGZyb20gJy4uL3JlZ2lzdGVyLWRldmljZS5zZXJ2aWNlJztcblxuY29uc3QgcmVnaXN0ZXJEZXZpY2VCdWxrU2NoZW1hOiBvYmplY3QgPSB7XG4gICRzY2hlbWE6ICdodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDE5LTA5L3NjaGVtYScsXG4gIHR5cGU6ICdvYmplY3QnLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgY3N2QnVsa0ZpbGU6IHtcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnQ1NWIGZpbGUgdXBsb2FkJyksXG4gICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICAgJ1lvdSBjYW4gdXNlIGZpbGUgdXBsb2FkIGNvbXBvbmVudCB0byBsZXQgdXNlcnMgc2VuZCBmaWxlcy4gVGhpcyBpbnB1dCBhY2NlcHRzIG9ubHkgYSBzaW5nbGUgQ1NWIGZpbGUuJ1xuICAgICAgKSxcbiAgICAgIGNvbnRlbnRNZWRpYVR5cGU6ICdjc3YnXG4gICAgfVxuICB9LFxuICByZXF1aXJlZDogWydjc3ZCdWxrRmlsZSddLFxuICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2Vcbn07XG5cbmNvbnN0IHNpbXBsZUNzdkhlYWRlcnM6IHN0cmluZ1tdID0gWydJRCcsICdQQVRIJ107XG5jb25zdCBjc3ZIZWFkZXJzOiBzdHJpbmdbXSA9IFtcbiAgJ0lEJyxcbiAgJ1RZUEUnLFxuICAnTkFNRScsXG4gICdJQ0NJRCcsXG4gICdJRFRZUEUnLFxuICAnUEFUSCcsXG4gICdTSEVMTCcsXG4gICdBVVRIX1RZUEUnXG5dO1xuY29uc3QgZnVsbENzdkhlYWRlcnM6IHN0cmluZ1tdID0gWy4uLmNzdkhlYWRlcnMsICdDUkVERU5USUFMUyddO1xuZXhwb3J0IGNvbnN0IEVTVENzdkhlYWRlcnM6IHN0cmluZ1tdID0gWy4uLmNzdkhlYWRlcnMsICdFTlJPTExNRU5UX09UUCddO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdidWxrLWRldmljZS1yZWdpc3RyYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJ2J1bGstZGV2aWNlLXJlZ2lzdHJhdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQnVsa0RldmljZVJlZ2lzdHJhdGlvbk1vZGFsQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChDOHlTdGVwcGVyLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdGVwcGVyOiBDOHlTdGVwcGVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHBlbmRpbmc6IGJvb2xlYW47XG4gIHJlc3VsdDogSURldmljZVJlZ2lzdHJhdGlvbkJ1bGtSZXN1bHQ7XG4gIGZhaWxlZFJlc3VsdDogQnVsa0ZhaWxlZFJlc3VsdDtcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBtb2RlbCA9IHt9O1xuICB0ZW1wbGF0ZTogRm9ybWx5RmllbGRDb25maWdbXTtcbiAgY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZCA9IHRoaXMuZmVhdHVyZVNlcnZpY2VcbiAgICAuZGV0YWlsKCdjZXJ0aWZpY2F0ZS1hdXRob3JpdHknKVxuICAgIC50aGVuKCh7IGRhdGEgfSkgPT4gZGF0YS5hY3RpdmUpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUganNvbnNjaGVtYTogQzh5SlNPTlNjaGVtYSxcbiAgICBwcml2YXRlIGRldmljZVJlZ2lzdHJhdGlvblNlcnZpY2U6IERldmljZVJlZ2lzdHJhdGlvbkJ1bGtTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVnaXN0ZXJEZXZpY2VTZXJ2aWNlOiBSZWdpc3RlckRldmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIGZlYXR1cmVTZXJ2aWNlOiBGZWF0dXJlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IFt0aGlzLmpzb25zY2hlbWEudG9GaWVsZENvbmZpZyhyZWdpc3RlckRldmljZUJ1bGtTY2hlbWEpXTtcbiAgfVxuXG4gIHVwbG9hZCgpIHtcbiAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGUodGhpcy5tb2RlbCk7XG4gICAgdGhpcy5kZXZpY2VSZWdpc3RyYXRpb25TZXJ2aWNlXG4gICAgICAuY3JlYXRlKGZpbGUpXG4gICAgICAudGhlbigoeyByZXMsIGRhdGEgfSkgPT4ge1xuICAgICAgICBpZiAocmVzLnN0YXR1cyA8IDQwMCkge1xuICAgICAgICAgIHRoaXMucmVzdWx0ID0gZGF0YTtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPSBkYXRhLm51bWJlck9mRmFpbGVkID09PSAwICYmIGRhdGEubnVtYmVyT2ZTdWNjZXNzZnVsID09PSBkYXRhLm51bWJlck9mQWxsO1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuc3VjY2Vzc1xuICAgICAgICAgICAgPyBnZXR0ZXh0KCdEZXZpY2UgcmVnaXN0cmF0aW9uIGNyZWF0ZWQuJylcbiAgICAgICAgICAgIDogKHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gZmFpbGVkLicpKTtcbiAgICAgICAgICBpZiAodGhpcy5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5FVkVOVCwge1xuICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5FVkVOVCwge1xuICAgICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuRkFJTFVSRSxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfQkFTRV9SRUdJU1RSQVRJT04uQ09NUE9ORU5ULkJVTEtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZhaWxlZFJlc3VsdCA9IGRhdGEgYXMgdW5rbm93biBhcyBCdWxrRmFpbGVkUmVzdWx0O1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGdldHRleHQoJ0RldmljZSByZWdpc3RyYXRpb24gZmFpbGVkLicpO1xuICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkVWRU5ULCB7XG4gICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9CQVNFX1JFR0lTVFJBVElPTi5SRVNVTFQuRkFJTFVSRSxcbiAgICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0JBU0VfUkVHSVNUUkFUSU9OLkNPTVBPTkVOVC5CVUxLXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2RlbCA9IHt9O1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBnZXR0ZXh0KCdFcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSB1cGxvYWRlZCBmaWxlLicpO1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZG93bmxvYWRTaW1wbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoc2ltcGxlQ3N2SGVhZGVycywgZ2V0dGV4dCgnU2ltcGxlIGJ1bGsgcmVnaXN0cmF0aW9uIC0gdGVtcGxhdGUuY3N2JykpO1xuICB9XG5cbiAgZG93bmxvYWRGdWxsKCkge1xuICAgIHJldHVybiB0aGlzLmRvd25sb2FkKGZ1bGxDc3ZIZWFkZXJzLCBnZXR0ZXh0KCdGdWxsIGJ1bGsgcmVnaXN0cmF0aW9uIC0gdGVtcGxhdGUuY3N2JykpO1xuICB9XG5cbiAgZG93bmxvYWRFc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG93bmxvYWQoRVNUQ3N2SGVhZGVycywgZ2V0dGV4dCgnRVNUIHJlZ2lzdHJhdGlvbiAtIHRlbXBsYXRlLmNzdicpKTtcbiAgfVxuXG4gIGRvd25sb2FkKGhlYWRlcnM6IHN0cmluZ1tdLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVyUmF3ID0gaGVhZGVycy5tYXAoaGVhZGVyID0+IGBcIiR7aGVhZGVyfVwiYCkuam9pbignOycpO1xuICAgIGNvbnN0IGJpbmFyeUZpbGUgPSBuZXcgQmxvYihbaGVhZGVyUmF3XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgIHNhdmVBcyhiaW5hcnlGaWxlLCBmaWxlTmFtZSk7XG4gIH1cblxuICBjb21wbGV0ZSgpIHtcbiAgICB0aGlzLnJlZ2lzdGVyRGV2aWNlU2VydmljZS5saXN0KCk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlKG1vZGVsKTogRmlsZSB7XG4gICAgY29uc3QgY3N2QnVsa0ZpbGUgPSAobW9kZWwgYXMgYW55KT8uY3N2QnVsa0ZpbGU7XG4gICAgcmV0dXJuIGNzdkJ1bGtGaWxlID8gY3N2QnVsa0ZpbGVbMF0/LmZpbGUgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxjOHktbW9kYWxcbiAgW3RpdGxlXT1cIidCdWxrIGRldmljZSByZWdpc3RyYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgW2hlYWRlckNsYXNzZXNdPVwiJ2RpYWxvZy1oZWFkZXInXCJcbiAgW2N1c3RvbUZvb3Rlcl09XCJ0cnVlXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBjOHktbW9kYWwtdGl0bGU+XG4gICAgPGkgYzh5SWNvbj1cInVwbG9hZFwiPjwvaT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGM4eS1zdGVwcGVyIFtoaWRlU3RlcFByb2dyZXNzXT1cInRydWVcIiBsaW5lYXIgaWQ9XCJtb2RhbC1ib2R5XCI+XG4gICAgPGNkay1zdGVwPlxuICAgICAgPHAgY2xhc3M9XCJtb2RhbC1zdWJ0aXRsZSBzdGlja3ktdG9wXCIgdHJhbnNsYXRlPlJlZ2lzdGVyIGRldmljZXMgaW4gYnVsazwvcD5cblxuICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZC1ibG9jayBwLTI0IHAtdC0xNiBwLWItMCBtLWItMFwiPlxuICAgICAgICA8Zm9ybWx5LWZvcm0gW2Zvcm1dPVwiZm9ybVwiIFtmaWVsZHNdPVwidGVtcGxhdGVcIiBbbW9kZWxdPVwibW9kZWxcIj48L2Zvcm1seS1mb3JtPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgPGRpdiBjbGFzcz1cInAtMjQgbS10LTAgYmctbGV2ZWwtMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LXdoaXRlIHNlcGFyYXRvci1ib3R0b20gcC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04IHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+U2ltcGxlIHJlZ2lzdHJhdGlvbjwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgICAgQ3JlYXRlcyBhbGwgcmVnaXN0cmF0aW9uIHJlcXVlc3RzIGF0IG9uY2UsIHRoZW4gZWFjaCBvbmUgbmVlZHMgdG8gZ28gdGhyb3VnaCByZWd1bGFyXG4gICAgICAgICAgICAgICAgYWNjZXB0YW5jZSBwcm9jZXNzLlxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTE2IG0tdC0xNlwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfc2VsZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkU2ltcGxlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRvd25sb2FkXCIgdHJhbnNsYXRlPjwvaT5cbiAgICAgICAgICAgICAgICB7eyAnRG93bmxvYWQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LXdoaXRlIHNlcGFyYXRvci1ib3R0b20gcC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04IHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+RnVsbCByZWdpc3RyYXRpb248L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIENyZWF0ZXMgYWxsIGRldmljZSBjcmVkZW50aWFscyBhbmQgZGV2aWNlcyB1c2luZyBwcm92aWRlZCBsaXN0IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgICAgICAgICAgICBEZXZpY2VzIGNhbiBzdGFydCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHBsYXRmb3JtIGltbWVkaWF0ZWx5LlxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTE2IG0tdC0xNlwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfc2VsZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRnVsbCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJkb3dubG9hZFwiIHRyYW5zbGF0ZT48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS13aGl0ZSBzZXBhcmF0b3ItYm90dG9tIHAtdC0xNiBwLWItMTYgcC1sLTI0IHAtci0yNFwiICpuZ0lmPVwiY2VydGlmaWNhdGVBdXRob3JpdHlGZWF0dXJlRW5hYmxlZCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tYi04IHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyB0cmFuc2xhdGU+RnVsbCByZWdpc3RyYXRpb24gd2l0aCBkZXZpY2UgY2VydGlmaWNhdGUgY3JlYXRpb248L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIENyZWF0ZXMgZGV2aWNlIGNlcnRpZmljYXRlcyBhbmQgZGV2aWNlcyB1c2luZyB0aGUgcHJvdmlkZWQgbGlzdCBvZiBwcm9wZXJ0eSB2YWx1ZXMuIE9uY2UgdGhlIGNlcnRpZmljYXRlcyBhcmUgcHJvdmlzaW9uZWQsIHRoZSBkZXZpY2VzIGNhbiBpbW1lZGlhdGVseSBzdGFydCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHBsYXRmb3JtXG4gICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWItMTYgbS10LTE2XCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRG93bmxvYWQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9zZWxmXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRFc3QoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiZG93bmxvYWRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICBjbGFzcz1cInN0aWNreS1ib3R0b20gZC1ibG9jayBwLXQtMTYgcC1iLTE2IHNlcGFyYXRvci10b3AgYmctbGV2ZWwtMFwiXG4gICAgICAgIFtzaG93QnV0dG9uc109XCJ7IGNhbmNlbDogdHJ1ZSwgbmV4dDogdHJ1ZSB9XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgIFtwZW5kaW5nXT1cInBlbmRpbmdcIlxuICAgICAgICAob25DYW5jZWwpPVwiY2FuY2VsKClcIlxuICAgICAgICAob25OZXh0KT1cInVwbG9hZCgpXCJcbiAgICAgICAgW2xhYmVsc109XCJ7IG5leHQ6ICdVcGxvYWQnIH1cIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuXG4gICAgPGNkay1zdGVwIHN0YXRlPVwiZmluYWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtLTI0XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWNjZXNzOyBlbHNlIHdhcm5pbmdcIj5cbiAgICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAgIHRleHQ9XCJ7eyBtZXNzYWdlIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICAgIFt2ZXJ0aWNhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI3dhcm5pbmc+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICB0ZXh0PVwie3sgbWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwiZXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwic2VwYXJhdG9yLXRvcCBtLXQtMTZcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0OyBlbHNlIGZhaWxlZFJlc3BvbnNlXCI+XG4gICAgICAgICAgICA8Yzh5LWxpICpuZ0lmPVwic3VjY2VzczsgZWxzZSBmYWlsXCI+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtc3VjY2Vzc1wiIGljb249XCJjaGVjay1jaXJjbGVcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8cD57eyAnQWxsIGRldmljZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3sgcmVzdWx0IHwganNvbiB9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgPC9jOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmFpbD5cbiAgICAgICAgICAgICAgPGM4eS1saT5cbiAgICAgICAgICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIGljb249XCJiYW5cIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgY291bnQ6IHJlc3VsdD8ubnVtYmVyT2ZGYWlsZWQsIHRvdGFsOiByZXN1bHQ/Lm51bWJlck9mQWxsIH1cIlxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgRmFpbGVkIHRvIHByb2Nlc3Mge3sgY291bnQgfX0gb3V0IG9mIHt7IHRvdGFsIH19LlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8Yzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT57eyByZXN1bHQgfCBqc29uIH19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNmYWlsZWRSZXNwb25zZT5cbiAgICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgW2ljb25dPVwiJ2JhbidcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgZmFpbGVkUmVzdWx0Py5tZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPGM4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPnt7IGZhaWxlZFJlc3VsdCB8IGpzb24gfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBuZXh0OiB0cnVlIH1cIlxuICAgICAgICAob25OZXh0KT1cImNvbXBsZXRlKClcIlxuICAgICAgICBbbGFiZWxzXT1cInsgbmV4dDogc3VjY2VzcyA/ICdDbG9zZScgOiAnQ2FuY2VsJyB9XCJcbiAgICAgID48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPC9jZGstc3RlcD5cbiAgPC9jOHktc3RlcHBlcj5cbjwvYzh5LW1vZGFsPlxuIl19