@provoly/dashboard 0.22.5 → 0.22.7

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 (560) hide show
  1. package/README.md +0 -2
  2. package/admin/components/admin-abac-rules/store/abac-rules.effects.d.ts +2 -2
  3. package/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.d.ts +8 -4
  4. package/admin/components/admin-classes/store/admin-class.effects.d.ts +2 -2
  5. package/admin/components/admin-fields/store/fields.effects.d.ts +2 -2
  6. package/admin/store/admin.effects.d.ts +3 -3
  7. package/components/metadata-editor/store/metadata.effects.d.ts +6 -6
  8. package/esm2022/admin/admin-routing.module.mjs +5 -5
  9. package/esm2022/admin/admin.module.mjs +6 -6
  10. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +5 -5
  11. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +5 -5
  12. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +5 -5
  13. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +5 -5
  14. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +5 -5
  15. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +5 -5
  16. package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +5 -5
  17. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +5 -5
  18. package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +5 -5
  19. package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +5 -5
  20. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +5 -5
  21. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +4 -4
  22. package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +11 -10
  23. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +5 -5
  24. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +47 -33
  25. package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +5 -5
  26. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +5 -5
  27. package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +4 -4
  28. package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +5 -5
  29. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -5
  30. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +5 -5
  31. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -5
  32. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +5 -5
  33. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +5 -5
  34. package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +5 -5
  35. package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +5 -5
  36. package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +5 -5
  37. package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +5 -5
  38. package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +4 -4
  39. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +5 -5
  40. package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +5 -5
  41. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +5 -5
  42. package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +4 -4
  43. package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +5 -5
  44. package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +5 -5
  45. package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +5 -5
  46. package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +5 -5
  47. package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +5 -5
  48. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +5 -5
  49. package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +4 -4
  50. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +5 -5
  51. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +5 -5
  52. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +5 -5
  53. package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +5 -5
  54. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +5 -5
  55. package/esm2022/admin/components/admin-links/admin-links.component.mjs +5 -5
  56. package/esm2022/admin/components/admin-links/store/links.effects.mjs +5 -5
  57. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +6 -6
  58. package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +5 -5
  59. package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +5 -5
  60. package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +5 -5
  61. package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +5 -5
  62. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +5 -5
  63. package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +5 -5
  64. package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +5 -5
  65. package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +5 -5
  66. package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +5 -5
  67. package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +4 -4
  68. package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +5 -5
  69. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +5 -5
  70. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +5 -5
  71. package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +5 -5
  72. package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +5 -5
  73. package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +5 -5
  74. package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +5 -5
  75. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +5 -5
  76. package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +5 -5
  77. package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +4 -4
  78. package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +5 -5
  79. package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +5 -5
  80. package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +5 -5
  81. package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +5 -5
  82. package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +5 -5
  83. package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +5 -5
  84. package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +5 -5
  85. package/esm2022/admin/components/admin-title/admin-title.component.mjs +5 -5
  86. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +5 -5
  87. package/esm2022/admin/components/admin-user/admin-user.component.mjs +5 -5
  88. package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +5 -5
  89. package/esm2022/admin/components/admin.component.mjs +5 -5
  90. package/esm2022/admin/components/association/association.component.mjs +4 -4
  91. package/esm2022/admin/store/admin.effects.mjs +5 -5
  92. package/esm2022/admin/store/admin.reducer.mjs +1 -1
  93. package/esm2022/admin/store/admin.selectors.mjs +1 -1
  94. package/esm2022/admin/store/admin.service.mjs +5 -5
  95. package/esm2022/components/card/card.component.mjs +20 -20
  96. package/esm2022/components/card/card.module.mjs +5 -5
  97. package/esm2022/components/checkbox/checkbox.component.mjs +5 -5
  98. package/esm2022/components/checkbox/checkbox.module.mjs +5 -5
  99. package/esm2022/components/color-picker/color-picker.component.mjs +5 -5
  100. package/esm2022/components/color-picker/color-picker.module.mjs +5 -5
  101. package/esm2022/components/expand-panel/expand-panel.component.mjs +7 -7
  102. package/esm2022/components/expand-panel/expand-panel.module.mjs +5 -5
  103. package/esm2022/components/filter/filter.module.mjs +5 -5
  104. package/esm2022/components/filter/filter.pipe.mjs +4 -4
  105. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +5 -5
  106. package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -5
  107. package/esm2022/components/metadata-editor/store/metadata.effects.mjs +5 -5
  108. package/esm2022/components/metadata-editor/store/metadata.service.mjs +5 -5
  109. package/esm2022/components/metadata-editor/style/css.component.mjs +4 -4
  110. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +5 -5
  111. package/esm2022/components/scheme-picker/scheme-picker.module.mjs +5 -5
  112. package/esm2022/components/scheme-picker/scheme.service.mjs +5 -5
  113. package/esm2022/components/sinceDate/sinceDate.module.mjs +5 -5
  114. package/esm2022/components/sinceDate/sinceDate.pipe.mjs +5 -5
  115. package/esm2022/components/stepper/step/step.component.mjs +4 -4
  116. package/esm2022/components/stepper/step-title.directive.mjs +5 -5
  117. package/esm2022/components/stepper/stepper.component.mjs +4 -4
  118. package/esm2022/components/stepper/stepper.module.mjs +5 -5
  119. package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +5 -5
  120. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +5 -5
  121. package/esm2022/dataset/components/dataset.component.mjs +5 -5
  122. package/esm2022/dataset/dataset.module.mjs +6 -6
  123. package/esm2022/dataset/style/css.component.mjs +4 -4
  124. package/esm2022/filters/autocomplete/autocomplete.component.mjs +5 -5
  125. package/esm2022/filters/autocomplete/autocomplete.module.mjs +5 -5
  126. package/esm2022/filters/autocomplete/style/css.component.mjs +4 -4
  127. package/esm2022/filters/date/date-filter.component.mjs +5 -5
  128. package/esm2022/filters/date/date-filter.module.mjs +5 -5
  129. package/esm2022/filters/list/list-filter.component.mjs +5 -5
  130. package/esm2022/filters/list/list-filter.module.mjs +5 -5
  131. package/esm2022/filters/list/style/css.component.mjs +4 -4
  132. package/esm2022/filters/number/number-filter.component.mjs +5 -5
  133. package/esm2022/filters/number/number-filter.module.mjs +5 -5
  134. package/esm2022/filters/text/text-filter.component.mjs +5 -5
  135. package/esm2022/filters/text/text-filter.module.mjs +5 -5
  136. package/esm2022/import/components/import.component.mjs +5 -5
  137. package/esm2022/import/import-routing.module.mjs +5 -5
  138. package/esm2022/import/import.module.mjs +6 -6
  139. package/esm2022/import/store/import.effects.mjs +5 -5
  140. package/esm2022/import/store/import.service.mjs +5 -5
  141. package/esm2022/import/style/css.component.mjs +4 -4
  142. package/esm2022/lib/core/access/access.directive.mjs +6 -6
  143. package/esm2022/lib/core/access/access.guard.mjs +4 -4
  144. package/esm2022/lib/core/access/access.service.mjs +5 -5
  145. package/esm2022/lib/core/access/access.utils.mjs +1 -1
  146. package/esm2022/lib/core/auth/geoAuth.service.mjs +5 -5
  147. package/esm2022/lib/core/components/about/about.component.mjs +6 -6
  148. package/esm2022/lib/core/components/about/pry-about.module.mjs +5 -5
  149. package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +5 -5
  150. package/esm2022/lib/core/components/accordion/accordion.component.mjs +5 -5
  151. package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +5 -5
  152. package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +6 -6
  153. package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +4 -4
  154. package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +5 -5
  155. package/esm2022/lib/core/components/chips-selector/chips-selector.component.mjs +5 -5
  156. package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +4 -4
  157. package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +5 -5
  158. package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +4 -4
  159. package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +5 -5
  160. package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +4 -4
  161. package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +5 -5
  162. package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +5 -5
  163. package/esm2022/lib/core/components/ellipsis.directive.mjs +5 -5
  164. package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +5 -5
  165. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +5 -5
  166. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +5 -5
  167. package/esm2022/lib/core/components/icon/icon.component.mjs +5 -5
  168. package/esm2022/lib/core/components/icon/icon.module.mjs +5 -5
  169. package/esm2022/lib/core/components/modal/modal.component.mjs +4 -4
  170. package/esm2022/lib/core/components/modal/pry-modal.module.mjs +5 -5
  171. package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +5 -5
  172. package/esm2022/lib/core/components/modal-status/modal-status.module.mjs +6 -6
  173. package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +5 -5
  174. package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +6 -6
  175. package/esm2022/lib/core/components/overlay/dialog-ref.mjs +1 -1
  176. package/esm2022/lib/core/components/overlay/dialog.service.mjs +5 -5
  177. package/esm2022/lib/core/components/overlay/overlay.directive.mjs +5 -5
  178. package/esm2022/lib/core/components/overlay/overlay.module.mjs +5 -5
  179. package/esm2022/lib/core/components/range/range.component.mjs +5 -5
  180. package/esm2022/lib/core/components/range/range.module.mjs +5 -5
  181. package/esm2022/lib/core/components/select/select-a11y.service.mjs +1 -1
  182. package/esm2022/lib/core/components/select/select.component.mjs +9 -8
  183. package/esm2022/lib/core/components/select/select.module.mjs +7 -6
  184. package/esm2022/lib/core/components/select-image/select-image.component.mjs +6 -6
  185. package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +5 -5
  186. package/esm2022/lib/core/components/share/share.component.mjs +5 -5
  187. package/esm2022/lib/core/components/share/share.module.mjs +5 -5
  188. package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +5 -5
  189. package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +5 -5
  190. package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +5 -5
  191. package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +4 -4
  192. package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +5 -5
  193. package/esm2022/lib/core/components/sort/sort-header.directive.mjs +4 -4
  194. package/esm2022/lib/core/components/sort/sort-table.directive.mjs +4 -4
  195. package/esm2022/lib/core/components/sort/sort.module.mjs +5 -5
  196. package/esm2022/lib/core/components/tabs/tab-group.component.mjs +5 -5
  197. package/esm2022/lib/core/components/tabs/tab.component.mjs +5 -5
  198. package/esm2022/lib/core/components/toggle/toggle.component.mjs +5 -5
  199. package/esm2022/lib/core/components/toggle/toggle.module.mjs +5 -5
  200. package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +5 -5
  201. package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +5 -5
  202. package/esm2022/lib/core/components/upload/upload.component.mjs +5 -5
  203. package/esm2022/lib/core/core.module.mjs +6 -6
  204. package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +5 -5
  205. package/esm2022/lib/core/i18n/deep-merge.function.mjs +1 -1
  206. package/esm2022/lib/core/i18n/fr.translations.mjs +2 -2
  207. package/esm2022/lib/core/i18n/i18n.module.mjs +5 -5
  208. package/esm2022/lib/core/i18n/i18n.pipe.mjs +5 -5
  209. package/esm2022/lib/core/i18n/i18n.service.mjs +5 -5
  210. package/esm2022/lib/core/model/display-options.interface.mjs +1 -1
  211. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +5 -5
  212. package/esm2022/lib/core/store/aggregation/base-aggregation.service.mjs +4 -4
  213. package/esm2022/lib/core/store/aggregation/frontend-aggregation/aggregation-utils.class.mjs +1 -2
  214. package/esm2022/lib/core/store/aggregation/frontend-aggregation/frontend-aggregation.service.mjs +5 -5
  215. package/esm2022/lib/core/store/category/category.effects.mjs +5 -5
  216. package/esm2022/lib/core/store/category/category.service.mjs +5 -5
  217. package/esm2022/lib/core/store/class/class.effects.mjs +5 -5
  218. package/esm2022/lib/core/store/class/class.selectors.mjs +1 -1
  219. package/esm2022/lib/core/store/class/class.service.mjs +5 -5
  220. package/esm2022/lib/core/store/config/config.effects.mjs +5 -5
  221. package/esm2022/lib/core/store/config/config.selectors.mjs +1 -1
  222. package/esm2022/lib/core/store/config/config.service.mjs +5 -5
  223. package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +5 -5
  224. package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +5 -5
  225. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +5 -5
  226. package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +1 -1
  227. package/esm2022/lib/core/store/data-source/data-source.service.mjs +5 -5
  228. package/esm2022/lib/core/store/field/field.effects.mjs +5 -5
  229. package/esm2022/lib/core/store/field/field.selectors.mjs +1 -1
  230. package/esm2022/lib/core/store/field/field.service.mjs +5 -5
  231. package/esm2022/lib/core/store/image/image.effects.mjs +5 -5
  232. package/esm2022/lib/core/store/image/image.selectors.mjs +1 -1
  233. package/esm2022/lib/core/store/image/image.service.mjs +5 -5
  234. package/esm2022/lib/core/store/item/item.effects.mjs +5 -5
  235. package/esm2022/lib/core/store/item/item.service.mjs +5 -5
  236. package/esm2022/lib/core/store/raw/raw.service.mjs +5 -5
  237. package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +5 -5
  238. package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +5 -5
  239. package/esm2022/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.mjs +1 -1
  240. package/esm2022/lib/core/store/search/search.effects.mjs +5 -5
  241. package/esm2022/lib/core/store/search/search.service.mjs +5 -5
  242. package/esm2022/lib/core/symbol/symbol.service.mjs +5 -5
  243. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +5 -5
  244. package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +5 -5
  245. package/esm2022/lib/core/ws/websocket.service.mjs +5 -5
  246. package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +5 -5
  247. package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +5 -5
  248. package/esm2022/lib/dashboard/base-widget.module.mjs +5 -5
  249. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +5 -5
  250. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +5 -5
  251. package/esm2022/lib/dashboard/components/dashboard.component.mjs +5 -5
  252. package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +5 -5
  253. package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +5 -5
  254. package/esm2022/lib/dashboard/components/solve-collisions.function.mjs +1 -1
  255. package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +4 -4
  256. package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +5 -5
  257. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +5 -5
  258. package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +5 -5
  259. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +5 -5
  260. package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +5 -5
  261. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +6 -6
  262. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +5 -5
  263. package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +5 -5
  264. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +21 -6
  265. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +5 -5
  266. package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +5 -5
  267. package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +1 -1
  268. package/esm2022/lib/dashboard/dashboard.module.mjs +6 -6
  269. package/esm2022/lib/dashboard/filter/base-filter.component.mjs +5 -5
  270. package/esm2022/lib/dashboard/filter/base-filter.module.mjs +5 -5
  271. package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +6 -6
  272. package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +5 -5
  273. package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +6 -6
  274. package/esm2022/lib/dashboard/filter/filter-loader.function.mjs +1 -1
  275. package/esm2022/lib/dashboard/filter/style/css.component.mjs +4 -4
  276. package/esm2022/lib/dashboard/item-utils.mjs +2 -2
  277. package/esm2022/lib/dashboard/resultset-utils.mjs +1 -1
  278. package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +6 -6
  279. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +6 -6
  280. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +1 -1
  281. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +1 -4
  282. package/esm2022/lib/dashboard/store/manifest.service.mjs +5 -5
  283. package/esm2022/lib/dashboard/store/refresh.service.mjs +16 -11
  284. package/esm2022/lib/dashboard/store/title.service.mjs +5 -5
  285. package/esm2022/lib/dashboard/store/wms.service.mjs +5 -5
  286. package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +4 -4
  287. package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +5 -5
  288. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +4 -4
  289. package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +6 -6
  290. package/esm2022/lib/dashboard/tooltip/tooltip-loader.function.mjs +1 -1
  291. package/esm2022/lib/dashboard/widget-loader.function.mjs +1 -1
  292. package/esm2022/notification/components/notification/content/notification-content.component.mjs +5 -5
  293. package/esm2022/notification/components/notification/notification.component.mjs +5 -5
  294. package/esm2022/notification/notification.module.mjs +6 -6
  295. package/esm2022/notification/store/notification.effects.mjs +5 -5
  296. package/esm2022/notification/store/notification.service.mjs +5 -5
  297. package/esm2022/notification/style/css.component.mjs +4 -4
  298. package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +5 -5
  299. package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +1 -1
  300. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +5 -5
  301. package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +5 -5
  302. package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +4 -4
  303. package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +5 -5
  304. package/esm2022/pipeline/node-class/base-node.class.mjs +1 -1
  305. package/esm2022/pipeline/pipeline.module.mjs +6 -6
  306. package/esm2022/pipeline/store/pipeline.effects.mjs +5 -5
  307. package/esm2022/pipeline/store/pipeline.service.mjs +5 -5
  308. package/esm2022/pipeline/style/css.component.mjs +4 -4
  309. package/esm2022/pipeline-components/filter/component/filter.component.mjs +5 -5
  310. package/esm2022/pipeline-components/filter/filter.module.mjs +6 -6
  311. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +5 -5
  312. package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +6 -6
  313. package/esm2022/pipeline-components/noop/component/noop.component.mjs +5 -5
  314. package/esm2022/pipeline-components/noop/noop.module.mjs +6 -6
  315. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +5 -5
  316. package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +6 -6
  317. package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +5 -5
  318. package/esm2022/pipeline-components/subgraph/node-class/sub-graph-node.class.mjs +1 -1
  319. package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +6 -6
  320. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +6 -6
  321. package/esm2022/presentation/components/presentation.component.mjs +6 -6
  322. package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +5 -5
  323. package/esm2022/presentation/presentation.module.mjs +6 -6
  324. package/esm2022/presentation/style/css.component.mjs +5 -5
  325. package/esm2022/restitution/components/restitution/restitution.component.mjs +5 -5
  326. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +6 -6
  327. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +5 -5
  328. package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +5 -5
  329. package/esm2022/restitution/restitution.module.mjs +6 -6
  330. package/esm2022/restitution/style/css.component.mjs +5 -5
  331. package/esm2022/search/components/choose-widget/choose-widget.component.mjs +5 -5
  332. package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +5 -5
  333. package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +5 -5
  334. package/esm2022/search/components/save-query/save-query.component.mjs +6 -6
  335. package/esm2022/search/components/save-query-button/save-query-button.component.mjs +5 -5
  336. package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +5 -5
  337. package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +5 -5
  338. package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +4 -4
  339. package/esm2022/search/search-home/search-home.component.mjs +5 -5
  340. package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +5 -5
  341. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +5 -5
  342. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +5 -5
  343. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +5 -5
  344. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +5 -5
  345. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +5 -5
  346. package/esm2022/search/search-mono-class/store/search-mono-class.selectors.mjs +1 -1
  347. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +4 -4
  348. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +5 -5
  349. package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +5 -5
  350. package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +5 -5
  351. package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +5 -5
  352. package/esm2022/search/search-multi-class/store/search-multi-class.reducer.mjs +1 -1
  353. package/esm2022/search/search-multi-class/store/search-multi-class.selectors.mjs +1 -1
  354. package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
  355. package/esm2022/search/search-tools/search-tools.component.mjs +5 -5
  356. package/esm2022/search/search.module.mjs +6 -6
  357. package/esm2022/search/style/css.component.mjs +5 -5
  358. package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +13 -10
  359. package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +5 -5
  360. package/esm2022/toolbox/components/delete/delete.component.mjs +5 -5
  361. package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +5 -5
  362. package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +5 -5
  363. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +5 -5
  364. package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +5 -5
  365. package/esm2022/toolbox/components/named-query/named-query.component.mjs +5 -5
  366. package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +20 -18
  367. package/esm2022/toolbox/components/save-view/save-view.component.mjs +5 -5
  368. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +5 -5
  369. package/esm2022/toolbox/components/share/share.component.mjs +5 -5
  370. package/esm2022/toolbox/components/switch-to-edit-content/switch-to-edit-content.component.mjs +5 -5
  371. package/esm2022/toolbox/components/toolbox-action/toolbox-action.component.mjs +5 -5
  372. package/esm2022/toolbox/components/toolbox-action-instanciator/toolbox-action-instanciator.component.mjs +5 -5
  373. package/esm2022/toolbox/components/toolbox.component.mjs +12 -9
  374. package/esm2022/toolbox/style/css.component.mjs +5 -5
  375. package/esm2022/toolbox/toolbox.module.mjs +5 -5
  376. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +5 -5
  377. package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -5
  378. package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +4 -4
  379. package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +5 -5
  380. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +6 -6
  381. package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +5 -5
  382. package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +6 -6
  383. package/esm2022/widgets/widget-chart/component/vega-error.handler.mjs +1 -1
  384. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +6 -6
  385. package/esm2022/widgets/widget-chart/style/css.component.mjs +4 -4
  386. package/esm2022/widgets/widget-chart/widget-chart.module.mjs +6 -6
  387. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +5 -5
  388. package/esm2022/widgets/widget-detail/style/css.component.mjs +4 -4
  389. package/esm2022/widgets/widget-detail/widget-detail.module.mjs +6 -6
  390. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +7 -8
  391. package/esm2022/widgets/widget-graph/layout/simple.function.mjs +1 -1
  392. package/esm2022/widgets/widget-graph/style/css.component.mjs +5 -5
  393. package/esm2022/widgets/widget-graph/widget-graph.module.mjs +6 -6
  394. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +5 -5
  395. package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +4 -4
  396. package/esm2022/widgets/widget-iframe/style/css.component.mjs +4 -4
  397. package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +6 -6
  398. package/esm2022/widgets/widget-image/component/widget-image.component.mjs +5 -5
  399. package/esm2022/widgets/widget-image/style/css.component.mjs +4 -4
  400. package/esm2022/widgets/widget-image/widget-image.module.mjs +5 -5
  401. package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +4 -4
  402. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +7 -7
  403. package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +1 -1
  404. package/esm2022/widgets/widget-map/interaction/layer-slider.class.mjs +1 -1
  405. package/esm2022/widgets/widget-map/interaction/selection-interaction.class.mjs +1 -1
  406. package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +5 -5
  407. package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +5 -5
  408. package/esm2022/widgets/widget-map/style/css.component.mjs +5 -5
  409. package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +1 -1
  410. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +1 -1
  411. package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +1 -1
  412. package/esm2022/widgets/widget-map/widget-map.module.mjs +6 -6
  413. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +5 -5
  414. package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +5 -5
  415. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +4 -4
  416. package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +5 -5
  417. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +5 -5
  418. package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +4 -4
  419. package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +6 -6
  420. package/esm2022/widgets/widget-table/style/css.component.mjs +4 -4
  421. package/esm2022/widgets/widget-table/widget-table.module.mjs +6 -6
  422. package/esm2022/widgets/widget-template/component/widget-template.component.mjs +5 -5
  423. package/esm2022/widgets/widget-template/style/css.component.mjs +4 -4
  424. package/esm2022/widgets/widget-template/widget-template.module.mjs +6 -6
  425. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +5 -5
  426. package/esm2022/widgets/widget-tile/style/css.component.mjs +4 -4
  427. package/esm2022/widgets/widget-tile/widget-tile.module.mjs +6 -6
  428. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +6 -6
  429. package/esm2022/widgets/widget-vega/style/css.component.mjs +4 -4
  430. package/esm2022/widgets/widget-vega/widget-vega.module.mjs +6 -6
  431. package/fesm2022/provoly-dashboard-admin.mjs +380 -365
  432. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  433. package/fesm2022/provoly-dashboard-components-card.mjs +23 -23
  434. package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
  435. package/fesm2022/provoly-dashboard-components-checkbox.mjs +8 -8
  436. package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
  437. package/fesm2022/provoly-dashboard-components-color-picker.mjs +8 -8
  438. package/fesm2022/provoly-dashboard-components-color-picker.mjs.map +1 -1
  439. package/fesm2022/provoly-dashboard-components-expand-panel.mjs +10 -10
  440. package/fesm2022/provoly-dashboard-components-expand-panel.mjs.map +1 -1
  441. package/fesm2022/provoly-dashboard-components-filter.mjs +7 -7
  442. package/fesm2022/provoly-dashboard-components-filter.mjs.map +1 -1
  443. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +19 -19
  444. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  445. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +12 -12
  446. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
  447. package/fesm2022/provoly-dashboard-components-sinceDate.mjs +8 -8
  448. package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
  449. package/fesm2022/provoly-dashboard-components-stepper.mjs +14 -14
  450. package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -1
  451. package/fesm2022/provoly-dashboard-dataset.mjs +20 -20
  452. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  453. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +11 -11
  454. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
  455. package/fesm2022/provoly-dashboard-filters-date.mjs +8 -8
  456. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
  457. package/fesm2022/provoly-dashboard-filters-list.mjs +11 -11
  458. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
  459. package/fesm2022/provoly-dashboard-filters-number.mjs +8 -8
  460. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  461. package/fesm2022/provoly-dashboard-filters-text.mjs +8 -8
  462. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  463. package/fesm2022/provoly-dashboard-import.mjs +24 -24
  464. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  465. package/fesm2022/provoly-dashboard-notification.mjs +24 -24
  466. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  467. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +9 -9
  468. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
  469. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +9 -9
  470. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
  471. package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +9 -9
  472. package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs.map +1 -1
  473. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +9 -9
  474. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
  475. package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +9 -9
  476. package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs.map +1 -1
  477. package/fesm2022/provoly-dashboard-pipeline.mjs +35 -35
  478. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  479. package/fesm2022/provoly-dashboard-presentation.mjs +23 -23
  480. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  481. package/fesm2022/provoly-dashboard-restitution.mjs +26 -26
  482. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  483. package/fesm2022/provoly-dashboard-search.mjs +95 -95
  484. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  485. package/fesm2022/provoly-dashboard-toolbox.mjs +98 -90
  486. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  487. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +8 -8
  488. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  489. package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +7 -7
  490. package/fesm2022/provoly-dashboard-tooltips-cluster.mjs.map +1 -1
  491. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +14 -14
  492. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  493. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +13 -13
  494. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  495. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +12 -12
  496. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  497. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +15 -16
  498. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  499. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +15 -15
  500. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
  501. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +11 -11
  502. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -1
  503. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +26 -26
  504. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  505. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +35 -35
  506. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  507. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +12 -12
  508. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
  509. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +12 -12
  510. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  511. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +13 -13
  512. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  513. package/fesm2022/provoly-dashboard.mjs +558 -542
  514. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  515. package/lib/core/components/select/select.module.d.ts +2 -1
  516. package/lib/core/store/image/image.effects.d.ts +3 -3
  517. package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +1 -1
  518. package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +8 -1
  519. package/lib/dashboard/store/dashboard.effects.d.ts +7 -7
  520. package/lib/dashboard/store/dashboard.selectors.d.ts +0 -13
  521. package/lib/dashboard/store/refresh.service.d.ts +3 -1
  522. package/package.json +40 -40
  523. package/presentation/style/_o-pry-presentation.scss +0 -3
  524. package/schematics/ng-add/index.js.map +1 -1
  525. package/search/search-mono-class/store/search-mono-class.effects.d.ts +3 -3
  526. package/styles/components/_a-chip.scss +6 -0
  527. package/styles/components/_a-pry-select.scss +13 -0
  528. package/styles/components/_a-range-slider.scss +4 -5
  529. package/styles/components/_m-nav-links.scss +2 -7
  530. package/styles/components/_o-widget.scss +6 -0
  531. package/styles-theme/abstracts-theme/variables/_variables-colors.scss +4 -3
  532. package/styles-theme/base-theme/_typography.theme.scss +5 -2
  533. package/styles-theme/components-theme/_a-btn.theme.scss +3 -7
  534. package/styles-theme/components-theme/_a-label.theme.scss +1 -0
  535. package/styles-theme/components-theme/_a-pry-select.theme.scss +4 -6
  536. package/styles-theme/components-theme/_a-range-slider.theme.scss +16 -16
  537. package/styles-theme/components-theme/_a-table.theme.scss +2 -2
  538. package/styles-theme/components-theme/_m-btn-sorttable.theme.scss +3 -3
  539. package/styles-theme/components-theme/_m-nav-links.theme.scss +18 -0
  540. package/styles-theme/components-theme/_o-pry-presentation.theme.scss +9 -0
  541. package/styles-theme/components-theme/_o-tabs.theme.scss +1 -1
  542. package/styles-theme/layout-theme/_o-base-layout.theme.scss +1 -0
  543. package/styles-theme/main-theme.scss +1 -0
  544. package/toolbox/components/automate-refresh/automate-refresh.component.d.ts +3 -1
  545. package/toolbox/components/refresh-datasets/refresh-datasets.component.d.ts +3 -2
  546. package/widgets/widget-aggregated-chart/style/_o-widget-chart.scss +3 -0
  547. package/widgets/widget-graph/component/widget-graph.component.d.ts +0 -1
  548. package/widgets/widget-graph/style/_o-widget-graph.scss +14 -0
  549. package/schematics/ng-add/index.spec.d.ts +0 -1
  550. package/schematics/ng-add/index.spec.js +0 -87
  551. package/schematics/ng-add/index.spec.js.map +0 -1
  552. package/schematics/ng-update/version-0-13/index.spec.d.ts +0 -1
  553. package/schematics/ng-update/version-0-13/index.spec.js +0 -184
  554. package/schematics/ng-update/version-0-13/index.spec.js.map +0 -1
  555. package/schematics/ng-update/version-0-14/index.spec.d.ts +0 -1
  556. package/schematics/ng-update/version-0-14/index.spec.js +0 -51
  557. package/schematics/ng-update/version-0-14/index.spec.js.map +0 -1
  558. package/schematics/ng-update/version-0-15/index.spec.d.ts +0 -1
  559. package/schematics/ng-update/version-0-15/index.spec.js +0 -51
  560. package/schematics/ng-update/version-0-15/index.spec.js.map +0 -1
@@ -246,13 +246,13 @@ export class PryObjectEditionComponent extends SubscriptionnerDirective {
246
246
  toggleInversion() {
247
247
  this.inversion = !this.inversion;
248
248
  }
249
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryObjectEditionComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Component }); }
250
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryObjectEditionComponent, selector: "pry-object-creation", inputs: { link: "link", object: "object", menu: "menu" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<button type=\"button\" class=\"a-btn -link-like\" (click)=\"openCreateObjectPanel($event)\" *ngIf=\"menu\">\n {{ '@pry.context.createObject.title.' + (link && object ? 'linkedObject' : link ? 'link' : 'object') | i18n }}\n</button>\n<button\n id=\"object_creator_link\"\n type=\"button\"\n (click)=\"openCreateObjectPanel($event)\"\n *ngIf=\"!menu\"\n class=\"a-btn a-btn--secondary -circle u-floating u-floating--bottom-right\"\n [title]=\"'@pry.context.createObject.title.object' | i18n\"\n>\n <span class=\"u-visually-hidden\">{{ '@pry.context.createObject.title.object' | i18n }}</span>\n <pry-icon iconSvg=\"add_column\" [width]=\"24\" [height]=\"24\" aria-hidden=\"true\"></pry-icon>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\">\n <div class=\"o-settings__popup__content\">\n <ng-container *ngIf=\"link\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_link\">{{ '@pry.context.createObject.title.link' | i18n }}</label>\n <pry-select\n [(ngModel)]=\"relation.typeId\"\n [items]=\"relations$ | async\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"createobject_link\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_inversion\">{{\n '@pry.context.createObject.title.inversion' | i18n\n }}</label>\n <pry-checkbox\n id=\"createobject_inversion\"\n [ngModel]=\"inversion\"\n (ngModelChange)=\"toggleInversion()\"\n ></pry-checkbox>\n </div>\n </ng-container>\n\n <div class=\"o-object-panel\" *ngIf=\"object\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_class\">{{ '@pry.context.createObject.class' | i18n }}</label>\n <pry-select\n [ngModel]=\"tmpObject.oClass\"\n (ngModelChange)=\"changeClass($event)\"\n [items]=\"classes\"\n bindValue=\"id\"\n bindLabel=\"name\"\n id=\"createobject_class\"\n ></pry-select>\n </div>\n\n <ng-container *ngFor=\"let attribute of attributes\" [class.multi-value]=\"attribute.multiValued\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\">{{ attribute.name }}</label>\n <ng-container *ngIf=\"!attribute.multiValued\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <div class=\"a-date-input\" tabindex=\"-1\" (blur)=\"closeDatePicker($event)\">\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n <div class=\"a-open-date-picker\" (mousedown)=\"toggleDatePicker($event, attribute.id)\"></div>\n <div class=\"date-picker-container\" *ngIf=\"selectedDatePicker === attribute.id\">\n <pry-date-picker\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.RAW\">\n <pry-select\n [ngModel]=\"method\"\n (ngModelChange)=\"setRawMethod(attribute, $event)\"\n [items]=\"rawMethods\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></pry-select>\n <input\n type=\"text\"\n class=\"a-form-field\"\n *ngIf=\"method === HTTP_ORIGIN_METHOD\"\n [ngModel]=\"valueMetadata(attribute, HTTP_ORIGIN_METADATA)\"\n (ngModelChange)=\"assignMetadata(attribute, $event, HTTP_ORIGIN_METADATA)\"\n />\n <ng-container *ngIf=\"method === UPLOAD_METHOD\">\n <pry-upload\n mode=\"doc\"\n accept=\"image/*,video/*\"\n (uploaded)=\"assignValue(attribute, $event)\"\n ></pry-upload>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"multi-value-container\" *ngIf=\"attribute.multiValued\">\n <button\n class=\"button-add a-btn a-btn--secondary a-btn--icon-text -size-sm\"\n (click)=\"addMultiValued(attribute)\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n <span>{{ '@pry.context.createObject.addMultiField' | i18n : { name: attribute.name } }}</span>\n </button>\n <div class=\"multi-value\" *ngFor=\"let multiValue of multiValues(attribute); let i = index\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <input\n type=\"datetime-local\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (focusout)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <button (click)=\"removeMultiValued(attribute, i)\">\n <pry-icon iconSvg=\"delete\"></pry-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"hide()\">\n {{ '@pry.context.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"createObjects()\" [disabled]=\"!valid\">\n {{ '@pry.context.create' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i6.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i7.PryUploadComponent, selector: "pry-upload", inputs: ["mode", "accept", "labelTranslate"], outputs: ["uploaded", "uploadedFile"] }, { kind: "component", type: i8.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i9.PryDatePickerComponent, selector: "pry-date-picker", inputs: ["rangePicker", "timePicker", "maxYear", "minYear", "roundSelection"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.I18nPipe, name: "i18n" }] }); }
249
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryObjectEditionComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Component }); }
250
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryObjectEditionComponent, selector: "pry-object-creation", inputs: { link: "link", object: "object", menu: "menu" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<button type=\"button\" class=\"a-btn -link-like\" (click)=\"openCreateObjectPanel($event)\" *ngIf=\"menu\">\n {{ '@pry.context.createObject.title.' + (link && object ? 'linkedObject' : link ? 'link' : 'object') | i18n }}\n</button>\n<button\n id=\"object_creator_link\"\n type=\"button\"\n (click)=\"openCreateObjectPanel($event)\"\n *ngIf=\"!menu\"\n class=\"a-btn a-btn--secondary -circle u-floating u-floating--bottom-right\"\n [title]=\"'@pry.context.createObject.title.object' | i18n\"\n>\n <span class=\"u-visually-hidden\">{{ '@pry.context.createObject.title.object' | i18n }}</span>\n <pry-icon iconSvg=\"add_column\" [width]=\"24\" [height]=\"24\" aria-hidden=\"true\"></pry-icon>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\">\n <div class=\"o-settings__popup__content\">\n <ng-container *ngIf=\"link\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_link\">{{ '@pry.context.createObject.title.link' | i18n }}</label>\n <pry-select\n [(ngModel)]=\"relation.typeId\"\n [items]=\"relations$ | async\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"createobject_link\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_inversion\">{{\n '@pry.context.createObject.title.inversion' | i18n\n }}</label>\n <pry-checkbox\n id=\"createobject_inversion\"\n [ngModel]=\"inversion\"\n (ngModelChange)=\"toggleInversion()\"\n ></pry-checkbox>\n </div>\n </ng-container>\n\n <div class=\"o-object-panel\" *ngIf=\"object\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_class\">{{ '@pry.context.createObject.class' | i18n }}</label>\n <pry-select\n [ngModel]=\"tmpObject.oClass\"\n (ngModelChange)=\"changeClass($event)\"\n [items]=\"classes\"\n bindValue=\"id\"\n bindLabel=\"name\"\n id=\"createobject_class\"\n ></pry-select>\n </div>\n\n <ng-container *ngFor=\"let attribute of attributes\" [class.multi-value]=\"attribute.multiValued\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\">{{ attribute.name }}</label>\n <ng-container *ngIf=\"!attribute.multiValued\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <div class=\"a-date-input\" tabindex=\"-1\" (blur)=\"closeDatePicker($event)\">\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n <div class=\"a-open-date-picker\" (mousedown)=\"toggleDatePicker($event, attribute.id)\"></div>\n <div class=\"date-picker-container\" *ngIf=\"selectedDatePicker === attribute.id\">\n <pry-date-picker\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.RAW\">\n <pry-select\n [ngModel]=\"method\"\n (ngModelChange)=\"setRawMethod(attribute, $event)\"\n [items]=\"rawMethods\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></pry-select>\n <input\n type=\"text\"\n class=\"a-form-field\"\n *ngIf=\"method === HTTP_ORIGIN_METHOD\"\n [ngModel]=\"valueMetadata(attribute, HTTP_ORIGIN_METADATA)\"\n (ngModelChange)=\"assignMetadata(attribute, $event, HTTP_ORIGIN_METADATA)\"\n />\n <ng-container *ngIf=\"method === UPLOAD_METHOD\">\n <pry-upload\n mode=\"doc\"\n accept=\"image/*,video/*\"\n (uploaded)=\"assignValue(attribute, $event)\"\n ></pry-upload>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"multi-value-container\" *ngIf=\"attribute.multiValued\">\n <button\n class=\"button-add a-btn a-btn--secondary a-btn--icon-text -size-sm\"\n (click)=\"addMultiValued(attribute)\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n <span>{{ '@pry.context.createObject.addMultiField' | i18n : { name: attribute.name } }}</span>\n </button>\n <div class=\"multi-value\" *ngFor=\"let multiValue of multiValues(attribute); let i = index\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <input\n type=\"datetime-local\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (focusout)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <button (click)=\"removeMultiValued(attribute, i)\">\n <pry-icon iconSvg=\"delete\"></pry-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"hide()\">\n {{ '@pry.context.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"createObjects()\" [disabled]=\"!valid\">\n {{ '@pry.context.create' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared"] }, { kind: "component", type: i6.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i7.PryUploadComponent, selector: "pry-upload", inputs: ["mode", "accept", "labelTranslate"], outputs: ["uploaded", "uploadedFile"] }, { kind: "component", type: i8.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i9.PryDatePickerComponent, selector: "pry-date-picker", inputs: ["rangePicker", "timePicker", "maxYear", "minYear", "roundSelection"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.I18nPipe, name: "i18n" }] }); }
251
251
  }
252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryObjectEditionComponent, decorators: [{
252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryObjectEditionComponent, decorators: [{
253
253
  type: Component,
254
254
  args: [{ selector: 'pry-object-creation', template: "<button type=\"button\" class=\"a-btn -link-like\" (click)=\"openCreateObjectPanel($event)\" *ngIf=\"menu\">\n {{ '@pry.context.createObject.title.' + (link && object ? 'linkedObject' : link ? 'link' : 'object') | i18n }}\n</button>\n<button\n id=\"object_creator_link\"\n type=\"button\"\n (click)=\"openCreateObjectPanel($event)\"\n *ngIf=\"!menu\"\n class=\"a-btn a-btn--secondary -circle u-floating u-floating--bottom-right\"\n [title]=\"'@pry.context.createObject.title.object' | i18n\"\n>\n <span class=\"u-visually-hidden\">{{ '@pry.context.createObject.title.object' | i18n }}</span>\n <pry-icon iconSvg=\"add_column\" [width]=\"24\" [height]=\"24\" aria-hidden=\"true\"></pry-icon>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\">\n <div class=\"o-settings__popup__content\">\n <ng-container *ngIf=\"link\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_link\">{{ '@pry.context.createObject.title.link' | i18n }}</label>\n <pry-select\n [(ngModel)]=\"relation.typeId\"\n [items]=\"relations$ | async\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"createobject_link\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_inversion\">{{\n '@pry.context.createObject.title.inversion' | i18n\n }}</label>\n <pry-checkbox\n id=\"createobject_inversion\"\n [ngModel]=\"inversion\"\n (ngModelChange)=\"toggleInversion()\"\n ></pry-checkbox>\n </div>\n </ng-container>\n\n <div class=\"o-object-panel\" *ngIf=\"object\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"createobject_class\">{{ '@pry.context.createObject.class' | i18n }}</label>\n <pry-select\n [ngModel]=\"tmpObject.oClass\"\n (ngModelChange)=\"changeClass($event)\"\n [items]=\"classes\"\n bindValue=\"id\"\n bindLabel=\"name\"\n id=\"createobject_class\"\n ></pry-select>\n </div>\n\n <ng-container *ngFor=\"let attribute of attributes\" [class.multi-value]=\"attribute.multiValued\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\">{{ attribute.name }}</label>\n <ng-container *ngIf=\"!attribute.multiValued\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <div class=\"a-date-input\" tabindex=\"-1\" (blur)=\"closeDatePicker($event)\">\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n <div class=\"a-open-date-picker\" (mousedown)=\"toggleDatePicker($event, attribute.id)\"></div>\n <div class=\"date-picker-container\" *ngIf=\"selectedDatePicker === attribute.id\">\n <pry-date-picker\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n [roundSelection]=\"true\"\n [timePicker]=\"true\"\n ></pry-date-picker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [ngModel]=\"value(attribute)\"\n (ngModelChange)=\"assignValue(attribute, $event)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.RAW\">\n <pry-select\n [ngModel]=\"method\"\n (ngModelChange)=\"setRawMethod(attribute, $event)\"\n [items]=\"rawMethods\"\n bindValue=\"id\"\n bindLabel=\"name\"\n ></pry-select>\n <input\n type=\"text\"\n class=\"a-form-field\"\n *ngIf=\"method === HTTP_ORIGIN_METHOD\"\n [ngModel]=\"valueMetadata(attribute, HTTP_ORIGIN_METADATA)\"\n (ngModelChange)=\"assignMetadata(attribute, $event, HTTP_ORIGIN_METADATA)\"\n />\n <ng-container *ngIf=\"method === UPLOAD_METHOD\">\n <pry-upload\n mode=\"doc\"\n accept=\"image/*,video/*\"\n (uploaded)=\"assignValue(attribute, $event)\"\n ></pry-upload>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"multi-value-container\" *ngIf=\"attribute.multiValued\">\n <button\n class=\"button-add a-btn a-btn--secondary a-btn--icon-text -size-sm\"\n (click)=\"addMultiValued(attribute)\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n <span>{{ '@pry.context.createObject.addMultiField' | i18n : { name: attribute.name } }}</span>\n </button>\n <div class=\"multi-value\" *ngFor=\"let multiValue of multiValues(attribute); let i = index\">\n <ng-container [ngSwitch]=\"fieldType(attribute)\">\n <ng-container *ngSwitchCase=\"FieldType.INSTANT\">\n <input\n type=\"datetime-local\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (focusout)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.DECIMAL\">\n <input\n type=\"number\"\n step=\"any\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"FieldType.INTEGER\">\n <input\n type=\"number\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input\n type=\"text\"\n [ngModel]=\"valueMulti(attribute, i)\"\n (ngModelChange)=\"assignValueMulti(attribute, $event, i)\"\n />\n </ng-container>\n <button (click)=\"removeMultiValued(attribute, i)\">\n <pry-icon iconSvg=\"delete\"></pry-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"hide()\">\n {{ '@pry.context.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"createObjects()\" [disabled]=\"!valid\">\n {{ '@pry.context.create' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n" }]
255
- }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i2.Store }]; }, propDecorators: { link: [{
255
+ }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i2.Store }], propDecorators: { link: [{
256
256
  type: Input
257
257
  }], object: [{
258
258
  type: Input
@@ -264,4 +264,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
264
264
  }], closed: [{
265
265
  type: Output
266
266
  }] } });
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWVkaXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL2NvbnRleHQtbWVudS9vYmplY3QtZWRpdGlvbi9vYmplY3QtZWRpdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvY29udGV4dC1tZW51L29iamVjdC1lZGl0aW9uL29iamVjdC1lZGl0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2xHLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxN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QUMsU0FBb0IsRUFBRSxNQUFXLEVBQUUsSUFBWTtRQUM1RCxJQUFJLENBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBMEIsQ0FBQyxRQUFRLEVBQUU7WUFDekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBMEIsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQzVHO2FBQU07WUFDTCxhQUFhO1lBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBMEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQ3RHO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDOytHQTVQVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixxT0FNTCxXQUFXLG9EQ2pDNUMsc3lRQTRMQTs7NEZEakthLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSxxQkFBcUI7aUpBSXRCLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUd3QyxRQUFRO3NCQUFyRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBT2xDLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUsIEF0dHJpYnV0ZVNpbXBsZVZhbHVlLCBJdGVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbC9pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBdHRyaWJ1dGUsIENsYXNzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9jbGFzcy9jbGFzcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBDb25maWdBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9jb25maWcvY29uZmlnLmFjdGlvbnMnO1xuaW1wb3J0IHsgQ29udGV4dE1lbnVTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuc2VsZWN0b3JzJztcbmltcG9ydCB7IEZpZWxkLCBGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2ZpZWxkL2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWVsZFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvZmllbGQvZmllbGQuc2VsZWN0b3JzJztcbmltcG9ydCB7IEl0ZW1BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9pdGVtL2l0ZW0uYWN0aW9ucyc7XG5pbXBvcnQgeyBSZWxhdGlvblR5cGVzQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvcmVsYXRpb24tdHlwZXMvcmVsYXRpb24tdHlwZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBSZWxhdGlvblR5cGVzU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9yZWxhdGlvbi10eXBlcy9yZWxhdGlvbi10eXBlcy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRGF0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vZGF0ZS11dGlscyc7XG5pbXBvcnQgeyBJdGVtVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9pdGVtLXV0aWxzJztcbmltcG9ydCB7IERhc2hib2FyZFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vc3Vic2NyaXB0aW9ubmVyLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBIVFRQX09SSUdJTl9NRVRBREFUQSA9ICdfaHR0cF9vcmlnaW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktb2JqZWN0LWNyZWF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1lZGl0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlPYmplY3RFZGl0aW9uQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgbGluazogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBvYmplY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWVudTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIGl0ZW1JZCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZnJvbSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgaXRlbUlkPzogc3RyaW5nO1xuICBjb29yZGluYXRlczogbnVtYmVyW10gfCB1bmRlZmluZWQ7XG4gIHRtcE9iamVjdDogSXRlbSA9IHRoaXMubmV3T2JqZWN0KCk7XG4gIGZyb206IHN0cmluZyA9ICcnO1xuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBjbGFzc2VzOiBDbGFzc1tdID0gW107XG4gIGZpZWxkczogRmllbGRbXSA9IFtdO1xuICBGaWVsZFR5cGUgPSBGaWVsZFR5cGU7XG4gIHJlbGF0aW9ucyQ6IE9ic2VydmFibGU8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXT47XG4gIHJlbGF0aW9uITogeyB0eXBlSWQ6IHN0cmluZzsgaXRlbUlkOiBzdHJpbmcgfTtcbiAgc2VsZWN0ZWRJdGVtc0lkcyE6IHN0cmluZ1tdO1xuICBVUExPQURfTUVUSE9EID0gJ3VwbG9hZCc7XG4gIEhUVFBfT1JJR0lOX01FVEhPRCA9ICdtZXRhZGF0YSc7XG4gIEhUVFBfT1JJR0lOX01FVEFEQVRBID0gSFRUUF9PUklHSU5fTUVUQURBVEE7XG4gIHJhd01ldGhvZHMgPSBbXG4gICAgeyBpZDogdGhpcy5IVFRQX09SSUdJTl9NRVRIT0QsIG5hbWU6ICdAcHJ5LmFkbWluLmZpZWxkcy5yYXdNZXRob2RzLmh0dHAnIH0sXG4gICAge1xuICAgICAgaWQ6IHRoaXMuVVBMT0FEX01FVEhPRCxcbiAgICAgIG5hbWU6ICdAcHJ5LmFkbWluLmZpZWxkcy5yYXdNZXRob2RzLnVwbG9hZCdcbiAgICB9XG4gIF07XG4gIG1ldGhvZCA9IHRoaXMuVVBMT0FEX01FVEhPRDtcbiAgc2VsZWN0ZWREYXRlUGlja2VyOiBzdHJpbmcgPSAnJztcbiAgaW52ZXJzaW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLml0ZW1JZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5pdGVtSWQpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5jb29yZGluYXRlcykuc3Vic2NyaWJlKChjb29yZGluYXRlcykgPT4gKHRoaXMuY29vcmRpbmF0ZXMgPSBjb29yZGluYXRlcykpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuaXRlbUlkJC5zdWJzY3JpYmUoKGl0ZW1JZCkgPT4gKHRoaXMuaXRlbUlkID0gaXRlbUlkKSkpO1xuICAgIHRoaXMuZnJvbSQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5mcm9tKTtcbiAgICB0aGlzLnJlbGF0aW9ucyQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KFJlbGF0aW9uVHlwZXNTZWxlY3RvcnMucmVsYXRpb25zVHlwZXMpXG4gICAgICAucGlwZShtYXAoKHJlbGF0aW9ucykgPT4gKHJlbGF0aW9ucyB8fCBbXSkubWFwKChyZWwpID0+ICh7IGlkOiByZWwuaWQsIGxhYmVsOiByZWwubmFtZSB9KSkpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5mcm9tJCwgdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcyldKVxuICAgICAgICAucGlwZShtYXAoKFtmcm9tLCBjbGFzc2VzXSkgPT4gY2xhc3Nlcy5maWx0ZXIoKGNsYXp6KSA9PiBmcm9tICE9PSAnbWFwJyB8fCBJdGVtVXRpbHMuaGFzTG9jYXRpb24oY2xhenopKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNsYXNzZXMpID0+ICh0aGlzLmNsYXNzZXMgPSBjbGFzc2VzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5zdG9yZS5zZWxlY3QoRmllbGRTZWxlY3RvcnMuZmllbGRzKS5zdWJzY3JpYmUoKGZpZWxkcykgPT4gKHRoaXMuZmllbGRzID0gZmllbGRzKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5mcm9tJC5zdWJzY3JpYmUoKGZyb20pID0+ICh0aGlzLmZyb20gPSBmcm9tKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKS5zdWJzY3JpYmUoKGl0ZW1JZHMpID0+ICh0aGlzLnNlbGVjdGVkSXRlbXNJZHMgPSBpdGVtSWRzKSlcbiAgICApO1xuICB9XG5cbiAgb3BlbkNyZWF0ZU9iamVjdFBhbmVsKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMucmVsYXRpb24gPSB7IHR5cGVJZDogJycsIGl0ZW1JZDogdGhpcy5pdGVtSWQgPz8gJycgfTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgcGFuZWxDbGFzczogWydtLWNvbnRleHQtbWVudScsICdjcmVhdGUtb2JqZWN0LXBhbmVsJ10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLmhpZGUoKSk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gIH1cblxuICBuZXdPYmplY3QoKSB7XG4gICAgcmV0dXJuIHsgaWQ6IHV1aWR2NCgpLCBvQ2xhc3M6ICcnLCBhdHRyaWJ1dGVzOiB7fSwgbWV0YWRhdGE6IHt9IH07XG4gIH1cblxuICBnZXQgdmFsaWQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICghdGhpcy5vYmplY3QgfHwgSXRlbVV0aWxzLmlzVmFsaWRPYmplY3QodGhpcy50bXBPYmplY3QpKSAmJiAoIXRoaXMubGluayB8fCAodGhpcy5yZWxhdGlvbj8udHlwZUlkID8/IGZhbHNlKSlcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlT2JqZWN0cygpIHtcbiAgICBsZXQgcmVsYXRpb24gPSB7XG4gICAgICBmcm9tOiB0aGlzLnNlbGVjdGVkSXRlbXNJZHMsXG4gICAgICB0bzogdGhpcy5yZWxhdGlvbj8uaXRlbUlkID8/ICcnLFxuICAgICAgdHlwZUlkOiB0aGlzLnJlbGF0aW9uPy50eXBlSWQgPz8gJycsXG4gICAgICBpbnZlcnNpb246IHRoaXMuaW52ZXJzaW9uXG4gICAgfTtcbiAgICBpZiAodGhpcy5vYmplY3QpIHtcbiAgICAgIHRoaXMudG1wT2JqZWN0ID0gSXRlbVV0aWxzLmVuc3VyZUl0ZW1JZEhhc0NvcnJlY3RGb3JtYXQodGhpcy50bXBPYmplY3QpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChJdGVtQWN0aW9ucy5jcmVhdGUoeyBpdGVtOiB0aGlzLnRtcE9iamVjdCB9KSk7XG4gICAgICBpZiAodGhpcy5saW5rKSB7XG4gICAgICAgIHJlbGF0aW9uLmZyb20gPSBbdGhpcy50bXBPYmplY3QuaWRdO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJlbGF0aW9uVHlwZXNBY3Rpb25zLmNyZWF0ZVJlbGF0aW9uKHJlbGF0aW9uKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUmVsYXRpb25UeXBlc0FjdGlvbnMuY3JlYXRlUmVsYXRpb24ocmVsYXRpb24pKTtcbiAgICB9XG5cbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIGdldCBhdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNsYXNzZXMuZmluZCgoY2wpID0+IGNsLmlkID09PSB0aGlzLnRtcE9iamVjdC5vQ2xhc3MpPy5hdHRyaWJ1dGVzID8/IFtdO1xuICB9XG5cbiAgZmllbGRUeXBlKGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBhdHRyaWJ1dGUuZmllbGQgPT09IGZpZWxkLmlkKT8udHlwZTtcbiAgfVxuXG4gIGFzc2lnblZhbHVlKGF0dHJpYnV0ZTogQXR0cmlidXRlLCAkZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID1cbiAgICAgIHRoaXMuZmllbGRUeXBlKGF0dHJpYnV0ZSkgPT09IEZpZWxkVHlwZS5JTlNUQU5UICYmICRldmVudCAhPT0gJycgPyBuZXcgRGF0ZSgkZXZlbnQpLmdldFRpbWUoKSA6ICRldmVudDtcbiAgICBpZiAoIXRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdKSB7XG4gICAgICB0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSA9IHsgdHlwZTogJ1ZBTFVFJywgbWV0YWRhdGE6IHt9LCB2YWx1ZSwgdmlzaWJsZTogdHJ1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgdmFsdWUoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSk/LnZhbHVlO1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZShhdHRyaWJ1dGUpID09PSBGaWVsZFR5cGUuSU5TVEFOVCkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnID8gRGF0ZVV0aWxzLmZvcm1hdERhdGUobmV3IERhdGUodmFsdWUgYXMgc3RyaW5nIHwgbnVtYmVyKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiAoKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKSA/PyB7fSkudmFsdWU7XG4gIH1cblxuICB0b2dnbGVEYXRlUGlja2VyKCRldmVudDogRXZlbnQsIGlkOiBzdHJpbmcpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlUGlja2VyID09PSBpZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGVQaWNrZXIgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGVQaWNrZXIgPSBpZDtcbiAgICB9XG4gIH1cblxuICBjbG9zZURhdGVQaWNrZXIoJGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghKCRldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jb250YWlucygoJGV2ZW50IGFzIE1vdXNlRXZlbnQpLnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUGlja2VyID0gJyc7XG4gICAgfVxuICB9XG5cbiAgbXVsdGlWYWx1ZXMoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICByZXR1cm4gKCh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKSA/PyB7IHZhbHVlczogW10gfSkudmFsdWVzO1xuICB9XG5cbiAgcmVtb3ZlTXVsdGlWYWx1ZWQoYXR0cmlidXRlOiBBdHRyaWJ1dGUsIGk6IG51bWJlcikge1xuICAgICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKS52YWx1ZXMuc3BsaWNlKGksIDEpO1xuICB9XG5cbiAgYWRkTXVsdGlWYWx1ZWQoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBpZiAoIXRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdKSB7XG4gICAgICB0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSA9IHsgdHlwZTogJ01VTFRJJywgdmFsdWVzOiBbXSB9O1xuICAgIH1cbiAgICAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSkudmFsdWVzLnB1c2goe1xuICAgICAgdHlwZTogJ1ZBTFVFJyxcbiAgICAgIG1ldGFkYXRhOiB7fSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB2aXNpYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKS52YWx1ZXMubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHZhbHVlTXVsdGkoYXR0cmlidXRlOiBBdHRyaWJ1dGUsIGk6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLm11bHRpVmFsdWVzKGF0dHJpYnV0ZSlbaV0udmFsdWU7XG4gIH1cblxuICBhc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZTogQXR0cmlidXRlLCAkZXZlbnQ6IGFueSwgaTogbnVtYmVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZpZWxkVHlwZShhdHRyaWJ1dGUpID09PSBGaWVsZFR5cGUuSU5TVEFOVCA/IG5ldyBEYXRlKCRldmVudCkuZ2V0VGltZSgpIDogJGV2ZW50O1xuICAgIGlmICghdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0pIHtcbiAgICAgIHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdID0geyB0eXBlOiAnTVVMVEknLCB2YWx1ZXM6IFtdIH07XG4gICAgfVxuICAgIGlmICghKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpLnZhbHVlc1tpXSkge1xuICAgICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpLnZhbHVlc1tpXSA9IHtcbiAgICAgICAgdHlwZTogJ1ZBTFVFJyxcbiAgICAgICAgbWV0YWRhdGE6IHt9LFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpLnZhbHVlc1tpXS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUNsYXNzKCRldmVudDogYW55KSB7XG4gICAgdGhpcy50bXBPYmplY3QgPSB0aGlzLm5ld09iamVjdCgpO1xuICAgIHRoaXMudG1wT2JqZWN0Lm9DbGFzcyA9ICRldmVudDtcbiAgICBpZiAodGhpcy5mcm9tID09PSAnbWFwJykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzLmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICBpZiAoWydsYXRpdHVkZScsICdsYXQnXS5pbmRleE9mKGF0dHJpYnV0ZS50ZWNobmljYWxOYW1lKSA+PSAwKSB7XG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZS5tdWx0aVZhbHVlZCkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5hZGRNdWx0aVZhbHVlZChhdHRyaWJ1dGUpO1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZSwgKHRoaXMuY29vcmRpbmF0ZXMgPz8gW10pWzBdLCBpZHgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgKHRoaXMuY29vcmRpbmF0ZXMgPz8gW10pWzBdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFsnbG9uZ2l0dWRlJywgJ2xvbmcnLCAnbG9uJywgJ2xuZyddLmluZGV4T2YoYXR0cmlidXRlLnRlY2huaWNhbE5hbWUpID49IDApIHtcbiAgICAgICAgICBpZiAoYXR0cmlidXRlLm11bHRpVmFsdWVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLmFkZE11bHRpVmFsdWVkKGF0dHJpYnV0ZSk7XG4gICAgICAgICAgICB0aGlzLmFzc2lnblZhbHVlTXVsdGkoYXR0cmlidXRlLCAodGhpcy5jb29yZGluYXRlcyA/PyBbXSlbMV0sIGlkeCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduVmFsdWUoYXR0cmlidXRlLCAodGhpcy5jb29yZGluYXRlcyA/PyBbXSlbMV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0UmF3TWV0aG9kKGF0dHJpYnV0ZTogQXR0cmlidXRlLCAkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubWV0aG9kID0gJGV2ZW50O1xuICAgIGlmICghdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0pIHtcbiAgICAgIHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdID0ge1xuICAgICAgICB0eXBlOiAnVkFMVUUnLFxuICAgICAgICBtZXRhZGF0YToge30sXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKCRldmVudCA9PT0gdGhpcy5IVFRQX09SSUdJTl9NRVRIT0QpIHtcbiAgICAgIHRoaXMuYXNzaWduTWV0YWRhdGEoYXR0cmlidXRlLCAnJywgSFRUUF9PUklHSU5fTUVUQURBVEEpO1xuICAgIH1cbiAgICBpZiAoJGV2ZW50ID09PSB0aGlzLlVQTE9BRF9NRVRIT0QpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGRlbGV0ZSAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLm1ldGFkYXRhW0hUVFBfT1JJR0lOX01FVEFEQVRBXTtcbiAgICB9XG4gIH1cblxuICB2YWx1ZU1ldGFkYXRhKGF0dHJpYnV0ZTogQXR0cmlidXRlLCB0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKCgodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpID8/IHt9KS5tZXRhZGF0YSA/PyB7fSlbdHlwZV07XG4gIH1cblxuICBhc3NpZ25NZXRhZGF0YShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgJGV2ZW50OiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIGlmICghKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS5tZXRhZGF0YSkge1xuICAgICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS5tZXRhZGF0YSA9IHsgW3R5cGVdOiAkZXZlbnQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS5tZXRhZGF0YVt0eXBlXSA9ICRldmVudDtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVJbnZlcnNpb24oKSB7XG4gICAgdGhpcy5pbnZlcnNpb24gPSAhdGhpcy5pbnZlcnNpb247XG4gIH1cbn1cbiIsIjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiIChjbGljayk9XCJvcGVuQ3JlYXRlT2JqZWN0UGFuZWwoJGV2ZW50KVwiICpuZ0lmPVwibWVudVwiPlxuICB7eyAnQHByeS5jb250ZXh0LmNyZWF0ZU9iamVjdC50aXRsZS4nICsgKGxpbmsgJiYgb2JqZWN0ID8gJ2xpbmtlZE9iamVjdCcgOiBsaW5rID8gJ2xpbmsnIDogJ29iamVjdCcpIHwgaTE4biB9fVxuPC9idXR0b24+XG48YnV0dG9uXG4gIGlkPVwib2JqZWN0X2NyZWF0b3JfbGlua1wiXG4gIHR5cGU9XCJidXR0b25cIlxuICAoY2xpY2spPVwib3BlbkNyZWF0ZU9iamVjdFBhbmVsKCRldmVudClcIlxuICAqbmdJZj1cIiFtZW51XCJcbiAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1jaXJjbGUgdS1mbG9hdGluZyB1LWZsb2F0aW5nLS1ib3R0b20tcmlnaHRcIlxuICBbdGl0bGVdPVwiJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QudGl0bGUub2JqZWN0JyB8IGkxOG5cIlxuPlxuICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QudGl0bGUub2JqZWN0JyB8IGkxOG4gfX08L3NwYW4+XG4gIDxwcnktaWNvbiBpY29uU3ZnPVwiYWRkX2NvbHVtblwiIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3ByeS1pY29uPlxuPC9idXR0b24+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpbmtcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjcmVhdGVvYmplY3RfbGlua1wiPnt7ICdAcHJ5LmNvbnRleHQuY3JlYXRlT2JqZWN0LnRpdGxlLmxpbmsnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicmVsYXRpb24udHlwZUlkXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJyZWxhdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgaWQ9XCJjcmVhdGVvYmplY3RfbGlua1wiXG4gICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY3JlYXRlb2JqZWN0X2ludmVyc2lvblwiPnt7XG4gICAgICAgICAgICAnQHByeS5jb250ZXh0LmNyZWF0ZU9iamVjdC50aXRsZS5pbnZlcnNpb24nIHwgaTE4blxuICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICA8cHJ5LWNoZWNrYm94XG4gICAgICAgICAgICBpZD1cImNyZWF0ZW9iamVjdF9pbnZlcnNpb25cIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiaW52ZXJzaW9uXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZUludmVyc2lvbigpXCJcbiAgICAgICAgICA+PC9wcnktY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW9iamVjdC1wYW5lbFwiICpuZ0lmPVwib2JqZWN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY3JlYXRlb2JqZWN0X2NsYXNzXCI+e3sgJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QuY2xhc3MnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInRtcE9iamVjdC5vQ2xhc3NcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ2xhc3MoJGV2ZW50KVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiY2xhc3Nlc1wiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgIGlkPVwiY3JlYXRlb2JqZWN0X2NsYXNzXCJcbiAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlc1wiIFtjbGFzcy5tdWx0aS12YWx1ZV09XCJhdHRyaWJ1dGUubXVsdGlWYWx1ZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCI+e3sgYXR0cmlidXRlLm5hbWUgfX08L2xhYmVsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhdHRyaWJ1dGUubXVsdGlWYWx1ZWRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmllbGRUeXBlKGF0dHJpYnV0ZSlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuSU5TVEFOVFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtZGF0ZS1pbnB1dFwiIHRhYmluZGV4PVwiLTFcIiAoYmx1cik9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZShhdHRyaWJ1dGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZShhdHRyaWJ1dGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1vcGVuLWRhdGUtcGlja2VyXCIgKG1vdXNlZG93bik9XCJ0b2dnbGVEYXRlUGlja2VyKCRldmVudCwgYXR0cmlidXRlLmlkKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItY29udGFpbmVyXCIgKm5nSWY9XCJzZWxlY3RlZERhdGVQaWNrZXIgPT09IGF0dHJpYnV0ZS5pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcnktZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlKGF0dHJpYnV0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3VuZFNlbGVjdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lUGlja2VyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuREVDSU1BTFwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBzdGVwPVwiYW55XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZShhdHRyaWJ1dGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLklOVEVHRVJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZShhdHRyaWJ1dGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZShhdHRyaWJ1dGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLlJBV1wiPlxuICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwibWV0aG9kXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0UmF3TWV0aG9kKGF0dHJpYnV0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJyYXdNZXRob2RzXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWV0aG9kID09PSBIVFRQX09SSUdJTl9NRVRIT0RcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZU1ldGFkYXRhKGF0dHJpYnV0ZSwgSFRUUF9PUklHSU5fTUVUQURBVEEpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduTWV0YWRhdGEoYXR0cmlidXRlLCAkZXZlbnQsIEhUVFBfT1JJR0lOX01FVEFEQVRBKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1ldGhvZCA9PT0gVVBMT0FEX01FVEhPRFwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LXVwbG9hZFxuICAgICAgICAgICAgICAgICAgICAgIG1vZGU9XCJkb2NcIlxuICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLyosdmlkZW8vKlwiXG4gICAgICAgICAgICAgICAgICAgICAgKHVwbG9hZGVkKT1cImFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L3ByeS11cGxvYWQ+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aS12YWx1ZS1jb250YWluZXJcIiAqbmdJZj1cImF0dHJpYnV0ZS5tdWx0aVZhbHVlZFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1hZGQgYS1idG4gYS1idG4tLXNlY29uZGFyeSBhLWJ0bi0taWNvbi10ZXh0IC1zaXplLXNtXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE11bHRpVmFsdWVkKGF0dHJpYnV0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LmNvbnRleHQuY3JlYXRlT2JqZWN0LmFkZE11bHRpRmllbGQnIHwgaTE4biA6IHsgbmFtZTogYXR0cmlidXRlLm5hbWUgfSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXZhbHVlXCIgKm5nRm9yPVwibGV0IG11bHRpVmFsdWUgb2YgbXVsdGlWYWx1ZXMoYXR0cmlidXRlKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWVsZFR5cGUoYXR0cmlidXRlKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZpZWxkVHlwZS5JTlNUQU5UXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVNdWx0aShhdHRyaWJ1dGUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImFzc2lnblZhbHVlTXVsdGkoYXR0cmlidXRlLCAkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLkRFQ0lNQUxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlTXVsdGkoYXR0cmlidXRlLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFzc2lnblZhbHVlTXVsdGkoYXR0cmlidXRlLCAkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLklOVEVHRVJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVNdWx0aShhdHRyaWJ1dGUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWVNdWx0aShhdHRyaWJ1dGUsICRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZU11bHRpKGF0dHJpYnV0ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZSwgJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZU11bHRpVmFsdWVkKGF0dHJpYnV0ZSwgaSlcIj5cbiAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZGVsZXRlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXBcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIChjbGljayk9XCJoaWRlKClcIj5cbiAgICAgICAge3sgJ0BwcnkuY29udGV4dC5jYW5jZWwnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cImNyZWF0ZU9iamVjdHMoKVwiIFtkaXNhYmxlZF09XCIhdmFsaWRcIj5cbiAgICAgICAge3sgJ0BwcnkuY29udGV4dC5jcmVhdGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWVkaXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL2NvbnRleHQtbWVudS9vYmplY3QtZWRpdGlvbi9vYmplY3QtZWRpdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvY29udGV4dC1tZW51L29iamVjdC1lZGl0aW9uL29iamVjdC1lZGl0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2xHLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxN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RUFBRTtnQkFPbEMsTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSwgQXR0cmlidXRlU2ltcGxlVmFsdWUsIEl0ZW0gfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL2l0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEF0dHJpYnV0ZSwgQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbGFzc1NlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvY2xhc3MvY2xhc3Muc2VsZWN0b3JzJztcbmltcG9ydCB7IENvbmZpZ0FjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NvbmZpZy9jb25maWcuYWN0aW9ucyc7XG5pbXBvcnQgeyBDb250ZXh0TWVudVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRmllbGQsIEZpZWxkVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvZmllbGQvZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpZWxkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9maWVsZC9maWVsZC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgSXRlbUFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2l0ZW0vaXRlbS5hY3Rpb25zJztcbmltcG9ydCB7IFJlbGF0aW9uVHlwZXNBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9yZWxhdGlvbi10eXBlcy9yZWxhdGlvbi10eXBlcy5hY3Rpb25zJztcbmltcG9ydCB7IFJlbGF0aW9uVHlwZXNTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL3JlbGF0aW9uLXR5cGVzL3JlbGF0aW9uLXR5cGVzLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBEYXRlVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9kYXRlLXV0aWxzJztcbmltcG9ydCB7IEl0ZW1VdGlscyB9IGZyb20gJy4uLy4uLy4uL2l0ZW0tdXRpbHMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZGFzaGJvYXJkLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zdWJzY3JpcHRpb25uZXIuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IEhUVFBfT1JJR0lOX01FVEFEQVRBID0gJ19odHRwX29yaWdpbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1vYmplY3QtY3JlYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWVkaXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeU9iamVjdEVkaXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBASW5wdXQoKSBsaW5rOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9iamVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtZW51OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgaXRlbUlkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBmcm9tJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpdGVtSWQ/OiBzdHJpbmc7XG4gIGNvb3JkaW5hdGVzOiBudW1iZXJbXSB8IHVuZGVmaW5lZDtcbiAgdG1wT2JqZWN0OiBJdGVtID0gdGhpcy5uZXdPYmplY3QoKTtcbiAgZnJvbTogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIGNsYXNzZXM6IENsYXNzW10gPSBbXTtcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XG4gIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcbiAgcmVsYXRpb25zJDogT2JzZXJ2YWJsZTx7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdPjtcbiAgcmVsYXRpb24hOiB7IHR5cGVJZDogc3RyaW5nOyBpdGVtSWQ6IHN0cmluZyB9O1xuICBzZWxlY3RlZEl0ZW1zSWRzITogc3RyaW5nW107XG4gIFVQTE9BRF9NRVRIT0QgPSAndXBsb2FkJztcbiAgSFRUUF9PUklHSU5fTUVUSE9EID0gJ21ldGFkYXRhJztcbiAgSFRUUF9PUklHSU5fTUVUQURBVEEgPSBIVFRQX09SSUdJTl9NRVRBREFUQTtcbiAgcmF3TWV0aG9kcyA9IFtcbiAgICB7IGlkOiB0aGlzLkhUVFBfT1JJR0lOX01FVEhPRCwgbmFtZTogJ0BwcnkuYWRtaW4uZmllbGRzLnJhd01ldGhvZHMuaHR0cCcgfSxcbiAgICB7XG4gICAgICBpZDogdGhpcy5VUExPQURfTUVUSE9ELFxuICAgICAgbmFtZTogJ0BwcnkuYWRtaW4uZmllbGRzLnJhd01ldGhvZHMudXBsb2FkJ1xuICAgIH1cbiAgXTtcbiAgbWV0aG9kID0gdGhpcy5VUExPQURfTUVUSE9EO1xuICBzZWxlY3RlZERhdGVQaWNrZXI6IHN0cmluZyA9ICcnO1xuICBpbnZlcnNpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaXRlbUlkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENvbnRleHRNZW51U2VsZWN0b3JzLml0ZW1JZCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbnRleHRNZW51U2VsZWN0b3JzLmNvb3JkaW5hdGVzKS5zdWJzY3JpYmUoKGNvb3JkaW5hdGVzKSA9PiAodGhpcy5jb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5pdGVtSWQkLnN1YnNjcmliZSgoaXRlbUlkKSA9PiAodGhpcy5pdGVtSWQgPSBpdGVtSWQpKSk7XG4gICAgdGhpcy5mcm9tJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENvbnRleHRNZW51U2VsZWN0b3JzLmZyb20pO1xuICAgIHRoaXMucmVsYXRpb25zJCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoUmVsYXRpb25UeXBlc1NlbGVjdG9ycy5yZWxhdGlvbnNUeXBlcylcbiAgICAgIC5waXBlKG1hcCgocmVsYXRpb25zKSA9PiAocmVsYXRpb25zIHx8IFtdKS5tYXAoKHJlbCkgPT4gKHsgaWQ6IHJlbC5pZCwgbGFiZWw6IHJlbC5uYW1lIH0pKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmZyb20kLCB0aGlzLnN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKV0pXG4gICAgICAgIC5waXBlKG1hcCgoW2Zyb20sIGNsYXNzZXNdKSA9PiBjbGFzc2VzLmZpbHRlcigoY2xhenopID0+IGZyb20gIT09ICdtYXAnIHx8IEl0ZW1VdGlscy5oYXNMb2NhdGlvbihjbGF6eikpKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY2xhc3NlcykgPT4gKHRoaXMuY2xhc3NlcyA9IGNsYXNzZXMpKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnN0b3JlLnNlbGVjdChGaWVsZFNlbGVjdG9ycy5maWVsZHMpLnN1YnNjcmliZSgoZmllbGRzKSA9PiAodGhpcy5maWVsZHMgPSBmaWVsZHMpKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmZyb20kLnN1YnNjcmliZSgoZnJvbSkgPT4gKHRoaXMuZnJvbSA9IGZyb20pKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpLnN1YnNjcmliZSgoaXRlbUlkcykgPT4gKHRoaXMuc2VsZWN0ZWRJdGVtc0lkcyA9IGl0ZW1JZHMpKVxuICAgICk7XG4gIH1cblxuICBvcGVuQ3JlYXRlT2JqZWN0UGFuZWwoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5yZWxhdGlvbiA9IHsgdHlwZUlkOiAnJywgaXRlbUlkOiB0aGlzLml0ZW1JZCA/PyAnJyB9O1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ20tY29udGV4dC1tZW51JywgJ2NyZWF0ZS1vYmplY3QtcGFuZWwnXSxcbiAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKF8pID0+IHRoaXMuaGlkZSgpKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgfVxuXG4gIG5ld09iamVjdCgpIHtcbiAgICByZXR1cm4geyBpZDogdXVpZHY0KCksIG9DbGFzczogJycsIGF0dHJpYnV0ZXM6IHt9LCBtZXRhZGF0YToge30gfTtcbiAgfVxuXG4gIGdldCB2YWxpZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgKCF0aGlzLm9iamVjdCB8fCBJdGVtVXRpbHMuaXNWYWxpZE9iamVjdCh0aGlzLnRtcE9iamVjdCkpICYmICghdGhpcy5saW5rIHx8ICh0aGlzLnJlbGF0aW9uPy50eXBlSWQgPz8gZmFsc2UpKVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVPYmplY3RzKCkge1xuICAgIGxldCByZWxhdGlvbiA9IHtcbiAgICAgIGZyb206IHRoaXMuc2VsZWN0ZWRJdGVtc0lkcyxcbiAgICAgIHRvOiB0aGlzLnJlbGF0aW9uPy5pdGVtSWQgPz8gJycsXG4gICAgICB0eXBlSWQ6IHRoaXMucmVsYXRpb24/LnR5cGVJZCA/PyAnJyxcbiAgICAgIGludmVyc2lvbjogdGhpcy5pbnZlcnNpb25cbiAgICB9O1xuICAgIGlmICh0aGlzLm9iamVjdCkge1xuICAgICAgdGhpcy50bXBPYmplY3QgPSBJdGVtVXRpbHMuZW5zdXJlSXRlbUlkSGFzQ29ycmVjdEZvcm1hdCh0aGlzLnRtcE9iamVjdCk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEl0ZW1BY3Rpb25zLmNyZWF0ZSh7IGl0ZW06IHRoaXMudG1wT2JqZWN0IH0pKTtcbiAgICAgIGlmICh0aGlzLmxpbmspIHtcbiAgICAgICAgcmVsYXRpb24uZnJvbSA9IFt0aGlzLnRtcE9iamVjdC5pZF07XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUmVsYXRpb25UeXBlc0FjdGlvbnMuY3JlYXRlUmVsYXRpb24ocmVsYXRpb24pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSZWxhdGlvblR5cGVzQWN0aW9ucy5jcmVhdGVSZWxhdGlvbihyZWxhdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgZ2V0IGF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xhc3Nlcy5maW5kKChjbCkgPT4gY2wuaWQgPT09IHRoaXMudG1wT2JqZWN0Lm9DbGFzcyk/LmF0dHJpYnV0ZXMgPz8gW107XG4gIH1cblxuICBmaWVsZFR5cGUoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGF0dHJpYnV0ZS5maWVsZCA9PT0gZmllbGQuaWQpPy50eXBlO1xuICB9XG5cbiAgYXNzaWduVmFsdWUoYXR0cmlidXRlOiBBdHRyaWJ1dGUsICRldmVudDogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPVxuICAgICAgdGhpcy5maWVsZFR5cGUoYXR0cmlidXRlKSA9PT0gRmllbGRUeXBlLklOU1RBTlQgJiYgJGV2ZW50ICE9PSAnJyA/IG5ldyBEYXRlKCRldmVudCkuZ2V0VGltZSgpIDogJGV2ZW50O1xuICAgIGlmICghdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0pIHtcbiAgICAgIHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdID0geyB0eXBlOiAnVkFMVUUnLCBtZXRhZGF0YToge30sIHZhbHVlLCB2aXNpYmxlOiB0cnVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICB2YWx1ZShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSkge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKT8udmFsdWU7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlKGF0dHJpYnV0ZSkgPT09IEZpZWxkVHlwZS5JTlNUQU5UKSB7XG4gICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycgPyBEYXRlVXRpbHMuZm9ybWF0RGF0ZShuZXcgRGF0ZSh2YWx1ZSBhcyBzdHJpbmcgfCBudW1iZXIpKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuICgodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpID8/IHt9KS52YWx1ZTtcbiAgfVxuXG4gIHRvZ2dsZURhdGVQaWNrZXIoJGV2ZW50OiBFdmVudCwgaWQ6IHN0cmluZykge1xuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVQaWNrZXIgPT09IGlkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVBpY2tlciA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVBpY2tlciA9IGlkO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRGF0ZVBpY2tlcigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCEoJGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNvbnRhaW5zKCgkZXZlbnQgYXMgTW91c2VFdmVudCkucmVsYXRlZFRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGVQaWNrZXIgPSAnJztcbiAgICB9XG4gIH1cblxuICBtdWx0aVZhbHVlcyhhdHRyaWJ1dGU6IEF0dHJpYnV0ZSkge1xuICAgIHJldHVybiAoKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpID8/IHsgdmFsdWVzOiBbXSB9KS52YWx1ZXM7XG4gIH1cblxuICByZW1vdmVNdWx0aVZhbHVlZChhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgaTogbnVtYmVyKSB7XG4gICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpLnZhbHVlcy5zcGxpY2UoaSwgMSk7XG4gIH1cblxuICBhZGRNdWx0aVZhbHVlZChhdHRyaWJ1dGU6IEF0dHJpYnV0ZSkge1xuICAgIGlmICghdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0pIHtcbiAgICAgIHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdID0geyB0eXBlOiAnTVVMVEknLCB2YWx1ZXM6IFtdIH07XG4gICAgfVxuICAgICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKS52YWx1ZXMucHVzaCh7XG4gICAgICB0eXBlOiAnVkFMVUUnLFxuICAgICAgbWV0YWRhdGE6IHt9LFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIHZpc2libGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpLnZhbHVlcy5sZW5ndGggLSAxO1xuICB9XG5cbiAgdmFsdWVNdWx0aShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgaTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlWYWx1ZXMoYXR0cmlidXRlKVtpXS52YWx1ZTtcbiAgfVxuXG4gIGFzc2lnblZhbHVlTXVsdGkoYXR0cmlidXRlOiBBdHRyaWJ1dGUsICRldmVudDogYW55LCBpOiBudW1iZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZmllbGRUeXBlKGF0dHJpYnV0ZSkgPT09IEZpZWxkVHlwZS5JTlNUQU5UID8gbmV3IERhdGUoJGV2ZW50KS5nZXRUaW1lKCkgOiAkZXZlbnQ7XG4gICAgaWYgKCF0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSkge1xuICAgICAgdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gPSB7IHR5cGU6ICdNVUxUSScsIHZhbHVlczogW10gfTtcbiAgICB9XG4gICAgaWYgKCEodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSkudmFsdWVzW2ldKSB7XG4gICAgICAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSkudmFsdWVzW2ldID0ge1xuICAgICAgICB0eXBlOiAnVkFMVUUnLFxuICAgICAgICBtZXRhZGF0YToge30sXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSkudmFsdWVzW2ldLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ2xhc3MoJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnRtcE9iamVjdCA9IHRoaXMubmV3T2JqZWN0KCk7XG4gICAgdGhpcy50bXBPYmplY3Qub0NsYXNzID0gJGV2ZW50O1xuICAgIGlmICh0aGlzLmZyb20gPT09ICdtYXAnKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgIGlmIChbJ2xhdGl0dWRlJywgJ2xhdCddLmluZGV4T2YoYXR0cmlidXRlLnRlY2huaWNhbE5hbWUpID49IDApIHtcbiAgICAgICAgICBpZiAoYXR0cmlidXRlLm11bHRpVmFsdWVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLmFkZE11bHRpVmFsdWVkKGF0dHJpYnV0ZSk7XG4gICAgICAgICAgICB0aGlzLmFzc2lnblZhbHVlTXVsdGkoYXR0cmlidXRlLCAodGhpcy5jb29yZGluYXRlcyA/PyBbXSlbMF0sIGlkeCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduVmFsdWUoYXR0cmlidXRlLCAodGhpcy5jb29yZGluYXRlcyA/PyBbXSlbMF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoWydsb25naXR1ZGUnLCAnbG9uZycsICdsb24nLCAnbG5nJ10uaW5kZXhPZihhdHRyaWJ1dGUudGVjaG5pY2FsTmFtZSkgPj0gMCkge1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGUubXVsdGlWYWx1ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuYWRkTXVsdGlWYWx1ZWQoYXR0cmlidXRlKTtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduVmFsdWVNdWx0aShhdHRyaWJ1dGUsICh0aGlzLmNvb3JkaW5hdGVzID8/IFtdKVsxXSwgaWR4KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25WYWx1ZShhdHRyaWJ1dGUsICh0aGlzLmNvb3JkaW5hdGVzID8/IFtdKVsxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRSYXdNZXRob2QoYXR0cmlidXRlOiBBdHRyaWJ1dGUsICRldmVudDogYW55KSB7XG4gICAgdGhpcy5tZXRob2QgPSAkZXZlbnQ7XG4gICAgaWYgKCF0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSkge1xuICAgICAgdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gPSB7XG4gICAgICAgIHR5cGU6ICdWQUxVRScsXG4gICAgICAgIG1ldGFkYXRhOiB7fSxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoJGV2ZW50ID09PSB0aGlzLkhUVFBfT1JJR0lOX01FVEhPRCkge1xuICAgICAgdGhpcy5hc3NpZ25NZXRhZGF0YShhdHRyaWJ1dGUsICcnLCBIVFRQX09SSUdJTl9NRVRBREFUQSk7XG4gICAgfVxuICAgIGlmICgkZXZlbnQgPT09IHRoaXMuVVBMT0FEX01FVEhPRCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZGVsZXRlICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkubWV0YWRhdGFbSFRUUF9PUklHSU5fTUVUQURBVEFdO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlTWV0YWRhdGEoYXR0cmlidXRlOiBBdHRyaWJ1dGUsIHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiAoKCh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkgPz8ge30pLm1ldGFkYXRhID8/IHt9KVt0eXBlXTtcbiAgfVxuXG4gIGFzc2lnbk1ldGFkYXRhKGF0dHJpYnV0ZTogQXR0cmlidXRlLCAkZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKCEodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLm1ldGFkYXRhKSB7XG4gICAgICAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLm1ldGFkYXRhID0geyBbdHlwZV06ICRldmVudCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUudGVjaG5pY2FsTmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLm1ldGFkYXRhW3R5cGVdID0gJGV2ZW50O1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUludmVyc2lvbigpIHtcbiAgICB0aGlzLmludmVyc2lvbiA9ICF0aGlzLmludmVyc2lvbjtcbiAgfVxufVxuIiwiPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCIgKGNsaWNrKT1cIm9wZW5DcmVhdGVPYmplY3RQYW5lbCgkZXZlbnQpXCIgKm5nSWY9XCJtZW51XCI+XG4gIHt7ICdAcHJ5LmNvbnRleHQuY3JlYXRlT2JqZWN0LnRpdGxlLicgKyAobGluayAmJiBvYmplY3QgPyAnbGlua2VkT2JqZWN0JyA6IGxpbmsgPyAnbGluaycgOiAnb2JqZWN0JykgfCBpMThuIH19XG48L2J1dHRvbj5cbjxidXR0b25cbiAgaWQ9XCJvYmplY3RfY3JlYXRvcl9saW5rXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIChjbGljayk9XCJvcGVuQ3JlYXRlT2JqZWN0UGFuZWwoJGV2ZW50KVwiXG4gICpuZ0lmPVwiIW1lbnVcIlxuICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLWNpcmNsZSB1LWZsb2F0aW5nIHUtZmxvYXRpbmctLWJvdHRvbS1yaWdodFwiXG4gIFt0aXRsZV09XCInQHByeS5jb250ZXh0LmNyZWF0ZU9iamVjdC50aXRsZS5vYmplY3QnIHwgaTE4blwiXG4+XG4gIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5jb250ZXh0LmNyZWF0ZU9iamVjdC50aXRsZS5vYmplY3QnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPHByeS1pY29uIGljb25Tdmc9XCJhZGRfY29sdW1uXCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvcHJ5LWljb24+XG48L2J1dHRvbj5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlua1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNyZWF0ZW9iamVjdF9saW5rXCI+e3sgJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QudGl0bGUubGluaycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyZWxhdGlvbi50eXBlSWRcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cInJlbGF0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICBpZD1cImNyZWF0ZW9iamVjdF9saW5rXCJcbiAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjcmVhdGVvYmplY3RfaW52ZXJzaW9uXCI+e3tcbiAgICAgICAgICAgICdAcHJ5LmNvbnRleHQuY3JlYXRlT2JqZWN0LnRpdGxlLmludmVyc2lvbicgfCBpMThuXG4gICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgIGlkPVwiY3JlYXRlb2JqZWN0X2ludmVyc2lvblwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJpbnZlcnNpb25cIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlSW52ZXJzaW9uKClcIlxuICAgICAgICAgID48L3ByeS1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm8tb2JqZWN0LXBhbmVsXCIgKm5nSWY9XCJvYmplY3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjcmVhdGVvYmplY3RfY2xhc3NcIj57eyAnQHByeS5jb250ZXh0LmNyZWF0ZU9iamVjdC5jbGFzcycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgW25nTW9kZWxdPVwidG1wT2JqZWN0Lm9DbGFzc1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VDbGFzcygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJjbGFzc2VzXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgaWQ9XCJjcmVhdGVvYmplY3RfY2xhc3NcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzXCIgW2NsYXNzLm11bHRpLXZhbHVlXT1cImF0dHJpYnV0ZS5tdWx0aVZhbHVlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIj57eyBhdHRyaWJ1dGUubmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWF0dHJpYnV0ZS5tdWx0aVZhbHVlZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWVsZFR5cGUoYXR0cmlidXRlKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZpZWxkVHlwZS5JTlNUQU5UXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1kYXRlLWlucHV0XCIgdGFiaW5kZXg9XCItMVwiIChibHVyKT1cImNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlKGF0dHJpYnV0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLW9wZW4tZGF0ZS1waWNrZXJcIiAobW91c2Vkb3duKT1cInRvZ2dsZURhdGVQaWNrZXIoJGV2ZW50LCBhdHRyaWJ1dGUuaWQpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1jb250YWluZXJcIiAqbmdJZj1cInNlbGVjdGVkRGF0ZVBpY2tlciA9PT0gYXR0cmlidXRlLmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHByeS1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWUoYXR0cmlidXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZShhdHRyaWJ1dGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdW5kU2VsZWN0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpbWVQaWNrZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZpZWxkVHlwZS5ERUNJTUFMXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgIHN0ZXA9XCJhbnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlKGF0dHJpYnV0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZShhdHRyaWJ1dGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuSU5URUdFUlwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlKGF0dHJpYnV0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZShhdHRyaWJ1dGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlKGF0dHJpYnV0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZShhdHRyaWJ1dGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuUkFXXCI+XG4gICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJtZXRob2RcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRSYXdNZXRob2QoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInJhd01ldGhvZHNcIlxuICAgICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXRob2QgPT09IEhUVFBfT1JJR0lOX01FVEhPRFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlTWV0YWRhdGEoYXR0cmlidXRlLCBIVFRQX09SSUdJTl9NRVRBREFUQSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25NZXRhZGF0YShhdHRyaWJ1dGUsICRldmVudCwgSFRUUF9PUklHSU5fTUVUQURBVEEpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWV0aG9kID09PSBVUExPQURfTUVUSE9EXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktdXBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRvY1wiXG4gICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKix2aWRlby8qXCJcbiAgICAgICAgICAgICAgICAgICAgICAodXBsb2FkZWQpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXVwbG9hZD5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXZhbHVlLWNvbnRhaW5lclwiICpuZ0lmPVwiYXR0cmlidXRlLm11bHRpVmFsdWVkXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLWFkZCBhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IGEtYnRuLS1pY29uLXRleHQgLXNpemUtc21cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTXVsdGlWYWx1ZWQoYXR0cmlidXRlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYWRkXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QuYWRkTXVsdGlGaWVsZCcgfCBpMThuIDogeyBuYW1lOiBhdHRyaWJ1dGUubmFtZSB9IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGktdmFsdWVcIiAqbmdGb3I9XCJsZXQgbXVsdGlWYWx1ZSBvZiBtdWx0aVZhbHVlcyhhdHRyaWJ1dGUpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkVHlwZShhdHRyaWJ1dGUpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLklOU1RBTlRcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZU11bHRpKGF0dHJpYnV0ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiYXNzaWduVmFsdWVNdWx0aShhdHRyaWJ1dGUsICRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuREVDSU1BTFwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBzdGVwPVwiYW55XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVNdWx0aShhdHRyaWJ1dGUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWVNdWx0aShhdHRyaWJ1dGUsICRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuSU5URUdFUlwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZU11bHRpKGF0dHJpYnV0ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZSwgJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlTXVsdGkoYXR0cmlidXRlLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFzc2lnblZhbHVlTXVsdGkoYXR0cmlidXRlLCAkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlTXVsdGlWYWx1ZWQoYXR0cmlidXRlLCBpKVwiPlxuICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkZWxldGVcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImhpZGUoKVwiPlxuICAgICAgICB7eyAnQHByeS5jb250ZXh0LmNhbmNlbCcgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoY2xpY2spPVwiY3JlYXRlT2JqZWN0cygpXCIgW2Rpc2FibGVkXT1cIiF2YWxpZFwiPlxuICAgICAgICB7eyAnQHByeS5jb250ZXh0LmNyZWF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19