@pepperi-addons/ngx-lib 0.4.2-beta.9 → 0.4.2-beta.91

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 (196) hide show
  1. package/attachment/attachment.component.d.ts +11 -2
  2. package/button/button.component.d.ts +8 -8
  3. package/core/common/services/color.service.d.ts +1 -0
  4. package/core/common/services/file.service.d.ts +7 -2
  5. package/dialog/dialog.service.d.ts +1 -0
  6. package/draggable-items/draggable-items.component.d.ts +3 -3
  7. package/draggable-items/draggable-items.module.d.ts +1 -1
  8. package/esm2020/address/address.component.mjs +1 -1
  9. package/esm2020/attachment/attachment.component.mjs +38 -18
  10. package/esm2020/button/button.component.mjs +7 -7
  11. package/esm2020/chips/chips.component.mjs +2 -2
  12. package/esm2020/color/color-picker.component.mjs +1 -1
  13. package/esm2020/core/common/services/color.service.mjs +27 -1
  14. package/esm2020/core/common/services/file.service.mjs +57 -20
  15. package/esm2020/core/common/services/session.service.mjs +2 -1
  16. package/esm2020/core/customization/customization.model.mjs +7 -6
  17. package/esm2020/core/customization/customization.service.mjs +13 -4
  18. package/esm2020/core/http/services/http.service.mjs +1 -1
  19. package/esm2020/dialog/dialog.component.mjs +3 -3
  20. package/esm2020/dialog/dialog.service.mjs +22 -1
  21. package/esm2020/draggable-items/draggable-items.component.mjs +7 -7
  22. package/esm2020/draggable-items/draggable-items.module.mjs +6 -6
  23. package/esm2020/files-uploader/files-uploader.component.mjs +50 -45
  24. package/esm2020/form/field-generator.component.mjs +3 -3
  25. package/esm2020/form/form.component.mjs +4 -3
  26. package/esm2020/form/internal-field-generator.component.mjs +1 -1
  27. package/esm2020/form/internal-form.component.mjs +1 -1
  28. package/esm2020/form/internal-list.component.mjs +2 -2
  29. package/esm2020/image/image.component.mjs +32 -16
  30. package/esm2020/image/image.service.mjs +2 -4
  31. package/esm2020/images-filmstrip/images-filmstrip.component.mjs +2 -2
  32. package/esm2020/link/link.component.mjs +33 -58
  33. package/esm2020/list/list.component.mjs +109 -18
  34. package/esm2020/list/list.model.mjs +1 -1
  35. package/esm2020/menu/menu.component.mjs +3 -3
  36. package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +1 -1
  37. package/esm2020/quantity-selector/quantity-selector.component.mjs +20 -25
  38. package/esm2020/query-builder/common/model/operator.mjs +2 -2
  39. package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +1 -1
  40. package/esm2020/select/select.component.mjs +66 -40
  41. package/esm2020/select-panel/select-panel.component.mjs +2 -2
  42. package/esm2020/signature/public-api.mjs +2 -1
  43. package/esm2020/signature/signature-dialog.component.mjs +78 -0
  44. package/esm2020/signature/signature.component.mjs +117 -89
  45. package/esm2020/signature/signature.module.mjs +6 -5
  46. package/esm2020/skeleton-loader/pepperi-addons-ngx-lib-skeleton-loader.mjs +5 -0
  47. package/esm2020/skeleton-loader/public-api.mjs +6 -0
  48. package/esm2020/skeleton-loader/skeleton-loader.component.mjs +44 -0
  49. package/esm2020/skeleton-loader/skeleton-loader.module.mjs +24 -0
  50. package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +3 -3
  51. package/esm2020/smart-filters/date-filter/date-filter.component.mjs +1 -1
  52. package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +1 -1
  53. package/esm2020/smart-filters/number-filter/number-filter.component.mjs +3 -3
  54. package/esm2020/smart-filters/text-filter/text-filter.component.mjs +1 -1
  55. package/esm2020/textbox/textbox.component.mjs +9 -3
  56. package/esm2020/top-bar/top-bar.component.mjs +2 -2
  57. package/fesm2015/pepperi-addons-ngx-lib-address.mjs +1 -1
  58. package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  59. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs +37 -17
  60. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  61. package/fesm2015/pepperi-addons-ngx-lib-button.mjs +6 -6
  62. package/fesm2015/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  63. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +2 -2
  64. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  65. package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  66. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs +23 -2
  67. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  68. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs +11 -11
  69. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  70. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs +49 -44
  71. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  72. package/fesm2015/pepperi-addons-ngx-lib-form.mjs +8 -7
  73. package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  74. package/fesm2015/pepperi-addons-ngx-lib-image.mjs +32 -18
  75. package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  76. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +1 -1
  77. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  78. package/fesm2015/pepperi-addons-ngx-lib-link.mjs +32 -57
  79. package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  80. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +108 -18
  81. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  82. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +2 -2
  83. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  84. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +1 -1
  85. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  86. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +19 -24
  87. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  88. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +2 -2
  89. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  90. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs +2 -2
  91. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  92. package/fesm2015/pepperi-addons-ngx-lib-select.mjs +64 -38
  93. package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  94. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +205 -102
  95. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  96. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs +78 -0
  97. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -0
  98. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +7 -7
  99. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  100. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +8 -2
  101. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  102. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs +2 -2
  103. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  104. package/fesm2015/pepperi-addons-ngx-lib.mjs +101 -27
  105. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  106. package/fesm2020/pepperi-addons-ngx-lib-address.mjs +1 -1
  107. package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  108. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs +37 -17
  109. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  110. package/fesm2020/pepperi-addons-ngx-lib-button.mjs +6 -6
  111. package/fesm2020/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  112. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +2 -2
  113. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  114. package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  115. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs +23 -2
  116. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  117. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs +11 -11
  118. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  119. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs +49 -44
  120. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  121. package/fesm2020/pepperi-addons-ngx-lib-form.mjs +8 -7
  122. package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  123. package/fesm2020/pepperi-addons-ngx-lib-image.mjs +32 -18
  124. package/fesm2020/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  125. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs +1 -1
  126. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  127. package/fesm2020/pepperi-addons-ngx-lib-link.mjs +32 -57
  128. package/fesm2020/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  129. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +108 -17
  130. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  131. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs +2 -2
  132. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  133. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +1 -1
  134. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  135. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +19 -24
  136. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  137. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +2 -2
  138. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  139. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs +2 -2
  140. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  141. package/fesm2020/pepperi-addons-ngx-lib-select.mjs +64 -38
  142. package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  143. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs +201 -102
  144. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  145. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs +76 -0
  146. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -0
  147. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +7 -7
  148. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  149. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +8 -2
  150. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  151. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs +2 -2
  152. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  153. package/fesm2020/pepperi-addons-ngx-lib.mjs +101 -27
  154. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  155. package/files-uploader/files-uploader.component.d.ts +7 -4
  156. package/image/image.component.d.ts +11 -3
  157. package/link/link.component.d.ts +23 -27
  158. package/list/list.component.d.ts +10 -2
  159. package/list/list.model.d.ts +3 -1
  160. package/menu/menu.component.d.ts +1 -1
  161. package/package.json +10 -2
  162. package/quantity-selector/quantity-selector.component.d.ts +0 -2
  163. package/select/select.component.d.ts +10 -2
  164. package/signature/public-api.d.ts +1 -0
  165. package/signature/signature-dialog.component.d.ts +29 -0
  166. package/signature/signature.component.d.ts +7 -16
  167. package/signature/signature.module.d.ts +16 -15
  168. package/skeleton-loader/index.d.ts +5 -0
  169. package/skeleton-loader/public-api.d.ts +2 -0
  170. package/skeleton-loader/skeleton-loader.component.d.ts +20 -0
  171. package/skeleton-loader/skeleton-loader.component.theme.scss +15 -0
  172. package/skeleton-loader/skeleton-loader.module.d.ts +9 -0
  173. package/src/core/style/abstracts/AbstractsIntro.stories.mdx +7 -0
  174. package/src/core/style/abstracts/functions.scss +11 -11
  175. package/src/core/style/abstracts/mixins.scss +9 -6
  176. package/src/core/style/abstracts/variables.scss +38 -18
  177. package/src/core/style/base/BorderRadius.stories.mdx +59 -0
  178. package/src/core/style/base/Breakpoints.stories.mdx +36 -0
  179. package/src/core/style/base/Colors.stories.mdx +128 -0
  180. package/src/core/style/base/Shadows.stories.mdx +69 -0
  181. package/src/core/style/base/Spacing.stories.mdx +75 -0
  182. package/src/core/style/base/States.stories.mdx +62 -0
  183. package/src/core/style/base/Typography.stories.mdx +89 -0
  184. package/src/core/style/base/ZIndex.stories.mdx +47 -0
  185. package/src/core/style/base/base.scss +8 -10
  186. package/src/core/style/base/borderRadius.component.ts +27 -0
  187. package/src/core/style/base/breakpoints.component.ts +14 -0
  188. package/src/core/style/base/colors.component.ts +174 -0
  189. package/src/core/style/base/shadows.component.ts +90 -0
  190. package/src/core/style/base/spacing.component.ts +71 -0
  191. package/src/core/style/base/states.component.ts +84 -0
  192. package/src/core/style/base/typography.component.ts +94 -0
  193. package/src/core/style/base/typography.scss +52 -50
  194. package/src/core/style/base/zIndex.component.ts +25 -0
  195. package/src/core/style/components/file.scss +4 -4
  196. package/src/core/style/components/general.scss +5 -1
@@ -1,4 +1,4 @@
1
1
  export class PepSelectionData {
2
2
  }
3
3
  export const DEFAULT_PAGE_SIZE = 50;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvbGlzdC9saXN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9CQSxNQUFNLE9BQU8sZ0JBQWdCO0NBSTVCO0FBa0JELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdHNEYXRhUm93IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuXG5leHBvcnQgdHlwZSBQZXBMaXN0U2VsZWN0aW9uVHlwZSA9XG4gICAgfCAnbm9uZSdcbiAgICB8ICdzaW5nbGUnXG4gICAgfCAnbXVsdGknO1xuXG5leHBvcnQgdHlwZSBQZXBMaXN0UGFnZXJUeXBlID0gJ3BhZ2VzJyB8ICdzY3JvbGwnO1xuXG5leHBvcnQgdHlwZSBQZXBMaXN0Vmlld1R5cGUgPSAnJyB8ICdjYXJkcycgfCAnbGluZXMnIHwgJ3RhYmxlJzsgLy8gfCAnbWFwJztcblxuZXhwb3J0IHR5cGUgUGVwTGlzdENhcmRTaXplVHlwZSA9ICdzbScgfCAnbWQnO1xuXG5leHBvcnQgdHlwZSBQZXBMaXN0VGFibGVWaWV3VHlwZSA9ICdjb21wYWN0JyB8ICdyZWd1bGFyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUGVwTGlzdEl0ZW1DbGlja0V2ZW50IHtcbiAgICBzb3VyY2U6IE9iamVjdHNEYXRhUm93O1xuICAgIHZpZXdUeXBlOiBQZXBMaXN0Vmlld1R5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBQZXBTZWxlY3Rpb25EYXRhIHtcbiAgICBzZWxlY3Rpb25UeXBlOiBudW1iZXI7XG4gICAgcm93czogQXJyYXk8YW55PjtcbiAgICByb3dUeXBlczogQXJyYXk8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGVwTGlzdExvYWRJdGVtc0V2ZW50IHtcbiAgICBmcm9tSW5kZXg6IG51bWJlcjtcbiAgICB0b0luZGV4OiBudW1iZXI7XG4gICAgLy8gdXBkYXRlSXRlbXNGdW5jOiAoKSA9PiB2b2lkOyAvLygpID0+IGFueTsgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcExpc3RMb2FkUGFnZUV2ZW50IHtcbiAgICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIC8vIHVwZGF0ZVBhZ2VGdW5jOiAoKSA9PiB2b2lkOyAvLygpID0+IGFueTsgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcExpc3RTdGFydEluZGV4Q2hhbmdlRXZlbnQge1xuICAgIHN0YXJ0SW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUEFHRV9TSVpFID0gNTA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQge1xuICAgIHNvcnRCeTogc3RyaW5nO1xuICAgIGlzQXNjOiBib29sZWFuO1xufVxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvbGlzdC9saXN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9CQSxNQUFNLE9BQU8sZ0JBQWdCO0NBSTVCO0FBa0JELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdHNEYXRhUm93IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuXG5leHBvcnQgdHlwZSBQZXBMaXN0U2VsZWN0aW9uVHlwZSA9XG4gICAgfCAnbm9uZSdcbiAgICB8ICdzaW5nbGUnXG4gICAgfCAnbXVsdGknO1xuXG5leHBvcnQgdHlwZSBQZXBMaXN0UGFnZXJUeXBlID0gJ3BhZ2VzJyB8ICdzY3JvbGwnO1xuXG5leHBvcnQgdHlwZSBQZXBMaXN0Vmlld1R5cGUgPSAnJyB8ICdjYXJkcycgfCAnbGluZXMnIHwgJ3RhYmxlJzsgLy8gfCAnbWFwJztcblxuZXhwb3J0IHR5cGUgUGVwTGlzdENhcmRTaXplVHlwZSA9ICdzbScgfCAnbWQnO1xuXG5leHBvcnQgdHlwZSBQZXBMaXN0VGFibGVWaWV3VHlwZSA9ICdjb21wYWN0JyB8ICdyZWd1bGFyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUGVwTGlzdEl0ZW1DbGlja0V2ZW50IHtcbiAgICBzb3VyY2U6IE9iamVjdHNEYXRhUm93O1xuICAgIHZpZXdUeXBlOiBQZXBMaXN0Vmlld1R5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBQZXBTZWxlY3Rpb25EYXRhIHtcbiAgICBzZWxlY3Rpb25UeXBlOiBudW1iZXI7XG4gICAgcm93czogQXJyYXk8YW55PjtcbiAgICByb3dUeXBlczogQXJyYXk8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGVwTGlzdExvYWRJdGVtc0V2ZW50IHtcbiAgICBmcm9tSW5kZXg6IG51bWJlcjtcbiAgICB0b0luZGV4OiBudW1iZXI7XG4gICAgLy8gdXBkYXRlSXRlbXNGdW5jOiAoKSA9PiB2b2lkOyAvLygpID0+IGFueTsgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcExpc3RMb2FkUGFnZUV2ZW50IHtcbiAgICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIC8vIHVwZGF0ZVBhZ2VGdW5jOiAoKSA9PiB2b2lkOyAvLygpID0+IGFueTsgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcExpc3RTdGFydEluZGV4Q2hhbmdlRXZlbnQge1xuICAgIHN0YXJ0SW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUEFHRV9TSVpFID0gNTA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcExpc3RTb3J0aW5nRGF0YSB7XG4gICAgc29ydEJ5OiBzdHJpbmc7XG4gICAgaXNBc2M6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQgZXh0ZW5kcyBJUGVwTGlzdFNvcnRpbmdEYXRhIHtcbiAgIFxufVxuIl19
@@ -16,12 +16,12 @@ export class PepMenuComponent {
16
16
  this.layoutService = layoutService;
17
17
  this.text = '';
18
18
  /**
19
- * The icon name to show on the menu. look in (@link icon -> All icons)
19
+ * The icon name to show on the menu, look in (@link icon -> All icons), default icon `system_menu`
20
20
  *
21
21
  * @type {PepIconType} See {@link PepIconType}
22
22
  * @memberof PepMenuComponent
23
23
  */
24
- this.iconName = pepIconSystemMenu.name;
24
+ this.iconName = pepIconSystemMenu.name || 'system_menu';
25
25
  this.type = 'action';
26
26
  this.styleType = 'weak';
27
27
  this.sizeType = 'md';
@@ -210,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
210
210
  }], menuClick: [{
211
211
  type: Output
212
212
  }] } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUdmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNWLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUlILGlCQUFpQixHQUNwQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFNSCxpQkFBaUIsR0FDcEIsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7OztBQThCdEIsTUFBTSxPQUFPLGdCQUFnQjtJQTBDekIsWUFBbUIsYUFBK0I7UUFBL0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBekN6QyxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25COzs7OztXQUtHO1FBQ00sYUFBUSxHQUFnQixpQkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDL0MsU0FBSSxHQUFnQixRQUFRLENBQUM7UUFDN0IsY0FBUyxHQUFpQixNQUFNLENBQUM7UUFDakMsYUFBUSxHQUFnQixJQUFJLENBQUM7UUFDN0IsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQXVCLE9BQU8sQ0FBQztRQUN4QyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFMUIsV0FBTSxHQUF1QixJQUFJLENBQUM7UUFVakMsaUJBQVksR0FBZ0IsSUFBSSxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHMUIsZ0JB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QU8sQ0FBQyxZQUFZLEVBQUU7NEJBQ2xCLEtBQUssQ0FDRCxRQUFRLEVBQ1IsS0FBSyxDQUFDO2dDQUNGLEtBQUssRUFBRSxLQUFLO2dDQUNaLE9BQU8sRUFBRSxHQUFHO2dDQUNaLE1BQU0sRUFBRSxHQUFHO2dDQUNYLFFBQVEsRUFBRSxLQUFLO2dDQUNmLE9BQU8sRUFBRSxDQUFDOzZCQUNiLENBQUMsQ0FDTDs0QkFDRCxLQUFLLENBQ0QsU0FBUyxFQUNULEtBQUssQ0FBQztnQ0FDRixLQUFLLEVBQUUsU0FBUztnQ0FDaEIsT0FBTyxFQUFFLENBQUM7NkJBQ2IsQ0FBQyxDQUNMOzRCQUNELFVBQVUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDOzRCQUNyRCxVQUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUN6RCxDQUFDO3FCQUNMO3VHQUdRLElBQUk7c0JBQVosS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsTUFBTTtnQkFHUCxhQUFhO3NCQURaLE1BQU07Z0JBRUcsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIHRyaWdnZXIsXG4gICAgc3RhdGUsXG4gICAgc3R5bGUsXG4gICAgdHJhbnNpdGlvbixcbiAgICBhbmltYXRlLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0U2VydmljZSxcbiAgICBQZXBTdHlsZVR5cGUsXG4gICAgUGVwU2l6ZVR5cGUsXG4gICAgUGVwU2NyZWVuU2l6ZVR5cGUsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IHBlcEljb25TeXN0ZW1NZW51LCBQZXBJY29uVHlwZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2ljb24nO1xuaW1wb3J0IHtcbiAgICBQZXBNZW51SXRlbSxcbiAgICBJUGVwTWVudUl0ZW1DbGlja0V2ZW50LFxuICAgIElQZXBNZW51U3RhdGVDaGFuZ2VFdmVudCxcbiAgICBQZXBNZW51U3RhdGVUeXBlLFxuICAgIFBlcE1lbnVUeXBlLFxuICAgIFBlcE1lbnVJdGVtUGFyZW50LFxufSBmcm9tICcuL21lbnUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignc2xpZGVJbk91dCcsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcwcHgnLFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMCcsXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogJzAnLFxuICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzBweCcsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignY2xvc2UgPT4gb3BlbicsIGFuaW1hdGUoJzUwMG1zIGVhc2UtaW4nKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdvcGVuID0+IGNsb3NlJywgYW5pbWF0ZSgnNTAwbXMgZWFzZS1vdXQnKSksXG4gICAgICAgIF0pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBlcE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdGV4dCA9ICcnO1xuICAgIC8qKlxuICAgICAqIFRoZSBpY29uIG5hbWUgdG8gc2hvdyBvbiB0aGUgbWVudS4gbG9vayBpbiAoQGxpbmsgaWNvbiAtPiBBbGwgaWNvbnMpXG4gICAgICpcbiAgICAgKiBAdHlwZSB7UGVwSWNvblR5cGV9IFNlZSB7QGxpbmsgUGVwSWNvblR5cGV9XG4gICAgICogQG1lbWJlcm9mIFBlcE1lbnVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpY29uTmFtZTogUGVwSWNvblR5cGUgPSBwZXBJY29uU3lzdGVtTWVudS5uYW1lO1xuICAgIEBJbnB1dCgpIHR5cGU6IFBlcE1lbnVUeXBlID0gJ2FjdGlvbic7XG4gICAgQElucHV0KCkgc3R5bGVUeXBlOiBQZXBTdHlsZVR5cGUgPSAnd2Vhayc7XG4gICAgQElucHV0KCkgc2l6ZVR5cGU6IFBlcFNpemVUeXBlID0gJ21kJztcbiAgICBASW5wdXQoKSBjbGFzc05hbWVzID0gJyc7XG4gICAgQElucHV0KCkgeFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgPSAnYWZ0ZXInO1xuICAgIEBJbnB1dCgpIGhpZGVPbkVtcHR5SXRlbXMgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2l0ZW1zOiBBcnJheTxQZXBNZW51SXRlbT4gPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zKGl0ZW1zOiBBcnJheTxQZXBNZW51SXRlbT4pIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtc1BhcmVudChpdGVtcyk7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgfVxuICAgIGdldCBpdGVtcygpOiBBcnJheTxQZXBNZW51SXRlbT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2VsZWN0ZWRJdGVtOiBQZXBNZW51SXRlbSA9IG51bGw7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcE1lbnVTdGF0ZUNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcE1lbnVTdGF0ZUNoYW5nZUV2ZW50PigpO1xuICAgIEBPdXRwdXQoKVxuICAgIG1lbnVJdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwTWVudUl0ZW1DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcE1lbnVJdGVtQ2xpY2tFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWVudUNsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBzdGF0ZTogUGVwTWVudVN0YXRlVHlwZSA9ICdoaWRkZW4nO1xuXG4gICAgUGVwU2NyZWVuU2l6ZVR5cGUgPSBQZXBTY3JlZW5TaXplVHlwZTtcbiAgICBzY3JlZW5TaXplOiBQZXBTY3JlZW5TaXplVHlwZTtcblxuICAgIGRpc3BsYXlUZXh0OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGxheW91dFNlcnZpY2U6IFBlcExheW91dFNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLm9uUmVzaXplJC5zdWJzY3JpYmUoKHNpemUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2NyZWVuU2l6ZSA9IHNpemU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q2hpbGRyZW5QYXJlbnQoXG4gICAgICAgIGl0ZW06IFBlcE1lbnVJdGVtLFxuICAgICAgICBwYXJlbnQ6IFBlcE1lbnVJdGVtUGFyZW50XG4gICAgKTogdm9pZCB7XG4gICAgICAgIGl0ZW0ucGFyZW50ID0gcGFyZW50O1xuXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q2hpbGRyZW5QYXJlbnQoY2hpbGQsIG5ldyBQZXBNZW51SXRlbVBhcmVudChpdGVtKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SXRlbXNQYXJlbnQoaXRlbXM6IEFycmF5PFBlcE1lbnVJdGVtPik6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbXMpIHtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnBhcmVudCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDaGlsZHJlblBhcmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUGVwTWVudUl0ZW1QYXJlbnQoaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUZXh0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2VsZWN0JyB8fCB0aGlzLnR5cGUgPT09ICdhY3Rpb24tc2VsZWN0Jykge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VGV4dCA9IHRoaXMuc2VsZWN0ZWRJdGVtXG4gICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkSXRlbS50ZXh0XG4gICAgICAgICAgICAgICAgOiB0aGlzLnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlUZXh0ID0gdGhpcy50ZXh0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oaWRlT25FbXB0eUl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID1cbiAgICAgICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5kaXNhYmxlZCkubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICA/ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICAgICAgICA6ICdoaWRkZW4nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9ICd2aXNpYmxlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5sZW5ndGggPiAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuaXRlbXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVRleHQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHRoaXMubWVudUl0ZW1DbGljaykge1xuICAgICAgICAvLyAgICAgdGhpcy5tZW51SXRlbUNsaWNrLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBvbk1lbnVDbGlja2VkKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUNsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvLyBwcml2YXRlIG1hbmlwdWxhdGVEYXRhKG1lbnVJdGVtOiBQZXBNZW51SXRlbSkge1xuICAgIC8vICAgICBtZW51SXRlbS5jaGlsZHJlbiA9IG51bGw7XG5cbiAgICAvLyAgICAgaWYgKG1lbnVJdGVtLnBhcmVudCkge1xuICAgIC8vICAgICAgICAgbWVudUl0ZW0ucGFyZW50ID0gbmV3IFBlcE1lbnVJdGVtKG1lbnVJdGVtLnBhcmVudCk7XG4gICAgLy8gICAgICAgICB0aGlzLm1hbmlwdWxhdGVEYXRhKG1lbnVJdGVtLnBhcmVudCk7XG4gICAgLy8gICAgIH1cbiAgICAvLyB9XG5cbiAgICBvbk1lbnVJdGVtQ2xpY2tlZChjbGljazogSVBlcE1lbnVJdGVtQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGNsaWNrLnNvdXJjZTtcbiAgICAgICAgdGhpcy51cGRhdGVUZXh0KCk7XG5cbiAgICAgICAgLy8gTWFuaXB1bGF0ZSBjbGljayBkYXRhIGJlY2F1c2UgdGhlIGRhdGEgaXMgZHVwcGxpY2F0ZSBpbiBwYXJlbnQuY2hpbGRyZW5cbiAgICAgICAgLy8gY29uc3QgdG1wID0gbmV3IFBlcE1lbnVJdGVtKGNsaWNrLnNvdXJjZSk7XG4gICAgICAgIC8vIHRoaXMubWFuaXB1bGF0ZURhdGEodG1wKTtcbiAgICAgICAgLy8gY2xpY2suc291cmNlID0gdG1wO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1DbGljay5lbWl0KGNsaWNrKTtcbiAgICB9XG5cbiAgICBhbmltYXRpb25Eb25lKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCh7IHN0YXRlOiB0aGlzLnN0YXRlIH0pO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFuaW1hdGlvblN0YXJ0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ3Zpc2libGUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoeyBzdGF0ZTogdGhpcy5zdGF0ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTWVudU9wZW5lZCgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICd2aXNpYmxlJztcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHsgc3RhdGU6IHRoaXMuc3RhdGUgfSk7XG4gICAgfVxuXG4gICAgb25NZW51Q2xvc2VkKCkge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2hpZGRlbic7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCh7IHN0YXRlOiB0aGlzLnN0YXRlIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiIGRpcj1cInt7IGxheW91dFNlcnZpY2UuaXNSdGwoKSA/ICdydGwnIDogJ2x0cicgfX1cIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoaWRlT25FbXB0eUl0ZW1zIHRoZW4gYW5pbWF0aW9uVGVtcGxhdGUgZWxzZSByZWd1bGFyVGVtcGxhdGVcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2FuaW1hdGlvblRlbXBsYXRlPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJwZXAtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fSB7eyBjbGFzc05hbWVzIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tYnV0dG9uJzogIWRpc3BsYXlUZXh0IHx8IHNjcmVlblNpemUgPiBQZXBTY3JlZW5TaXplVHlwZS5TTSwgJ3BlcC1idXR0b24tbGltaXRlZC13aWR0aCc6IHNjcmVlblNpemUgPCBQZXBTY3JlZW5TaXplVHlwZS5YUyAgfVwiXG4gICAgICAgICAgICBwZXBSdGxEaXJlY3Rpb24gcGVwTWVudUJsdXIgKGNsaWNrKT1cIm9uTWVudUNsaWNrZWQoJGV2ZW50KVwiIFtAc2xpZGVJbk91dF09XCJzdGF0ZVwiXG4gICAgICAgICAgICAoQHNsaWRlSW5PdXQuZG9uZSk9XCJhbmltYXRpb25Eb25lKClcIiAoQHNsaWRlSW5PdXQuc3RhcnQpPVwiYW5pbWF0aW9uU3RhcnQoKVwiXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudS5jaGlsZE1lbnVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmlnZ2VyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHBlcC1tZW51LWl0ZW0gI21lbnUgW3R5cGVdPVwidHlwZVwiIFtpdGVtc109XCJpdGVtc1wiIFtzZWxlY3RlZEl0ZW1dPVwic2VsZWN0ZWRJdGVtXCIgW3hQb3NpdGlvbl09XCJ4UG9zaXRpb25cIlxuICAgICAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwib25NZW51SXRlbUNsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICA8L3BlcC1tZW51LWl0ZW0+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3JlZ3VsYXJUZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zIHRoZW4gbWVudVRlbXBsYXRlIGVsc2UgYnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNtZW51VGVtcGxhdGU+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJwZXAtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fSB7eyBjbGFzc05hbWVzIH19XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpY29uLWJ1dHRvbic6ICFkaXNwbGF5VGV4dCB8fCBzY3JlZW5TaXplID4gUGVwU2NyZWVuU2l6ZVR5cGUuU00sICdwZXAtYnV0dG9uLWxpbWl0ZWQtd2lkdGgnOiBzY3JlZW5TaXplIDwgUGVwU2NyZWVuU2l6ZVR5cGUuWFMsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCJcbiAgICAgICAgICAgICAgICBwZXBSdGxEaXJlY3Rpb24gcGVwTWVudUJsdXIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnUuY2hpbGRNZW51XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAobWVudUNsaWNrKT1cIm9uTWVudUNsaWNrZWQoJGV2ZW50KVwiIChtZW51T3BlbmVkKT1cIm9uTWVudU9wZW5lZCgpXCIgKG1lbnVDbG9zZWQpPVwib25NZW51Q2xvc2VkKClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxwZXAtbWVudS1pdGVtICNtZW51IFt0eXBlXT1cInR5cGVcIiBbaXRlbXNdPVwiaXRlbXNcIiBbc2VsZWN0ZWRJdGVtXT1cInNlbGVjdGVkSXRlbVwiIFt4UG9zaXRpb25dPVwieFBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAobWVudUl0ZW1DbGljayk9XCJvbk1lbnVJdGVtQ2xpY2tlZCgkZXZlbnQpXCIgPjwvcGVwLW1lbnUtaXRlbT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNidXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInBlcC1idXR0b24ge3sgc2l6ZVR5cGUgfX0ge3sgc3R5bGVUeXBlIH19IHt7IGNsYXNzTmFtZXMgfX1cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tYnV0dG9uJzogIWRpc3BsYXlUZXh0IHx8IHNjcmVlblNpemUgPiBQZXBTY3JlZW5TaXplVHlwZS5TTSwgJ3BlcC1idXR0b24tbGltaXRlZC13aWR0aCc6IHNjcmVlblNpemUgPCBQZXBTY3JlZW5TaXplVHlwZS5YUywgZGlzYWJsZWQ6IGRpc2FibGVkIH1cIlxuICAgICAgICAgICAgICAgIHBlcFJ0bERpcmVjdGlvbiBwZXBNZW51Qmx1ciAobWVudUNsaWNrKT1cIm9uTWVudUNsaWNrZWQoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmlnZ2VyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0cmlnZ2VyVGVtcGxhdGU+XG4gICAgPHNwYW4gKm5nSWY9XCJkaXNwbGF5VGV4dCAmJiBzY3JlZW5TaXplIDw9IFBlcFNjcmVlblNpemVUeXBlLlNNXCIgY2xhc3M9XCJlbGxpcHNpc1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J1dHRvbi10aXRsZS13aXRoLWljb24nOiBpY29uTmFtZSB9XCIgW3RpdGxlXT1cImRpc3BsYXlUZXh0XCI+XG4gICAgICAgIHt7IGRpc3BsYXlUZXh0IH19XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25OYW1lXCI+XG4gICAgICAgIDxwZXAtaWNvbiBuYW1lPVwie3sgaWNvbk5hbWUgfX1cIj48L3BlcC1pY29uPlxuICAgIDwvbWF0LWljb24+XG48L25nLXRlbXBsYXRlPiJdfQ==
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUdmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNWLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUlILGlCQUFpQixHQUNwQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFNSCxpQkFBaUIsR0FDcEIsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7OztBQThCdEIsTUFBTSxPQUFPLGdCQUFnQjtJQTBDekIsWUFBbUIsYUFBK0I7UUFBL0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBekN6QyxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25COzs7OztXQUtHO1FBQ00sYUFBUSxHQUFnQixpQkFBaUIsQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDO1FBQ2hFLFNBQUksR0FBZ0IsUUFBUSxDQUFDO1FBQzdCLGNBQVMsR0FBaUIsTUFBTSxDQUFDO1FBQ2pDLGFBQVEsR0FBZ0IsSUFBSSxDQUFDO1FBQzdCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsY0FBUyxHQUF1QixPQUFPLENBQUM7UUFDeEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLFdBQU0sR0FBdUIsSUFBSSxDQUFDO1FBVWpDLGlCQUFZLEdBQWdCLElBQUksQ0FBQztRQUNqQyxhQUFRLEdBQUcsS0FBSyxDQUFD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Ujt3QkFDUixPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUNsQixLQUFLLENBQ0QsUUFBUSxFQUNSLEtBQUssQ0FBQztnQ0FDRixLQUFLLEVBQUUsS0FBSztnQ0FDWixPQUFPLEVBQUUsR0FBRztnQ0FDWixNQUFNLEVBQUUsR0FBRztnQ0FDWCxRQUFRLEVBQUUsS0FBSztnQ0FDZixPQUFPLEVBQUUsQ0FBQzs2QkFDYixDQUFDLENBQ0w7NEJBQ0QsS0FBSyxDQUNELFNBQVMsRUFDVCxLQUFLLENBQUM7Z0NBQ0YsS0FBSyxFQUFFLFNBQVM7Z0NBQ2hCLE9BQU8sRUFBRSxDQUFDOzZCQUNiLENBQUMsQ0FDTDs0QkFDRCxVQUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQzs0QkFDckQsVUFBVSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDekQsQ0FBQztxQkFDTDt1R0FHUSxJQUFJO3NCQUFaLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBSUYsS0FBSztzQkFEUixLQUFLO2dCQVNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHTixXQUFXO3NCQURWLE1BQU07Z0JBR1AsYUFBYTtzQkFEWixNQUFNO2dCQUVHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICB0cmlnZ2VyLFxuICAgIHN0YXRlLFxuICAgIHN0eWxlLFxuICAgIHRyYW5zaXRpb24sXG4gICAgYW5pbWF0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIFBlcExheW91dFNlcnZpY2UsXG4gICAgUGVwU3R5bGVUeXBlLFxuICAgIFBlcFNpemVUeXBlLFxuICAgIFBlcFNjcmVlblNpemVUeXBlLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBwZXBJY29uU3lzdGVtTWVudSwgUGVwSWNvblR5cGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9pY29uJztcbmltcG9ydCB7XG4gICAgUGVwTWVudUl0ZW0sXG4gICAgSVBlcE1lbnVJdGVtQ2xpY2tFdmVudCxcbiAgICBJUGVwTWVudVN0YXRlQ2hhbmdlRXZlbnQsXG4gICAgUGVwTWVudVN0YXRlVHlwZSxcbiAgICBQZXBNZW51VHlwZSxcbiAgICBQZXBNZW51SXRlbVBhcmVudCxcbn0gZnJvbSAnLi9tZW51Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtbWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzAnLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6ICcwcHgnLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlID0+IG9wZW4nLCBhbmltYXRlKCc1MDBtcyBlYXNlLWluJykpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZScsIGFuaW1hdGUoJzUwMG1zIGVhc2Utb3V0JykpLFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHRleHQgPSAnJztcbiAgICAvKipcbiAgICAgKiBUaGUgaWNvbiBuYW1lIHRvIHNob3cgb24gdGhlIG1lbnUsIGxvb2sgaW4gKEBsaW5rIGljb24gLT4gQWxsIGljb25zKSwgZGVmYXVsdCBpY29uIGBzeXN0ZW1fbWVudWBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtQZXBJY29uVHlwZX0gU2VlIHtAbGluayBQZXBJY29uVHlwZX1cbiAgICAgKiBAbWVtYmVyb2YgUGVwTWVudUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGljb25OYW1lOiBQZXBJY29uVHlwZSA9IHBlcEljb25TeXN0ZW1NZW51Lm5hbWUgfHwgJ3N5c3RlbV9tZW51JztcbiAgICBASW5wdXQoKSB0eXBlOiBQZXBNZW51VHlwZSA9ICdhY3Rpb24nO1xuICAgIEBJbnB1dCgpIHN0eWxlVHlwZTogUGVwU3R5bGVUeXBlID0gJ3dlYWsnO1xuICAgIEBJbnB1dCgpIHNpemVUeXBlOiBQZXBTaXplVHlwZSA9ICdtZCc7XG4gICAgQElucHV0KCkgY2xhc3NOYW1lcyA9ICcnO1xuICAgIEBJbnB1dCgpIHhQb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2FmdGVyJztcbiAgICBASW5wdXQoKSBoaWRlT25FbXB0eUl0ZW1zID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9pdGVtczogQXJyYXk8UGVwTWVudUl0ZW0+ID0gbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtcyhpdGVtczogQXJyYXk8UGVwTWVudUl0ZW0+KSB7XG4gICAgICAgIHRoaXMuc2V0SXRlbXNQYXJlbnQoaXRlbXMpO1xuICAgICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zO1xuICAgIH1cbiAgICBnZXQgaXRlbXMoKTogQXJyYXk8UGVwTWVudUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNlbGVjdGVkSXRlbTogUGVwTWVudUl0ZW0gPSBudWxsO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBzdGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPElQZXBNZW51U3RhdGVDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBNZW51U3RhdGVDaGFuZ2VFdmVudD4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBtZW51SXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8SVBlcE1lbnVJdGVtQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBNZW51SXRlbUNsaWNrRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgc3RhdGU6IFBlcE1lbnVTdGF0ZVR5cGUgPSAnaGlkZGVuJztcblxuICAgIFBlcFNjcmVlblNpemVUeXBlID0gUGVwU2NyZWVuU2l6ZVR5cGU7XG4gICAgc2NyZWVuU2l6ZTogUGVwU2NyZWVuU2l6ZVR5cGU7XG5cbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5vblJlc2l6ZSQuc3Vic2NyaWJlKChzaXplKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcmVlblNpemUgPSBzaXplO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENoaWxkcmVuUGFyZW50KFxuICAgICAgICBpdGVtOiBQZXBNZW51SXRlbSxcbiAgICAgICAgcGFyZW50OiBQZXBNZW51SXRlbVBhcmVudFxuICAgICk6IHZvaWQge1xuICAgICAgICBpdGVtLnBhcmVudCA9IHBhcmVudDtcblxuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldENoaWxkcmVuUGFyZW50KGNoaWxkLCBuZXcgUGVwTWVudUl0ZW1QYXJlbnQoaXRlbSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEl0ZW1zUGFyZW50KGl0ZW1zOiBBcnJheTxQZXBNZW51SXRlbT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW1zKSB7XG4gICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5wYXJlbnQgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q2hpbGRyZW5QYXJlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBlcE1lbnVJdGVtUGFyZW50KGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGV4dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NlbGVjdCcgfHwgdGhpcy50eXBlID09PSAnYWN0aW9uLXNlbGVjdCcpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVRleHQgPSB0aGlzLnNlbGVjdGVkSXRlbVxuICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEl0ZW0udGV4dFxuICAgICAgICAgICAgICAgIDogdGhpcy50ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VGV4dCA9IHRoaXMudGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGlkZU9uRW1wdHlJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9XG4gICAgICAgICAgICAgICAgIXRoaXMuZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uZGlzYWJsZWQpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyAndmlzaWJsZSdcbiAgICAgICAgICAgICAgICAgICAgOiAnaGlkZGVuJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSAndmlzaWJsZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2VsZWN0Jykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID09PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMubGVuZ3RoID4gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLml0ZW1zWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVUZXh0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIGlmICh0aGlzLm1lbnVJdGVtQ2xpY2spIHtcbiAgICAgICAgLy8gICAgIHRoaXMubWVudUl0ZW1DbGljay51bnN1YnNjcmliZSgpO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgb25NZW51Q2xpY2tlZChldmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVDbGljay5lbWl0KCk7XG4gICAgfVxuXG4gICAgLy8gcHJpdmF0ZSBtYW5pcHVsYXRlRGF0YShtZW51SXRlbTogUGVwTWVudUl0ZW0pIHtcbiAgICAvLyAgICAgbWVudUl0ZW0uY2hpbGRyZW4gPSBudWxsO1xuXG4gICAgLy8gICAgIGlmIChtZW51SXRlbS5wYXJlbnQpIHtcbiAgICAvLyAgICAgICAgIG1lbnVJdGVtLnBhcmVudCA9IG5ldyBQZXBNZW51SXRlbShtZW51SXRlbS5wYXJlbnQpO1xuICAgIC8vICAgICAgICAgdGhpcy5tYW5pcHVsYXRlRGF0YShtZW51SXRlbS5wYXJlbnQpO1xuICAgIC8vICAgICB9XG4gICAgLy8gfVxuXG4gICAgb25NZW51SXRlbUNsaWNrZWQoY2xpY2s6IElQZXBNZW51SXRlbUNsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjbGljay5zb3VyY2U7XG4gICAgICAgIHRoaXMudXBkYXRlVGV4dCgpO1xuXG4gICAgICAgIC8vIE1hbmlwdWxhdGUgY2xpY2sgZGF0YSBiZWNhdXNlIHRoZSBkYXRhIGlzIGR1cHBsaWNhdGUgaW4gcGFyZW50LmNoaWxkcmVuXG4gICAgICAgIC8vIGNvbnN0IHRtcCA9IG5ldyBQZXBNZW51SXRlbShjbGljay5zb3VyY2UpO1xuICAgICAgICAvLyB0aGlzLm1hbmlwdWxhdGVEYXRhKHRtcCk7XG4gICAgICAgIC8vIGNsaWNrLnNvdXJjZSA9IHRtcDtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtQ2xpY2suZW1pdChjbGljayk7XG4gICAgfVxuXG4gICAgYW5pbWF0aW9uRG9uZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoeyBzdGF0ZTogdGhpcy5zdGF0ZSB9KTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbmltYXRpb25TdGFydCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT09ICd2aXNpYmxlJykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHsgc3RhdGU6IHRoaXMuc3RhdGUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1lbnVPcGVuZWQoKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAndmlzaWJsZSc7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCh7IHN0YXRlOiB0aGlzLnN0YXRlIH0pO1xuICAgIH1cblxuICAgIG9uTWVudUNsb3NlZCgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdoaWRkZW4nO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoeyBzdGF0ZTogdGhpcy5zdGF0ZSB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWVudS1jb250YWluZXJcIiBkaXI9XCJ7eyBsYXlvdXRTZXJ2aWNlLmlzUnRsKCkgPyAncnRsJyA6ICdsdHInIH19XCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGlkZU9uRW1wdHlJdGVtcyB0aGVuIGFuaW1hdGlvblRlbXBsYXRlIGVsc2UgcmVndWxhclRlbXBsYXRlXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNhbmltYXRpb25UZW1wbGF0ZT5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzaXplVHlwZSB9fSB7eyBzdHlsZVR5cGUgfX0ge3sgY2xhc3NOYW1lcyB9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpY29uLWJ1dHRvbic6ICFkaXNwbGF5VGV4dCB8fCBzY3JlZW5TaXplID4gUGVwU2NyZWVuU2l6ZVR5cGUuU00sICdwZXAtYnV0dG9uLWxpbWl0ZWQtd2lkdGgnOiBzY3JlZW5TaXplIDwgUGVwU2NyZWVuU2l6ZVR5cGUuWFMgIH1cIlxuICAgICAgICAgICAgcGVwUnRsRGlyZWN0aW9uIHBlcE1lbnVCbHVyIChjbGljayk9XCJvbk1lbnVDbGlja2VkKCRldmVudClcIiBbQHNsaWRlSW5PdXRdPVwic3RhdGVcIlxuICAgICAgICAgICAgKEBzbGlkZUluT3V0LmRvbmUpPVwiYW5pbWF0aW9uRG9uZSgpXCIgKEBzbGlkZUluT3V0LnN0YXJ0KT1cImFuaW1hdGlvblN0YXJ0KClcIlxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnUuY2hpbGRNZW51XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxwZXAtbWVudS1pdGVtICNtZW51IFt0eXBlXT1cInR5cGVcIiBbaXRlbXNdPVwiaXRlbXNcIiBbc2VsZWN0ZWRJdGVtXT1cInNlbGVjdGVkSXRlbVwiIFt4UG9zaXRpb25dPVwieFBvc2l0aW9uXCJcbiAgICAgICAgICAgIChtZW51SXRlbUNsaWNrKT1cIm9uTWVudUl0ZW1DbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgPC9wZXAtbWVudS1pdGVtPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNyZWd1bGFyVGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtcyB0aGVuIG1lbnVUZW1wbGF0ZSBlbHNlIGJ1dHRvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudVRlbXBsYXRlPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzaXplVHlwZSB9fSB7eyBzdHlsZVR5cGUgfX0ge3sgY2xhc3NOYW1lcyB9fVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi1idXR0b24nOiAhZGlzcGxheVRleHQgfHwgc2NyZWVuU2l6ZSA+IFBlcFNjcmVlblNpemVUeXBlLlNNLCAncGVwLWJ1dHRvbi1saW1pdGVkLXdpZHRoJzogc2NyZWVuU2l6ZSA8IFBlcFNjcmVlblNpemVUeXBlLlhTLCBkaXNhYmxlZDogZGlzYWJsZWQgfVwiXG4gICAgICAgICAgICAgICAgcGVwUnRsRGlyZWN0aW9uIHBlcE1lbnVCbHVyIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51LmNoaWxkTWVudVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKG1lbnVDbGljayk9XCJvbk1lbnVDbGlja2VkKCRldmVudClcIiAobWVudU9wZW5lZCk9XCJvbk1lbnVPcGVuZWQoKVwiIChtZW51Q2xvc2VkKT1cIm9uTWVudUNsb3NlZCgpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8cGVwLW1lbnUtaXRlbSAjbWVudSBbdHlwZV09XCJ0eXBlXCIgW2l0ZW1zXT1cIml0ZW1zXCIgW3NlbGVjdGVkSXRlbV09XCJzZWxlY3RlZEl0ZW1cIiBbeFBvc2l0aW9uXT1cInhQb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwib25NZW51SXRlbUNsaWNrZWQoJGV2ZW50KVwiID48L3BlcC1tZW51LWl0ZW0+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjYnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJwZXAtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fSB7eyBjbGFzc05hbWVzIH19XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpY29uLWJ1dHRvbic6ICFkaXNwbGF5VGV4dCB8fCBzY3JlZW5TaXplID4gUGVwU2NyZWVuU2l6ZVR5cGUuU00sICdwZXAtYnV0dG9uLWxpbWl0ZWQtd2lkdGgnOiBzY3JlZW5TaXplIDwgUGVwU2NyZWVuU2l6ZVR5cGUuWFMsIGRpc2FibGVkOiBkaXNhYmxlZCB9XCJcbiAgICAgICAgICAgICAgICBwZXBSdGxEaXJlY3Rpb24gcGVwTWVudUJsdXIgKG1lbnVDbGljayk9XCJvbk1lbnVDbGlja2VkKCRldmVudClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdHJpZ2dlclRlbXBsYXRlPlxuICAgIDxzcGFuICpuZ0lmPVwiZGlzcGxheVRleHQgJiYgc2NyZWVuU2l6ZSA8PSBQZXBTY3JlZW5TaXplVHlwZS5TTVwiIGNsYXNzPVwiZWxsaXBzaXNcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdidXR0b24tdGl0bGUtd2l0aC1pY29uJzogaWNvbk5hbWUgfVwiIFt0aXRsZV09XCJkaXNwbGF5VGV4dFwiPlxuICAgICAgICB7eyBkaXNwbGF5VGV4dCB9fVxuICAgIDwvc3Bhbj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uTmFtZVwiPlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cInt7IGljb25OYW1lIH19XCI+PC9wZXAtaWNvbj5cbiAgICA8L21hdC1pY29uPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -70,7 +70,7 @@ export class ProfileDataViewsListComponent {
70
70
  }
71
71
  }
72
72
  ProfileDataViewsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ProfileDataViewsListComponent, deps: [{ token: i1.PepDialogService }], target: i0.ɵɵFactoryTarget.Component });
73
- ProfileDataViewsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: ProfileDataViewsListComponent, selector: "pep-profile-data-views-list", inputs: { defaultProfileId: "defaultProfileId", availableProfiles: "availableProfiles", profileDataViewsList: "profileDataViewsList", configurationPerScreenSize: "configurationPerScreenSize" }, outputs: { saveNewProfileClick: "saveNewProfileClick", dataViewEditClick: "dataViewEditClick", dataViewDeleteClick: "dataViewDeleteClick" }, viewQueries: [{ propertyName: "selectProfileTemplate", first: true, predicate: ["selectProfileTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"profile-data-views-list-container\">\n <pep-profile-data-views-card *ngFor=\"let profileDataViews of profileDataViewsList\"\n [configurationPerScreenSize]=\"configurationPerScreenSize\" [title]=\"profileDataViews.title\"\n [profileId]=\"profileDataViews.profileId\" [dataViews]=\"profileDataViews.dataViews\"\n [isDefault]=\"profileDataViews.profileId === defaultProfileId\"\n (dataViewEditClick)=\"onDataViewEditClicked($event)\" (dataViewDeleteClick)=\"onDataViewDeleteClicked($event)\">\n </pep-profile-data-views-card>\n\n <pep-button *ngIf=\"nonExistingProfiles?.length > 0\" [value]=\"'PROFILE_DATA_VIEWS_LIST.ADD_PROFILE' | translate\"\n iconName=\"number_plus\" sizeType=\"lg\" (buttonClick)=\"onAddProfileClicked($event)\"></pep-button>\n</div>\n\n<ng-template #selectProfileTemplate let-data>\n <pep-dialog [title]=\"'PROFILE_DATA_VIEWS_LIST.SELECT_PROFILE_DIALOG_TITLE' | translate\" (close)=\"closeDialog()\">\n <ng-container pep-dialog-content>\n <pep-select [label]=\"'PROFILE_DATA_VIEWS_LIST.SELECT_PROFILE' | translate\" [options]=\"data.options\"\n [emptyOption]=\"false\" (valueChange)=\"setSelectedNewProfileId($event)\">\n </pep-select>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"pep-spacing-element-negative\">\n <button mat-button class=\"pep-spacing-element pep-button md weak\" (click)=\"closeDialog()\">\n {{ 'Cancel' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\" (click)=\"saveNewProfile()\"\n [disabled]=\"selectedNewProfileId === ''\">\n {{ 'Save' | translate}}\n </button>\n </div>\n </ng-container>\n </pep-dialog>\n</ng-template>", styles: [".profile-data-views-list-container{display:flex;align-items:flex-start;gap:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i1.PepDialogComponent, selector: "pep-dialog", inputs: ["title", "showClose", "showHeader", "showFooter"], outputs: ["close"] }, { kind: "component", type: i4.PepSelectComponent, selector: "pep-select", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "options", "visible", "emptyOption", "form", "layoutType", "parentFieldKey", "isActive", "showTitle", "renderTitle", "typeaheadDebounceInterval"], outputs: ["valueChange"] }, { kind: "component", type: i5.ProfileDataViewsCardComponent, selector: "pep-profile-data-views-card", inputs: ["profileId", "title", "dataViews", "configurationPerScreenSize", "isDefault"], outputs: ["dataViewEditClick", "dataViewDeleteClick"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
73
+ ProfileDataViewsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: ProfileDataViewsListComponent, selector: "pep-profile-data-views-list", inputs: { defaultProfileId: "defaultProfileId", availableProfiles: "availableProfiles", profileDataViewsList: "profileDataViewsList", configurationPerScreenSize: "configurationPerScreenSize" }, outputs: { saveNewProfileClick: "saveNewProfileClick", dataViewEditClick: "dataViewEditClick", dataViewDeleteClick: "dataViewDeleteClick" }, viewQueries: [{ propertyName: "selectProfileTemplate", first: true, predicate: ["selectProfileTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"profile-data-views-list-container\">\n <pep-profile-data-views-card *ngFor=\"let profileDataViews of profileDataViewsList\"\n [configurationPerScreenSize]=\"configurationPerScreenSize\" [title]=\"profileDataViews.title\"\n [profileId]=\"profileDataViews.profileId\" [dataViews]=\"profileDataViews.dataViews\"\n [isDefault]=\"profileDataViews.profileId === defaultProfileId\"\n (dataViewEditClick)=\"onDataViewEditClicked($event)\" (dataViewDeleteClick)=\"onDataViewDeleteClicked($event)\">\n </pep-profile-data-views-card>\n\n <pep-button *ngIf=\"nonExistingProfiles?.length > 0\" [value]=\"'PROFILE_DATA_VIEWS_LIST.ADD_PROFILE' | translate\"\n iconName=\"number_plus\" sizeType=\"lg\" (buttonClick)=\"onAddProfileClicked($event)\"></pep-button>\n</div>\n\n<ng-template #selectProfileTemplate let-data>\n <pep-dialog [title]=\"'PROFILE_DATA_VIEWS_LIST.SELECT_PROFILE_DIALOG_TITLE' | translate\" (close)=\"closeDialog()\">\n <ng-container pep-dialog-content>\n <pep-select [label]=\"'PROFILE_DATA_VIEWS_LIST.SELECT_PROFILE' | translate\" [options]=\"data.options\"\n [emptyOption]=\"false\" (valueChange)=\"setSelectedNewProfileId($event)\">\n </pep-select>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"pep-spacing-element-negative\">\n <button mat-button class=\"pep-spacing-element pep-button md weak\" (click)=\"closeDialog()\">\n {{ 'Cancel' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\" (click)=\"saveNewProfile()\"\n [disabled]=\"selectedNewProfileId === ''\">\n {{ 'Save' | translate}}\n </button>\n </div>\n </ng-container>\n </pep-dialog>\n</ng-template>", styles: [".profile-data-views-list-container{display:flex;align-items:flex-start;gap:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i1.PepDialogComponent, selector: "pep-dialog", inputs: ["title", "showClose", "showHeader", "showFooter"], outputs: ["close"] }, { kind: "component", type: i4.PepSelectComponent, selector: "pep-select", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "placeholder", "placeholderWhenDisabled", "options", "visible", "emptyOption", "form", "layoutType", "parentFieldKey", "isActive", "showTitle", "renderTitle", "typeaheadDebounceInterval", "addValueToOptionsIfNotExist"], outputs: ["valueChange"] }, { kind: "component", type: i5.ProfileDataViewsCardComponent, selector: "pep-profile-data-views-card", inputs: ["profileId", "title", "dataViews", "configurationPerScreenSize", "isDefault"], outputs: ["dataViewEditClick", "dataViewDeleteClick"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
74
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ProfileDataViewsListComponent, decorators: [{
75
75
  type: Component,
76
76
  args: [{ selector: 'pep-profile-data-views-list', template: "<div class=\"profile-data-views-list-container\">\n <pep-profile-data-views-card *ngFor=\"let profileDataViews of profileDataViewsList\"\n [configurationPerScreenSize]=\"configurationPerScreenSize\" [title]=\"profileDataViews.title\"\n [profileId]=\"profileDataViews.profileId\" [dataViews]=\"profileDataViews.dataViews\"\n [isDefault]=\"profileDataViews.profileId === defaultProfileId\"\n (dataViewEditClick)=\"onDataViewEditClicked($event)\" (dataViewDeleteClick)=\"onDataViewDeleteClicked($event)\">\n </pep-profile-data-views-card>\n\n <pep-button *ngIf=\"nonExistingProfiles?.length > 0\" [value]=\"'PROFILE_DATA_VIEWS_LIST.ADD_PROFILE' | translate\"\n iconName=\"number_plus\" sizeType=\"lg\" (buttonClick)=\"onAddProfileClicked($event)\"></pep-button>\n</div>\n\n<ng-template #selectProfileTemplate let-data>\n <pep-dialog [title]=\"'PROFILE_DATA_VIEWS_LIST.SELECT_PROFILE_DIALOG_TITLE' | translate\" (close)=\"closeDialog()\">\n <ng-container pep-dialog-content>\n <pep-select [label]=\"'PROFILE_DATA_VIEWS_LIST.SELECT_PROFILE' | translate\" [options]=\"data.options\"\n [emptyOption]=\"false\" (valueChange)=\"setSelectedNewProfileId($event)\">\n </pep-select>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"pep-spacing-element-negative\">\n <button mat-button class=\"pep-spacing-element pep-button md weak\" (click)=\"closeDialog()\">\n {{ 'Cancel' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\" (click)=\"saveNewProfile()\"\n [disabled]=\"selectedNewProfileId === ''\">\n {{ 'Save' | translate}}\n </button>\n </div>\n </ng-container>\n </pep-dialog>\n</ng-template>", styles: [".profile-data-views-list-container{display:flex;align-items:flex-start;gap:1rem}\n"] }]
@@ -76,7 +76,7 @@ export class PepQuantitySelectorComponent {
76
76
  this.isEmptyKey = false;
77
77
  this._displayValueSubject = new BehaviorSubject('');
78
78
  this._destroyed = new Subject();
79
- this.qsWidthSubject = new BehaviorSubject(0);
79
+ // this.qsWidthSubject = new BehaviorSubject(0);
80
80
  }
81
81
  set value(value) {
82
82
  if (!value) {
@@ -256,19 +256,29 @@ export class PepQuantitySelectorComponent {
256
256
  this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME);
257
257
  }
258
258
  }
259
- this.qsWidthSubject
260
- .asObservable()
261
- .pipe(this.getDestroyer(), distinctUntilChanged())
262
- .subscribe((qsWidth) => {
263
- this.setupQsButtons(qsWidth);
264
- });
259
+ // this.qsWidthSubject
260
+ // .asObservable()
261
+ // .pipe(this.getDestroyer(), distinctUntilChanged())
262
+ // .subscribe((qsWidth: number) => {
263
+ // this.setupQsButtons(qsWidth);
264
+ // });
265
265
  this.updateFormFieldValue(true);
266
266
  }
267
267
  ngAfterViewInit() {
268
- //
268
+ setTimeout(() => {
269
+ // debugger;
270
+ if (this.QSCont &&
271
+ this.QSCont.nativeElement &&
272
+ this.QSCont.nativeElement.clientWidth > 0) {
273
+ this.showQsBtn = this.QSCont.nativeElement.clientWidth > 120;
274
+ }
275
+ if (!this.cd['destroyed']) {
276
+ this.cd.detectChanges();
277
+ }
278
+ }, 0);
269
279
  }
270
280
  ngAfterViewChecked() {
271
- this.setQsView();
281
+ // this.setQsView();
272
282
  }
273
283
  ngOnChanges(changes) {
274
284
  // Bug fix for addons when the key is '' in the ngOnInit for some reson
@@ -464,21 +474,6 @@ export class PepQuantitySelectorComponent {
464
474
  otherData: this.notificationInfo,
465
475
  });
466
476
  }
467
- setupQsButtons(qsWidth) {
468
- this.showQsBtn = qsWidth > 120;
469
- if (!this.cd['destroyed']) {
470
- this.cd.detectChanges();
471
- }
472
- }
473
- setQsView() {
474
- if (this.QSCont &&
475
- this.QSCont.nativeElement &&
476
- this.QSCont.nativeElement.clientWidth > 0) {
477
- setTimeout(() => {
478
- this.qsWidthSubject.next(this.QSCont.nativeElement.clientWidth);
479
- }, 0);
480
- }
481
- }
482
477
  }
483
478
  PepQuantitySelectorComponent.ENTER_CHILDREN = '[EnterChildren]';
484
479
  PepQuantitySelectorComponent.ENTER_PACKAGE = '[EnterPackage]';
@@ -572,4 +567,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
572
567
  }], isInFocus: [{
573
568
  type: Input
574
569
  }] } });
575
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbnRpdHktc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9xdWFudGl0eS1zZWxlY3Rvci9xdWFudGl0eS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3F1YW50aXR5LXNlbGVjdG9yL3F1YW50aXR5LXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBSVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUdULHVCQUF1QixHQUcxQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsT0FBTyxFQUNQLFVBQVUsR0FDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFHSCx1QkFBdUIsRUFFdkIsNEJBQTRCLEVBRzVCLHdCQUF3QixHQUUzQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQXlCLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQWdCLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQTZCL0UsTUFBTSxPQUFPLDRCQUE0QjtJQXFPckMsWUFDWSxFQUFxQixFQUNyQixvQkFBNkMsRUFDN0MsUUFBbUIsRUFDbkIsT0FBbUIsRUFDbkIsU0FBMkIsRUFDM0IsZ0JBQXFDO1FBTHJDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDN0MsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFB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O3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBTU4sV0FBVztzQkFEVixNQUFNO2dCQUlQLFlBQVk7c0JBRFgsTUFBTTtnQkFHYyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0csT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQWVoQixTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIFJlbmRlcmVyMixcbiAgICBBZnRlclZpZXdJbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgdHJpZ2dlcixcbiAgICBzdGF0ZSxcbiAgICBzdHlsZSxcbiAgICBhbmltYXRlLFxuICAgIHRyYW5zaXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBQZXBMYXlvdXRUeXBlLFxuICAgIFBlcFN0eWxlVHlwZSxcbiAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICBQZXBIb3Jpem9udGFsQWxpZ25tZW50LFxuICAgIERFRkFVTFRfSE9SSVpPTlRBTF9BTElHTk1FTlQsXG4gICAgSVBlcEZpZWxkQ2xpY2tFdmVudCxcbiAgICBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRUeXBlLFxuICAgIFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZCxcbiAgICBQZXBVdGlsaXRpZXNTZXJ2aWNlLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1xdWFudGl0eS1zZWxlY3RvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3F1YW50aXR5LXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9xdWFudGl0eS1zZWxlY3Rvci5jb21wb25lbnQuc2NzcycsICcuL3F1YW50aXR5LXNlbGVjdG9yLmNvbXBvbmVudC50aGVtZS5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdzaG93SGlkZScsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdzaG93JyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDEpJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdoaWRlJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDApJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3Nob3cgPT4gaGlkZScsIGFuaW1hdGUoJzI1MG1zIGVhc2Utb3V0JykpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignaGlkZSA9PiBzaG93JywgYW5pbWF0ZSgnMjUwbXMgZWFzZS1pbicpKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHN0YXRpYyBFTlRFUl9DSElMRFJFTiA9ICdbRW50ZXJDaGlsZHJlbl0nO1xuICAgIHB1YmxpYyBzdGF0aWMgRU5URVJfUEFDS0FHRSA9ICdbRW50ZXJQYWNrYWdlXSc7XG4gICAgcHVibGljIHN0YXRpYyBQTFVTID0gJ1srXSc7XG4gICAgcHVibGljIHN0YXRpYyBNSU5VUyA9ICdbLV0nO1xuXG4gICAgQElucHV0KCkga2V5ID0gJyc7XG5cbiAgICBwcml2YXRlIF92YWx1ZSA9IG51bGw7XG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEaWZmZXJlbnRWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldEZvcm1hdHRlZFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmNoYW5nZURpc3BsYXlWYWx1ZSgpO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cbiAgICBcbiAgICBnZXQgdmFsdWVBc0N1cnJlbnRDdWx0dXJlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0aWxpdGllc1NlcnZpY2UuY2hhbmdlRGVjaW1hbFNlcGFyYXRvcldoZW5JdHNDb21tYSh0aGlzLnZhbHVlLCB0cnVlKTtcbiAgICAgICAgLy8gbGV0IHJlcyA9IHRoaXMudmFsdWU7XG5cbiAgICAgICAgLy8gaWYgKHRoaXMuYWxsb3dEZWNpbWFsKSB7XG4gICAgICAgIC8vICAgICByZXMgPSB0aGlzLnV0aWxpdGllc1NlcnZpY2UuZm9ybWF0RGVjaW1hbCh0aGlzLnZhbHVlLCB0aGlzLm1pbkZyYWN0aW9uRGlnaXRzLCB0aGlzLm1heEZyYWN0aW9uRGlnaXRzLCBmYWxzZSk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgXG4gICAgICAgIC8vIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZvcm1hdHRlZFZhbHVlID0gJyc7XG4gICAgLy8gcHJpdmF0ZSBfZm9ybWF0dGVkVmFsdWUgPSAnJztcbiAgICAvLyBASW5wdXQoKVxuICAgIC8vIHNldCBmb3JtYXR0ZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gICAgIC8vIGlmICghdmFsdWUpIHtcbiAgICAvLyAgICAgLy8gICAgIHZhbHVlID0gJyc7XG4gICAgLy8gICAgIC8vIH1cblxuICAgIC8vICAgICAvLyBpZiAodGhpcy5fY2FsY3VsYXRlRm9ybWF0dGVkVmFsdWUpIHtcbiAgICAvLyAgICAgLy8gICAgIHRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlID0gZmFsc2U7XG4gICAgLy8gICAgIC8vIH1cblxuICAgIC8vICAgICAvLyB0aGlzLnNldEZvcm1hdHRlZFZhbHVlKHZhbHVlKTtcbiAgICAvLyB9XG4gICAgLy8gZ2V0IGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgLy8gICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRWYWx1ZTtcbiAgICAvLyB9XG4gICAgXG4gICAgcHJpdmF0ZSBfbWluRnJhY3Rpb25EaWdpdHMgPSBOYU47XG4gICAgQElucHV0KClcbiAgICBzZXQgbWluRnJhY3Rpb25EaWdpdHModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taW5GcmFjdGlvbkRpZ2l0cyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldEZvcm1hdHRlZFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmNoYW5nZURpc3BsYXlWYWx1ZSgpO1xuICAgIH1cbiAgICBnZXQgbWluRnJhY3Rpb25EaWdpdHMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbkZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21heEZyYWN0aW9uRGlnaXRzID0gTmFOO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heEZyYWN0aW9uRGlnaXRzKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWF4RnJhY3Rpb25EaWdpdHMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEaXNwbGF5VmFsdWUoKTtcbiAgICB9XG4gICAgZ2V0IG1heEZyYWN0aW9uRGlnaXRzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhGcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIHR5cGU6IFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZFR5cGUgPSAncXMnO1xuICAgIEBJbnB1dCgpIG1hbmRhdG9yeSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX3RleHRDb2xvciA9ICcnO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRleHRDb2xvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3RleHRDb2xvciA9IHZhbHVlO1xuICAgICAgICB0aGlzLmlzQ2F1dGlvbiA9IHZhbHVlID09PSAnI0ZGMDAwMCc7XG4gICAgfVxuICAgIGdldCB0ZXh0Q29sb3IoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRDb2xvcjtcbiAgICB9XG5cbiAgICBASW5wdXQoKSB4QWxpZ25tZW50OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50ID0gREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVDtcbiAgICBASW5wdXQoKSByb3dTcGFuID0gMTtcbiAgICBcbiAgICBwcml2YXRlIF9hbGxvd0RlY2ltYWwgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBcbiAgICBzZXQgYWxsb3dEZWNpbWFsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2FsbG93RGVjaW1hbCA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm1hdHRlZFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEaXNwbGF5VmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgYWxsb3dEZWNpbWFsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dEZWNpbWFsO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGFkZGl0aW9uYWxWYWx1ZSA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uSW5mbzogYW55O1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG5vdGlmaWNhdGlvbkluZm8odmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25JbmZvID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB2YWx1ZSAmJiB2YWx1ZSA+IDAgPyBKU09OLnBhcnNlKHZhbHVlKS5NZXNzYWdlcyA6ICcnO1xuICAgICAgICBpZiAobWVzc2FnZXMgJiYgbWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgbXNnIGtleXMuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1zZyBvZiBtZXNzYWdlcykge1xuICAgICAgICAgICAgICAgIGlmIChtc2cuS2V5ID09PSAnSW52ZW50b3J5X0xpbWl0X01zZycpIHtcbiAgICAgICAgICAgICAgICAgICAgbXNnLktleSA9ICdNRVNTQUdFUy5FUlJPUl9JTlZFTlRPUllfTElNSVQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobXNnLktleSA9PT0gJ0Nhc2VfUXVhbnRpdHlfTGltaXRfTXNnJykge1xuICAgICAgICAgICAgICAgICAgICBtc2cuS2V5ID0gJ01FU1NBR0VTLkVSUk9SX0NBU0VfUVVBTlRJVFlfTElNSVQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobXNnLktleSA9PT0gJ01pbl9RdWFudGl0eV9MaW1pdF9Nc2cnKSB7XG4gICAgICAgICAgICAgICAgICAgIG1zZy5LZXkgPSAnTUVTU0FHRVMuRVJST1JfTUlOX1FVQU5USVRZX0xJTUlUJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1zZy5LZXkgPT09ICdNYXhfUXVhbnRpdHlfTGltaXRfTXNnJykge1xuICAgICAgICAgICAgICAgICAgICBtc2cuS2V5ID0gJ01FU1NBR0VTLkVSUk9SX01BWF9RVUFOVElUWV9MSU1JVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpZWxkQ29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmtleV07XG4gICAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJvcjogJ0Vycm9yJyxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnNhbWVFbGVtZW50SW5UaGVXYW50ZWRSb3cgPSBudWxsO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuUVNJbnB1dCAmJiB0aGlzLlFTSW5wdXQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLlFTSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDE1MCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IG5vdGlmaWNhdGlvbkluZm8oKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvbkluZm87XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmlzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG5cbiAgICBjb250cm9sVHlwZSA9ICdxcyc7XG5cbiAgICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXAgPSBudWxsO1xuICAgIEBJbnB1dCgpIHNob3dUaXRsZSA9IHRydWU7XG4gICAgQElucHV0KCkgcmVuZGVyVGl0bGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGxheW91dFR5cGU6IFBlcExheW91dFR5cGUgPSAnZm9ybSc7XG4gICAgQElucHV0KCkgaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgIC8vIEdldCBkZWZhdWx0IHN0eWxlIGZyb20gdGhlbWUuXG4gICAgQElucHV0KClcbiAgICBzdHlsZVR5cGU6IFBlcFN0eWxlVHlwZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVFlMRV9RU19LRVlcbiAgICApIGFzIFBlcFN0eWxlVHlwZTsgLy8nc3Ryb25nJztcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZWxlbWVudENsaWNrOiBFdmVudEVtaXR0ZXI8SVBlcEZpZWxkQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGaWVsZENsaWNrRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdRU0NvbnQnKSBRU0NvbnQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnUVNJbnB1dCcpIFFTSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVGb3JtYXR0ZWRWYWx1ZSA9IHRydWU7XG4gICAgZ2V0IGNhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsY3VsYXRlRm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+O1xuICAgIHByaXZhdGUgcXNXaWR0aFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xuICAgIGxhc3RRc0NvbnRDbGllbnRXaWR0aCA9IDA7XG4gICAgc2hvd1FzQnRuID0gdHJ1ZTtcblxuICAgIHN0YW5kQWxvbmUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc0luRm9jdXMgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBpc0luRm9jdXMoaXNJbkZvY3VzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzSW5Gb2N1cyA9IGlzSW5Gb2N1cztcbiAgICAgICAgdGhpcy5jaGFuZ2VEaXNwbGF5VmFsdWUoKTtcbiAgICB9XG4gICAgZ2V0IGlzSW5Gb2N1cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW5Gb2N1cztcbiAgICB9XG4gICAgaXNNYXRyaXhGb2N1cyA9IGZhbHNlO1xuXG4gICAgaXNDYXV0aW9uID0gZmFsc2U7XG4gICAgbWVzc2FnZXM6IEFycmF5PGFueT4gPSBudWxsO1xuXG4gICAgc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdyA9IG51bGw7XG5cbiAgICBpc0VtcHR5S2V5ID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9kaXNwbGF5VmFsdWVTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgZ2V0IGRpc3BsYXlWYWx1ZSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlWYWx1ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXRpbGl0aWVzU2VydmljZTogUGVwVXRpbGl0aWVzU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICB0aGlzLnFzV2lkdGhTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcbiAgICB9XG5cbiAgICBzZXRGb3JtKCkge1xuICAgICAgICBjb25zdCBwZXBGaWVsZCA9IG5ldyBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlQXNDdXJyZW50Q3VsdHVyZSxcbiAgICAgICAgICAgIG1hbmRhdG9yeTogdGhpcy5tYW5kYXRvcnksXG4gICAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSxcbiAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5nZXREZWZhdWx0RnJvbUdyb3VwKHBlcEZpZWxkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvcm1hdHRlZFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID0gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmZvcm1hdERlY2ltYWwodmFsdWUsIHRoaXMubWluRnJhY3Rpb25EaWdpdHMsIHRoaXMubWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID0gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmZvcm1hdE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHRoaXMudXBkYXRlRm9ybUZpZWxkVmFsdWUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeURpc3BsYXlWYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZVN1YmplY3QubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VEaXNwbGF5VmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGxldCByZXMgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5hbGxvd0RlY2ltYWwpIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuaXNJbkZvY3VzID8gdGhpcy52YWx1ZUFzQ3VycmVudEN1bHR1cmUgOiB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5pc0luRm9jdXMgPyB0aGlzLnZhbHVlIDogdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubm90aWZ5RGlzcGxheVZhbHVlQ2hhbmdlKHJlcyk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdjaGFuZ2VEaXNwbGF5VmFsdWUnICsgcmVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUZvcm1GaWVsZFZhbHVlKGZpcnN0TG9hZCA9IGZhbHNlKSB7XG4gICAgICAgIC8vIFNldCB0aGUgZm9ybWF0dGVkIHZhbHVlIG9ubHkgZm9yIHRoZSBmaXJzdCBsb2FkIGNhdXNlIGl0J3Mgbm90IGZvcm1hdHRlZCBpZiB3ZSBzZXQgdGhlIHZhbHVlIChJIGRvbid0IGtub3cgd2h5KVxuICAgICAgICAvLyBFbHNlIHdlIHNldCB0aGUgdmFsdWUgLSB0aGlzIGlzIGltcG9ydGFudCB0byBzZXQgdGhlIHZhbHVlIG9ubHkgY2F1c2Ugc2V0dGluZyB0aGUgZm9ybWF0dGVkIHZhbHVlIHdpbGwgY2F1c2UgYnVnIHdoZW4gdGhlIG51bWJlciBpcyB3aXRoIHRob3VzYW5kIHNlcGFyYXRvclxuICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5mb3JtLFxuICAgICAgICAgICAgdGhpcy5rZXksXG4gICAgICAgICAgICBmaXJzdExvYWQgPyB0aGlzLmZvcm1hdHRlZFZhbHVlIDogdGhpcy52YWx1ZSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBnZXQgZGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XG4gICAgLy8gICAgIGNvbnN0IHJlcyA9IHRoaXMuaXNJbkZvY3VzXG4gICAgLy8gICAgICAgICA/IHRoaXMudXRpbGl0aWVzU2VydmljZS5mb3JtYXREZWNpbWFsKHRoaXMudmFsdWUsIHRoaXMubWluRnJhY3Rpb25EaWdpdHMsIHRoaXMubWF4RnJhY3Rpb25EaWdpdHMpXG4gICAgLy8gICAgICAgICA6IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgLy8gICAgIHJldHVybiByZXM7XG4gICAgLy8gfVxuXG4gICAgcHJvdGVjdGVkIGdldERlc3Ryb3llcigpIHtcbiAgICAgICAgcmV0dXJuIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtID09PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5rZXkgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0VtcHR5S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdGFuZEFsb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybSgpO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNUQU5EX0FMT05FX0ZJRUxEX0NMQVNTX05BTUVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5yZW5kZXJUaXRsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVEFORF9BTE9ORV9GSUVMRF9OT19TUEFDSU5HX0NMQVNTX05BTUVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5xc1dpZHRoU3ViamVjdFxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0aGlzLmdldERlc3Ryb3llcigpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocXNXaWR0aDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cFFzQnV0dG9ucyhxc1dpZHRoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlRm9ybUZpZWxkVmFsdWUodHJ1ZSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRRc1ZpZXcoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gQnVnIGZpeCBmb3IgYWRkb25zIHdoZW4gdGhlIGtleSBpcyAnJyBpbiB0aGUgbmdPbkluaXQgZm9yIHNvbWUgcmVzb25cbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eUtleSAmJiB0aGlzLmtleSAhPT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzVG9UaGVTYW1lRWxlbWVudEluVGhlV2FudGVkUm93KCk7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIGdldCBnZXRBZGRpdGlvbmFsVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkaXRpb25hbFZhbHVlLmxlbmd0aCA+IDAgPyAnc2hvdycgOiAnaGlkZSc7XG4gICAgfVxuXG4gICAgZ2V0UGFyZW50QnlDbGFzcyhlbCwgcGFyZW50U2VsZWN0b3IgLyogb3B0aW9uYWwgKi8pOiBhbnkge1xuICAgICAgICAvLyBJZiBubyBwYXJlbnRTZWxlY3RvciBkZWZpbmVkIHdpbGwgYnViYmxlIHVwIGFsbCB0aGUgd2F5IHRvICpkb2N1bWVudCpcbiAgICAgICAgaWYgKHBhcmVudFNlbGVjdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcmVudFNlbGVjdG9yID0gZG9jdW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9IGVsLnBhcmVudE5vZGU7XG5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgcCAmJlxuICAgICAgICAgICAgIXA/LmNsYXNzTGlzdD8uY29udGFpbnMocGFyZW50U2VsZWN0b3IpICYmXG4gICAgICAgICAgICBwYXJlbnRTZWxlY3RvciAhPT0gZG9jdW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBvID0gcDtcbiAgICAgICAgICAgIHAgPSBvPy5wYXJlbnROb2RlIHx8IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcD8uY2xhc3NOYW1lLmluZGV4T2YocGFyZW50U2VsZWN0b3IpID4gLTEgPyBwIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXRTYW1lRWxlbWVudEluVGhlV2FudGVkUm93QnlDbGFzc05hbWUoZXZlbnQ6IGFueSwgaXNOZXh0ID0gdHJ1ZSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gICAgICAgIGxldCBzYW1lRWxlbWVudEluVGhlV2FudGVkUm93QnlDbGFzc05hbWU7XG5cbiAgICAgICAgbGV0IHBhcmVudFNlbGVjdG9yO1xuICAgICAgICBpZiAodGhpcy5sYXlvdXRUeXBlID09PSAndGFibGUnKSB7XG4gICAgICAgICAgICBwYXJlbnRTZWxlY3RvciA9IHRoaXMuZ2V0UGFyZW50QnlDbGFzcyhldmVudFRhcmdldCwgJ3RhYmxlLXJvdycpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubGF5b3V0VHlwZSA9PT0gJ2NhcmQnKSB7XG4gICAgICAgICAgICBwYXJlbnRTZWxlY3RvciA9IHRoaXMuZ2V0UGFyZW50QnlDbGFzcyhldmVudFRhcmdldCwgJ2NhcmQtdmlldycpO1xuICAgICAgICAgICAgaWYgKCFwYXJlbnRTZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgIHBhcmVudFNlbGVjdG9yID0gdGhpcy5nZXRQYXJlbnRCeUNsYXNzKFxuICAgICAgICAgICAgICAgICAgICBldmVudFRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgJ2xpbmUtdmlldydcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50U2VsZWN0b3IubmV4dEVsZW1lbnRTaWJsaW5nID09PSBudWxsICYmXG4gICAgICAgICAgICBwYXJlbnRTZWxlY3Rvci5wcmV2aW91c0VsZW1lbnRTaWJsaW5nID09PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvd0J5Q2xhc3NOYW1lID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc05leHQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50U2VsZWN0b3IubmV4dEVsZW1lbnRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHNhbWVFbGVtZW50SW5UaGVXYW50ZWRSb3dCeUNsYXNzTmFtZSA9IHBhcmVudFNlbGVjdG9yLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICdbbmFtZT0nICsgdGhpcy5rZXkgKyAnXSdcbiAgICAgICAgICAgICAgICAgICAgKVswXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzYW1lRWxlbWVudEluVGhlV2FudGVkUm93QnlDbGFzc05hbWUgPSBwYXJlbnRTZWxlY3Rvci5uZXh0RWxlbWVudFNpYmxpbmcucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICdbbmFtZT0nICsgdGhpcy5rZXkgKyAnXSdcbiAgICAgICAgICAgICAgICAgICAgKVswXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTZWxlY3Rvci5wcmV2aW91c0VsZW1lbnRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzTGlzdCA9IHBhcmVudFNlbGVjdG9yLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICdbbmFtZT0nICsgdGhpcy5rZXkgKyAnXSdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvd0J5Q2xhc3NOYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzTGlzdFtlbGVtZW50c0xpc3QubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvd0J5Q2xhc3NOYW1lID0gcGFyZW50U2VsZWN0b3IucHJldmlvdXNFbGVtZW50U2libGluZy5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1tuYW1lPScgKyB0aGlzLmtleSArICddJ1xuICAgICAgICAgICAgICAgICAgICApWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzYW1lRWxlbWVudEluVGhlV2FudGVkUm93QnlDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgc2V0U2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdyhldmVudDogYW55LCBpc05leHQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIC8vIE5hdmlnYXRlIHRvIHRoZSBRUyBpbiB0aGUgbmV4dCByb3cuXG4gICAgICAgIGlmICh0aGlzLmxheW91dFR5cGUgPT09ICdjYXJkJyB8fCB0aGlzLmxheW91dFR5cGUgPT09ICd0YWJsZScpIHtcbiAgICAgICAgICAgIHRoaXMuc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdyA9IHRoaXMuZ2V0U2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvd0J5Q2xhc3NOYW1lKFxuICAgICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgIGlzTmV4dFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuUVNJbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG5cbiAgICBmb2N1c1RvVGhlU2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdykge1xuICAgICAgICAgICAgY29uc3QgZWxlbSA9IHRoaXMuc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdztcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgcmVndWxhciBpdGVtIChxcyBhbmQgbm90IGJ1dHRvbikgLlxuICAgICAgICAgICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmIGVsZW0udHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgZWxlbS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGVsZW0uc2VsZWN0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEVsZW0gPSBlbGVtLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgcGFyZW50RWxlbS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGVsZW0uZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhbkVycm9yKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5rZXldO1xuXG4gICAgICAgIC8vIENsZWFuIHRoZSBlcnJvciBtZXNzYWdlXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VzICYmIHRoaXMubWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubm90aWZpY2F0aW9uSW5mbyA9IG51bGw7XG4gICAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25NYXRyaXhNb3VzZUVudGVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc01hdHJpeEZvY3VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbk1hdHJpeE1vdXNlbGVhdmUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTWF0cml4Rm9jdXMgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbk1hdHJpeENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRm9jdXMgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLlFTSW5wdXQgJiYgdGhpcy5RU0lucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuUVNJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1hdHJpeEJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhZXZlbnQucmVsYXRlZFRhcmdldCB8fFxuICAgICAgICAgICAgZXZlbnQucmVsYXRlZFRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigncXMnKSA8IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmlzTWF0cml4Rm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25CbHVyKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRm9jdXMgPSB0cnVlO1xuXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyAgICAgaWYgKHRoaXMuaXNJbkZvY3VzKSB7XG4gICAgICAgIC8vICAgICAgICAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgICAgLy8gICAgICAgICBpZiAoZXZlbnRUYXJnZXQpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgZXZlbnRUYXJnZXQuc2VsZWN0KCk7XG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LCAwKTtcbiAgICB9XG5cbiAgICBpc0RpZmZlcmVudFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmlzRXF1YWxOdW1iZXIodGhpcy52YWx1ZUFzQ3VycmVudEN1bHR1cmUsIHZhbHVlKSA9PT0gZmFsc2U7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jbGVhbkVycm9yKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0ID8gZXZlbnQudGFyZ2V0LnZhbHVlIDogZXZlbnQ7XG5cbiAgICAgICAgLy8gRm9yIGRlY2ltYWwgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBkZWNpbWFsIHNlcGFyYXRvciBiYWNrIGlmIGl0J3MgY29tbWEgKCcsJykuXG4gICAgICAgIGNvbnN0IGNvcnJlY3RWYWx1ZSA9IHRoaXMuYWxsb3dEZWNpbWFsID8gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmNoYW5nZURlY2ltYWxTZXBhcmF0b3JXaGVuSXRzQ29tbWEodmFsdWUpIDogdmFsdWU7XG4gICAgICAgIFxuICAgICAgICBpZiAoY29ycmVjdFZhbHVlICE9PSB0aGlzLnZhbHVlQXNDdXJyZW50Q3VsdHVyZSAmJiB0aGlzLmlzRGlmZmVyZW50VmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gY29ycmVjdFZhbHVlO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLmZvY3VzVG9UaGVTYW1lRWxlbWVudEluVGhlV2FudGVkUm93KCk7XG4gICAgfVxuXG4gICAgb25LZXlkb3duKGV2ZW50KTogYW55IHtcbiAgICAgICAgY29uc3Qga2V5Ym9hcmRFdmVudCA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG5cbiAgICAgICAgaWYgKGtleWJvYXJkRXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLnNldFNhbWVFbGVtZW50SW5UaGVXYW50ZWRSb3coXG4gICAgICAgICAgICAgICAga2V5Ym9hcmRFdmVudCxcbiAgICAgICAgICAgICAgICAha2V5Ym9hcmRFdmVudC5zaGlmdEtleVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5jcmVtZW50KGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0YW5kQWxvbmUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnV0aWxpdGllc1NlcnZpY2UuaW5jcmVtZW50TnVtYmVyKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbGVtZW50Q2xpY2suZW1pdCh7XG4gICAgICAgICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgICAgICAgdmFsdWU6IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQuUExVUyxcbiAgICAgICAgICAgIGNvbnRyb2xUeXBlOiB0aGlzLmNvbnRyb2xUeXBlLFxuICAgICAgICAgICAgZXZlbnRXaGljaDogZXZlbnQud2hpY2gsXG4gICAgICAgIH0pO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBkZWNyZW1lbnQoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhbmRBbG9uZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudXRpbGl0aWVzU2VydmljZS5kZWNyZW1lbnROdW1iZXIodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVsZW1lbnRDbGljay5lbWl0KHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICB2YWx1ZTogUGVwUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudC5NSU5VUyxcbiAgICAgICAgICAgIGNvbnRyb2xUeXBlOiB0aGlzLmNvbnRyb2xUeXBlLFxuICAgICAgICAgICAgZXZlbnRXaGljaDogZXZlbnQud2hpY2gsXG4gICAgICAgIH0pO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBlbnRlckNoaWxkcmVuKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudENsaWNrLmVtaXQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiBQZXBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50LkVOVEVSX0NISUxEUkVOLFxuICAgICAgICAgICAgY29udHJvbFR5cGU6IHRoaXMuY29udHJvbFR5cGUsXG4gICAgICAgICAgICBldmVudFdoaWNoOiBldmVudC53aGljaCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZW50ZXJQYWNrYWdlKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudENsaWNrLmVtaXQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiBQZXBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50LkVOVEVSX1BBQ0tBR0UsXG4gICAgICAgICAgICBjb250cm9sVHlwZTogdGhpcy5jb250cm9sVHlwZSxcbiAgICAgICAgICAgIGV2ZW50V2hpY2g6IGV2ZW50LndoaWNoLFxuICAgICAgICAgICAgb3RoZXJEYXRhOiB0aGlzLm5vdGlmaWNhdGlvbkluZm8sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldHVwUXNCdXR0b25zKHFzV2lkdGg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNob3dRc0J0biA9IHFzV2lkdGggPiAxMjA7XG5cbiAgICAgICAgaWYgKCF0aGlzLmNkWydkZXN0cm95ZWQnXSkge1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRRc1ZpZXcoKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuUVNDb250ICYmXG4gICAgICAgICAgICB0aGlzLlFTQ29udC5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAgICAgICB0aGlzLlFTQ29udC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucXNXaWR0aFN1YmplY3QubmV4dCh0aGlzLlFTQ29udC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8bmctdGVtcGxhdGUgI3BlcFRlbXBsYXRlPlxuICAgICAgICA8ZGl2ICNRU0NvbnQgY2xhc3M9XCJwZXAtcXVhbnRpdHktc2VsZWN0b3ItY29udGFpbmVyIHt7IHN0eWxlVHlwZSB9fVwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnaGlkZS1xcy1hY3Rpb25zJyA6IGxheW91dFR5cGUgPT09ICdjYXJkJyAmJiByb3dTcGFuIDw9IDEsXG4gICAgICAgICAgICAgICAgJ3BlcC10YWJsZS1xdWFudGl0eS1zZWxlY3Rvcic6IGxheW91dFR5cGUgPT09ICd0YWJsZScsXG4gICAgICAgICAgICAgICAgJ29uZS1yb3cnOiByb3dTcGFuID09PSAxLFxuICAgICAgICAgICAgICAgIGNhdXRpb246IGlzQ2F1dGlvbixcbiAgICAgICAgICAgICAgICAnbWF0cml4LXFzJzogdHlwZSA9PT0gJ3FzRm9yTWF0cml4JyxcbiAgICAgICAgICAgICAgICAnemVyby1xdWFudGl0eSc6IGZvcm1hdHRlZFZhbHVlID09PSAnMCdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgIDxwZXAtZmllbGQtdGl0bGUgKm5nSWY9XCJyZW5kZXJUaXRsZSAmJiBsYXlvdXRUeXBlICE9PSAndGFibGUnICYmIGxheW91dFR5cGUgIT09ICdjYXJkJ1wiIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgW21hbmRhdG9yeV09XCJtYW5kYXRvcnlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbc2hvd1RpdGxlXT1cInNob3dUaXRsZVwiIFt4QWxpZ25tZW50XT1cInhBbGlnbm1lbnRcIj5cbiAgICAgICAgICAgIDwvcGVwLWZpZWxkLXRpdGxlPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PSAncXMnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlYWRvbmx5OyB0aGVuIHJlYWRvbmx5QmxvY2s7IGVsc2UgZWRpdGFibGVRU0Jsb2NrXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seUJsb2NrPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtpZF09XCJrZXlcIiBtYXQtYnV0dG9uIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzdHlsZVR5cGUgfX0gZGlzYWJsZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2NhdXRpb246IGlzQ2F1dGlvbiwgbWQ6IHJvd1NwYW4gIT09IDEsIHhzOiByb3dTcGFuID09PSAxfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGZvcm1hdHRlZFZhbHVlIH19XCIgZGlzYWJsZWQ9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0dGVkVmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2VkaXRhYmxlUVNCbG9jaz5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcGVwUXNWYWxpZGF0aW9uIFthbGxvd0RlY2ltYWxdPVwiYWxsb3dEZWNpbWFsXCIgdHlwZT1cImRlY2ltYWxOdW1iZXJcIiBpbnB1dG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCAjUVNJbnB1dCBuYW1lPVwie3sga2V5IH19XCIgY2xhc3M9XCJib2R5LWxnIGVsbGlwc2lzXCIgdGl0bGU9XCJ7eyBmb3JtYXR0ZWRWYWx1ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2lkXT1cImtleVwiIFtmb3JtQ29udHJvbE5hbWVdPVwia2V5XCIgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZSQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgOTk5KVwiIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dRc0J0blwiIG1hdC1idXR0b24gbWF0UHJlZml4IChjbGljayk9XCJkZWNyZW1lbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwZXAtYnV0dG9uIGljb24tYnV0dG9uIHNtIHdlYWsgcXMtYWN0aW9uXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlOiBkaXNhYmxlZCwgY2F1dGlvbjogaXNDYXV0aW9uICYmIHN0eWxlVHlwZSAhPT0gJ3N0cm9uZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrZWVwLWJhY2tncm91bmQtb24tZm9jdXMnOiBzdHlsZVR5cGUgPT09ICdzdHJvbmcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJudW1iZXJfbWludXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1FzQnRuXCIgbWF0LWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImluY3JlbWVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBlcC1idXR0b24gaWNvbi1idXR0b24gc20gd2VhayBxcy1hY3Rpb25cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7IGRpc2FibGU6IGRpc2FibGVkLCBjYXV0aW9uOiBpc0NhdXRpb24gJiYgc3R5bGVUeXBlICE9PSAnc3Ryb25nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tlZXAtYmFja2dyb3VuZC1vbi1mb2N1cyc6IHN0eWxlVHlwZSA9PT0gJ3N0cm9uZyd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cIm51bWJlcl9wbHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm1lc3NhZ2VzPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy1lcnJvciBib2R5LXhzXCIgKm5nRm9yPVwibGV0IG1zZyBvZiBtZXNzYWdlc1wiPiB7eyBtc2cuS2V5IHwgdHJhbnNsYXRlIH19IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXNnLlZhbHVlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT0gJ3FzRm9yTWF0cml4J1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWFkb25seTsgdGhlbiByZWFkb25seUJsb2NrOyBlbHNlIGVkaXRhYmxlUVNCbG9ja1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlCbG9jaz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbaWRdPVwia2V5XCIgbWF0LWJ1dHRvbiBjbGFzcz1cInBlcC1idXR0b24ge3sgc3R5bGVUeXBlIH19IGRpc2FibGVcIiBkaXNhYmxlZD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2NhdXRpb246IGlzQ2F1dGlvbiwgbWQ6IHJvd1NwYW4gIT09IDEsIHhzOiByb3dTcGFuID09PSAxfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgWFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdGFibGVRU0Jsb2NrPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB4QWxpZ25tZW50PT0ncmlnaHQnXCIgY2xhc3M9XCIgYm9keS1zbSBhZGRpdGlvbmFsLXZhbHVlIHByZWZpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRCYWRnZT1cInt7IGFkZGl0aW9uYWxWYWx1ZSB9fVwiIG1hdEJhZGdlUG9zaXRpb249XCJiZWZvcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0QmFkZ2VTaXplPVwicm93U3BhbiA9PT0gMSA/IHNtYWxsIDogbWVkaXVtXCIgW0BzaG93SGlkZV09XCJnZXRBZGRpdGlvbmFsVmFsdWVcIj48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKG1vdXNlbGVhdmUpPVwiIWlzSW5Gb2N1cyA/IG9uTWF0cml4TW91c2VsZWF2ZSgkZXZlbnQpIDogbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBlcFFzVmFsaWRhdGlvbiBbYWxsb3dEZWNpbWFsXT1cImFsbG93RGVjaW1hbFwiIHR5cGU9XCJkZWNpbWFsTnVtYmVyXCIgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgI1FTSW5wdXQgbmFtZT1cInt7IGtleSB9fVwiIHRpdGxlPVwie3sgZm9ybWF0dGVkVmFsdWUgfX1cIiBjbGFzcz1cImJvZHktc20gZWxsaXBzaXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtpZF09XCJrZXlcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImtleVwiIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWUkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1hdHJpeENsaWNrKCRldmVudCk7ICRldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgOTk5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIiAoYmx1cik9XCJvbk1hdHJpeEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uTWF0cml4TW91c2VFbnRlcigkZXZlbnQpOyBvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uTWF0cml4TW91c2VFbnRlcigkZXZlbnQpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm1lc3NhZ2VzPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy1lcnJvciBib2R5LXhzXCIgKm5nRm9yPVwibGV0IG1zZyBvZiBtZXNzYWdlc1wiPiB7eyBtc2cuS2V5IHwgdHJhbnNsYXRlIH19IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXNnLlZhbHVlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwieEFsaWdubWVudCAhPSAncmlnaHQnXCIgY2xhc3M9XCJib2R5LXNtIGFkZGl0aW9uYWwtdmFsdWUgc3VmZml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEJhZGdlPVwie3sgYWRkaXRpb25hbFZhbHVlIH19XCIgbWF0QmFkZ2VQb3NpdGlvbj1cImJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRCYWRnZVNpemU9XCJyb3dTcGFuID09PSAxID8gc21hbGwgOiBtZWRpdW1cIiBbQHNob3dIaWRlXT1cImdldEFkZGl0aW9uYWxWYWx1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09ICdidXR0b24nXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih2YWx1ZSB8IHBlcFRvTnVtYmVyKSA9PSAwOyB0aGVuIHJlZ3VsYXJCbG9jazsgZWxzZSB3aXRoQmFkZ2VCbG9ja1wiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVndWxhckJsb2NrPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgY2xhc3M9XCJwZXAtYnV0dG9uIHt7IHN0eWxlVHlwZSB9fSBcIiBbaWRdPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ7eyBrZXkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlOiBkaXNhYmxlZCwgY2F1dGlvbjogaXNDYXV0aW9uLCBtZDogcm93U3BhbiAhPT0gMSwgeHM6IHJvd1NwYW4gPT09IDF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUVMuT1JERVInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImVudGVyQ2hpbGRyZW4oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdRUy5PUkRFUicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3dpdGhCYWRnZUJsb2NrPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0QmFkZ2U9XCJ7eyBmb3JtYXR0ZWRWYWx1ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwie3t4QWxpZ25tZW50ID09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcid9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cImxheW91dFR5cGUgPT09ICdjYXJkJyAmJiByb3dTcGFuID09PSAxID8gJ3NtYWxsJyA6ICdtZWRpdW0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzdHlsZVR5cGUgfX0gXCIgW2lkXT1cImtleVwiIG5hbWU9XCJ7eyBrZXkgfX1cIiBbbmdDbGFzc109XCJ7IGRpc2FibGU6IGRpc2FibGVkLCBjYXV0aW9uOiBpc0NhdXRpb24sIG1kOiByb3dTcGFuICE9PSAxLCB4czogcm93U3BhbiA9PT0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQtYWxpZ25tZW50JzogeEFsaWdubWVudCA9PSAncmlnaHQnLCAnbGVmdC1hbGlnbm1lbnQnOiB4QWxpZ25tZW50ICE9ICdyaWdodCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUVMuT1JERVInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImVudGVyQ2hpbGRyZW4oJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdRUy5PUkRFUicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT0gJ3BhY2thZ2VCdXR0b24nXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzdHlsZVR5cGUgfX0gXCIgW2lkXT1cImtleVwiIG5hbWU9XCJ7eyBrZXkgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGU6IGRpc2FibGVkLCBjYXV0aW9uOiBpc0NhdXRpb24sIG1kOiByb3dTcGFuICE9PSAxLCB4czogcm93U3BhbiA9PT0gMX1cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1FTLk9SREVSJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJlbnRlclBhY2thZ2UoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnUVMuT1JERVInIHwgdHJhbnNsYXRlIH19ICYjNDA7e3sgZm9ybWF0dGVkVmFsdWUgfX0mIzQxO1xuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXlvdXRUeXBlID09PSAnZm9ybSdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBlcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGF5b3V0VHlwZSA9PT0gJ2NhcmQnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwZXBUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09ICd0YWJsZSdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBlcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iXX0=
570
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbnRpdHktc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9xdWFudGl0eS1zZWxlY3Rvci9xdWFudGl0eS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3F1YW50aXR5LXNlbGVjdG9yL3F1YW50aXR5LXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBSVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUdULHVCQUF1QixHQUcxQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsT0FBTyxFQUNQLFVBQVUsR0FDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFHSCx1QkFBdUIsRUFFdkIsNEJBQTRCLEVBRzVCLHdCQUF3QixHQUUzQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQXlCLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQWdCLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQTZCL0UsTUFBTSxPQUFPLDRCQUE0QjtJQXFPckMsWUFDWSxFQUFxQixFQUNyQixvQkFBNkMsRUFDN0MsUUFBbUIsRUFDbkIsT0FBbUIsRUFDbkIsU0FBMkIsRUFDM0IsZ0JBQXFDO1FBTHJDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDN0MsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFB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bnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBSZW5kZXJlcjIsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIHRyaWdnZXIsXG4gICAgc3RhdGUsXG4gICAgc3R5bGUsXG4gICAgYW5pbWF0ZSxcbiAgICB0cmFuc2l0aW9uLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0VHlwZSxcbiAgICBQZXBTdHlsZVR5cGUsXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgUGVwSG9yaXpvbnRhbEFsaWdubWVudCxcbiAgICBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5ULFxuICAgIElQZXBGaWVsZENsaWNrRXZlbnQsXG4gICAgUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkVHlwZSxcbiAgICBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGQsXG4gICAgUGVwVXRpbGl0aWVzU2VydmljZSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtcXVhbnRpdHktc2VsZWN0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9xdWFudGl0eS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcXVhbnRpdHktc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnLCAnLi9xdWFudGl0eS1zZWxlY3Rvci5jb21wb25lbnQudGhlbWUuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignc2hvd0hpZGUnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnc2hvdycsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgxKScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnaGlkZScsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgwKScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdzaG93ID0+IGhpZGUnLCBhbmltYXRlKCcyNTBtcyBlYXNlLW91dCcpKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2hpZGUgPT4gc2hvdycsIGFuaW1hdGUoJzI1MG1zIGVhc2UtaW4nKSksXG4gICAgICAgIF0pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBzdGF0aWMgRU5URVJfQ0hJTERSRU4gPSAnW0VudGVyQ2hpbGRyZW5dJztcbiAgICBwdWJsaWMgc3RhdGljIEVOVEVSX1BBQ0tBR0UgPSAnW0VudGVyUGFja2FnZV0nO1xuICAgIHB1YmxpYyBzdGF0aWMgUExVUyA9ICdbK10nO1xuICAgIHB1YmxpYyBzdGF0aWMgTUlOVVMgPSAnWy1dJztcblxuICAgIEBJbnB1dCgpIGtleSA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfdmFsdWUgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRGlmZmVyZW50VmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEaXNwbGF5VmFsdWUoKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgXG4gICAgZ2V0IHZhbHVlQXNDdXJyZW50Q3VsdHVyZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmNoYW5nZURlY2ltYWxTZXBhcmF0b3JXaGVuSXRzQ29tbWEodGhpcy52YWx1ZSwgdHJ1ZSk7XG4gICAgICAgIC8vIGxldCByZXMgPSB0aGlzLnZhbHVlO1xuXG4gICAgICAgIC8vIGlmICh0aGlzLmFsbG93RGVjaW1hbCkge1xuICAgICAgICAvLyAgICAgcmVzID0gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmZvcm1hdERlY2ltYWwodGhpcy52YWx1ZSwgdGhpcy5taW5GcmFjdGlvbkRpZ2l0cywgdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cywgZmFsc2UpO1xuICAgICAgICAvLyB9XG4gICAgICAgIFxuICAgICAgICAvLyByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmb3JtYXR0ZWRWYWx1ZSA9ICcnO1xuICAgIC8vIHByaXZhdGUgX2Zvcm1hdHRlZFZhbHVlID0gJyc7XG4gICAgLy8gQElucHV0KClcbiAgICAvLyBzZXQgZm9ybWF0dGVkVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIC8vICAgICAvLyBpZiAoIXZhbHVlKSB7XG4gICAgLy8gICAgIC8vICAgICB2YWx1ZSA9ICcnO1xuICAgIC8vICAgICAvLyB9XG5cbiAgICAvLyAgICAgLy8gaWYgKHRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlKSB7XG4gICAgLy8gICAgIC8vICAgICB0aGlzLl9jYWxjdWxhdGVGb3JtYXR0ZWRWYWx1ZSA9IGZhbHNlO1xuICAgIC8vICAgICAvLyB9XG5cbiAgICAvLyAgICAgLy8gdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgLy8gfVxuICAgIC8vIGdldCBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkVmFsdWU7XG4gICAgLy8gfVxuICAgIFxuICAgIHByaXZhdGUgX21pbkZyYWN0aW9uRGlnaXRzID0gTmFOO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pbkZyYWN0aW9uRGlnaXRzKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWluRnJhY3Rpb25EaWdpdHMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEaXNwbGF5VmFsdWUoKTtcbiAgICB9XG4gICAgZ2V0IG1pbkZyYWN0aW9uRGlnaXRzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5GcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tYXhGcmFjdGlvbkRpZ2l0cyA9IE5hTjtcbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXhGcmFjdGlvbkRpZ2l0cyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21heEZyYWN0aW9uRGlnaXRzID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0Rm9ybWF0dGVkVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGlzcGxheVZhbHVlKCk7XG4gICAgfVxuICAgIGdldCBtYXhGcmFjdGlvbkRpZ2l0cygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICBASW5wdXQoKSB0eXBlOiBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRUeXBlID0gJ3FzJztcbiAgICBASW5wdXQoKSBtYW5kYXRvcnkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF90ZXh0Q29sb3IgPSAnJztcbiAgICBASW5wdXQoKVxuICAgIHNldCB0ZXh0Q29sb3IodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl90ZXh0Q29sb3IgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pc0NhdXRpb24gPSB2YWx1ZSA9PT0gJyNGRjAwMDAnO1xuICAgIH1cbiAgICBnZXQgdGV4dENvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZXh0Q29sb3I7XG4gICAgfVxuXG4gICAgQElucHV0KCkgeEFsaWdubWVudDogUGVwSG9yaXpvbnRhbEFsaWdubWVudCA9IERFRkFVTFRfSE9SSVpPTlRBTF9BTElHTk1FTlQ7XG4gICAgQElucHV0KCkgcm93U3BhbiA9IDE7XG4gICAgXG4gICAgcHJpdmF0ZSBfYWxsb3dEZWNpbWFsID0gZmFsc2U7XG4gICAgQElucHV0KCkgXG4gICAgc2V0IGFsbG93RGVjaW1hbCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hbGxvd0RlY2ltYWwgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGlzcGxheVZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGFsbG93RGVjaW1hbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93RGVjaW1hbDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBhZGRpdGlvbmFsVmFsdWUgPSAnJztcblxuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvbkluZm86IGFueTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBub3RpZmljYXRpb25JbmZvKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uSW5mbyA9IHZhbHVlO1xuXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gdmFsdWUgJiYgdmFsdWUgPiAwID8gSlNPTi5wYXJzZSh2YWx1ZSkuTWVzc2FnZXMgOiAnJztcbiAgICAgICAgaWYgKG1lc3NhZ2VzICYmIG1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIG1zZyBrZXlzLlxuICAgICAgICAgICAgZm9yIChjb25zdCBtc2cgb2YgbWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobXNnLktleSA9PT0gJ0ludmVudG9yeV9MaW1pdF9Nc2cnKSB7XG4gICAgICAgICAgICAgICAgICAgIG1zZy5LZXkgPSAnTUVTU0FHRVMuRVJST1JfSU5WRU5UT1JZX0xJTUlUJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1zZy5LZXkgPT09ICdDYXNlX1F1YW50aXR5X0xpbWl0X01zZycpIHtcbiAgICAgICAgICAgICAgICAgICAgbXNnLktleSA9ICdNRVNTQUdFUy5FUlJPUl9DQVNFX1FVQU5USVRZX0xJTUlUJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1zZy5LZXkgPT09ICdNaW5fUXVhbnRpdHlfTGltaXRfTXNnJykge1xuICAgICAgICAgICAgICAgICAgICBtc2cuS2V5ID0gJ01FU1NBR0VTLkVSUk9SX01JTl9RVUFOVElUWV9MSU1JVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtc2cuS2V5ID09PSAnTWF4X1F1YW50aXR5X0xpbWl0X01zZycpIHtcbiAgICAgICAgICAgICAgICAgICAgbXNnLktleSA9ICdNRVNTQUdFUy5FUlJPUl9NQVhfUVVBTlRJVFlfTElNSVQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG1lc3NhZ2VzO1xuXG4gICAgICAgICAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5rZXldO1xuICAgICAgICAgICAgZmllbGRDb250cm9sLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgc2VydmVyRXJyb3I6ICdFcnJvcicsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5zYW1lRWxlbWVudEluVGhlV2FudGVkUm93ID0gbnVsbDtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLlFTSW5wdXQgJiYgdGhpcy5RU0lucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5RU0lucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxNTApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBub3RpZmljYXRpb25JbmZvKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25JbmZvO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Zpc2libGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZpc2libGUodmlzaWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbi1lbGVtZW50J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbi1lbGVtZW50J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuXG4gICAgY29udHJvbFR5cGUgPSAncXMnO1xuXG4gICAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwID0gbnVsbDtcbiAgICBASW5wdXQoKSBzaG93VGl0bGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHJlbmRlclRpdGxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBsYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuICAgIEBJbnB1dCgpIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgICAvLyBHZXQgZGVmYXVsdCBzdHlsZSBmcm9tIHRoZW1lLlxuICAgIEBJbnB1dCgpXG4gICAgc3R5bGVUeXBlOiBQZXBTdHlsZVR5cGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1RZTEVfUVNfS0VZXG4gICAgKSBhcyBQZXBTdHlsZVR5cGU7IC8vJ3N0cm9uZyc7XG5cbiAgICBAT3V0cHV0KClcbiAgICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGVsZW1lbnRDbGljazogRXZlbnRFbWl0dGVyPElQZXBGaWVsZENsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnUVNDb250JykgUVNDb250OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ1FTSW5wdXQnKSBRU0lucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlRm9ybWF0dGVkVmFsdWUgPSB0cnVlO1xuICAgIGdldCBjYWxjdWxhdGVGb3JtYXR0ZWRWYWx1ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGN1bGF0ZUZvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3llZDogU3ViamVjdDx2b2lkPjtcbiAgICBwcml2YXRlIHFzV2lkdGhTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcbiAgICBsYXN0UXNDb250Q2xpZW50V2lkdGggPSAwO1xuICAgIHNob3dRc0J0biA9IHRydWU7XG5cbiAgICBzdGFuZEFsb25lID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNJbkZvY3VzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBzZXQgaXNJbkZvY3VzKGlzSW5Gb2N1czogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9pc0luRm9jdXMgPSBpc0luRm9jdXM7XG4gICAgICAgIHRoaXMuY2hhbmdlRGlzcGxheVZhbHVlKCk7XG4gICAgfVxuICAgIGdldCBpc0luRm9jdXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0luRm9jdXM7XG4gICAgfVxuICAgIGlzTWF0cml4Rm9jdXMgPSBmYWxzZTtcblxuICAgIGlzQ2F1dGlvbiA9IGZhbHNlO1xuICAgIG1lc3NhZ2VzOiBBcnJheTxhbnk+ID0gbnVsbDtcblxuICAgIHNhbWVFbGVtZW50SW5UaGVXYW50ZWRSb3cgPSBudWxsO1xuXG4gICAgaXNFbXB0eUtleSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfZGlzcGxheVZhbHVlU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIGdldCBkaXNwbGF5VmFsdWUkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5VmFsdWVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQZXBDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHV0aWxpdGllc1NlcnZpY2U6IFBlcFV0aWxpdGllc1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgLy8gdGhpcy5xc1dpZHRoU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG4gICAgfVxuXG4gICAgc2V0Rm9ybSgpIHtcbiAgICAgICAgY29uc3QgcGVwRmllbGQgPSBuZXcgUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkKHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZUFzQ3VycmVudEN1bHR1cmUsXG4gICAgICAgICAgICBtYW5kYXRvcnk6IHRoaXMubWFuZGF0b3J5LFxuICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMucmVhZG9ubHksXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuZ2V0RGVmYXVsdEZyb21Hcm91cChwZXBGaWVsZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRGb3JtYXR0ZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLl9jYWxjdWxhdGVGb3JtYXR0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IHRoaXMudXRpbGl0aWVzU2VydmljZS5mb3JtYXREZWNpbWFsKHZhbHVlLCB0aGlzLm1pbkZyYWN0aW9uRGlnaXRzLCB0aGlzLm1heEZyYWN0aW9uRGlnaXRzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IHRoaXMudXRpbGl0aWVzU2VydmljZS5mb3JtYXROdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlEaXNwbGF5VmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWVTdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlRGlzcGxheVZhbHVlKCk6IHZvaWQge1xuICAgICAgICBsZXQgcmVzID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dEZWNpbWFsKSB7XG4gICAgICAgICAgICByZXMgPSB0aGlzLmlzSW5Gb2N1cyA/IHRoaXMudmFsdWVBc0N1cnJlbnRDdWx0dXJlIDogdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuaXNJbkZvY3VzID8gdGhpcy52YWx1ZSA6IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5vdGlmeURpc3BsYXlWYWx1ZUNoYW5nZShyZXMpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY2hhbmdlRGlzcGxheVZhbHVlJyArIHJlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVGb3JtRmllbGRWYWx1ZShmaXJzdExvYWQgPSBmYWxzZSkge1xuICAgICAgICAvLyBTZXQgdGhlIGZvcm1hdHRlZCB2YWx1ZSBvbmx5IGZvciB0aGUgZmlyc3QgbG9hZCBjYXVzZSBpdCdzIG5vdCBmb3JtYXR0ZWQgaWYgd2Ugc2V0IHRoZSB2YWx1ZSAoSSBkb24ndCBrbm93IHdoeSlcbiAgICAgICAgLy8gRWxzZSB3ZSBzZXQgdGhlIHZhbHVlIC0gdGhpcyBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoZSB2YWx1ZSBvbmx5IGNhdXNlIHNldHRpbmcgdGhlIGZvcm1hdHRlZCB2YWx1ZSB3aWxsIGNhdXNlIGJ1ZyB3aGVuIHRoZSBudW1iZXIgaXMgd2l0aCB0aG91c2FuZCBzZXBhcmF0b3JcbiAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS51cGRhdGVGb3JtRmllbGRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuZm9ybSxcbiAgICAgICAgICAgIHRoaXMua2V5LFxuICAgICAgICAgICAgZmlyc3RMb2FkID8gdGhpcy5mb3JtYXR0ZWRWYWx1ZSA6IHRoaXMudmFsdWUsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZ2V0IGRpc3BsYXlWYWx1ZSgpOiBzdHJpbmcge1xuICAgIC8vICAgICBjb25zdCByZXMgPSB0aGlzLmlzSW5Gb2N1c1xuICAgIC8vICAgICAgICAgPyB0aGlzLnV0aWxpdGllc1NlcnZpY2UuZm9ybWF0RGVjaW1hbCh0aGlzLnZhbHVlLCB0aGlzLm1pbkZyYWN0aW9uRGlnaXRzLCB0aGlzLm1heEZyYWN0aW9uRGlnaXRzKVxuICAgIC8vICAgICAgICAgOiB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgIC8vICAgICByZXR1cm4gcmVzO1xuICAgIC8vIH1cblxuICAgIHByb3RlY3RlZCBnZXREZXN0cm95ZXIoKSB7XG4gICAgICAgIHJldHVybiB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMua2V5ID09PSAnJykge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFbXB0eUtleSA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3RhbmRBbG9uZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm0oKTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVEFORF9BTE9ORV9GSUVMRF9DTEFTU19OQU1FXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMucmVuZGVyVGl0bGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UuU1RBTkRfQUxPTkVfRklFTERfTk9fU1BBQ0lOR19DTEFTU19OQU1FXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMucXNXaWR0aFN1YmplY3RcbiAgICAgICAgLy8gICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAvLyAgICAgLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLy8gICAgIC5zdWJzY3JpYmUoKHFzV2lkdGg6IG51bWJlcikgPT4ge1xuICAgICAgICAvLyAgICAgICAgIHRoaXMuc2V0dXBRc0J1dHRvbnMocXNXaWR0aCk7XG4gICAgICAgIC8vICAgICB9KTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKHRydWUpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIGlmICh0aGlzLlFTQ29udCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuUVNDb250Lm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICB0aGlzLlFTQ29udC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoID4gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93UXNCdG4gPSB0aGlzLlFTQ29udC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoID4gMTIwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2RbJ2Rlc3Ryb3llZCddKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcy5zZXRRc1ZpZXcoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gQnVnIGZpeCBmb3IgYWRkb25zIHdoZW4gdGhlIGtleSBpcyAnJyBpbiB0aGUgbmdPbkluaXQgZm9yIHNvbWUgcmVzb25cbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eUtleSAmJiB0aGlzLmtleSAhPT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzVG9UaGVTYW1lRWxlbWVudEluVGhlV2FudGVkUm93KCk7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIGdldCBnZXRBZGRpdGlvbmFsVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkaXRpb25hbFZhbHVlLmxlbmd0aCA+IDAgPyAnc2hvdycgOiAnaGlkZSc7XG4gICAgfVxuXG4gICAgZ2V0UGFyZW50QnlDbGFzcyhlbCwgcGFyZW50U2VsZWN0b3IgLyogb3B0aW9uYWwgKi8pOiBhbnkge1xuICAgICAgICAvLyBJZiBubyBwYXJlbnRTZWxlY3RvciBkZWZpbmVkIHdpbGwgYnViYmxlIHVwIGFsbCB0aGUgd2F5IHRvICpkb2N1bWVudCpcbiAgICAgICAgaWYgKHBhcmVudFNlbGVjdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcmVudFNlbGVjdG9yID0gZG9jdW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9IGVsLnBhcmVudE5vZGU7XG5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgcCAmJlxuICAgICAgICAgICAgIXA/LmNsYXNzTGlzdD8uY29udGFpbnMocGFyZW50U2VsZWN0b3IpICYmXG4gICAgICAgICAgICBwYXJlbnRTZWxlY3RvciAhPT0gZG9jdW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBvID0gcDtcbiAgICAgICAgICAgIHAgPSBvPy5wYXJlbnROb2RlIHx8IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcD8uY2xhc3NOYW1lLmluZGV4T2YocGFyZW50U2VsZWN0b3IpID4gLTEgPyBwIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXRTYW1lRWxlbWVudEluVGhlV2FudGVkUm93QnlDbGFzc05hbWUoZXZlbnQ6IGFueSwgaXNOZXh0ID0gdHJ1ZSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gICAgICAgIGxldCBzYW1lRWxlbWVudEluVGhlV2FudGVkUm93QnlDbGFzc05hbWU7XG5cbiAgICAgICAgbGV0IHBhcmVudFNlbGVjdG9yO1xuICAgICAgICBpZiAodGhpcy5sYXlvdXRUeXBlID09PSAndGFibGUnKSB7XG4gICAgICAgICAgICBwYXJlbnRTZWxlY3RvciA9IHRoaXMuZ2V0UGFyZW50QnlDbGFzcyhldmVudFRhcmdldCwgJ3RhYmxlLXJvdycpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubGF5b3V0VHlwZSA9PT0gJ2NhcmQnKSB7XG4gICAgICAgICAgICBwYXJlbnRTZWxlY3RvciA9IHRoaXMuZ2V0UGFyZW50QnlDbGFzcyhldmVudFRhcmdldCwgJ2NhcmQtdmlldycpO1xuICAgICAgICAgICAgaWYgKCFwYXJlbnRTZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgIHBhcmVudFNlbGVjdG9yID0gdGhpcy5nZXRQYXJlbnRCeUNsYXNzKFxuICAgICAgICAgICAgICAgICAgICBldmVudFRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgJ2xpbmUtdmlldydcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50U2VsZWN0b3IubmV4dEVsZW1lbnRTaWJsaW5nID09PSBudWxsICYmXG4gICAgICAgICAgICBwYXJlbnRTZWxlY3Rvci5wcmV2aW91c0VsZW1lbnRTaWJsaW5nID09PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvd0J5Q2xhc3NOYW1lID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc05leHQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50U2VsZWN0b3IubmV4dEVsZW1lbnRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHNhbWVFbGVtZW50SW5UaGVXYW50ZWRSb3dCeUNsYXNzTmFtZSA9IHBhcmVudFNlbGVjdG9yLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICdbbmFtZT0nICsgdGhpcy5rZXkgKyAnXSdcbiAgICAgICAgICAgICAgICAgICAgKVswXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzYW1lRWxlbWVudEluVGhlV2FudGVkUm93QnlDbGFzc05hbWUgPSBwYXJlbnRTZWxlY3Rvci5uZXh0RWxlbWVudFNpYmxpbmcucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICdbbmFtZT0nICsgdGhpcy5rZXkgKyAnXSdcbiAgICAgICAgICAgICAgICAgICAgKVswXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTZWxlY3Rvci5wcmV2aW91c0VsZW1lbnRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzTGlzdCA9IHBhcmVudFNlbGVjdG9yLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICdbbmFtZT0nICsgdGhpcy5rZXkgKyAnXSdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvd0J5Q2xhc3NOYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzTGlzdFtlbGVtZW50c0xpc3QubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvd0J5Q2xhc3NOYW1lID0gcGFyZW50U2VsZWN0b3IucHJldmlvdXNFbGVtZW50U2libGluZy5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1tuYW1lPScgKyB0aGlzLmtleSArICddJ1xuICAgICAgICAgICAgICAgICAgICApWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzYW1lRWxlbWVudEluVGhlV2FudGVkUm93QnlDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgc2V0U2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdyhldmVudDogYW55LCBpc05leHQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIC8vIE5hdmlnYXRlIHRvIHRoZSBRUyBpbiB0aGUgbmV4dCByb3cuXG4gICAgICAgIGlmICh0aGlzLmxheW91dFR5cGUgPT09ICdjYXJkJyB8fCB0aGlzLmxheW91dFR5cGUgPT09ICd0YWJsZScpIHtcbiAgICAgICAgICAgIHRoaXMuc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdyA9IHRoaXMuZ2V0U2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvd0J5Q2xhc3NOYW1lKFxuICAgICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgIGlzTmV4dFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuUVNJbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG5cbiAgICBmb2N1c1RvVGhlU2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdykge1xuICAgICAgICAgICAgY29uc3QgZWxlbSA9IHRoaXMuc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdztcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgcmVndWxhciBpdGVtIChxcyBhbmQgbm90IGJ1dHRvbikgLlxuICAgICAgICAgICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmIGVsZW0udHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgZWxlbS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGVsZW0uc2VsZWN0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEVsZW0gPSBlbGVtLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgcGFyZW50RWxlbS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGVsZW0uZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2FtZUVsZW1lbnRJblRoZVdhbnRlZFJvdyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhbkVycm9yKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5rZXldO1xuXG4gICAgICAgIC8vIENsZWFuIHRoZSBlcnJvciBtZXNzYWdlXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VzICYmIHRoaXMubWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubm90aWZpY2F0aW9uSW5mbyA9IG51bGw7XG4gICAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25NYXRyaXhNb3VzZUVudGVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc01hdHJpeEZvY3VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbk1hdHJpeE1vdXNlbGVhdmUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTWF0cml4Rm9jdXMgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbk1hdHJpeENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRm9jdXMgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLlFTSW5wdXQgJiYgdGhpcy5RU0lucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuUVNJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1hdHJpeEJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhZXZlbnQucmVsYXRlZFRhcmdldCB8fFxuICAgICAgICAgICAgZXZlbnQucmVsYXRlZFRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigncXMnKSA8IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmlzTWF0cml4Rm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25CbHVyKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRm9jdXMgPSB0cnVlO1xuXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyAgICAgaWYgKHRoaXMuaXNJbkZvY3VzKSB7XG4gICAgICAgIC8vICAgICAgICAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgICAgLy8gICAgICAgICBpZiAoZXZlbnRUYXJnZXQpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgZXZlbnRUYXJnZXQuc2VsZWN0KCk7XG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9LCAwKTtcbiAgICB9XG5cbiAgICBpc0RpZmZlcmVudFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmlzRXF1YWxOdW1iZXIodGhpcy52YWx1ZUFzQ3VycmVudEN1bHR1cmUsIHZhbHVlKSA9PT0gZmFsc2U7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jbGVhbkVycm9yKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0ID8gZXZlbnQudGFyZ2V0LnZhbHVlIDogZXZlbnQ7XG5cbiAgICAgICAgLy8gRm9yIGRlY2ltYWwgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBkZWNpbWFsIHNlcGFyYXRvciBiYWNrIGlmIGl0J3MgY29tbWEgKCcsJykuXG4gICAgICAgIGNvbnN0IGNvcnJlY3RWYWx1ZSA9IHRoaXMuYWxsb3dEZWNpbWFsID8gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLmNoYW5nZURlY2ltYWxTZXBhcmF0b3JXaGVuSXRzQ29tbWEodmFsdWUpIDogdmFsdWU7XG4gICAgICAgIFxuICAgICAgICBpZiAoY29ycmVjdFZhbHVlICE9PSB0aGlzLnZhbHVlQXNDdXJyZW50Q3VsdHVyZSAmJiB0aGlzLmlzRGlmZmVyZW50VmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gY29ycmVjdFZhbHVlO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLmZvY3VzVG9UaGVTYW1lRWxlbWVudEluVGhlV2FudGVkUm93KCk7XG4gICAgfVxuXG4gICAgb25LZXlkb3duKGV2ZW50KTogYW55IHtcbiAgICAgICAgY29uc3Qga2V5Ym9hcmRFdmVudCA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG5cbiAgICAgICAgaWYgKGtleWJvYXJkRXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLnNldFNhbWVFbGVtZW50SW5UaGVXYW50ZWRSb3coXG4gICAgICAgICAgICAgICAga2V5Ym9hcmRFdmVudCxcbiAgICAgICAgICAgICAgICAha2V5Ym9hcmRFdmVudC5zaGlmdEtleVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5jcmVtZW50KGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0YW5kQWxvbmUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnV0aWxpdGllc1NlcnZpY2UuaW5jcmVtZW50TnVtYmVyKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbGVtZW50Q2xpY2suZW1pdCh7XG4gICAgICAgICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgICAgICAgdmFsdWU6IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQuUExVUyxcbiAgICAgICAgICAgIGNvbnRyb2xUeXBlOiB0aGlzLmNvbnRyb2xUeXBlLFxuICAgICAgICAgICAgZXZlbnRXaGljaDogZXZlbnQud2hpY2gsXG4gICAgICAgIH0pO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBkZWNyZW1lbnQoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhbmRBbG9uZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudXRpbGl0aWVzU2VydmljZS5kZWNyZW1lbnROdW1iZXIodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVsZW1lbnRDbGljay5lbWl0KHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICB2YWx1ZTogUGVwUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudC5NSU5VUyxcbiAgICAgICAgICAgIGNvbnRyb2xUeXBlOiB0aGlzLmNvbnRyb2xUeXBlLFxuICAgICAgICAgICAgZXZlbnRXaGljaDogZXZlbnQud2hpY2gsXG4gICAgICAgIH0pO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBlbnRlckNoaWxkcmVuKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudENsaWNrLmVtaXQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiBQZXBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50LkVOVEVSX0NISUxEUkVOLFxuICAgICAgICAgICAgY29udHJvbFR5cGU6IHRoaXMuY29udHJvbFR5cGUsXG4gICAgICAgICAgICBldmVudFdoaWNoOiBldmVudC53aGljaCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZW50ZXJQYWNrYWdlKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudENsaWNrLmVtaXQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiBQZXBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50LkVOVEVSX1BBQ0tBR0UsXG4gICAgICAgICAgICBjb250cm9sVHlwZTogdGhpcy5jb250cm9sVHlwZSxcbiAgICAgICAgICAgIGV2ZW50V2hpY2g6IGV2ZW50LndoaWNoLFxuICAgICAgICAgICAgb3RoZXJEYXRhOiB0aGlzLm5vdGlmaWNhdGlvbkluZm8sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHNldHVwUXNCdXR0b25zKHFzV2lkdGg6IG51bWJlcikge1xuICAgIC8vICAgICB0aGlzLnNob3dRc0J0biA9IHFzV2lkdGggPiAxMjA7XG5cbiAgICAvLyAgICAgaWYgKCF0aGlzLmNkWydkZXN0cm95ZWQnXSkge1xuICAgIC8vICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgLy8gICAgIH1cbiAgICAvLyB9XG5cbiAgICAvLyBzZXRRc1ZpZXcoKTogdm9pZCB7XG4gICAgLy8gICAgIGlmIChcbiAgICAvLyAgICAgICAgIHRoaXMuUVNDb250ICYmXG4gICAgLy8gICAgICAgICB0aGlzLlFTQ29udC5uYXRpdmVFbGVtZW50ICYmXG4gICAgLy8gICAgICAgICB0aGlzLlFTQ29udC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoID4gMFxuICAgIC8vICAgICApIHtcbiAgICAvLyAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIC8vICAgICAgICAgICAgIHRoaXMucXNXaWR0aFN1YmplY3QubmV4dCh0aGlzLlFTQ29udC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgICAvLyAgICAgICAgIH0sIDApO1xuICAgIC8vICAgICB9XG4gICAgLy8gfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8bmctdGVtcGxhdGUgI3BlcFRlbXBsYXRlPlxuICAgICAgICA8ZGl2ICNRU0NvbnQgY2xhc3M9XCJwZXAtcXVhbnRpdHktc2VsZWN0b3ItY29udGFpbmVyIHt7IHN0eWxlVHlwZSB9fVwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnaGlkZS1xcy1hY3Rpb25zJyA6IGxheW91dFR5cGUgPT09ICdjYXJkJyAmJiByb3dTcGFuIDw9IDEsXG4gICAgICAgICAgICAgICAgJ3BlcC10YWJsZS1xdWFudGl0eS1zZWxlY3Rvcic6IGxheW91dFR5cGUgPT09ICd0YWJsZScsXG4gICAgICAgICAgICAgICAgJ29uZS1yb3cnOiByb3dTcGFuID09PSAxLFxuICAgICAgICAgICAgICAgIGNhdXRpb246IGlzQ2F1dGlvbixcbiAgICAgICAgICAgICAgICAnbWF0cml4LXFzJzogdHlwZSA9PT0gJ3FzRm9yTWF0cml4JyxcbiAgICAgICAgICAgICAgICAnemVyby1xdWFudGl0eSc6IGZvcm1hdHRlZFZhbHVlID09PSAnMCdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgIDxwZXAtZmllbGQtdGl0bGUgKm5nSWY9XCJyZW5kZXJUaXRsZSAmJiBsYXlvdXRUeXBlICE9PSAndGFibGUnICYmIGxheW91dFR5cGUgIT09ICdjYXJkJ1wiIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgW21hbmRhdG9yeV09XCJtYW5kYXRvcnlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbc2hvd1RpdGxlXT1cInNob3dUaXRsZVwiIFt4QWxpZ25tZW50XT1cInhBbGlnbm1lbnRcIj5cbiAgICAgICAgICAgIDwvcGVwLWZpZWxkLXRpdGxlPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PSAncXMnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlYWRvbmx5OyB0aGVuIHJlYWRvbmx5QmxvY2s7IGVsc2UgZWRpdGFibGVRU0Jsb2NrXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seUJsb2NrPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtpZF09XCJrZXlcIiBtYXQtYnV0dG9uIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzdHlsZVR5cGUgfX0gZGlzYWJsZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2NhdXRpb246IGlzQ2F1dGlvbiwgbWQ6IHJvd1NwYW4gIT09IDEsIHhzOiByb3dTcGFuID09PSAxfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGZvcm1hdHRlZFZhbHVlIH19XCIgZGlzYWJsZWQ9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0dGVkVmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2VkaXRhYmxlUVNCbG9jaz5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcGVwUXNWYWxpZGF0aW9uIFthbGxvd0RlY2ltYWxdPVwiYWxsb3dEZWNpbWFsXCIgdHlwZT1cImRlY2ltYWxOdW1iZXJcIiBpbnB1dG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCAjUVNJbnB1dCBuYW1lPVwie3sga2V5IH19XCIgY2xhc3M9XCJib2R5LWxnIGVsbGlwc2lzXCIgdGl0bGU9XCJ7eyBmb3JtYXR0ZWRWYWx1ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2lkXT1cImtleVwiIFtmb3JtQ29udHJvbE5hbWVdPVwia2V5XCIgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZSQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgOTk5KVwiIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dRc0J0blwiIG1hdC1idXR0b24gbWF0UHJlZml4IChjbGljayk9XCJkZWNyZW1lbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwZXAtYnV0dG9uIGljb24tYnV0dG9uIHNtIHdlYWsgcXMtYWN0aW9uXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlOiBkaXNhYmxlZCwgY2F1dGlvbjogaXNDYXV0aW9uICYmIHN0eWxlVHlwZSAhPT0gJ3N0cm9uZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrZWVwLWJhY2tncm91bmQtb24tZm9jdXMnOiBzdHlsZVR5cGUgPT09ICdzdHJvbmcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJudW1iZXJfbWludXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1FzQnRuXCIgbWF0LWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImluY3JlbWVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBlcC1idXR0b24gaWNvbi1idXR0b24gc20gd2VhayBxcy1hY3Rpb25cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7IGRpc2FibGU6IGRpc2FibGVkLCBjYXV0aW9uOiBpc0NhdXRpb24gJiYgc3R5bGVUeXBlICE9PSAnc3Ryb25nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tlZXAtYmFja2dyb3VuZC1vbi1mb2N1cyc6IHN0eWxlVHlwZSA9PT0gJ3N0cm9uZyd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cIm51bWJlcl9wbHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm1lc3NhZ2VzPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy1lcnJvciBib2R5LXhzXCIgKm5nRm9yPVwibGV0IG1zZyBvZiBtZXNzYWdlc1wiPiB7eyBtc2cuS2V5IHwgdHJhbnNsYXRlIH19IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXNnLlZhbHVlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT0gJ3FzRm9yTWF0cml4J1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWFkb25seTsgdGhlbiByZWFkb25seUJsb2NrOyBlbHNlIGVkaXRhYmxlUVNCbG9ja1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlCbG9jaz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbaWRdPVwia2V5XCIgbWF0LWJ1dHRvbiBjbGFzcz1cInBlcC1idXR0b24ge3sgc3R5bGVUeXBlIH19IGRpc2FibGVcIiBkaXNhYmxlZD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2NhdXRpb246IGlzQ2F1dGlvbiwgbWQ6IHJvd1NwYW4gIT09IDEsIHhzOiByb3dTcGFuID09PSAxfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgWFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdGFibGVRU0Jsb2NrPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiB4QWxpZ25tZW50PT0ncmlnaHQnXCIgY2xhc3M9XCIgYm9keS1zbSBhZGRpdGlvbmFsLXZhbHVlIHByZWZpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRCYWRnZT1cInt7IGFkZGl0aW9uYWxWYWx1ZSB9fVwiIG1hdEJhZGdlUG9zaXRpb249XCJiZWZvcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0QmFkZ2VTaXplPVwicm93U3BhbiA9PT0gMSA/IHNtYWxsIDogbWVkaXVtXCIgW0BzaG93SGlkZV09XCJnZXRBZGRpdGlvbmFsVmFsdWVcIj48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKG1vdXNlbGVhdmUpPVwiIWlzSW5Gb2N1cyA/IG9uTWF0cml4TW91c2VsZWF2ZSgkZXZlbnQpIDogbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBlcFFzVmFsaWRhdGlvbiBbYWxsb3dEZWNpbWFsXT1cImFsbG93RGVjaW1hbFwiIHR5cGU9XCJkZWNpbWFsTnVtYmVyXCIgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgI1FTSW5wdXQgbmFtZT1cInt7IGtleSB9fVwiIHRpdGxlPVwie3sgZm9ybWF0dGVkVmFsdWUgfX1cIiBjbGFzcz1cImJvZHktc20gZWxsaXBzaXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtpZF09XCJrZXlcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImtleVwiIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWUkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1hdHJpeENsaWNrKCRldmVudCk7ICRldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgOTk5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIiAoYmx1cik9XCJvbk1hdHJpeEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uTWF0cml4TW91c2VFbnRlcigkZXZlbnQpOyBvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uTWF0cml4TW91c2VFbnRlcigkZXZlbnQpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm1lc3NhZ2VzPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy1lcnJvciBib2R5LXhzXCIgKm5nRm9yPVwibGV0IG1zZyBvZiBtZXNzYWdlc1wiPiB7eyBtc2cuS2V5IHwgdHJhbnNsYXRlIH19IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXNnLlZhbHVlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwieEFsaWdubWVudCAhPSAncmlnaHQnXCIgY2xhc3M9XCJib2R5LXNtIGFkZGl0aW9uYWwtdmFsdWUgc3VmZml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdEJhZGdlPVwie3sgYWRkaXRpb25hbFZhbHVlIH19XCIgbWF0QmFkZ2VQb3NpdGlvbj1cImJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRCYWRnZVNpemU9XCJyb3dTcGFuID09PSAxID8gc21hbGwgOiBtZWRpdW1cIiBbQHNob3dIaWRlXT1cImdldEFkZGl0aW9uYWxWYWx1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09ICdidXR0b24nXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih2YWx1ZSB8IHBlcFRvTnVtYmVyKSA9PSAwOyB0aGVuIHJlZ3VsYXJCbG9jazsgZWxzZSB3aXRoQmFkZ2VCbG9ja1wiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVndWxhckJsb2NrPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgY2xhc3M9XCJwZXAtYnV0dG9uIHt7IHN0eWxlVHlwZSB9fSBcIiBbaWRdPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ7eyBrZXkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlOiBkaXNhYmxlZCwgY2F1dGlvbjogaXNDYXV0aW9uLCBtZDogcm93U3BhbiAhPT0gMSwgeHM6IHJvd1NwYW4gPT09IDF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUVMuT1JERVInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImVudGVyQ2hpbGRyZW4oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdRUy5PUkRFUicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3dpdGhCYWRnZUJsb2NrPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0QmFkZ2U9XCJ7eyBmb3JtYXR0ZWRWYWx1ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwie3t4QWxpZ25tZW50ID09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcid9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cImxheW91dFR5cGUgPT09ICdjYXJkJyAmJiByb3dTcGFuID09PSAxID8gJ3NtYWxsJyA6ICdtZWRpdW0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzdHlsZVR5cGUgfX0gXCIgW2lkXT1cImtleVwiIG5hbWU9XCJ7eyBrZXkgfX1cIiBbbmdDbGFzc109XCJ7IGRpc2FibGU6IGRpc2FibGVkLCBjYXV0aW9uOiBpc0NhdXRpb24sIG1kOiByb3dTcGFuICE9PSAxLCB4czogcm93U3BhbiA9PT0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQtYWxpZ25tZW50JzogeEFsaWdubWVudCA9PSAncmlnaHQnLCAnbGVmdC1hbGlnbm1lbnQnOiB4QWxpZ25tZW50ICE9ICdyaWdodCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUVMuT1JERVInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImVudGVyQ2hpbGRyZW4oJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdRUy5PUkRFUicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT0gJ3BhY2thZ2VCdXR0b24nXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzdHlsZVR5cGUgfX0gXCIgW2lkXT1cImtleVwiIG5hbWU9XCJ7eyBrZXkgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGU6IGRpc2FibGVkLCBjYXV0aW9uOiBpc0NhdXRpb24sIG1kOiByb3dTcGFuICE9PSAxLCB4czogcm93U3BhbiA9PT0gMX1cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1FTLk9SREVSJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJlbnRlclBhY2thZ2UoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnUVMuT1JERVInIHwgdHJhbnNsYXRlIH19ICYjNDA7e3sgZm9ybWF0dGVkVmFsdWUgfX0mIzQxO1xuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXlvdXRUeXBlID09PSAnZm9ybSdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBlcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGF5b3V0VHlwZSA9PT0gJ2NhcmQnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwZXBUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09ICd0YWJsZSdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBlcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iXX0=